// // TableViewController.swift // VDSSample // // Created by Nadigadda, Sumanth on 24/04/24. // import Foundation import VDS import UIKit class TableViewController: BaseViewController { var striped = Toggle() var fillContainer = Toggle() var customColumnWidthSize = NumericField() lazy var headerLineStylePicker = { PickerSelectorView(title: "primary", picker: self.picker, items: Line.Style.allCases) }() lazy var rowLineStylePicker = { PickerSelectorView(title: "secondary", picker: self.picker, items: Line.Style.allCases) }() lazy var paddingPicker = { PickerSelectorView(title: "standard", picker: self.picker, items: Table.Padding.allCases) }() override func viewDidLoad() { super.viewDidLoad() self.setupPicker() self.setupModel() } override func setupForm() { super.setupForm() addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Padding", view: paddingPicker) addFormRow(label: "Striped", view: striped) addFormRow(label: "Header line style", view: headerLineStylePicker) addFormRow(label: "Row line style", view: rowLineStylePicker) addFormRow(label: "Fill container", view: fillContainer) addFormRow(label: "Custom column size", view: customColumnWidthSize) fillContainer.isOn = component.fillContainer addContentTopView(view: component) striped.onChange = { [weak self] sender in self?.component.striped = sender.isOn } fillContainer.onChange = { [weak self] sender in self?.component.fillContainer = sender.isOn self?.customColumnWidthSize.isEnabled = !sender.isOn } customColumnWidthSize.textPublisher.sink { [weak self] text in if let width = NumberFormatter().number(from: text), let count = self?.component.tableHeader.first?.count { self?.component.columnWidths = Array(repeating: CGFloat(truncating: width), count: count) } }.store(in: &subscribers) } func setupPicker() { surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.surface = item self?.contentTopView.backgroundColor = item.color } headerLineStylePicker.onPickerDidSelect = { [weak self] item in var headers = self?.component.tableHeader ?? [[]] for currentHeaderIndex in 0..