current developemnt
This commit is contained in:
parent
cbcb1c37c0
commit
43778c537a
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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
|
||||
//--------------------------------------------------
|
||||
|
||||
Loading…
Reference in New Issue
Block a user