// // BreadcrumbsViewController.swift // VDSSample // // Created by Kanamarlapudi, Vasavi on 05/03/24. // import Foundation import UIKit import VDS import VDSColorTokens import Combine class BreadcrumbsViewController: BaseViewController { var selectedSwitch = Toggle() var sampleSwitch = Toggle() var selectedCrumbLabel = Label().with { $0.textStyle = .boldBodyMedium } var allBreadcrumbs: [Breadcrumbs.BreadcrumbItemModel] = [ .init(text: "Home", link: "https://www.verizon.com/"), .init(text: "Support", link: "https://www.verizon.com/"), .init(text: "Servie & Apps", link: "https://www.verizon.com/"), .init(text: "My Verizon", link: "https://www.verizon.com/"), .init(text: "Bill", link: "https://www.verizon.com/"), .init(text: "Mobile Billing & Payments", link: "https://www.verizon.com/"), .init(text: "Billing statement FAQs", link: "https://www.verizon.com/", isSelected: true) ] var some: [Breadcrumbs.BreadcrumbItemModel] = [ .init(text: "Plans", link: "https://www.verizon.com/"), .init(text: "Upgrade Plan", link: "https://www.verizon.com/", isSelected: true) ] override func viewDidLoad() { super.viewDidLoad() let stack = UIStackView(arrangedSubviews: [component, selectedCrumbLabel]).with { $0.axis = .vertical $0.spacing = 4 } addContentTopView(view: stack) setupPicker() setupModel() } override func setupForm(){ super.setupForm() addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Last Crumb Selected", view: selectedSwitch) addFormRow(label: "Large Sample", view: sampleSwitch) selectedSwitch.onChange = { [weak self] sender in guard let self else { return } component.breadcrumbs.last?.isSelected = sender.isOn } sampleSwitch.onChange = { [weak self] sender in guard let self else { return } self.component.breadcrumbModels = sender.isOn ? self.allBreadcrumbs : self.some selectedSwitch.isOn = true updatedCrumbLabel(crumb: component.breadcrumbs.last ?? nil) } } func setupPicker(){ surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.surface = item self?.contentTopView.backgroundColor = item.color } } func updatedCrumbLabel(crumb: BreadcrumbItem?) { selectedCrumbLabel.text = "Selected Crumb : \(crumb?.text ?? "")" } func setupModel() { //setup UI component.breadcrumbModels = allBreadcrumbs selectedSwitch.isOn = true sampleSwitch.isOn = true surfacePickerSelectorView.text = component.surface.rawValue updatedCrumbLabel(crumb: component.breadcrumbs.last ?? nil) //test setup to show component was picked component.onBreadcrumbDidSelect = { [weak self] crumb in guard let self else { return } self.updatedCrumbLabel(crumb: crumb) } } }