From 4ffd07dd3d58f617e2ed8c89f86133e6b787e069 Mon Sep 17 00:00:00 2001 From: Kevin G Christiano Date: Tue, 5 May 2020 12:43:54 -0400 Subject: [PATCH] beginning rework --- MVMCoreUI.xcodeproj/project.pbxproj | 6 +- .../Atomic/Atoms/Buttons/ButtonModel.swift | 125 +++++++++++- MVMCoreUI/Styles/Facade.swift | 188 ------------------ 3 files changed, 119 insertions(+), 200 deletions(-) delete mode 100644 MVMCoreUI/Styles/Facade.swift diff --git a/MVMCoreUI.xcodeproj/project.pbxproj b/MVMCoreUI.xcodeproj/project.pbxproj index b7b6852b..c17abf62 100644 --- a/MVMCoreUI.xcodeproj/project.pbxproj +++ b/MVMCoreUI.xcodeproj/project.pbxproj @@ -91,7 +91,6 @@ 0A7EF86323D8AFA000B2AAD1 /* BaseDropdownEntryFieldModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A7EF86223D8AFA000B2AAD1 /* BaseDropdownEntryFieldModel.swift */; }; 0A7EF86523D8AFFF00B2AAD1 /* ItemDropdownEntryFieldModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A7EF86423D8AFFF00B2AAD1 /* ItemDropdownEntryFieldModel.swift */; }; 0A7EF86723D8B0AE00B2AAD1 /* DateDropdownEntryFieldModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A7EF86623D8B0AE00B2AAD1 /* DateDropdownEntryFieldModel.swift */; }; - 0A96140B245B06F0006FA18B /* Facade.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A96140A245B06F0006FA18B /* Facade.swift */; }; 0AA33B3A2398524F0067DD0F /* Toggle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AA33B392398524F0067DD0F /* Toggle.swift */; }; 0AB764D124460F6300E7FE72 /* UIDatePicker+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AB764D024460F6300E7FE72 /* UIDatePicker+Extension.swift */; }; 0AB764D324460FA400E7FE72 /* UIPickerView+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AB764D224460FA400E7FE72 /* UIPickerView+Extension.swift */; }; @@ -495,7 +494,6 @@ 0A7EF86423D8AFFF00B2AAD1 /* ItemDropdownEntryFieldModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemDropdownEntryFieldModel.swift; sourceTree = ""; }; 0A7EF86623D8B0AE00B2AAD1 /* DateDropdownEntryFieldModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateDropdownEntryFieldModel.swift; sourceTree = ""; }; 0A8321AE2355FE9500CB7F00 /* DigitBox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DigitBox.swift; sourceTree = ""; }; - 0A96140A245B06F0006FA18B /* Facade.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Facade.swift; sourceTree = ""; }; 0AA33B33239813C50067DD0F /* UIColor+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+Extension.swift"; sourceTree = ""; }; 0AA33B392398524F0067DD0F /* Toggle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Toggle.swift; sourceTree = ""; }; 0AB764D024460F6300E7FE72 /* UIDatePicker+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIDatePicker+Extension.swift"; sourceTree = ""; }; @@ -1522,7 +1520,6 @@ D29DF13921E68637003B2FB9 /* MFStyler.m */, 0A6682A92435125F00AD3CA1 /* Styler.swift */, 0A6682AB243531C300AD3CA1 /* Padding.swift */, - 0A96140A245B06F0006FA18B /* Facade.swift */, ); path = Styles; sourceTree = ""; @@ -1993,7 +1990,6 @@ 012A88C4238D86E600FE3DA1 /* CarouselItemModelProtocol.swift in Sources */, D2E2A9A123E095AB000B42E6 /* ButtonModelProtocol.swift in Sources */, 94C2D9AB23872EB50006CF46 /* LabelAttributeActionModel.swift in Sources */, - 0A96140B245B06F0006FA18B /* Facade.swift in Sources */, D22D8395241FB41200D3DF69 /* UIStackView+Extension.swift in Sources */, 52B201D324081CFB00D2011E /* ListLeftVariableRadioButtonAndPaymentMethodModel.swift in Sources */, 525239C02407BCFF00454969 /* ListTwoColumnPriceDetailsModel.swift in Sources */, @@ -2082,7 +2078,7 @@ 0A7BAFA1232BE61800FB8E22 /* Checkbox.swift in Sources */, 011B58F023A2AA980085F53C /* ListItemModelProtocol.swift in Sources */, D22479962316AF6E003FCCF9 /* HeadlineBodyLink.swift in Sources */, - 8DE5BECD2456F7A200772E76 /* ListTwoColumnDropdownSelectorsModel.swift in Sources */, + 8DE5BECD2456F7A200772E76 /* ListTwoColumnDropdownSelectorsModel.swift in Sources */, 0A41BA7F23453A6400D4C0BC /* TextEntryField.swift in Sources */, BB55B51D244482C1002001AD /* ListRightVariablePriceChangeBodyText.swift in Sources */, 017BEB382360C6AC0024EF95 /* RadioButtonLabel.swift in Sources */, diff --git a/MVMCoreUI/Atomic/Atoms/Buttons/ButtonModel.swift b/MVMCoreUI/Atomic/Atoms/Buttons/ButtonModel.swift index 5f6e2621..a7f679b5 100644 --- a/MVMCoreUI/Atomic/Atoms/Buttons/ButtonModel.swift +++ b/MVMCoreUI/Atomic/Atoms/Buttons/ButtonModel.swift @@ -8,6 +8,8 @@ import UIKit +public typealias FacadeElements = (fill: UIColor?, text: UIColor?, border: UIColor?) + public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupWatcherFieldProtocol { //-------------------------------------------------- @@ -19,15 +21,46 @@ public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupW public var title: String public var action: ActionModelProtocol public var enabled: Bool = true - public lazy var facade: Facade = primaryFacade public var style: Styler.Button? public var size: Styler.Button.Size? = .standard public var groupName: String = "" + public var isInverted: Bool = false + + public lazy var enabledElements: FacadeElements = (fill: enabled_fillColor(), + text: enabled_textColor(), + border: enabled_borderColor()) + + public lazy var disabledElements: FacadeElements = (fill: disabled_fillColor(), + text: disabled_textColor(), + border: disabled_borderColor()) + + public var backgroundColor_standard: Color? + public var backgroundColor_inverted: Color? + + public var enabledFillColor: Color? + public var enabledTextColor: Color? + public var enabledBorderColor: Color? + + public var enabledFillColor_inverted: Color? + public var enabledTextColor_inverted: Color? + public var enabledBorderColor_inverted: Color? + + public var disabledFillColor: Color? + public var disabledTextColor: Color? + public var disabledBorderColor: Color? + + public var disabledFillColor_inverted: Color? + public var disabledTextColor_inverted: Color? + public var disabledBorderColor_inverted: Color? + + public var borderWidth: CGFloat? + public var borderWidth_inverted: CGFloat? + //-------------------------------------------------- // MARK: - Default Button Facades //-------------------------------------------------- - + /* private var primaryFacade = Facade(enabledFillColor: .mvmBlack, enabledTextColor: .mvmWhite, disabledFillColor: .mvmCoolGray6, @@ -51,7 +84,7 @@ public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupW disabledTextColor_inverted: .mvmCoolGray6, disabledBorderColor_inverted: .mvmCoolGray6, borderWidth: 1) - + */ //-------------------------------------------------- // MARK: - Methods //-------------------------------------------------- @@ -85,6 +118,43 @@ public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupW style = .primary } + //-------------------------------------------------- + // MARK: - Methods + //-------------------------------------------------- + + public func backgroundColor() -> UIColor? { + return (isInverted ? backgroundColor_inverted : backgroundColor_standard)?.uiColor + } + + public func getBorderWidth() -> CGFloat? { + return isInverted ? borderWidth_inverted : borderWidth + } + + public func enabled_fillColor() -> UIColor? { + return (isInverted ? enabledFillColor_inverted : enabledFillColor)?.uiColor + } + + public func enabled_textColor() -> UIColor? { + return (isInverted ? enabledTextColor_inverted : enabledTextColor)?.uiColor + } + + public func enabled_borderColor() -> UIColor? { + return (isInverted ? enabledBorderColor_inverted : enabledBorderColor)?.uiColor + } + + public func disabled_fillColor() -> UIColor? { + return (isInverted ? disabledFillColor_inverted : disabledFillColor)?.uiColor + } + + public func disabled_textColor() -> UIColor? { + return (isInverted ? disabledTextColor_inverted : disabledTextColor)?.uiColor + } + + public func disabled_borderColor() -> UIColor? { + return (isInverted ? disabledBorderColor_inverted : disabledBorderColor)?.uiColor + } + + //-------------------------------------------------- // MARK: - Keys //-------------------------------------------------- @@ -100,6 +170,21 @@ public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupW case size case facade case groupName + + case backgroundColor_standard + case backgroundColor_inverted + case enabledFillColor + case enabledTextColor + case enabledBorderColor + case enabledFillColor_inverted + case enabledTextColor_inverted + case enabledBorderColor_inverted + case disabledFillColor + case disabledTextColor + case disabledBorderColor + case disabledFillColor_inverted + case disabledTextColor_inverted + case disabledBorderColor_inverted } //-------------------------------------------------- @@ -125,10 +210,6 @@ public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupW self.enabled = enabled } - if let facade = try typeContainer.decodeIfPresent(Facade.self, forKey: .facade) { - self.facade = facade - } - if let isInverted = try typeContainer.decodeIfPresent(Bool.self, forKey: .inverted) { facade.isInverted = isInverted } @@ -136,6 +217,21 @@ public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupW if let groupName = try typeContainer.decodeIfPresent(String.self, forKey: .groupName) { self.groupName = groupName } + + backgroundColor_standard = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor_standard) + backgroundColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor_inverted) + enabledFillColor = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledFillColor) + enabledTextColor = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledTextColor) + enabledBorderColor = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledBorderColor) + enabledFillColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledFillColor_inverted) + enabledTextColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledTextColor_inverted) + enabledBorderColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledBorderColor_inverted) + disabledFillColor = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledFillColor) + disabledTextColor = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledTextColor) + disabledBorderColor = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledBorderColor) + disabledFillColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledFillColor_inverted) + disabledTextColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledTextColor_inverted) + disabledBorderColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledBorderColor_inverted) } public func encode(to encoder: Encoder) throws { @@ -149,5 +245,20 @@ public class ButtonModel: ButtonModelProtocol, MoleculeModelProtocol, FormGroupW try container.encodeIfPresent(style, forKey: .style) try container.encodeIfPresent(size, forKey: .size) try container.encodeIfPresent(groupName, forKey: .groupName) + + try container.encodeIfPresent(backgroundColor_standard, forKey: .backgroundColor_standard) + try container.encodeIfPresent(backgroundColor_inverted, forKey: .backgroundColor_inverted) + try container.encodeIfPresent(enabledFillColor, forKey: .enabledFillColor) + try container.encodeIfPresent(enabledTextColor, forKey: .enabledTextColor) + try container.encodeIfPresent(enabledBorderColor, forKey: .enabledBorderColor) + try container.encodeIfPresent(enabledFillColor_inverted, forKey: .enabledFillColor_inverted) + try container.encodeIfPresent(enabledTextColor_inverted, forKey: .enabledTextColor_inverted) + try container.encodeIfPresent(enabledBorderColor_inverted, forKey: .enabledBorderColor_inverted) + try container.encodeIfPresent(disabledFillColor, forKey: .disabledFillColor) + try container.encodeIfPresent(disabledTextColor, forKey: .disabledTextColor) + try container.encodeIfPresent(disabledBorderColor, forKey: .disabledBorderColor) + try container.encodeIfPresent(disabledFillColor_inverted, forKey: .disabledFillColor_inverted) + try container.encodeIfPresent(disabledTextColor_inverted, forKey: .disabledTextColor_inverted) + try container.encodeIfPresent(disabledBorderColor_inverted, forKey: .disabledBorderColor_inverted) } } diff --git a/MVMCoreUI/Styles/Facade.swift b/MVMCoreUI/Styles/Facade.swift deleted file mode 100644 index 2bd525cd..00000000 --- a/MVMCoreUI/Styles/Facade.swift +++ /dev/null @@ -1,188 +0,0 @@ -// -// Facade.swift -// MVMCoreUI -// -// Created by Kevin Christiano on 4/30/20. -// Copyright © 2020 Verizon Wireless. All rights reserved. -// - -import Foundation - -public typealias FacadeElements = (fill: UIColor?, text: UIColor?, border: UIColor?) - - -public class Facade: Codable { - //-------------------------------------------------- - // MARK: - Properties - //-------------------------------------------------- - - public var isInverted: Bool = false - - public lazy var enabled: FacadeElements = (fill: enabled_fillColor(), - text: enabled_textColor(), - border: enabled_borderColor()) - - public lazy var disabled: FacadeElements = (fill: disabled_fillColor(), - text: disabled_textColor(), - border: disabled_borderColor()) - - public var backgroundColor_standard: Color? - public var backgroundColor_inverted: Color? - - public var enabledFillColor: Color? - public var enabledTextColor: Color? - public var enabledBorderColor: Color? - - public var enabledFillColor_inverted: Color? - public var enabledTextColor_inverted: Color? - public var enabledBorderColor_inverted: Color? - - public var disabledFillColor: Color? - public var disabledTextColor: Color? - public var disabledBorderColor: Color? - - public var disabledFillColor_inverted: Color? - public var disabledTextColor_inverted: Color? - public var disabledBorderColor_inverted: Color? - - public var borderWidth: CGFloat? - public var borderWidth_inverted: CGFloat? - - //-------------------------------------------------- - // MARK: - Initializer - //-------------------------------------------------- - - public init(isInverted: Bool = false, - 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 = 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 - } - - //-------------------------------------------------- - // MARK: - Methods - //-------------------------------------------------- - - public func backgroundColor() -> UIColor? { - return (isInverted ? backgroundColor_inverted : backgroundColor_standard)?.uiColor - } - - public func getBorderWidth() -> CGFloat? { - return isInverted ? borderWidth_inverted : borderWidth - } - - public func enabled_fillColor() -> UIColor? { - return (isInverted ? enabledFillColor_inverted : enabledFillColor)?.uiColor - } - - public func enabled_textColor() -> UIColor? { - return (isInverted ? enabledTextColor_inverted : enabledTextColor)?.uiColor - } - - public func enabled_borderColor() -> UIColor? { - return (isInverted ? enabledBorderColor_inverted : enabledBorderColor)?.uiColor - } - - public func disabled_fillColor() -> UIColor? { - return (isInverted ? disabledFillColor_inverted : disabledFillColor)?.uiColor - } - - public func disabled_textColor() -> UIColor? { - return (isInverted ? disabledTextColor_inverted : disabledTextColor)?.uiColor - } - - public func disabled_borderColor() -> UIColor? { - return (isInverted ? disabledBorderColor_inverted : disabledBorderColor)?.uiColor - } - - //-------------------------------------------------- - // MARK: - Keys - //-------------------------------------------------- - - private enum CodingKeys: String, CodingKey { - case backgroundColor_standard - case backgroundColor_inverted - case enabledFillColor - case enabledTextColor - case enabledBorderColor - case enabledFillColor_inverted - case enabledTextColor_inverted - case enabledBorderColor_inverted - case disabledFillColor - case disabledTextColor - case disabledBorderColor - case disabledFillColor_inverted - case disabledTextColor_inverted - case disabledBorderColor_inverted - } - - //-------------------------------------------------- - // MARK: - Codec - //-------------------------------------------------- - - required public init(from decoder: Decoder) throws { - let typeContainer = try decoder.container(keyedBy: CodingKeys.self) - backgroundColor_standard = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor_standard) - backgroundColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor_inverted) - enabledFillColor = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledFillColor) - enabledTextColor = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledTextColor) - enabledBorderColor = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledBorderColor) - enabledFillColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledFillColor_inverted) - enabledTextColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledTextColor_inverted) - enabledBorderColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledBorderColor_inverted) - disabledFillColor = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledFillColor) - disabledTextColor = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledTextColor) - disabledBorderColor = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledBorderColor) - disabledFillColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledFillColor_inverted) - disabledTextColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledTextColor_inverted) - disabledBorderColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledBorderColor_inverted) - } - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(backgroundColor_standard, forKey: .backgroundColor_standard) - try container.encodeIfPresent(backgroundColor_inverted, forKey: .backgroundColor_inverted) - try container.encodeIfPresent(enabledFillColor, forKey: .enabledFillColor) - try container.encodeIfPresent(enabledTextColor, forKey: .enabledTextColor) - try container.encodeIfPresent(enabledBorderColor, forKey: .enabledBorderColor) - try container.encodeIfPresent(enabledFillColor_inverted, forKey: .enabledFillColor_inverted) - try container.encodeIfPresent(enabledTextColor_inverted, forKey: .enabledTextColor_inverted) - try container.encodeIfPresent(enabledBorderColor_inverted, forKey: .enabledBorderColor_inverted) - try container.encodeIfPresent(disabledFillColor, forKey: .disabledFillColor) - try container.encodeIfPresent(disabledTextColor, forKey: .disabledTextColor) - try container.encodeIfPresent(disabledBorderColor, forKey: .disabledBorderColor) - try container.encodeIfPresent(disabledFillColor_inverted, forKey: .disabledFillColor_inverted) - try container.encodeIfPresent(disabledTextColor_inverted, forKey: .disabledTextColor_inverted) - try container.encodeIfPresent(disabledBorderColor_inverted, forKey: .disabledBorderColor_inverted) - } -}