Added checkbox group
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
eac716afd2
commit
3eb19646c8
@ -39,6 +39,8 @@
|
||||
EA3C3B4C2894823E000CA526 /* AnyProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA3C3B4B2894823E000CA526 /* AnyProxy.swift */; };
|
||||
EA89200228AECF2A006B9984 /* UIButton+Publisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89200128AECF2A006B9984 /* UIButton+Publisher.swift */; };
|
||||
EA89200428AECF4B006B9984 /* UITextField+Publisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89200328AECF4B006B9984 /* UITextField+Publisher.swift */; };
|
||||
EA89200628B526D6006B9984 /* CheckboxGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89200528B526D6006B9984 /* CheckboxGroup.swift */; };
|
||||
EA89200828B526E0006B9984 /* CheckboxGroupModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89200728B526E0006B9984 /* CheckboxGroupModel.swift */; };
|
||||
EAB1D29428A3ECF700DAE764 /* SelectorGroupBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F13028A17FAB00B287F5 /* SelectorGroupBase.swift */; };
|
||||
EAB1D29A28A5611D00DAE764 /* SelectorGroupModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D29928A5611D00DAE764 /* SelectorGroupModel.swift */; };
|
||||
EAB1D29C28A5618900DAE764 /* RadioButtonGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D29B28A5618900DAE764 /* RadioButtonGroup.swift */; };
|
||||
@ -124,6 +126,8 @@
|
||||
EA3C3B4B2894823E000CA526 /* AnyProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyProxy.swift; sourceTree = "<group>"; };
|
||||
EA89200128AECF2A006B9984 /* UIButton+Publisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIButton+Publisher.swift"; sourceTree = "<group>"; };
|
||||
EA89200328AECF4B006B9984 /* UITextField+Publisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITextField+Publisher.swift"; sourceTree = "<group>"; };
|
||||
EA89200528B526D6006B9984 /* CheckboxGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckboxGroup.swift; sourceTree = "<group>"; };
|
||||
EA89200728B526E0006B9984 /* CheckboxGroupModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckboxGroupModel.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>"; };
|
||||
@ -392,6 +396,8 @@
|
||||
children = (
|
||||
EAF7F0932899861000B287F5 /* Checkbox.swift */,
|
||||
EAF7F0942899861000B287F5 /* CheckboxModel.swift */,
|
||||
EA89200528B526D6006B9984 /* CheckboxGroup.swift */,
|
||||
EA89200728B526E0006B9984 /* CheckboxGroupModel.swift */,
|
||||
);
|
||||
path = Checkbox;
|
||||
sourceTree = "<group>";
|
||||
@ -572,6 +578,7 @@
|
||||
EAF7F0B1289B177F00B287F5 /* LabelAttributeColor.swift in Sources */,
|
||||
EAB1D2EA28AE84AA00DAE764 /* UIControlPublisher.swift in Sources */,
|
||||
EAF7F13328A2A16500B287F5 /* LabelAttributeAttachment.swift in Sources */,
|
||||
EA89200628B526D6006B9984 /* CheckboxGroup.swift in Sources */,
|
||||
EAF7F0B9289C139800B287F5 /* ColorConfiguration.swift in Sources */,
|
||||
EA3361BD288B2C760071C351 /* TypeAlias.swift in Sources */,
|
||||
EAB1D2CF28ABEF2B00DAE764 /* Typography.swift in Sources */,
|
||||
@ -592,6 +599,7 @@
|
||||
EAB1D2E628AE842000DAE764 /* Publisher+Bind.swift in Sources */,
|
||||
EAB1D2C728A6E76300DAE764 /* ModelHandlerPublisher.swift in Sources */,
|
||||
EA3361AA288B25E40071C351 /* Disabling.swift in Sources */,
|
||||
EA89200828B526E0006B9984 /* CheckboxGroupModel.swift in Sources */,
|
||||
EA3361B6288B2A410071C351 /* Control.swift in Sources */,
|
||||
EAB1D2A328A5994800DAE764 /* Debuggable.swift in Sources */,
|
||||
EAF7F0B7289C12A600B287F5 /* UITapGestureRecognizer.swift in Sources */,
|
||||
|
||||
27
VDS/Components/Checkbox/CheckboxGroup.swift
Normal file
27
VDS/Components/Checkbox/CheckboxGroup.swift
Normal file
@ -0,0 +1,27 @@
|
||||
//
|
||||
// CheckboxGroup.swift
|
||||
// VDS
|
||||
//
|
||||
// Created by Matt Bruce on 8/23/22.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
public class CheckboxGroup: CheckboxGroupBase<DefaultCheckboxGroupModel, Checkbox> {}
|
||||
|
||||
public class CheckboxGroupBase<CheckboxGroupModelType: CheckboxGroupModel, CheckboxType: CheckboxBase<CheckboxGroupModelType.SelectorType>>: SelectorGroupBase<CheckboxGroupModelType.SelectorType, CheckboxGroupModelType, CheckboxType> {
|
||||
|
||||
public var hasError: Bool {
|
||||
get { model.hasError }
|
||||
set {
|
||||
var newHasError = newValue
|
||||
let selectors = model.selectors.compactMap { existing in
|
||||
return existing.copyWith {
|
||||
$0.hasError = newHasError
|
||||
}
|
||||
}
|
||||
model.hasError = newHasError
|
||||
model.selectors = selectors
|
||||
}
|
||||
}
|
||||
}
|
||||
30
VDS/Components/Checkbox/CheckboxGroupModel.swift
Normal file
30
VDS/Components/Checkbox/CheckboxGroupModel.swift
Normal file
@ -0,0 +1,30 @@
|
||||
//
|
||||
// CheckboxGroupModel.swift
|
||||
// VDS
|
||||
//
|
||||
// Created by Matt Bruce on 8/23/22.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
public protocol CheckboxGroupModel: SelectorGroupModel {}
|
||||
|
||||
extension CheckboxGroupModel {
|
||||
public var errorText: String? { return nil }
|
||||
}
|
||||
|
||||
public struct DefaultCheckboxGroupModel: CheckboxGroupModel {
|
||||
public typealias SelectorType = DefaultCheckboxModel
|
||||
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 var hasError: Bool = false
|
||||
public var errorText: String?
|
||||
public init() { selectors = [] }
|
||||
public init(selectors: [SelectorType]){
|
||||
self.selectors = selectors
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user