From 2d0995d7d696b4528aa3ec367b813313305567ac Mon Sep 17 00:00:00 2001 From: Sumanth Nadigadda Date: Tue, 30 Apr 2024 16:46:30 +0530 Subject: [PATCH 01/18] Initial commit for Table component --- VDSSample.xcodeproj/project.pbxproj | 4 + .../ViewControllers/MenuViewController.swift | 1 + .../ViewControllers/TableViewController.swift | 81 +++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 VDSSample/ViewControllers/TableViewController.swift diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index fc9f459..f43ffeb 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -35,6 +35,7 @@ 1808BEBE2BA4479500129230 /* CarouselScrollbarViewConttroller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1808BEBD2BA4479500129230 /* CarouselScrollbarViewConttroller.swift */; }; 1832AC5B2BA1347B008AE476 /* BreadcrumbsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1832AC5A2BA1347B008AE476 /* BreadcrumbsViewController.swift */; }; 186D13CD2BBA990800986B53 /* DropdownSelectViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 186D13CC2BBA990800986B53 /* DropdownSelectViewController.swift */; }; + 440B84CC2BD8E98B004A732A /* TableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 440B84CB2BD8E98B004A732A /* TableViewController.swift */; }; 445BA07A29C088470036A7C5 /* NotificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 445BA07929C088470036A7C5 /* NotificationViewController.swift */; }; 44604AD929CE1CF900E62B51 /* LineViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44604AD829CE1CF900E62B51 /* LineViewController.swift */; }; 5FC35BE928D5235A004EBEAC /* ButtonViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FC35BE828D5235A004EBEAC /* ButtonViewController.swift */; }; @@ -129,6 +130,7 @@ 1808BEBD2BA4479500129230 /* CarouselScrollbarViewConttroller.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarouselScrollbarViewConttroller.swift; sourceTree = ""; }; 1832AC5A2BA1347B008AE476 /* BreadcrumbsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BreadcrumbsViewController.swift; sourceTree = ""; }; 186D13CC2BBA990800986B53 /* DropdownSelectViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DropdownSelectViewController.swift; sourceTree = ""; }; + 440B84CB2BD8E98B004A732A /* TableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TableViewController.swift; sourceTree = ""; }; 445BA07929C088470036A7C5 /* NotificationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationViewController.swift; sourceTree = ""; }; 44604AD829CE1CF900E62B51 /* LineViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineViewController.swift; sourceTree = ""; }; 5FC35BE828D5235A004EBEAC /* ButtonViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonViewController.swift; sourceTree = ""; }; @@ -333,6 +335,7 @@ EAF7F11928A14A0E00B287F5 /* RadioButtonGroupViewController.swift */, EA0D1C322A673FD400E5C127 /* RadioButtonItemViewController.swift */, EA0D1C302A673F3500E5C127 /* RadioButtonViewController.swift */, + 440B84CB2BD8E98B004A732A /* TableViewController.swift */, EA5F86CD2A1E863F00BC83E4 /* TabsContainerViewController.swift */, EA596AB92A16B2ED00300C4B /* TabsViewController.swift */, EA985C24296E06EA00F2FF2E /* TextAreaViewController.swift */, @@ -532,6 +535,7 @@ EA596ABA2A16B2ED00300C4B /* TabsViewController.swift in Sources */, EA89204E28B67332006B9984 /* CheckBoxGroupViewController.swift in Sources */, EAA5EEAD28EB6924003B3210 /* InputFieldViewController.swift in Sources */, + 440B84CC2BD8E98B004A732A /* TableViewController.swift in Sources */, EA985C25296E06EA00F2FF2E /* TextAreaViewController.swift in Sources */, 1832AC5B2BA1347B008AE476 /* BreadcrumbsViewController.swift in Sources */, EA81410E2A0ED8DC004F60D2 /* ButtonIconViewController.swift in Sources */, diff --git a/VDSSample/ViewControllers/MenuViewController.swift b/VDSSample/ViewControllers/MenuViewController.swift index c300171..fd1f3eb 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -91,6 +91,7 @@ class MenuViewController: UITableViewController, TooltipLaunchable { MenuComponent(title: "RadioButtonItem", completed: true, viewController: RadioButtonItemViewController.self), MenuComponent(title: "RadioButtonGroup", completed: true, viewController: RadioButtonGroupViewController.self), // //MenuComponent(title: "TabsContainer", completed: false, viewController: TabsContainerViewController.self), + MenuComponent(title: "Table", completed: false, viewController: TableViewController.self), MenuComponent(title: "Tabs", completed: true, viewController: TabsViewController.self), MenuComponent(title: "TextArea", completed: true, viewController: TextAreaViewController.self), MenuComponent(title: "TextLink", completed: true, viewController: TextLinkViewController.self), diff --git a/VDSSample/ViewControllers/TableViewController.swift b/VDSSample/ViewControllers/TableViewController.swift new file mode 100644 index 0000000..6f00b67 --- /dev/null +++ b/VDSSample/ViewControllers/TableViewController.swift @@ -0,0 +1,81 @@ +// +// TableViewController.swift +// VDSSample +// +// Created by Nadigadda, Sumanth on 24/04/24. +// + +import Foundation +import VDS + +class TableViewController: BaseViewController { + + var showHeaderLine = Toggle() + var showRowLine = Toggle() + var striped = Toggle() + + lazy var headerLineStylePicker = { + PickerSelectorView(title: "Style", picker: self.picker, items: Line.Style.allCases) + }() + + lazy var rowLineStylePicker = { + PickerSelectorView(title: "Style", picker: self.picker, items: Line.Style.allCases) + }() + + lazy var paddingPicker = { + PickerSelectorView(title: "Padding", picker: self.picker, items: Table.Padding.allCases) + }() + + override func viewDidLoad() { + super.viewDidLoad() + self.setupPicker() + self.setupModel() + } + + override func setupForm() { + addFormRow(label: "Surface", view: surfacePickerSelectorView) + addFormRow(label: "Padding", view: paddingPicker) + addFormRow(label: "Header line style", view: headerLineStylePicker) + addFormRow(label: "Row line style", view: rowLineStylePicker) + addFormRow(label: "Show header line", view: showHeaderLine) + addFormRow(label: "Show row line", view: showRowLine) + addFormRow(label: "Striped", view: striped) + + addContentTopView(view: component) + + showHeaderLine.onChange = { [weak self] sender in + self?.component.headerBottomLine = sender.isOn + } + + showRowLine.onChange = { [weak self] sender in + self?.component.rowBottomLine = sender.isOn + } + + striped.onChange = { [weak self] sender in + self?.component.striped = sender.isOn + } + } + + func setupPicker() { + surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.surface = item + self?.contentTopView.backgroundColor = item.color + } + + headerLineStylePicker.onPickerDidSelect = { [weak self] item in + self?.component.headerBottomLineType = item + } + + rowLineStylePicker.onPickerDidSelect = { [weak self] item in + self?.component.rowBottomLineType = item + } + + paddingPicker.onPickerDidSelect = { [weak self] item in + self?.component.padding = item + } + } + + func setupModel() { + self.component.tableData = [["", "Verizon smart family", "Call filter"], ["Cost", "$5/month for up to 10 lines", "$2.99/month per device"], ["Block calls and messages from specific numbers\nBlock calls and messages from specific numbers", "Permanently", "Permanently"], ["Block web domains", "Patrick", "Jane"], ["Block calls and messages from specific numbers", "Permanently","Permanently"]] + } +} From 096e8e69f8c729227477a0e3635ada31f07edee3 Mon Sep 17 00:00:00 2001 From: Sumanth Nadigadda Date: Thu, 2 May 2024 18:48:42 +0530 Subject: [PATCH 02/18] Updating the data to models in Table controller --- VDSSample/ViewControllers/TableViewController.swift | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/VDSSample/ViewControllers/TableViewController.swift b/VDSSample/ViewControllers/TableViewController.swift index 6f00b67..fbf90cc 100644 --- a/VDSSample/ViewControllers/TableViewController.swift +++ b/VDSSample/ViewControllers/TableViewController.swift @@ -15,15 +15,15 @@ class TableViewController: BaseViewController
{ var striped = Toggle() lazy var headerLineStylePicker = { - PickerSelectorView(title: "Style", picker: self.picker, items: Line.Style.allCases) + PickerSelectorView(title: "primary", picker: self.picker, items: Line.Style.allCases) }() lazy var rowLineStylePicker = { - PickerSelectorView(title: "Style", picker: self.picker, items: Line.Style.allCases) + PickerSelectorView(title: "secondary", picker: self.picker, items: Line.Style.allCases) }() lazy var paddingPicker = { - PickerSelectorView(title: "Padding", picker: self.picker, items: Table.Padding.allCases) + PickerSelectorView(title: "standard", picker: self.picker, items: Table.Padding.allCases) }() override func viewDidLoad() { @@ -33,6 +33,7 @@ class TableViewController: BaseViewController
{ } override func setupForm() { + super.setupForm() addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Padding", view: paddingPicker) addFormRow(label: "Header line style", view: headerLineStylePicker) @@ -76,6 +77,10 @@ class TableViewController: BaseViewController
{ } func setupModel() { - self.component.tableData = [["", "Verizon smart family", "Call filter"], ["Cost", "$5/month for up to 10 lines", "$2.99/month per device"], ["Block calls and messages from specific numbers\nBlock calls and messages from specific numbers", "Permanently", "Permanently"], ["Block web domains", "Patrick", "Jane"], ["Block calls and messages from specific numbers", "Permanently","Permanently"]] + self.component.tableData = [[Table.TableCellLabelModel.init(text: ""), Table.TableCellLabelModel.init(text: "Verizon smart family"), Table.TableCellLabelModel.init(text: "Call filter")], + [Table.TableCellLabelModel.init(text: "Cost"), Table.TableCellLabelModel.init(text: "$5/month for up to 10 lines"), Table.TableCellLabelModel.init(text: "$2.99/month per device")], + [Table.TableCellLabelModel.init(text: "Block calls and messages from specific numbers\\ nBlock calls and messages from specific numbers"), Table.TableCellLabelModel.init(text: "Permanently"), Table.TableCellLabelModel.init(text: "Permanently")], + [Table.TableCellLabelModel.init(text: "Block web domains"), Table.TableCellImageModel.init(name: Icon.Name.checkmark, size: .medium), Table.TableCellImageModel.init(name: Icon.Name.checkmark, size: .medium)], + [Table.TableCellLabelModel.init(text: "Block calls and messages from specific numbers\\ nBlock calls and messages from specific numbers"), Table.TableCellLabelModel.init(text: "Permanently"), Table.TableCellLabelModel.init(text: "Permanently")]] } } From 45d4897d614a12d24d684dba415f121eff1cf6a0 Mon Sep 17 00:00:00 2001 From: Sumanth Nadigadda Date: Mon, 6 May 2024 16:02:03 +0530 Subject: [PATCH 03/18] Table controllers data changes --- .../ViewControllers/TableViewController.swift | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/VDSSample/ViewControllers/TableViewController.swift b/VDSSample/ViewControllers/TableViewController.swift index fbf90cc..6887996 100644 --- a/VDSSample/ViewControllers/TableViewController.swift +++ b/VDSSample/ViewControllers/TableViewController.swift @@ -30,6 +30,11 @@ class TableViewController: BaseViewController
{ super.viewDidLoad() self.setupPicker() self.setupModel() + + showHeaderLine.isOn = true + showRowLine.isOn = true + component.headerBottomLine = showHeaderLine.isOn + component.rowBottomLine = showRowLine.isOn } override func setupForm() { @@ -77,10 +82,9 @@ class TableViewController: BaseViewController
{ } func setupModel() { - self.component.tableData = [[Table.TableCellLabelModel.init(text: ""), Table.TableCellLabelModel.init(text: "Verizon smart family"), Table.TableCellLabelModel.init(text: "Call filter")], - [Table.TableCellLabelModel.init(text: "Cost"), Table.TableCellLabelModel.init(text: "$5/month for up to 10 lines"), Table.TableCellLabelModel.init(text: "$2.99/month per device")], - [Table.TableCellLabelModel.init(text: "Block calls and messages from specific numbers\\ nBlock calls and messages from specific numbers"), Table.TableCellLabelModel.init(text: "Permanently"), Table.TableCellLabelModel.init(text: "Permanently")], - [Table.TableCellLabelModel.init(text: "Block web domains"), Table.TableCellImageModel.init(name: Icon.Name.checkmark, size: .medium), Table.TableCellImageModel.init(name: Icon.Name.checkmark, size: .medium)], - [Table.TableCellLabelModel.init(text: "Block calls and messages from specific numbers\\ nBlock calls and messages from specific numbers"), Table.TableCellLabelModel.init(text: "Permanently"), Table.TableCellLabelModel.init(text: "Permanently")]] + self.component.tableData = [[Table.TableCellLabelModel.init(text: ""), Table.TableCellLabelModel.init(text: "Verizon smart family"), Table.TableCellLabelModel.init(text: "Call filter")], + [Table.TableCellLabelModel.init(text: "Cost"), Table.TableCellLabelModel.init(text: "$5/month for up to 10 lines"), Table.TableCellLabelModel.init(text: "$2.99/month per device")], + [Table.TableCellLabelModel.init(text: "Block web domains"), Table.TableCellImageModel.init(name: Icon.Name.checkmark, size: .medium), Table.TableCellImageModel.init(name: Icon.Name.checkmark, size: .medium)], + [Table.TableCellLabelModel.init(text: "Block calls and messages from specific numbers "), Table.TableCellLabelModel.init(text: "Permanently"), Table.TableCellLabelModel.init(text: "Permanently")],] } } From 89bf60714c2e23c023dc2dc40573c538ab5ae41f Mon Sep 17 00:00:00 2001 From: Sumanth Nadigadda Date: Thu, 9 May 2024 18:21:25 +0530 Subject: [PATCH 04/18] Refactored table controller --- .../ViewControllers/TableViewController.swift | 63 +++++++++++-------- 1 file changed, 38 insertions(+), 25 deletions(-) diff --git a/VDSSample/ViewControllers/TableViewController.swift b/VDSSample/ViewControllers/TableViewController.swift index 6887996..02326da 100644 --- a/VDSSample/ViewControllers/TableViewController.swift +++ b/VDSSample/ViewControllers/TableViewController.swift @@ -7,11 +7,10 @@ import Foundation import VDS +import UIKit class TableViewController: BaseViewController
{ - - var showHeaderLine = Toggle() - var showRowLine = Toggle() + var striped = Toggle() lazy var headerLineStylePicker = { @@ -30,33 +29,18 @@ class TableViewController: BaseViewController
{ super.viewDidLoad() self.setupPicker() self.setupModel() - - showHeaderLine.isOn = true - showRowLine.isOn = true - component.headerBottomLine = showHeaderLine.isOn - component.rowBottomLine = showRowLine.isOn } 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: "Show header line", view: showHeaderLine) - addFormRow(label: "Show row line", view: showRowLine) - addFormRow(label: "Striped", view: striped) addContentTopView(view: component) - showHeaderLine.onChange = { [weak self] sender in - self?.component.headerBottomLine = sender.isOn - } - - showRowLine.onChange = { [weak self] sender in - self?.component.rowBottomLine = sender.isOn - } - striped.onChange = { [weak self] sender in self?.component.striped = sender.isOn } @@ -69,11 +53,24 @@ class TableViewController: BaseViewController
{ } headerLineStylePicker.onPickerDidSelect = { [weak self] item in - self?.component.headerBottomLineType = item + let headers = self?.component.tableHeader ?? [[]] + for currentRow in headers { + for var currentItem in currentRow { + currentItem.bottomLine = item + } + } + self?.component.tableHeader = headers } rowLineStylePicker.onPickerDidSelect = { [weak self] item in - self?.component.rowBottomLineType = item + + let rows = self?.component.tableRows ?? [[]] + for currentRow in rows { + for var currentItem in currentRow { + currentItem.bottomLine = item + } + } + self?.component.tableRows = rows } paddingPicker.onPickerDidSelect = { [weak self] item in @@ -82,9 +79,25 @@ class TableViewController: BaseViewController
{ } func setupModel() { - self.component.tableData = [[Table.TableCellLabelModel.init(text: ""), Table.TableCellLabelModel.init(text: "Verizon smart family"), Table.TableCellLabelModel.init(text: "Call filter")], - [Table.TableCellLabelModel.init(text: "Cost"), Table.TableCellLabelModel.init(text: "$5/month for up to 10 lines"), Table.TableCellLabelModel.init(text: "$2.99/month per device")], - [Table.TableCellLabelModel.init(text: "Block web domains"), Table.TableCellImageModel.init(name: Icon.Name.checkmark, size: .medium), Table.TableCellImageModel.init(name: Icon.Name.checkmark, size: .medium)], - [Table.TableCellLabelModel.init(text: "Block calls and messages from specific numbers "), Table.TableCellLabelModel.init(text: "Permanently"), Table.TableCellLabelModel.init(text: "Permanently")],] + ///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 })]] + + ///First row + var rows = [[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})]] + ///second row + rows.append([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 })]) + + ///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}), + 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})]) + + self.component.tableRows = rows } } From 1af6fbb220d6ff48f3caa7433cbe93a07f29a461 Mon Sep 17 00:00:00 2001 From: Sumanth Nadigadda Date: Thu, 9 May 2024 21:51:42 +0530 Subject: [PATCH 05/18] Adding table header/row style changes --- .../ViewControllers/TableViewController.swift | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/VDSSample/ViewControllers/TableViewController.swift b/VDSSample/ViewControllers/TableViewController.swift index 02326da..ffbb9c3 100644 --- a/VDSSample/ViewControllers/TableViewController.swift +++ b/VDSSample/ViewControllers/TableViewController.swift @@ -53,23 +53,29 @@ class TableViewController: BaseViewController
{ } headerLineStylePicker.onPickerDidSelect = { [weak self] item in - let headers = self?.component.tableHeader ?? [[]] - for currentRow in headers { - for var currentItem in currentRow { - currentItem.bottomLine = item + var headers = self?.component.tableHeader ?? [[]] + for currentHeaderIndex in 0.. Date: Fri, 24 May 2024 20:48:48 +0530 Subject: [PATCH 06/18] Adding fillContainer and column width elements to controller. --- .../ViewControllers/TableViewController.swift | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/VDSSample/ViewControllers/TableViewController.swift b/VDSSample/ViewControllers/TableViewController.swift index ffbb9c3..ceb696a 100644 --- a/VDSSample/ViewControllers/TableViewController.swift +++ b/VDSSample/ViewControllers/TableViewController.swift @@ -13,6 +13,10 @@ 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) }() @@ -38,12 +42,28 @@ 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 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() { @@ -104,6 +124,55 @@ class TableViewController: BaseViewController
{ 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([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([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 } } From 7a47221d626d6a3948a46bdd5a5a2582eeba37f7 Mon Sep 17 00:00:00 2001 From: Sumanth Nadigadda Date: Mon, 27 May 2024 10:56:09 +0530 Subject: [PATCH 07/18] Minor refactoring changes. --- .../ViewControllers/TableViewController.swift | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/VDSSample/ViewControllers/TableViewController.swift b/VDSSample/ViewControllers/TableViewController.swift index ceb696a..c4d4466 100644 --- a/VDSSample/ViewControllers/TableViewController.swift +++ b/VDSSample/ViewControllers/TableViewController.swift @@ -8,6 +8,7 @@ import Foundation import VDS import UIKit +import VDSTokens class TableViewController: BaseViewController
{ @@ -15,7 +16,9 @@ class TableViewController: BaseViewController
{ var fillContainer = Toggle() - var customColumnWidthSize = NumericField() + var customColumnWidthSize = NumericField().with { + $0.placeholder = "Minimum 50px" + } lazy var headerLineStylePicker = { PickerSelectorView(title: "primary", picker: self.picker, items: Line.Style.allCases) @@ -46,6 +49,7 @@ class TableViewController: BaseViewController
{ addFormRow(label: "Custom column size", view: customColumnWidthSize) fillContainer.isOn = component.fillContainer + updateTextFieldStatus(enable: !fillContainer.isOn) addContentTopView(view: component) @@ -55,14 +59,13 @@ class TableViewController: BaseViewController
{ fillContainer.onChange = { [weak self] sender in self?.component.fillContainer = sender.isOn - self?.customColumnWidthSize.isEnabled = !sender.isOn + self?.updateTextFieldStatus(enable:!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) + + customColumnWidthSize.numberPublisher.sink { [weak self] text in + if let count = self?.component.tableHeader.first?.count, let text, text.intValue > 50 { + self?.component.columnWidths = Array(repeating: CGFloat(truncating: text), count: count) } - }.store(in: &subscribers) } @@ -104,6 +107,11 @@ class TableViewController: BaseViewController
{ } } + 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 = ""}), From 0590309726ec93fde9accd0bf9f7ba944b0bc620 Mon Sep 17 00:00:00 2001 From: Sumanth Nadigadda Date: Mon, 27 May 2024 15:00:38 +0530 Subject: [PATCH 08/18] using TableRowModel to populate data for Table component. --- .../ViewControllers/TableViewController.swift | 46 +++++++++++-------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/VDSSample/ViewControllers/TableViewController.swift b/VDSSample/ViewControllers/TableViewController.swift index c4d4466..80110b0 100644 --- a/VDSSample/ViewControllers/TableViewController.swift +++ b/VDSSample/ViewControllers/TableViewController.swift @@ -60,10 +60,15 @@ class TableViewController: BaseViewController
{ 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?.count, let text, text.intValue > 50 { + 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) @@ -76,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 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 { @@ -147,9 +153,9 @@ class TableViewController: BaseViewController
{ let button = Button() button.text = "Testing" - rows.append([TableItemModel(bottomLine: .secondary, component:Toggle()), + rows.append(TableRowModel(columns: [TableItemModel(bottomLine: .secondary, component:Toggle()), TableItemModel(bottomLine: .secondary, component:titleLockUp), - TableItemModel(bottomLine: .secondary, component: button)]) + TableItemModel(bottomLine: .secondary, component: button)])) ///Fifth row @@ -172,9 +178,9 @@ class TableViewController: BaseViewController
{ let image = UIImage(named: "clean-surface") let imageView = UIImageView(image: image) - rows.append([TableItemModel(bottomLine: .secondary, component:textArea), + rows.append(TableRowModel(columns: [TableItemModel(bottomLine: .secondary, component:textArea), TableItemModel(bottomLine: .secondary, component:imageView), - TableItemModel(bottomLine: .secondary, component:trailingToolTip)]) + TableItemModel(bottomLine: .secondary, component:trailingToolTip)])) } From 31abec052926bfa512d5b8cd5c997f28e6435373 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Mon, 3 Jun 2024 16:44:40 -0500 Subject: [PATCH 09/18] added xcconfig files Signed-off-by: Matt Bruce --- VDS.xcworkspace/contents.xcworkspacedata | 3 +++ VDSSample.xcodeproj/project.pbxproj | 12 ++++++++++++ VDSSample/Supporting Files/vds-sample-dev.xcconfig | 11 +++++++++++ VDSSample/Supporting Files/vds-sample.xcconfig | 11 +++++++++++ VDSSample/ViewControllers/MenuViewController.swift | 13 +++++++++---- workspaceSettings.xcconfig | 11 +++++++++++ 6 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 VDSSample/Supporting Files/vds-sample-dev.xcconfig create mode 100644 VDSSample/Supporting Files/vds-sample.xcconfig create mode 100644 workspaceSettings.xcconfig diff --git a/VDS.xcworkspace/contents.xcworkspacedata b/VDS.xcworkspace/contents.xcworkspacedata index 91951bf..8ba7391 100644 --- a/VDS.xcworkspace/contents.xcworkspacedata +++ b/VDS.xcworkspace/contents.xcworkspacedata @@ -1,6 +1,9 @@ + + diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index def532e..f68bcb4 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -161,6 +161,8 @@ EA5E305B295111050082B959 /* TileletViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TileletViewController.swift; sourceTree = ""; }; EA5F86CD2A1E863F00BC83E4 /* TabsContainerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabsContainerViewController.swift; sourceTree = ""; }; EA6642962BD1B2E700D81DC4 /* ColorPickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorPickerView.swift; sourceTree = ""; }; + EA78C7A42C0E64A800430AD1 /* vds-sample-dev.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "vds-sample-dev.xcconfig"; sourceTree = ""; }; + EA78C7A52C0E64CC00430AD1 /* vds-sample.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "vds-sample.xcconfig"; sourceTree = ""; }; EA81410D2A0ED8DC004F60D2 /* ButtonIconViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonIconViewController.swift; sourceTree = ""; }; EA89201828B56DF5006B9984 /* RadioBoxGroupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioBoxGroupViewController.swift; sourceTree = ""; }; EA89203F28B66CE2006B9984 /* ScrollViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScrollViewController.swift; sourceTree = ""; }; @@ -359,6 +361,8 @@ children = ( EAF7F0C4289DA24F00B287F5 /* Artifactory */, EAF7F0792899698800B287F5 /* Resources */, + EA78C7A42C0E64A800430AD1 /* vds-sample-dev.xcconfig */, + EA78C7A52C0E64CC00430AD1 /* vds-sample.xcconfig */, ); path = "Supporting Files"; sourceTree = ""; @@ -579,6 +583,7 @@ /* Begin XCBuildConfiguration section */ EA3C3BAB289966F1000CA526 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = EA78C7A42C0E64A800430AD1 /* vds-sample-dev.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; @@ -639,6 +644,7 @@ }; EA3C3BAC289966F1000CA526 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = EA78C7A52C0E64CC00430AD1 /* vds-sample.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; @@ -693,6 +699,7 @@ }; EA3C3BAE289966F1000CA526 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = EA78C7A42C0E64A800430AD1 /* vds-sample-dev.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -728,6 +735,7 @@ }; EA3C3BAF289966F1000CA526 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = EA78C7A52C0E64CC00430AD1 /* vds-sample.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -763,6 +771,7 @@ }; EAF7F0C0289DA16000B287F5 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = EA78C7A42C0E64A800430AD1 /* vds-sample-dev.xcconfig */; buildSettings = { CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = FCMA4QKS77; @@ -772,6 +781,7 @@ }; EAF7F0C1289DA16000B287F5 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = EA78C7A52C0E64CC00430AD1 /* vds-sample.xcconfig */; buildSettings = { CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = FCMA4QKS77; @@ -781,6 +791,7 @@ }; EAF7F0D0289DA44300B287F5 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = EA78C7A42C0E64A800430AD1 /* vds-sample-dev.xcconfig */; buildSettings = { CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = FCMA4QKS77; @@ -790,6 +801,7 @@ }; EAF7F0D1289DA44300B287F5 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = EA78C7A52C0E64CC00430AD1 /* vds-sample.xcconfig */; buildSettings = { CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = FCMA4QKS77; diff --git a/VDSSample/Supporting Files/vds-sample-dev.xcconfig b/VDSSample/Supporting Files/vds-sample-dev.xcconfig new file mode 100644 index 0000000..29820fd --- /dev/null +++ b/VDSSample/Supporting Files/vds-sample-dev.xcconfig @@ -0,0 +1,11 @@ +// +// vds-sample-dev.xcconfig +// VDSSample +// +// Created by Matt Bruce on 6/3/24. +// + +// Configuration settings file format documentation can be found at: +// https://help.apple.com/xcode/#/dev745c5c974 + +#include? "../../workspaceSettings.xcconfig" diff --git a/VDSSample/Supporting Files/vds-sample.xcconfig b/VDSSample/Supporting Files/vds-sample.xcconfig new file mode 100644 index 0000000..0d89410 --- /dev/null +++ b/VDSSample/Supporting Files/vds-sample.xcconfig @@ -0,0 +1,11 @@ +// +// vds-sample.xcconfig +// VDSSample +// +// Created by Matt Bruce on 6/3/24. +// + +// Configuration settings file format documentation can be found at: +// https://help.apple.com/xcode/#/dev745c5c974 + +#include? "../../workspaceSettings.xcconfig" diff --git a/VDSSample/ViewControllers/MenuViewController.swift b/VDSSample/ViewControllers/MenuViewController.swift index 9ec0747..272f8f3 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -111,10 +111,15 @@ class MenuViewController: UITableViewController, TooltipLaunchable { override func viewDidLoad() { title = "VDS Sample: Build \(Bundle.main.build ?? "none")" - let tooltip = VDS.Tooltip() - tooltip.title = "Release Notes: \(VDSHelper.version)" - tooltip.content = VDSHelper.releaseNotes() - navigationItem.rightBarButtonItem = UIBarButtonItem(customView: tooltip) + + let content = VDSHelper.releaseNotes() + if !content.isEmpty { + let tooltip = VDS.Tooltip() + tooltip.title = "Release Notes: \(VDSHelper.version)" + tooltip.content = content + navigationItem.rightBarButtonItem = UIBarButtonItem(customView: tooltip) + } + super.viewDidLoad() overrideUserInterfaceStyle = .light tableView.register(MenuCell.self, forCellReuseIdentifier: "cell") diff --git a/workspaceSettings.xcconfig b/workspaceSettings.xcconfig new file mode 100644 index 0000000..c59c5be --- /dev/null +++ b/workspaceSettings.xcconfig @@ -0,0 +1,11 @@ +// +// workspaceSettings.xcconfig +// +// +// Created by Matt Bruce on 6/3/24. +// + +// Configuration settings file format documentation can be found at: +// https://help.apple.com/xcode/#/dev745c5c974 + +VDS_ADD_CHANGELOG_FILES = 1 From c344d0196b45bb2e956bb3628f76281c7ea21c1a Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 5 Jun 2024 09:32:57 -0500 Subject: [PATCH 10/18] initial cut Signed-off-by: Matt Bruce --- .../TileletViewController.swift | 194 +++++++++--------- .../TitleLockupViewController.swift | 117 +++++------ 2 files changed, 149 insertions(+), 162 deletions(-) diff --git a/VDSSample/ViewControllers/TileletViewController.swift b/VDSSample/ViewControllers/TileletViewController.swift index aafe67d..e4e0c10 100644 --- a/VDSSample/ViewControllers/TileletViewController.swift +++ b/VDSSample/ViewControllers/TileletViewController.swift @@ -71,7 +71,7 @@ class TileletViewController: BaseViewController { enum ColorPickerType { case backgroundColor case gradientColor1, gradientColor2 - case contentViewBackgroundColor, light, dark + case contentViewBackgroundColor, custom } lazy var gradientColorView1: ColorPickerView = { @@ -107,11 +107,11 @@ class TileletViewController: BaseViewController { } enum TitleTextColor: String, CaseIterable { - case primary, custom + case primary, token, custom } enum TextColor: String, CaseIterable { - case primary, secondary, custom + case primary, secondary, token, custom } /// eyebrow @@ -122,15 +122,15 @@ class TileletViewController: BaseViewController { items: TextColor.allCases) }() - lazy var eyebrowLightColorView: ColorPickerView = { - return .init(with: ColorPickerType.light) { [weak self] picker in - self?.colorPickerType = picker.pickerType - self?.selectedColorTapped(picker) - } + lazy var eyebrowTokenColorView = { + PickerSelectorView(title: "paletteBlack", + picker: self.picker, + items: UIColor.VDSColor.allCases) }() - - lazy var eyebrowDarkColorView: ColorPickerView = { - return .init(with: ColorPickerType.dark) { [weak self] picker in + + lazy var eyebrowCustomColorView: ColorPickerView = { + return .init(with: ColorPickerType.custom) { [weak self] picker in + self?.currentSurfaceColorType = .eyebrow self?.colorPickerType = picker.pickerType self?.selectedColorTapped(picker) } @@ -143,15 +143,15 @@ class TileletViewController: BaseViewController { picker: self.picker, items: TitleTextColor.allCases) }() - lazy var titleLightColorView: ColorPickerView = { - return .init(with: ColorPickerType.light) { [weak self] picker in - self?.colorPickerType = picker.pickerType - self?.selectedColorTapped(picker) - } + lazy var titleTokenColorView = { + PickerSelectorView(title: "paletteBlack", + picker: self.picker, + items: UIColor.VDSColor.allCases) }() - - lazy var titleDarkColorView: ColorPickerView = { - return .init(with: ColorPickerType.dark) { [weak self] picker in + + lazy var titleCustomColorView: ColorPickerView = { + return .init(with: ColorPickerType.custom) { [weak self] picker in + self?.currentSurfaceColorType = .title self?.colorPickerType = picker.pickerType self?.selectedColorTapped(picker) } @@ -164,20 +164,21 @@ class TileletViewController: BaseViewController { picker: self.picker, items: TextColor.allCases) }() - lazy var subtitleLightColorView: ColorPickerView = { - return .init(with: ColorPickerType.light) { [weak self] picker in - self?.colorPickerType = picker.pickerType - self?.selectedColorTapped(picker) - } + lazy var subtitleTokenColorView = { + PickerSelectorView(title: "paletteBlack", + picker: self.picker, + items: UIColor.VDSColor.allCases) }() - - lazy var subtitleDarkColorView: ColorPickerView = { - return .init(with: ColorPickerType.dark) { [weak self] picker in + + lazy var subtitleCustomColorView: ColorPickerView = { + return .init(with: ColorPickerType.custom) { [weak self] picker in + self?.currentSurfaceColorType = .subtitle self?.colorPickerType = picker.pickerType self?.selectedColorTapped(picker) } }() + var descriptionIconFormStackView = FormSection().with { $0.isHidden = true } lazy var descriptionNamePickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, @@ -190,34 +191,35 @@ class TileletViewController: BaseViewController { items: Icon.Size.allCases) }() - lazy var descriptionIconLightColorView: ColorPickerView = { - return .init(with: ColorPickerType.light) { [weak self] picker in + lazy var descriptionIconTokenColorView = { + PickerSelectorView(title: "paletteBlack", + picker: self.picker, + items: UIColor.VDSColor.allCases) + }() + + lazy var descriptionIconCustomColorView: ColorPickerView = { + return .init(with: ColorPickerType.custom) { [weak self] picker in self?.currentSurfaceColorType = .descriptionIcon self?.colorPickerType = picker.pickerType self?.selectedColorTapped(picker) } }() - - var descriptionIconFormStackView = FormSection().with { $0.isHidden = true } - lazy var descriptionIconDarkColorView: ColorPickerView = { - return .init(with: ColorPickerType.dark) { [weak self] picker in - self?.currentSurfaceColorType = .descriptionIcon - self?.colorPickerType = picker.pickerType - self?.selectedColorTapped(picker) - } - }() - + var directionalIconFormStackView = FormSection().with { $0.isHidden = true } - lazy var directionalIconLightColorView: ColorPickerView = { - return .init(with: ColorPickerType.light) { [weak self] picker in - self?.currentSurfaceColorType = .directionalIcon - self?.colorPickerType = picker.pickerType - self?.selectedColorTapped(picker) - } + lazy var directionalIconSizePickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: Icon.Size.allCases) }() - - lazy var directionalIconDarkColorView: ColorPickerView = { - return .init(with: ColorPickerType.dark) { [weak self] picker in + + lazy var directionalIconTokenColorView = { + PickerSelectorView(title: "paletteBlack", + picker: self.picker, + items: UIColor.VDSColor.allCases) + }() + + lazy var directionalIconCustomColorView: ColorPickerView = { + return .init(with: ColorPickerType.custom) { [weak self] picker in self?.currentSurfaceColorType = .directionalIcon self?.colorPickerType = picker.pickerType self?.selectedColorTapped(picker) @@ -309,8 +311,8 @@ class TileletViewController: BaseViewController { $0.addFormRow(label: "Color", view: eyebrowColorPickerSelectorView) })) - eyebrowColorsFormStackView.addFormRow(label: "Light", view: eyebrowLightColorView) - eyebrowColorsFormStackView.addFormRow(label: "Dark", view: eyebrowDarkColorView) + eyebrowColorsFormStackView.addFormRow(label: "Token", view: eyebrowTokenColorView) + eyebrowColorsFormStackView.addFormRow(label: "Custom", view: eyebrowCustomColorView) append(section: eyebrowColorsFormStackView) append(section: .init().with({ @@ -320,8 +322,8 @@ class TileletViewController: BaseViewController { $0.addFormRow(label: "Text", view: titleTextField) $0.addFormRow(label: "Color", view: titleColorPickerSelectorView) })) - titleColorsFormStackView.addFormRow(label: "Light", view: titleLightColorView) - titleColorsFormStackView.addFormRow(label: "Dark", view: titleDarkColorView) + titleColorsFormStackView.addFormRow(label: "Token", view: titleTokenColorView) + titleColorsFormStackView.addFormRow(label: "Custom", view: titleCustomColorView) append(section: titleColorsFormStackView) append(section: .init().with({ @@ -329,8 +331,8 @@ class TileletViewController: BaseViewController { $0.addFormRow(label: "Text", view: subTitleTextField) $0.addFormRow(label: "Color", view: subtitleColorPickerSelectorView) })) - subtitleColorsFormStackView.addFormRow(label: "Light", view: subtitleLightColorView) - subtitleColorsFormStackView.addFormRow(label: "Dark", view: subtitleDarkColorView) + subtitleColorsFormStackView.addFormRow(label: "Token", view: subtitleTokenColorView) + subtitleColorsFormStackView.addFormRow(label: "Custom", view: subtitleCustomColorView) append(section: subtitleColorsFormStackView) append(section: .init().with({ @@ -340,8 +342,8 @@ class TileletViewController: BaseViewController { append(section: descriptionIconFormStackView) descriptionIconFormStackView.addFormRow(label: "Icon", view: descriptionNamePickerSelectorView) descriptionIconFormStackView.addFormRow(label: "Size", view: descriptionIconSizePickerSelectorView) - descriptionIconFormStackView.addFormRow(label: "Light", view: descriptionIconLightColorView) - descriptionIconFormStackView.addFormRow(label: "Dark", view: descriptionIconDarkColorView) + descriptionIconFormStackView.addFormRow(label: "Token", view: descriptionIconTokenColorView) + descriptionIconFormStackView.addFormRow(label: "Custom", view: descriptionIconCustomColorView) append(section: .init().with({ $0.title = "Directional Icon" @@ -350,8 +352,8 @@ class TileletViewController: BaseViewController { append(section: directionalIconFormStackView) directionalIconFormStackView.addFormRow(label: "Icon", view: directionIconPickerSelectorView) directionalIconFormStackView.addFormRow(label: "Size", view: directionIconSizePickerSelectorView) - directionalIconFormStackView.addFormRow(label: "Light", view: directionalIconLightColorView) - directionalIconFormStackView.addFormRow(label: "Dark", view: directionalIconDarkColorView) + directionalIconFormStackView.addFormRow(label: "Token", view: directionalIconTokenColorView) + directionalIconFormStackView.addFormRow(label: "Dark", view: directionalIconCustomColorView) clickableSwitch.onChange = { [weak self] sender in guard let self else { return } @@ -511,13 +513,11 @@ class TileletViewController: BaseViewController { scalingTypePickerSelectorView.text = component.aspectRatio.rawValue updateOtherTextStyles() - descriptionIconLightColorView.selectedColor = VDSColor.elementsPrimaryOnlight - descriptionIconDarkColorView.selectedColor = VDSColor.elementsPrimaryOndark + descriptionIconCustomColorView.selectedColor = VDSColor.elementsPrimaryOnlight descriptionNamePickerSelectorView.text = Icon.Name.multipleDocuments.rawValue descriptionIconSizePickerSelectorView.text = Icon.Size.medium.rawValue - directionalIconLightColorView.selectedColor = VDSColor.elementsPrimaryOnlight - directionalIconDarkColorView.selectedColor = VDSColor.elementsPrimaryOndark + directionalIconCustomColorView.selectedColor = VDSColor.elementsPrimaryOnlight directionIconPickerSelectorView.text = Tilelet.DirectionalIcon.IconType.rightArrow.rawValue directionIconSizePickerSelectorView.text = Tilelet.DirectionalIcon.IconSize.medium.rawValue } @@ -537,12 +537,13 @@ class TileletViewController: BaseViewController { switch titleColorPickerSelectorView.selectedItem { case .primary: textColor = .primary + case .token: + textColor = .token(titleTokenColorView.selectedItem) case .custom: - if let light = titleLightColorView.selectedColor { - let dark = titleDarkColorView.selectedColor ?? light - textColor = .custom(light, dark) + if let color = titleCustomColorView.selectedColor { + textColor = .custom(color) } else { - textColor = .custom(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark) + textColor = .custom(VDSColor.elementsPrimaryOnlight) } } @@ -560,12 +561,13 @@ class TileletViewController: BaseViewController { textColor = .primary case .secondary: textColor = .secondary + case .token: + textColor = .token(subtitleTokenColorView.selectedItem) case .custom: - if let light = subtitleLightColorView.selectedColor { - let dark = subtitleDarkColorView.selectedColor ?? light - textColor = .custom(light, dark) + if let color = subtitleCustomColorView.selectedColor { + textColor = .custom(color) } else { - textColor = .custom(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark) + textColor = .custom(VDSColor.elementsPrimaryOnlight) } } @@ -583,15 +585,15 @@ class TileletViewController: BaseViewController { textColor = .primary case .secondary: textColor = .secondary + case .token: + textColor = .token(eyebrowTokenColorView.selectedItem) case .custom: - if let light = eyebrowLightColorView.selectedColor { - let dark = eyebrowDarkColorView.selectedColor ?? light - textColor = .custom(light, dark) + if let color = eyebrowCustomColorView.selectedColor { + textColor = .custom(color) } else { - textColor = .custom(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark) + textColor = .custom(VDSColor.elementsPrimaryOnlight) } } - component.eyebrowModel = Tilelet.EyebrowModel(text: text, textColor: textColor, isBold: eyebrowIsBold.isOn, standardStyle: otherStandardStylePickerSelectorView.selectedItem) } else { component.eyebrowModel = nil @@ -599,14 +601,14 @@ class TileletViewController: BaseViewController { } func setDescriptiveIconModel() { - let light = descriptionIconLightColorView.selectedColor ?? descriptionIconDarkColorView.selectedColor - let dark = descriptionIconDarkColorView.selectedColor ?? descriptionIconLightColorView.selectedColor + let custom = descriptionIconCustomColorView.selectedColor ?? VDSColor.paletteBlack + let token = descriptionIconTokenColorView.selectedItem let iconSize = descriptionIconSizePickerSelectorView.selectedItem let iconName = descriptionNamePickerSelectorView.selectedItem - if let light, let dark { + if let iconColor { component.descriptiveIconModel = .init(name: iconName, - colorConfiguration: SurfaceColorConfiguration(light, dark), size: iconSize) + iconColor: iconColor, size: iconSize) } else { component.descriptiveIconModel = .init(name: iconName, size: iconSize) @@ -614,13 +616,13 @@ class TileletViewController: BaseViewController { } func setDirectionalIconModel() { - let light = directionalIconLightColorView.selectedColor ?? directionalIconDarkColorView.selectedColor - let dark = directionalIconDarkColorView.selectedColor ?? directionalIconLightColorView.selectedColor + let custom = directionalIconCustomColorView.selectedColor ?? VDSColor.paletteBlack + let token = directionalIconTokenColorView.selectedItem let iconType = directionIconPickerSelectorView.selectedItem let iconSize = directionIconSizePickerSelectorView.selectedItem - if let light, let dark { - component.directionalIconModel = .init(iconType: iconType, colorConfiguration: SurfaceColorConfiguration(light, dark), size: iconSize) + if let iconColor { + component.directionalIconModel = .init(iconType: iconType, iconColor: iconColor, size: iconSize) } else { component.directionalIconModel = .init(iconType: iconType, size: iconSize) } @@ -809,32 +811,22 @@ extension TileletViewController: UIColorPickerViewControllerDelegate { gradientColorView2.selectedColor = viewController.selectedColor updateGradientColors() - case .light, .dark: - var lightColorView: ColorPickerView - var darkColorView: ColorPickerView + case .custom: + var colorView: ColorPickerView switch currentSurfaceColorType { case .eyebrow: - lightColorView = eyebrowLightColorView - darkColorView = eyebrowDarkColorView + colorView = eyebrowCustomColorView case .title: - lightColorView = titleLightColorView - darkColorView = titleDarkColorView + colorView = titleCustomColorView case .subtitle: - lightColorView = subtitleLightColorView - darkColorView = subtitleDarkColorView + colorView = subtitleCustomColorView case .directionalIcon: - lightColorView = directionalIconLightColorView - darkColorView = directionalIconDarkColorView + colorView = directionalIconCustomColorView case .descriptionIcon: - lightColorView = descriptionIconLightColorView - darkColorView = descriptionIconDarkColorView - } - if colorPickerType == .light { - lightColorView.selectedColor = viewController.selectedColor - } else { - darkColorView.selectedColor = viewController.selectedColor + colorView = descriptionIconCustomColorView } + colorView.selectedColor = viewController.selectedColor switch currentSurfaceColorType { case .eyebrow: diff --git a/VDSSample/ViewControllers/TitleLockupViewController.swift b/VDSSample/ViewControllers/TitleLockupViewController.swift index 6f2c298..7e15dde 100644 --- a/VDSSample/ViewControllers/TitleLockupViewController.swift +++ b/VDSSample/ViewControllers/TitleLockupViewController.swift @@ -45,22 +45,22 @@ class TitleLockupViewController: BaseViewController { }() var currentLabelType: LabelType = .title - var colorPickerType: ColorPickerType = .light + var colorPickerType: ColorPickerType = .custom enum LabelType { case eyebrow, title, subtitle } enum TitleTextColor: String, CaseIterable { - case primary, custom + case primary, token, custom } enum TextColor: String, CaseIterable { - case primary, secondary, custom + case primary, secondary, token, custom } enum ColorPickerType { - case light, dark + case custom } /// eyebrow @@ -71,15 +71,14 @@ class TitleLockupViewController: BaseViewController { items: TextColor.allCases) }() - lazy var eyebrowLightColorView: ColorPickerView = { - return .init(with: ColorPickerType.light) { [weak self] picker in - self?.colorPickerType = picker.pickerType - self?.selectedColorTapped(picker) - } + lazy var eyebrowTokenColorView = { + PickerSelectorView(title: "paletteBlack", + picker: self.picker, + items: UIColor.VDSColor.allCases) }() - - lazy var eyebrowDarkColorView: ColorPickerView = { - return .init(with: ColorPickerType.dark) { [weak self] picker in + + lazy var eyebrowCustomColorView: ColorPickerView = { + return .init(with: ColorPickerType.custom) { [weak self] picker in self?.colorPickerType = picker.pickerType self?.selectedColorTapped(picker) } @@ -92,15 +91,15 @@ class TitleLockupViewController: BaseViewController { picker: self.picker, items: TitleTextColor.allCases) }() - lazy var titleLightColorView: ColorPickerView = { - return .init(with: ColorPickerType.light) { [weak self] picker in - self?.colorPickerType = picker.pickerType - self?.selectedColorTapped(picker) - } - }() - lazy var titleDarkColorView: ColorPickerView = { - return .init(with: ColorPickerType.dark) { [weak self] picker in + lazy var titleTokenColorView = { + PickerSelectorView(title: "paletteBlack", + picker: self.picker, + items: UIColor.VDSColor.allCases) + }() + + lazy var titleCustomColorView: ColorPickerView = { + return .init(with: ColorPickerType.custom) { [weak self] picker in self?.colorPickerType = picker.pickerType self?.selectedColorTapped(picker) } @@ -113,15 +112,15 @@ class TitleLockupViewController: BaseViewController { picker: self.picker, items: TextColor.allCases) }() - lazy var subtitleLightColorView: ColorPickerView = { - return .init(with: ColorPickerType.light) { [weak self] picker in - self?.colorPickerType = picker.pickerType - self?.selectedColorTapped(picker) - } - }() - lazy var subtitleDarkColorView: ColorPickerView = { - return .init(with: ColorPickerType.dark) { [weak self] picker in + lazy var subtitleTokenColorView = { + PickerSelectorView(title: "paletteBlack", + picker: self.picker, + items: UIColor.VDSColor.allCases) + }() + + lazy var subtitleCustomColorView: ColorPickerView = { + return .init(with: ColorPickerType.custom) { [weak self] picker in self?.colorPickerType = picker.pickerType self?.selectedColorTapped(picker) } @@ -145,22 +144,22 @@ class TitleLockupViewController: BaseViewController { addFormRow(label: "Eyebrow is Bold", view: eyebrowIsBold) addFormRow(label: "Eyebrow Text", view: eyebrowTextField) addFormRow(label: "Eyebrow Color", view: eyebrowColorPickerSelectorView) - eyebrowColorsFormStackView.addFormRow(label: "Light", view: eyebrowLightColorView) - eyebrowColorsFormStackView.addFormRow(label: "Dark", view: eyebrowDarkColorView) + eyebrowColorsFormStackView.addFormRow(label: "Token", view: eyebrowTokenColorView) + eyebrowColorsFormStackView.addFormRow(label: "Custom", view: eyebrowCustomColorView) append(section: eyebrowColorsFormStackView) addFormRow(label: "Title is Bold", view: titleIsBold) addFormRow(label: "Title Style", view: titleStandardStylePickerSelectorView) addFormRow(label: "Title Text", view: titleTextField) addFormRow(label: "Title Color", view: titleColorPickerSelectorView) - titleColorsFormStackView.addFormRow(label: "Light", view: titleLightColorView) - titleColorsFormStackView.addFormRow(label: "Dark", view: titleDarkColorView) + titleColorsFormStackView.addFormRow(label: "Token", view: titleTokenColorView) + titleColorsFormStackView.addFormRow(label: "Dark", view: titleCustomColorView) append(section: titleColorsFormStackView) addFormRow(label: "Subtitle Text", view: subTitleTextField) addFormRow(label: "Subtitle Color", view: subtitleColorPickerSelectorView) - subtitleColorsFormStackView.addFormRow(label: "Light", view: subtitleLightColorView) - subtitleColorsFormStackView.addFormRow(label: "Dark", view: subtitleDarkColorView) + subtitleColorsFormStackView.addFormRow(label: "Token", view: subtitleTokenColorView) + subtitleColorsFormStackView.addFormRow(label: "Custom", view: subtitleCustomColorView) append(section: subtitleColorsFormStackView) @@ -221,12 +220,13 @@ class TitleLockupViewController: BaseViewController { switch titleColorPickerSelectorView.selectedItem { case .primary: textColor = .primary + case .token: + textColor = .token(titleTokenColorView.selectedItem) case .custom: - if let light = titleLightColorView.selectedColor { - let dark = titleDarkColorView.selectedColor ?? light - textColor = .custom(light, dark) + if let color = titleCustomColorView.selectedColor { + textColor = .custom(color) } else { - textColor = .custom(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark) + textColor = .custom(VDSColor.elementsPrimaryOnlight) } } @@ -255,12 +255,13 @@ class TitleLockupViewController: BaseViewController { textColor = .primary case .secondary: textColor = .secondary + case .token: + textColor = .token(subtitleTokenColorView.selectedItem) case .custom: - if let light = subtitleLightColorView.selectedColor { - let dark = subtitleDarkColorView.selectedColor ?? light - textColor = .custom(light, dark) + if let color = subtitleCustomColorView.selectedColor { + textColor = .custom(color) } else { - textColor = .custom(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark) + textColor = .custom(VDSColor.elementsPrimaryOnlight) } } component.subTitleModel = TitleLockup.SubTitleModel(text: text, otherStandardStyle: style, textColor: textColor) @@ -276,13 +277,15 @@ class TitleLockupViewController: BaseViewController { textColor = .primary case .secondary: textColor = .secondary + case .token: + textColor = .token(eyebrowTokenColorView.selectedItem) case .custom: - if let light = eyebrowLightColorView.selectedColor { - let dark = eyebrowDarkColorView.selectedColor ?? light - textColor = .custom(light, dark) + if let color = eyebrowCustomColorView.selectedColor { + textColor = .custom(color) } else { - textColor = .custom(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark) - } } + textColor = .custom(VDSColor.elementsPrimaryOnlight) + } + } component.eyebrowModel = TitleLockup.EyebrowModel(text: text, textColor: textColor, isBold: eyebrowIsBold.isOn, standardStyle: style) debug(type: "EyeBrow", textStyle: eyebrowIsBold.isOn ? style.value.bold : style.value.regular) @@ -373,26 +376,18 @@ extension TitleLockupViewController: UIColorPickerViewControllerDelegate { func colorPickerViewControllerDidSelectColor(_ viewController: UIColorPickerViewController) { guard let hexString = viewController.selectedColor.hexString else { return } - var lightColorView: ColorPickerView - var darkColorView: ColorPickerView + var colorView: ColorPickerView switch currentLabelType { case .eyebrow: - lightColorView = eyebrowLightColorView - darkColorView = eyebrowDarkColorView + colorView = eyebrowCustomColorView case .title: - lightColorView = titleLightColorView - darkColorView = titleDarkColorView + colorView = titleCustomColorView case .subtitle: - lightColorView = subtitleLightColorView - darkColorView = subtitleDarkColorView - } - switch colorPickerType { - case .light: - lightColorView.selectedColor = viewController.selectedColor - case .dark: - darkColorView.selectedColor = viewController.selectedColor + colorView = subtitleCustomColorView } + + colorView.selectedColor = viewController.selectedColor if currentLabelType == .title { setTitleModel() From 2253f0fadbf63d5883bccadb875044b72cc6e3ea Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 5 Jun 2024 10:56:37 -0500 Subject: [PATCH 11/18] got titlelockup example working Signed-off-by: Matt Bruce --- .../TileletViewController.swift | 39 +++++++++++-------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/VDSSample/ViewControllers/TileletViewController.swift b/VDSSample/ViewControllers/TileletViewController.swift index e4e0c10..74329bc 100644 --- a/VDSSample/ViewControllers/TileletViewController.swift +++ b/VDSSample/ViewControllers/TileletViewController.swift @@ -71,7 +71,7 @@ class TileletViewController: BaseViewController { enum ColorPickerType { case backgroundColor case gradientColor1, gradientColor2 - case contentViewBackgroundColor, custom + case contentViewBackgroundColor, token, custom } lazy var gradientColorView1: ColorPickerView = { @@ -114,6 +114,10 @@ class TileletViewController: BaseViewController { case primary, secondary, token, custom } + enum IconColor: String, CaseIterable { + case token, custom + } + /// eyebrow var eyebrowColorsFormStackView = FormSection().with { $0.isHidden = true } lazy var eyebrowColorPickerSelectorView = { @@ -605,14 +609,8 @@ class TileletViewController: BaseViewController { let token = descriptionIconTokenColorView.selectedItem let iconSize = descriptionIconSizePickerSelectorView.selectedItem let iconName = descriptionNamePickerSelectorView.selectedItem - - if let iconColor { - component.descriptiveIconModel = .init(name: iconName, - iconColor: iconColor, size: iconSize) - } else { - component.descriptiveIconModel = .init(name: iconName, - size: iconSize) - } + let iconColor: Tilelet.IconColor = colorPickerType == .token ? .token(token) : .custom(custom) + component.descriptiveIconModel = .init(name: iconName, iconColor: iconColor, size: iconSize) } func setDirectionalIconModel() { @@ -620,12 +618,8 @@ class TileletViewController: BaseViewController { let token = directionalIconTokenColorView.selectedItem let iconType = directionIconPickerSelectorView.selectedItem let iconSize = directionIconSizePickerSelectorView.selectedItem - - if let iconColor { - component.directionalIconModel = .init(iconType: iconType, iconColor: iconColor, size: iconSize) - } else { - component.directionalIconModel = .init(iconType: iconType, size: iconSize) - } + let iconColor: Tilelet.IconColor = colorPickerType == .token ? .token(token) : .custom(custom) + component.directionalIconModel = .init(iconType: iconType, iconColor: iconColor, size: iconSize) } func updateOtherTextStyles() { @@ -731,6 +725,11 @@ class TileletViewController: BaseViewController { self?.setDescriptiveIconModel() } + descriptionIconTokenColorView.onPickerDidSelect = { [weak self] item in + self?.colorPickerType = .token + self?.setDescriptiveIconModel() + } + directionIconPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.setDirectionalIconModel() } @@ -738,6 +737,11 @@ class TileletViewController: BaseViewController { directionIconSizePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.setDirectionalIconModel() } + + directionalIconTokenColorView.onPickerDidSelect = { [weak self] item in + self?.colorPickerType = .token + self?.setDirectionalIconModel() + } } func getTilelet(effect: TileContainer.BackgroundEffect) -> Tilelet.BackgroundEffect { @@ -810,7 +814,6 @@ extension TileletViewController: UIColorPickerViewControllerDelegate { case .gradientColor2: gradientColorView2.selectedColor = viewController.selectedColor updateGradientColors() - case .custom: var colorView: ColorPickerView @@ -839,7 +842,9 @@ extension TileletViewController: UIColorPickerViewControllerDelegate { setDirectionalIconModel() case .descriptionIcon: setDescriptiveIconModel() - } + } + default: + break } } From 28caf2e27d20051811cb454ae69070f2c833767c Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 5 Jun 2024 12:53:31 -0500 Subject: [PATCH 12/18] fixed more color example issues Signed-off-by: Matt Bruce --- .../TileletViewController.swift | 205 ++++++++++++++---- .../TitleLockupViewController.swift | 59 +++-- 2 files changed, 198 insertions(+), 66 deletions(-) diff --git a/VDSSample/ViewControllers/TileletViewController.swift b/VDSSample/ViewControllers/TileletViewController.swift index 74329bc..3a31181 100644 --- a/VDSSample/ViewControllers/TileletViewController.swift +++ b/VDSSample/ViewControllers/TileletViewController.swift @@ -115,11 +115,12 @@ class TileletViewController: BaseViewController { } enum IconColor: String, CaseIterable { - case token, custom + case `default`, token, custom } /// eyebrow - var eyebrowColorsFormStackView = FormSection().with { $0.isHidden = true } + var eyebrowTokenFormStackView = FormSection().with { $0.isHidden = true } + var eyebrowColorFormStackView = FormSection().with { $0.isHidden = true } lazy var eyebrowColorPickerSelectorView = { PickerSelectorView(title: "primary", picker: self.picker, @@ -141,7 +142,8 @@ class TileletViewController: BaseViewController { }() /// title - var titleColorsFormStackView = FormSection().with { $0.isHidden = true } + var titleTokenFormStackView = FormSection().with { $0.isHidden = true } + var titleColorFormStackView = FormSection().with { $0.isHidden = true } lazy var titleColorPickerSelectorView = { PickerSelectorView(title: "primary", picker: self.picker, @@ -162,7 +164,8 @@ class TileletViewController: BaseViewController { }() /// subtitle - var subtitleColorsFormStackView = FormSection().with { $0.isHidden = true } + var subtitleTokenFormStackView = FormSection().with { $0.isHidden = true } + var subtitleColorFormStackView = FormSection().with { $0.isHidden = true } lazy var subtitleColorPickerSelectorView = { PickerSelectorView(title: "primary", picker: self.picker, @@ -183,18 +186,27 @@ class TileletViewController: BaseViewController { }() var descriptionIconFormStackView = FormSection().with { $0.isHidden = true } + var descriptionIconTokenFormStackView = FormSection().with { $0.isHidden = true } + var descriptionIconColorFormStackView = FormSection().with { $0.isHidden = true } lazy var descriptionNamePickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, items: Icon.Name.all.sorted{ $0.rawValue < $1.rawValue }) }() - + lazy var descriptionIconSizePickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, items: Icon.Size.allCases) }() + lazy var descriptionIconColorPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: IconColor.allCases) + .with { $0.text = IconColor.default.rawValue } + }() + lazy var descriptionIconTokenColorView = { PickerSelectorView(title: "paletteBlack", picker: self.picker, @@ -210,12 +222,23 @@ class TileletViewController: BaseViewController { }() var directionalIconFormStackView = FormSection().with { $0.isHidden = true } + var directionalIconTokenFormStackView = FormSection().with { $0.isHidden = true } + var directionalIconColorFormStackView = FormSection().with { $0.isHidden = true } + lazy var directionalIconSizePickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, items: Icon.Size.allCases) }() + + lazy var directionalIconColorPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: IconColor.allCases) + .with { $0.text = IconColor.default.rawValue } + }() + lazy var directionalIconTokenColorView = { PickerSelectorView(title: "paletteBlack", picker: self.picker, @@ -315,9 +338,10 @@ class TileletViewController: BaseViewController { $0.addFormRow(label: "Color", view: eyebrowColorPickerSelectorView) })) - eyebrowColorsFormStackView.addFormRow(label: "Token", view: eyebrowTokenColorView) - eyebrowColorsFormStackView.addFormRow(label: "Custom", view: eyebrowCustomColorView) - append(section: eyebrowColorsFormStackView) + eyebrowTokenFormStackView.addFormRow(label: "Token", view: eyebrowTokenColorView) + eyebrowColorFormStackView.addFormRow(label: "Custom", view: eyebrowCustomColorView) + append(section: eyebrowTokenFormStackView) + append(section: eyebrowColorFormStackView) append(section: .init().with({ $0.title = "Title" @@ -326,18 +350,20 @@ class TileletViewController: BaseViewController { $0.addFormRow(label: "Text", view: titleTextField) $0.addFormRow(label: "Color", view: titleColorPickerSelectorView) })) - titleColorsFormStackView.addFormRow(label: "Token", view: titleTokenColorView) - titleColorsFormStackView.addFormRow(label: "Custom", view: titleCustomColorView) - append(section: titleColorsFormStackView) + titleTokenFormStackView.addFormRow(label: "Token", view: titleTokenColorView) + titleColorFormStackView.addFormRow(label: "Custom", view: titleCustomColorView) + append(section: titleTokenFormStackView) + append(section: titleColorFormStackView) append(section: .init().with({ $0.title = "Subtitle" $0.addFormRow(label: "Text", view: subTitleTextField) $0.addFormRow(label: "Color", view: subtitleColorPickerSelectorView) })) - subtitleColorsFormStackView.addFormRow(label: "Token", view: subtitleTokenColorView) - subtitleColorsFormStackView.addFormRow(label: "Custom", view: subtitleCustomColorView) - append(section: subtitleColorsFormStackView) + subtitleTokenFormStackView.addFormRow(label: "Token", view: subtitleTokenColorView) + subtitleColorFormStackView.addFormRow(label: "Custom", view: subtitleCustomColorView) + append(section: subtitleTokenFormStackView) + append(section: subtitleColorFormStackView) append(section: .init().with({ $0.title = "Description Icon " @@ -346,9 +372,13 @@ class TileletViewController: BaseViewController { append(section: descriptionIconFormStackView) descriptionIconFormStackView.addFormRow(label: "Icon", view: descriptionNamePickerSelectorView) descriptionIconFormStackView.addFormRow(label: "Size", view: descriptionIconSizePickerSelectorView) - descriptionIconFormStackView.addFormRow(label: "Token", view: descriptionIconTokenColorView) - descriptionIconFormStackView.addFormRow(label: "Custom", view: descriptionIconCustomColorView) + descriptionIconFormStackView.addFormRow(label: "Color", view: descriptionIconColorPickerSelectorView) + descriptionIconTokenFormStackView.addFormRow(label: "Token", view: descriptionIconTokenColorView) + descriptionIconColorFormStackView.addFormRow(label: "Custom", view: descriptionIconCustomColorView) + append(section: descriptionIconTokenFormStackView) + append(section: descriptionIconColorFormStackView) + append(section: .init().with({ $0.title = "Directional Icon" $0.addFormRow(label: "Show", view: showDirectionalIconSwitch) @@ -356,9 +386,12 @@ class TileletViewController: BaseViewController { append(section: directionalIconFormStackView) directionalIconFormStackView.addFormRow(label: "Icon", view: directionIconPickerSelectorView) directionalIconFormStackView.addFormRow(label: "Size", view: directionIconSizePickerSelectorView) - directionalIconFormStackView.addFormRow(label: "Token", view: directionalIconTokenColorView) - directionalIconFormStackView.addFormRow(label: "Dark", view: directionalIconCustomColorView) - + directionalIconFormStackView.addFormRow(label: "Color", view: directionalIconColorPickerSelectorView) + directionalIconTokenFormStackView.addFormRow(label: "Token", view: directionalIconTokenColorView) + directionalIconColorFormStackView.addFormRow(label: "Dark", view: directionalIconCustomColorView) + append(section: directionalIconTokenFormStackView) + append(section: directionalIconColorFormStackView) + clickableSwitch.onChange = { [weak self] sender in guard let self else { return } if sender.isOn { @@ -434,25 +467,13 @@ class TileletViewController: BaseViewController { }.store(in: &subscribers) showDescriptionIconSwitch.onChange = { [weak self] sender in - self?.descriptionIconFormStackView.isHidden = !sender.isOn - self?.directionalIconFormStackView.isHidden = sender.isOn - if sender.isOn { - self?.showDirectionalIconSwitch.isOn = false - self?.setDescriptiveIconModel() - } else { - self?.component.descriptiveIconModel = nil - } + guard let self else { return } + self.setDescriptionIconForm() } showDirectionalIconSwitch.onChange = { [weak self] sender in - self?.descriptionIconFormStackView.isHidden = sender.isOn - self?.directionalIconFormStackView.isHidden = !sender.isOn - if sender.isOn { - self?.showDescriptionIconSwitch.isOn = false - self?.setDirectionalIconModel() - } else { - self?.component.directionalIconModel = nil - } + guard let self else { return } + self.setDirectionalIconForm() } eyebrowIsBold.publisher(for: .valueChanged).sink { [weak self] toggle in @@ -496,6 +517,59 @@ class TileletViewController: BaseViewController { }.store(in: &subscribers) } + func setIconColorForms() { + setDirectionalIconColorForm() + setDescriptionIconColorForm() + } + + func setDescriptionIconForm() { + let showForm = showDescriptionIconSwitch.isOn + descriptionIconFormStackView.isHidden = !showForm + directionalIconFormStackView.isHidden = true + if showForm { + showDirectionalIconSwitch.isOn = false + setDescriptiveIconModel() + } else { + component.descriptiveIconModel = nil + } + setIconColorForms() + } + + func setDirectionalIconForm() { + let showForm = showDirectionalIconSwitch.isOn + directionalIconFormStackView.isHidden = !showForm + descriptionIconFormStackView.isHidden = true + if showForm { + showDescriptionIconSwitch.isOn = false + setDirectionalIconModel() + } else { + component.directionalIconModel = nil + } + setIconColorForms() + } + + func setDirectionalIconColorForm() { + let selectedItem = directionalIconColorPickerSelectorView.selectedItem + if showDirectionalIconSwitch.isOn && selectedItem != .default { + directionalIconTokenFormStackView.isHidden = selectedItem != .token + directionalIconColorFormStackView.isHidden = selectedItem != .custom + } else { + directionalIconTokenFormStackView.isHidden = true + directionalIconColorFormStackView.isHidden = true + } + } + + func setDescriptionIconColorForm() { + let selectedItem = descriptionIconColorPickerSelectorView.selectedItem + if showDescriptionIconSwitch.isOn && selectedItem != .default { + descriptionIconTokenFormStackView.isHidden = selectedItem != .token + descriptionIconColorFormStackView.isHidden = selectedItem != .custom + } else { + descriptionIconTokenFormStackView.isHidden = true + descriptionIconColorFormStackView.isHidden = true + } + } + func setupModel() { let titleModel = Tilelet.TitleModel(text: "Save $XX on your monthly bill.") let subTitleModel = Tilelet.SubTitleModel(text: "Enroll in Auto Pay & paper-free billing to save on your monthly bill.") @@ -605,20 +679,32 @@ class TileletViewController: BaseViewController { } func setDescriptiveIconModel() { - let custom = descriptionIconCustomColorView.selectedColor ?? VDSColor.paletteBlack - let token = descriptionIconTokenColorView.selectedItem let iconSize = descriptionIconSizePickerSelectorView.selectedItem let iconName = descriptionNamePickerSelectorView.selectedItem - let iconColor: Tilelet.IconColor = colorPickerType == .token ? .token(token) : .custom(custom) + var iconColor: Tilelet.IconColor? = nil + switch descriptionIconColorPickerSelectorView.selectedItem { + case .token: + iconColor = .token(descriptionIconTokenColorView.selectedItem) + case .custom: + iconColor = .custom(descriptionIconCustomColorView.selectedColor ?? .white) + default: + break + } component.descriptiveIconModel = .init(name: iconName, iconColor: iconColor, size: iconSize) } func setDirectionalIconModel() { - let custom = directionalIconCustomColorView.selectedColor ?? VDSColor.paletteBlack - let token = directionalIconTokenColorView.selectedItem let iconType = directionIconPickerSelectorView.selectedItem let iconSize = directionIconSizePickerSelectorView.selectedItem - let iconColor: Tilelet.IconColor = colorPickerType == .token ? .token(token) : .custom(custom) + var iconColor: Tilelet.IconColor? = nil + switch directionalIconColorPickerSelectorView.selectedItem { + case .token: + iconColor = .token(directionalIconTokenColorView.selectedItem) + case .custom: + iconColor = .custom(directionalIconCustomColorView.selectedColor ?? .white) + default: + break + } component.directionalIconModel = .init(iconType: iconType, iconColor: iconColor, size: iconSize) } @@ -695,28 +781,48 @@ class TileletViewController: BaseViewController { eyebrowColorPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.currentSurfaceColorType = .eyebrow - self?.eyebrowColorsFormStackView.isHidden = item != .custom - if item != .custom { + self?.eyebrowTokenFormStackView.isHidden = item != .token + self?.eyebrowColorFormStackView.isHidden = item != .custom + if item != .custom && item != .token { self?.setEyebrowModel() } } + eyebrowTokenColorView.onPickerDidSelect = { [weak self] item in + self?.setEyebrowModel() + } + titleColorPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.currentSurfaceColorType = .title - self?.titleColorsFormStackView.isHidden = item != .custom - if item != .custom { + self?.titleTokenFormStackView.isHidden = item != .token + self?.titleColorFormStackView.isHidden = item != .custom + if item != .custom && item != .token { self?.setTitleModel() } } + titleTokenColorView.onPickerDidSelect = { [weak self] item in + self?.setTitleModel() + } + subtitleColorPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.currentSurfaceColorType = .subtitle - self?.subtitleColorsFormStackView.isHidden = item != .custom - if item != .custom { + self?.subtitleTokenFormStackView.isHidden = item != .token + self?.subtitleColorFormStackView.isHidden = item != .custom + if item != .custom && item != .token { self?.setSubTitleModel() } } + + subtitleTokenColorView.onPickerDidSelect = { [weak self] item in + self?.setSubTitleModel() + } + descriptionIconColorPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.setIconColorForms() + self?.setDescriptiveIconModel() + } + descriptionNamePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.setDescriptiveIconModel() } @@ -730,6 +836,11 @@ class TileletViewController: BaseViewController { self?.setDescriptiveIconModel() } + directionalIconColorPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.setIconColorForms() + self?.setDirectionalIconModel() + } + directionIconPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.setDirectionalIconModel() } diff --git a/VDSSample/ViewControllers/TitleLockupViewController.swift b/VDSSample/ViewControllers/TitleLockupViewController.swift index 7e15dde..047a349 100644 --- a/VDSSample/ViewControllers/TitleLockupViewController.swift +++ b/VDSSample/ViewControllers/TitleLockupViewController.swift @@ -64,7 +64,8 @@ class TitleLockupViewController: BaseViewController { } /// eyebrow - var eyebrowColorsFormStackView = FormSection().with { $0.isHidden = true } + var eyebrowTokenFormStackView = FormSection().with { $0.isHidden = true } + var eyebrowColorFormStackView = FormSection().with { $0.isHidden = true } lazy var eyebrowColorPickerSelectorView = { PickerSelectorView(title: "primary", picker: self.picker, @@ -85,7 +86,8 @@ class TitleLockupViewController: BaseViewController { }() /// title - var titleColorsFormStackView = FormSection().with { $0.isHidden = true } + var titleTokenFormStackView = FormSection().with { $0.isHidden = true } + var titleColorFormStackView = FormSection().with { $0.isHidden = true } lazy var titleColorPickerSelectorView = { PickerSelectorView(title: "primary", picker: self.picker, @@ -106,7 +108,8 @@ class TitleLockupViewController: BaseViewController { }() /// subtitle - var subtitleColorsFormStackView = FormSection().with { $0.isHidden = true } + var subtitleTokenFormStackView = FormSection().with { $0.isHidden = true } + var subtitleColorFormStackView = FormSection().with { $0.isHidden = true } lazy var subtitleColorPickerSelectorView = { PickerSelectorView(title: "primary", picker: self.picker, @@ -144,24 +147,27 @@ class TitleLockupViewController: BaseViewController { addFormRow(label: "Eyebrow is Bold", view: eyebrowIsBold) addFormRow(label: "Eyebrow Text", view: eyebrowTextField) addFormRow(label: "Eyebrow Color", view: eyebrowColorPickerSelectorView) - eyebrowColorsFormStackView.addFormRow(label: "Token", view: eyebrowTokenColorView) - eyebrowColorsFormStackView.addFormRow(label: "Custom", view: eyebrowCustomColorView) - append(section: eyebrowColorsFormStackView) + eyebrowTokenFormStackView.addFormRow(label: "Token", view: eyebrowTokenColorView) + eyebrowColorFormStackView.addFormRow(label: "Custom", view: eyebrowCustomColorView) + append(section: eyebrowTokenFormStackView) + append(section: eyebrowColorFormStackView) addFormRow(label: "Title is Bold", view: titleIsBold) addFormRow(label: "Title Style", view: titleStandardStylePickerSelectorView) addFormRow(label: "Title Text", view: titleTextField) addFormRow(label: "Title Color", view: titleColorPickerSelectorView) - titleColorsFormStackView.addFormRow(label: "Token", view: titleTokenColorView) - titleColorsFormStackView.addFormRow(label: "Dark", view: titleCustomColorView) - append(section: titleColorsFormStackView) + titleTokenFormStackView.addFormRow(label: "Token", view: titleTokenColorView) + titleColorFormStackView.addFormRow(label: "Custom", view: titleCustomColorView) + append(section: titleTokenFormStackView) + append(section: titleColorFormStackView) addFormRow(label: "Subtitle Text", view: subTitleTextField) addFormRow(label: "Subtitle Color", view: subtitleColorPickerSelectorView) - subtitleColorsFormStackView.addFormRow(label: "Token", view: subtitleTokenColorView) - subtitleColorsFormStackView.addFormRow(label: "Custom", view: subtitleCustomColorView) - append(section: subtitleColorsFormStackView) - + subtitleTokenFormStackView.addFormRow(label: "Token", view: subtitleTokenColorView) + subtitleColorFormStackView.addFormRow(label: "Custom", view: subtitleCustomColorView) + append(section: subtitleTokenFormStackView) + append(section: subtitleColorFormStackView) + eyebrowIsBold.publisher(for: .valueChanged).sink { [weak self] toggle in self?.setOtherModels() @@ -322,27 +328,42 @@ class TitleLockupViewController: BaseViewController { eyebrowColorPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.currentLabelType = .eyebrow - self?.eyebrowColorsFormStackView.isHidden = item != .custom - if item != .custom { + self?.eyebrowTokenFormStackView.isHidden = item != .token + self?.eyebrowColorFormStackView.isHidden = item != .custom + if item != .custom && item != .token { self?.setOtherModels() } } + eyebrowTokenColorView.onPickerDidSelect = { [weak self] item in + self?.setOtherModels() + } + titleColorPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.currentLabelType = .title - self?.titleColorsFormStackView.isHidden = item != .custom - if item != .custom { + self?.titleTokenFormStackView.isHidden = item != .token + self?.titleColorFormStackView.isHidden = item != .custom + if item != .custom && item != .token { self?.setTitleModel() } } + titleTokenColorView.onPickerDidSelect = { [weak self] item in + self?.setTitleModel() + } + subtitleColorPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.currentLabelType = .subtitle - self?.subtitleColorsFormStackView.isHidden = item != .custom - if item != .custom { + self?.subtitleTokenFormStackView.isHidden = item != .token + self?.subtitleColorFormStackView.isHidden = item != .custom + if item != .custom && item != .token { self?.setOtherModels() } } + + subtitleTokenColorView.onPickerDidSelect = { [weak self] item in + self?.setOtherModels() + } } } From 714fb541bd9a1862b65cdc729183765aa668edc6 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 5 Jun 2024 13:04:31 -0500 Subject: [PATCH 13/18] fixed titlelockup sample Signed-off-by: Matt Bruce --- VDSSample/Classes/ColorPickerView.swift | 5 ++- .../TileletViewController.swift | 34 +++++++++---------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/VDSSample/Classes/ColorPickerView.swift b/VDSSample/Classes/ColorPickerView.swift index a340698..237380d 100644 --- a/VDSSample/Classes/ColorPickerView.swift +++ b/VDSSample/Classes/ColorPickerView.swift @@ -31,9 +31,12 @@ public class ColorPickerView: UIStackView { $0.text = "Select" } - public init(with pickerType: EnumType, onClick: @escaping (ColorPickerView)->Void) { + public init(with pickerType: EnumType, color: UIColor? = nil, onClick: @escaping (ColorPickerView)->Void) { self.pickerType = pickerType super.init(frame: .zero) + if let color { + selectedColor = color + } setup() button.onClick = { _ in onClick(self) } } diff --git a/VDSSample/ViewControllers/TileletViewController.swift b/VDSSample/ViewControllers/TileletViewController.swift index 3a31181..91546c3 100644 --- a/VDSSample/ViewControllers/TileletViewController.swift +++ b/VDSSample/ViewControllers/TileletViewController.swift @@ -128,13 +128,14 @@ class TileletViewController: BaseViewController { }() lazy var eyebrowTokenColorView = { - PickerSelectorView(title: "paletteBlack", + PickerSelectorView(title: "", picker: self.picker, items: UIColor.VDSColor.allCases) + .with { $0.text = UIColor.VDSColor.paletteWhite.rawValue } }() lazy var eyebrowCustomColorView: ColorPickerView = { - return .init(with: ColorPickerType.custom) { [weak self] picker in + return .init(with: ColorPickerType.custom, color: .white) { [weak self] picker in self?.currentSurfaceColorType = .eyebrow self?.colorPickerType = picker.pickerType self?.selectedColorTapped(picker) @@ -150,13 +151,15 @@ class TileletViewController: BaseViewController { items: TitleTextColor.allCases) }() lazy var titleTokenColorView = { - PickerSelectorView(title: "paletteBlack", + PickerSelectorView(title: "", picker: self.picker, items: UIColor.VDSColor.allCases) + .with { $0.text = UIColor.VDSColor.paletteWhite.rawValue } + }() lazy var titleCustomColorView: ColorPickerView = { - return .init(with: ColorPickerType.custom) { [weak self] picker in + return .init(with: ColorPickerType.custom, color: .white) { [weak self] picker in self?.currentSurfaceColorType = .title self?.colorPickerType = picker.pickerType self?.selectedColorTapped(picker) @@ -172,13 +175,14 @@ class TileletViewController: BaseViewController { items: TextColor.allCases) }() lazy var subtitleTokenColorView = { - PickerSelectorView(title: "paletteBlack", + PickerSelectorView(title: "", picker: self.picker, items: UIColor.VDSColor.allCases) + .with { $0.text = UIColor.VDSColor.paletteWhite.rawValue } }() lazy var subtitleCustomColorView: ColorPickerView = { - return .init(with: ColorPickerType.custom) { [weak self] picker in + return .init(with: ColorPickerType.custom, color: .white) { [weak self] picker in self?.currentSurfaceColorType = .subtitle self?.colorPickerType = picker.pickerType self?.selectedColorTapped(picker) @@ -208,9 +212,10 @@ class TileletViewController: BaseViewController { }() lazy var descriptionIconTokenColorView = { - PickerSelectorView(title: "paletteBlack", + PickerSelectorView(title: "", picker: self.picker, items: UIColor.VDSColor.allCases) + .with { $0.text = UIColor.VDSColor.paletteWhite.rawValue } }() lazy var descriptionIconCustomColorView: ColorPickerView = { @@ -240,9 +245,10 @@ class TileletViewController: BaseViewController { }() lazy var directionalIconTokenColorView = { - PickerSelectorView(title: "paletteBlack", + PickerSelectorView(title: "", picker: self.picker, items: UIColor.VDSColor.allCases) + .with { $0.text = UIColor.VDSColor.paletteWhite.rawValue } }() lazy var directionalIconCustomColorView: ColorPickerView = { @@ -783,9 +789,7 @@ class TileletViewController: BaseViewController { self?.currentSurfaceColorType = .eyebrow self?.eyebrowTokenFormStackView.isHidden = item != .token self?.eyebrowColorFormStackView.isHidden = item != .custom - if item != .custom && item != .token { - self?.setEyebrowModel() - } + self?.setEyebrowModel() } eyebrowTokenColorView.onPickerDidSelect = { [weak self] item in @@ -796,9 +800,7 @@ class TileletViewController: BaseViewController { self?.currentSurfaceColorType = .title self?.titleTokenFormStackView.isHidden = item != .token self?.titleColorFormStackView.isHidden = item != .custom - if item != .custom && item != .token { - self?.setTitleModel() - } + self?.setTitleModel() } titleTokenColorView.onPickerDidSelect = { [weak self] item in @@ -809,9 +811,7 @@ class TileletViewController: BaseViewController { self?.currentSurfaceColorType = .subtitle self?.subtitleTokenFormStackView.isHidden = item != .token self?.subtitleColorFormStackView.isHidden = item != .custom - if item != .custom && item != .token { - self?.setSubTitleModel() - } + self?.setSubTitleModel() } subtitleTokenColorView.onPickerDidSelect = { [weak self] item in From 0f6f342276c2711c41c0c7945b9eb0d75adc2e62 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 5 Jun 2024 13:08:47 -0500 Subject: [PATCH 14/18] fixed titlelockup Signed-off-by: Matt Bruce --- .../TitleLockupViewController.swift | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/VDSSample/ViewControllers/TitleLockupViewController.swift b/VDSSample/ViewControllers/TitleLockupViewController.swift index 047a349..e427796 100644 --- a/VDSSample/ViewControllers/TitleLockupViewController.swift +++ b/VDSSample/ViewControllers/TitleLockupViewController.swift @@ -73,13 +73,14 @@ class TitleLockupViewController: BaseViewController { }() lazy var eyebrowTokenColorView = { - PickerSelectorView(title: "paletteBlack", + PickerSelectorView(title: "", picker: self.picker, items: UIColor.VDSColor.allCases) + .with { $0.text = UIColor.VDSColor.paletteBlack.rawValue } }() lazy var eyebrowCustomColorView: ColorPickerView = { - return .init(with: ColorPickerType.custom) { [weak self] picker in + return .init(with: ColorPickerType.custom, color: .black) { [weak self] picker in self?.colorPickerType = picker.pickerType self?.selectedColorTapped(picker) } @@ -95,13 +96,14 @@ class TitleLockupViewController: BaseViewController { }() lazy var titleTokenColorView = { - PickerSelectorView(title: "paletteBlack", + PickerSelectorView(title: "", picker: self.picker, items: UIColor.VDSColor.allCases) + .with { $0.text = UIColor.VDSColor.paletteBlack.rawValue } }() lazy var titleCustomColorView: ColorPickerView = { - return .init(with: ColorPickerType.custom) { [weak self] picker in + return .init(with: ColorPickerType.custom, color: .black) { [weak self] picker in self?.colorPickerType = picker.pickerType self?.selectedColorTapped(picker) } @@ -117,13 +119,14 @@ class TitleLockupViewController: BaseViewController { }() lazy var subtitleTokenColorView = { - PickerSelectorView(title: "paletteBlack", + PickerSelectorView(title: "", picker: self.picker, items: UIColor.VDSColor.allCases) + .with { $0.text = UIColor.VDSColor.paletteBlack.rawValue } }() lazy var subtitleCustomColorView: ColorPickerView = { - return .init(with: ColorPickerType.custom) { [weak self] picker in + return .init(with: ColorPickerType.custom, color: .black) { [weak self] picker in self?.colorPickerType = picker.pickerType self?.selectedColorTapped(picker) } @@ -330,9 +333,7 @@ class TitleLockupViewController: BaseViewController { self?.currentLabelType = .eyebrow self?.eyebrowTokenFormStackView.isHidden = item != .token self?.eyebrowColorFormStackView.isHidden = item != .custom - if item != .custom && item != .token { - self?.setOtherModels() - } + self?.setOtherModels() } eyebrowTokenColorView.onPickerDidSelect = { [weak self] item in @@ -343,9 +344,7 @@ class TitleLockupViewController: BaseViewController { self?.currentLabelType = .title self?.titleTokenFormStackView.isHidden = item != .token self?.titleColorFormStackView.isHidden = item != .custom - if item != .custom && item != .token { - self?.setTitleModel() - } + self?.setTitleModel() } titleTokenColorView.onPickerDidSelect = { [weak self] item in @@ -356,9 +355,7 @@ class TitleLockupViewController: BaseViewController { self?.currentLabelType = .subtitle self?.subtitleTokenFormStackView.isHidden = item != .token self?.subtitleColorFormStackView.isHidden = item != .custom - if item != .custom && item != .token { - self?.setOtherModels() - } + self?.setOtherModels() } subtitleTokenColorView.onPickerDidSelect = { [weak self] item in From 4b479d200244eb6103d4bde84e615808500f9b80 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 6 Jun 2024 16:30:11 -0500 Subject: [PATCH 15/18] updated for tests Signed-off-by: Matt Bruce --- VDSSample/ViewControllers/InputFieldViewController.swift | 2 +- .../ViewControllers/TileContainerViewController.swift | 8 -------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/VDSSample/ViewControllers/InputFieldViewController.swift b/VDSSample/ViewControllers/InputFieldViewController.swift index 1e4f087..57b7db0 100644 --- a/VDSSample/ViewControllers/InputFieldViewController.swift +++ b/VDSSample/ViewControllers/InputFieldViewController.swift @@ -301,7 +301,7 @@ class InputFieldViewController: BaseViewController { //reset other fields component.actionTextLinkModel = nil component.tooltipModel = nil - component.cardType = .generic + component.cardType = .placeholder tooltipTitleTextField.text = nil tooltipContentTextField.text = nil dateFormatPickerSelectorView.text = component.dateFormat.rawValue diff --git a/VDSSample/ViewControllers/TileContainerViewController.swift b/VDSSample/ViewControllers/TileContainerViewController.swift index 5509b8d..1562a13 100644 --- a/VDSSample/ViewControllers/TileContainerViewController.swift +++ b/VDSSample/ViewControllers/TileContainerViewController.swift @@ -112,16 +112,12 @@ class TileContainerViewController: BaseViewController { let level2label = Label() level2label.text = "Level 3 Label" - level2label.isAccessibilityElement = true - level2label.accessibilityLabel = "Level 3 Accessible Label" level3View.addSubview(level2label) level2label.pinTop().pinLeading() let level3Button = Button() level3Button.setTitle("Level 3 Button", for: .normal) - level3Button.isAccessibilityElement = true - level3Button.accessibilityLabel = "Level 3 Accessible Button" level3View.addSubview(level3Button) level3Button.pinTop(anchor: level2label.bottomAnchor, constant: 5) @@ -137,15 +133,11 @@ class TileContainerViewController: BaseViewController { let level4Label = Label() level4Label.text = "Level 4 Label" - level4Label.isAccessibilityElement = true - level4Label.accessibilityLabel = "Level 4 Accessible Label" level4View.addSubview(level4Label) level4Label.pinTop().pinLeading() let level4Button = Button() level4Button.setTitle("Level 4 Button", for: .normal) - level4Button.isAccessibilityElement = true - level4Button.accessibilityLabel = "Level 4 Accessible Button" level4View.addSubview(level4Button) level4Button.pinTop(anchor: level4Label.bottomAnchor, constant: 5) From aa4a7498df58ec44c3dfb93c5fbaf904893fae62 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 7 Jun 2024 12:45:14 -0500 Subject: [PATCH 16/18] marked as true Signed-off-by: Matt Bruce --- VDSSample/ViewControllers/MenuViewController.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VDSSample/ViewControllers/MenuViewController.swift b/VDSSample/ViewControllers/MenuViewController.swift index 11d8752..ec047a5 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -93,7 +93,7 @@ class MenuViewController: UITableViewController, TooltipLaunchable { MenuComponent(title: "RadioButtonItem", completed: true, viewController: RadioButtonItemViewController.self), MenuComponent(title: "RadioButtonGroup", completed: true, viewController: RadioButtonGroupViewController.self), // //MenuComponent(title: "TabsContainer", completed: false, viewController: TabsContainerViewController.self), - MenuComponent(title: "Table", completed: false, viewController: TableViewController.self), + MenuComponent(title: "Table", completed: true, viewController: TableViewController.self), MenuComponent(title: "Tabs", completed: true, viewController: TabsViewController.self), MenuComponent(title: "TextArea", completed: true, viewController: TextAreaViewController.self), MenuComponent(title: "TextLink", completed: true, viewController: TextLinkViewController.self), From 8f69b016d3f30f212247436c48ed78c66977ba68 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 7 Jun 2024 13:03:40 -0500 Subject: [PATCH 17/18] updated tilecontainer example for accessibility team Signed-off-by: Matt Bruce --- .../ViewControllers/TileContainerViewController.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/VDSSample/ViewControllers/TileContainerViewController.swift b/VDSSample/ViewControllers/TileContainerViewController.swift index 1562a13..cbcd446 100644 --- a/VDSSample/ViewControllers/TileContainerViewController.swift +++ b/VDSSample/ViewControllers/TileContainerViewController.swift @@ -111,13 +111,13 @@ class TileContainerViewController: BaseViewController { level3View.pinToSuperView(.uniform(15)) let level2label = Label() - level2label.text = "Level 3 Label" + level2label.text = "Do you want to Register?" level3View.addSubview(level2label) level2label.pinTop().pinLeading() let level3Button = Button() - level3Button.setTitle("Level 3 Button", for: .normal) + level3Button.setTitle("Register", for: .normal) level3View.addSubview(level3Button) level3Button.pinTop(anchor: level2label.bottomAnchor, constant: 5) @@ -132,12 +132,12 @@ class TileContainerViewController: BaseViewController { level4View.pinTrailing() let level4Label = Label() - level4Label.text = "Level 4 Label" + level4Label.text = "Forgot your info?" level4View.addSubview(level4Label) level4Label.pinTop().pinLeading() let level4Button = Button() - level4Button.setTitle("Level 4 Button", for: .normal) + level4Button.setTitle("Forgot Password", for: .normal) level4View.addSubview(level4Button) level4Button.pinTop(anchor: level4Label.bottomAnchor, constant: 5) From 5795b87b370ccc1cd27659864fa312c50b87a801 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 7 Jun 2024 13:06:51 -0500 Subject: [PATCH 18/18] updated version Signed-off-by: Matt Bruce --- VDSSample.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index b4e8b03..0b5e029 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -711,7 +711,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 65; + CURRENT_PROJECT_VERSION = 66; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = FCMA4QKS77; GENERATE_INFOPLIST_FILE = YES; @@ -747,7 +747,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 65; + CURRENT_PROJECT_VERSION = 66; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = FCMA4QKS77; GENERATE_INFOPLIST_FILE = YES;