// // BadgeIndicatorViewController.swift // VDSSample // // Created by Matt Bruce on 6/15/23. // import Foundation import UIKit import VDS import VDSColorTokens import Combine class BadgeIndicatorViewController: BaseViewController { lazy var fillColorPickerSelectorView = { PickerSelectorView(title: "red", picker: self.picker, items: BadgeIndicator.FillColor.allCases) }() lazy var kindPickerSelectorView = { PickerSelectorView(title: "red", picker: self.picker, items: BadgeIndicator.Kind.allCases) }() lazy var textSizePickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, items: BadgeIndicator.TextSize.allCases) }() lazy var maxDigitsPickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, items: BadgeIndicator.MaxDigits.allCases) }() lazy var borderColorLightPickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, items: UIColor.VDSColor.allCases) }() lazy var borderColorDarkPickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, items: UIColor.VDSColor.allCases) }() var textField = TextField() var hideDotSwitch = UISwitch() override func allTextFields() -> [TextField]? { [textField] } override func viewDidLoad() { super.viewDidLoad() addContentTopView(view: .makeWrapper(for: component)) setupPicker() setupModel() } var numberedForm = FormSection() var hideDotRow: UIView? override func setupForm(){ super.setupForm() addFormRow(label: "Kind", view: kindPickerSelectorView) hideDotRow = addFormRow(label: "Hide Dot", view: hideDotSwitch) addFormRow(label: "Fill Color", view: fillColorPickerSelectorView) addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Border Light", view: borderColorLightPickerSelectorView) addFormRow(label: "Border Dark", view: borderColorDarkPickerSelectorView) addFormRow(label: "Size", view: textSizePickerSelectorView) numberedForm.addFormRow(label: "Text", view: textField) numberedForm.addFormRow(label: "Max Digits", view: maxDigitsPickerSelectorView) append(section: numberedForm) numberedForm.isHidden = true hideDotSwitch.publisher(for: .valueChanged).sink { [weak self] control in self?.component.hideDot = control.isOn }.store(in: &subscribers) textField .textPublisher .sink { [weak self] text in if let n = NumberFormatter().number(from: text) { self?.component.number = n.intValue } }.store(in: &subscribers) } func setupModel() { component.fillColor = .red component.number = 1 //setup UI surfacePickerSelectorView.text = component.surface.rawValue kindPickerSelectorView.text = component.kind.rawValue fillColorPickerSelectorView.text = component.fillColor.rawValue textSizePickerSelectorView.text = component.textSize.rawValue maxDigitsPickerSelectorView.text = component.maxDigits.rawValue borderColorDarkPickerSelectorView.text = component.borderColorDark?.toVDSColor()?.rawValue ?? "" borderColorLightPickerSelectorView.text = component.borderColorLight?.toVDSColor()?.rawValue ?? "" textField.text = "\(component.number!)" } func setupPicker(){ surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.surface = item self?.contentTopView.backgroundColor = item.color } kindPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.kind = item self?.numberedForm.isHidden = item != .numbered self?.hideDotRow?.isHidden = item == .numbered } fillColorPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.fillColor = item } textSizePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.textSize = item } maxDigitsPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.maxDigits = item } borderColorDarkPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.borderColorDark = item.uiColor } borderColorLightPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.borderColorLight = item.uiColor } } }