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
public enum ButtonStyle: String, Codable {
case primary
case secondary
}
public enum ButtonSize: String, Codable {
case standard
case tiny
}
public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupWatcherFieldProtocol {
//--------------------------------------------------
// MARK: - Properties
@ -29,11 +19,14 @@ public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupW
public var title: String
public var action: ActionModelProtocol
public var enabled: Bool = true
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 {
switch style {
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 = ""
//--------------------------------------------------
// MARK: - Default Button Facades
//--------------------------------------------------
private var primaryFacade = Facade(enabledFillColor: Color(uiColor: .mvmBlack),
enabledTextColor: Color(uiColor: .mvmWhite),
disabledFillColor: Color(uiColor: .mvmCoolGray6),
disabledTextColor: Color(uiColor: .mvmWhite),
enabledFillColor_inverted: Color(uiColor: .mvmWhite),
enabledTextColor_inverted: Color(uiColor: .mvmBlack),
disabledFillColor_inverted: Color(uiColor: .mvmCoolGray6),
disabledTextColor_inverted: Color(uiColor: .mvmBlack),
private var primaryFacade = Facade(enabledFillColor: .mvmBlack,
enabledTextColor: .mvmWhite,
disabledFillColor: .mvmCoolGray6,
disabledTextColor: .mvmWhite,
enabledFillColor_inverted: .mvmWhite,
enabledTextColor_inverted: .mvmBlack,
disabledFillColor_inverted: .mvmCoolGray6,
disabledTextColor_inverted: .mvmBlack,
borderWidth: 0)
private var secondaryFacade = Facade(enabledFillColor: Color(uiColor: .mvmWhite),
enabledTextColor: Color(uiColor: .mvmBlack),
enabledBorderColor: Color(uiColor: .mvmBlack),
disabledFillColor: Color(uiColor: .mvmWhite),
disabledTextColor: Color(uiColor: .mvmCoolGray6),
disabledBorderColor: Color(uiColor: .mvmCoolGray6),
enabledFillColor_inverted: Color(uiColor: .mvmBlack),
enabledTextColor_inverted: Color(uiColor: .mvmWhite),
enabledBorderColor_inverted: Color(uiColor: .mvmWhite),
disabledFillColor_inverted: Color(uiColor: .mvmWhite),
disabledTextColor_inverted: Color(uiColor: .mvmCoolGray6),
disabledBorderColor_inverted: Color(uiColor: .mvmCoolGray6),
private var secondaryFacade = Facade(enabledFillColor: .mvmWhite,
enabledTextColor: .mvmBlack,
enabledBorderColor: .mvmBlack,
disabledFillColor: .mvmWhite,
disabledTextColor: .mvmCoolGray6,
disabledBorderColor: .mvmCoolGray6,
enabledFillColor_inverted: .mvmBlack,
enabledTextColor_inverted: .mvmWhite,
enabledBorderColor_inverted: .mvmWhite,
disabledFillColor_inverted: .mvmWhite,
disabledTextColor_inverted: .mvmCoolGray6,
disabledBorderColor_inverted: .mvmCoolGray6,
borderWidth: 1)
//--------------------------------------------------
@ -139,11 +132,11 @@ public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupW
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
}
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
}
@ -153,7 +146,7 @@ public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupW
if let facade = try typeContainer.decodeIfPresent(Facade.self, forKey: .facade) {
self.facade = facade
switch style {
case .primary:
primaryFacade = facade
@ -164,6 +157,7 @@ public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupW
if let isInverted = try typeContainer.decodeIfPresent(Bool.self, forKey: .inverted) {
self.isInverted = isInverted
facade.isInverted = isInverted
}
}

View File

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

View File

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

View File

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

View File

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