added Identifiable
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
78443263ba
commit
e07f855eb6
@ -34,15 +34,15 @@ public class SelectorGroupHandlerBase<GroupModelType: SelectorGroupModelable, Mo
|
||||
}
|
||||
}
|
||||
|
||||
public func findSelectorView(inputId: String?) -> ModelHandlerType? {
|
||||
public func findSelectorView(id: UUID?) -> ModelHandlerType? {
|
||||
return selectorViews.first(where: { existingSelectorView in
|
||||
return existingSelectorView.model.inputId == inputId
|
||||
return existingSelectorView.model.id == id
|
||||
})
|
||||
}
|
||||
|
||||
public func getCachedSelector(viewModel: ModelHandlerType.ModelType) -> ModelHandlerType.ModelType? {
|
||||
if let index = model.selectors.firstIndex(where: { element in
|
||||
return element.inputId == viewModel.inputId
|
||||
return element.id == viewModel.id
|
||||
}) {
|
||||
return model.selectors[index]
|
||||
} else {
|
||||
@ -52,7 +52,7 @@ public class SelectorGroupHandlerBase<GroupModelType: SelectorGroupModelable, Mo
|
||||
|
||||
public func replace(viewModel: ModelHandlerType.ModelType){
|
||||
if let index = model.selectors.firstIndex(where: { element in
|
||||
return element.inputId == viewModel.inputId
|
||||
return element.id == viewModel.id
|
||||
}) {
|
||||
model.selectors[index] = viewModel
|
||||
}
|
||||
|
||||
@ -79,7 +79,7 @@ public class CheckboxGroupBase<GroupModelType: CheckboxGroupModel, ModelHandlerT
|
||||
open override func updateView(viewModel: ModelType) {
|
||||
for selectorModel in viewModel.selectors {
|
||||
//see if view is there for the model
|
||||
if let foundSelectorView = findSelectorView(inputId: selectorModel.inputId) {
|
||||
if let foundSelectorView = findSelectorView(id: selectorModel.id) {
|
||||
foundSelectorView.set(with: selectorModel)
|
||||
} else {
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ public protocol CheckboxGroupModel: SelectorGroupModelable, Errorable where Sele
|
||||
|
||||
public struct DefaultCheckboxGroupModel: CheckboxGroupModel {
|
||||
public typealias SelectorModelType = DefaultCheckboxModel
|
||||
public var id = UUID()
|
||||
public var inputId: String?
|
||||
public var value: AnyHashable?
|
||||
public var surface: Surface = .light
|
||||
@ -24,4 +25,5 @@ public struct DefaultCheckboxGroupModel: CheckboxGroupModel {
|
||||
public init(selectors: [SelectorModelType]){
|
||||
self.selectors = selectors
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -64,8 +64,8 @@ extension CheckboxModel {
|
||||
}
|
||||
|
||||
public struct DefaultCheckboxModel: CheckboxModel {
|
||||
public var id = UUID()
|
||||
public var selected: Bool = false
|
||||
|
||||
public var labelText: String?
|
||||
public var labelTextAttributes: [LabelAttributeModel]?
|
||||
public var childText: String?
|
||||
|
||||
@ -14,6 +14,7 @@ public protocol LabelModel: Modelable, Labelable {
|
||||
}
|
||||
|
||||
public struct DefaultLabelModel: LabelModel {
|
||||
public var id = UUID()
|
||||
public var text: String?
|
||||
public var attributes: [LabelAttributeModel]?
|
||||
public var typograpicalStyle: TypographicalStyle = .BodySmall
|
||||
|
||||
@ -80,7 +80,7 @@ public class RadioBoxGroupBase<GroupModelType: RadioBoxGroupModel, ModelHandlerT
|
||||
open override func updateView(viewModel: ModelType) {
|
||||
for selectorModel in viewModel.selectors {
|
||||
//see if view is there for the model
|
||||
if let foundSelectorView = findSelectorView(inputId: selectorModel.inputId) {
|
||||
if let foundSelectorView = findSelectorView(id: selectorModel.id) {
|
||||
foundSelectorView.set(with: selectorModel)
|
||||
} else {
|
||||
|
||||
|
||||
@ -11,6 +11,7 @@ public protocol RadioBoxGroupModel: SelectorGroupSelectedModelable where Selecto
|
||||
|
||||
public struct DefaultRadioBoxGroupModel: RadioBoxGroupModel {
|
||||
public typealias SelectorModelType = DefaultRadioBoxModel
|
||||
public var id = UUID()
|
||||
public var inputId: String?
|
||||
public var value: AnyHashable?
|
||||
public var surface: Surface = .light
|
||||
|
||||
@ -58,9 +58,8 @@ extension RadioBoxModel {
|
||||
}
|
||||
|
||||
public struct DefaultRadioBoxModel: RadioBoxModel {
|
||||
|
||||
public var id = UUID()
|
||||
public var selected: Bool = false
|
||||
|
||||
public var text: String = "Default Text"
|
||||
public var textAttributes: [LabelAttributeModel]?
|
||||
public var subText: String?
|
||||
|
||||
@ -81,7 +81,7 @@ public class RadioButtonGroupBase<GroupModelType: RadioButtonGroupModel, ModelHa
|
||||
open override func updateView(viewModel: ModelType) {
|
||||
for selectorModel in viewModel.selectors {
|
||||
//see if view is there for the model
|
||||
if let foundSelectorView = findSelectorView(inputId: selectorModel.inputId) {
|
||||
if let foundSelectorView = findSelectorView(id: selectorModel.id) {
|
||||
foundSelectorView.set(with: selectorModel)
|
||||
} else {
|
||||
|
||||
|
||||
@ -15,6 +15,7 @@ extension RadioButtonGroupModel {
|
||||
|
||||
public struct DefaultRadioButtonGroupModel: RadioButtonGroupModel {
|
||||
public typealias SelectorModelType = DefaultRadioButtonModel
|
||||
public var id = UUID()
|
||||
public var inputId: String?
|
||||
public var value: AnyHashable?
|
||||
public var surface: Surface = .light
|
||||
|
||||
@ -64,6 +64,7 @@ extension RadioButtonModel {
|
||||
}
|
||||
|
||||
public struct DefaultRadioButtonModel: RadioButtonModel {
|
||||
public var id = UUID()
|
||||
public var selected: Bool = false
|
||||
|
||||
public var labelText: String?
|
||||
|
||||
@ -153,7 +153,7 @@ public class RadioSwatchGroupBase<GroupModelType: RadioSwatchGroupModel, ModelHa
|
||||
|
||||
public func replace(viewModel: ModelHandlerType.ModelType){
|
||||
if let index = model.selectors.firstIndex(where: { element in
|
||||
return element.inputId == viewModel.inputId
|
||||
return element.id == viewModel.id
|
||||
}) {
|
||||
model.selectors[index] = viewModel
|
||||
}
|
||||
|
||||
@ -23,6 +23,7 @@ extension RadioSwatchGroupModel {
|
||||
|
||||
public struct DefaultRadioSwatchGroupModel: RadioSwatchGroupModel {
|
||||
public typealias SelectorModelType = DefaultRadioSwatchModel
|
||||
public var id = UUID()
|
||||
public var inputId: String?
|
||||
public var value: AnyHashable?
|
||||
public var surface: Surface = .light
|
||||
|
||||
@ -17,7 +17,8 @@ public protocol RadioSwatchModel: Modelable, FormFieldable, DataTrackable, Acces
|
||||
}
|
||||
|
||||
public func == (lhs: any RadioSwatchModel, rhs: any RadioSwatchModel) -> Bool {
|
||||
return lhs.selected == rhs.selected &&
|
||||
return lhs.id == rhs.id &&
|
||||
lhs.selected == rhs.selected &&
|
||||
lhs.fillImage == rhs.fillImage &&
|
||||
lhs.primaryColor == rhs.primaryColor &&
|
||||
lhs.secondaryColor == rhs.secondaryColor &&
|
||||
@ -38,7 +39,7 @@ public func == (lhs: any RadioSwatchModel, rhs: any RadioSwatchModel) -> Bool {
|
||||
}
|
||||
|
||||
public struct DefaultRadioSwatchModel: RadioSwatchModel {
|
||||
|
||||
public var id = UUID()
|
||||
public var selected: Bool = false
|
||||
|
||||
public var fillImage: UIImage?
|
||||
|
||||
@ -30,6 +30,7 @@ extension ToggleModel {
|
||||
}
|
||||
|
||||
public struct DefaultToggleModel: ToggleModel {
|
||||
public var id = UUID()
|
||||
public var on: Bool = false
|
||||
public var showText: Bool = false
|
||||
public var offText: String = "Off"
|
||||
|
||||
@ -7,6 +7,12 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
public protocol Modelable: Surfaceable, Disabling, Initable, Withable {
|
||||
public protocol Modelable: Surfaceable, Disabling, Initable, Withable, Identifiable, CustomDebugStringConvertible where ID == UUID {
|
||||
|
||||
}
|
||||
|
||||
extension Modelable {
|
||||
public var debugDescription: String {
|
||||
return "\(id.uuidString)"
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,6 +13,12 @@ public protocol SelectorGroupModelable: Modelable, FormFieldable {
|
||||
var selectors: [SelectorModelType] { get set }
|
||||
}
|
||||
|
||||
extension SelectorGroupModelable {
|
||||
public var debugDescription: String {
|
||||
"group id: \(id.uuidString)\r\(selectors.compactMap{"id: \($0.debugDescription) \($0.selected ? "*" : "")"}.joined(separator: "\r"))"
|
||||
}
|
||||
}
|
||||
|
||||
///MARK: Groups that allow single selections
|
||||
public protocol SelectorGroupSelectedModelable: SelectorGroupModelable {
|
||||
var selectedModel: SelectorModelType? { get }
|
||||
|
||||
Loading…
Reference in New Issue
Block a user