diff --git a/VDS/Classes/SelectorGroupHandlerBase.swift b/VDS/Classes/SelectorGroupHandlerBase.swift index d912927a..5f8b2b8a 100644 --- a/VDS/Classes/SelectorGroupHandlerBase.swift +++ b/VDS/Classes/SelectorGroupHandlerBase.swift @@ -34,15 +34,15 @@ public class SelectorGroupHandlerBase 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 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? diff --git a/VDS/Components/Toggle/ToggleModel.swift b/VDS/Components/Toggle/ToggleModel.swift index f851d2c0..100b2e56 100644 --- a/VDS/Components/Toggle/ToggleModel.swift +++ b/VDS/Components/Toggle/ToggleModel.swift @@ -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" diff --git a/VDS/Protocols/Modelable.swift b/VDS/Protocols/Modelable.swift index dfc1fc0a..dc49a3fe 100644 --- a/VDS/Protocols/Modelable.swift +++ b/VDS/Protocols/Modelable.swift @@ -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)" + } +} diff --git a/VDS/Protocols/SelectorGroupModelable.swift b/VDS/Protocols/SelectorGroupModelable.swift index 306e3d06..4657b7c6 100644 --- a/VDS/Protocols/SelectorGroupModelable.swift +++ b/VDS/Protocols/SelectorGroupModelable.swift @@ -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 }