current developemnt
This commit is contained in:
parent
cbcb1c37c0
commit
43778c537a
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,7 +146,7 @@ public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupW
|
|||||||
|
|
||||||
if let facade = try typeContainer.decodeIfPresent(Facade.self, forKey: .facade) {
|
if let facade = try typeContainer.decodeIfPresent(Facade.self, forKey: .facade) {
|
||||||
self.facade = facade
|
self.facade = facade
|
||||||
|
|
||||||
switch style {
|
switch style {
|
||||||
case .primary:
|
case .primary:
|
||||||
primaryFacade = facade
|
primaryFacade = facade
|
||||||
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user