// // SelectorGroupHandlerBase.swift // VDS // // Created by Matt Bruce on 9/8/22. // import Foundation import UIKit public class SelectorGroupHandlerBase: Control { //-------------------------------------------------- // MARK: - Public Properties //-------------------------------------------------- public var selectorViews: [HandlerType] = [] //-------------------------------------------------- // MARK: - Overrides //-------------------------------------------------- override public var disabled: Bool { didSet { selectorViews.forEach { handler in handler.disabled = disabled } } } override public var surface: Surface { didSet { selectorViews.forEach { handler in handler.surface = surface } } } open func didSelect(_ selectedControl: HandlerType) { fatalError("Must override didSelect") } public func valueChanged() { DispatchQueue.main.asyncAfter(deadline: .now() + Constants.StateDebounce) { [weak self] in self?.sendActions(for: .valueChanged) } } public override func reset() { super.reset() selectorViews.forEach{ $0.reset() } } } public class SelectorGroupSelectedHandlerBase: SelectorGroupHandlerBase{ public var selectedHandler: HandlerType? { return selectorViews.filter { $0.isSelected == true }.first } }