refactored radio button
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
b0ae07fd69
commit
8e4d4d6ded
@ -40,6 +40,8 @@
|
|||||||
EA3C3B4C2894823E000CA526 /* AnyProxy-PropertyWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA3C3B4B2894823E000CA526 /* AnyProxy-PropertyWrapper.swift */; };
|
EA3C3B4C2894823E000CA526 /* AnyProxy-PropertyWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA3C3B4B2894823E000CA526 /* AnyProxy-PropertyWrapper.swift */; };
|
||||||
EAB1D29428A3ECF700DAE764 /* SelectorGroupBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F13028A17FAB00B287F5 /* SelectorGroupBase.swift */; };
|
EAB1D29428A3ECF700DAE764 /* SelectorGroupBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F13028A17FAB00B287F5 /* SelectorGroupBase.swift */; };
|
||||||
EAB1D29A28A5611D00DAE764 /* SelectorGroupModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D29928A5611D00DAE764 /* SelectorGroupModel.swift */; };
|
EAB1D29A28A5611D00DAE764 /* SelectorGroupModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D29928A5611D00DAE764 /* SelectorGroupModel.swift */; };
|
||||||
|
EAB1D29C28A5618900DAE764 /* RadioButtonGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D29B28A5618900DAE764 /* RadioButtonGroup.swift */; };
|
||||||
|
EAB1D29E28A5619500DAE764 /* RadioButtonGroupModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D29D28A5619500DAE764 /* RadioButtonGroupModel.swift */; };
|
||||||
EAF7F0952899861000B287F5 /* Checkbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0932899861000B287F5 /* Checkbox.swift */; };
|
EAF7F0952899861000B287F5 /* Checkbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0932899861000B287F5 /* Checkbox.swift */; };
|
||||||
EAF7F0962899861000B287F5 /* CheckboxModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0942899861000B287F5 /* CheckboxModel.swift */; };
|
EAF7F0962899861000B287F5 /* CheckboxModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0942899861000B287F5 /* CheckboxModel.swift */; };
|
||||||
EAF7F09A2899B17200B287F5 /* CATransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0992899B17200B287F5 /* CATransaction.swift */; };
|
EAF7F09A2899B17200B287F5 /* CATransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0992899B17200B287F5 /* CATransaction.swift */; };
|
||||||
@ -116,6 +118,8 @@
|
|||||||
EA33624628931B050071C351 /* Initable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Initable.swift; sourceTree = "<group>"; };
|
EA33624628931B050071C351 /* Initable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Initable.swift; sourceTree = "<group>"; };
|
||||||
EA3C3B4B2894823E000CA526 /* AnyProxy-PropertyWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AnyProxy-PropertyWrapper.swift"; sourceTree = "<group>"; };
|
EA3C3B4B2894823E000CA526 /* AnyProxy-PropertyWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AnyProxy-PropertyWrapper.swift"; sourceTree = "<group>"; };
|
||||||
EAB1D29928A5611D00DAE764 /* SelectorGroupModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectorGroupModel.swift; sourceTree = "<group>"; };
|
EAB1D29928A5611D00DAE764 /* SelectorGroupModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectorGroupModel.swift; sourceTree = "<group>"; };
|
||||||
|
EAB1D29B28A5618900DAE764 /* RadioButtonGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioButtonGroup.swift; sourceTree = "<group>"; };
|
||||||
|
EAB1D29D28A5619500DAE764 /* RadioButtonGroupModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioButtonGroupModel.swift; sourceTree = "<group>"; };
|
||||||
EAF7F0932899861000B287F5 /* Checkbox.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Checkbox.swift; sourceTree = "<group>"; };
|
EAF7F0932899861000B287F5 /* Checkbox.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Checkbox.swift; sourceTree = "<group>"; };
|
||||||
EAF7F0942899861000B287F5 /* CheckboxModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheckboxModel.swift; sourceTree = "<group>"; };
|
EAF7F0942899861000B287F5 /* CheckboxModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheckboxModel.swift; sourceTree = "<group>"; };
|
||||||
EAF7F0992899B17200B287F5 /* CATransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CATransaction.swift; sourceTree = "<group>"; };
|
EAF7F0992899B17200B287F5 /* CATransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CATransaction.swift; sourceTree = "<group>"; };
|
||||||
@ -369,6 +373,8 @@
|
|||||||
children = (
|
children = (
|
||||||
EAF7F11528A1475A00B287F5 /* RadioButton.swift */,
|
EAF7F11528A1475A00B287F5 /* RadioButton.swift */,
|
||||||
EAF7F11628A1475A00B287F5 /* RadioButtonModel.swift */,
|
EAF7F11628A1475A00B287F5 /* RadioButtonModel.swift */,
|
||||||
|
EAB1D29B28A5618900DAE764 /* RadioButtonGroup.swift */,
|
||||||
|
EAB1D29D28A5619500DAE764 /* RadioButtonGroupModel.swift */,
|
||||||
);
|
);
|
||||||
path = RadioButton;
|
path = RadioButton;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -524,6 +530,7 @@
|
|||||||
EAF7F0B9289C139800B287F5 /* ColorConfiguration.swift in Sources */,
|
EAF7F0B9289C139800B287F5 /* ColorConfiguration.swift in Sources */,
|
||||||
EA3361BD288B2C760071C351 /* TypeAlias.swift in Sources */,
|
EA3361BD288B2C760071C351 /* TypeAlias.swift in Sources */,
|
||||||
EAF7F09A2899B17200B287F5 /* CATransaction.swift in Sources */,
|
EAF7F09A2899B17200B287F5 /* CATransaction.swift in Sources */,
|
||||||
|
EAB1D29E28A5619500DAE764 /* RadioButtonGroupModel.swift in Sources */,
|
||||||
EAF7F0A2289AFB3900B287F5 /* Errorable.swift in Sources */,
|
EAF7F0A2289AFB3900B287F5 /* Errorable.swift in Sources */,
|
||||||
EA3C3B4C2894823E000CA526 /* AnyProxy-PropertyWrapper.swift in Sources */,
|
EA3C3B4C2894823E000CA526 /* AnyProxy-PropertyWrapper.swift in Sources */,
|
||||||
EA3361AF288B26310071C351 /* FormFieldable.swift in Sources */,
|
EA3361AF288B26310071C351 /* FormFieldable.swift in Sources */,
|
||||||
@ -533,6 +540,7 @@
|
|||||||
EAF7F09E289AAEC000B287F5 /* Constants.swift in Sources */,
|
EAF7F09E289AAEC000B287F5 /* Constants.swift in Sources */,
|
||||||
EA3361B3288B265D0071C351 /* Changable.swift in Sources */,
|
EA3361B3288B265D0071C351 /* Changable.swift in Sources */,
|
||||||
EAF7F0AB289B13FD00B287F5 /* LabelAttributeFont.swift in Sources */,
|
EAF7F0AB289B13FD00B287F5 /* LabelAttributeFont.swift in Sources */,
|
||||||
|
EAB1D29C28A5618900DAE764 /* RadioButtonGroup.swift in Sources */,
|
||||||
EA336171288B19200071C351 /* VDS.docc in Sources */,
|
EA336171288B19200071C351 /* VDS.docc in Sources */,
|
||||||
EAF7F0962899861000B287F5 /* CheckboxModel.swift in Sources */,
|
EAF7F0962899861000B287F5 /* CheckboxModel.swift in Sources */,
|
||||||
EA3361AA288B25E40071C351 /* Disabling.swift in Sources */,
|
EA3361AA288B25E40071C351 /* Disabling.swift in Sources */,
|
||||||
|
|||||||
@ -12,46 +12,6 @@ import VDSFormControlsTokens
|
|||||||
|
|
||||||
public class RadioButton: RadioButtonBase<DefaultRadioButtonModel>{}
|
public class RadioButton: RadioButtonBase<DefaultRadioButtonModel>{}
|
||||||
|
|
||||||
public struct RadioButtonGroupModel: SelectorGroupModel{
|
|
||||||
public typealias SelectorType = DefaultRadioButtonModel
|
|
||||||
public var id: UUID = UUID()
|
|
||||||
public var inputId: String?
|
|
||||||
public var value: AnyHashable?
|
|
||||||
public var surface: Surface = .light
|
|
||||||
public var disabled: Bool = false
|
|
||||||
public var selectors: [SelectorType]
|
|
||||||
public init() { selectors = [] }
|
|
||||||
public init(selectors: [SelectorType]){
|
|
||||||
self.selectors = selectors
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class RadioButtonGroup: SelectorGroupBase<DefaultRadioButtonModel, RadioButtonGroupModel, RadioButton> {
|
|
||||||
|
|
||||||
public override func didSelect(selected: DefaultRadioButtonModel) {
|
|
||||||
for selectorModel in model.selectors {
|
|
||||||
print("Pre Cached Selector: \(selectorModel.inputId): \(selectorModel.selected)")
|
|
||||||
}
|
|
||||||
|
|
||||||
if var oldSelectedModel = selectedModel {
|
|
||||||
oldSelectedModel.selected = false
|
|
||||||
replace(viewModel: oldSelectedModel)
|
|
||||||
}
|
|
||||||
|
|
||||||
var newSelectedModel = selected
|
|
||||||
newSelectedModel.selected = true
|
|
||||||
replace(viewModel: newSelectedModel)
|
|
||||||
|
|
||||||
selectedModel = newSelectedModel
|
|
||||||
|
|
||||||
for selectorModel in model.selectors {
|
|
||||||
print("Post Cached Selector: \(selectorModel.inputId): \(selectorModel.selected)")
|
|
||||||
}
|
|
||||||
|
|
||||||
print("\n")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
open class RadioButtonBase<ModelType: RadioButtonModel>: SelectorBase<ModelType> {
|
open class RadioButtonBase<ModelType: RadioButtonModel>: SelectorBase<ModelType> {
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|||||||
36
VDS/Components/RadioButton/RadioButtonGroup.swift
Normal file
36
VDS/Components/RadioButton/RadioButtonGroup.swift
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
//
|
||||||
|
// RadioButtonGroup.swift
|
||||||
|
// VDS
|
||||||
|
//
|
||||||
|
// Created by Matt Bruce on 8/11/22.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
public class RadioButtonGroup: RadioButtonGroupBase<DefaultRadioButtonGroupModel, RadioButton> {}
|
||||||
|
|
||||||
|
public class RadioButtonGroupBase<RadioButtonGroupModelType: SelectorGroupModel, RadioButtonType: RadioButtonBase<RadioButtonGroupModelType.SelectorType>>: SelectorGroupBase<RadioButtonGroupModelType.SelectorType, RadioButtonGroupModelType, RadioButtonType> {
|
||||||
|
|
||||||
|
public override func didSelect(selected: RadioButtonGroupModelType.SelectorType) {
|
||||||
|
for selectorModel in model.selectors {
|
||||||
|
print("Pre Cached Selector: \(selectorModel.inputId): \(selectorModel.selected)")
|
||||||
|
}
|
||||||
|
|
||||||
|
if var oldSelectedModel = selectedModel {
|
||||||
|
oldSelectedModel.selected = false
|
||||||
|
replace(viewModel: oldSelectedModel)
|
||||||
|
}
|
||||||
|
|
||||||
|
var newSelectedModel = selected
|
||||||
|
newSelectedModel.selected = true
|
||||||
|
replace(viewModel: newSelectedModel)
|
||||||
|
|
||||||
|
selectedModel = newSelectedModel
|
||||||
|
|
||||||
|
for selectorModel in model.selectors {
|
||||||
|
print("Post Cached Selector: \(selectorModel.inputId): \(selectorModel.selected)")
|
||||||
|
}
|
||||||
|
|
||||||
|
print("\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
22
VDS/Components/RadioButton/RadioButtonGroupModel.swift
Normal file
22
VDS/Components/RadioButton/RadioButtonGroupModel.swift
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
//
|
||||||
|
// RadioButtonGroupModel.swift
|
||||||
|
// VDS
|
||||||
|
//
|
||||||
|
// Created by Matt Bruce on 8/11/22.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
public struct DefaultRadioButtonGroupModel: SelectorGroupModel{
|
||||||
|
public typealias SelectorType = DefaultRadioButtonModel
|
||||||
|
public var id: UUID = UUID()
|
||||||
|
public var inputId: String?
|
||||||
|
public var value: AnyHashable?
|
||||||
|
public var surface: Surface = .light
|
||||||
|
public var disabled: Bool = false
|
||||||
|
public var selectors: [SelectorType]
|
||||||
|
public init() { selectors = [] }
|
||||||
|
public init(selectors: [SelectorType]){
|
||||||
|
self.selectors = selectors
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -9,7 +9,7 @@ import Foundation
|
|||||||
import UIKit
|
import UIKit
|
||||||
import Combine
|
import Combine
|
||||||
|
|
||||||
open class SelectorGroupBase<SelectorType, SelectorGroupType: SelectorGroupModel<SelectorType>, SelectorHandlerType: SelectorBase<SelectorType>>: View<SelectorGroupType>, Changable {
|
open class SelectorGroupBase<SelectorType, SelectorGroupType: SelectorGroupModel, SelectorHandlerType: SelectorBase<SelectorType>>: View<SelectorGroupType>, Changable where SelectorType == SelectorGroupType.SelectorType {
|
||||||
|
|
||||||
public var selectorViews: [SelectorHandlerType] = []
|
public var selectorViews: [SelectorHandlerType] = []
|
||||||
public var selectedModel: SelectorType?
|
public var selectedModel: SelectorType?
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user