From 2e1e5772d7d9c51e40c2336ad77b51377e6b06ef Mon Sep 17 00:00:00 2001 From: Kevin G Christiano Date: Mon, 15 Feb 2021 09:18:20 -0500 Subject: [PATCH] current --- .../BaseItemPickerEntryField.swift | 28 +++++++++++++++++++ .../ItemDropdownEntryField.swift | 16 ----------- .../MultiItemDropdownEntryField.swift | 17 ----------- .../TextFields/TextEntryField.swift | 19 ++++++++++++- .../TextFields/TextEntryFieldModel.swift | 3 +- 5 files changed, 48 insertions(+), 35 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Item Dropdown/BaseItemPickerEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Item Dropdown/BaseItemPickerEntryField.swift index 2c74abdb..d4c62591 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Item Dropdown/BaseItemPickerEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Item Dropdown/BaseItemPickerEntryField.swift @@ -50,6 +50,18 @@ open class BaseItemPickerEntryField: BaseDropdownEntryField, UIPickerViewDelegat pickerView?.dataSource = delegate } + //-------------------------------------------------- + // MARK: - Molecular + //-------------------------------------------------- + + public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) { + super.set(with: model, delegateObject, additionalData) + + guard let model = model as? BaseItemPickerEntryFieldModel else { return } + + setPickerDelegates(delegate: self) + } + //-------------------------------------------------- // MARK: - Picker Delegate to Override //-------------------------------------------------- @@ -58,3 +70,19 @@ open class BaseItemPickerEntryField: BaseDropdownEntryField, UIPickerViewDelegat public func numberOfComponents(in pickerView: UIPickerView) -> Int { 0 } } + + +// MARK: - Accessibility +extension BaseItemPickerEntryField { + + @objc open override func setAccessibilityString(_ accessibilityString: String?) { + + var accessibilityString = accessibilityString ?? "" + + if let textPickerItem = MVMCoreUIUtility.hardcodedString(withKey: "textfield_picker_item") { + accessibilityString += textPickerItem + } + + textField.accessibilityLabel = "\(accessibilityString) \(textField.isEnabled ? "" : MVMCoreUIUtility.hardcodedString(withKey: "textfield_disabled_state") ?? "")" + } +} diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Item Dropdown/ItemDropdownEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Item Dropdown/ItemDropdownEntryField.swift index 938e6a20..faecff4c 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Item Dropdown/ItemDropdownEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Item Dropdown/ItemDropdownEntryField.swift @@ -83,7 +83,6 @@ open class ItemDropdownEntryField: BaseItemPickerEntryField { guard let model = model as? ItemDropdownEntryFieldModel else { return } pickerData = model.options - setPickerDelegates(delegate: self) if let pickerView = pickerView, let index = model.selectedIndex { self.pickerView(pickerView, didSelectRow: index, inComponent: 0) @@ -114,18 +113,3 @@ open class ItemDropdownEntryField: BaseItemPickerEntryField { itemDropdownEntryFieldModel?.selectedIndex = row } } - -// MARK: - Accessibility -extension ItemDropdownEntryField { - - @objc open override func setAccessibilityString(_ accessibilityString: String?) { - - var accessibilityString = accessibilityString ?? "" - - if let textPickerItem = MVMCoreUIUtility.hardcodedString(withKey: "textfield_picker_item") { - accessibilityString += textPickerItem - } - - textField.accessibilityLabel = "\(accessibilityString) \(textField.isEnabled ? "" : MVMCoreUIUtility.hardcodedString(withKey: "textfield_disabled_state") ?? "")" - } -} diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Item Dropdown/MultiItemDropdownEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Item Dropdown/MultiItemDropdownEntryField.swift index 860cee6a..55aa6855 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Item Dropdown/MultiItemDropdownEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/Dropdown Fields/Item Dropdown/MultiItemDropdownEntryField.swift @@ -100,8 +100,6 @@ open class MultiItemDropdownEntryField: BaseItemPickerEntryField { guard let model = model as? MultiItemDropdownEntryFieldModel else { return } - setPickerDelegates(delegate: self) - if let pickerView = pickerView { for (component, index) in model.selectedIndexes { self.pickerView(pickerView, didSelectRow: index, inComponent: component) @@ -140,18 +138,3 @@ open class MultiItemDropdownEntryField: BaseItemPickerEntryField { dropdownModel?.selectedIndexes[component] = row } } - -// MARK: - Accessibility -extension MultiItemDropdownEntryField { - - @objc open override func setAccessibilityString(_ accessibilityString: String?) { - - var accessibilityString = accessibilityString ?? "" - - if let textPickerItem = MVMCoreUIUtility.hardcodedString(withKey: "textfield_picker_item") { - accessibilityString += textPickerItem - } - - textField.accessibilityLabel = "\(accessibilityString) \(textField.isEnabled ? "" : MVMCoreUIUtility.hardcodedString(withKey: "textfield_disabled_state") ?? "")" - } -} diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift index 50aa5fbf..e961eddd 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift @@ -96,8 +96,25 @@ import UIKit open override var text: String? { get { textField.text } set { - textField.text = newValue textEntryFieldModel?.text = newValue + + if let regex = textEntryFieldModel?.displayFormat, + let mask = textEntryFieldModel?.displayMask, + let newText = newValue { + + let range = NSRange(newText.startIndex..., in: newText) + + if let regex = try? NSRegularExpression(pattern: regex) { + let afterText = regex.stringByReplacingMatches(in: newText, + range: range, + withTemplate: mask + ) + print(afterText) + } + + } else { + textField.text = newValue + } } } diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift index 141ab048..2eaed585 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift @@ -35,7 +35,8 @@ public var keyboardOverride: String? public var type: EntryType? public var clearTextOnTap: Bool = false - public var displayFormat: String? + public var displayFormat: String? = "(?=\\d{5})\\d" + public var displayMask: String? = "•" //-------------------------------------------------- // MARK: - Methods