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 faecff4c..a63ea57f 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 @@ -85,6 +85,7 @@ open class ItemDropdownEntryField: BaseItemPickerEntryField { pickerData = model.options if let pickerView = pickerView, let index = model.selectedIndex { + self.pickerView?.selectRow(index, inComponent: 0, animated: false) self.pickerView(pickerView, didSelectRow: index, inComponent: 0) } } 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 a2f90ee2..7a493075 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 @@ -106,6 +106,7 @@ open class MultiItemDropdownEntryField: BaseItemPickerEntryField { if let pickerView = pickerView { // Select initial rows if selectedIndexes retains value. for (component, row) in model.selectedIndexes { + self.pickerView?.selectRow(row, inComponent: component, animated: false) self.pickerView(pickerView, didSelectRow: row, inComponent: component) } } @@ -133,12 +134,13 @@ open class MultiItemDropdownEntryField: BaseItemPickerEntryField { @objc public func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { guard !pickerComponents.isEmpty, - !pickerComponents[component].isEmpty, - let rowText = dropdownModel?.selectedRowText + !pickerComponents[component].isEmpty else { return } - observeDropdownChange?(text ?? "", rowText) - text = rowText + let oldText = text ?? "" dropdownModel?.selectedIndexes[component] = row + let newText = dropdownModel?.selectedRowText + observeDropdownChange?(oldText, newText ?? "") + text = newText } } diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift index 2eaed585..ca7543bd 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift @@ -35,8 +35,8 @@ public var keyboardOverride: String? public var type: EntryType? public var clearTextOnTap: Bool = false - public var displayFormat: String? = "(?=\\d{5})\\d" - public var displayMask: String? = "•" + public var displayFormat: String? + public var displayMask: String? //-------------------------------------------------- // MARK: - Methods @@ -103,6 +103,7 @@ case type case clearTextOnTap case displayFormat + case displayMask } //-------------------------------------------------- @@ -116,6 +117,7 @@ placeholder = try typeContainer.decodeIfPresent(String.self, forKey: .placeholder) displayFormat = try typeContainer.decodeIfPresent(String.self, forKey: .displayFormat) keyboardOverride = try typeContainer.decodeIfPresent(String.self, forKey: .keyboardOverride) + displayMask = try typeContainer.decodeIfPresent(String.self, forKey: .displayMask) type = try typeContainer.decodeIfPresent(EntryType.self, forKey: .type) if let clearTextOnTap = try typeContainer.decodeIfPresent(Bool.self, forKey: .clearTextOnTap) { @@ -143,6 +145,7 @@ try container.encodeIfPresent(type, forKey: .type) try container.encodeIfPresent(displayFormat, forKey: .displayFormat) try container.encodeIfPresent(keyboardOverride, forKey: .keyboardOverride) + try container.encodeIfPresent(displayMask, forKey: .displayMask) try container.encode(enabledTextColor, forKey: .enabledTextColor) try container.encode(disabledTextColor, forKey: .disabledTextColor) try container.encode(clearTextOnTap, forKey: .clearTextOnTap)