// // CarouselScrollbarViewConttroller.swift // VDSSample // // Created by Kanamarlapudi, Vasavi on 15/03/24. // import Foundation import UIKit import VDS import Combine import VDSColorTokens class CarouselScrollbarViewConttroller: BaseViewController { lazy var layoutPickerSelectorView = { PickerSelectorView(title: "1UP", picker: self.picker, items: CarouselScrollbar.Layout.allCases) }() var slidesTextField = NumericField() var disabledSwitch = Toggle() var positionTextField = NumericField() override func viewDidLoad() { super.viewDidLoad() addContentTopView(view: component) setupPicker() setupModel() } override func setupForm(){ super.setupForm() addFormRow(label: "Disabled", view: disabledSwitch) addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Layout", view: layoutPickerSelectorView) addFormRow(label: "Number Of Slides", view: slidesTextField) addFormRow(label: "Position", view: positionTextField) disabledSwitch.onChange = { [weak self] sender in self?.component.isEnabled = !sender.isOn } slidesTextField .numberPublisher .sink { [weak self] number in guard let number else { self?.component.numberOfSlides = nil return } self?.component.numberOfSlides = number.intValue self?.component.position = Int(self?.positionTextField.text ?? "1") }.store(in: &subscribers) positionTextField .numberPublisher .sink { [weak self] number in guard let number else { self?.component.position = nil return } self?.component.position = number.intValue }.store(in: &subscribers) } func setupModel() { //setup UI component.numberOfSlides = 3 surfacePickerSelectorView.text = component.surface.rawValue disabledSwitch.isOn = !component.isEnabled slidesTextField.text = String(component.numberOfSlides ?? 1) } func setupPicker(){ surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.surface = item self?.contentTopView.backgroundColor = item.color } layoutPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.selectedLayout = item self?.component.position = Int(self?.positionTextField.text ?? "1") } } }