Merge branch 'bugfix/atomic-vds-selectorUpdate' into 'develop'

Updated Merged Selectors

### Summary
updated selectors for similar logic in valuechanged event 

### JIRA Ticket
https://onejira.verizon.com/browse/ONEAPP-7001

Co-authored-by: Matt Bruce <matt.bruce@verizon.com>

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1159
This commit is contained in:
Pfeil, Scott Robert 2024-07-31 00:52:13 +00:00
commit d69722c431
4 changed files with 41 additions and 57 deletions

View File

@ -65,7 +65,17 @@ import VDS
self.init(frame: .zero) self.init(frame: .zero)
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
//-------------------------------------------------- //--------------------------------------------------
@ -75,12 +85,6 @@ import VDS
toggle() toggle()
} }
open override func toggle() {
super.toggle()
viewModel.selected = isSelected
_ = FormValidator.validate(delegate: delegateObject?.formHolderDelegate)
}
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Methods // MARK: - Methods
//-------------------------------------------------- //--------------------------------------------------

View File

@ -30,26 +30,7 @@ open class RadioBoxes: VDS.RadioBoxGroup, VDSMoleculeViewProtocol {
/// The models for the molecules. /// The models for the molecules.
public var boxes: [RadioBoxModel]? public var boxes: [RadioBoxModel]?
public weak var radioDelegate: RadioBoxSelectionDelegate? public weak var radioDelegate: RadioBoxSelectionDelegate?
// TODO: this matches the current accessibility however not what was passed by Barbara's team.
// open override var items: [RadioBoxItem] {
// didSet {
// let total = items.count
// for (index, radioBoxItem) in items.enumerated() {
// radioBoxItem.selectorView.bridge_accessibilityValueBlock = {
// guard let format = MVMCoreUIUtility.hardcodedString(withKey: "index_string_of_total"),
// let indexString = MVMCoreUIUtility.getOrdinalString(forIndex: NSNumber(value: index + 1)) else { return ""}
// return String(format: format, indexString, total)
// }
// }
// }
// }
open override func setup() {
super.setup()
}
// MARK: - MoleculeViewProtocol // MARK: - MoleculeViewProtocol
public func viewModelDidUpdate() { public func viewModelDidUpdate() {
boxes = viewModel.boxes boxes = viewModel.boxes
@ -66,7 +47,7 @@ open class RadioBoxes: VDS.RadioBoxGroup, VDSMoleculeViewProtocol {
// since the boxes has the state being tracked, we need to update the values here. // since the boxes has the state being tracked, we need to update the values here.
if let index = items.firstIndex(where: {$0 === selectedControl}), let selectedBox = boxes?[index] { if let index = items.firstIndex(where: {$0 === selectedControl}), let selectedBox = boxes?[index] {
boxes?.forEach {$0.selected = false } boxes?.forEach { $0.selected = false }
selectedBox.selected = true selectedBox.selected = true
_ = FormValidator.validate(delegate: delegateObject?.formHolderDelegate) _ = FormValidator.validate(delegate: delegateObject?.formHolderDelegate)
radioDelegate?.selected(radioBox: selectedBox) radioDelegate?.selected(radioBox: selectedBox)

View File

@ -26,15 +26,6 @@ import VDS
open var fieldValue: JSONValue? open var fieldValue: JSONValue?
open var groupName: String? open var groupName: String?
open override var isSelected: Bool {
didSet {
viewModel.state = isSelected
if oldValue != isSelected {
sendActions(for: .valueChanged)
}
}
}
lazy public var radioGroupName: String? = { viewModel.fieldKey }() lazy public var radioGroupName: String? = { viewModel.fieldKey }()
lazy public var radioButtonSelectionHelper: RadioButtonSelectionHelper? = { lazy public var radioButtonSelectionHelper: RadioButtonSelectionHelper? = {
@ -85,8 +76,18 @@ import VDS
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Lifecycle // MARK: - Lifecycle
//-------------------------------------------------- //--------------------------------------------------
public func viewModelDidUpdate() { open override func setup() {
super.setup()
publisher(for: .valueChanged)
.sink { [weak self] control in
guard let self, isEnabled else { return }
viewModel?.state = isSelected
_ = FormValidator.validate(delegate: delegateObject?.formHolderDelegate)
}.store(in: &subscribers)
}
open func viewModelDidUpdate() {
//events //events
viewModel.updateUI = { viewModel.updateUI = {
@ -119,7 +120,7 @@ import VDS
if let radioButtonSelectionHelper { if let radioButtonSelectionHelper {
radioButtonSelectionHelper.selected(self) radioButtonSelectionHelper.selected(self)
} else { } else {
isSelected = !isSelected isSelected.toggle()
} }
if let actionModel = viewModel.action, isSelected, !wasPreviouslySelected { if let actionModel = viewModel.action, isSelected, !wasPreviouslySelected {
@ -127,7 +128,7 @@ import VDS
try await Button.performButtonAction(with: actionModel, button: self, delegateObject: delegateObject, additionalData: additionalData, sourceModel: viewModel) try await Button.performButtonAction(with: actionModel, button: self, delegateObject: delegateObject, additionalData: additionalData, sourceModel: viewModel)
} }
} }
_ = FormValidator.validate(delegate: delegateObject?.formHolderDelegate) sendActions(for: .valueChanged)
setNeedsUpdate() setNeedsUpdate()
} }

View File

@ -20,21 +20,21 @@ import VDS
var fieldValue: JSONValue? var fieldValue: JSONValue?
var groupName: String? var groupName: String?
private var updateSelectionOnly: Bool = false
override open var isSelected: Bool {
didSet {
if !updateSelectionOnly {
viewModel.checkbox.selected = isSelected
_ = FormValidator.validate(delegate: delegateObject?.formHolderDelegate)
}
}
}
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Life Cycle // MARK: - Life Cycle
//-------------------------------------------------- //--------------------------------------------------
@objc open func updateView(_ size: CGFloat) {}
open override func setup() {
super.setup()
publisher(for: .valueChanged)
.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,11 +73,7 @@ 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
if viewModel.checkbox.selected { isSelected = viewModel.checkbox.selected
updateSelectionOnly = false
isSelected = viewModel.checkbox.selected
updateSelectionOnly = true
}
//events //events
viewModel.checkbox.updateUI = { viewModel.checkbox.updateUI = {
@ -106,6 +102,8 @@ import VDS
} }
@objc open func updateView(_ size: CGFloat) {}
open class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? { open class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
return 200 return 200
} }