diff --git a/VDSSample/ViewControllers/TableViewController.swift b/VDSSample/ViewControllers/TableViewController.swift
index ffbb9c3..80110b0 100644
--- a/VDSSample/ViewControllers/TableViewController.swift
+++ b/VDSSample/ViewControllers/TableViewController.swift
@@ -8,11 +8,18 @@
import Foundation
import VDS
import UIKit
+import VDSTokens
class TableViewController: BaseViewController
{
var striped = Toggle()
+ var fillContainer = Toggle()
+
+ var customColumnWidthSize = NumericField().with {
+ $0.placeholder = "Minimum 50px"
+ }
+
lazy var headerLineStylePicker = {
PickerSelectorView(title: "primary", picker: self.picker, items: Line.Style.allCases)
}()
@@ -38,12 +45,33 @@ class TableViewController: BaseViewController {
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
+ updateTextFieldStatus(enable: !fillContainer.isOn)
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?.updateTextFieldStatus(enable:!sender.isOn)
+ if let count = self?.component.tableHeader.first?.columnsCount,
+ let text = self?.customColumnWidthSize.text,
+ let width = NumberFormatter().number(from: text) {
+ self?.component.columnWidths = Array(repeating: CGFloat(truncating: width), count: count)
+ }
+ }
+
+ customColumnWidthSize.numberPublisher.sink { [weak self] text in
+ if let count = self?.component.tableHeader.first?.columnsCount, let text, text.intValue > 50 {
+ self?.component.columnWidths = Array(repeating: CGFloat(truncating: text), count: count)
+ }
+ }.store(in: &subscribers)
}
func setupPicker() {
@@ -53,11 +81,11 @@ class TableViewController: BaseViewController {
}
headerLineStylePicker.onPickerDidSelect = { [weak self] item in
- var headers = self?.component.tableHeader ?? [[]]
+ var headers = self?.component.tableHeader ?? [TableRowModel]()
for currentHeaderIndex in 0.. {
rowLineStylePicker.onPickerDidSelect = { [weak self] item in
- var rows = self?.component.tableRows ?? [[]]
+ var rows = self?.component.tableRows ?? [TableRowModel]()
for currentRowIndex in 0.. {
}
}
+ func updateTextFieldStatus(enable: Bool) {
+ customColumnWidthSize.isEnabled = enable
+ customColumnWidthSize.backgroundColor = enable ? UIColor.white : VDSColor.paletteGray85
+ }
+
func setupModel() {
///Header row
- self.component.tableHeader = [[TableItemModel(bottomLine: .primary, component: Label().with { $0.text = ""}),
- TableItemModel(bottomLine: .primary, component: Label().with { $0.text = "Verizon smart family"; $0.textStyle = .boldTitleSmall; $0.lineBreakMode = .byWordWrapping}),
- TableItemModel(bottomLine: .primary, component: Label().with { $0.text = "Call filter"; $0.textStyle = .boldTitleSmall; $0.lineBreakMode = .byWordWrapping })]]
+
+ self.component.tableHeader = [TableRowModel(columns: [TableItemModel(bottomLine: .primary, component: nil),
+ TableItemModel(bottomLine: .primary, component: Label().with { $0.text = "Verizon smart family"; $0.textStyle = .boldTitleSmall; $0.lineBreakMode = .byWordWrapping}),
+ TableItemModel(bottomLine: .primary, component: Label().with { $0.text = "Call filter"; $0.textStyle = .boldTitleSmall; $0.lineBreakMode = .byWordWrapping })])]
///First row
- var rows = [[TableItemModel(bottomLine: .secondary, component: Label().with { $0.text = "Cost"; $0.textStyle = UIDevice.isIPad ? .bodyLarge : .bodySmall; $0.lineBreakMode = .byWordWrapping}),
+ var rows = [TableRowModel(columns: [TableItemModel(bottomLine: .secondary, component: Label().with { $0.text = "Cost"; $0.textStyle = UIDevice.isIPad ? .bodyLarge : .bodySmall; $0.lineBreakMode = .byWordWrapping}),
TableItemModel(bottomLine: .secondary, component: Label().with { $0.text = "$5/month for up to 10 lines"; $0.textStyle = UIDevice.isIPad ? .bodyLarge : .bodySmall; $0.lineBreakMode = .byWordWrapping}),
- TableItemModel(bottomLine: .secondary, component: Label().with { $0.text = "$2.99/month per device"; $0.textStyle = UIDevice.isIPad ? .bodyLarge : .bodySmall; $0.lineBreakMode = .byWordWrapping})]]
+ TableItemModel(bottomLine: .secondary, component: Label().with { $0.text = "$2.99/month per device"; $0.textStyle = UIDevice.isIPad ? .bodyLarge : .bodySmall; $0.lineBreakMode = .byWordWrapping})])]
///second row
- rows.append([TableItemModel(bottomLine: .secondary, component: Label().with { $0.text = "Block web domains"; $0.textStyle = UIDevice.isIPad ? .bodyLarge : .bodySmall; $0.lineBreakMode = .byWordWrapping}),
+ rows.append(TableRowModel(columns: [TableItemModel(bottomLine: .secondary, component: Label().with { $0.text = "Block web domains"; $0.textStyle = UIDevice.isIPad ? .bodyLarge : .bodySmall; $0.lineBreakMode = .byWordWrapping}),
TableItemModel(bottomLine: .secondary, component: Icon().with { $0.name = Icon.Name.checkmark }),
- TableItemModel(bottomLine: .secondary, component: Icon().with { $0.name = Icon.Name.checkmark })])
+ TableItemModel(bottomLine: .secondary, component: Icon().with { $0.name = Icon.Name.checkmark })]))
///Third row
- rows.append([TableItemModel(bottomLine: .secondary, component: Label().with { $0.text = "Block calls and messages from specific numbers"; $0.textStyle = UIDevice.isIPad ? .bodyLarge : .bodySmall; $0.lineBreakMode = .byWordWrapping}),
+ rows.append(TableRowModel(columns: [TableItemModel(bottomLine: .secondary, component: Label().with { $0.text = "Block calls and messages from specific numbers"; $0.textStyle = UIDevice.isIPad ? .bodyLarge : .bodySmall; $0.lineBreakMode = .byWordWrapping}),
TableItemModel(bottomLine: .secondary, component: Label().with { $0.text = "Permanently"; $0.textStyle = UIDevice.isIPad ? .bodyLarge : .bodySmall; $0.lineBreakMode = .byWordWrapping}),
- TableItemModel(bottomLine: .secondary, component: Label().with { $0.text = "Permanently"; $0.textStyle = UIDevice.isIPad ? .bodyLarge : .bodySmall; $0.lineBreakMode = .byWordWrapping})])
+ TableItemModel(bottomLine: .secondary, component: Label().with { $0.text = "Permanently"; $0.textStyle = UIDevice.isIPad ? .bodyLarge : .bodySmall; $0.lineBreakMode = .byWordWrapping})]))
+
+ if UIDevice.isIPad {
+
+ ///Fourth row
+ let titleLockUp = TitleLockup()
+ let eyebrowModel = TitleLockup.EyebrowModel(text: "Today only.")
+ let titleModel = TitleLockup.TitleModel(text: "Get more of our best")
+ let subTitleModel = TitleLockup.SubTitleModel(text: "Get both of our best and pay less. Pair 5G Home Internet with Verizon mobile to save every month.")
+
+ titleLockUp.eyebrowModel = eyebrowModel
+ titleLockUp.titleModel = titleModel
+ titleLockUp.subTitleModel = subTitleModel
+
+ let button = Button()
+ button.text = "Testing"
+
+ rows.append(TableRowModel(columns: [TableItemModel(bottomLine: .secondary, component:Toggle()),
+ TableItemModel(bottomLine: .secondary, component:titleLockUp),
+ TableItemModel(bottomLine: .secondary, component: button)]))
+
+
+ ///Fifth row
+ let tilelet = Tilelet()
+ let ftitleModel = Tilelet.TitleModel(text: "Save $XX on your monthly bill.")
+ let fsubTitleModel = Tilelet.SubTitleModel(text: "Enroll in Auto Pay & paper-free billing to save on your monthly bill.")
+ tilelet.titleModel = ftitleModel
+ tilelet.subTitleModel = fsubTitleModel
+
+ let textArea = TextArea()
+ textArea.labelText = "Street Address"
+ textArea.helperText = "For example: 123 Verizon St"
+ textArea.errorText = "Enter a valid address."
+ textArea.tooltipModel = .init(title: "Check the formatting of your address", content:"House/Building number then street name")
+
+ let trailingToolTip = TrailingTooltipLabel()
+ trailingToolTip.labelText = "5G Ultra Wideband is available in your area"
+ trailingToolTip.tooltipModel = .init(title: "Check the formatting of your address",
+ content:"House/Building number then street name")
+ let image = UIImage(named: "clean-surface")
+ let imageView = UIImageView(image: image)
+
+ rows.append(TableRowModel(columns: [TableItemModel(bottomLine: .secondary, component:textArea),
+ TableItemModel(bottomLine: .secondary, component:imageView),
+ TableItemModel(bottomLine: .secondary, component:trailingToolTip)]))
+ }
+
+
+ component.fillContainer = true
+ component.columnWidths = [400.0, 400.0, 400.0]
self.component.tableRows = rows
}