// // BreadcrumbsViewController.swift // VDSSample // // Created by Kanamarlapudi, Vasavi on 05/03/24. // import Foundation import UIKit import VDS import VDSCoreTokens 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"), .init(text: "Support"), .init(text: "Service & Apps"), .init(text: "My Verizon"), .init(text: "Bill"), .init(text: "Billing statement FAQs", selected: true) ] var some: [Breadcrumbs.BreadcrumbItemModel] = [ .init(text: "Home"), .init(text: "Support"), .init(text: "Service & Apps"), .init(text: "My Verizon"), .init(text: "Bill"), .init(text: "Billing Statement Frequently Asked Questions to cause word wrap", selected: true) ] override func viewDidLoad() { super.viewDidLoad() let stack = UIStackView(arrangedSubviews: [component, selectedCrumbLabel]).with { $0.axis = .vertical $0.spacing = 25 } addContentTopView(view: stack) setupPicker() setupModel() } override func setupForm(){ super.setupForm() addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Last Crumb Selected", view: selectedSwitch, pinTrailing: false) addFormRow(label: "No Long Breadcrumbs", view: sampleSwitch, pinTrailing: false) 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 self?.selectedCrumbLabel.surface = item } } 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) } } } extension BreadcrumbsViewController: ComponentSampleable { static func makeSample() -> ComponentSample { let component = Self.makeComponent() component.breadcrumbModels = [ .init(text: "Home"), .init(text: "Support"), .init(text: "Service & Apps"), .init(text: "My Verizon"), .init(text: "Bill"), .init(text: "Mobile Billing & Payments"), .init(text: "Billing statement FAQs", selected: true) ] return ComponentSample(component: component) } }