From 3732f98d7c99b270abf4af4f0cb4b562a9955410 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 1 Aug 2024 10:53:14 -0500 Subject: [PATCH 1/3] added override property to deal with oldvalue/newValue for the selected Item. Signed-off-by: Matt Bruce --- .../Item Dropdown/ItemDropdownEntryField.swift | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) 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 0986a092..819a7b19 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 @@ -29,7 +29,20 @@ open class ItemDropdownEntryField: VDS.DropdownSelect, VDSMoleculeViewProtocol, } private var isEditting: Bool = false - + + //override for to deal with getting the + //old selectedItem to pass down to the observeDropdownChange + open override var selectId: Int? { + didSet { + guard let observeDropdownChange, let selectedItem else { return } + var oldSelectedItem: DropdownOptionModel? + if let oldValue { + oldSelectedItem = options[oldValue] + } + observeDropdownChange(oldSelectedItem?.text, selectedItem.text) + } + } + //-------------------------------------------------- // MARK: - Properties //-------------------------------------------------- @@ -184,7 +197,7 @@ open class ItemDropdownEntryField: VDS.DropdownSelect, VDSMoleculeViewProtocol, } } - + public func updateView(_ size: CGFloat) { } /// Sets the textField with the first value of the available picker data. @@ -196,7 +209,6 @@ open class ItemDropdownEntryField: VDS.DropdownSelect, VDSMoleculeViewProtocol, let pickerIndex = optionsPicker.selectedRow(inComponent: 0) viewModel.selectedIndex = pickerIndex selectId = pickerIndex - observeDropdownChange?(selectedItem?.text, pickerData[pickerIndex]) } } From ab5a5a1e557a6d9df217195958fa2e659bb2bd4f Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 1 Aug 2024 10:55:48 -0500 Subject: [PATCH 2/3] added placeholder in delegates so you can understand what is passed back Signed-off-by: Matt Bruce --- .../Item Dropdown/ItemDropdownEntryField.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 819a7b19..dee7916b 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 @@ -49,10 +49,10 @@ open class ItemDropdownEntryField: VDS.DropdownSelect, VDSMoleculeViewProtocol, public var isValid: Bool = true /// Closure passed here will run as picker changes items. - public var observeDropdownChange: ((String?, String) -> ())? + public var observeDropdownChange: ((_ oldValue: String?, _ newValue: String) -> ())? /// Closure passed here will run upon dismissing the selection picker. - public var observeDropdownSelection: ((String) -> ())? + public var observeDropdownSelection: ((_ newValue: String) -> ())? /// When selecting for first responder, allow initial selected value to appear in empty text field. public var setInitialValueInTextField = true From c2cb8781d69514ad04cb4f1518b203514b7526a2 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 1 Aug 2024 15:18:33 -0500 Subject: [PATCH 3/3] ensured all vds components have the estimated height implementation Signed-off-by: Matt Bruce --- MVMCoreUI/Atomic/Protocols/VDSMoleculeViewProtocol.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/MVMCoreUI/Atomic/Protocols/VDSMoleculeViewProtocol.swift b/MVMCoreUI/Atomic/Protocols/VDSMoleculeViewProtocol.swift index 4bebf0c7..2bb95c43 100644 --- a/MVMCoreUI/Atomic/Protocols/VDSMoleculeViewProtocol.swift +++ b/MVMCoreUI/Atomic/Protocols/VDSMoleculeViewProtocol.swift @@ -38,5 +38,9 @@ extension VDSMoleculeViewProtocol { public func update(viewModel: ViewModel){ set(with: viewModel, delegateObject, additionalData) } + + public func updateView(_ size: CGFloat) { } + + public static func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? { 44 } }