current developemnt

This commit is contained in:
Kevin G Christiano 2020-05-01 14:14:01 -04:00
parent cbcb1c37c0
commit 43778c537a
6 changed files with 94 additions and 83 deletions

View File

@ -9,16 +9,6 @@
import UIKit import UIKit
public enum ButtonStyle: String, Codable {
case primary
case secondary
}
public enum ButtonSize: String, Codable {
case standard
case tiny
}
public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupWatcherFieldProtocol { public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupWatcherFieldProtocol {
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Properties // MARK: - Properties
@ -29,11 +19,14 @@ public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupW
public var title: String public var title: String
public var action: ActionModelProtocol public var action: ActionModelProtocol
public var enabled: Bool = true public var enabled: Bool = true
public var isInverted: Bool = false { public var isInverted: Bool = false {
didSet { facade?.isInverted = isInverted } didSet { facade.isInverted = isInverted }
} }
public var facade: Facade?
public var style: ButtonStyle = .primary { public lazy var facade: Facade = primaryFacade
public var style: Styler.Button = .primary {
didSet { didSet {
switch style { switch style {
case .primary: case .primary:
@ -43,35 +36,35 @@ public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupW
} }
} }
} }
public var size: ButtonSize? = .standard public var size: Styler.Button.Size? = .standard
public var groupName: String = "" public var groupName: String = ""
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Default Button Facades // MARK: - Default Button Facades
//-------------------------------------------------- //--------------------------------------------------
private var primaryFacade = Facade(enabledFillColor: Color(uiColor: .mvmBlack), private var primaryFacade = Facade(enabledFillColor: .mvmBlack,
enabledTextColor: Color(uiColor: .mvmWhite), enabledTextColor: .mvmWhite,
disabledFillColor: Color(uiColor: .mvmCoolGray6), disabledFillColor: .mvmCoolGray6,
disabledTextColor: Color(uiColor: .mvmWhite), disabledTextColor: .mvmWhite,
enabledFillColor_inverted: Color(uiColor: .mvmWhite), enabledFillColor_inverted: .mvmWhite,
enabledTextColor_inverted: Color(uiColor: .mvmBlack), enabledTextColor_inverted: .mvmBlack,
disabledFillColor_inverted: Color(uiColor: .mvmCoolGray6), disabledFillColor_inverted: .mvmCoolGray6,
disabledTextColor_inverted: Color(uiColor: .mvmBlack), disabledTextColor_inverted: .mvmBlack,
borderWidth: 0) borderWidth: 0)
private var secondaryFacade = Facade(enabledFillColor: Color(uiColor: .mvmWhite), private var secondaryFacade = Facade(enabledFillColor: .mvmWhite,
enabledTextColor: Color(uiColor: .mvmBlack), enabledTextColor: .mvmBlack,
enabledBorderColor: Color(uiColor: .mvmBlack), enabledBorderColor: .mvmBlack,
disabledFillColor: Color(uiColor: .mvmWhite), disabledFillColor: .mvmWhite,
disabledTextColor: Color(uiColor: .mvmCoolGray6), disabledTextColor: .mvmCoolGray6,
disabledBorderColor: Color(uiColor: .mvmCoolGray6), disabledBorderColor: .mvmCoolGray6,
enabledFillColor_inverted: Color(uiColor: .mvmBlack), enabledFillColor_inverted: .mvmBlack,
enabledTextColor_inverted: Color(uiColor: .mvmWhite), enabledTextColor_inverted: .mvmWhite,
enabledBorderColor_inverted: Color(uiColor: .mvmWhite), enabledBorderColor_inverted: .mvmWhite,
disabledFillColor_inverted: Color(uiColor: .mvmWhite), disabledFillColor_inverted: .mvmWhite,
disabledTextColor_inverted: Color(uiColor: .mvmCoolGray6), disabledTextColor_inverted: .mvmCoolGray6,
disabledBorderColor_inverted: Color(uiColor: .mvmCoolGray6), disabledBorderColor_inverted: .mvmCoolGray6,
borderWidth: 1) borderWidth: 1)
//-------------------------------------------------- //--------------------------------------------------
@ -139,11 +132,11 @@ public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupW
self.groupName = groupName self.groupName = groupName
} }
if let style = try typeContainer.decodeIfPresent(ButtonStyle.self, forKey: .style) { if let style = try typeContainer.decodeIfPresent(Styler.Button.self, forKey: .style) {
self.style = style self.style = style
} }
if let size = try typeContainer.decodeIfPresent(ButtonSize.self, forKey: .size) { if let size = try typeContainer.decodeIfPresent(Styler.Button.Size.self, forKey: .size) {
self.size = size self.size = size
} }
@ -164,6 +157,7 @@ public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupW
if let isInverted = try typeContainer.decodeIfPresent(Bool.self, forKey: .inverted) { if let isInverted = try typeContainer.decodeIfPresent(Bool.self, forKey: .inverted) {
self.isInverted = isInverted self.isInverted = isInverted
facade.isInverted = isInverted
} }
} }

