diff --git a/MVMCoreUI/Atomic/Atoms/TextFields/DigitEntryField.swift b/MVMCoreUI/Atomic/Atoms/TextFields/DigitEntryField.swift index 8ae4365f..bf20ecde 100644 --- a/MVMCoreUI/Atomic/Atoms/TextFields/DigitEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/TextFields/DigitEntryField.swift @@ -76,6 +76,10 @@ import UIKit public var digitBoxes: [DigitBox] = [] private var selectedDigitBox: DigitBox? + public var digitEntryModel: DigitEntryFieldModel? { + return model as? DigitEntryFieldModel + } + //-------------------------------------------------- // MARK: - Computed Properties //-------------------------------------------------- @@ -234,6 +238,19 @@ import UIKit layoutIfNeeded() } + public override func reset() { + super.reset() + + accessibilityElements = nil + switchFieldsAutomatically = false + selectedDigitBox = nil + text = "" + digitBoxes.forEach { + $0.removeFromSuperview() + } + digitBoxes = [] + } + //-------------------------------------------------- // MARK: - Methods //-------------------------------------------------- @@ -326,7 +343,7 @@ import UIKit } public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) { - + guard let model = model as? DigitEntryFieldModel else { return } numberOfDigits = model.digits @@ -378,12 +395,14 @@ extension DigitEntryField { // One character, switch old value with new, select next textfield textField.text = string + digitEntryModel?.text = text selectNextDigitField(textField, clear: false) return false } else if replacementLength == 0 && oldLength == 1 { // Non empty cell, clear and stay. textField.text = "" + digitEntryModel?.text = text return false } @@ -410,6 +429,7 @@ extension DigitEntryField { if !switchFieldsAutomatically { textField.text = "" + digitEntryModel?.text = text } proprietorTextDelegate?.textFieldDidBeginEditing?(textField) diff --git a/MVMCoreUI/Atomic/Atoms/TextFields/EntryField.swift b/MVMCoreUI/Atomic/Atoms/TextFields/EntryField.swift index b1a3e43e..33672685 100644 --- a/MVMCoreUI/Atomic/Atoms/TextFields/EntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/TextFields/EntryField.swift @@ -60,6 +60,7 @@ import UIKit self.titleLabel.textColor = enabled ? .mvmBlack : .mvmCoolGray3 self.feedbackLabel.textColor = enabled ? .mvmBlack : .mvmCoolGray3 self.entryFieldContainer.isEnabled = enabled + self.entryFieldModel?.enabled = enabled } } @@ -69,6 +70,7 @@ import UIKit set (error) { self.feedback = error ? entryFieldModel?.errorMessage : entryFieldModel?.feedback self.entryFieldContainer.showError = error + self.entryFieldModel?.showError = error } } @@ -77,6 +79,7 @@ import UIKit get { return entryFieldContainer.isLocked } set (locked) { self.entryFieldContainer.isLocked = locked + self.entryFieldModel?.locked = locked } } @@ -85,6 +88,7 @@ import UIKit get { return entryFieldContainer.isSelected } set (selected) { self.entryFieldContainer.isSelected = selected + self.entryFieldModel?.selected = selected } } diff --git a/MVMCoreUI/Atomic/Atoms/TextFields/EntryFieldModel.swift b/MVMCoreUI/Atomic/Atoms/TextFields/EntryFieldModel.swift index 9be330a3..e902ae22 100644 --- a/MVMCoreUI/Atomic/Atoms/TextFields/EntryFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/TextFields/EntryFieldModel.swift @@ -10,7 +10,6 @@ import Foundation @objcMembers public class EntryFieldModel: MoleculeModelProtocol, FormFieldProtocol, FormRuleWatcherFieldProtocol, EnableableModelProtocol { - //-------------------------------------------------- // MARK: - Properties //-------------------------------------------------- @@ -24,6 +23,7 @@ import Foundation public var feedback: String? public var errorMessage: String? public var enabled: Bool = true + public var showError: Bool? public var locked: Bool? public var selected: Bool? public var text: String? @@ -52,6 +52,7 @@ import Foundation case errorMessage case locked case selected + case showError case text case fieldKey case groupName @@ -94,6 +95,7 @@ import Foundation text = try typeContainer.decodeIfPresent(String.self, forKey: .text) baseValue = text fieldKey = try typeContainer.decodeIfPresent(String.self, forKey: .fieldKey) + if let groupName = try typeContainer.decodeIfPresent(String.self, forKey: .groupName) { self.groupName = groupName } @@ -107,6 +109,7 @@ import Foundation try container.encodeIfPresent(feedback, forKey: .feedback) try container.encodeIfPresent(text, forKey: .text) try container.encodeIfPresent(locked, forKey: .locked) + try container.encodeIfPresent(showError, forKey: .showError) try container.encodeIfPresent(selected, forKey: .selected) try container.encodeIfPresent(errorMessage, forKey: .errorMessage) try container.encode(enabled, forKey: .enabled)