refactored to use modelHandler instead direct model change

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2022-09-12 15:51:20 -05:00
parent 6b16782b6c
commit 421ea78991
4 changed files with 26 additions and 45 deletions

View File

@ -10,16 +10,10 @@ import UIKit
public class CheckboxGroup: CheckboxGroupBase<DefaultCheckboxGroupModel, Checkbox> { public class CheckboxGroup: CheckboxGroupBase<DefaultCheckboxGroupModel, Checkbox> {
public override func didSelect(_ selectedControl: Checkbox) { public override func didSelect(_ selectedControl: Checkbox) {
for (index, control) in selectorViews.enumerated() { selectedControl.toggle()
//only change the old and new DispatchQueue.main.asyncAfter(deadline: .now() + Constants.ModelStateDebounce) { [weak self] in
if control == selectedControl { self?.sendActions(for: .valueChanged)
let updated = model.selectors[index].copyWith {
$0.selected.toggle()
}
model.selectors[index] = updated
}
} }
sendActions(for: .valueChanged)
} }
} }

View File

@ -11,23 +11,12 @@ import UIKit
public class RadioBoxGroup: RadioBoxGroupBase<DefaultRadioBoxGroupModel, RadioBox> { public class RadioBoxGroup: RadioBoxGroupBase<DefaultRadioBoxGroupModel, RadioBox> {
public override func didSelect(_ selectedControl: RadioBox) { public override func didSelect(_ selectedControl: RadioBox) {
for (index, control) in selectorViews.enumerated() { let oldSelectedControl = selectorViews.filter { $0.isSelected == true }.first
//only change the old and new oldSelectedControl?.toggle()
if control == selectedControl { selectedControl.toggle()
let updated = model.selectors[index].copyWith { DispatchQueue.main.asyncAfter(deadline: .now() + Constants.ModelStateDebounce) { [weak self] in
$0.selected = true self?.sendActions(for: .valueChanged)
}
model.selectors[index] = updated
} else if control.isSelected {
let updated = model.selectors[index].copyWith {
$0.selected = false
}
model.selectors[index] = updated
}
} }
sendActions(for: .valueChanged)
} }
} }

View File

@ -10,7 +10,16 @@ import UIKit
import VDSColorTokens import VDSColorTokens
import VDSFormControlsTokens import VDSFormControlsTokens
public class RadioButton: RadioButtonBase<DefaultRadioButtonModel>{ } public class RadioButton: RadioButtonBase<DefaultRadioButtonModel>{
//for groups allows "toggle"
open override func toggle() {
//removed error
if hasError && isSelected == false {
hasError.toggle()
}
isSelected.toggle()
}
}
public class SoloRadioButton: RadioButtonBase<DefaultRadioButtonModel>{ public class SoloRadioButton: RadioButtonBase<DefaultRadioButtonModel>{
public override func initialSetup() { public override func initialSetup() {

View File

@ -11,26 +11,15 @@ import UIKit
public class RadioButtonGroup: RadioButtonGroupBase<DefaultRadioButtonGroupModel, RadioButton> { public class RadioButtonGroup: RadioButtonGroupBase<DefaultRadioButtonGroupModel, RadioButton> {
public override func didSelect(_ selectedControl: RadioButton) { public override func didSelect(_ selectedControl: RadioButton) {
for (index, control) in selectorViews.enumerated() { let oldSelectedControl = selectorViews.filter { $0.isSelected == true }.first
//only change the old and new oldSelectedControl?.toggle()
if control == selectedControl { selectedControl.toggle()
let updated = model.selectors[index].copyWith { if hasError {
$0.selected = true hasError = false
} }
model.selectors[index] = updated DispatchQueue.main.asyncAfter(deadline: .now() + Constants.ModelStateDebounce) { [weak self] in
if hasError { self?.sendActions(for: .valueChanged)
hasError = false
}
} else if control.isSelected {
let updated = model.selectors[index].copyWith {
$0.selected = false
}
model.selectors[index] = updated
}
} }
sendActions(for: .valueChanged)
} }
} }