View File

@ -61,21 +61,21 @@ open class PillButton: Button, MVMCoreUIViewConstrainingProtocol {
public func stylePrimary() { public func stylePrimary() {
buttonModel?.style = .primary buttonModel?.style = .primary
enabledTitleColor = buttonModel?.facade?.enabled.text ?? .mvmWhite enabledTitleColor = buttonModel?.facade.enabled.text ?? .mvmWhite
disabledTitleColor = buttonModel?.facade?.disabled.text ?? .mvmWhite disabledTitleColor = buttonModel?.facade.disabled.text ?? .mvmWhite
layer.borderWidth = buttonModel?.facade?.getBorderWidth() ?? 0 layer.borderWidth = buttonModel?.facade.getBorderWidth() ?? 0
backgroundColor = isEnabled ? buttonModel?.facade?.enabled.fill ?? .mvmBlack : buttonModel?.facade?.enabled.fill ?? .mvmCoolGray6 backgroundColor = isEnabled ? buttonModel?.facade.enabled.fill ?? .mvmBlack : buttonModel?.facade.enabled.fill ?? .mvmCoolGray6
} }
/// The secondary styling for a button. Should be used for secondary buttons /// The secondary styling for a button. Should be used for secondary buttons
public func styleSecondary() { public func styleSecondary() {
buttonModel?.style = .secondary buttonModel?.style = .secondary
enabledTitleColor = buttonModel?.facade?.enabled.text ?? .mvmBlack enabledTitleColor = buttonModel?.facade.enabled.text ?? .mvmBlack
disabledTitleColor = buttonModel?.facade?.disabled.text ?? .mvmCoolGray6 disabledTitleColor = buttonModel?.facade.disabled.text ?? .mvmCoolGray6
backgroundColor = .clear backgroundColor = .clear
layer.borderWidth = buttonModel?.facade?.getBorderWidth() ?? 1 layer.borderWidth = buttonModel?.facade.getBorderWidth() ?? 1
borderColor = isEnabled ? buttonModel?.facade?.enabled.border ?? .mvmBlack : buttonModel?.facade?.enabled.border ?? .mvmCoolGray6 borderColor = isEnabled ? buttonModel?.facade.enabled.border ?? .mvmBlack : buttonModel?.facade.enabled.border ?? .mvmCoolGray6
} }
/// Styles the button based on the model style /// Styles the button based on the model style
@ -89,30 +89,30 @@ open class PillButton: Button, MVMCoreUIViewConstrainingProtocol {
stylePrimary() stylePrimary()
} }
if let titleColor = buttonModel?.facade?.enabled.text { if let titleColor = buttonModel?.facade.enabled.text {
enabledTitleColor = titleColor enabledTitleColor = titleColor
} }
if let disabledTitleColor = buttonModel?.facade?.disabled.text { if let disabledTitleColor = buttonModel?.facade.disabled.text {
self.disabledTitleColor = disabledTitleColor self.disabledTitleColor = disabledTitleColor
} }
if isEnabled { if isEnabled {
if let fillColor = buttonModel?.facade?.enabled.fill { if let fillColor = buttonModel?.facade.enabled.fill {
backgroundColor = fillColor backgroundColor = fillColor
} }
if let borderColor = buttonModel?.facade?.enabled.border { if let borderColor = buttonModel?.facade.enabled.border {
layer.borderWidth = buttonModel?.facade?.getBorderWidth() ?? 1 layer.borderWidth = buttonModel?.facade.getBorderWidth() ?? 1
self.borderColor = borderColor self.borderColor = borderColor
} }
} else { } else {
if let fillColor = buttonModel?.facade?.disabled.fill { if let fillColor = buttonModel?.facade.disabled.fill {
backgroundColor = fillColor backgroundColor = fillColor
} }
if let borderColor = buttonModel?.facade?.disabled.border { if let borderColor = buttonModel?.facade.disabled.border {
layer.borderWidth = buttonModel?.facade?.getBorderWidth() ?? 1 layer.borderWidth = buttonModel?.facade.getBorderWidth() ?? 1
self.borderColor = borderColor self.borderColor = borderColor
} }
} }
@ -126,7 +126,7 @@ open class PillButton: Button, MVMCoreUIViewConstrainingProtocol {
PillButton.getHeight(for: buttonModel?.size, size: size) PillButton.getHeight(for: buttonModel?.size, size: size)
} }
public static func getHeight(for buttonSize: ButtonSize?, size: CGFloat) -> CGFloat { public static func getHeight(for buttonSize: Styler.Button.Size?, size: CGFloat) -> CGFloat {
switch buttonSize { switch buttonSize {
case .tiny: case .tiny:

View File

@ -22,7 +22,7 @@ public class ListRightVariableButtonAllTextAndLinksModel: ListItemModel, Molecul
override public func setDefaults() { override public func setDefaults() {
super.setDefaults() super.setDefaults()
self.button.size = .tiny self.button.size = .tiny
self.button.style = ButtonStyle.secondary self.button.style = .secondary
} }
private enum CodingKeys: String, CodingKey { private enum CodingKeys: String, CodingKey {

View File

@ -55,6 +55,13 @@ public final class Color: Codable {
determineRGBA() determineRGBA()
} }
public init?(uiColor: UIColor?) {
guard let uiColor = uiColor else { return nil }
self.uiColor = uiColor
hex = UIColor.hexString(for: uiColor) ?? ""
determineRGBA()
}
init?(name: String) { init?(name: String) {
guard let colorTuple = UIColor.names[name] else { return nil } guard let colorTuple = UIColor.names[name] else { return nil }
self.uiColor = colorTuple.uiColor self.uiColor = colorTuple.uiColor

View File

@ -53,38 +53,38 @@ public class Facade: Codable {
//-------------------------------------------------- //--------------------------------------------------
public init(isInverted: Bool = false, public init(isInverted: Bool = false,
backgroundColor_standard: Color? = nil, backgroundColor_standard: UIColor? = nil,
backgroundColor_inverted: Color? = nil, backgroundColor_inverted: UIColor? = nil,
enabledFillColor: Color? = nil, enabledFillColor: UIColor? = nil,
enabledTextColor: Color? = nil, enabledTextColor: UIColor? = nil,
enabledBorderColor: Color? = nil, enabledBorderColor: UIColor? = nil,
disabledFillColor: Color? = nil, disabledFillColor: UIColor? = nil,
disabledTextColor: Color? = nil, disabledTextColor: UIColor? = nil,
disabledBorderColor: Color? = nil, disabledBorderColor: UIColor? = nil,
enabledFillColor_inverted: Color? = nil, enabledFillColor_inverted: UIColor? = nil,
enabledTextColor_inverted: Color? = nil, enabledTextColor_inverted: UIColor? = nil,
enabledBorderColor_inverted: Color? = nil, enabledBorderColor_inverted: UIColor? = nil,
disabledFillColor_inverted: Color? = nil, disabledFillColor_inverted: UIColor? = nil,
disabledTextColor_inverted: Color? = nil, disabledTextColor_inverted: UIColor? = nil,
disabledBorderColor_inverted: Color? = nil, disabledBorderColor_inverted: UIColor? = nil,
borderWidth: CGFloat? = nil, borderWidth: CGFloat? = nil,
borderWidth_inverted: CGFloat? = nil) { borderWidth_inverted: CGFloat? = nil) {
self.isInverted = isInverted self.isInverted = isInverted
self.backgroundColor_standard = backgroundColor_standard self.backgroundColor_standard = Color(uiColor: backgroundColor_standard)
self.backgroundColor_inverted = backgroundColor_inverted self.backgroundColor_inverted = Color(uiColor: backgroundColor_inverted)
self.enabledFillColor = enabledFillColor self.enabledFillColor = Color(uiColor: enabledFillColor)
self.enabledTextColor = enabledTextColor self.enabledTextColor = Color(uiColor: enabledTextColor)
self.enabledBorderColor = enabledBorderColor self.enabledBorderColor = Color(uiColor: enabledBorderColor)
self.disabledFillColor = disabledFillColor self.disabledFillColor = Color(uiColor: disabledFillColor)
self.disabledTextColor = disabledTextColor self.disabledTextColor = Color(uiColor: disabledTextColor)
self.disabledBorderColor = disabledBorderColor self.disabledBorderColor = Color(uiColor: disabledBorderColor)
self.enabledFillColor_inverted = enabledFillColor_inverted self.enabledFillColor_inverted = Color(uiColor: enabledFillColor_inverted)
self.enabledTextColor_inverted = enabledTextColor_inverted self.enabledTextColor_inverted = Color(uiColor: enabledTextColor_inverted)
self.enabledBorderColor_inverted = enabledBorderColor_inverted self.enabledBorderColor_inverted = Color(uiColor: enabledBorderColor_inverted)
self.disabledFillColor_inverted = disabledFillColor_inverted self.disabledFillColor_inverted = Color(uiColor: disabledFillColor_inverted)
self.disabledTextColor_inverted = disabledTextColor_inverted self.disabledTextColor_inverted = Color(uiColor: disabledTextColor_inverted)
self.disabledBorderColor_inverted = disabledBorderColor_inverted self.disabledBorderColor_inverted = Color(uiColor: disabledBorderColor_inverted)
self.borderWidth = borderWidth self.borderWidth = borderWidth
self.borderWidth_inverted = borderWidth_inverted self.borderWidth_inverted = borderWidth_inverted
} }

View File

@ -172,6 +172,16 @@ open class Styler {
} }
} }
public enum Button: String, Codable {
case primary
case secondary
public enum Size: String, Codable {
case standard
case tiny
}
}
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Functions // MARK: - Functions
//-------------------------------------------------- //--------------------------------------------------