// // ListUnorderedViewController.swift // VDSSample // // Created by Vasavi Kanamarlapudi on 16/10/24. // import Foundation import VDS class ListUnorderedViewController: BaseViewController { lazy var sizePickerView = { PickerSelectorView(title: "Large", picker: self.picker, items: ListUnordered.Size.allCases) }() lazy var spacingPickerView = { PickerSelectorView(title:"Standard", picker: self.picker, items: ListUnordered.Spacing.allCases) }() var leadInTextField = TextField() var itemLevelTwoTextOne = TextField() var itemLevelTwoTextTwo = TextField() var unorderedList: [ListUnordered.ListUnorderedItemModel]? override func viewDidLoad() { super.viewDidLoad() addContentTopView(view: component) setupPicker() setupModel() } override func setupForm() { super.setupForm() addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Size", view: sizePickerView) addFormRow(label: "Spacing", view: spacingPickerView) let form1 = FormSection() form1.title = "Lead-In Text (optional)" form1.addFormRow(label: "Lead In Text", view: leadInTextField) let form2 = FormSection() form2.title = "List Item Level 2 (Optional)" form2.addFormRow(label: "Subtext 1", view: itemLevelTwoTextOne) form2.addFormRow(label: "Subtext 2", view: itemLevelTwoTextTwo) append(section: form1) append(section: form2) leadInTextField .textPublisher .sink { [weak self] text in self?.component.leadInText = text }.store(in: &subscribers) itemLevelTwoTextOne .textPublisher .sink { [weak self] text in guard let self else { return } self.updateUnorderList() self.component.unorderedList = unorderedList ?? [] }.store(in: &subscribers) itemLevelTwoTextTwo .textPublisher .sink { [weak self] text in guard let self else { return } self.updateUnorderList() self.component.unorderedList = unorderedList ?? [] }.store(in: &subscribers) } func setupPicker() { surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.surface = item self?.contentTopView.backgroundColor = item.color } sizePickerView.onPickerDidSelect = { [weak self] item in self?.component.size = item } spacingPickerView.onPickerDidSelect = { [weak self] item in self?.component.spacing = item } } func setupModel() { sizePickerView.text = component.size.rawValue spacingPickerView.text = component.spacing.rawValue leadInTextField.text = "To manage your existing Call Intercept calling feature:" self.component.leadInText = leadInTextField.text itemLevelTwoTextOne.text = "Priority callers can bypass Call Intercept by entering your 4 digit Call Intercept Override Code." itemLevelTwoTextTwo.text = "Your phone will alert you with a short-short-long ring and \"Priority Caller\" will appear on your display." updateUnorderList() self.component.unorderedList = self.unorderedList ?? [] } // Update test data func updateUnorderList() { if (itemLevelTwoTextOne.text?.isEmpty == true) { itemLevelTwoTextOne.text = nil } if (itemLevelTwoTextTwo.text?.isEmpty == true) { itemLevelTwoTextTwo.text = nil } var levelTwoSubTexts : [String?]? = nil if let subtextOneEmpty = itemLevelTwoTextOne.text?.isEmpty, let subtextTwoEmpty = itemLevelTwoTextTwo.text?.isEmpty { if !subtextOneEmpty && !subtextTwoEmpty { levelTwoSubTexts = [itemLevelTwoTextOne.text, itemLevelTwoTextTwo.text] } else if !subtextOneEmpty || !subtextTwoEmpty { if subtextOneEmpty { levelTwoSubTexts = [itemLevelTwoTextTwo.text] } else if subtextTwoEmpty { levelTwoSubTexts = [itemLevelTwoTextOne.text] } } unorderedList = [ .init(itemLevelOneText: "Call 800-435-7986 to have your PIN reset."), .init(itemLevelOneText: "To bypass Call Intercept", itemLevelTwoTexts: levelTwoSubTexts) ] } } } extension ListUnorderedViewController: ComponentSampleable { static func makeSample() -> ComponentSample { let component = Self.makeComponent() return ComponentSample(component: component) } }