Merge branch 'bugfix/vds-update' into 'develop'

Merge of release/20_1 and bugfix

### Summary
VDS Bugfix for new Generics plus all of the release/20_1 code that hasn't been merged down into develop.

Co-authored-by: Matt Bruce <matt.bruce@verizon.com>
Co-authored-by: Pfeil, Scott Robert <scott.pfeil3@verizonwireless.com>

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1170
This commit is contained in:
Hedden, Kyle Matthew 2024-08-12 13:21:53 +00:00
commit 236a1969e9
6 changed files with 48 additions and 40 deletions

View File

@ -29,17 +29,30 @@ open class ItemDropdownEntryField: VDS.DropdownSelect, VDSMoleculeViewProtocol,
} }
private var isEditting: Bool = false 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 // MARK: - Properties
//-------------------------------------------------- //--------------------------------------------------
public var isValid: Bool = true public var isValid: Bool = true
/// Closure passed here will run as picker changes items. /// 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. /// 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. /// When selecting for first responder, allow initial selected value to appear in empty text field.
public var setInitialValueInTextField = true public var setInitialValueInTextField = true
@ -184,7 +197,7 @@ open class ItemDropdownEntryField: VDS.DropdownSelect, VDSMoleculeViewProtocol,
} }
} }
public func updateView(_ size: CGFloat) { } public func updateView(_ size: CGFloat) { }
/// Sets the textField with the first value of the available picker data. /// 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) let pickerIndex = optionsPicker.selectedRow(inComponent: 0)
viewModel.selectedIndex = pickerIndex viewModel.selectedIndex = pickerIndex
selectId = pickerIndex selectId = pickerIndex
observeDropdownChange?(selectedItem?.text, pickerData[pickerIndex])
} }
} }

View File

@ -17,7 +17,7 @@ import VDS
public var options: [String] = [] public var options: [String] = []
public var selectedIndex: Int? public var selectedIndex: Int?
public var showInlineLabel: Bool = false public var showInlineLabel: Bool = false
public var feedbackTextPlacement: VDS.EntryFieldBase.HelperTextPlacement = .bottom public var feedbackTextPlacement: VDS.DropdownSelect.HelperTextPlacement = .bottom
public init(with options: [String], selectedIndex: Int? = nil) { public init(with options: [String], selectedIndex: Int? = nil) {
self.options = options self.options = options

View File

@ -38,6 +38,13 @@ import VDS
} }
} }
override open var isSelected: Bool {
didSet {
viewModel?.selected = isSelected
_ = FormValidator.validate(delegate: delegateObject?.formHolderDelegate)
}
}
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Initializers // MARK: - Initializers
//-------------------------------------------------- //--------------------------------------------------
@ -66,16 +73,6 @@ import VDS
isSelected = isChecked isSelected = isChecked
} }
open override func setup() {
super.setup()
publisher(for: .valueChanged)
.sink { [weak self] control in
guard let self, isEnabled else { return }
viewModel?.selected = isSelected
_ = FormValidator.validate(delegate: delegateObject?.formHolderDelegate)
}.store(in: &subscribers)
}
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Actions // MARK: - Actions
//-------------------------------------------------- //--------------------------------------------------
@ -136,14 +133,18 @@ import VDS
//properties //properties
isEnabled = viewModel.enabled && !viewModel.readOnly isEnabled = viewModel.enabled && !viewModel.readOnly
isAnimated = viewModel.animated isAnimated = viewModel.animated
isSelected = viewModel.selected
//call super here to go around the didSet
//in this class
super.isSelected = viewModel.selected
//events //events
viewModel.updateUI = { viewModel.updateUI = {
MVMCoreDispatchUtility.performBlock(onMainThread: { [weak self] in MVMCoreDispatchUtility.performBlock(onMainThread: { [weak self] in
guard let self = self else { return } guard let self = self else { return }
let isValid = viewModel.isValid ?? true let isValid = viewModel.isValid ?? true
showError = !isValid //TODO: Fix issue with default state
//showError = !isValid
isEnabled = viewModel.enabled isEnabled = viewModel.enabled
}) })

View File

@ -144,11 +144,6 @@ import VDS
//-------------------------------------------------- //--------------------------------------------------
// MARK: - MoleculeViewProtocol // MARK: - MoleculeViewProtocol
//-------------------------------------------------- //--------------------------------------------------
open func needsToBeConstrained() -> Bool { true }
public func horizontalAlignment() -> UIStackView.Alignment { .leading }
public func updateView(_ size: CGFloat) {} public func updateView(_ size: CGFloat) {}
} }

View File

@ -19,22 +19,14 @@ import VDS
var fieldKey: String? var fieldKey: String?
var fieldValue: JSONValue? var fieldValue: JSONValue?
var groupName: String? var groupName: String?
//--------------------------------------------------
// MARK: - Life Cycle
//--------------------------------------------------
open override func setup() { override open var isSelected: Bool {
super.setup() didSet {
viewModel?.checkbox.selected = isSelected
publisher(for: .valueChanged) _ = FormValidator.validate(delegate: delegateObject?.formHolderDelegate)
.sink { [weak self] control in }
guard let self, isEnabled else { return }
viewModel?.checkbox.selected = isSelected
_ = FormValidator.validate(delegate: delegateObject?.formHolderDelegate)
}.store(in: &subscribers)
} }
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Atomic // MARK: - Atomic
//-------------------------------------------------- //--------------------------------------------------
@ -73,14 +65,18 @@ import VDS
//properties //properties
isAnimated = viewModel.checkbox.animated isAnimated = viewModel.checkbox.animated
isEnabled = viewModel.checkbox.enabled && !viewModel.checkbox.readOnly isEnabled = viewModel.checkbox.enabled && !viewModel.checkbox.readOnly
isSelected = viewModel.checkbox.selected
//call super here to go around the didSet
//in this class
super.isSelected = viewModel.checkbox.selected
//events //events
viewModel.checkbox.updateUI = { viewModel.checkbox.updateUI = {
MVMCoreDispatchUtility.performBlock(onMainThread: { [weak self] in MVMCoreDispatchUtility.performBlock(onMainThread: { [weak self] in
guard let self = self else { return } guard let self = self else { return }
let isValid = viewModel.checkbox.isValid ?? true let isValid = viewModel.checkbox.isValid ?? true
showError = !isValid //TODO: Fix issue with default state
//showError = !isValid
errorText = viewModel.checkbox.errorMessage errorText = viewModel.checkbox.errorMessage
isEnabled = viewModel.checkbox.enabled isEnabled = viewModel.checkbox.enabled
}) })

View File

@ -38,5 +38,9 @@ extension VDSMoleculeViewProtocol {
public func update(viewModel: ViewModel){ public func update(viewModel: ViewModel){
set(with: viewModel, delegateObject, additionalData) set(with: viewModel, delegateObject, additionalData)
} }
public func updateView(_ size: CGFloat) { }
public static func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? { 44 }
} }