vds_ios_sample/VDSSample/ViewControllers/ListUnorderedViewController.swift

139 lines
4.9 KiB
Swift

//
// ListUnorderedViewController.swift
// VDSSample
//
// Created by Vasavi Kanamarlapudi on 16/10/24.
//
import Foundation
import VDS
class ListUnorderedViewController: BaseViewController<ListUnordered> {
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)
}
}