refactored color configurations and refactored classes
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
4c38676f59
commit
b253bf3e03
@ -57,7 +57,7 @@
|
|||||||
EAF7F0B3289B1ADC00B287F5 /* LabelAttributeAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0B2289B1ADC00B287F5 /* LabelAttributeAction.swift */; };
|
EAF7F0B3289B1ADC00B287F5 /* LabelAttributeAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0B2289B1ADC00B287F5 /* LabelAttributeAction.swift */; };
|
||||||
EAF7F0B5289C126F00B287F5 /* UILabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0B4289C126F00B287F5 /* UILabel.swift */; };
|
EAF7F0B5289C126F00B287F5 /* UILabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0B4289C126F00B287F5 /* UILabel.swift */; };
|
||||||
EAF7F0B7289C12A600B287F5 /* UITapGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0B6289C12A600B287F5 /* UITapGestureRecognizer.swift */; };
|
EAF7F0B7289C12A600B287F5 /* UITapGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0B6289C12A600B287F5 /* UITapGestureRecognizer.swift */; };
|
||||||
EAF7F0B9289C139800B287F5 /* ModelColorHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0B8289C139800B287F5 /* ModelColorHelpers.swift */; };
|
EAF7F0B9289C139800B287F5 /* ColorConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0B8289C139800B287F5 /* ColorConfiguration.swift */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXContainerItemProxy section */
|
/* Begin PBXContainerItemProxy section */
|
||||||
@ -122,7 +122,7 @@
|
|||||||
EAF7F0B2289B1ADC00B287F5 /* LabelAttributeAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelAttributeAction.swift; sourceTree = "<group>"; };
|
EAF7F0B2289B1ADC00B287F5 /* LabelAttributeAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelAttributeAction.swift; sourceTree = "<group>"; };
|
||||||
EAF7F0B4289C126F00B287F5 /* UILabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UILabel.swift; sourceTree = "<group>"; };
|
EAF7F0B4289C126F00B287F5 /* UILabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UILabel.swift; sourceTree = "<group>"; };
|
||||||
EAF7F0B6289C12A600B287F5 /* UITapGestureRecognizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITapGestureRecognizer.swift; sourceTree = "<group>"; };
|
EAF7F0B6289C12A600B287F5 /* UITapGestureRecognizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITapGestureRecognizer.swift; sourceTree = "<group>"; };
|
||||||
EAF7F0B8289C139800B287F5 /* ModelColorHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModelColorHelpers.swift; sourceTree = "<group>"; };
|
EAF7F0B8289C139800B287F5 /* ColorConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorConfiguration.swift; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@ -256,9 +256,9 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
EA3C3B4B2894823E000CA526 /* AnyProxy-PropertyWrapper.swift */,
|
EA3C3B4B2894823E000CA526 /* AnyProxy-PropertyWrapper.swift */,
|
||||||
|
EAF7F0B8289C139800B287F5 /* ColorConfiguration.swift */,
|
||||||
EAF7F09D289AAEC000B287F5 /* Constants.swift */,
|
EAF7F09D289AAEC000B287F5 /* Constants.swift */,
|
||||||
EA3361B5288B2A410071C351 /* Control.swift */,
|
EA3361B5288B2A410071C351 /* Control.swift */,
|
||||||
EAF7F0B8289C139800B287F5 /* ModelColorHelpers.swift */,
|
|
||||||
EAF7F09F289AB7EC00B287F5 /* View.swift */,
|
EAF7F09F289AB7EC00B287F5 /* View.swift */,
|
||||||
);
|
);
|
||||||
path = Classes;
|
path = Classes;
|
||||||
@ -464,7 +464,7 @@
|
|||||||
EA33624728931B050071C351 /* Initable.swift in Sources */,
|
EA33624728931B050071C351 /* Initable.swift in Sources */,
|
||||||
EAF7F0A4289B017C00B287F5 /* LabelAttributeModel.swift in Sources */,
|
EAF7F0A4289B017C00B287F5 /* LabelAttributeModel.swift in Sources */,
|
||||||
EAF7F0B1289B177F00B287F5 /* LabelAttributeColor.swift in Sources */,
|
EAF7F0B1289B177F00B287F5 /* LabelAttributeColor.swift in Sources */,
|
||||||
EAF7F0B9289C139800B287F5 /* ModelColorHelpers.swift in Sources */,
|
EAF7F0B9289C139800B287F5 /* ColorConfiguration.swift in Sources */,
|
||||||
EA3361BD288B2C760071C351 /* TypeAlias.swift in Sources */,
|
EA3361BD288B2C760071C351 /* TypeAlias.swift in Sources */,
|
||||||
EAF7F09A2899B17200B287F5 /* CATransaction.swift in Sources */,
|
EAF7F09A2899B17200B287F5 /* CATransaction.swift in Sources */,
|
||||||
EAF7F0A2289AFB3900B287F5 /* Errorable.swift in Sources */,
|
EAF7F0A2289AFB3900B287F5 /* Errorable.swift in Sources */,
|
||||||
|
|||||||
131
VDS/Classes/ColorConfiguration.swift
Normal file
131
VDS/Classes/ColorConfiguration.swift
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
//
|
||||||
|
// ModelColorConfiguration.swift
|
||||||
|
// VDS
|
||||||
|
//
|
||||||
|
// Created by Matt Bruce on 8/4/22.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
public protocol Colorable {
|
||||||
|
associatedtype ModelType
|
||||||
|
func getColor(_ viewModel: ModelType) -> UIColor
|
||||||
|
}
|
||||||
|
|
||||||
|
public protocol BinaryColorable{
|
||||||
|
var userTrueColor: Bool { get }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Meant to be used in a Object that implements the following interfaces for 2 possible color combinations
|
||||||
|
/// - Surfaceable (var surface: Surface)
|
||||||
|
///
|
||||||
|
/// let model = TestModel()
|
||||||
|
/// model.surface = .light
|
||||||
|
///
|
||||||
|
/// let config = SurfaceColorConfiguration<TestModel>()
|
||||||
|
///
|
||||||
|
/// config.lightColor = .black
|
||||||
|
/// config.darkColor = .white
|
||||||
|
///
|
||||||
|
/// let textColor = config.getColor(model) //returns .black
|
||||||
|
open class SurfaceColorConfiguration<ModelType:Surfaceable>: Colorable {
|
||||||
|
public var lightColor: UIColor = .clear
|
||||||
|
public var darkColor: UIColor = .clear
|
||||||
|
|
||||||
|
public func getColor(_ viewModel: ModelType) -> UIColor {
|
||||||
|
return viewModel.surface == .light ? lightColor : darkColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Meant to be used in a Object that implements the following interfaces for 4 possible color combinations
|
||||||
|
/// - Disabling (var disabled: Bool)
|
||||||
|
/// - Surfaceable (var surface: Surface)
|
||||||
|
///
|
||||||
|
/// let model = TestModel()
|
||||||
|
/// model.surface = .dark
|
||||||
|
/// model.disabled = false
|
||||||
|
///
|
||||||
|
/// let config = DisabledSurfaceColorConfiguration<TestModel>()
|
||||||
|
///
|
||||||
|
/// //disabled == false
|
||||||
|
/// config.enabled.lightColor = .black
|
||||||
|
/// config.enabled.darkColor = .white
|
||||||
|
///
|
||||||
|
/// //disabled == true
|
||||||
|
/// config.disabled.lightColor = .gray
|
||||||
|
/// config.disabled.darkColor = .lightGray
|
||||||
|
///
|
||||||
|
/// let textColor = config.getColor(model) //returns .white
|
||||||
|
///
|
||||||
|
///
|
||||||
|
open class DisabledSurfaceColorConfiguration<ModelType:Disabling & Surfaceable>: Colorable {
|
||||||
|
public var disabled = SurfaceColorConfiguration<ModelType>()
|
||||||
|
public var enabled = SurfaceColorConfiguration<ModelType>()
|
||||||
|
|
||||||
|
public func getColor(_ viewModel: ModelType) -> UIColor {
|
||||||
|
return viewModel.disabled ? disabled.getColor(viewModel) : enabled.getColor(viewModel)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Meant to be used in a Object that implements the following interfaces for 4 possible color combinations
|
||||||
|
/// - BinaryColorable (var userTrueColor: Bool)
|
||||||
|
/// - Surfaceable (var surface: Surface)
|
||||||
|
///
|
||||||
|
/// let model = TestModel()
|
||||||
|
/// model.surface = .dark
|
||||||
|
/// model.on = true //this is read in the extension var userTrueColor
|
||||||
|
/// let config = BinarySurfaceColorConfiguration<TestModel>()
|
||||||
|
///
|
||||||
|
/// //True from BinaryColorable.userTrueColor
|
||||||
|
/// config.isTrue.lightColor = .black
|
||||||
|
/// config.isTrue.darkColor = .white
|
||||||
|
///
|
||||||
|
/// //False from BinaryColorable.userTrueColor
|
||||||
|
/// config.isFalse.lightColor = .red
|
||||||
|
/// config.isFalse.darkColor = .red
|
||||||
|
///
|
||||||
|
/// let textColor = config.getColor(model) //returns .white
|
||||||
|
///
|
||||||
|
///
|
||||||
|
open class BinarySurfaceColorConfiguration<ModelType:Surfaceable & BinaryColorable>: Colorable{
|
||||||
|
public var isTrue = SurfaceColorConfiguration<ModelType>()
|
||||||
|
public var isFalse = SurfaceColorConfiguration<ModelType>()
|
||||||
|
|
||||||
|
public func getColor(_ viewModel: ModelType) -> UIColor {
|
||||||
|
return viewModel.userTrueColor ? isTrue.getColor(viewModel) : isFalse.getColor(viewModel)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Meant to be used in a Object that implements the following interfaces for 8 possible color combinations
|
||||||
|
/// - BinaryColorable (var userTrueColor: Bool)
|
||||||
|
/// - Disabling (var disabled: Bool)
|
||||||
|
/// - Surfaceable (var surface: Surface)
|
||||||
|
///
|
||||||
|
/// let model = TestModel()
|
||||||
|
/// model.
|
||||||
|
/// let config = BinaryDisabledSurfaceColorConfiguration<TestModel>()
|
||||||
|
///
|
||||||
|
/// //True
|
||||||
|
/// config.isTrue.enabled.lightColor = .black
|
||||||
|
/// config.isTrue.enabled.darkColor = .white
|
||||||
|
/// config.isTrue.disabled.lightColor = .darkGray
|
||||||
|
/// config.isTrue.disabled.darkColor = .lightGray
|
||||||
|
///
|
||||||
|
/// //False
|
||||||
|
/// config.isFalse.enabled.lightColor = .red
|
||||||
|
/// config.isFalse.enabled.darkColor = .red
|
||||||
|
/// config.isFalse.disabled.lightColor =.darkGray
|
||||||
|
/// config.isFalse.disabled.darkColor = .lightGray
|
||||||
|
///
|
||||||
|
/// let textColor = config.getColor(model)
|
||||||
|
///
|
||||||
|
///
|
||||||
|
open class BinaryDisabledSurfaceColorConfiguration<ModelType:Disabling & Surfaceable & BinaryColorable>: Colorable {
|
||||||
|
public var isTrue = DisabledSurfaceColorConfiguration<ModelType>()
|
||||||
|
public var isFalse = DisabledSurfaceColorConfiguration<ModelType>()
|
||||||
|
|
||||||
|
public func getColor(_ viewModel: ModelType) -> UIColor {
|
||||||
|
return viewModel.userTrueColor ? isTrue.getColor(viewModel) : isFalse.getColor(viewModel)
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,68 +0,0 @@
|
|||||||
//
|
|
||||||
// ModelColorHelper.swift
|
|
||||||
// VDS
|
|
||||||
//
|
|
||||||
// Created by Matt Bruce on 8/4/22.
|
|
||||||
//
|
|
||||||
|
|
||||||
import Foundation
|
|
||||||
import UIKit
|
|
||||||
|
|
||||||
public protocol Colorable {
|
|
||||||
associatedtype ModelType
|
|
||||||
func getColor(_ viewModel: ModelType) -> UIColor
|
|
||||||
}
|
|
||||||
|
|
||||||
open class ModelSurfaceColorHelper<ModelType:Surfaceable>: Colorable {
|
|
||||||
public var lightColor: UIColor = .clear
|
|
||||||
public var darkColor: UIColor = .clear
|
|
||||||
|
|
||||||
public func getColor(_ viewModel: ModelType) -> UIColor {
|
|
||||||
return viewModel.surface == .light ? lightColor : darkColor
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
open class ModelSingleColorHelper<ModelType:Disabling & Surfaceable>: Colorable {
|
|
||||||
public var disabled = ModelSurfaceColorHelper<ModelType>()
|
|
||||||
public var enabled = ModelSurfaceColorHelper<ModelType>()
|
|
||||||
|
|
||||||
public func getColor(_ viewModel: ModelType) -> UIColor {
|
|
||||||
return viewModel.disabled ? disabled.getColor(viewModel) : enabled.getColor(viewModel)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public protocol BinaryColorable{
|
|
||||||
var userTrueColor: Bool { get }
|
|
||||||
}
|
|
||||||
|
|
||||||
open class BinaryColorHelper<ModelType:BinaryColorable> {
|
|
||||||
public var trueColor: UIColor = .clear
|
|
||||||
public var falseColor: UIColor = .clear
|
|
||||||
|
|
||||||
public func getColor(_ viewModel: ModelType) -> UIColor {
|
|
||||||
return viewModel.userTrueColor ? trueColor : falseColor
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
open class BinarySurfaceColorHelper<ModelType:Surfaceable & BinaryColorable>: Colorable{
|
|
||||||
public var light = BinaryColorHelper<ModelType>()
|
|
||||||
public var dark = BinaryColorHelper<ModelType>()
|
|
||||||
|
|
||||||
public func getColor(_ viewModel: ModelType) -> UIColor {
|
|
||||||
if viewModel.surface == .light {
|
|
||||||
return light.getColor(viewModel)
|
|
||||||
} else {
|
|
||||||
return dark.getColor(viewModel)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
open class BinaryModelColorHelper<ModelType:Disabling & Surfaceable & BinaryColorable>: Colorable {
|
|
||||||
public var disabled = BinarySurfaceColorHelper<ModelType>()
|
|
||||||
public var enabled = BinarySurfaceColorHelper<ModelType>()
|
|
||||||
|
|
||||||
public func getColor(_ viewModel: ModelType) -> UIColor {
|
|
||||||
return viewModel.disabled ? disabled.getColor(viewModel) : enabled.getColor(viewModel)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -271,48 +271,48 @@ open class CheckboxBase<ModelType: CheckboxModel>: Control<ModelType>, Changable
|
|||||||
/// Manages the appearance of the checkbox.
|
/// Manages the appearance of the checkbox.
|
||||||
private var shapeLayer: CAShapeLayer?
|
private var shapeLayer: CAShapeLayer?
|
||||||
|
|
||||||
private var checkboxBackgroundColor: CheckboxErrorColorHelper = {
|
private var checkboxBackgroundColorConfiguration: CheckboxErrorColorConfiguration = {
|
||||||
let helper = CheckboxErrorColorHelper()
|
let config = CheckboxErrorColorConfiguration()
|
||||||
helper.disabled.light.trueColor = VDSColor.interactiveDisabledOnlight
|
config.isTrue.enabled.lightColor = VDSColor.elementsPrimaryOnlight
|
||||||
helper.disabled.dark.trueColor = VDSColor.interactiveDisabledOndark
|
config.isTrue.enabled.darkColor = VDSColor.elementsPrimaryOndark
|
||||||
helper.error.light.trueColor = VDSColor.elementsPrimaryOnlight
|
config.isTrue.disabled.lightColor = VDSColor.interactiveDisabledOnlight
|
||||||
helper.error.light.falseColor = VDSColor.feedbackErrorBackgroundOnlight
|
config.isTrue.disabled.darkColor = VDSColor.interactiveDisabledOndark
|
||||||
helper.error.dark.trueColor = VDSColor.elementsPrimaryOndark
|
config.error.isTrue.enabled.lightColor = VDSColor.elementsPrimaryOnlight
|
||||||
helper.error.dark.falseColor = VDSColor.feedbackErrorBackgroundOndark
|
config.error.isTrue.enabled.darkColor = VDSColor.elementsPrimaryOndark
|
||||||
helper.enabled.light.trueColor = VDSColor.elementsPrimaryOnlight
|
config.error.isFalse.enabled.lightColor = VDSColor.feedbackErrorBackgroundOnlight
|
||||||
helper.enabled.dark.trueColor = VDSColor.elementsPrimaryOndark
|
config.error.isFalse.enabled.darkColor = VDSColor.feedbackErrorBackgroundOndark
|
||||||
return helper
|
return config
|
||||||
}()
|
}()
|
||||||
|
|
||||||
private var checkboxBorderColor: CheckboxErrorColorHelper = {
|
private var checkboxBorderColorConfiguration: CheckboxErrorColorConfiguration = {
|
||||||
let helper = CheckboxErrorColorHelper()
|
let config = CheckboxErrorColorConfiguration()
|
||||||
helper.disabled.light.trueColor = VDSColor.interactiveDisabledOnlight
|
config.isTrue.enabled.lightColor = VDSColor.elementsPrimaryOnlight
|
||||||
helper.disabled.light.falseColor = VDSColor.interactiveDisabledOnlight
|
config.isTrue.enabled.darkColor = VDSColor.elementsPrimaryOndark
|
||||||
helper.disabled.dark.trueColor = VDSColor.interactiveDisabledOndark
|
config.isFalse.enabled.lightColor = VDSFormControlsColor.borderOnlight
|
||||||
helper.disabled.dark.falseColor = VDSColor.interactiveDisabledOndark
|
config.isFalse.enabled.darkColor = VDSFormControlsColor.borderOndark
|
||||||
helper.error.light.trueColor = VDSColor.elementsPrimaryOnlight
|
config.isTrue.disabled.lightColor = VDSColor.interactiveDisabledOnlight
|
||||||
helper.error.light.falseColor = VDSColor.feedbackErrorOnlight
|
config.isTrue.disabled.darkColor = VDSColor.interactiveDisabledOndark
|
||||||
helper.error.dark.trueColor = VDSColor.elementsPrimaryOndark
|
config.isFalse.disabled.lightColor = VDSColor.interactiveDisabledOnlight
|
||||||
helper.error.dark.falseColor = VDSColor.feedbackErrorOndark
|
config.isFalse.disabled.darkColor = VDSColor.interactiveDisabledOndark
|
||||||
helper.enabled.light.trueColor = VDSColor.elementsPrimaryOnlight
|
config.error.isTrue.enabled.lightColor = VDSColor.elementsPrimaryOnlight
|
||||||
helper.enabled.light.falseColor = VDSFormControlsColor.borderOnlight
|
config.error.isTrue.enabled.darkColor = VDSColor.elementsPrimaryOndark
|
||||||
helper.enabled.dark.trueColor = VDSColor.elementsPrimaryOndark
|
config.error.isFalse.enabled.lightColor = VDSColor.feedbackErrorOnlight
|
||||||
helper.enabled.dark.falseColor = VDSFormControlsColor.borderOndark
|
config.error.isFalse.enabled.darkColor = VDSColor.feedbackErrorOndark
|
||||||
return helper
|
return config
|
||||||
}()
|
}()
|
||||||
|
|
||||||
private var checkboxCheckColor: BinarySurfaceColorHelper<ModelType> = {
|
private var checkboxCheckColorConfiguration: BinarySurfaceColorConfiguration<ModelType> = {
|
||||||
let helper = BinarySurfaceColorHelper<ModelType>()
|
let config = BinarySurfaceColorConfiguration<ModelType>()
|
||||||
helper.light.trueColor = VDSColor.elementsPrimaryOndark
|
config.isTrue.lightColor = VDSColor.elementsPrimaryOndark
|
||||||
helper.dark.trueColor = VDSColor.elementsPrimaryOnlight
|
config.isTrue.darkColor = VDSColor.elementsPrimaryOnlight
|
||||||
return helper
|
return config
|
||||||
}()
|
}()
|
||||||
|
|
||||||
private func updateCheckbox(_ viewModel: ModelType) {
|
private func updateCheckbox(_ viewModel: ModelType) {
|
||||||
//get the colors
|
//get the colors
|
||||||
let backgroundColor = checkboxBackgroundColor.getColor(viewModel)
|
let backgroundColor = checkboxBackgroundColorConfiguration.getColor(viewModel)
|
||||||
let borderColor = checkboxBorderColor.getColor(viewModel)
|
let borderColor = checkboxBorderColorConfiguration.getColor(viewModel)
|
||||||
let checkColor = checkboxCheckColor.getColor(viewModel)
|
let checkColor = checkboxCheckColorConfiguration.getColor(viewModel)
|
||||||
|
|
||||||
if let shapeLayer = shapeLayer, let sublayers = layer.sublayers, sublayers.contains(shapeLayer) {
|
if let shapeLayer = shapeLayer, let sublayers = layer.sublayers, sublayers.contains(shapeLayer) {
|
||||||
shapeLayer.removeFromSuperlayer()
|
shapeLayer.removeFromSuperlayer()
|
||||||
@ -413,10 +413,10 @@ open class CheckboxBase<ModelType: CheckboxModel>: Control<ModelType>, Changable
|
|||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Color Class Helpers
|
// MARK: - Color Class Configurations
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
private class CheckboxErrorColorHelper: BinaryModelColorHelper<ModelType> {
|
private class CheckboxErrorColorConfiguration: BinaryDisabledSurfaceColorConfiguration<ModelType> {
|
||||||
public let error = BinarySurfaceColorHelper<ModelType>()
|
public let error = BinaryDisabledSurfaceColorConfiguration<ModelType>()
|
||||||
|
|
||||||
override func getColor(_ viewModel: ModelType) -> UIColor {
|
override func getColor(_ viewModel: ModelType) -> UIColor {
|
||||||
//only show error is enabled and showError == true
|
//only show error is enabled and showError == true
|
||||||
|
|||||||
@ -117,9 +117,9 @@ open class LabelBase<ModelType: LabelModel>: UILabel, ModelHandlerable, Initable
|
|||||||
/// - Parameter viewModel: state
|
/// - Parameter viewModel: state
|
||||||
open func onStateChange(viewModel: ModelType) {
|
open func onStateChange(viewModel: ModelType) {
|
||||||
textAlignment = viewModel.textPosition.textAlignment
|
textAlignment = viewModel.textPosition.textAlignment
|
||||||
textColor = textColorHelper.getColor(viewModel)
|
textColor = textColorConfiguration.getColor(viewModel)
|
||||||
|
|
||||||
if let vdsFont = self.font {
|
if let vdsFont = viewModel.font {
|
||||||
font = vdsFont
|
font = vdsFont
|
||||||
} else {
|
} else {
|
||||||
font = FontStyle.defaultStyle.font
|
font = FontStyle.defaultStyle.font
|
||||||
@ -163,8 +163,8 @@ open class LabelBase<ModelType: LabelModel>: UILabel, ModelHandlerable, Initable
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Private Functions
|
// MARK: - Private Functions
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
private var textColorHelper: ModelSingleColorHelper<ModelType> = {
|
private var textColorConfiguration: DisabledSurfaceColorConfiguration<ModelType> = {
|
||||||
let helper = ModelSingleColorHelper<ModelType>()
|
let helper = DisabledSurfaceColorConfiguration<ModelType>()
|
||||||
helper.disabled.lightColor = VDSColor.elementsSecondaryOnlight
|
helper.disabled.lightColor = VDSColor.elementsSecondaryOnlight
|
||||||
helper.disabled.darkColor = VDSColor.elementsSecondaryOndark
|
helper.disabled.darkColor = VDSColor.elementsSecondaryOndark
|
||||||
helper.enabled.lightColor = VDSColor.elementsPrimaryOnlight
|
helper.enabled.lightColor = VDSColor.elementsPrimaryOnlight
|
||||||
|
|||||||
@ -179,31 +179,30 @@ open class ToggleBase<ModelType: ToggleModel>: Control<ModelType>, Changable {
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Toggle
|
// MARK: - Toggle
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
private var toggleColor: BinaryModelColorHelper<ModelType> = {
|
private var toggleColorConfiguration: BinaryDisabledSurfaceColorConfiguration<ModelType> = {
|
||||||
let helper = BinaryModelColorHelper<ModelType>()
|
let config = BinaryDisabledSurfaceColorConfiguration<ModelType>()
|
||||||
helper.disabled.light.trueColor = VDSColor.interactiveDisabledOnlight
|
config.isTrue.enabled.lightColor = VDSColor.paletteGreen26
|
||||||
helper.disabled.light.falseColor = VDSColor.interactiveDisabledOnlight
|
config.isTrue.enabled.darkColor = VDSColor.paletteGreen34
|
||||||
helper.disabled.dark.trueColor = VDSColor.interactiveDisabledOndark
|
config.isTrue.disabled.lightColor = VDSColor.interactiveDisabledOnlight
|
||||||
helper.disabled.dark.falseColor = VDSColor.interactiveDisabledOndark
|
config.isTrue.disabled.darkColor = VDSColor.interactiveDisabledOndark
|
||||||
helper.enabled.light.trueColor = VDSColor.paletteGreen26
|
config.isFalse.enabled.lightColor = VDSColor.elementsSecondaryOnlight
|
||||||
helper.enabled.light.falseColor = VDSColor.elementsSecondaryOnlight
|
config.isFalse.enabled.darkColor = VDSColor.paletteGray44
|
||||||
helper.enabled.dark.trueColor = VDSColor.paletteGreen34
|
config.isFalse.disabled.lightColor = VDSColor.interactiveDisabledOnlight
|
||||||
helper.enabled.dark.falseColor = VDSColor.paletteGray44
|
config.isFalse.disabled.darkColor = VDSColor.interactiveDisabledOndark
|
||||||
return helper
|
return config
|
||||||
} ()
|
} ()
|
||||||
|
|
||||||
private var knobColor: BinaryModelColorHelper<ModelType> = {
|
private var knobColorConfiguration: BinaryDisabledSurfaceColorConfiguration<ModelType> = {
|
||||||
let helper = BinaryModelColorHelper<ModelType>()
|
let config = BinaryDisabledSurfaceColorConfiguration<ModelType>()
|
||||||
helper.disabled.light.trueColor = VDSColor.paletteGray95
|
config.isTrue.enabled.lightColor = VDSColor.elementsPrimaryOndark
|
||||||
helper.disabled.light.falseColor = VDSColor.paletteGray95
|
config.isTrue.enabled.darkColor = VDSColor.elementsPrimaryOndark
|
||||||
helper.disabled.dark.trueColor = VDSColor.paletteGray44
|
config.isTrue.disabled.lightColor = VDSColor.paletteGray95
|
||||||
helper.disabled.dark.falseColor = VDSColor.paletteGray44
|
config.isTrue.disabled.darkColor = VDSColor.paletteGray44
|
||||||
|
config.isFalse.enabled.lightColor = VDSColor.elementsPrimaryOndark
|
||||||
helper.enabled.light.trueColor = VDSColor.elementsPrimaryOndark
|
config.isFalse.enabled.darkColor = VDSColor.elementsPrimaryOndark
|
||||||
helper.enabled.light.falseColor = VDSColor.elementsPrimaryOndark
|
config.isFalse.disabled.lightColor = VDSColor.paletteGray95
|
||||||
helper.enabled.dark.trueColor = VDSColor.elementsPrimaryOndark
|
config.isFalse.disabled.darkColor = VDSColor.paletteGray44
|
||||||
helper.enabled.dark.falseColor = VDSColor.elementsPrimaryOndark
|
return config
|
||||||
return helper
|
|
||||||
} ()
|
} ()
|
||||||
|
|
||||||
private func updateToggle(_ viewModel: ModelType) {
|
private func updateToggle(_ viewModel: ModelType) {
|
||||||
@ -224,8 +223,8 @@ open class ToggleBase<ModelType: ToggleModel>: Control<ModelType>, Changable {
|
|||||||
self.layoutIfNeeded()
|
self.layoutIfNeeded()
|
||||||
}
|
}
|
||||||
|
|
||||||
let toggleColor = toggleColor.getColor(viewModel)
|
let toggleColor = toggleColorConfiguration.getColor(viewModel)
|
||||||
let knobColor = knobColor.getColor(viewModel)
|
let knobColor = knobColorConfiguration.getColor(viewModel)
|
||||||
|
|
||||||
if viewModel.disabled {
|
if viewModel.disabled {
|
||||||
toggleView.backgroundColor = toggleColor
|
toggleView.backgroundColor = toggleColor
|
||||||
@ -282,7 +281,7 @@ open class ToggleBase<ModelType: ToggleModel>: Control<ModelType>, Changable {
|
|||||||
toggleView.layer.cornerRadius = toggleSize.height / 2.0
|
toggleView.layer.cornerRadius = toggleSize.height / 2.0
|
||||||
knobView.layer.cornerRadius = knobSize.height / 2.0
|
knobView.layer.cornerRadius = knobSize.height / 2.0
|
||||||
|
|
||||||
toggleView.backgroundColor = toggleColor.getColor(model)
|
toggleView.backgroundColor = toggleColorConfiguration.getColor(model)
|
||||||
|
|
||||||
toggleView.addSubview(knobView)
|
toggleView.addSubview(knobView)
|
||||||
|
|
||||||
@ -305,8 +304,8 @@ open class ToggleBase<ModelType: ToggleModel>: Control<ModelType>, Changable {
|
|||||||
|
|
||||||
public override func reset() {
|
public override func reset() {
|
||||||
super.reset()
|
super.reset()
|
||||||
toggleView.backgroundColor = toggleColor.getColor(model)
|
toggleView.backgroundColor = toggleColorConfiguration.getColor(model)
|
||||||
knobView.backgroundColor = knobColor.getColor(model)
|
knobView.backgroundColor = knobColorConfiguration.getColor(model)
|
||||||
setAccessibilityLabel()
|
setAccessibilityLabel()
|
||||||
onChange = nil
|
onChange = nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -163,3 +163,23 @@ extension UIColor {
|
|||||||
self.init(red: CGFloat(r) / 255, green: CGFloat(g) / 255, blue: CGFloat(b) / 255, alpha: CGFloat(a) / 255)
|
self.init(red: CGFloat(r) / 255, green: CGFloat(g) / 255, blue: CGFloat(b) / 255, alpha: CGFloat(a) / 255)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension UIColor {
|
||||||
|
convenience init(
|
||||||
|
light lightModeColor: @escaping @autoclosure () -> UIColor,
|
||||||
|
dark darkModeColor: @escaping @autoclosure () -> UIColor
|
||||||
|
) {
|
||||||
|
self.init { traitCollection in
|
||||||
|
switch traitCollection.userInterfaceStyle {
|
||||||
|
case .light:
|
||||||
|
return lightModeColor()
|
||||||
|
case .dark:
|
||||||
|
return darkModeColor()
|
||||||
|
case .unspecified:
|
||||||
|
return lightModeColor()
|
||||||
|
@unknown default:
|
||||||
|
return lightModeColor()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -17,7 +17,7 @@ public protocol Accessable {
|
|||||||
var accessibilityLabelDisabled: String? { get set }
|
var accessibilityLabelDisabled: String? { get set }
|
||||||
}
|
}
|
||||||
|
|
||||||
//Helpers to set within the UIControl
|
//Configurations to set within the UIControl
|
||||||
extension ModelHandlerable where Self: UIView {
|
extension ModelHandlerable where Self: UIView {
|
||||||
private var accessableModel: Accessable? {
|
private var accessableModel: Accessable? {
|
||||||
guard let model = self.model as? Accessable else {
|
guard let model = self.model as? Accessable else {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user