diff --git a/MVMCoreUI/Atoms/TextFields/BaseDropdownEntryField.swift b/MVMCoreUI/Atoms/TextFields/BaseDropdownEntryField.swift index 6cb0c96a..3290c744 100644 --- a/MVMCoreUI/Atoms/TextFields/BaseDropdownEntryField.swift +++ b/MVMCoreUI/Atoms/TextFields/BaseDropdownEntryField.swift @@ -72,7 +72,9 @@ import UIKit public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) { super.setWithModel(model, delegateObject, additionalData) - dropDownCaretView.setWithModel(model, delegateObject, additionalData) + guard let model = model as? BaseDropdownEntryFieldModel else { return } + + dropDownCaretView.setWithModel(model.caretView, delegateObject, additionalData) } } diff --git a/MVMCoreUI/Atoms/TextFields/BaseDropdownEntryFieldModel.swift b/MVMCoreUI/Atoms/TextFields/BaseDropdownEntryFieldModel.swift index 1fefd42f..e6e7cb24 100644 --- a/MVMCoreUI/Atoms/TextFields/BaseDropdownEntryFieldModel.swift +++ b/MVMCoreUI/Atoms/TextFields/BaseDropdownEntryFieldModel.swift @@ -7,20 +7,39 @@ // @objcMembers public class BaseDropdownEntryFieldModel: TextEntryFieldModel { - //-------------------------------------------------- // MARK: - Properties //-------------------------------------------------- + public var caretView: CaretViewModel? + public override class var identifier: String { return "" } + //-------------------------------------------------- + // MARK: - Keys + //-------------------------------------------------- + + private enum CodingKeys: String, CodingKey { + case moleculeName + case caretView + } + + //-------------------------------------------------- + // MARK: - Initializers + //-------------------------------------------------- + required public init(from decoder: Decoder) throws { try super.init(from: decoder) + let typeContainer = try decoder.container(keyedBy: CodingKeys.self) + caretView = try typeContainer.decodeIfPresent(CaretViewModel.self, forKey: .caretView) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) + try super.encode(to: encoder) + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(caretView, forKey: .caretView) } } diff --git a/MVMCoreUI/Atoms/TextFields/DateDropdownEntryField.swift b/MVMCoreUI/Atoms/TextFields/DateDropdownEntryField.swift index 7051239c..acfe0a42 100644 --- a/MVMCoreUI/Atoms/TextFields/DateDropdownEntryField.swift +++ b/MVMCoreUI/Atoms/TextFields/DateDropdownEntryField.swift @@ -116,7 +116,7 @@ import UIKit guard let model = model as? DateDropdownEntryFieldModel else { return } - self.dateFormat = model.dateFormat + dateFormat = model.dateFormat } } diff --git a/MVMCoreUI/Atoms/TextFields/EntryFieldModel.swift b/MVMCoreUI/Atoms/TextFields/EntryFieldModel.swift index 14a57f4c..70c1c0e3 100644 --- a/MVMCoreUI/Atoms/TextFields/EntryFieldModel.swift +++ b/MVMCoreUI/Atoms/TextFields/EntryFieldModel.swift @@ -19,6 +19,7 @@ import Foundation } public var backgroundColor: Color? + public var moleculeName: String? public var title: String? public var feedback: String? public var errorMessage: String = "" @@ -34,6 +35,7 @@ import Foundation //-------------------------------------------------- private enum CodingKeys: String, CodingKey { + case moleculeName case backgroundColor case title case isEnabled @@ -52,6 +54,7 @@ import Foundation required public init(from decoder: Decoder) throws { let typeContainer = try decoder.container(keyedBy: CodingKeys.self) + moleculeName = try typeContainer.decodeIfPresent(String.self, forKey: .moleculeName) backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor) title = try typeContainer.decodeIfPresent(String.self, forKey: .title) feedback = try typeContainer.decodeIfPresent(String.self, forKey: .feedback) @@ -65,6 +68,7 @@ import Foundation public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(moleculeName, forKey: .moleculeName) try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor) try container.encodeIfPresent(title, forKey: .title) try container.encodeIfPresent(feedback, forKey: .feedback)