setting values back to model

This commit is contained in:
Kevin G Christiano 2020-04-24 16:19:51 -04:00
parent 0defd2916a
commit da097cc726
3 changed files with 29 additions and 2 deletions

View File

@ -76,6 +76,10 @@ import UIKit
public var digitBoxes: [DigitBox] = [] public var digitBoxes: [DigitBox] = []
private var selectedDigitBox: DigitBox? private var selectedDigitBox: DigitBox?
public var digitEntryModel: DigitEntryFieldModel? {
return model as? DigitEntryFieldModel
}
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Computed Properties // MARK: - Computed Properties
//-------------------------------------------------- //--------------------------------------------------
@ -234,6 +238,19 @@ import UIKit
layoutIfNeeded() layoutIfNeeded()
} }
public override func reset() {
super.reset()
accessibilityElements = nil
switchFieldsAutomatically = false
selectedDigitBox = nil
text = ""
digitBoxes.forEach {
$0.removeFromSuperview()
}
digitBoxes = []
}
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Methods // MARK: - Methods
//-------------------------------------------------- //--------------------------------------------------
@ -326,7 +343,7 @@ import UIKit
} }
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) { public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
guard let model = model as? DigitEntryFieldModel else { return } guard let model = model as? DigitEntryFieldModel else { return }
numberOfDigits = model.digits numberOfDigits = model.digits
@ -378,12 +395,14 @@ extension DigitEntryField {
// One character, switch old value with new, select next textfield // One character, switch old value with new, select next textfield
textField.text = string textField.text = string
digitEntryModel?.text = text
selectNextDigitField(textField, clear: false) selectNextDigitField(textField, clear: false)
return false return false
} else if replacementLength == 0 && oldLength == 1 { } else if replacementLength == 0 && oldLength == 1 {
// Non empty cell, clear and stay. // Non empty cell, clear and stay.
textField.text = "" textField.text = ""
digitEntryModel?.text = text
return false return false
} }
@ -410,6 +429,7 @@ extension DigitEntryField {
if !switchFieldsAutomatically { if !switchFieldsAutomatically {
textField.text = "" textField.text = ""
digitEntryModel?.text = text
} }
proprietorTextDelegate?.textFieldDidBeginEditing?(textField) proprietorTextDelegate?.textFieldDidBeginEditing?(textField)

View File

@ -60,6 +60,7 @@ import UIKit
self.titleLabel.textColor = enabled ? .mvmBlack : .mvmCoolGray3 self.titleLabel.textColor = enabled ? .mvmBlack : .mvmCoolGray3
self.feedbackLabel.textColor = enabled ? .mvmBlack : .mvmCoolGray3 self.feedbackLabel.textColor = enabled ? .mvmBlack : .mvmCoolGray3
self.entryFieldContainer.isEnabled = enabled self.entryFieldContainer.isEnabled = enabled
self.entryFieldModel?.enabled = enabled
} }
} }
@ -69,6 +70,7 @@ import UIKit
set (error) { set (error) {
self.feedback = error ? entryFieldModel?.errorMessage : entryFieldModel?.feedback self.feedback = error ? entryFieldModel?.errorMessage : entryFieldModel?.feedback
self.entryFieldContainer.showError = error self.entryFieldContainer.showError = error
self.entryFieldModel?.showError = error
} }
} }
@ -77,6 +79,7 @@ import UIKit
get { return entryFieldContainer.isLocked } get { return entryFieldContainer.isLocked }
set (locked) { set (locked) {
self.entryFieldContainer.isLocked = locked self.entryFieldContainer.isLocked = locked
self.entryFieldModel?.locked = locked
} }
} }
@ -85,6 +88,7 @@ import UIKit
get { return entryFieldContainer.isSelected } get { return entryFieldContainer.isSelected }
set (selected) { set (selected) {
self.entryFieldContainer.isSelected = selected self.entryFieldContainer.isSelected = selected
self.entryFieldModel?.selected = selected
} }
} }

View File

@ -10,7 +10,6 @@ import Foundation
@objcMembers public class EntryFieldModel: MoleculeModelProtocol, FormFieldProtocol, FormRuleWatcherFieldProtocol, EnableableModelProtocol { @objcMembers public class EntryFieldModel: MoleculeModelProtocol, FormFieldProtocol, FormRuleWatcherFieldProtocol, EnableableModelProtocol {
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Properties // MARK: - Properties
//-------------------------------------------------- //--------------------------------------------------
@ -24,6 +23,7 @@ import Foundation
public var feedback: String? public var feedback: String?
public var errorMessage: String? public var errorMessage: String?
public var enabled: Bool = true public var enabled: Bool = true
public var showError: Bool?
public var locked: Bool? public var locked: Bool?
public var selected: Bool? public var selected: Bool?
public var text: String? public var text: String?
@ -52,6 +52,7 @@ import Foundation
case errorMessage case errorMessage
case locked case locked
case selected case selected
case showError
case text case text
case fieldKey case fieldKey
case groupName case groupName
@ -94,6 +95,7 @@ import Foundation
text = try typeContainer.decodeIfPresent(String.self, forKey: .text) text = try typeContainer.decodeIfPresent(String.self, forKey: .text)
baseValue = text baseValue = text
fieldKey = try typeContainer.decodeIfPresent(String.self, forKey: .fieldKey) fieldKey = try typeContainer.decodeIfPresent(String.self, forKey: .fieldKey)
if let groupName = try typeContainer.decodeIfPresent(String.self, forKey: .groupName) { if let groupName = try typeContainer.decodeIfPresent(String.self, forKey: .groupName) {
self.groupName = groupName self.groupName = groupName
} }
@ -107,6 +109,7 @@ import Foundation
try container.encodeIfPresent(feedback, forKey: .feedback) try container.encodeIfPresent(feedback, forKey: .feedback)
try container.encodeIfPresent(text, forKey: .text) try container.encodeIfPresent(text, forKey: .text)
try container.encodeIfPresent(locked, forKey: .locked) try container.encodeIfPresent(locked, forKey: .locked)
try container.encodeIfPresent(showError, forKey: .showError)
try container.encodeIfPresent(selected, forKey: .selected) try container.encodeIfPresent(selected, forKey: .selected)
try container.encodeIfPresent(errorMessage, forKey: .errorMessage) try container.encodeIfPresent(errorMessage, forKey: .errorMessage)
try container.encode(enabled, forKey: .enabled) try container.encode(enabled, forKey: .enabled)