From 4132c6611a6a05a324837d47c8058a49b7814efe Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Mon, 8 May 2023 16:18:02 -0500 Subject: [PATCH 001/101] updated version for testflight release Signed-off-by: Matt Bruce --- VDSSample.xcodeproj/project.pbxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index 3720dbb..eea63d5 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -638,7 +638,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 16; + CURRENT_PROJECT_VERSION = 17; DEVELOPMENT_TEAM = FCMA4QKS77; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; @@ -647,7 +647,7 @@ INFOPLIST_KEY_UIMainStoryboardFile = Main; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -668,7 +668,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 16; + CURRENT_PROJECT_VERSION = 17; DEVELOPMENT_TEAM = FCMA4QKS77; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; @@ -677,7 +677,7 @@ INFOPLIST_KEY_UIMainStoryboardFile = Main; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", From 86a105ed69a98b68e8d287a6f0a80daa0f71a6fa Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Mon, 15 May 2023 11:36:31 -0500 Subject: [PATCH 002/101] added buttonIcon Signed-off-by: Matt Bruce --- VDSSample.xcodeproj/project.pbxproj | 4 + .../ButtonIconViewController.swift | 118 ++++++++++++++++++ .../ViewControllers/MenuViewController.swift | 1 + 3 files changed, 123 insertions(+) create mode 100644 VDSSample/ViewControllers/ButtonIconViewController.swift diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index eea63d5..a4bfff5 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -48,6 +48,7 @@ EA5E3050294D11540082B959 /* TileContainerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E304F294D11540082B959 /* TileContainerViewController.swift */; }; EA5E30552950EA6E0082B959 /* TitleLockupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E30542950EA6E0082B959 /* TitleLockupViewController.swift */; }; EA5E305C295111050082B959 /* TileletViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E305B295111050082B959 /* TileletViewController.swift */; }; + EA81410E2A0ED8DC004F60D2 /* ButtonIconViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA81410D2A0ED8DC004F60D2 /* ButtonIconViewController.swift */; }; EA84F76228BE4AE500D67ABC /* RadioSwatchGroupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA84F76128BE4AE500D67ABC /* RadioSwatchGroupViewController.swift */; }; EA89201928B56DF5006B9984 /* RadioBoxGroupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89201828B56DF5006B9984 /* RadioBoxGroupViewController.swift */; }; EA89204628B66CE2006B9984 /* ScrollViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89203F28B66CE2006B9984 /* ScrollViewController.swift */; }; @@ -135,6 +136,7 @@ EA5E304F294D11540082B959 /* TileContainerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TileContainerViewController.swift; sourceTree = ""; }; EA5E30542950EA6E0082B959 /* TitleLockupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleLockupViewController.swift; sourceTree = ""; }; EA5E305B295111050082B959 /* TileletViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TileletViewController.swift; sourceTree = ""; }; + EA81410D2A0ED8DC004F60D2 /* ButtonIconViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonIconViewController.swift; sourceTree = ""; }; EA84F76128BE4AE500D67ABC /* RadioSwatchGroupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioSwatchGroupViewController.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 = ""; }; @@ -288,6 +290,7 @@ EA3C3BB228996775000CA526 /* MenuViewController.swift */, EAB1D2C828AAAA1D00DAE764 /* BaseViewController.swift */, EA4DB30328DCD25B00103EE3 /* BadgeViewController.swift */, + EA81410D2A0ED8DC004F60D2 /* ButtonIconViewController.swift */, EAB5FEEE2927E28400998C17 /* ButtonGroupViewController.swift */, 5FC35BE828D5235A004EBEAC /* ButtonViewController.swift */, EA89204D28B67332006B9984 /* CheckBoxGroupViewController.swift */, @@ -485,6 +488,7 @@ EA89204E28B67332006B9984 /* CheckBoxGroupViewController.swift in Sources */, EAA5EEAD28EB6924003B3210 /* InputFieldViewController.swift in Sources */, EA985C25296E06EA00F2FF2E /* TextAreaViewController.swift in Sources */, + EA81410E2A0ED8DC004F60D2 /* ButtonIconViewController.swift in Sources */, EA985C20296DECF600F2FF2E /* IconName.swift in Sources */, EA89204928B66CE2006B9984 /* KeyboardFrameChangeListening.swift in Sources */, EA985C01296CC21C00F2FF2E /* IconViewController.swift in Sources */, diff --git a/VDSSample/ViewControllers/ButtonIconViewController.swift b/VDSSample/ViewControllers/ButtonIconViewController.swift new file mode 100644 index 0000000..9ed2b1d --- /dev/null +++ b/VDSSample/ViewControllers/ButtonIconViewController.swift @@ -0,0 +1,118 @@ +// +// ButtonIconViewController.swift +// VDSSample +// +// Created by Matt Bruce on 5/12/23. +// + +import Foundation +import UIKit +import VDS +import Combine +import VDSColorTokens + +class ButtonIconViewController: BaseViewController { + + lazy var colorPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: VDSColor.Color.allCases) + }() + + lazy var namePickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: Icon.Name.all.sorted{ $0.rawValue < $1.rawValue }) + }() + + lazy var sizePickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: ButtonIcon.Size.allCases) + }() + + var customSizeField = TextField() + var centerX = TextField() + var centerY = TextField() + + override func allTextFields() -> [TextField]? { [customSizeField, centerX, centerY] } + + override func viewDidLoad() { + super.viewDidLoad() + addContentTopView(view: .makeWrapper(for: component)) + setupPicker() + setupModel() + } + + override func setupForm(){ + super.setupForm() + addFormRow(label: "Surface", view: surfacePickerSelectorView) + addFormRow(label: "Size", view: sizePickerSelectorView) + addFormRow(label: "Custom Size", view: customSizeField) + addFormRow(label: "Name", view: namePickerSelectorView) + addFormRow(label: "X Offset", view: centerX) + addFormRow(label: "Y Offset", view: centerY) + + customSizeField.textPublisher.sink { [weak self] value in + if let intValue = Int(value) { + self?.component.customSize = intValue + } else if value.isEmpty { + self?.component.customSize = nil + } + }.store(in: &subscribers) + + centerX.textPublisher.sink { [weak self] value in + self?.updateOffset() + }.store(in: &subscribers) + + centerY.textPublisher.sink { [weak self] value in + self?.updateOffset() + }.store(in: &subscribers) + } + + func setupModel() { + let name = Icon.Name.addToFavorite + + component.iconName = name + //setup UI + surfacePickerSelectorView.text = component.surface.rawValue + sizePickerSelectorView.text = component.size.rawValue + namePickerSelectorView.text = name.rawValue + } + + func updateOffset() { + if let x = centerX.floatValue, let y = centerY.floatValue { + component.iconOffset = .init(x: x, y: y) + } else if let x = centerX.floatValue { + component.iconOffset = .init(x: x, y: 0) + } else if let y = centerY.floatValue { + component.iconOffset = .init(x: 0, y: y) + } else { + component.iconOffset = .init(x: 0, y: 0) + } + } + + + func setupPicker(){ + + surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.surface = item + self?.contentTopView.backgroundColor = item.color + } + + sizePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.size = item + } + + namePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.iconName = item + } + } +} + +extension UITextField { + public var floatValue: CGFloat? { + guard let text, let double = Double(text) else { return nil } + return CGFloat(double) + } +} diff --git a/VDSSample/ViewControllers/MenuViewController.swift b/VDSSample/ViewControllers/MenuViewController.swift index 45c1b29..7d19262 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -74,6 +74,7 @@ class MenuViewController: UITableViewController { MenuComponent(title: "Badge", completed: true, viewController: BadgeViewController.self), MenuComponent(title: "Button", completed: true, viewController: ButtonViewController.self), MenuComponent(title: "ButtonGroup", completed: true, viewController: ButtonGroupViewController.self), + MenuComponent(title: "ButtonIcon", completed: false, viewController: ButtonIconViewController.self), MenuComponent(title: "Checkbox", completed: true, viewController: CheckboxViewController.self), MenuComponent(title: "CheckboxGroup", completed: true, viewController: CheckboxGroupViewController.self), MenuComponent(title: "Icon", completed: true, viewController: IconViewController.self), From 3b5bc40de02282f3bf3247e3b34a8971e8fe0c7f Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Mon, 15 May 2023 11:36:39 -0500 Subject: [PATCH 003/101] fixed IconColor bugs Signed-off-by: Matt Bruce --- VDSSample/ViewControllers/IconViewController.swift | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/VDSSample/ViewControllers/IconViewController.swift b/VDSSample/ViewControllers/IconViewController.swift index 6f8a691..2cef10b 100644 --- a/VDSSample/ViewControllers/IconViewController.swift +++ b/VDSSample/ViewControllers/IconViewController.swift @@ -8,6 +8,7 @@ import Foundation import UIKit import VDS +import VDSColorTokens import Combine class IconViewController: BaseViewController { @@ -15,7 +16,7 @@ class IconViewController: BaseViewController { lazy var colorPickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, - items: Icon.Color.allCases) + items: VDSColor.Color.allCases) }() lazy var namePickerSelectorView = { @@ -60,13 +61,14 @@ class IconViewController: BaseViewController { func setupModel() { let name = Icon.Name.accessibility - component.color = .black + let color = VDSColor.Color.paletteBlack + component.color = color.uiColor component.name = name //setup UI surfacePickerSelectorView.text = component.surface.rawValue sizePickerSelectorView.text = component.size.rawValue - colorPickerSelectorView.text = component.color.rawValue + colorPickerSelectorView.text = color.rawValue namePickerSelectorView.text = name.rawValue } func setupPicker(){ @@ -81,7 +83,7 @@ class IconViewController: BaseViewController { } colorPickerSelectorView.onPickerDidSelect = { [weak self] item in - self?.component.color = item + self?.component.color = item.uiColor } namePickerSelectorView.onPickerDidSelect = { [weak self] item in From 31fc9938e284b4d4e7f0dcd933d9dbe77ee1cca3 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Tue, 16 May 2023 15:32:12 -0500 Subject: [PATCH 004/101] added more properties Signed-off-by: Matt Bruce --- .../ButtonIconViewController.swift | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/VDSSample/ViewControllers/ButtonIconViewController.swift b/VDSSample/ViewControllers/ButtonIconViewController.swift index 9ed2b1d..12cd437 100644 --- a/VDSSample/ViewControllers/ButtonIconViewController.swift +++ b/VDSSample/ViewControllers/ButtonIconViewController.swift @@ -13,6 +13,18 @@ import VDSColorTokens class ButtonIconViewController: BaseViewController { + lazy var kindPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: ButtonIcon.Kind.allCases) + }() + + lazy var surfaceTypePickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: ButtonIcon.SurfaceType.allCases) + }() + lazy var colorPickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, @@ -34,12 +46,15 @@ class ButtonIconViewController: BaseViewController { var customSizeField = TextField() var centerX = TextField() var centerY = TextField() + var fitToIcon = Toggle() + var floating = Toggle() + var hideBorder = Toggle() override func allTextFields() -> [TextField]? { [customSizeField, centerX, centerY] } override func viewDidLoad() { super.viewDidLoad() - addContentTopView(view: .makeWrapper(for: component)) + addContentTopView(view: .makeWrapper(for: component, edgeSpacing: 16.0), edgeSpacing: 0.0) setupPicker() setupModel() } @@ -47,12 +62,33 @@ class ButtonIconViewController: BaseViewController { override func setupForm(){ super.setupForm() addFormRow(label: "Surface", view: surfacePickerSelectorView) + addFormRow(label: "Surface Type", view: surfaceTypePickerSelectorView) addFormRow(label: "Size", view: sizePickerSelectorView) + addFormRow(label: "Kind", view: kindPickerSelectorView) + addFormRow(label: "Floating", view: .makeWrapper(for: floating)) + addFormRow(label: "Hide Border", view: .makeWrapper(for: hideBorder)) + addFormRow(label: "Fit To Icon", view: .makeWrapper(for: fitToIcon)) addFormRow(label: "Custom Size", view: customSizeField) addFormRow(label: "Name", view: namePickerSelectorView) addFormRow(label: "X Offset", view: centerX) addFormRow(label: "Y Offset", view: centerY) + component.onClick = { sender in + print("Button Icon was clicked") + } + + floating.onChange = { [weak self] sender in + self?.component.fitToIcon = sender.isOn + } + + hideBorder.onChange = { [weak self] sender in + self?.component.hideBorder = sender.isOn + } + + fitToIcon.onChange = { [weak self] sender in + self?.component.fitToIcon = sender.isOn + } + customSizeField.textPublisher.sink { [weak self] value in if let intValue = Int(value) { self?.component.customSize = intValue @@ -76,6 +112,8 @@ class ButtonIconViewController: BaseViewController { component.iconName = name //setup UI surfacePickerSelectorView.text = component.surface.rawValue + surfaceTypePickerSelectorView.text = component.surfaceType.rawValue + kindPickerSelectorView.text = component.kind.rawValue sizePickerSelectorView.text = component.size.rawValue namePickerSelectorView.text = name.rawValue } @@ -99,6 +137,15 @@ class ButtonIconViewController: BaseViewController { self?.component.surface = item self?.contentTopView.backgroundColor = item.color } + + surfaceTypePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.surfaceType = item + } + + + kindPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.kind = item + } sizePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.size = item From 54fc0e89fa69ad16a54ab4f917e0e32cb5992a42 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 17 May 2023 09:25:24 -0500 Subject: [PATCH 005/101] added disabled Signed-off-by: Matt Bruce --- VDSSample/ViewControllers/ButtonIconViewController.swift | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/VDSSample/ViewControllers/ButtonIconViewController.swift b/VDSSample/ViewControllers/ButtonIconViewController.swift index 12cd437..0b9e273 100644 --- a/VDSSample/ViewControllers/ButtonIconViewController.swift +++ b/VDSSample/ViewControllers/ButtonIconViewController.swift @@ -49,7 +49,8 @@ class ButtonIconViewController: BaseViewController { var fitToIcon = Toggle() var floating = Toggle() var hideBorder = Toggle() - + var disabledSwitch = Toggle() + override func allTextFields() -> [TextField]? { [customSizeField, centerX, centerY] } override func viewDidLoad() { @@ -61,6 +62,7 @@ class ButtonIconViewController: BaseViewController { override func setupForm(){ super.setupForm() + addFormRow(label: "Disabled", view: .makeWrapper(for: disabledSwitch)) addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Surface Type", view: surfaceTypePickerSelectorView) addFormRow(label: "Size", view: sizePickerSelectorView) @@ -72,6 +74,10 @@ class ButtonIconViewController: BaseViewController { addFormRow(label: "Name", view: namePickerSelectorView) addFormRow(label: "X Offset", view: centerX) addFormRow(label: "Y Offset", view: centerY) + + disabledSwitch.onChange = { [weak self] sender in + self?.component.disabled = sender.isOn + } component.onClick = { sender in print("Button Icon was clicked") @@ -116,6 +122,7 @@ class ButtonIconViewController: BaseViewController { kindPickerSelectorView.text = component.kind.rawValue sizePickerSelectorView.text = component.size.rawValue namePickerSelectorView.text = name.rawValue + disabledSwitch.isOn = component.disabled } func updateOffset() { From e5ac23f8c999794e80d0f1dc1df69c9e76f02cda Mon Sep 17 00:00:00 2001 From: "Bruce, Matt R" Date: Wed, 17 May 2023 15:45:09 +0000 Subject: [PATCH 006/101] updated to use UIColor extension --- VDSSample/ViewControllers/ButtonIconViewController.swift | 2 +- VDSSample/ViewControllers/IconViewController.swift | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/VDSSample/ViewControllers/ButtonIconViewController.swift b/VDSSample/ViewControllers/ButtonIconViewController.swift index 0b9e273..76342de 100644 --- a/VDSSample/ViewControllers/ButtonIconViewController.swift +++ b/VDSSample/ViewControllers/ButtonIconViewController.swift @@ -28,7 +28,7 @@ class ButtonIconViewController: BaseViewController { lazy var colorPickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, - items: VDSColor.Color.allCases) + items: UIColor.VDSColor.allCases) }() lazy var namePickerSelectorView = { diff --git a/VDSSample/ViewControllers/IconViewController.swift b/VDSSample/ViewControllers/IconViewController.swift index 2cef10b..6f1fa09 100644 --- a/VDSSample/ViewControllers/IconViewController.swift +++ b/VDSSample/ViewControllers/IconViewController.swift @@ -16,7 +16,7 @@ class IconViewController: BaseViewController { lazy var colorPickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, - items: VDSColor.Color.allCases) + items: UIColor.VDSColor.allCases) }() lazy var namePickerSelectorView = { @@ -61,7 +61,7 @@ class IconViewController: BaseViewController { func setupModel() { let name = Icon.Name.accessibility - let color = VDSColor.Color.paletteBlack + let color = UIColor.VDSColor.paletteBlack component.color = color.uiColor component.name = name From 75e856cbeab8ff3d1baf409092203c0d851d82a9 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 19 May 2023 14:48:37 -0500 Subject: [PATCH 007/101] adding Tabs Signed-off-by: Matt Bruce --- VDSSample.xcodeproj/project.pbxproj | 4 ++ .../ViewControllers/MenuViewController.swift | 1 + .../ViewControllers/TabsViewController.swift | 57 +++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 VDSSample/ViewControllers/TabsViewController.swift diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index a4bfff5..0223583 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -45,6 +45,7 @@ EA3C3BB628996775000CA526 /* MenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA3C3BB228996775000CA526 /* MenuViewController.swift */; }; EA3C3BB728996775000CA526 /* ToggleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA3C3BB328996775000CA526 /* ToggleViewController.swift */; }; EA4DB30428DCD25B00103EE3 /* BadgeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA4DB30328DCD25B00103EE3 /* BadgeViewController.swift */; }; + EA596ABA2A16B2ED00300C4B /* TabsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA596AB92A16B2ED00300C4B /* TabsViewController.swift */; }; EA5E3050294D11540082B959 /* TileContainerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E304F294D11540082B959 /* TileContainerViewController.swift */; }; EA5E30552950EA6E0082B959 /* TitleLockupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E30542950EA6E0082B959 /* TitleLockupViewController.swift */; }; EA5E305C295111050082B959 /* TileletViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E305B295111050082B959 /* TileletViewController.swift */; }; @@ -133,6 +134,7 @@ EA3C3BB228996775000CA526 /* MenuViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuViewController.swift; sourceTree = ""; }; EA3C3BB328996775000CA526 /* ToggleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToggleViewController.swift; sourceTree = ""; }; EA4DB30328DCD25B00103EE3 /* BadgeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BadgeViewController.swift; sourceTree = ""; }; + EA596AB92A16B2ED00300C4B /* TabsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabsViewController.swift; sourceTree = ""; }; EA5E304F294D11540082B959 /* TileContainerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TileContainerViewController.swift; sourceTree = ""; }; EA5E30542950EA6E0082B959 /* TitleLockupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleLockupViewController.swift; sourceTree = ""; }; EA5E305B295111050082B959 /* TileletViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TileletViewController.swift; sourceTree = ""; }; @@ -303,6 +305,7 @@ EA89201828B56DF5006B9984 /* RadioBoxGroupViewController.swift */, EAF7F11928A14A0E00B287F5 /* RadioButtonViewController.swift */, EA84F76128BE4AE500D67ABC /* RadioSwatchGroupViewController.swift */, + EA596AB92A16B2ED00300C4B /* TabsViewController.swift */, EA985C24296E06EA00F2FF2E /* TextAreaViewController.swift */, EAC9257F29119FC400091998 /* TextLinkViewController.swift */, EA0FC2C02912DC5500DF80B4 /* TextLinkCaretViewController.swift */, @@ -485,6 +488,7 @@ EA89204828B66CE2006B9984 /* ScrollViewKeyboardAvoiding.swift in Sources */, EA0FC2C12912DC5500DF80B4 /* TextLinkCaretViewController.swift in Sources */, EAF7F09C2899B92400B287F5 /* CheckboxViewController.swift in Sources */, + EA596ABA2A16B2ED00300C4B /* TabsViewController.swift in Sources */, EA89204E28B67332006B9984 /* CheckBoxGroupViewController.swift in Sources */, EAA5EEAD28EB6924003B3210 /* InputFieldViewController.swift in Sources */, EA985C25296E06EA00F2FF2E /* TextAreaViewController.swift in Sources */, diff --git a/VDSSample/ViewControllers/MenuViewController.swift b/VDSSample/ViewControllers/MenuViewController.swift index 7d19262..2ac4362 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -85,6 +85,7 @@ class MenuViewController: UITableViewController { MenuComponent(title: "RadioBoxGroup", completed: true, viewController: RadioBoxGroupViewController.self), MenuComponent(title: "RadioButtonGroup", completed: true, viewController: RadioButtonViewController.self), MenuComponent(title: "RadioSwatchGroup", completed: true, viewController: RadioSwatchGroupViewController.self), + MenuComponent(title: "Tabs", completed: false, viewController: TabsViewController.self), MenuComponent(title: "TextArea", completed: false, viewController: TextAreaViewController.self), MenuComponent(title: "TextLink", completed: true, viewController: TextLinkViewController.self), MenuComponent(title: "TextLinkCaret", completed: true, viewController: TextLinkCaretViewController.self), diff --git a/VDSSample/ViewControllers/TabsViewController.swift b/VDSSample/ViewControllers/TabsViewController.swift new file mode 100644 index 0000000..6e0e25b --- /dev/null +++ b/VDSSample/ViewControllers/TabsViewController.swift @@ -0,0 +1,57 @@ +// +// TabsViewController.swift +// VDSSample +// +// Created by Matt Bruce on 5/18/23. +// + +import Foundation +import UIKit +import VDS +import Combine +import VDSColorTokens + +class TabsViewController: BaseViewController { + + var disabledSwitch = Toggle() + + override func viewDidLoad() { + super.viewDidLoad() + addContentTopView(view: component) + setupPicker() + setupModel() + } + + override func setupForm(){ + super.setupForm() + addFormRow(label: "Disabled", view: .makeWrapper(for: disabledSwitch)) + addFormRow(label: "Surface", view: surfacePickerSelectorView) + + } + + func setupModel() { + component.overflow = .scroll + component.updateTabItems(with: [ + TabItemModel(text: "All", width: 200), + TabItemModel(text: "Work Devices", width: 250), + TabItemModel(text: "3", width: 100), + TabItemModel(text: "4"), + TabItemModel(text: "5"), + TabItemModel(text: "6 Devices"), + TabItemModel(text: "7 Devices"), + TabItemModel(text: "8 Devices"), + TabItemModel(text: "9 Devices"), + TabItemModel(text: "10 Devices") + ]) + //setup UI + surfacePickerSelectorView.text = component.surface.rawValue + disabledSwitch.isOn = component.disabled + } + + func setupPicker(){ + surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.surface = item + self?.contentTopView.backgroundColor = item.color + } + } +} From 013da49ac1d70b728cecc42b3b89cede8bc12309 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Mon, 22 May 2023 16:20:02 -0500 Subject: [PATCH 008/101] added tabs sample Signed-off-by: Matt Bruce --- VDSSample.xcodeproj/project.pbxproj | 2 +- .../ViewControllers/TabsViewController.swift | 170 ++++++++++++++++-- 2 files changed, 158 insertions(+), 14 deletions(-) diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index 0223583..8d320bd 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -306,9 +306,9 @@ EAF7F11928A14A0E00B287F5 /* RadioButtonViewController.swift */, EA84F76128BE4AE500D67ABC /* RadioSwatchGroupViewController.swift */, EA596AB92A16B2ED00300C4B /* TabsViewController.swift */, + EA0FC2C02912DC5500DF80B4 /* TextLinkCaretViewController.swift */, EA985C24296E06EA00F2FF2E /* TextAreaViewController.swift */, EAC9257F29119FC400091998 /* TextLinkViewController.swift */, - EA0FC2C02912DC5500DF80B4 /* TextLinkCaretViewController.swift */, EA5E304F294D11540082B959 /* TileContainerViewController.swift */, EA5E305B295111050082B959 /* TileletViewController.swift */, EA5E30542950EA6E0082B959 /* TitleLockupViewController.swift */, diff --git a/VDSSample/ViewControllers/TabsViewController.swift b/VDSSample/ViewControllers/TabsViewController.swift index 6e0e25b..3337024 100644 --- a/VDSSample/ViewControllers/TabsViewController.swift +++ b/VDSSample/ViewControllers/TabsViewController.swift @@ -14,7 +14,59 @@ import VDSColorTokens class TabsViewController: BaseViewController { var disabledSwitch = Toggle() + var borderlineSwitch = Toggle() + var fillContainerSwitch = Toggle() + var sampleSwitch = Toggle() + var widthValueTextField = NumericField() + var widthPercentageTextField = NumericField() + + var verticalOrientationFormStackView: UIStackView = { + return UIStackView().with { + $0.translatesAutoresizingMaskIntoConstraints = false + $0.alignment = .fill + $0.distribution = .fillProportionally + $0.axis = .vertical + $0.spacing = 10 + $0.isHidden = true + } + }() + + var horizontalOrientationFormStackView: UIStackView = { + return UIStackView().with { + $0.translatesAutoresizingMaskIntoConstraints = false + $0.alignment = .fill + $0.distribution = .fillProportionally + $0.axis = .vertical + $0.spacing = 10 + } + }() + + override func allTextFields() -> [TextField]? { [widthValueTextField, widthPercentageTextField] } + lazy var orientationPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: Tabs.Orientation.allCases) + }() + + lazy var indicatorPositionPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: Tabs.IndicatorPosition.allCases) + }() + + lazy var sizePickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: Tabs.Size.allCases) + }() + + lazy var overflowPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: Tabs.Overflow.allCases) + }() + override func viewDidLoad() { super.viewDidLoad() addContentTopView(view: component) @@ -24,28 +76,90 @@ class TabsViewController: BaseViewController { override func setupForm(){ super.setupForm() + addFormRow(label: "Large Sample", view: .makeWrapper(for: sampleSwitch)) addFormRow(label: "Disabled", view: .makeWrapper(for: disabledSwitch)) + addFormRow(label: "Show Borderline", view: .makeWrapper(for: borderlineSwitch)) addFormRow(label: "Surface", view: surfacePickerSelectorView) + addFormRow(label: "Size", view: sizePickerSelectorView) + if UIDevice.isIPad { + addFormRow(label: "Orientation", view: orientationPickerSelectorView) + //only in vertical mode + addFormRow(label: "% Width (0.25 -> 1.0)", view: widthPercentageTextField, stackView: verticalOrientationFormStackView) + addFormRow(label: "# Width", view: widthValueTextField, stackView: verticalOrientationFormStackView) + } + + //only in horizontal mode + addFormRow(label: "Indicator Position", view: indicatorPositionPickerSelectorView, stackView: horizontalOrientationFormStackView) + addFormRow(label: "Overflow", view: overflowPickerSelectorView, stackView: horizontalOrientationFormStackView) + + formStackView.addArrangedSubview(verticalOrientationFormStackView) + formStackView.addArrangedSubview(horizontalOrientationFormStackView) + + disabledSwitch.onChange = { [weak self] sender in + self?.component.disabled = sender.isOn + } + + borderlineSwitch.onChange = { [weak self] sender in + self?.component.borderLine = sender.isOn + } + + fillContainerSwitch.onChange = { [weak self] sender in + self?.component.fillContainer = sender.isOn + } + + sampleSwitch.onChange = { [weak self] sender in + guard let self else { return } + self.component.selectedIndex = 0 + self.component.tabModels = sender.isOn ? self.allTabs : self.some + } + + widthValueTextField.textPublisher.sink { [weak self] text in + if let value = Double(text) { + self?.component.width = .value(value) + self?.widthPercentageTextField.text = "" + + } + }.store(in: &subscribers) + + widthPercentageTextField.textPublisher.sink { [weak self] text in + if let value = Double(text) { + self?.component.width = .percentage(value) + self?.widthValueTextField.text = "" + } + }.store(in: &subscribers) + } + var allTabs: [TabModel] = [ + TabModel(text: "All"), + TabModel(text: "Work Devices"), + TabModel(text: "Customer Service"), + TabModel(text: "Help") + ] + + var some: [TabModel] = [ + TabModel(text: "All"), + TabModel(text: "Work Devices") + ] + func setupModel() { - component.overflow = .scroll - component.updateTabItems(with: [ - TabItemModel(text: "All", width: 200), - TabItemModel(text: "Work Devices", width: 250), - TabItemModel(text: "3", width: 100), - TabItemModel(text: "4"), - TabItemModel(text: "5"), - TabItemModel(text: "6 Devices"), - TabItemModel(text: "7 Devices"), - TabItemModel(text: "8 Devices"), - TabItemModel(text: "9 Devices"), - TabItemModel(text: "10 Devices") - ]) + //set to the large sample + component.tabModels = allTabs + component.selectedIndex = 3 + + //setup UI surfacePickerSelectorView.text = component.surface.rawValue + sizePickerSelectorView.text = component.size.rawValue + orientationPickerSelectorView.text = component.orientation.rawValue + indicatorPositionPickerSelectorView.text = component.indicatorPosition.rawValue + overflowPickerSelectorView.text = component.overflow.rawValue disabledSwitch.isOn = component.disabled + borderlineSwitch.isOn = component.borderLine + fillContainerSwitch.isOn = component.fillContainer + sampleSwitch.isOn = true + updateWidth() } func setupPicker(){ @@ -53,5 +167,35 @@ class TabsViewController: BaseViewController { self?.component.surface = item self?.contentTopView.backgroundColor = item.color } + + sizePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.size = item + } + + orientationPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.orientation = item + self?.verticalOrientationFormStackView.isHidden = item == .horizontal + self?.horizontalOrientationFormStackView.isHidden = item == .vertical + } + + indicatorPositionPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.indicatorPosition = item + } + + overflowPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.overflow = item + } + } + + func updateWidth() { + switch component.width { + case .percentage(let percentage): + widthPercentageTextField.text = "\(percentage)" + case .value(let value): + widthValueTextField.text = "\(value)" + widthPercentageTextField.text = "" + @unknown default: + print("") + } } } From d9cfffe6c51da9fd3060f1e93fc9cdc7644313dc Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Tue, 23 May 2023 12:29:59 -0500 Subject: [PATCH 009/101] added release notes Signed-off-by: Matt Bruce --- .../ViewControllers/MenuViewController.swift | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/VDSSample/ViewControllers/MenuViewController.swift b/VDSSample/ViewControllers/MenuViewController.swift index 2ac4362..7e153c7 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -63,13 +63,29 @@ class MenuCell: UITableViewCell { } } -class MenuViewController: UITableViewController { +class MenuViewController: UITableViewController, TooltipLaunchable { override func viewDidLoad() { + title = "VDS Sample: Build \(Bundle.main.buildNumber ?? "none")" + let tooltip = VDS.Tooltip() + tooltip.title = "Release Notes" + tooltip.content = getReleaseNotes() + navigationItem.rightBarButtonItem = UIBarButtonItem(customView: tooltip) // UIBarButtonItem(barButtonSystemItem: .compose, target: self, action: #selector(buildInfoTapped)) super.viewDidLoad() overrideUserInterfaceStyle = .light tableView.register(MenuCell.self, forCellReuseIdentifier: "cell") } + func getReleaseNotes() -> String { + let bundle = VDS.Bundle(for: VDS.Badge.self) + guard let fileURL = bundle.url(forResource: "ReleaseNotes", withExtension: "txt") else { return "none" } + do { + return try String(contentsOf: fileURL) + } catch { + print("error reading releaseNotes") + return "none" + } + } + let items: [MenuComponent] = [ MenuComponent(title: "Badge", completed: true, viewController: BadgeViewController.self), MenuComponent(title: "Button", completed: true, viewController: ButtonViewController.self), @@ -150,3 +166,9 @@ class MenuViewController: UITableViewController { } } } + +extension Bundle { + var buildNumber: String? { + infoDictionary?["CFBundleVersion"] as? String + } +} From b49d3f736c66087c7d91aa27f64552e0e82dfe18 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Tue, 23 May 2023 12:30:59 -0500 Subject: [PATCH 010/101] fixed tabs Signed-off-by: Matt Bruce --- VDSSample/ViewControllers/TabsViewController.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/VDSSample/ViewControllers/TabsViewController.swift b/VDSSample/ViewControllers/TabsViewController.swift index 3337024..175a44a 100644 --- a/VDSSample/ViewControllers/TabsViewController.swift +++ b/VDSSample/ViewControllers/TabsViewController.swift @@ -90,6 +90,7 @@ class TabsViewController: BaseViewController { } //only in horizontal mode + addFormRow(label: "Fill Container", view: .makeWrapper(for: fillContainerSwitch), stackView: horizontalOrientationFormStackView) addFormRow(label: "Indicator Position", view: indicatorPositionPickerSelectorView, stackView: horizontalOrientationFormStackView) addFormRow(label: "Overflow", view: overflowPickerSelectorView, stackView: horizontalOrientationFormStackView) From d1f5245df0f82949b46ea53c7713bbb6fc7e1c59 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 24 May 2023 18:37:11 -0500 Subject: [PATCH 011/101] Added tabs Signed-off-by: Matt Bruce --- .../ViewControllers/TabsViewController.swift | 80 +++++++++---------- 1 file changed, 39 insertions(+), 41 deletions(-) diff --git a/VDSSample/ViewControllers/TabsViewController.swift b/VDSSample/ViewControllers/TabsViewController.swift index 175a44a..d9fed6b 100644 --- a/VDSSample/ViewControllers/TabsViewController.swift +++ b/VDSSample/ViewControllers/TabsViewController.swift @@ -84,9 +84,9 @@ class TabsViewController: BaseViewController { if UIDevice.isIPad { addFormRow(label: "Orientation", view: orientationPickerSelectorView) - //only in vertical mode - addFormRow(label: "% Width (0.25 -> 1.0)", view: widthPercentageTextField, stackView: verticalOrientationFormStackView) - addFormRow(label: "# Width", view: widthValueTextField, stackView: verticalOrientationFormStackView) +// //only in vertical mode +// addFormRow(label: "% Width (0.25 -> 1.0)", view: widthPercentageTextField, stackView: verticalOrientationFormStackView) +// addFormRow(label: "# Width", view: widthValueTextField, stackView: verticalOrientationFormStackView) } //only in horizontal mode @@ -94,7 +94,7 @@ class TabsViewController: BaseViewController { addFormRow(label: "Indicator Position", view: indicatorPositionPickerSelectorView, stackView: horizontalOrientationFormStackView) addFormRow(label: "Overflow", view: overflowPickerSelectorView, stackView: horizontalOrientationFormStackView) - formStackView.addArrangedSubview(verticalOrientationFormStackView) +// formStackView.addArrangedSubview(verticalOrientationFormStackView) formStackView.addArrangedSubview(horizontalOrientationFormStackView) disabledSwitch.onChange = { [weak self] sender in @@ -115,40 +115,38 @@ class TabsViewController: BaseViewController { self.component.tabModels = sender.isOn ? self.allTabs : self.some } - widthValueTextField.textPublisher.sink { [weak self] text in - if let value = Double(text) { - self?.component.width = .value(value) - self?.widthPercentageTextField.text = "" - - } - }.store(in: &subscribers) - - widthPercentageTextField.textPublisher.sink { [weak self] text in - if let value = Double(text) { - self?.component.width = .percentage(value) - self?.widthValueTextField.text = "" - } - }.store(in: &subscribers) +// widthValueTextField.textPublisher.sink { [weak self] text in +// if let value = Double(text) { +// self?.component.width = .value(value) +// self?.widthPercentageTextField.text = "" +// +// } +// }.store(in: &subscribers) +// +// widthPercentageTextField.textPublisher.sink { [weak self] text in +// if let value = Double(text) { +// self?.component.width = .percentage(value) +// self?.widthValueTextField.text = "" +// } +// }.store(in: &subscribers) } - var allTabs: [TabModel] = [ - TabModel(text: "All"), - TabModel(text: "Work Devices"), - TabModel(text: "Customer Service"), - TabModel(text: "Help") + var allTabs: [Tabs.TabModel] = [ + .init(text: "Accessories"), + .init(text: "Internet and TV"), + .init(text: "Customer Service"), + .init(text: "Contact Us") ] - var some: [TabModel] = [ - TabModel(text: "All"), - TabModel(text: "Work Devices") + var some: [Tabs.TabModel] = [ + .init(text: "Accessories"), + .init(text: "Internet and TV") ] func setupModel() { //set to the large sample - component.tabModels = allTabs - component.selectedIndex = 3 - + component.tabModels = allTabs //setup UI surfacePickerSelectorView.text = component.surface.rawValue @@ -160,7 +158,7 @@ class TabsViewController: BaseViewController { borderlineSwitch.isOn = component.borderLine fillContainerSwitch.isOn = component.fillContainer sampleSwitch.isOn = true - updateWidth() +// updateWidth() } func setupPicker(){ @@ -188,15 +186,15 @@ class TabsViewController: BaseViewController { } } - func updateWidth() { - switch component.width { - case .percentage(let percentage): - widthPercentageTextField.text = "\(percentage)" - case .value(let value): - widthValueTextField.text = "\(value)" - widthPercentageTextField.text = "" - @unknown default: - print("") - } - } +// func updateWidth() { +// switch component.width { +// case .percentage(let percentage): +// widthPercentageTextField.text = "\(percentage)" +// case .value(let value): +// widthValueTextField.text = "\(value)" +// widthPercentageTextField.text = "" +// @unknown default: +// print("") +// } +// } } From d9d37059279d5fd8e2023158ebcc5c3a5614b248 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 24 May 2023 19:18:06 -0500 Subject: [PATCH 012/101] initial tabscontainer Signed-off-by: Matt Bruce --- VDSSample.xcodeproj/project.pbxproj | 4 + .../ViewControllers/MenuViewController.swift | 3 +- .../TabsContainerViewController.swift | 399 ++++++++++++++++++ 3 files changed, 405 insertions(+), 1 deletion(-) create mode 100644 VDSSample/ViewControllers/TabsContainerViewController.swift diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index 8d320bd..abcbff8 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -49,6 +49,7 @@ EA5E3050294D11540082B959 /* TileContainerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E304F294D11540082B959 /* TileContainerViewController.swift */; }; EA5E30552950EA6E0082B959 /* TitleLockupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E30542950EA6E0082B959 /* TitleLockupViewController.swift */; }; EA5E305C295111050082B959 /* TileletViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E305B295111050082B959 /* TileletViewController.swift */; }; + EA5F86CE2A1E863F00BC83E4 /* TabsContainerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5F86CD2A1E863F00BC83E4 /* TabsContainerViewController.swift */; }; EA81410E2A0ED8DC004F60D2 /* ButtonIconViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA81410D2A0ED8DC004F60D2 /* ButtonIconViewController.swift */; }; EA84F76228BE4AE500D67ABC /* RadioSwatchGroupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA84F76128BE4AE500D67ABC /* RadioSwatchGroupViewController.swift */; }; EA89201928B56DF5006B9984 /* RadioBoxGroupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89201828B56DF5006B9984 /* RadioBoxGroupViewController.swift */; }; @@ -138,6 +139,7 @@ EA5E304F294D11540082B959 /* TileContainerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TileContainerViewController.swift; sourceTree = ""; }; EA5E30542950EA6E0082B959 /* TitleLockupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleLockupViewController.swift; sourceTree = ""; }; EA5E305B295111050082B959 /* TileletViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TileletViewController.swift; sourceTree = ""; }; + EA5F86CD2A1E863F00BC83E4 /* TabsContainerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabsContainerViewController.swift; sourceTree = ""; }; EA81410D2A0ED8DC004F60D2 /* ButtonIconViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonIconViewController.swift; sourceTree = ""; }; EA84F76128BE4AE500D67ABC /* RadioSwatchGroupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioSwatchGroupViewController.swift; sourceTree = ""; }; EA89201828B56DF5006B9984 /* RadioBoxGroupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioBoxGroupViewController.swift; sourceTree = ""; }; @@ -305,6 +307,7 @@ EA89201828B56DF5006B9984 /* RadioBoxGroupViewController.swift */, EAF7F11928A14A0E00B287F5 /* RadioButtonViewController.swift */, EA84F76128BE4AE500D67ABC /* RadioSwatchGroupViewController.swift */, + EA5F86CD2A1E863F00BC83E4 /* TabsContainerViewController.swift */, EA596AB92A16B2ED00300C4B /* TabsViewController.swift */, EA0FC2C02912DC5500DF80B4 /* TextLinkCaretViewController.swift */, EA985C24296E06EA00F2FF2E /* TextAreaViewController.swift */, @@ -495,6 +498,7 @@ EA81410E2A0ED8DC004F60D2 /* ButtonIconViewController.swift in Sources */, EA985C20296DECF600F2FF2E /* IconName.swift in Sources */, EA89204928B66CE2006B9984 /* KeyboardFrameChangeListening.swift in Sources */, + EA5F86CE2A1E863F00BC83E4 /* TabsContainerViewController.swift in Sources */, EA985C01296CC21C00F2FF2E /* IconViewController.swift in Sources */, EAC9258029119FC400091998 /* TextLinkViewController.swift in Sources */, EAB1D2D428AC409F00DAE764 /* LabelViewController.swift in Sources */, diff --git a/VDSSample/ViewControllers/MenuViewController.swift b/VDSSample/ViewControllers/MenuViewController.swift index 7e153c7..e437e08 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -101,7 +101,8 @@ class MenuViewController: UITableViewController, TooltipLaunchable { MenuComponent(title: "RadioBoxGroup", completed: true, viewController: RadioBoxGroupViewController.self), MenuComponent(title: "RadioButtonGroup", completed: true, viewController: RadioButtonViewController.self), MenuComponent(title: "RadioSwatchGroup", completed: true, viewController: RadioSwatchGroupViewController.self), - MenuComponent(title: "Tabs", completed: false, viewController: TabsViewController.self), + MenuComponent(title: "TabsContainer", completed: false, viewController: TabsContainerViewController.self), + MenuComponent(title: "Tabs", completed: true, viewController: TabsViewController.self), MenuComponent(title: "TextArea", completed: false, viewController: TextAreaViewController.self), MenuComponent(title: "TextLink", completed: true, viewController: TextLinkViewController.self), MenuComponent(title: "TextLinkCaret", completed: true, viewController: TextLinkCaretViewController.self), diff --git a/VDSSample/ViewControllers/TabsContainerViewController.swift b/VDSSample/ViewControllers/TabsContainerViewController.swift new file mode 100644 index 0000000..38ec7a4 --- /dev/null +++ b/VDSSample/ViewControllers/TabsContainerViewController.swift @@ -0,0 +1,399 @@ +// +// TabViewContainerViewController.swift +// VDSSample +// +// Created by Matt Bruce on 5/24/23. +// + +import Foundation +import UIKit +import VDS +import Combine +import VDSColorTokens + +class TabsContainerViewController: BaseViewController { + + var disabledSwitch = Toggle() + var borderlineSwitch = Toggle() + var fillContainerSwitch = Toggle() + var sampleSwitch = Toggle() + var widthValueTextField = NumericField() + var widthPercentageTextField = NumericField() + + var verticalOrientationFormStackView: UIStackView = { + return UIStackView().with { + $0.translatesAutoresizingMaskIntoConstraints = false + $0.alignment = .fill + $0.distribution = .fill + $0.axis = .vertical + $0.spacing = 10 + $0.isHidden = true + } + }() + + var horizontalOrientationFormStackView: UIStackView = { + return UIStackView().with { + $0.translatesAutoresizingMaskIntoConstraints = false + $0.alignment = .fill + $0.distribution = .fill + $0.axis = .vertical + $0.spacing = 10 + } + }() + + override func allTextFields() -> [TextField]? { [widthValueTextField, widthPercentageTextField] } + + lazy var orientationPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: Tabs.Orientation.allCases) + }() + + lazy var indicatorPositionPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: Tabs.IndicatorPosition.allCases) + }() + + lazy var sizePickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: Tabs.Size.allCases) + }() + + lazy var overflowPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: Tabs.Overflow.allCases) + }() + + override func viewDidLoad() { + super.viewDidLoad() + addContentTopView(view: component) + setupPicker() + setupModel() + } + + override func setupForm(){ + super.setupForm() + addFormRow(label: "Large Sample", view: .makeWrapper(for: sampleSwitch)) + addFormRow(label: "Disabled", view: .makeWrapper(for: disabledSwitch)) + addFormRow(label: "Show Borderline", view: .makeWrapper(for: borderlineSwitch)) + addFormRow(label: "Surface", view: surfacePickerSelectorView) + addFormRow(label: "Size", view: sizePickerSelectorView) + + if UIDevice.isIPad { + addFormRow(label: "Orientation", view: orientationPickerSelectorView) + //only in vertical mode + addFormRow(label: "% Width (0.25 -> 1.0)", view: widthPercentageTextField, stackView: verticalOrientationFormStackView) + addFormRow(label: "# Width", view: widthValueTextField, stackView: verticalOrientationFormStackView) + } + + //only in horizontal mode + addFormRow(label: "Fill Container", view: .makeWrapper(for: fillContainerSwitch), stackView: horizontalOrientationFormStackView) + addFormRow(label: "Indicator Position", view: indicatorPositionPickerSelectorView, stackView: horizontalOrientationFormStackView) + addFormRow(label: "Overflow", view: overflowPickerSelectorView, stackView: horizontalOrientationFormStackView) + + formStackView.addArrangedSubview(verticalOrientationFormStackView) + formStackView.addArrangedSubview(horizontalOrientationFormStackView) + + disabledSwitch.onChange = { [weak self] sender in + self?.component.disabled = sender.isOn + } + + borderlineSwitch.onChange = { [weak self] sender in + self?.component.borderLine = sender.isOn + } + + fillContainerSwitch.onChange = { [weak self] sender in + self?.component.fillContainer = sender.isOn + } + + sampleSwitch.onChange = { [weak self] sender in + guard let self else { return } + self.component.selectedIndex = 0 + self.component.tabModels = sender.isOn ? self.getAllTabs() : self.getSomeTabs() + } + + widthValueTextField.textPublisher.sink { [weak self] text in + if let value = Double(text) { + self?.component.width = .value(value) + self?.widthPercentageTextField.text = "" + + } + }.store(in: &subscribers) + + widthPercentageTextField.textPublisher.sink { [weak self] text in + if let value = Double(text) { + self?.component.width = .percentage(value) + self?.widthValueTextField.text = "" + } + }.store(in: &subscribers) + + } + + func getTabs(texts:[String]) -> [TabsContainer.TabModel] { + texts.compactMap { + let label = Label() + label.text = "This is an example of the \($0) Tab. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." + return TabsContainer.TabModel(model: .init(text: $0), view: label) + } + } + + func getAllTabs() -> [TabsContainer.TabModel] { + getTabs(texts: ["Accessories", "Internet and TV", "Customer Service", "Contact Us"]) + } + + func getSomeTabs() -> [TabsContainer.TabModel] { + getTabs(texts: ["Accessories", "Internet and TV"]) + } + + func setupModel() { + //set to the large sample + component.tabModels = getAllTabs() + + //setup UI + surfacePickerSelectorView.text = component.surface.rawValue + sizePickerSelectorView.text = component.size.rawValue + orientationPickerSelectorView.text = component.orientation.rawValue + indicatorPositionPickerSelectorView.text = component.indicatorPosition.rawValue + overflowPickerSelectorView.text = component.overflow.rawValue + disabledSwitch.isOn = component.disabled + borderlineSwitch.isOn = component.borderLine + fillContainerSwitch.isOn = component.fillContainer + sampleSwitch.isOn = true + updateWidth() + } + + func setupPicker(){ + surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.surface = item + self?.contentTopView.backgroundColor = item.color + } + + sizePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.size = item + } + + orientationPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.orientation = item + self?.verticalOrientationFormStackView.isHidden = item == .horizontal + self?.horizontalOrientationFormStackView.isHidden = item == .vertical + } + + indicatorPositionPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.indicatorPosition = item + } + + overflowPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.overflow = item + } + } + + func updateWidth() { + switch component.width { + case .percentage(let percentage): + widthPercentageTextField.text = "\(percentage)" + case .value(let value): + widthValueTextField.text = "\(value)" + widthPercentageTextField.text = "" + @unknown default: + print("") + } + } + +} + +open class TabsContainer: View { + + //-------------------------------------------------- + // MARK: - Public Properties + //-------------------------------------------------- + open var tabMenu = Tabs() + + ///An optional callback that is called when the selectedIndex changes. Passes parameters (event, tabIndex). + open var onTabChange: ((Int) -> Void)? + + ///Determines the layout of the Tabs, defaults to horizontal + open var orientation: Tabs.Orientation = .horizontal { didSet { setNeedsUpdate() } } + + ///When true, Tabs will have border line. If false is passed then the border line won't be visible. + open var borderLine: Bool = true { didSet { setNeedsUpdate() } } + + ///It will fill the Tabs to the width of the compoent and all Tabs will be in equal width when orientation is horizontal. This is recommended when there are no more than 2-3 tabs. + open var fillContainer: Bool = false { didSet { setNeedsUpdate() } } + + ///When true, Tabs will be sticky to top of page, when orientation is vertical. + open var indicatorFillTab: Bool = false { didSet { setNeedsUpdate() } } + + ///Sets the Position of the Selected/Hover Border Accent for All Tabs, only for Horizontal Orientation + open var indicatorPosition: Tabs.IndicatorPosition = .bottom { didSet { setNeedsUpdate() } } + + ///Minimum Width for All Tabs, when orientation is horizontal. + open var minWidth: CGFloat = 44.0 { didSet { setNeedsUpdate() } } + + ///If set to 'scroll', Tabs can be overflow and scrollable. With 'none', tabs will not overflow and labels will be wrapped to multiple lines if the label text is long. + open var overflow: Tabs.Overflow = .scroll { didSet { setNeedsUpdate() } } + + ///The initial Selected Tab's index and is set once a Tab is clicked + open var selectedIndex: Int = 0 { didSet { setNeedsUpdate() } } + + ///Determines the size of the Tabs TextStyle + open var size: Tabs.Size = .medium { didSet { setNeedsUpdate() } } + + ///When true, Tabs will be sticky to top of page, when orientation is vertical. + open var sticky: Bool = false { didSet { setNeedsUpdate() } } + + ///rules for width + private var _width: Tabs.Width = .percentage(0.25) + + ///Width of all Tabs when orientation is vertical, defaults to 25%. + open var width: Tabs.Width { + get { + return _width + } + set { + switch newValue { + case .percentage(let percentage): + if percentage >= 0 && percentage <= 1 { + _width = newValue + setNeedsUpdate() + } else { + print("Invalid percentage value. It should be between 0 and 1.") + } + case .value(let value): + if value >= minWidth { + _width = newValue + setNeedsUpdate() + } else { + print("Invalid value. It should be greater than or equal to \(minWidth).") + } + @unknown default: + print("new value passed.") + } + } + } + + ///Model of the Tabs you are wanting to show. + open var tabModels: [TabModel] = [] { + didSet { + tabMenu.tabModels = tabModels.compactMap{ $0.model } + bottomView.arrangedSubviews.forEach{ $0.removeFromSuperview() } + tabModels.forEach { + var view = $0.view + view.isHidden = true + bottomView.addArrangedSubview($0.view) + } + setNeedsUpdate() + } + } + + //-------------------------------------------------- + // MARK: - Private Properties + //-------------------------------------------------- + private var contentViewWidthConstraint: NSLayoutConstraint? + + private var stackView = UIStackView().with { + $0.translatesAutoresizingMaskIntoConstraints = false + $0.axis = .vertical + $0.spacing = 5 + $0.alignment = .fill + $0.distribution = .fill + } + + private var bottomView = UIStackView().with { + $0.translatesAutoresizingMaskIntoConstraints = false + $0.alignment = .fill + $0.distribution = .fillProportionally + $0.axis = .vertical + $0.spacing = 10 + } + + private var tabMenuLayoutGuide = UILayoutGuide() + + open override func setup() { + super.setup() + tabMenu.addLayoutGuide(tabMenuLayoutGuide) + addSubview(stackView) + stackView.pinToSuperView() + stackView.addArrangedSubview(tabMenu) + stackView.addArrangedSubview(bottomView) + + NSLayoutConstraint.activate([ + tabMenuLayoutGuide.topAnchor.constraint(equalTo: topAnchor), + tabMenuLayoutGuide.bottomAnchor.constraint(equalTo: bottomAnchor), + tabMenuLayoutGuide.leadingAnchor.constraint(equalTo: leadingAnchor), + tabMenuLayoutGuide.trailingAnchor.constraint(equalTo: trailingAnchor) + ]) + } + + open override func updateView() { + super.updateView() + stackView.alignment = orientation == .horizontal ? .fill : .top + stackView.axis = orientation == .horizontal ? .vertical : .horizontal + + tabMenu.onTabChange = { [weak self] index in + guard let self else { return } + self.tabClicked(index: index) + } + + contentViewWidthConstraint?.isActive = false + + if orientation == .vertical { + switch width { + case .percentage(let amount): + contentViewWidthConstraint = tabMenu.widthAnchor.constraint(equalTo: tabMenuLayoutGuide.widthAnchor, multiplier: amount) + case .value(let amount): + contentViewWidthConstraint = tabMenu.widthAnchor.constraint(equalToConstant: amount) + @unknown default: break + } + contentViewWidthConstraint?.isActive = true + } + + tabMenu.surface = surface + tabMenu.disabled = disabled + tabMenu.orientation = orientation + tabMenu.borderLine = borderLine + tabMenu.fillContainer = fillContainer + tabMenu.indicatorFillTab = indicatorFillTab + tabMenu.indicatorPosition = indicatorPosition + tabMenu.minWidth = minWidth + tabMenu.overflow = overflow + tabMenu.selectedIndex = selectedIndex + tabMenu.size = size + tabMenu.sticky = sticky + + setSelected(index: selectedIndex) + + tabModels.forEach { + var view = $0.view + view.surface = surface + } + } + + private func tabClicked(index: Int) { + onTabChange?(index) + setSelected(index: index) + } + + private func setSelected(index: Int) { + for (modelIndex, model) in tabModels.enumerated() { + var view = model.view + let shouldShow = index == modelIndex + view.isHidden = !shouldShow + } + } +} + +extension TabsContainer { + public struct TabModel { + public typealias AnySurfaceableView = UIView & Surfaceable + public var model: Tabs.TabModel + public var view: AnySurfaceableView + + public init(model: Tabs.TabModel, view: AnySurfaceableView) { + self.model = model + self.view = view + } + } +} From 089020c64b1483e08df9f9545e9a18a1e60306b2 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 25 May 2023 08:04:28 -0500 Subject: [PATCH 013/101] removed tabscontainer and pushed to vds Signed-off-by: Matt Bruce --- .../TabsContainerViewController.swift | 195 ------------------ 1 file changed, 195 deletions(-) diff --git a/VDSSample/ViewControllers/TabsContainerViewController.swift b/VDSSample/ViewControllers/TabsContainerViewController.swift index 38ec7a4..41588db 100644 --- a/VDSSample/ViewControllers/TabsContainerViewController.swift +++ b/VDSSample/ViewControllers/TabsContainerViewController.swift @@ -201,199 +201,4 @@ class TabsContainerViewController: BaseViewController { print("") } } - -} - -open class TabsContainer: View { - - //-------------------------------------------------- - // MARK: - Public Properties - //-------------------------------------------------- - open var tabMenu = Tabs() - - ///An optional callback that is called when the selectedIndex changes. Passes parameters (event, tabIndex). - open var onTabChange: ((Int) -> Void)? - - ///Determines the layout of the Tabs, defaults to horizontal - open var orientation: Tabs.Orientation = .horizontal { didSet { setNeedsUpdate() } } - - ///When true, Tabs will have border line. If false is passed then the border line won't be visible. - open var borderLine: Bool = true { didSet { setNeedsUpdate() } } - - ///It will fill the Tabs to the width of the compoent and all Tabs will be in equal width when orientation is horizontal. This is recommended when there are no more than 2-3 tabs. - open var fillContainer: Bool = false { didSet { setNeedsUpdate() } } - - ///When true, Tabs will be sticky to top of page, when orientation is vertical. - open var indicatorFillTab: Bool = false { didSet { setNeedsUpdate() } } - - ///Sets the Position of the Selected/Hover Border Accent for All Tabs, only for Horizontal Orientation - open var indicatorPosition: Tabs.IndicatorPosition = .bottom { didSet { setNeedsUpdate() } } - - ///Minimum Width for All Tabs, when orientation is horizontal. - open var minWidth: CGFloat = 44.0 { didSet { setNeedsUpdate() } } - - ///If set to 'scroll', Tabs can be overflow and scrollable. With 'none', tabs will not overflow and labels will be wrapped to multiple lines if the label text is long. - open var overflow: Tabs.Overflow = .scroll { didSet { setNeedsUpdate() } } - - ///The initial Selected Tab's index and is set once a Tab is clicked - open var selectedIndex: Int = 0 { didSet { setNeedsUpdate() } } - - ///Determines the size of the Tabs TextStyle - open var size: Tabs.Size = .medium { didSet { setNeedsUpdate() } } - - ///When true, Tabs will be sticky to top of page, when orientation is vertical. - open var sticky: Bool = false { didSet { setNeedsUpdate() } } - - ///rules for width - private var _width: Tabs.Width = .percentage(0.25) - - ///Width of all Tabs when orientation is vertical, defaults to 25%. - open var width: Tabs.Width { - get { - return _width - } - set { - switch newValue { - case .percentage(let percentage): - if percentage >= 0 && percentage <= 1 { - _width = newValue - setNeedsUpdate() - } else { - print("Invalid percentage value. It should be between 0 and 1.") - } - case .value(let value): - if value >= minWidth { - _width = newValue - setNeedsUpdate() - } else { - print("Invalid value. It should be greater than or equal to \(minWidth).") - } - @unknown default: - print("new value passed.") - } - } - } - - ///Model of the Tabs you are wanting to show. - open var tabModels: [TabModel] = [] { - didSet { - tabMenu.tabModels = tabModels.compactMap{ $0.model } - bottomView.arrangedSubviews.forEach{ $0.removeFromSuperview() } - tabModels.forEach { - var view = $0.view - view.isHidden = true - bottomView.addArrangedSubview($0.view) - } - setNeedsUpdate() - } - } - - //-------------------------------------------------- - // MARK: - Private Properties - //-------------------------------------------------- - private var contentViewWidthConstraint: NSLayoutConstraint? - - private var stackView = UIStackView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - $0.axis = .vertical - $0.spacing = 5 - $0.alignment = .fill - $0.distribution = .fill - } - - private var bottomView = UIStackView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - $0.alignment = .fill - $0.distribution = .fillProportionally - $0.axis = .vertical - $0.spacing = 10 - } - - private var tabMenuLayoutGuide = UILayoutGuide() - - open override func setup() { - super.setup() - tabMenu.addLayoutGuide(tabMenuLayoutGuide) - addSubview(stackView) - stackView.pinToSuperView() - stackView.addArrangedSubview(tabMenu) - stackView.addArrangedSubview(bottomView) - - NSLayoutConstraint.activate([ - tabMenuLayoutGuide.topAnchor.constraint(equalTo: topAnchor), - tabMenuLayoutGuide.bottomAnchor.constraint(equalTo: bottomAnchor), - tabMenuLayoutGuide.leadingAnchor.constraint(equalTo: leadingAnchor), - tabMenuLayoutGuide.trailingAnchor.constraint(equalTo: trailingAnchor) - ]) - } - - open override func updateView() { - super.updateView() - stackView.alignment = orientation == .horizontal ? .fill : .top - stackView.axis = orientation == .horizontal ? .vertical : .horizontal - - tabMenu.onTabChange = { [weak self] index in - guard let self else { return } - self.tabClicked(index: index) - } - - contentViewWidthConstraint?.isActive = false - - if orientation == .vertical { - switch width { - case .percentage(let amount): - contentViewWidthConstraint = tabMenu.widthAnchor.constraint(equalTo: tabMenuLayoutGuide.widthAnchor, multiplier: amount) - case .value(let amount): - contentViewWidthConstraint = tabMenu.widthAnchor.constraint(equalToConstant: amount) - @unknown default: break - } - contentViewWidthConstraint?.isActive = true - } - - tabMenu.surface = surface - tabMenu.disabled = disabled - tabMenu.orientation = orientation - tabMenu.borderLine = borderLine - tabMenu.fillContainer = fillContainer - tabMenu.indicatorFillTab = indicatorFillTab - tabMenu.indicatorPosition = indicatorPosition - tabMenu.minWidth = minWidth - tabMenu.overflow = overflow - tabMenu.selectedIndex = selectedIndex - tabMenu.size = size - tabMenu.sticky = sticky - - setSelected(index: selectedIndex) - - tabModels.forEach { - var view = $0.view - view.surface = surface - } - } - - private func tabClicked(index: Int) { - onTabChange?(index) - setSelected(index: index) - } - - private func setSelected(index: Int) { - for (modelIndex, model) in tabModels.enumerated() { - var view = model.view - let shouldShow = index == modelIndex - view.isHidden = !shouldShow - } - } -} - -extension TabsContainer { - public struct TabModel { - public typealias AnySurfaceableView = UIView & Surfaceable - public var model: Tabs.TabModel - public var view: AnySurfaceableView - - public init(model: Tabs.TabModel, view: AnySurfaceableView) { - self.model = model - self.view = view - } - } } From 38e7c6b8de14050a58166325bb44587603662208 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 25 May 2023 11:51:57 -0500 Subject: [PATCH 014/101] udpated base viewcontroller to fix bug in form creation Signed-off-by: Matt Bruce --- VDSSample.xcodeproj/project.pbxproj | 6 +- .../ViewControllers/BaseViewController.swift | 76 +++++++++++-------- .../TabsContainerViewController.swift | 43 ++++------- .../ViewControllers/TabsViewController.swift | 72 ++---------------- .../ToggleViewController.swift | 23 ++---- 5 files changed, 76 insertions(+), 144 deletions(-) diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index abcbff8..93bfb3b 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -651,7 +651,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 17; - DEVELOPMENT_TEAM = FCMA4QKS77; + DEVELOPMENT_TEAM = 59V5935DHZ; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; @@ -665,7 +665,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.vzw.VDSSample; + PRODUCT_BUNDLE_IDENTIFIER = com.vzw.enterprise.VDSSample; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; @@ -681,7 +681,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 17; - DEVELOPMENT_TEAM = FCMA4QKS77; + DEVELOPMENT_TEAM = 59V5935DHZ; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; diff --git a/VDSSample/ViewControllers/BaseViewController.swift b/VDSSample/ViewControllers/BaseViewController.swift index 06fc770..08b964c 100644 --- a/VDSSample/ViewControllers/BaseViewController.swift +++ b/VDSSample/ViewControllers/BaseViewController.swift @@ -10,6 +10,45 @@ import UIKit import Combine import VDS +public class FormSection: UIStackView { + public override init(frame: CGRect) { + super.init(frame: frame) + translatesAutoresizingMaskIntoConstraints = false + alignment = .fill + distribution = .fill + axis = .vertical + spacing = 10 + } + + public convenience init() { + self.init(frame: .zero) + } + + required init(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + open func addFormRow(label: String, view: UIView) { + let formRow = UIStackView().with { + $0.translatesAutoresizingMaskIntoConstraints = false + $0.alignment = .fill + $0.distribution = .fillEqually + $0.axis = .horizontal + $0.spacing = 5 + } + + let label = Label().with { + $0.text = label + $0.textStyle = .bodyLarge + } + + formRow.addArrangedSubview(label) + formRow.addArrangedSubview(view) + + addArrangedSubview(formRow) + } +} + public class BaseViewController: UIViewController, Initable { deinit { print("\(Self.self) deinit") @@ -85,15 +124,7 @@ public class BaseViewController: UIViewController, Initable { } }() - public var formStackView: UIStackView = { - return UIStackView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - $0.alignment = .fill - $0.distribution = .fill - $0.axis = .vertical - $0.spacing = 10 - } - }() + public var formStackView = FormSection() public var contentTopView: UIView = { return UIView().with { @@ -173,29 +204,12 @@ public class BaseViewController: UIViewController, Initable { view.pinToSuperView(.init(top: edgeSpacing, left: edgeSpacing, bottom: edgeSpacing, right: edgeSpacing)) } - open func addFormRow(label: String, view: UIView, stackView: UIStackView? = nil) { - let formRow = UIStackView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - $0.alignment = .fill - $0.distribution = .fillEqually - $0.axis = .horizontal - $0.spacing = 5 - } - - let label = Label().with { - $0.text = label - $0.textStyle = .bodyLarge - } - - formRow.addArrangedSubview(label) - formRow.addArrangedSubview(view) - - if let stackView { - stackView.addArrangedSubview(formRow) - } else { - formStackView.addArrangedSubview(formRow) - } + open func append(section: FormSection) { + formStackView.addArrangedSubview(section) + } + open func addFormRow(label: String, view: UIView) { + formStackView.addFormRow(label: label, view: view) if let pickerViewable = view as? any PickerViewable { pickerViewable.scrollToBottom = { [weak self] in self?.scrollToBottom() } } diff --git a/VDSSample/ViewControllers/TabsContainerViewController.swift b/VDSSample/ViewControllers/TabsContainerViewController.swift index 41588db..fd33f47 100644 --- a/VDSSample/ViewControllers/TabsContainerViewController.swift +++ b/VDSSample/ViewControllers/TabsContainerViewController.swift @@ -11,8 +11,10 @@ import VDS import Combine import VDSColorTokens + + class TabsContainerViewController: BaseViewController { - + var disabledSwitch = Toggle() var borderlineSwitch = Toggle() var fillContainerSwitch = Toggle() @@ -20,26 +22,8 @@ class TabsContainerViewController: BaseViewController { var widthValueTextField = NumericField() var widthPercentageTextField = NumericField() - var verticalOrientationFormStackView: UIStackView = { - return UIStackView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - $0.alignment = .fill - $0.distribution = .fill - $0.axis = .vertical - $0.spacing = 10 - $0.isHidden = true - } - }() - - var horizontalOrientationFormStackView: UIStackView = { - return UIStackView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - $0.alignment = .fill - $0.distribution = .fill - $0.axis = .vertical - $0.spacing = 10 - } - }() + var verticalOrientationFormStackView = FormSection() + var horizontalOrientationFormStackView = FormSection() override func allTextFields() -> [TextField]? { [widthValueTextField, widthPercentageTextField] } @@ -77,7 +61,6 @@ class TabsContainerViewController: BaseViewController { override func setupForm(){ super.setupForm() addFormRow(label: "Large Sample", view: .makeWrapper(for: sampleSwitch)) - addFormRow(label: "Disabled", view: .makeWrapper(for: disabledSwitch)) addFormRow(label: "Show Borderline", view: .makeWrapper(for: borderlineSwitch)) addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Size", view: sizePickerSelectorView) @@ -85,17 +68,17 @@ class TabsContainerViewController: BaseViewController { if UIDevice.isIPad { addFormRow(label: "Orientation", view: orientationPickerSelectorView) //only in vertical mode - addFormRow(label: "% Width (0.25 -> 1.0)", view: widthPercentageTextField, stackView: verticalOrientationFormStackView) - addFormRow(label: "# Width", view: widthValueTextField, stackView: verticalOrientationFormStackView) + verticalOrientationFormStackView.addFormRow(label: "% Width (0.25 -> 1.0)", view: widthPercentageTextField) + verticalOrientationFormStackView.addFormRow(label: "# Width", view: widthValueTextField) } //only in horizontal mode - addFormRow(label: "Fill Container", view: .makeWrapper(for: fillContainerSwitch), stackView: horizontalOrientationFormStackView) - addFormRow(label: "Indicator Position", view: indicatorPositionPickerSelectorView, stackView: horizontalOrientationFormStackView) - addFormRow(label: "Overflow", view: overflowPickerSelectorView, stackView: horizontalOrientationFormStackView) + horizontalOrientationFormStackView.addFormRow(label: "Fill Container", view: .makeWrapper(for: fillContainerSwitch)) + horizontalOrientationFormStackView.addFormRow(label: "Indicator Position", view: indicatorPositionPickerSelectorView) + horizontalOrientationFormStackView.addFormRow(label: "Overflow", view: overflowPickerSelectorView) - formStackView.addArrangedSubview(verticalOrientationFormStackView) - formStackView.addArrangedSubview(horizontalOrientationFormStackView) + append(section: verticalOrientationFormStackView) + append(section: horizontalOrientationFormStackView) disabledSwitch.onChange = { [weak self] sender in self?.component.disabled = sender.isOn @@ -151,7 +134,7 @@ class TabsContainerViewController: BaseViewController { func setupModel() { //set to the large sample component.tabModels = getAllTabs() - + //setup UI surfacePickerSelectorView.text = component.surface.rawValue sizePickerSelectorView.text = component.size.rawValue diff --git a/VDSSample/ViewControllers/TabsViewController.swift b/VDSSample/ViewControllers/TabsViewController.swift index d9fed6b..ce37a64 100644 --- a/VDSSample/ViewControllers/TabsViewController.swift +++ b/VDSSample/ViewControllers/TabsViewController.swift @@ -17,31 +17,8 @@ class TabsViewController: BaseViewController { var borderlineSwitch = Toggle() var fillContainerSwitch = Toggle() var sampleSwitch = Toggle() - var widthValueTextField = NumericField() - var widthPercentageTextField = NumericField() - var verticalOrientationFormStackView: UIStackView = { - return UIStackView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - $0.alignment = .fill - $0.distribution = .fillProportionally - $0.axis = .vertical - $0.spacing = 10 - $0.isHidden = true - } - }() - - var horizontalOrientationFormStackView: UIStackView = { - return UIStackView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - $0.alignment = .fill - $0.distribution = .fillProportionally - $0.axis = .vertical - $0.spacing = 10 - } - }() - - override func allTextFields() -> [TextField]? { [widthValueTextField, widthPercentageTextField] } + var horizontalOrientationFormStackView = FormSection() lazy var orientationPickerSelectorView = { PickerSelectorView(title: "", @@ -77,25 +54,20 @@ class TabsViewController: BaseViewController { override func setupForm(){ super.setupForm() addFormRow(label: "Large Sample", view: .makeWrapper(for: sampleSwitch)) - addFormRow(label: "Disabled", view: .makeWrapper(for: disabledSwitch)) addFormRow(label: "Show Borderline", view: .makeWrapper(for: borderlineSwitch)) addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Size", view: sizePickerSelectorView) - + if UIDevice.isIPad { addFormRow(label: "Orientation", view: orientationPickerSelectorView) -// //only in vertical mode -// addFormRow(label: "% Width (0.25 -> 1.0)", view: widthPercentageTextField, stackView: verticalOrientationFormStackView) -// addFormRow(label: "# Width", view: widthValueTextField, stackView: verticalOrientationFormStackView) } - + //only in horizontal mode - addFormRow(label: "Fill Container", view: .makeWrapper(for: fillContainerSwitch), stackView: horizontalOrientationFormStackView) - addFormRow(label: "Indicator Position", view: indicatorPositionPickerSelectorView, stackView: horizontalOrientationFormStackView) - addFormRow(label: "Overflow", view: overflowPickerSelectorView, stackView: horizontalOrientationFormStackView) + horizontalOrientationFormStackView.addFormRow(label: "Fill Container", view: .makeWrapper(for: fillContainerSwitch)) + horizontalOrientationFormStackView.addFormRow(label: "Indicator Position", view: indicatorPositionPickerSelectorView) + horizontalOrientationFormStackView.addFormRow(label: "Overflow", view: overflowPickerSelectorView) -// formStackView.addArrangedSubview(verticalOrientationFormStackView) - formStackView.addArrangedSubview(horizontalOrientationFormStackView) + append(section: horizontalOrientationFormStackView) disabledSwitch.onChange = { [weak self] sender in self?.component.disabled = sender.isOn @@ -114,22 +86,6 @@ class TabsViewController: BaseViewController { self.component.selectedIndex = 0 self.component.tabModels = sender.isOn ? self.allTabs : self.some } - -// widthValueTextField.textPublisher.sink { [weak self] text in -// if let value = Double(text) { -// self?.component.width = .value(value) -// self?.widthPercentageTextField.text = "" -// -// } -// }.store(in: &subscribers) -// -// widthPercentageTextField.textPublisher.sink { [weak self] text in -// if let value = Double(text) { -// self?.component.width = .percentage(value) -// self?.widthValueTextField.text = "" -// } -// }.store(in: &subscribers) - } var allTabs: [Tabs.TabModel] = [ @@ -158,7 +114,6 @@ class TabsViewController: BaseViewController { borderlineSwitch.isOn = component.borderLine fillContainerSwitch.isOn = component.fillContainer sampleSwitch.isOn = true -// updateWidth() } func setupPicker(){ @@ -173,7 +128,6 @@ class TabsViewController: BaseViewController { orientationPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.orientation = item - self?.verticalOrientationFormStackView.isHidden = item == .horizontal self?.horizontalOrientationFormStackView.isHidden = item == .vertical } @@ -185,16 +139,4 @@ class TabsViewController: BaseViewController { self?.component.overflow = item } } - -// func updateWidth() { -// switch component.width { -// case .percentage(let percentage): -// widthPercentageTextField.text = "\(percentage)" -// case .value(let value): -// widthValueTextField.text = "\(value)" -// widthPercentageTextField.text = "" -// @unknown default: -// print("") -// } -// } } diff --git a/VDSSample/ViewControllers/ToggleViewController.swift b/VDSSample/ViewControllers/ToggleViewController.swift index b256f26..0d38720 100644 --- a/VDSSample/ViewControllers/ToggleViewController.swift +++ b/VDSSample/ViewControllers/ToggleViewController.swift @@ -28,15 +28,7 @@ class ToggleViewController: BaseViewController { var disabledSwitch = Toggle() var showTextSwitch = Toggle() - var textFormStackView: UIStackView = { - return UIStackView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - $0.alignment = .fill - $0.distribution = .fillProportionally - $0.axis = .vertical - $0.spacing = 10 - } - }() + var textFormStackView = FormSection() var boldSwitch = Toggle() var onTextField = TextField() @@ -59,13 +51,14 @@ class ToggleViewController: BaseViewController { addFormRow(label: "Disabled", view: .makeWrapper(for: disabledSwitch)) //add the hidden elements to textFormStackView - addFormRow(label: "Bold", view: .makeWrapper(for: boldSwitch), stackView: textFormStackView) - addFormRow(label: "Text Size", view: textSizePickerSelectorView, stackView: textFormStackView) - addFormRow(label: "Text Position", view: textPositionPickerSelectorView, stackView: textFormStackView) - addFormRow(label: "On Text", view: onTextField, stackView: textFormStackView) - addFormRow(label: "Off Text", view: offTextField, stackView: textFormStackView) + textFormStackView.addFormRow(label: "Bold", view: .makeWrapper(for: boldSwitch)) + textFormStackView.addFormRow(label: "Text Size", view: textSizePickerSelectorView) + textFormStackView.addFormRow(label: "Text Position", view: textPositionPickerSelectorView) + textFormStackView.addFormRow(label: "On Text", view: onTextField) + textFormStackView.addFormRow(label: "Off Text", view: offTextField) + //add textFormStackView to main form - formStackView.addArrangedSubview(textFormStackView) + append(section: textFormStackView) component.onChange = { [weak self] toggle in let alertController:UIAlertController = UIAlertController(title: "Alert", From a4598644f7e4a518cb8c59c8ea638f90589fd4ef Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 25 May 2023 13:05:08 -0500 Subject: [PATCH 015/101] commented out TabsContainer for now 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 e437e08..cf82f54 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -101,7 +101,7 @@ class MenuViewController: UITableViewController, TooltipLaunchable { MenuComponent(title: "RadioBoxGroup", completed: true, viewController: RadioBoxGroupViewController.self), MenuComponent(title: "RadioButtonGroup", completed: true, viewController: RadioButtonViewController.self), MenuComponent(title: "RadioSwatchGroup", completed: true, viewController: RadioSwatchGroupViewController.self), - MenuComponent(title: "TabsContainer", completed: false, viewController: TabsContainerViewController.self), + //MenuComponent(title: "TabsContainer", completed: false, viewController: TabsContainerViewController.self), MenuComponent(title: "Tabs", completed: true, viewController: TabsViewController.self), MenuComponent(title: "TextArea", completed: false, viewController: TextAreaViewController.self), MenuComponent(title: "TextLink", completed: true, viewController: TextLinkViewController.self), From ee772648b197359efdddbbd36a5972751f33b744 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 25 May 2023 14:14:52 -0500 Subject: [PATCH 016/101] fixed issue with buttons in selector Signed-off-by: Matt Bruce --- VDSSample/Classes/Helper.swift | 12 +++++++++--- VDSSample/Protocols/PickerBase.swift | 3 ++- VDSSample/ViewControllers/TabsViewController.swift | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/VDSSample/Classes/Helper.swift b/VDSSample/Classes/Helper.swift index 8540dec..4b24467 100644 --- a/VDSSample/Classes/Helper.swift +++ b/VDSSample/Classes/Helper.swift @@ -10,7 +10,7 @@ import VDS import UIKit extension UIView { - public static func makeWrapper(for view: UIView, edgeSpacing: CGFloat = 0.0) -> UIView { + public static func makeWrapper(for view: UIView, edgeSpacing: CGFloat = 0.0, isTrailing: Bool = true) -> UIView { let wrapper = UIView().with { $0.translatesAutoresizingMaskIntoConstraints = false } @@ -18,8 +18,14 @@ extension UIView { view .pinTop(edgeSpacing) .pinBottom(edgeSpacing) - .pinLeading(edgeSpacing) - view.trailingAnchor.constraint(lessThanOrEqualTo: wrapper.trailingAnchor).isActive = true + + if isTrailing { + view.pinLeading(edgeSpacing) + view.trailingAnchor.constraint(lessThanOrEqualTo: wrapper.trailingAnchor).isActive = true + } else { + view.leadingAnchor.constraint(greaterThanOrEqualTo: wrapper.leadingAnchor).isActive = true + view.pinTrailing(edgeSpacing) + } return wrapper } } diff --git a/VDSSample/Protocols/PickerBase.swift b/VDSSample/Protocols/PickerBase.swift index 201b8d4..36ad337 100644 --- a/VDSSample/Protocols/PickerBase.swift +++ b/VDSSample/Protocols/PickerBase.swift @@ -60,6 +60,7 @@ public class PickerSelectorView: UIStackView, Picker public var items: [EnumType] { didSet { selectedIndex = 0 } } + public var onClick: AnyCancellable? public var onPickerDidSelect: ((EnumType) -> Void)? public var scrollToBottom: (()->Void)? public init(title: String, picker: UIPickerView? = nil, items: [EnumType]) { @@ -74,7 +75,7 @@ public class PickerSelectorView: UIStackView, Picker label.text = title updateSelectedIndex() addArrangedSubview(label) - addArrangedSubview(button) + addArrangedSubview(.makeWrapper(for: button, isTrailing: false)) button.onClick = { [weak self] _ in self?.picker?.delegate = self self?.picker?.dataSource = self diff --git a/VDSSample/ViewControllers/TabsViewController.swift b/VDSSample/ViewControllers/TabsViewController.swift index ce37a64..32fd06a 100644 --- a/VDSSample/ViewControllers/TabsViewController.swift +++ b/VDSSample/ViewControllers/TabsViewController.swift @@ -57,7 +57,7 @@ class TabsViewController: BaseViewController { addFormRow(label: "Show Borderline", view: .makeWrapper(for: borderlineSwitch)) addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Size", view: sizePickerSelectorView) - + if UIDevice.isIPad { addFormRow(label: "Orientation", view: orientationPickerSelectorView) } From 4dd121f961189e92e60b4100843c0c8352048acc Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 25 May 2023 14:34:22 -0500 Subject: [PATCH 017/101] updated version Signed-off-by: Matt Bruce --- VDSSample.xcodeproj/project.pbxproj | 4 +- .../ViewControllers/MenuViewController.swift | 38 +++++++++++-------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index 93bfb3b..4122d31 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -650,7 +650,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 17; + CURRENT_PROJECT_VERSION = 18; DEVELOPMENT_TEAM = 59V5935DHZ; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; @@ -680,7 +680,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 17; + CURRENT_PROJECT_VERSION = 18; DEVELOPMENT_TEAM = 59V5935DHZ; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; diff --git a/VDSSample/ViewControllers/MenuViewController.swift b/VDSSample/ViewControllers/MenuViewController.swift index cf82f54..5063362 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -65,27 +65,17 @@ class MenuCell: UITableViewCell { class MenuViewController: UITableViewController, TooltipLaunchable { override func viewDidLoad() { - title = "VDS Sample: Build \(Bundle.main.buildNumber ?? "none")" + title = "VDS Sample: Build \(Bundle.main.build ?? "none")" let tooltip = VDS.Tooltip() - tooltip.title = "Release Notes" - tooltip.content = getReleaseNotes() + let bundle = VDS.Bundle(for: VDS.Badge.self) + tooltip.title = "Release Notes: \(bundle.build ?? "")" + tooltip.content = bundle.contents("ReleaseNotes") navigationItem.rightBarButtonItem = UIBarButtonItem(customView: tooltip) // UIBarButtonItem(barButtonSystemItem: .compose, target: self, action: #selector(buildInfoTapped)) super.viewDidLoad() overrideUserInterfaceStyle = .light tableView.register(MenuCell.self, forCellReuseIdentifier: "cell") } - - func getReleaseNotes() -> String { - let bundle = VDS.Bundle(for: VDS.Badge.self) - guard let fileURL = bundle.url(forResource: "ReleaseNotes", withExtension: "txt") else { return "none" } - do { - return try String(contentsOf: fileURL) - } catch { - print("error reading releaseNotes") - return "none" - } - } - + let items: [MenuComponent] = [ MenuComponent(title: "Badge", completed: true, viewController: BadgeViewController.self), MenuComponent(title: "Button", completed: true, viewController: ButtonViewController.self), @@ -169,7 +159,25 @@ class MenuViewController: UITableViewController, TooltipLaunchable { } extension Bundle { + var versionNumber: String? { + infoDictionary?["CFBundleShortVersionString"] as? String + } var buildNumber: String? { infoDictionary?["CFBundleVersion"] as? String } + + var build: String? { + guard let versionNumber, let buildNumber else { return nil } + return "\(versionNumber).\(buildNumber)" + } + + func contents(_ fileName: String, fileExtension: String = "txt" ) -> String { + guard let fileURL = url(forResource: fileName, withExtension: fileExtension) else { return "none" } + do { + return try String(contentsOf: fileURL) + } catch { + print("error reading releaseNotes") + return "none" + } + } } From 8e9e2db635ea5f7bdac8e51a300c435adf81cc08 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 25 May 2023 15:23:58 -0500 Subject: [PATCH 018/101] updated bundleid Signed-off-by: Matt Bruce --- VDSSample.xcodeproj/project.pbxproj | 64 +++++++++++++++-------------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index 4122d31..21f9314 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -649,36 +649,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 18; - DEVELOPMENT_TEAM = 59V5935DHZ; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = VDSSample/Info.plist; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UIMainStoryboardFile = Main; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.vzw.enterprise.VDSSample; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - EA3C3BAF289966F1000CA526 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; + CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 18; DEVELOPMENT_TEAM = 59V5935DHZ; @@ -697,6 +668,39 @@ MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.vzw.VDSSample; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + EA3C3BAF289966F1000CA526 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 18; + DEVELOPMENT_TEAM = 59V5935DHZ; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = VDSSample/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.vzw.VDSSample; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; From daf18a23d79d9b8a5f3819fdee9b90a214669f7e Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 31 May 2023 14:00:15 -0500 Subject: [PATCH 019/101] udpated to version 19 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 21f9314..8f8a791 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -651,7 +651,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 18; + CURRENT_PROJECT_VERSION = 19; DEVELOPMENT_TEAM = 59V5935DHZ; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; @@ -683,7 +683,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 18; + CURRENT_PROJECT_VERSION = 19; DEVELOPMENT_TEAM = 59V5935DHZ; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; From 1888618f4515fb632838c25a0b02852f99adbed0 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Mon, 5 Jun 2023 11:02:11 -0500 Subject: [PATCH 020/101] refactored to new names Signed-off-by: Matt Bruce --- VDSSample/ViewControllers/CheckBoxGroupViewController.swift | 2 +- VDSSample/ViewControllers/CheckboxViewController.swift | 2 +- VDSSample/ViewControllers/RadioBoxGroupViewController.swift | 2 +- VDSSample/ViewControllers/RadioButtonViewController.swift | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/VDSSample/ViewControllers/CheckBoxGroupViewController.swift b/VDSSample/ViewControllers/CheckBoxGroupViewController.swift index fe1ba08..f1ee18e 100644 --- a/VDSSample/ViewControllers/CheckBoxGroupViewController.swift +++ b/VDSSample/ViewControllers/CheckBoxGroupViewController.swift @@ -95,7 +95,7 @@ class CheckboxGroupViewController: BaseViewController { } - var checkbox: Checkbox? { + var checkbox: CheckboxItem? { component.selectorViews.first } diff --git a/VDSSample/ViewControllers/CheckboxViewController.swift b/VDSSample/ViewControllers/CheckboxViewController.swift index 75118e9..65ad3be 100644 --- a/VDSSample/ViewControllers/CheckboxViewController.swift +++ b/VDSSample/ViewControllers/CheckboxViewController.swift @@ -11,7 +11,7 @@ import VDS import VDSColorTokens import Combine -class CheckboxViewController: BaseViewController { +class CheckboxViewController: BaseViewController { var disabledSwitch = Toggle() var labelTextField = TextField() diff --git a/VDSSample/ViewControllers/RadioBoxGroupViewController.swift b/VDSSample/ViewControllers/RadioBoxGroupViewController.swift index 7a381a7..48cb9a6 100644 --- a/VDSSample/ViewControllers/RadioBoxGroupViewController.swift +++ b/VDSSample/ViewControllers/RadioBoxGroupViewController.swift @@ -104,7 +104,7 @@ class RadioBoxGroupViewController: BaseViewController{ subTextRightField.text = radioBox1.subTextRight } - var radioBox: RadioBox? { + var radioBox: RadioBoxItem? { component.selectorViews.first } diff --git a/VDSSample/ViewControllers/RadioButtonViewController.swift b/VDSSample/ViewControllers/RadioButtonViewController.swift index af19810..c162059 100644 --- a/VDSSample/ViewControllers/RadioButtonViewController.swift +++ b/VDSSample/ViewControllers/RadioButtonViewController.swift @@ -97,7 +97,7 @@ class RadioButtonViewController: BaseViewController { childTextField.text = radioButton1.childText } - var radioButton: RadioButton? { + var radioButton: RadioButtonItem? { component.selectorViews.first } From 89e6a70bdeda9599b250e0f613e2cbb5f6a2edea Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Mon, 5 Jun 2023 14:52:33 -0500 Subject: [PATCH 021/101] updated to new 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 8f8a791..8081192 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -651,7 +651,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 19; + CURRENT_PROJECT_VERSION = 20; DEVELOPMENT_TEAM = 59V5935DHZ; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; @@ -683,7 +683,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 19; + CURRENT_PROJECT_VERSION = 20; DEVELOPMENT_TEAM = 59V5935DHZ; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; From e0c36b0d67d31ada20e002f9c32629d8f6137f88 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 7 Jun 2023 15:52:23 -0500 Subject: [PATCH 022/101] updated version Signed-off-by: Matt Bruce --- VDSSample.xcodeproj/project.pbxproj | 4 ++-- VDSSample/ViewControllers/MenuViewController.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index 8081192..f4d69bd 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -651,7 +651,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 20; + CURRENT_PROJECT_VERSION = 21; DEVELOPMENT_TEAM = 59V5935DHZ; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; @@ -683,7 +683,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 20; + CURRENT_PROJECT_VERSION = 21; DEVELOPMENT_TEAM = 59V5935DHZ; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; diff --git a/VDSSample/ViewControllers/MenuViewController.swift b/VDSSample/ViewControllers/MenuViewController.swift index 5063362..4063623 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -96,7 +96,7 @@ class MenuViewController: UITableViewController, TooltipLaunchable { MenuComponent(title: "TextArea", completed: false, viewController: TextAreaViewController.self), MenuComponent(title: "TextLink", completed: true, viewController: TextLinkViewController.self), MenuComponent(title: "TextLinkCaret", completed: true, viewController: TextLinkCaretViewController.self), - MenuComponent(title: "TileContainer", completed: true, viewController: TileContainerViewController.self), + MenuComponent(title: "TileContainer", completed: false, viewController: TileContainerViewController.self), MenuComponent(title: "Tilelet", completed: false, viewController: TileletViewController.self), MenuComponent(title: "TitleLockup", completed: true, viewController: TitleLockupViewController.self), MenuComponent(title: "Toggle", completed: true, viewController: ToggleViewController.self), From bcba477e6ce150482a20d6934ff68f689f907352 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 8 Jun 2023 15:39:06 -0500 Subject: [PATCH 023/101] updated to return view Signed-off-by: Matt Bruce --- VDSSample/ViewControllers/BaseViewController.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/VDSSample/ViewControllers/BaseViewController.swift b/VDSSample/ViewControllers/BaseViewController.swift index 08b964c..45374ee 100644 --- a/VDSSample/ViewControllers/BaseViewController.swift +++ b/VDSSample/ViewControllers/BaseViewController.swift @@ -28,7 +28,8 @@ public class FormSection: UIStackView { fatalError("init(coder:) has not been implemented") } - open func addFormRow(label: String, view: UIView) { + @discardableResult + open func addFormRow(label: String, view: UIView) -> UIView { let formRow = UIStackView().with { $0.translatesAutoresizingMaskIntoConstraints = false $0.alignment = .fill @@ -46,6 +47,7 @@ public class FormSection: UIStackView { formRow.addArrangedSubview(view) addArrangedSubview(formRow) + return formRow } } From f8085bb2583864e8dd41c63caacd212526ec8381 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 8 Jun 2023 15:40:35 -0500 Subject: [PATCH 024/101] show/hide overflow row for fill container Signed-off-by: Matt Bruce --- VDSSample/ViewControllers/TabsContainerViewController.swift | 6 ++++-- VDSSample/ViewControllers/TabsViewController.swift | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/VDSSample/ViewControllers/TabsContainerViewController.swift b/VDSSample/ViewControllers/TabsContainerViewController.swift index fd33f47..7717991 100644 --- a/VDSSample/ViewControllers/TabsContainerViewController.swift +++ b/VDSSample/ViewControllers/TabsContainerViewController.swift @@ -24,7 +24,8 @@ class TabsContainerViewController: BaseViewController { var verticalOrientationFormStackView = FormSection() var horizontalOrientationFormStackView = FormSection() - + var overflowRow: UIView? + override func allTextFields() -> [TextField]? { [widthValueTextField, widthPercentageTextField] } lazy var orientationPickerSelectorView = { @@ -75,7 +76,7 @@ class TabsContainerViewController: BaseViewController { //only in horizontal mode horizontalOrientationFormStackView.addFormRow(label: "Fill Container", view: .makeWrapper(for: fillContainerSwitch)) horizontalOrientationFormStackView.addFormRow(label: "Indicator Position", view: indicatorPositionPickerSelectorView) - horizontalOrientationFormStackView.addFormRow(label: "Overflow", view: overflowPickerSelectorView) + overflowRow = horizontalOrientationFormStackView.addFormRow(label: "Overflow", view: overflowPickerSelectorView) append(section: verticalOrientationFormStackView) append(section: horizontalOrientationFormStackView) @@ -90,6 +91,7 @@ class TabsContainerViewController: BaseViewController { fillContainerSwitch.onChange = { [weak self] sender in self?.component.fillContainer = sender.isOn + self?.overflowRow?.isHidden = sender.isOn } sampleSwitch.onChange = { [weak self] sender in diff --git a/VDSSample/ViewControllers/TabsViewController.swift b/VDSSample/ViewControllers/TabsViewController.swift index 32fd06a..8578800 100644 --- a/VDSSample/ViewControllers/TabsViewController.swift +++ b/VDSSample/ViewControllers/TabsViewController.swift @@ -19,6 +19,7 @@ class TabsViewController: BaseViewController { var sampleSwitch = Toggle() var horizontalOrientationFormStackView = FormSection() + var overflowRow: UIView? lazy var orientationPickerSelectorView = { PickerSelectorView(title: "", @@ -65,8 +66,8 @@ class TabsViewController: BaseViewController { //only in horizontal mode horizontalOrientationFormStackView.addFormRow(label: "Fill Container", view: .makeWrapper(for: fillContainerSwitch)) horizontalOrientationFormStackView.addFormRow(label: "Indicator Position", view: indicatorPositionPickerSelectorView) - horizontalOrientationFormStackView.addFormRow(label: "Overflow", view: overflowPickerSelectorView) - + overflowRow = horizontalOrientationFormStackView.addFormRow(label: "Overflow", view: overflowPickerSelectorView) + append(section: horizontalOrientationFormStackView) disabledSwitch.onChange = { [weak self] sender in @@ -79,6 +80,7 @@ class TabsViewController: BaseViewController { fillContainerSwitch.onChange = { [weak self] sender in self?.component.fillContainer = sender.isOn + self?.overflowRow?.isHidden = sender.isOn } sampleSwitch.onChange = { [weak self] sender in From 79a51f72397908e712b9106ba5198716bd456d84 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 9 Jun 2023 14:18:25 -0500 Subject: [PATCH 025/101] added ability to return views in addRow Signed-off-by: Matt Bruce --- VDSSample/ViewControllers/BaseViewController.swift | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/VDSSample/ViewControllers/BaseViewController.swift b/VDSSample/ViewControllers/BaseViewController.swift index 45374ee..c5644f5 100644 --- a/VDSSample/ViewControllers/BaseViewController.swift +++ b/VDSSample/ViewControllers/BaseViewController.swift @@ -209,12 +209,14 @@ public class BaseViewController: UIViewController, Initable { open func append(section: FormSection) { formStackView.addArrangedSubview(section) } - - open func addFormRow(label: String, view: UIView) { - formStackView.addFormRow(label: label, view: view) + + @discardableResult + open func addFormRow(label: String, view: UIView) -> UIView { + let view = formStackView.addFormRow(label: label, view: view) if let pickerViewable = view as? any PickerViewable { pickerViewable.scrollToBottom = { [weak self] in self?.scrollToBottom() } } + return view } open func setup() { From f3acbfe0071e922ec736ac9899797e99daecea40 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 9 Jun 2023 14:18:40 -0500 Subject: [PATCH 026/101] turned off property for now. Signed-off-by: Matt Bruce --- .../ViewControllers/TabsViewController.swift | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/VDSSample/ViewControllers/TabsViewController.swift b/VDSSample/ViewControllers/TabsViewController.swift index 8578800..3f5e5bc 100644 --- a/VDSSample/ViewControllers/TabsViewController.swift +++ b/VDSSample/ViewControllers/TabsViewController.swift @@ -19,7 +19,6 @@ class TabsViewController: BaseViewController { var sampleSwitch = Toggle() var horizontalOrientationFormStackView = FormSection() - var overflowRow: UIView? lazy var orientationPickerSelectorView = { PickerSelectorView(title: "", @@ -39,11 +38,12 @@ class TabsViewController: BaseViewController { items: Tabs.Size.allCases) }() - lazy var overflowPickerSelectorView = { - PickerSelectorView(title: "", - picker: self.picker, - items: Tabs.Overflow.allCases) - }() +// var overflowRow: UIView? +// lazy var overflowPickerSelectorView = { +// PickerSelectorView(title: "", +// picker: self.picker, +// items: Tabs.Overflow.allCases) +// }() override func viewDidLoad() { super.viewDidLoad() @@ -66,7 +66,7 @@ class TabsViewController: BaseViewController { //only in horizontal mode horizontalOrientationFormStackView.addFormRow(label: "Fill Container", view: .makeWrapper(for: fillContainerSwitch)) horizontalOrientationFormStackView.addFormRow(label: "Indicator Position", view: indicatorPositionPickerSelectorView) - overflowRow = horizontalOrientationFormStackView.addFormRow(label: "Overflow", view: overflowPickerSelectorView) + //overflowRow = horizontalOrientationFormStackView.addFormRow(label: "Overflow", view: overflowPickerSelectorView) append(section: horizontalOrientationFormStackView) @@ -80,7 +80,7 @@ class TabsViewController: BaseViewController { fillContainerSwitch.onChange = { [weak self] sender in self?.component.fillContainer = sender.isOn - self?.overflowRow?.isHidden = sender.isOn + //self?.overflowRow?.isHidden = sender.isOn } sampleSwitch.onChange = { [weak self] sender in @@ -111,7 +111,7 @@ class TabsViewController: BaseViewController { sizePickerSelectorView.text = component.size.rawValue orientationPickerSelectorView.text = component.orientation.rawValue indicatorPositionPickerSelectorView.text = component.indicatorPosition.rawValue - overflowPickerSelectorView.text = component.overflow.rawValue + //overflowPickerSelectorView.text = component.overflow.rawValue disabledSwitch.isOn = component.disabled borderlineSwitch.isOn = component.borderLine fillContainerSwitch.isOn = component.fillContainer @@ -137,8 +137,8 @@ class TabsViewController: BaseViewController { self?.component.indicatorPosition = item } - overflowPickerSelectorView.onPickerDidSelect = { [weak self] item in - self?.component.overflow = item - } +// overflowPickerSelectorView.onPickerDidSelect = { [weak self] item in +// self?.component.overflow = item +// } } } From 8467e3ed13bb233835c8cc6e8b987aa3b9ed0c01 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Tue, 13 Jun 2023 18:04:42 -0500 Subject: [PATCH 027/101] added drop shadow tester Signed-off-by: Matt Bruce --- VDSSample.xcodeproj/project.pbxproj | 8 +- .../ViewControllers/BaseViewController.swift | 2 +- .../DropShawdowViewController.swift | 190 ++++++++++++++++++ .../ViewControllers/MenuViewController.swift | 1 + 4 files changed, 198 insertions(+), 3 deletions(-) create mode 100644 VDSSample/ViewControllers/DropShawdowViewController.swift diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index f4d69bd..29483a2 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -77,6 +77,7 @@ EAB5FEEF2927E28400998C17 /* ButtonGroupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB5FEEE2927E28400998C17 /* ButtonGroupViewController.swift */; }; EAB5FEF32928153D00998C17 /* Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB5FEF22928153D00998C17 /* Helper.swift */; }; EAC9258029119FC400091998 /* TextLinkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC9257F29119FC400091998 /* TextLinkViewController.swift */; }; + EAD062A32A3913920015965D /* DropShawdowViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAD062A22A3913920015965D /* DropShawdowViewController.swift */; }; EAF7F07D2899698800B287F5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EAF7F07B2899698800B287F5 /* Assets.xcassets */; }; EAF7F09C2899B92400B287F5 /* CheckboxViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F09B2899B92400B287F5 /* CheckboxViewController.swift */; }; EAF7F0CA289DA24F00B287F5 /* ArtifactoryItems.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAF7F0C5289DA24F00B287F5 /* ArtifactoryItems.txt */; }; @@ -166,6 +167,7 @@ EAB5FEEE2927E28400998C17 /* ButtonGroupViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ButtonGroupViewController.swift; sourceTree = ""; }; EAB5FEF22928153D00998C17 /* Helper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Helper.swift; sourceTree = ""; }; EAC9257F29119FC400091998 /* TextLinkViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextLinkViewController.swift; sourceTree = ""; }; + EAD062A22A3913920015965D /* DropShawdowViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DropShawdowViewController.swift; sourceTree = ""; }; EAF7F07B2899698800B287F5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; EAF7F09B2899B92400B287F5 /* CheckboxViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckboxViewController.swift; sourceTree = ""; }; EAF7F0C5289DA24F00B287F5 /* ArtifactoryItems.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ArtifactoryItems.txt; sourceTree = ""; }; @@ -292,6 +294,7 @@ children = ( EA89203E28B66CE2006B9984 /* ScrollViewController */, EA3C3BB228996775000CA526 /* MenuViewController.swift */, + EAD062A22A3913920015965D /* DropShawdowViewController.swift */, EAB1D2C828AAAA1D00DAE764 /* BaseViewController.swift */, EA4DB30328DCD25B00103EE3 /* BadgeViewController.swift */, EA81410D2A0ED8DC004F60D2 /* ButtonIconViewController.swift */, @@ -484,6 +487,7 @@ EAB2376C29E9E74900AABE9A /* TrailingTooltipLabel.swift in Sources */, EAB1D2C928AAAA1D00DAE764 /* BaseViewController.swift in Sources */, EA5E305C295111050082B959 /* TileletViewController.swift in Sources */, + EAD062A32A3913920015965D /* DropShawdowViewController.swift in Sources */, EAB5FEF32928153D00998C17 /* Helper.swift in Sources */, EA89204728B66CE2006B9984 /* KeyboardFrameChangeListener.swift in Sources */, EA4DB30428DCD25B00103EE3 /* BadgeViewController.swift in Sources */, @@ -651,7 +655,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 21; + CURRENT_PROJECT_VERSION = 22; DEVELOPMENT_TEAM = 59V5935DHZ; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; @@ -683,7 +687,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 21; + CURRENT_PROJECT_VERSION = 22; DEVELOPMENT_TEAM = 59V5935DHZ; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; diff --git a/VDSSample/ViewControllers/BaseViewController.swift b/VDSSample/ViewControllers/BaseViewController.swift index c5644f5..f3d89d9 100644 --- a/VDSSample/ViewControllers/BaseViewController.swift +++ b/VDSSample/ViewControllers/BaseViewController.swift @@ -249,7 +249,7 @@ public class BaseViewController: UIViewController, Initable { } open func updateView() { - print("\(Self.self) updateView()") + //print("\(Self.self) updateView()") } open func allTextFields() -> [TextField]? { nil } diff --git a/VDSSample/ViewControllers/DropShawdowViewController.swift b/VDSSample/ViewControllers/DropShawdowViewController.swift new file mode 100644 index 0000000..6540d52 --- /dev/null +++ b/VDSSample/ViewControllers/DropShawdowViewController.swift @@ -0,0 +1,190 @@ +// +// DropShawdowViewController.swift +// VDSSample +// +// Created by Matt Bruce on 6/13/23. +// + +import Foundation +import UIKit +import VDS +import VDSColorTokens +import Combine + +class Slider: Control, UITextFieldDelegate { + var textField = NumericField().with { $0.translatesAutoresizingMaskIntoConstraints = false } + var range = UISlider().with { $0.translatesAutoresizingMaskIntoConstraints = false } + var maximumValue: Float = 0.0 { didSet { range.maximumValue = maximumValue }} + var minimumValue: Float = 0.0 { didSet { range.minimumValue = minimumValue }} + var value: Float = 0.0 { didSet { range.value = value; setNeedsUpdate() }} + override func setup() { + addSubview(textField) + addSubview(range) + textField.delegate = self + textField.pinTop() + textField.pinBottom() + textField.pinLeading() + textField.heightAnchor.constraint(equalToConstant: 44).isActive = true + textField.widthAnchor.constraint(equalToConstant: 75).isActive = true + textField.pinTrailing(range.leadingAnchor, 10) + range.pinTop() + range.pinBottom() + range.pinTrailing() + + range.publisher(for: .valueChanged).sink { [weak self] slider in + self?.value = slider.value + self?.sendActions(for: .valueChanged) + }.store(in: &subscribers) + } + + override func updateView() { + textField.text = String(format: "%.2f", value) + } + + func textFieldShouldReturn(_ textField: UITextField) -> Bool { + textField.resignFirstResponder() + if let text = textField.text, let n = NumberFormatter().number(from: text) { + self.value = n.floatValue + print(self.value) + } + return true + } +} + +class DropShadowViewController: BaseViewController { + var shadowLightColor: UIColor.VDSColor = .backgroundPrimaryDark { didSet { updateView() }} + var shadowDarkColor: UIColor.VDSColor = .backgroundPrimaryLight { didSet { updateView() }} + var viewLightColor: UIColor.VDSColor = .paletteGray65 { didSet { updateView() }} + var viewDarkColor: UIColor.VDSColor = .backgroundPrimaryLight { didSet { updateView() }} + + var opacityRange = Slider() + var radiusRange = Slider() + var offsetXRange = Slider() + var offsetYRange = Slider() + + lazy var dropShadowLightColorPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: UIColor.VDSColor.allCases) + }() + + lazy var dropShadowDarkColorPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: UIColor.VDSColor.allCases) + }() + + lazy var viewLightColorPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: UIColor.VDSColor.allCases) + }() + + lazy var viewDarkColorPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: UIColor.VDSColor.allCases) + }() + + let spacer: Float = 50 + override func viewDidLoad() { + super.viewDidLoad() + component.widthAnchor.constraint(equalToConstant: 100).isActive = true + component.heightAnchor.constraint(equalToConstant: 100).isActive = true + addContentTopView(view: .makeWrapper(for: component, edgeSpacing: Double(spacer)), edgeSpacing: 0.0) + setupPicker() + setupModel() + updateView() + } + + override func setupForm(){ + super.setupForm() + addFormRow(label: "Surface", view: surfacePickerSelectorView) + addFormRow(label: "View Light", view: viewLightColorPickerSelectorView) + addFormRow(label: "View Dark", view: viewDarkColorPickerSelectorView) + addFormRow(label: "Shawdow Light", view: dropShadowLightColorPickerSelectorView) + addFormRow(label: "Shawdow Dark", view: dropShadowDarkColorPickerSelectorView) + + addFormRow(label: "Opacity", view: opacityRange) + addFormRow(label: "Radius (Blur)", view: radiusRange) + addFormRow(label: "Width (OffSet X)", view: offsetXRange) + addFormRow(label: "Height (Offset Y)", view: offsetYRange) + + opacityRange.maximumValue = 1.0 + opacityRange.minimumValue = 0.0 + opacityRange.value = 1.0 + opacityRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.updateView() + }).store(in: &subscribers) + + radiusRange.maximumValue = 20.0 + radiusRange.minimumValue = 0.0 + radiusRange.value = 2.0 + radiusRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.updateView() + }).store(in: &subscribers) + + offsetXRange.maximumValue = spacer + offsetXRange.minimumValue = -spacer + offsetXRange.value = 2.0 + offsetXRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.updateView() + }).store(in: &subscribers) + + offsetYRange.maximumValue = spacer + offsetYRange.minimumValue = -spacer + offsetYRange.value = 2.0 + offsetYRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.updateView() + }).store(in: &subscribers) + + + dropShadowLightColorPickerSelectorView.text = shadowLightColor.rawValue + dropShadowDarkColorPickerSelectorView.text = shadowDarkColor.rawValue + viewLightColorPickerSelectorView.text = viewLightColor.rawValue + viewDarkColorPickerSelectorView.text = viewDarkColor.rawValue + } + + func setupModel() { + //setup UI + surfacePickerSelectorView.text = component.surface.rawValue + } + + override func updateView() { + let surface = surfacePickerSelectorView.selectedItem + let dropshadowColorConfiguration = SurfaceColorConfiguration(shadowLightColor.uiColor, shadowDarkColor.uiColor) + let viewColorConfiguration = SurfaceColorConfiguration(viewLightColor.uiColor, viewDarkColor.uiColor) + + component.layer.masksToBounds = false + component.backgroundColor = viewColorConfiguration.getColor(surface) + component.layer.shadowColor = dropshadowColorConfiguration.getColor(surface).cgColor + component.layer.shadowOpacity = Float(opacityRange.value) + component.layer.shadowOffset = .init(width: CGFloat(offsetXRange.value), height: CGFloat(offsetYRange.value)) + component.layer.shadowRadius = CGFloat(radiusRange.value) + component.layer.cornerRadius = 8 + } + + func setupPicker(){ + + surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.contentTopView.backgroundColor = item.color + self?.updateView() + } + + dropShadowDarkColorPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.shadowDarkColor = item + } + + dropShadowLightColorPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.shadowLightColor = item + } + + viewLightColorPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.viewLightColor = item + } + + viewDarkColorPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.viewDarkColor = item + } + } +} diff --git a/VDSSample/ViewControllers/MenuViewController.swift b/VDSSample/ViewControllers/MenuViewController.swift index 4063623..4b3554d 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -77,6 +77,7 @@ class MenuViewController: UITableViewController, TooltipLaunchable { } let items: [MenuComponent] = [ + MenuComponent(title: "DropShadow Tester", completed: true, viewController: DropShadowViewController.self), MenuComponent(title: "Badge", completed: true, viewController: BadgeViewController.self), MenuComponent(title: "Button", completed: true, viewController: ButtonViewController.self), MenuComponent(title: "ButtonGroup", completed: true, viewController: ButtonGroupViewController.self), From 82944a6abb32b3e7b309ca0ac3b8961a4050d6d3 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Tue, 13 Jun 2023 18:04:56 -0500 Subject: [PATCH 028/101] updated var Signed-off-by: Matt Bruce --- VDSSample/ViewControllers/ButtonIconViewController.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VDSSample/ViewControllers/ButtonIconViewController.swift b/VDSSample/ViewControllers/ButtonIconViewController.swift index 76342de..85dae52 100644 --- a/VDSSample/ViewControllers/ButtonIconViewController.swift +++ b/VDSSample/ViewControllers/ButtonIconViewController.swift @@ -84,7 +84,7 @@ class ButtonIconViewController: BaseViewController { } floating.onChange = { [weak self] sender in - self?.component.fitToIcon = sender.isOn + self?.component.floating = sender.isOn } hideBorder.onChange = { [weak self] sender in From 82ee3bd6ca44c99e79ede107fc92955e13bd1bf6 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Tue, 13 Jun 2023 20:22:21 -0500 Subject: [PATCH 029/101] updated tester Signed-off-by: Matt Bruce --- .../DropShawdowViewController.swift | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/VDSSample/ViewControllers/DropShawdowViewController.swift b/VDSSample/ViewControllers/DropShawdowViewController.swift index 6540d52..6caf71c 100644 --- a/VDSSample/ViewControllers/DropShawdowViewController.swift +++ b/VDSSample/ViewControllers/DropShawdowViewController.swift @@ -31,9 +31,9 @@ class Slider: Control, UITextFieldDelegate { range.pinBottom() range.pinTrailing() + range.thumbTintColor = .systemBlue range.publisher(for: .valueChanged).sink { [weak self] slider in - self?.value = slider.value - self?.sendActions(for: .valueChanged) + self?.valueChanged(newValue: slider.value) }.store(in: &subscribers) } @@ -41,11 +41,15 @@ class Slider: Control, UITextFieldDelegate { textField.text = String(format: "%.2f", value) } + private func valueChanged(newValue: Float) { + value = newValue + sendActions(for: .valueChanged) + } + func textFieldShouldReturn(_ textField: UITextField) -> Bool { textField.resignFirstResponder() if let text = textField.text, let n = NumberFormatter().number(from: text) { - self.value = n.floatValue - print(self.value) + valueChanged(newValue: n.floatValue) } return true } @@ -57,11 +61,14 @@ class DropShadowViewController: BaseViewController { var viewLightColor: UIColor.VDSColor = .paletteGray65 { didSet { updateView() }} var viewDarkColor: UIColor.VDSColor = .backgroundPrimaryLight { didSet { updateView() }} + var viewRadiusRange = Slider() var opacityRange = Slider() var radiusRange = Slider() var offsetXRange = Slider() var offsetYRange = Slider() + var viewSize: CGFloat = 100.0 + lazy var dropShadowLightColorPickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, @@ -89,8 +96,8 @@ class DropShadowViewController: BaseViewController { let spacer: Float = 50 override func viewDidLoad() { super.viewDidLoad() - component.widthAnchor.constraint(equalToConstant: 100).isActive = true - component.heightAnchor.constraint(equalToConstant: 100).isActive = true + component.widthAnchor.constraint(equalToConstant: viewSize).isActive = true + component.heightAnchor.constraint(equalToConstant: viewSize).isActive = true addContentTopView(view: .makeWrapper(for: component, edgeSpacing: Double(spacer)), edgeSpacing: 0.0) setupPicker() setupModel() @@ -100,6 +107,7 @@ class DropShadowViewController: BaseViewController { override func setupForm(){ super.setupForm() addFormRow(label: "Surface", view: surfacePickerSelectorView) + addFormRow(label: "View Corner Radius", view: viewRadiusRange) addFormRow(label: "View Light", view: viewLightColorPickerSelectorView) addFormRow(label: "View Dark", view: viewDarkColorPickerSelectorView) addFormRow(label: "Shawdow Light", view: dropShadowLightColorPickerSelectorView) @@ -137,7 +145,13 @@ class DropShadowViewController: BaseViewController { offsetYRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in self?.updateView() }).store(in: &subscribers) - + + viewRadiusRange.maximumValue = Float(viewSize / 2) + viewRadiusRange.minimumValue = 0 + viewRadiusRange.value = 8.0 + viewRadiusRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.updateView() + }).store(in: &subscribers) dropShadowLightColorPickerSelectorView.text = shadowLightColor.rawValue dropShadowDarkColorPickerSelectorView.text = shadowDarkColor.rawValue @@ -155,13 +169,13 @@ class DropShadowViewController: BaseViewController { let dropshadowColorConfiguration = SurfaceColorConfiguration(shadowLightColor.uiColor, shadowDarkColor.uiColor) let viewColorConfiguration = SurfaceColorConfiguration(viewLightColor.uiColor, viewDarkColor.uiColor) + component.layer.cornerRadius = CGFloat(viewRadiusRange.value) component.layer.masksToBounds = false component.backgroundColor = viewColorConfiguration.getColor(surface) component.layer.shadowColor = dropshadowColorConfiguration.getColor(surface).cgColor component.layer.shadowOpacity = Float(opacityRange.value) component.layer.shadowOffset = .init(width: CGFloat(offsetXRange.value), height: CGFloat(offsetYRange.value)) component.layer.shadowRadius = CGFloat(radiusRange.value) - component.layer.cornerRadius = 8 } func setupPicker(){ From 0d2ab56ef959fa906619d0f532ab94df03ab8a31 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 14 Jun 2023 16:56:04 -0500 Subject: [PATCH 030/101] updated helper Signed-off-by: Matt Bruce --- VDSSample/Classes/Helper.swift | 108 ++++++++++++++++-- .../ViewControllers/BaseViewController.swift | 6 +- .../DropShawdowViewController.swift | 99 +++++++++++++--- 3 files changed, 187 insertions(+), 26 deletions(-) diff --git a/VDSSample/Classes/Helper.swift b/VDSSample/Classes/Helper.swift index 4b24467..80b2605 100644 --- a/VDSSample/Classes/Helper.swift +++ b/VDSSample/Classes/Helper.swift @@ -10,24 +10,114 @@ import VDS import UIKit extension UIView { + + public class ViewConstraints { + public var topConstraint: NSLayoutConstraint? + public var leadingConstraint: NSLayoutConstraint? + public var trailingConstraint: NSLayoutConstraint? + public var bottomConstraint: NSLayoutConstraint? + public weak var view: UIView? + public var allConstraints: [NSLayoutConstraint] { + [topConstraint, leadingConstraint, trailingConstraint, bottomConstraint].compactMap{ $0 } + } + + public var isActive: Bool = true { + didSet { + allConstraints.forEach { $0.isActive = isActive } + } + } + + public init(view: UIView){ + self.view = view + } + + public func removeConstraint(edges: [UIRectEdge]) { + edges.forEach { edge in + switch edge { + case .all: + if let leadingConstraint { + view?.removeConstraint(leadingConstraint) + } + if let trailingConstraint { + view?.removeConstraint(trailingConstraint) + } + if let topConstraint { + view?.removeConstraint(topConstraint) + } + if let bottomConstraint { + view?.removeConstraint(bottomConstraint) + } + case .left: + if let leadingConstraint { + view?.removeConstraint(leadingConstraint) + } + case .right: + if let trailingConstraint { + view?.removeConstraint(trailingConstraint) + } + case .top: + if let topConstraint { + view?.removeConstraint(topConstraint) + } + case .bottom: + if let bottomConstraint { + view?.removeConstraint(bottomConstraint) + } + default: + break + } + } + } + } + public static func makeWrapper(for view: UIView, edgeSpacing: CGFloat = 0.0, isTrailing: Bool = true) -> UIView { + return makeWrappedView(for: view, edgeSpacing: edgeSpacing, isTrailing: isTrailing).view + } + + public class WrappedViewHelper { + public var view: UIView + public var constraints: ViewConstraints + + var viewPadding: CGFloat = 0 { + didSet { + constraints.topConstraint?.constant = viewPadding + constraints.leadingConstraint?.constant = viewPadding + constraints.trailingConstraint?.constant = -viewPadding + constraints.bottomConstraint?.constant = -viewPadding + } + } + + public init(view: UIView, constraints: ViewConstraints) { + self.view = view + self.constraints = constraints + } + } + + public static func makeWrappedView(for view: UIView, edgeSpacing: CGFloat = 0.0, isTrailing: Bool = true) -> WrappedViewHelper { let wrapper = UIView().with { $0.translatesAutoresizingMaskIntoConstraints = false } wrapper.addSubview(view) - view - .pinTop(edgeSpacing) - .pinBottom(edgeSpacing) + let constraints = view.addConstraints(to: wrapper, edgeSpacing: edgeSpacing, isTrailing: isTrailing) + return WrappedViewHelper(view: wrapper, constraints: constraints) + } + + public func addConstraints(to view: UIView, edgeSpacing: CGFloat = 0.0, isTrailing: Bool = true) -> ViewConstraints { + let constraints = ViewConstraints(view: self) + constraints.topConstraint = topAnchor.constraint(equalTo: view.topAnchor) + constraints.bottomConstraint = bottomAnchor.constraint(equalTo: view.bottomAnchor) if isTrailing { - view.pinLeading(edgeSpacing) - view.trailingAnchor.constraint(lessThanOrEqualTo: wrapper.trailingAnchor).isActive = true + constraints.leadingConstraint = leadingAnchor.constraint(equalTo: view.leadingAnchor) + constraints.trailingConstraint = trailingAnchor.constraint(lessThanOrEqualTo: view.trailingAnchor) + } else { - view.leadingAnchor.constraint(greaterThanOrEqualTo: wrapper.leadingAnchor).isActive = true - view.pinTrailing(edgeSpacing) + constraints.leadingConstraint = leadingAnchor.constraint(equalTo: view.leadingAnchor) + constraints.trailingConstraint = trailingAnchor.constraint(equalTo: view.trailingAnchor) } - return wrapper - } + constraints.isActive = true + return constraints + } } extension ButtonBase { diff --git a/VDSSample/ViewControllers/BaseViewController.swift b/VDSSample/ViewControllers/BaseViewController.swift index f3d89d9..9d24259 100644 --- a/VDSSample/ViewControllers/BaseViewController.swift +++ b/VDSSample/ViewControllers/BaseViewController.swift @@ -116,9 +116,13 @@ public class BaseViewController: UIViewController, Initable { lazy var debugViewSwitch = Toggle().with{ $0.onChange = { [weak self] sender in - self?.component.debugBorder(show: sender.isOn, color: .blue) + self?.showDebug(show: sender.isOn) } } + + open func showDebug(show: Bool) { + self.component.debugBorder(show: show, color: .blue) + } public var contentView: UIView = { return UIView().with { diff --git a/VDSSample/ViewControllers/DropShawdowViewController.swift b/VDSSample/ViewControllers/DropShawdowViewController.swift index 6caf71c..d70a652 100644 --- a/VDSSample/ViewControllers/DropShawdowViewController.swift +++ b/VDSSample/ViewControllers/DropShawdowViewController.swift @@ -60,53 +60,102 @@ class DropShadowViewController: BaseViewController { var shadowDarkColor: UIColor.VDSColor = .backgroundPrimaryLight { didSet { updateView() }} var viewLightColor: UIColor.VDSColor = .paletteGray65 { didSet { updateView() }} var viewDarkColor: UIColor.VDSColor = .backgroundPrimaryLight { didSet { updateView() }} - + + var viewPaddingRange = Slider() var viewRadiusRange = Slider() var opacityRange = Slider() var radiusRange = Slider() var offsetXRange = Slider() var offsetYRange = Slider() - - var viewSize: CGFloat = 100.0 + var viewSpacerRange = Slider() + var viewSize: CGFloat = 100.0 + var wrappedHelper: UIView.WrappedViewHelper! + var secondView = View() + var thirdView = View() + lazy var dropShadowLightColorPickerSelectorView = { PickerSelectorView(title: "", - picker: self.picker, + picker: self.picker, items: UIColor.VDSColor.allCases) }() - + lazy var dropShadowDarkColorPickerSelectorView = { PickerSelectorView(title: "", - picker: self.picker, + picker: self.picker, items: UIColor.VDSColor.allCases) }() - + lazy var viewLightColorPickerSelectorView = { PickerSelectorView(title: "", - picker: self.picker, + picker: self.picker, items: UIColor.VDSColor.allCases) }() - + lazy var viewDarkColorPickerSelectorView = { PickerSelectorView(title: "", - picker: self.picker, + picker: self.picker, items: UIColor.VDSColor.allCases) }() + + var spacer: Float = 0 { + didSet { + spacings.forEach{ $0.constant = CGFloat(spacer) } + } + } - let spacer: Float = 50 + var spacings = [NSLayoutConstraint]() + override func viewDidLoad() { super.viewDidLoad() + + wrappedHelper = UIView.makeWrappedView(for: component, isTrailing: false) + contentTopView.addSubview(wrappedHelper.view) + contentTopView.addSubview(secondView) + contentTopView.addSubview(thirdView) + component.widthAnchor.constraint(equalToConstant: viewSize).isActive = true component.heightAnchor.constraint(equalToConstant: viewSize).isActive = true - addContentTopView(view: .makeWrapper(for: component, edgeSpacing: Double(spacer)), edgeSpacing: 0.0) + + secondView.widthAnchor.constraint(equalToConstant: viewSize).isActive = true + secondView.heightAnchor.constraint(equalToConstant: viewSize).isActive = true + + thirdView.widthAnchor.constraint(equalToConstant: viewSize).isActive = true + thirdView.heightAnchor.constraint(equalToConstant: viewSize).isActive = true + + wrappedHelper.view.pinTop().pinLeading() + secondView.pinTop() + thirdView.pinLeading().pinBottom() + + secondView.trailingAnchor.constraint(lessThanOrEqualTo: contentTopView.trailingAnchor).isActive = true + secondView.bottomAnchor.constraint(lessThanOrEqualTo: contentTopView.bottomAnchor).isActive = true + thirdView.trailingAnchor.constraint(lessThanOrEqualTo: contentTopView.trailingAnchor).isActive = true + + spacings.append(thirdView.topAnchor.constraint(equalTo: wrappedHelper.view.bottomAnchor)) + spacings.append(secondView.leadingAnchor.constraint(equalTo: wrappedHelper.view.trailingAnchor)) + spacings.forEach{ $0.isActive = true } + + spacer = 10 + wrappedHelper.viewPadding = 10 + setupPicker() setupModel() updateView() } + override func showDebug(show: Bool) { + super.showDebug(show: show) + component.debugBorder(show: false) + wrappedHelper.view.debugBorder(show: show, color: .green) + secondView.debugBorder(show: show, color: .green) + thirdView.debugBorder(show: show, color: .green) + } + override func setupForm(){ super.setupForm() addFormRow(label: "Surface", view: surfacePickerSelectorView) + addFormRow(label: "Space Between Views", view: viewSpacerRange) + addFormRow(label: "View Padding", view: viewPaddingRange) addFormRow(label: "View Corner Radius", view: viewRadiusRange) addFormRow(label: "View Light", view: viewLightColorPickerSelectorView) addFormRow(label: "View Dark", view: viewDarkColorPickerSelectorView) @@ -145,6 +194,14 @@ class DropShadowViewController: BaseViewController { offsetYRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in self?.updateView() }).store(in: &subscribers) + + viewPaddingRange.maximumValue = 50.0 + viewPaddingRange.minimumValue = 0.0 + viewPaddingRange.value = 2.0 + viewPaddingRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.wrappedHelper.viewPadding = CGFloat(slider.value) + self?.updateView() + }).store(in: &subscribers) viewRadiusRange.maximumValue = Float(viewSize / 2) viewRadiusRange.minimumValue = 0 @@ -153,6 +210,13 @@ class DropShadowViewController: BaseViewController { self?.updateView() }).store(in: &subscribers) + viewSpacerRange.maximumValue = 50 + viewSpacerRange.minimumValue = 0 + viewSpacerRange.value = 10.0 + viewSpacerRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.spacer = slider.value + }).store(in: &subscribers) + dropShadowLightColorPickerSelectorView.text = shadowLightColor.rawValue dropShadowDarkColorPickerSelectorView.text = shadowDarkColor.rawValue viewLightColorPickerSelectorView.text = viewLightColor.rawValue @@ -166,13 +230,16 @@ class DropShadowViewController: BaseViewController { override func updateView() { let surface = surfacePickerSelectorView.selectedItem - let dropshadowColorConfiguration = SurfaceColorConfiguration(shadowLightColor.uiColor, shadowDarkColor.uiColor) - let viewColorConfiguration = SurfaceColorConfiguration(viewLightColor.uiColor, viewDarkColor.uiColor) + let dropshadowColor = SurfaceColorConfiguration(shadowLightColor.uiColor, shadowDarkColor.uiColor).getColor(surface) + let viewColor = SurfaceColorConfiguration(viewLightColor.uiColor, viewDarkColor.uiColor).getColor(surface) + + secondView.backgroundColor = .red + thirdView.backgroundColor = .purple component.layer.cornerRadius = CGFloat(viewRadiusRange.value) component.layer.masksToBounds = false - component.backgroundColor = viewColorConfiguration.getColor(surface) - component.layer.shadowColor = dropshadowColorConfiguration.getColor(surface).cgColor + component.backgroundColor = viewColor + component.layer.shadowColor = dropshadowColor.cgColor component.layer.shadowOpacity = Float(opacityRange.value) component.layer.shadowOffset = .init(width: CGFloat(offsetXRange.value), height: CGFloat(offsetYRange.value)) component.layer.shadowRadius = CGFloat(radiusRange.value) From 303adfac7e48a4631f98a38c001044c15c109392 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 14 Jun 2023 17:05:30 -0500 Subject: [PATCH 031/101] fixed bug Signed-off-by: Matt Bruce --- .../ViewControllers/DropShawdowViewController.swift | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/VDSSample/ViewControllers/DropShawdowViewController.swift b/VDSSample/ViewControllers/DropShawdowViewController.swift index d70a652..f4a71d1 100644 --- a/VDSSample/ViewControllers/DropShawdowViewController.swift +++ b/VDSSample/ViewControllers/DropShawdowViewController.swift @@ -98,7 +98,7 @@ class DropShadowViewController: BaseViewController { items: UIColor.VDSColor.allCases) }() - var spacer: Float = 0 { + var spacer: Float = 10 { didSet { spacings.forEach{ $0.constant = CGFloat(spacer) } } @@ -135,7 +135,6 @@ class DropShadowViewController: BaseViewController { spacings.append(secondView.leadingAnchor.constraint(equalTo: wrappedHelper.view.trailingAnchor)) spacings.forEach{ $0.isActive = true } - spacer = 10 wrappedHelper.viewPadding = 10 setupPicker() @@ -181,15 +180,15 @@ class DropShadowViewController: BaseViewController { self?.updateView() }).store(in: &subscribers) - offsetXRange.maximumValue = spacer - offsetXRange.minimumValue = -spacer + offsetXRange.maximumValue = 20 + offsetXRange.minimumValue = -20 offsetXRange.value = 2.0 offsetXRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in self?.updateView() }).store(in: &subscribers) - offsetYRange.maximumValue = spacer - offsetYRange.minimumValue = -spacer + offsetYRange.maximumValue = 20 + offsetYRange.minimumValue = -20 offsetYRange.value = 2.0 offsetYRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in self?.updateView() @@ -235,7 +234,7 @@ class DropShadowViewController: BaseViewController { secondView.backgroundColor = .red thirdView.backgroundColor = .purple - + view.bringSubviewToFront(wrappedHelper.view) component.layer.cornerRadius = CGFloat(viewRadiusRange.value) component.layer.masksToBounds = false component.backgroundColor = viewColor From 9628b39d3aca700d2fd838fc30ba804f8383e0c1 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 15 Jun 2023 10:26:51 -0500 Subject: [PATCH 032/101] moved slider into class Signed-off-by: Matt Bruce --- VDSSample.xcodeproj/project.pbxproj | 4 ++++ VDSSample/Classes/Slider.swift | 8 ++++++++ 2 files changed, 12 insertions(+) create mode 100644 VDSSample/Classes/Slider.swift diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index 29483a2..c036941 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -78,6 +78,7 @@ EAB5FEF32928153D00998C17 /* Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB5FEF22928153D00998C17 /* Helper.swift */; }; EAC9258029119FC400091998 /* TextLinkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC9257F29119FC400091998 /* TextLinkViewController.swift */; }; EAD062A32A3913920015965D /* DropShawdowViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAD062A22A3913920015965D /* DropShawdowViewController.swift */; }; + EAD062A52A3B5CDF0015965D /* Slider.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAD062A42A3B5CDF0015965D /* Slider.swift */; }; EAF7F07D2899698800B287F5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EAF7F07B2899698800B287F5 /* Assets.xcassets */; }; EAF7F09C2899B92400B287F5 /* CheckboxViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F09B2899B92400B287F5 /* CheckboxViewController.swift */; }; EAF7F0CA289DA24F00B287F5 /* ArtifactoryItems.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAF7F0C5289DA24F00B287F5 /* ArtifactoryItems.txt */; }; @@ -168,6 +169,7 @@ EAB5FEF22928153D00998C17 /* Helper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Helper.swift; sourceTree = ""; }; EAC9257F29119FC400091998 /* TextLinkViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextLinkViewController.swift; sourceTree = ""; }; EAD062A22A3913920015965D /* DropShawdowViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DropShawdowViewController.swift; sourceTree = ""; }; + EAD062A42A3B5CDF0015965D /* Slider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Slider.swift; sourceTree = ""; }; EAF7F07B2899698800B287F5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; EAF7F09B2899B92400B287F5 /* CheckboxViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckboxViewController.swift; sourceTree = ""; }; EAF7F0C5289DA24F00B287F5 /* ArtifactoryItems.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ArtifactoryItems.txt; sourceTree = ""; }; @@ -257,6 +259,7 @@ isa = PBXGroup; children = ( EA89205028B68307006B9984 /* TextField.swift */, + EAD062A42A3B5CDF0015965D /* Slider.swift */, EAB5FEF22928153D00998C17 /* Helper.swift */, ); path = Classes; @@ -505,6 +508,7 @@ EA5F86CE2A1E863F00BC83E4 /* TabsContainerViewController.swift in Sources */, EA985C01296CC21C00F2FF2E /* IconViewController.swift in Sources */, EAC9258029119FC400091998 /* TextLinkViewController.swift in Sources */, + EAD062A52A3B5CDF0015965D /* Slider.swift in Sources */, EAB1D2D428AC409F00DAE764 /* LabelViewController.swift in Sources */, EA89204B28B66CE2006B9984 /* ScrollViewKeyboardAvoider.swift in Sources */, EA84F76228BE4AE500D67ABC /* RadioSwatchGroupViewController.swift in Sources */, diff --git a/VDSSample/Classes/Slider.swift b/VDSSample/Classes/Slider.swift new file mode 100644 index 0000000..c1ad9d0 --- /dev/null +++ b/VDSSample/Classes/Slider.swift @@ -0,0 +1,8 @@ +// +// Slider.swift +// VDSSample +// +// Created by Matt Bruce on 6/15/23. +// + +import Foundation From d11176f90d7a568f1c6c3d4977a8ac9977e19011 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 15 Jun 2023 10:27:03 -0500 Subject: [PATCH 033/101] updated slider Signed-off-by: Matt Bruce --- VDSSample/Classes/Slider.swift | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/VDSSample/Classes/Slider.swift b/VDSSample/Classes/Slider.swift index c1ad9d0..76cba53 100644 --- a/VDSSample/Classes/Slider.swift +++ b/VDSSample/Classes/Slider.swift @@ -6,3 +6,49 @@ // import Foundation +import UIKit +import VDS + +class Slider: Control, UITextFieldDelegate { + var textField = NumericField().with { $0.translatesAutoresizingMaskIntoConstraints = false } + var range = UISlider().with { $0.translatesAutoresizingMaskIntoConstraints = false } + var maximumValue: Float = 0.0 { didSet { range.maximumValue = maximumValue }} + var minimumValue: Float = 0.0 { didSet { range.minimumValue = minimumValue }} + var value: Float = 0.0 { didSet { range.value = value; setNeedsUpdate() }} + override func setup() { + addSubview(textField) + addSubview(range) + textField.delegate = self + textField.pinTop() + textField.pinBottom() + textField.pinLeading() + textField.heightAnchor.constraint(equalToConstant: 44).isActive = true + textField.widthAnchor.constraint(equalToConstant: 75).isActive = true + textField.pinTrailing(range.leadingAnchor, 10) + range.pinTop() + range.pinBottom() + range.pinTrailing() + + range.thumbTintColor = .systemBlue + range.publisher(for: .valueChanged).sink { [weak self] slider in + self?.valueChanged(newValue: slider.value) + }.store(in: &subscribers) + } + + override func updateView() { + textField.text = String(format: "%.2f", value) + } + + private func valueChanged(newValue: Float) { + value = newValue + sendActions(for: .valueChanged) + } + + func textFieldShouldReturn(_ textField: UITextField) -> Bool { + textField.resignFirstResponder() + if let text = textField.text, let n = NumberFormatter().number(from: text) { + valueChanged(newValue: n.floatValue) + } + return true + } +} From 200203ade7013847ea8a780e74a83b5808abef2f Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 15 Jun 2023 10:27:18 -0500 Subject: [PATCH 034/101] slowly refactored out old code Signed-off-by: Matt Bruce --- VDSSample/Classes/Helper.swift | 95 +++++----------------------------- 1 file changed, 13 insertions(+), 82 deletions(-) diff --git a/VDSSample/Classes/Helper.swift b/VDSSample/Classes/Helper.swift index 80b2605..602b41e 100644 --- a/VDSSample/Classes/Helper.swift +++ b/VDSSample/Classes/Helper.swift @@ -10,65 +10,6 @@ import VDS import UIKit extension UIView { - - public class ViewConstraints { - public var topConstraint: NSLayoutConstraint? - public var leadingConstraint: NSLayoutConstraint? - public var trailingConstraint: NSLayoutConstraint? - public var bottomConstraint: NSLayoutConstraint? - public weak var view: UIView? - public var allConstraints: [NSLayoutConstraint] { - [topConstraint, leadingConstraint, trailingConstraint, bottomConstraint].compactMap{ $0 } - } - - public var isActive: Bool = true { - didSet { - allConstraints.forEach { $0.isActive = isActive } - } - } - - public init(view: UIView){ - self.view = view - } - - public func removeConstraint(edges: [UIRectEdge]) { - edges.forEach { edge in - switch edge { - case .all: - if let leadingConstraint { - view?.removeConstraint(leadingConstraint) - } - if let trailingConstraint { - view?.removeConstraint(trailingConstraint) - } - if let topConstraint { - view?.removeConstraint(topConstraint) - } - if let bottomConstraint { - view?.removeConstraint(bottomConstraint) - } - case .left: - if let leadingConstraint { - view?.removeConstraint(leadingConstraint) - } - case .right: - if let trailingConstraint { - view?.removeConstraint(trailingConstraint) - } - case .top: - if let topConstraint { - view?.removeConstraint(topConstraint) - } - case .bottom: - if let bottomConstraint { - view?.removeConstraint(bottomConstraint) - } - default: - break - } - } - } - } public static func makeWrapper(for view: UIView, edgeSpacing: CGFloat = 0.0, isTrailing: Bool = true) -> UIView { return makeWrappedView(for: view, edgeSpacing: edgeSpacing, isTrailing: isTrailing).view @@ -76,20 +17,18 @@ extension UIView { public class WrappedViewHelper { public var view: UIView - public var constraints: ViewConstraints var viewPadding: CGFloat = 0 { didSet { - constraints.topConstraint?.constant = viewPadding - constraints.leadingConstraint?.constant = viewPadding - constraints.trailingConstraint?.constant = -viewPadding - constraints.bottomConstraint?.constant = -viewPadding + view._topConstraint?.constant = viewPadding + view._leadingConstraint?.constant = viewPadding + view._trailingConstraint?.constant = -viewPadding + view._bottomConstraint?.constant = -viewPadding } } - public init(view: UIView, constraints: ViewConstraints) { + public init(view: UIView) { self.view = view - self.constraints = constraints } } @@ -98,26 +37,18 @@ extension UIView { $0.translatesAutoresizingMaskIntoConstraints = false } wrapper.addSubview(view) - let constraints = view.addConstraints(to: wrapper, edgeSpacing: edgeSpacing, isTrailing: isTrailing) - return WrappedViewHelper(view: wrapper, constraints: constraints) - } - - public func addConstraints(to view: UIView, edgeSpacing: CGFloat = 0.0, isTrailing: Bool = true) -> ViewConstraints { - let constraints = ViewConstraints(view: self) - constraints.topConstraint = topAnchor.constraint(equalTo: view.topAnchor) - constraints.bottomConstraint = bottomAnchor.constraint(equalTo: view.bottomAnchor) + + view.pinTop(wrapper.topAnchor, edgeSpacing) + view.pinBottom(wrapper.bottomAnchor, edgeSpacing) + view.pinLeading(wrapper.leadingAnchor, edgeSpacing) if isTrailing { - constraints.leadingConstraint = leadingAnchor.constraint(equalTo: view.leadingAnchor) - constraints.trailingConstraint = trailingAnchor.constraint(lessThanOrEqualTo: view.trailingAnchor) - + view.pinTrailingLessThanOrEqualTo(wrapper.trailingAnchor, edgeSpacing) } else { - constraints.leadingConstraint = leadingAnchor.constraint(equalTo: view.leadingAnchor) - constraints.trailingConstraint = trailingAnchor.constraint(equalTo: view.trailingAnchor) + view.pinTrailing(wrapper.trailingAnchor, edgeSpacing) } - constraints.isActive = true - return constraints - } + return WrappedViewHelper(view: wrapper) + } } extension ButtonBase { From 815e074ae5b099eb5d1b0ec7d1427a9ccb578146 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 15 Jun 2023 10:27:27 -0500 Subject: [PATCH 035/101] updated dropshadow Signed-off-by: Matt Bruce --- .../DropShawdowViewController.swift | 64 ++----------------- 1 file changed, 7 insertions(+), 57 deletions(-) diff --git a/VDSSample/ViewControllers/DropShawdowViewController.swift b/VDSSample/ViewControllers/DropShawdowViewController.swift index f4a71d1..13daff4 100644 --- a/VDSSample/ViewControllers/DropShawdowViewController.swift +++ b/VDSSample/ViewControllers/DropShawdowViewController.swift @@ -11,50 +11,6 @@ import VDS import VDSColorTokens import Combine -class Slider: Control, UITextFieldDelegate { - var textField = NumericField().with { $0.translatesAutoresizingMaskIntoConstraints = false } - var range = UISlider().with { $0.translatesAutoresizingMaskIntoConstraints = false } - var maximumValue: Float = 0.0 { didSet { range.maximumValue = maximumValue }} - var minimumValue: Float = 0.0 { didSet { range.minimumValue = minimumValue }} - var value: Float = 0.0 { didSet { range.value = value; setNeedsUpdate() }} - override func setup() { - addSubview(textField) - addSubview(range) - textField.delegate = self - textField.pinTop() - textField.pinBottom() - textField.pinLeading() - textField.heightAnchor.constraint(equalToConstant: 44).isActive = true - textField.widthAnchor.constraint(equalToConstant: 75).isActive = true - textField.pinTrailing(range.leadingAnchor, 10) - range.pinTop() - range.pinBottom() - range.pinTrailing() - - range.thumbTintColor = .systemBlue - range.publisher(for: .valueChanged).sink { [weak self] slider in - self?.valueChanged(newValue: slider.value) - }.store(in: &subscribers) - } - - override func updateView() { - textField.text = String(format: "%.2f", value) - } - - private func valueChanged(newValue: Float) { - value = newValue - sendActions(for: .valueChanged) - } - - func textFieldShouldReturn(_ textField: UITextField) -> Bool { - textField.resignFirstResponder() - if let text = textField.text, let n = NumberFormatter().number(from: text) { - valueChanged(newValue: n.floatValue) - } - return true - } -} - class DropShadowViewController: BaseViewController { var shadowLightColor: UIColor.VDSColor = .backgroundPrimaryDark { didSet { updateView() }} var shadowDarkColor: UIColor.VDSColor = .backgroundPrimaryLight { didSet { updateView() }} @@ -110,26 +66,21 @@ class DropShadowViewController: BaseViewController { super.viewDidLoad() wrappedHelper = UIView.makeWrappedView(for: component, isTrailing: false) - contentTopView.addSubview(wrappedHelper.view) contentTopView.addSubview(secondView) contentTopView.addSubview(thirdView) + contentTopView.addSubview(wrappedHelper.view) - component.widthAnchor.constraint(equalToConstant: viewSize).isActive = true - component.heightAnchor.constraint(equalToConstant: viewSize).isActive = true - - secondView.widthAnchor.constraint(equalToConstant: viewSize).isActive = true - secondView.heightAnchor.constraint(equalToConstant: viewSize).isActive = true + component.width(viewSize).height(viewSize) + secondView.width(viewSize).height(viewSize) + thirdView.width(viewSize).height(viewSize) - thirdView.widthAnchor.constraint(equalToConstant: viewSize).isActive = true - thirdView.heightAnchor.constraint(equalToConstant: viewSize).isActive = true - wrappedHelper.view.pinTop().pinLeading() secondView.pinTop() thirdView.pinLeading().pinBottom() - secondView.trailingAnchor.constraint(lessThanOrEqualTo: contentTopView.trailingAnchor).isActive = true - secondView.bottomAnchor.constraint(lessThanOrEqualTo: contentTopView.bottomAnchor).isActive = true - thirdView.trailingAnchor.constraint(lessThanOrEqualTo: contentTopView.trailingAnchor).isActive = true + secondView.pinTrailingLessThanOrEqualTo(contentTopView.trailingAnchor) + secondView.pinBottomLessThanOrEqualTo(contentTopView.bottomAnchor) + thirdView.pinTrailingLessThanOrEqualTo(contentTopView.trailingAnchor) spacings.append(thirdView.topAnchor.constraint(equalTo: wrappedHelper.view.bottomAnchor)) spacings.append(secondView.leadingAnchor.constraint(equalTo: wrappedHelper.view.trailingAnchor)) @@ -234,7 +185,6 @@ class DropShadowViewController: BaseViewController { secondView.backgroundColor = .red thirdView.backgroundColor = .purple - view.bringSubviewToFront(wrappedHelper.view) component.layer.cornerRadius = CGFloat(viewRadiusRange.value) component.layer.masksToBounds = false component.backgroundColor = viewColor From d3e88896748c2dae964710115c9022499aaf4f53 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 15 Jun 2023 12:42:48 -0500 Subject: [PATCH 036/101] added error Text Signed-off-by: Matt Bruce --- VDSSample/ViewControllers/CheckBoxGroupViewController.swift | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/VDSSample/ViewControllers/CheckBoxGroupViewController.swift b/VDSSample/ViewControllers/CheckBoxGroupViewController.swift index f1ee18e..bf9dcf0 100644 --- a/VDSSample/ViewControllers/CheckBoxGroupViewController.swift +++ b/VDSSample/ViewControllers/CheckBoxGroupViewController.swift @@ -65,13 +65,15 @@ class CheckboxGroupViewController: BaseViewController { checkbox1.value = "model 1 Value" checkbox1.labelText = "iPhone 11 Bundle 1" checkbox1.childText = "Apple iPhone 11 - 64 GB\nOtterbox Case Red\nScreen Protector" - + checkbox1.errorText = "Please Choose 1" + var checkbox2 = CheckboxGroup.CheckboxModel() checkbox2.inputId = "model2" checkbox2.value = "model 2 Value" checkbox2.labelText = "iPhone 11 Bundle 2" checkbox2.childText = "Apple iPhone 11 - 128 GB\nOtterbox Case Black\nScreen Protector" - + checkbox2.errorText = "Please Choose 2" + component.selectorModels = [checkbox1, checkbox2] component.onChange = { [weak self] group in From d345e8cb32d07f659ce7b31127b89ee919af5768 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 15 Jun 2023 12:42:59 -0500 Subject: [PATCH 037/101] refactored to use new methods Signed-off-by: Matt Bruce --- VDSSample/Classes/Helper.swift | 37 +++++------------- .../DropShawdowViewController.swift | 38 +++++++++++++------ 2 files changed, 36 insertions(+), 39 deletions(-) diff --git a/VDSSample/Classes/Helper.swift b/VDSSample/Classes/Helper.swift index 602b41e..0809cdb 100644 --- a/VDSSample/Classes/Helper.swift +++ b/VDSSample/Classes/Helper.swift @@ -10,44 +10,27 @@ import VDS import UIKit extension UIView { - + public static func makeWrapper(for view: UIView, edgeSpacing: CGFloat = 0.0, isTrailing: Bool = true) -> UIView { - return makeWrappedView(for: view, edgeSpacing: edgeSpacing, isTrailing: isTrailing).view + return makeWrapperWithConstraints(for: view, edgeSpacing: edgeSpacing, isTrailing: isTrailing).view } - public class WrappedViewHelper { - public var view: UIView - - var viewPadding: CGFloat = 0 { - didSet { - view._topConstraint?.constant = viewPadding - view._leadingConstraint?.constant = viewPadding - view._trailingConstraint?.constant = -viewPadding - view._bottomConstraint?.constant = -viewPadding - } - } - - public init(view: UIView) { - self.view = view - } - } - - public static func makeWrappedView(for view: UIView, edgeSpacing: CGFloat = 0.0, isTrailing: Bool = true) -> WrappedViewHelper { + public static func makeWrapperWithConstraints(for view: UIView, edgeSpacing: CGFloat = 0.0, isTrailing: Bool = true) -> (view: UIView, container: NSLayoutConstraint.Container) { + let container = NSLayoutConstraint.Container() let wrapper = UIView().with { $0.translatesAutoresizingMaskIntoConstraints = false } wrapper.addSubview(view) - view.pinTop(wrapper.topAnchor, edgeSpacing) - view.pinBottom(wrapper.bottomAnchor, edgeSpacing) - view.pinLeading(wrapper.leadingAnchor, edgeSpacing) - + container.topConstraint = view.pinTop(anchor: wrapper.topAnchor, constant: edgeSpacing) + container.bottomConstraint = view.pinBottom(anchor: wrapper.bottomAnchor, constant: edgeSpacing) + container.leadingConstraint = view.pinLeading(anchor: wrapper.leadingAnchor, constant: edgeSpacing) if isTrailing { - view.pinTrailingLessThanOrEqualTo(wrapper.trailingAnchor, edgeSpacing) + container.trailingConstraint = view.pinTrailingLessThanOrEqualTo(anchor: wrapper.trailingAnchor, constant: edgeSpacing) } else { - view.pinTrailing(wrapper.trailingAnchor, edgeSpacing) + container.trailingConstraint = view.pinTrailing(anchor: wrapper.trailingAnchor, constant: edgeSpacing) } - return WrappedViewHelper(view: wrapper) + return (wrapper, container) } } diff --git a/VDSSample/ViewControllers/DropShawdowViewController.swift b/VDSSample/ViewControllers/DropShawdowViewController.swift index 13daff4..16c2115 100644 --- a/VDSSample/ViewControllers/DropShawdowViewController.swift +++ b/VDSSample/ViewControllers/DropShawdowViewController.swift @@ -26,7 +26,9 @@ class DropShadowViewController: BaseViewController { var viewSpacerRange = Slider() var viewSize: CGFloat = 100.0 - var wrappedHelper: UIView.WrappedViewHelper! + var componentWrapper: UIView! + var componentConstraints: NSLayoutConstraint.Container! + var secondView = View() var thirdView = View() @@ -54,9 +56,18 @@ class DropShadowViewController: BaseViewController { items: UIColor.VDSColor.allCases) }() - var spacer: Float = 10 { + var spacer: CGFloat = 10 { didSet { - spacings.forEach{ $0.constant = CGFloat(spacer) } + spacings.forEach{ $0.constant = spacer } + } + } + + var viewPadding: CGFloat = 0 { + didSet { + componentConstraints.topConstraint?.constant = viewPadding + componentConstraints.leadingConstraint?.constant = viewPadding + componentConstraints.trailingConstraint?.constant = -viewPadding + componentConstraints.bottomConstraint?.constant = -viewPadding } } @@ -65,16 +76,19 @@ class DropShadowViewController: BaseViewController { override func viewDidLoad() { super.viewDidLoad() - wrappedHelper = UIView.makeWrappedView(for: component, isTrailing: false) + let wrapper = UIView.makeWrapperWithConstraints(for: component, isTrailing: false) + componentWrapper = wrapper.view + componentConstraints = wrapper.container + contentTopView.addSubview(secondView) contentTopView.addSubview(thirdView) - contentTopView.addSubview(wrappedHelper.view) + contentTopView.addSubview(componentWrapper) component.width(viewSize).height(viewSize) secondView.width(viewSize).height(viewSize) thirdView.width(viewSize).height(viewSize) - wrappedHelper.view.pinTop().pinLeading() + componentWrapper.pinTop().pinLeading() secondView.pinTop() thirdView.pinLeading().pinBottom() @@ -82,11 +96,11 @@ class DropShadowViewController: BaseViewController { secondView.pinBottomLessThanOrEqualTo(contentTopView.bottomAnchor) thirdView.pinTrailingLessThanOrEqualTo(contentTopView.trailingAnchor) - spacings.append(thirdView.topAnchor.constraint(equalTo: wrappedHelper.view.bottomAnchor)) - spacings.append(secondView.leadingAnchor.constraint(equalTo: wrappedHelper.view.trailingAnchor)) + spacings.append(thirdView.topAnchor.constraint(equalTo: componentWrapper.bottomAnchor)) + spacings.append(secondView.leadingAnchor.constraint(equalTo: componentWrapper.trailingAnchor)) spacings.forEach{ $0.isActive = true } - wrappedHelper.viewPadding = 10 + viewPadding = 10 setupPicker() setupModel() @@ -96,7 +110,7 @@ class DropShadowViewController: BaseViewController { override func showDebug(show: Bool) { super.showDebug(show: show) component.debugBorder(show: false) - wrappedHelper.view.debugBorder(show: show, color: .green) + componentWrapper.debugBorder(show: show, color: .green) secondView.debugBorder(show: show, color: .green) thirdView.debugBorder(show: show, color: .green) } @@ -149,7 +163,7 @@ class DropShadowViewController: BaseViewController { viewPaddingRange.minimumValue = 0.0 viewPaddingRange.value = 2.0 viewPaddingRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in - self?.wrappedHelper.viewPadding = CGFloat(slider.value) + self?.viewPadding = CGFloat(slider.value) self?.updateView() }).store(in: &subscribers) @@ -164,7 +178,7 @@ class DropShadowViewController: BaseViewController { viewSpacerRange.minimumValue = 0 viewSpacerRange.value = 10.0 viewSpacerRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in - self?.spacer = slider.value + self?.spacer = CGFloat(slider.value) }).store(in: &subscribers) dropShadowLightColorPickerSelectorView.text = shadowLightColor.rawValue From 24f10e31bebfd782ce1201c7e8ac8f54a8e6dbf5 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 15 Jun 2023 12:48:29 -0500 Subject: [PATCH 038/101] updated for vsd --- VDSSample/ViewControllers/DropShawdowViewController.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/VDSSample/ViewControllers/DropShawdowViewController.swift b/VDSSample/ViewControllers/DropShawdowViewController.swift index 16c2115..7cb5276 100644 --- a/VDSSample/ViewControllers/DropShawdowViewController.swift +++ b/VDSSample/ViewControllers/DropShawdowViewController.swift @@ -56,7 +56,7 @@ class DropShadowViewController: BaseViewController { items: UIColor.VDSColor.allCases) }() - var spacer: CGFloat = 10 { + var spacer: CGFloat = 0 { didSet { spacings.forEach{ $0.constant = spacer } } @@ -96,11 +96,11 @@ class DropShadowViewController: BaseViewController { secondView.pinBottomLessThanOrEqualTo(contentTopView.bottomAnchor) thirdView.pinTrailingLessThanOrEqualTo(contentTopView.trailingAnchor) - spacings.append(thirdView.topAnchor.constraint(equalTo: componentWrapper.bottomAnchor)) - spacings.append(secondView.leadingAnchor.constraint(equalTo: componentWrapper.trailingAnchor)) - spacings.forEach{ $0.isActive = true } + spacings.append(thirdView.pinTop(anchor: componentWrapper.bottomAnchor)!) + spacings.append(secondView.pinLeading(anchor: componentWrapper.trailingAnchor)!) viewPadding = 10 + spacer = 10 setupPicker() setupModel() From ab5d88b4d80d07a430c5e17622b29a0db85f87d3 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 15 Jun 2023 18:59:04 -0500 Subject: [PATCH 039/101] added badge indicator Signed-off-by: Matt Bruce --- VDSSample.xcodeproj/project.pbxproj | 4 + .../BadgeIndicatorViewController.swift | 143 ++++++++++++++++++ .../ViewControllers/MenuViewController.swift | 1 + 3 files changed, 148 insertions(+) create mode 100644 VDSSample/ViewControllers/BadgeIndicatorViewController.swift diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index c036941..2f219dd 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -79,6 +79,7 @@ EAC9258029119FC400091998 /* TextLinkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC9257F29119FC400091998 /* TextLinkViewController.swift */; }; EAD062A32A3913920015965D /* DropShawdowViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAD062A22A3913920015965D /* DropShawdowViewController.swift */; }; EAD062A52A3B5CDF0015965D /* Slider.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAD062A42A3B5CDF0015965D /* Slider.swift */; }; + EAD062AD2A3B86950015965D /* BadgeIndicatorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAD062AC2A3B86950015965D /* BadgeIndicatorViewController.swift */; }; EAF7F07D2899698800B287F5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EAF7F07B2899698800B287F5 /* Assets.xcassets */; }; EAF7F09C2899B92400B287F5 /* CheckboxViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F09B2899B92400B287F5 /* CheckboxViewController.swift */; }; EAF7F0CA289DA24F00B287F5 /* ArtifactoryItems.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAF7F0C5289DA24F00B287F5 /* ArtifactoryItems.txt */; }; @@ -170,6 +171,7 @@ EAC9257F29119FC400091998 /* TextLinkViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextLinkViewController.swift; sourceTree = ""; }; EAD062A22A3913920015965D /* DropShawdowViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DropShawdowViewController.swift; sourceTree = ""; }; EAD062A42A3B5CDF0015965D /* Slider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Slider.swift; sourceTree = ""; }; + EAD062AC2A3B86950015965D /* BadgeIndicatorViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BadgeIndicatorViewController.swift; sourceTree = ""; }; EAF7F07B2899698800B287F5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; EAF7F09B2899B92400B287F5 /* CheckboxViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckboxViewController.swift; sourceTree = ""; }; EAF7F0C5289DA24F00B287F5 /* ArtifactoryItems.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ArtifactoryItems.txt; sourceTree = ""; }; @@ -300,6 +302,7 @@ EAD062A22A3913920015965D /* DropShawdowViewController.swift */, EAB1D2C828AAAA1D00DAE764 /* BaseViewController.swift */, EA4DB30328DCD25B00103EE3 /* BadgeViewController.swift */, + EAD062AC2A3B86950015965D /* BadgeIndicatorViewController.swift */, EA81410D2A0ED8DC004F60D2 /* ButtonIconViewController.swift */, EAB5FEEE2927E28400998C17 /* ButtonGroupViewController.swift */, 5FC35BE828D5235A004EBEAC /* ButtonViewController.swift */, @@ -489,6 +492,7 @@ EA3C3BB428996775000CA526 /* PickerBase.swift in Sources */, EAB2376C29E9E74900AABE9A /* TrailingTooltipLabel.swift in Sources */, EAB1D2C928AAAA1D00DAE764 /* BaseViewController.swift in Sources */, + EAD062AD2A3B86950015965D /* BadgeIndicatorViewController.swift in Sources */, EA5E305C295111050082B959 /* TileletViewController.swift in Sources */, EAD062A32A3913920015965D /* DropShawdowViewController.swift in Sources */, EAB5FEF32928153D00998C17 /* Helper.swift in Sources */, diff --git a/VDSSample/ViewControllers/BadgeIndicatorViewController.swift b/VDSSample/ViewControllers/BadgeIndicatorViewController.swift new file mode 100644 index 0000000..dc64c9c --- /dev/null +++ b/VDSSample/ViewControllers/BadgeIndicatorViewController.swift @@ -0,0 +1,143 @@ +// +// BadgeIndicatorViewController.swift +// VDSSample +// +// Created by Matt Bruce on 6/15/23. +// + +import Foundation +import UIKit +import VDS +import VDSColorTokens +import Combine + +class BadgeIndicatorViewController: BaseViewController { + + lazy var fillColorPickerSelectorView = { + PickerSelectorView(title: "red", + picker: self.picker, + items: BadgeIndicator.FillColor.allCases) + }() + + lazy var kindPickerSelectorView = { + PickerSelectorView(title: "red", + picker: self.picker, + items: BadgeIndicator.Kind.allCases) + }() + + lazy var textSizePickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: BadgeIndicator.TextSize.allCases) + }() + + lazy var maxDigitsPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: BadgeIndicator.MaxDigits.allCases) + }() + + lazy var borderColorLightPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: UIColor.VDSColor.allCases) + }() + + lazy var borderColorDarkPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: UIColor.VDSColor.allCases) + }() + + + var textField = TextField() + var hideDotSwitch = UISwitch() + override func allTextFields() -> [TextField]? { [textField] } + + override func viewDidLoad() { + super.viewDidLoad() + addContentTopView(view: .makeWrapper(for: component)) + setupPicker() + setupModel() + } + + var numberedForm = FormSection() + var hideDotRow: UIView? + override func setupForm(){ + super.setupForm() + addFormRow(label: "Kind", view: kindPickerSelectorView) + hideDotRow = addFormRow(label: "Hide Dot", view: hideDotSwitch) + + addFormRow(label: "Fill Color", view: fillColorPickerSelectorView) + addFormRow(label: "Surface", view: surfacePickerSelectorView) + addFormRow(label: "Border Light", view: borderColorLightPickerSelectorView) + addFormRow(label: "Border Dark", view: borderColorDarkPickerSelectorView) + addFormRow(label: "Size", view: textSizePickerSelectorView) + + numberedForm.addFormRow(label: "Text", view: textField) + numberedForm.addFormRow(label: "Max Digits", view: maxDigitsPickerSelectorView) + append(section: numberedForm) + numberedForm.isHidden = true + + hideDotSwitch.publisher(for: .valueChanged).sink { [weak self] control in + self?.component.hideDot = control.isOn + }.store(in: &subscribers) + + textField + .textPublisher + .sink { [weak self] text in + if let n = NumberFormatter().number(from: text) { + self?.component.number = n.intValue + } + }.store(in: &subscribers) + } + + func setupModel() { + component.fillColor = .red + component.number = 1 + + //setup UI + surfacePickerSelectorView.text = component.surface.rawValue + kindPickerSelectorView.text = component.kind.rawValue + fillColorPickerSelectorView.text = component.fillColor.rawValue + textSizePickerSelectorView.text = component.textSize.rawValue + maxDigitsPickerSelectorView.text = component.maxDigits.rawValue + borderColorDarkPickerSelectorView.text = component.borderColorDark?.toVDSColor()?.rawValue ?? "" + borderColorLightPickerSelectorView.text = component.borderColorLight?.toVDSColor()?.rawValue ?? "" + textField.text = "\(component.number!)" + } + + func setupPicker(){ + + surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.surface = item + self?.contentTopView.backgroundColor = item.color + } + + kindPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.kind = item + self?.numberedForm.isHidden = item != .numbered + self?.hideDotRow?.isHidden = item == .numbered + } + + fillColorPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.fillColor = item + } + + textSizePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.textSize = item + } + + maxDigitsPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.maxDigits = item + } + + borderColorDarkPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.borderColorDark = item.uiColor + } + + borderColorLightPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.borderColorLight = item.uiColor + } + } +} diff --git a/VDSSample/ViewControllers/MenuViewController.swift b/VDSSample/ViewControllers/MenuViewController.swift index 4b3554d..47f2e43 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -79,6 +79,7 @@ class MenuViewController: UITableViewController, TooltipLaunchable { let items: [MenuComponent] = [ MenuComponent(title: "DropShadow Tester", completed: true, viewController: DropShadowViewController.self), MenuComponent(title: "Badge", completed: true, viewController: BadgeViewController.self), + MenuComponent(title: "Badge Indicator", completed: false, viewController: BadgeIndicatorViewController.self), MenuComponent(title: "Button", completed: true, viewController: ButtonViewController.self), MenuComponent(title: "ButtonGroup", completed: true, viewController: ButtonGroupViewController.self), MenuComponent(title: "ButtonIcon", completed: false, viewController: ButtonIconViewController.self), From e9af0b721c0ac17f7dfcebfbe1fecee35a68c7a9 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 15 Jun 2023 20:30:25 -0500 Subject: [PATCH 040/101] updated to allow FormSection Title Signed-off-by: Matt Bruce --- .../ViewControllers/BaseViewController.swift | 14 ++++++ .../DropShawdowViewController.swift | 45 ++++++++++++++----- 2 files changed, 48 insertions(+), 11 deletions(-) diff --git a/VDSSample/ViewControllers/BaseViewController.swift b/VDSSample/ViewControllers/BaseViewController.swift index 9d24259..cdb6b3b 100644 --- a/VDSSample/ViewControllers/BaseViewController.swift +++ b/VDSSample/ViewControllers/BaseViewController.swift @@ -11,6 +11,19 @@ import Combine import VDS public class FormSection: UIStackView { + public var title: String? { + didSet { + if let title { + titleLabel.text = title + titleLabel.isHidden = false + } else { + titleLabel.isHidden = true + } + } + } + + private var titleLabel = Label().with { $0.isHidden = true; $0.textStyle = .boldBodyLarge } + public override init(frame: CGRect) { super.init(frame: frame) translatesAutoresizingMaskIntoConstraints = false @@ -18,6 +31,7 @@ public class FormSection: UIStackView { distribution = .fill axis = .vertical spacing = 10 + addArrangedSubview(titleLabel) } public convenience init() { diff --git a/VDSSample/ViewControllers/DropShawdowViewController.swift b/VDSSample/ViewControllers/DropShawdowViewController.swift index 7cb5276..35133e9 100644 --- a/VDSSample/ViewControllers/DropShawdowViewController.swift +++ b/VDSSample/ViewControllers/DropShawdowViewController.swift @@ -76,6 +76,19 @@ class DropShadowViewController: BaseViewController { override func viewDidLoad() { super.viewDidLoad() + let label1 = Label().with { $0.text = "View 1"; $0.textAlignment = .center} + let label2 = Label().with { $0.text = "View 2"; $0.textAlignment = .center} + let label3 = Label().with { $0.text = "View 3"; $0.textAlignment = .center} + + component.addSubview(label1) + label1.pinToSuperView() + + secondView.addSubview(label2) + label2.pinToSuperView() + + thirdView.addSubview(label3) + label3.pinToSuperView() + let wrapper = UIView.makeWrapperWithConstraints(for: component, isTrailing: false) componentWrapper = wrapper.view componentConstraints = wrapper.container @@ -117,19 +130,29 @@ class DropShadowViewController: BaseViewController { override func setupForm(){ super.setupForm() + formStackView.title = "Screen Settings" addFormRow(label: "Surface", view: surfacePickerSelectorView) - addFormRow(label: "Space Between Views", view: viewSpacerRange) - addFormRow(label: "View Padding", view: viewPaddingRange) - addFormRow(label: "View Corner Radius", view: viewRadiusRange) - addFormRow(label: "View Light", view: viewLightColorPickerSelectorView) - addFormRow(label: "View Dark", view: viewDarkColorPickerSelectorView) - addFormRow(label: "Shawdow Light", view: dropShadowLightColorPickerSelectorView) - addFormRow(label: "Shawdow Dark", view: dropShadowDarkColorPickerSelectorView) + addFormRow(label: "Space Between 1,2,3", view: viewSpacerRange) - addFormRow(label: "Opacity", view: opacityRange) - addFormRow(label: "Radius (Blur)", view: radiusRange) - addFormRow(label: "Width (OffSet X)", view: offsetXRange) - addFormRow(label: "Height (Offset Y)", view: offsetYRange) + let form1 = FormSection() + form1.title = "View 1 Settings" + form1.addFormRow(label: "All ", view: viewPaddingRange) + form1.addFormRow(label: "Padding", view: viewPaddingRange) + form1.addFormRow(label: "Corner Radius", view: viewRadiusRange) + form1.addFormRow(label: "Light", view: viewLightColorPickerSelectorView) + form1.addFormRow(label: "Dark", view: viewDarkColorPickerSelectorView) + + let form2 = FormSection() + form2.title = "View 1 Shadow Settings" + form2.addFormRow(label: "Shawdow Light", view: dropShadowLightColorPickerSelectorView) + form2.addFormRow(label: "Shawdow Dark", view: dropShadowDarkColorPickerSelectorView) + form2.addFormRow(label: "Opacity", view: opacityRange) + form2.addFormRow(label: "Radius (Blur)", view: radiusRange) + form2.addFormRow(label: "Width (OffSet X)", view: offsetXRange) + form2.addFormRow(label: "Height (Offset Y)", view: offsetYRange) + + append(section: form1) + append(section: form2) opacityRange.maximumValue = 1.0 opacityRange.minimumValue = 0.0 From 3adc066a72740632e6287c0d950e2ad35311c3dd Mon Sep 17 00:00:00 2001 From: Kyle Hedden Date: Fri, 16 Jun 2023 13:54:31 -0400 Subject: [PATCH 041/101] Verizon Wireless team for release --- VDSSample.xcodeproj/project.pbxproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index 2f219dd..7390bf5 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -696,7 +696,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 22; - DEVELOPMENT_TEAM = 59V5935DHZ; + DEVELOPMENT_TEAM = FCMA4QKS77; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; From 252db8b4951ecd4fc9986dffac54a79757ce5abc Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 16 Jun 2023 14:19:53 -0500 Subject: [PATCH 042/101] reset param Signed-off-by: Matt Bruce --- VDSSample/ViewControllers/BadgeIndicatorViewController.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/VDSSample/ViewControllers/BadgeIndicatorViewController.swift b/VDSSample/ViewControllers/BadgeIndicatorViewController.swift index dc64c9c..d8f6d47 100644 --- a/VDSSample/ViewControllers/BadgeIndicatorViewController.swift +++ b/VDSSample/ViewControllers/BadgeIndicatorViewController.swift @@ -94,7 +94,9 @@ class BadgeIndicatorViewController: BaseViewController { func setupModel() { component.fillColor = .red - component.number = 1 + component.number = 23 + component.kind = .numbered + component.textSize = .medium //setup UI surfacePickerSelectorView.text = component.surface.rawValue From ea2667ed87679b6ea0d95dd3d06eab713f9eeab3 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 16 Jun 2023 14:20:33 -0500 Subject: [PATCH 043/101] multiple Signed-off-by: Matt Bruce --- .../DropShawdowViewController.swift | 214 +++++++++++++++--- 1 file changed, 186 insertions(+), 28 deletions(-) diff --git a/VDSSample/ViewControllers/DropShawdowViewController.swift b/VDSSample/ViewControllers/DropShawdowViewController.swift index 35133e9..3c1a384 100644 --- a/VDSSample/ViewControllers/DropShawdowViewController.swift +++ b/VDSSample/ViewControllers/DropShawdowViewController.swift @@ -11,20 +11,25 @@ import VDS import VDSColorTokens import Combine -class DropShadowViewController: BaseViewController { - var shadowLightColor: UIColor.VDSColor = .backgroundPrimaryDark { didSet { updateView() }} - var shadowDarkColor: UIColor.VDSColor = .backgroundPrimaryLight { didSet { updateView() }} - var viewLightColor: UIColor.VDSColor = .paletteGray65 { didSet { updateView() }} - var viewDarkColor: UIColor.VDSColor = .backgroundPrimaryLight { didSet { updateView() }} - +class DropShadowViewController: BaseViewController { var viewPaddingRange = Slider() var viewRadiusRange = Slider() + var viewSpacerRange = Slider() + + //shadow 1 + var showShadow = Toggle() var opacityRange = Slider() var radiusRange = Slider() var offsetXRange = Slider() var offsetYRange = Slider() - var viewSpacerRange = Slider() - + + //shadow 2 + var showShadow2 = Toggle() + var opacityRange2 = Slider() + var radiusRange2 = Slider() + var offsetXRange2 = Slider() + var offsetYRange2 = Slider() + var viewSize: CGFloat = 100.0 var componentWrapper: UIView! var componentConstraints: NSLayoutConstraint.Container! @@ -44,6 +49,18 @@ class DropShadowViewController: BaseViewController { items: UIColor.VDSColor.allCases) }() + lazy var dropShadow2LightColorPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: UIColor.VDSColor.allCases) + }() + + lazy var dropShadow2DarkColorPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: UIColor.VDSColor.allCases) + }() + lazy var viewLightColorPickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, @@ -115,6 +132,8 @@ class DropShadowViewController: BaseViewController { viewPadding = 10 spacer = 10 + component.setNeedsUpdate() + setupPicker() setupModel() updateView() @@ -144,6 +163,7 @@ class DropShadowViewController: BaseViewController { let form2 = FormSection() form2.title = "View 1 Shadow Settings" + form2.addFormRow(label: "Show", view: .makeWrapper(for: showShadow)) form2.addFormRow(label: "Shawdow Light", view: dropShadowLightColorPickerSelectorView) form2.addFormRow(label: "Shawdow Dark", view: dropShadowDarkColorPickerSelectorView) form2.addFormRow(label: "Opacity", view: opacityRange) @@ -151,13 +171,32 @@ class DropShadowViewController: BaseViewController { form2.addFormRow(label: "Width (OffSet X)", view: offsetXRange) form2.addFormRow(label: "Height (Offset Y)", view: offsetYRange) + let form3 = FormSection() + form3.title = "View 1 Shadow 2 Settings" + form3.addFormRow(label: "Show", view: .makeWrapper(for: showShadow2)) + form3.addFormRow(label: "Shawdow Light", view: dropShadow2LightColorPickerSelectorView) + form3.addFormRow(label: "Shawdow Dark", view: dropShadow2DarkColorPickerSelectorView) + form3.addFormRow(label: "Opacity", view: opacityRange2) + form3.addFormRow(label: "Radius (Blur)", view: radiusRange2) + form3.addFormRow(label: "Width (OffSet X)", view: offsetXRange2) + form3.addFormRow(label: "Height (Offset Y)", view: offsetYRange2) + + append(section: form1) append(section: form2) + append(section: form3) + + //shadow1 + showShadow.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.component.showShadow = slider.isOn + self?.updateView() + }).store(in: &subscribers) opacityRange.maximumValue = 1.0 opacityRange.minimumValue = 0.0 opacityRange.value = 1.0 opacityRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.component.opacityRange = CGFloat(slider.value) self?.updateView() }).store(in: &subscribers) @@ -165,6 +204,7 @@ class DropShadowViewController: BaseViewController { radiusRange.minimumValue = 0.0 radiusRange.value = 2.0 radiusRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.component.radiusRange = CGFloat(slider.value) self?.updateView() }).store(in: &subscribers) @@ -172,6 +212,7 @@ class DropShadowViewController: BaseViewController { offsetXRange.minimumValue = -20 offsetXRange.value = 2.0 offsetXRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.component.offsetXRange = CGFloat(slider.value) self?.updateView() }).store(in: &subscribers) @@ -179,9 +220,49 @@ class DropShadowViewController: BaseViewController { offsetYRange.minimumValue = -20 offsetYRange.value = 2.0 offsetYRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.component.offsetYRange = CGFloat(slider.value) self?.updateView() }).store(in: &subscribers) - + + //shadow2 + showShadow2.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.component.showShadow2 = slider.isOn + self?.updateView() + }).store(in: &subscribers) + + opacityRange2.maximumValue = 1.0 + opacityRange2.minimumValue = 0.0 + opacityRange2.value = 1.0 + opacityRange2.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.component.opacityRange2 = CGFloat(slider.value) + self?.updateView() + }).store(in: &subscribers) + + radiusRange2.maximumValue = 20.0 + radiusRange2.minimumValue = 0.0 + radiusRange2.value = 2.0 + radiusRange2.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.component.radiusRange2 = CGFloat(slider.value) + self?.updateView() + }).store(in: &subscribers) + + offsetXRange2.maximumValue = 20 + offsetXRange2.minimumValue = -20 + offsetXRange2.value = 2.0 + offsetXRange2.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.component.offsetXRange2 = CGFloat(slider.value) + self?.updateView() + }).store(in: &subscribers) + + offsetYRange2.maximumValue = 20 + offsetYRange2.minimumValue = -20 + offsetYRange2.value = 2.0 + offsetYRange2.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.component.offsetYRange2 = CGFloat(slider.value) + self?.updateView() + }).store(in: &subscribers) + + //view viewPaddingRange.maximumValue = 50.0 viewPaddingRange.minimumValue = 0.0 viewPaddingRange.value = 2.0 @@ -194,6 +275,7 @@ class DropShadowViewController: BaseViewController { viewRadiusRange.minimumValue = 0 viewRadiusRange.value = 8.0 viewRadiusRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.component.viewRadiusRange = CGFloat(slider.value) self?.updateView() }).store(in: &subscribers) @@ -204,10 +286,15 @@ class DropShadowViewController: BaseViewController { self?.spacer = CGFloat(slider.value) }).store(in: &subscribers) - dropShadowLightColorPickerSelectorView.text = shadowLightColor.rawValue - dropShadowDarkColorPickerSelectorView.text = shadowDarkColor.rawValue - viewLightColorPickerSelectorView.text = viewLightColor.rawValue - viewDarkColorPickerSelectorView.text = viewDarkColor.rawValue + dropShadowLightColorPickerSelectorView.text = component.shadowLightColor.rawValue + dropShadowDarkColorPickerSelectorView.text = component.shadowDarkColor.rawValue + dropShadow2LightColorPickerSelectorView.text = component.shadowLightColor2.rawValue + dropShadow2DarkColorPickerSelectorView.text = component.shadowDarkColor2.rawValue + viewLightColorPickerSelectorView.text = component.viewLightColor.rawValue + viewDarkColorPickerSelectorView.text = component.viewDarkColor.rawValue + + showShadow.isOn = component.showShadow + showShadow2.isOn = component.showShadow2 } func setupModel() { @@ -216,19 +303,8 @@ class DropShadowViewController: BaseViewController { } override func updateView() { - let surface = surfacePickerSelectorView.selectedItem - let dropshadowColor = SurfaceColorConfiguration(shadowLightColor.uiColor, shadowDarkColor.uiColor).getColor(surface) - let viewColor = SurfaceColorConfiguration(viewLightColor.uiColor, viewDarkColor.uiColor).getColor(surface) - secondView.backgroundColor = .red thirdView.backgroundColor = .purple - component.layer.cornerRadius = CGFloat(viewRadiusRange.value) - component.layer.masksToBounds = false - component.backgroundColor = viewColor - component.layer.shadowColor = dropshadowColor.cgColor - component.layer.shadowOpacity = Float(opacityRange.value) - component.layer.shadowOffset = .init(width: CGFloat(offsetXRange.value), height: CGFloat(offsetYRange.value)) - component.layer.shadowRadius = CGFloat(radiusRange.value) } func setupPicker(){ @@ -239,19 +315,101 @@ class DropShadowViewController: BaseViewController { } dropShadowDarkColorPickerSelectorView.onPickerDidSelect = { [weak self] item in - self?.shadowDarkColor = item + self?.component.shadowDarkColor = item } dropShadowLightColorPickerSelectorView.onPickerDidSelect = { [weak self] item in - self?.shadowLightColor = item + self?.component.shadowLightColor = item } + dropShadow2DarkColorPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.shadowDarkColor2 = item + } + + dropShadow2LightColorPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.shadowLightColor2 = item + } viewLightColorPickerSelectorView.onPickerDidSelect = { [weak self] item in - self?.viewLightColor = item + self?.component.viewLightColor = item } viewDarkColorPickerSelectorView.onPickerDidSelect = { [weak self] item in - self?.viewDarkColor = item + self?.component.viewDarkColor = item } } } + +public class ShadowView: View { + public var shadow1 = View() + public var shadow2 = View() + + public var viewLightColor: UIColor.VDSColor = .paletteGray65 { didSet { setNeedsUpdate() }} + public var viewDarkColor: UIColor.VDSColor = .backgroundPrimaryLight { didSet { setNeedsUpdate() }} + + public var viewRadiusRange: CGFloat = 8.0 { didSet { setNeedsUpdate() }} + + public var showShadow: Bool = true { didSet { setNeedsUpdate() }} + public var opacityRange: CGFloat = 1.0 { didSet { setNeedsUpdate() }} + public var offsetXRange: CGFloat = 2.0 { didSet { setNeedsUpdate() }} + public var offsetYRange: CGFloat = 2.0 { didSet { setNeedsUpdate() }} + public var radiusRange: CGFloat = 2.0 { didSet { setNeedsUpdate() }} + public var shadowLightColor: UIColor.VDSColor = .backgroundPrimaryDark { didSet { setNeedsUpdate() }} + public var shadowDarkColor: UIColor.VDSColor = .backgroundPrimaryLight { didSet { setNeedsUpdate() }} + + public var showShadow2: Bool = false { didSet { setNeedsUpdate() }} + public var opacityRange2: CGFloat = 1.0 { didSet { setNeedsUpdate() }} + public var offsetXRange2: CGFloat = 2.0 { didSet { setNeedsUpdate() }} + public var offsetYRange2: CGFloat = 2.0 { didSet { setNeedsUpdate() }} + public var radiusRange2: CGFloat = 2.0 { didSet { setNeedsUpdate() }} + public var shadowLightColor2: UIColor.VDSColor = .backgroundPrimaryDark { didSet { setNeedsUpdate() }} + public var shadowDarkColor2: UIColor.VDSColor = .backgroundPrimaryLight { didSet { setNeedsUpdate() }} + + public override func setup() { + super.setup() + addSubview(shadow1) + addSubview(shadow2) + shadow1.pinToSuperView() + shadow2.pinToSuperView() + width(constant: 100) + height(constant: 100) + } + + public override func updateView() { + super.updateView() + let viewColor = SurfaceColorConfiguration(viewLightColor.uiColor, viewDarkColor.uiColor).getColor(surface) + backgroundColor = viewColor + shadow1.backgroundColor = .brown + shadow2.backgroundColor = .yellow + + shadow1.isHidden = !showShadow + shadow2.isHidden = !showShadow2 + setNeedsLayout() + layoutIfNeeded() + } + + + public override func layoutSubviews() { + super.layoutSubviews() + + let dropshadowColor = SurfaceColorConfiguration(shadowLightColor.uiColor, shadowDarkColor.uiColor).getColor(surface) + let dropshadowColor2 = SurfaceColorConfiguration(shadowLightColor.uiColor, shadowDarkColor.uiColor).getColor(surface) + layer.cornerRadius = CGFloat(viewRadiusRange) + layer.masksToBounds = false + + shadow1.layer.cornerRadius = CGFloat(viewRadiusRange) + shadow1.layer.masksToBounds = false + shadow1.layer.cornerRadius = CGFloat(viewRadiusRange) + shadow1.layer.shadowColor = UIColor.purple.cgColor //dropshadowColor.cgColor + shadow1.layer.shadowOpacity = Float(opacityRange) + shadow1.layer.shadowOffset = .init(width: CGFloat(offsetXRange), height: CGFloat(offsetYRange)) + shadow1.layer.shadowRadius = CGFloat(radiusRange) + + shadow2.layer.cornerRadius = CGFloat(viewRadiusRange) + shadow2.layer.masksToBounds = false + shadow2.layer.cornerRadius = CGFloat(viewRadiusRange) + shadow2.layer.shadowColor = UIColor.blue.cgColor//dropshadowColor2.cgColor + shadow2.layer.shadowOpacity = Float(opacityRange2) + shadow2.layer.shadowOffset = .init(width: CGFloat(offsetXRange2), height: CGFloat(offsetYRange2)) + shadow2.layer.shadowRadius = CGFloat(radiusRange2) + } +} From ee8f4722395a786447c2e5747d748dc2a9a84157 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 16 Jun 2023 14:48:25 -0500 Subject: [PATCH 044/101] doing dual shadows now Signed-off-by: Matt Bruce --- .../DropShawdowViewController.swift | 53 +++++++++---------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/VDSSample/ViewControllers/DropShawdowViewController.swift b/VDSSample/ViewControllers/DropShawdowViewController.swift index 3c1a384..3838a22 100644 --- a/VDSSample/ViewControllers/DropShawdowViewController.swift +++ b/VDSSample/ViewControllers/DropShawdowViewController.swift @@ -340,14 +340,13 @@ class DropShadowViewController: BaseViewController { } public class ShadowView: View { - public var shadow1 = View() - public var shadow2 = View() - + public var viewLightColor: UIColor.VDSColor = .paletteGray65 { didSet { setNeedsUpdate() }} public var viewDarkColor: UIColor.VDSColor = .backgroundPrimaryLight { didSet { setNeedsUpdate() }} public var viewRadiusRange: CGFloat = 8.0 { didSet { setNeedsUpdate() }} + private var shadowLayer1: CALayer = CALayer() public var showShadow: Bool = true { didSet { setNeedsUpdate() }} public var opacityRange: CGFloat = 1.0 { didSet { setNeedsUpdate() }} public var offsetXRange: CGFloat = 2.0 { didSet { setNeedsUpdate() }} @@ -356,6 +355,7 @@ public class ShadowView: View { public var shadowLightColor: UIColor.VDSColor = .backgroundPrimaryDark { didSet { setNeedsUpdate() }} public var shadowDarkColor: UIColor.VDSColor = .backgroundPrimaryLight { didSet { setNeedsUpdate() }} + private var shadowLayer2: CALayer = CALayer() public var showShadow2: Bool = false { didSet { setNeedsUpdate() }} public var opacityRange2: CGFloat = 1.0 { didSet { setNeedsUpdate() }} public var offsetXRange2: CGFloat = 2.0 { didSet { setNeedsUpdate() }} @@ -366,23 +366,22 @@ public class ShadowView: View { public override func setup() { super.setup() - addSubview(shadow1) - addSubview(shadow2) - shadow1.pinToSuperView() - shadow2.pinToSuperView() width(constant: 100) height(constant: 100) + + // Add shadow layers as sublayers of the view's layer + layer.insertSublayer(shadowLayer1, at: 0) + layer.insertSublayer(shadowLayer2, at: 0) } public override func updateView() { super.updateView() let viewColor = SurfaceColorConfiguration(viewLightColor.uiColor, viewDarkColor.uiColor).getColor(surface) backgroundColor = viewColor - shadow1.backgroundColor = .brown - shadow2.backgroundColor = .yellow - - shadow1.isHidden = !showShadow - shadow2.isHidden = !showShadow2 + shadowLayer1.backgroundColor = viewColor.cgColor + shadowLayer2.backgroundColor = viewColor.cgColor + shadowLayer1.isHidden = !showShadow + shadowLayer2.isHidden = !showShadow2 setNeedsLayout() layoutIfNeeded() } @@ -392,24 +391,24 @@ public class ShadowView: View { super.layoutSubviews() let dropshadowColor = SurfaceColorConfiguration(shadowLightColor.uiColor, shadowDarkColor.uiColor).getColor(surface) - let dropshadowColor2 = SurfaceColorConfiguration(shadowLightColor.uiColor, shadowDarkColor.uiColor).getColor(surface) + let dropshadowColor2 = SurfaceColorConfiguration(shadowLightColor2.uiColor, shadowDarkColor2.uiColor).getColor(surface) layer.cornerRadius = CGFloat(viewRadiusRange) layer.masksToBounds = false - shadow1.layer.cornerRadius = CGFloat(viewRadiusRange) - shadow1.layer.masksToBounds = false - shadow1.layer.cornerRadius = CGFloat(viewRadiusRange) - shadow1.layer.shadowColor = UIColor.purple.cgColor //dropshadowColor.cgColor - shadow1.layer.shadowOpacity = Float(opacityRange) - shadow1.layer.shadowOffset = .init(width: CGFloat(offsetXRange), height: CGFloat(offsetYRange)) - shadow1.layer.shadowRadius = CGFloat(radiusRange) + // Update shadow layers frames to match the view's bounds + shadowLayer1.frame = bounds + shadowLayer2.frame = bounds + + shadowLayer1.cornerRadius = CGFloat(viewRadiusRange) + shadowLayer1.shadowColor = dropshadowColor.cgColor + shadowLayer1.shadowOpacity = Float(opacityRange) + shadowLayer1.shadowOffset = .init(width: CGFloat(offsetXRange), height: CGFloat(offsetYRange)) + shadowLayer1.shadowRadius = CGFloat(radiusRange) - shadow2.layer.cornerRadius = CGFloat(viewRadiusRange) - shadow2.layer.masksToBounds = false - shadow2.layer.cornerRadius = CGFloat(viewRadiusRange) - shadow2.layer.shadowColor = UIColor.blue.cgColor//dropshadowColor2.cgColor - shadow2.layer.shadowOpacity = Float(opacityRange2) - shadow2.layer.shadowOffset = .init(width: CGFloat(offsetXRange2), height: CGFloat(offsetYRange2)) - shadow2.layer.shadowRadius = CGFloat(radiusRange2) + shadowLayer2.cornerRadius = CGFloat(viewRadiusRange) + shadowLayer2.shadowColor = dropshadowColor2.cgColor + shadowLayer2.shadowOpacity = Float(opacityRange2) + shadowLayer2.shadowOffset = .init(width: CGFloat(offsetXRange2), height: CGFloat(offsetYRange2)) + shadowLayer2.shadowRadius = CGFloat(radiusRange2) } } From b95cebc002b9e9d2ab0ffcd5ff45ab94c5ea187a Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 16 Jun 2023 15:26:05 -0500 Subject: [PATCH 045/101] Signed-off-by: Matt Bruce --- .../ViewControllers/DropShawdowViewController.swift | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/VDSSample/ViewControllers/DropShawdowViewController.swift b/VDSSample/ViewControllers/DropShawdowViewController.swift index 3838a22..3c79b2c 100644 --- a/VDSSample/ViewControllers/DropShawdowViewController.swift +++ b/VDSSample/ViewControllers/DropShawdowViewController.swift @@ -166,20 +166,20 @@ class DropShadowViewController: BaseViewController { form2.addFormRow(label: "Show", view: .makeWrapper(for: showShadow)) form2.addFormRow(label: "Shawdow Light", view: dropShadowLightColorPickerSelectorView) form2.addFormRow(label: "Shawdow Dark", view: dropShadowDarkColorPickerSelectorView) - form2.addFormRow(label: "Opacity", view: opacityRange) form2.addFormRow(label: "Radius (Blur)", view: radiusRange) form2.addFormRow(label: "Width (OffSet X)", view: offsetXRange) form2.addFormRow(label: "Height (Offset Y)", view: offsetYRange) - + form2.addFormRow(label: "Opacity", view: opacityRange) + let form3 = FormSection() form3.title = "View 1 Shadow 2 Settings" form3.addFormRow(label: "Show", view: .makeWrapper(for: showShadow2)) form3.addFormRow(label: "Shawdow Light", view: dropShadow2LightColorPickerSelectorView) form3.addFormRow(label: "Shawdow Dark", view: dropShadow2DarkColorPickerSelectorView) - form3.addFormRow(label: "Opacity", view: opacityRange2) form3.addFormRow(label: "Radius (Blur)", view: radiusRange2) form3.addFormRow(label: "Width (OffSet X)", view: offsetXRange2) form3.addFormRow(label: "Height (Offset Y)", view: offsetYRange2) + form3.addFormRow(label: "Opacity", view: opacityRange2) append(section: form1) @@ -292,14 +292,16 @@ class DropShadowViewController: BaseViewController { dropShadow2DarkColorPickerSelectorView.text = component.shadowDarkColor2.rawValue viewLightColorPickerSelectorView.text = component.viewLightColor.rawValue viewDarkColorPickerSelectorView.text = component.viewDarkColor.rawValue - + surfacePickerSelectorView.text = component.surface.rawValue + showShadow.isOn = component.showShadow showShadow2.isOn = component.showShadow2 } func setupModel() { //setup UI - surfacePickerSelectorView.text = component.surface.rawValue + + } override func updateView() { From a72a28513a7ef9deffc9d97858b83a81d4427c20 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 16 Jun 2023 15:36:04 -0500 Subject: [PATCH 046/101] 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 7390bf5..62fcf22 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -663,7 +663,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 22; + CURRENT_PROJECT_VERSION = 24; DEVELOPMENT_TEAM = 59V5935DHZ; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; @@ -695,7 +695,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 22; + CURRENT_PROJECT_VERSION = 24; DEVELOPMENT_TEAM = FCMA4QKS77; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; From de9243b4faba4bdd75c9cec9b0bd47a5cf93409b Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Sat, 17 Jun 2023 09:25:23 -0500 Subject: [PATCH 047/101] updated base viewcontroller Signed-off-by: Matt Bruce --- .../ViewControllers/BaseViewController.swift | 99 ++++++++++--------- 1 file changed, 51 insertions(+), 48 deletions(-) diff --git a/VDSSample/ViewControllers/BaseViewController.swift b/VDSSample/ViewControllers/BaseViewController.swift index cdb6b3b..8e86c0c 100644 --- a/VDSSample/ViewControllers/BaseViewController.swift +++ b/VDSSample/ViewControllers/BaseViewController.swift @@ -111,7 +111,6 @@ public class BaseViewController: UIViewController, Initable { initialSetupPerformed = true setup() contentTopView.backgroundColor = Surface.light.color - surfacePickerSelectorView.scrollToBottom = { [weak self] in self?.scrollToBottom()} } } @@ -137,58 +136,68 @@ public class BaseViewController: UIViewController, Initable { open func showDebug(show: Bool) { self.component.debugBorder(show: show, color: .blue) } - - public var contentView: UIView = { - return UIView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - } - }() - + public var formStackView = FormSection() - public var contentTopView: UIView = { - return UIView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - } - }() + lazy var stackView = UIStackView().with { + $0.axis = .vertical + $0.distribution = .fill + $0.alignment = .fill + $0.spacing = 0 + $0.translatesAutoresizingMaskIntoConstraints = false + } + + let bottomScrollView = UIScrollView().with { + $0.translatesAutoresizingMaskIntoConstraints = false + } - public var contentBottomView: UIView = { - return UIView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - } - }() + public var contentTopView = UIView().with { + $0.translatesAutoresizingMaskIntoConstraints = false + } + + public var contentBottomView = UIView().with { + $0.translatesAutoresizingMaskIntoConstraints = false + } open override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white - embed(scrollViewController) - scrollViewController.scrollView.alwaysBounceVertical = true - scrollViewController.contentView = contentView let spacerView = UIView().with{ $0.translatesAutoresizingMaskIntoConstraints = false } - contentView.addSubview(contentTopView) - contentView.addSubview(contentBottomView) - contentView.addSubview(spacerView) + let top = UIView.makeWrapper(for: contentTopView, edgeSpacing: 16, isTrailing: false) + + // Add the top and bottom views to the stack view + stackView.addArrangedSubview(top) + stackView.addArrangedSubview(bottomScrollView) + + // Add the stack view to the view controller's view + view.addSubview(stackView) + + // Pin the stack view to the edges of the view controller's view + NSLayoutConstraint.activate([ + stackView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor), + stackView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor), + stackView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor), + stackView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor) + ]) + + bottomScrollView.addSubview(contentBottomView) + + // Pin the content view to the edges of the scroll view + NSLayoutConstraint.activate([ + contentBottomView.leadingAnchor.constraint(equalTo: bottomScrollView.leadingAnchor), + contentBottomView.trailingAnchor.constraint(equalTo: bottomScrollView.trailingAnchor), + contentBottomView.topAnchor.constraint(equalTo: bottomScrollView.topAnchor), + contentBottomView.bottomAnchor.constraint(equalTo: bottomScrollView.bottomAnchor), + contentBottomView.widthAnchor.constraint(equalTo: bottomScrollView.widthAnchor) + ]) + contentBottomView.addSubview(formStackView) - - contentTopView.pinTop(edgeSpacing) - contentTopView.pinLeading(edgeSpacing) - contentTopView.pinTrailing(edgeSpacing) - contentBottomView.pinTop(contentTopView.bottomAnchor, edgeSpacing) - contentBottomView.pinLeading(edgeSpacing) - contentBottomView.pinTrailing(edgeSpacing) - - spacerView - .pinTop(contentBottomView.bottomAnchor, 100) - .pinLeading() - .pinTrailing() - .pinBottom() - - formStackView.pinToSuperView() + formStackView.pinToSuperView(.init(top: 0, left: 16, bottom: 0, right: edgeSpacing)) view.addSubview(picker) picker.pinBottom() @@ -199,15 +208,13 @@ public class BaseViewController: UIViewController, Initable { setupForm() } - private let scrollViewController = ScrollViewController() - public func setupForm() { addFormRow(label: "Show Bounds", view: .makeWrapper(for: debugViewSwitch)) } public func scrollToBottom() { - let bottomOffset = CGPoint(x: 0, y: scrollViewController.scrollView.contentSize.height - scrollViewController.scrollView.bounds.height + scrollViewController.scrollView.contentInset.bottom) - scrollViewController.scrollView.setContentOffset(bottomOffset, animated: true) + let bottomOffset = CGPoint(x: 0, y: bottomScrollView.contentSize.height - bottomScrollView.bounds.height + bottomScrollView.contentInset.bottom) + bottomScrollView.setContentOffset(bottomOffset, animated: true) } private func embed(_ viewController: UIViewController) { @@ -230,11 +237,7 @@ public class BaseViewController: UIViewController, Initable { @discardableResult open func addFormRow(label: String, view: UIView) -> UIView { - let view = formStackView.addFormRow(label: label, view: view) - if let pickerViewable = view as? any PickerViewable { - pickerViewable.scrollToBottom = { [weak self] in self?.scrollToBottom() } - } - return view + return formStackView.addFormRow(label: label, view: view) } open func setup() { From 114a73c8f93ef37dbf08d244e1245a5e53013aa2 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Tue, 20 Jun 2023 14:22:55 -0500 Subject: [PATCH 048/101] refactored to new properties Signed-off-by: Matt Bruce --- .../BadgeIndicatorViewController.swift | 107 +++++++++++++++--- 1 file changed, 91 insertions(+), 16 deletions(-) diff --git a/VDSSample/ViewControllers/BadgeIndicatorViewController.swift b/VDSSample/ViewControllers/BadgeIndicatorViewController.swift index d8f6d47..6c6e72e 100644 --- a/VDSSample/ViewControllers/BadgeIndicatorViewController.swift +++ b/VDSSample/ViewControllers/BadgeIndicatorViewController.swift @@ -28,7 +28,7 @@ class BadgeIndicatorViewController: BaseViewController { lazy var textSizePickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, - items: BadgeIndicator.TextSize.allCases) + items: BadgeIndicator.Size.allCases) }() lazy var maxDigitsPickerSelectorView = { @@ -51,9 +51,9 @@ class BadgeIndicatorViewController: BaseViewController { var textField = TextField() - var hideDotSwitch = UISwitch() - override func allTextFields() -> [TextField]? { [textField] } - + var hideDotSwitch = Toggle() + var hideBorderSwitch = Toggle() + override func viewDidLoad() { super.viewDidLoad() addContentTopView(view: .makeWrapper(for: component)) @@ -61,28 +61,47 @@ class BadgeIndicatorViewController: BaseViewController { setupModel() } - var numberedForm = FormSection() - var hideDotRow: UIView? + var heightTextField = NumericField() + var widthTextField = NumericField() + var horizontalPaddingTextField = NumericField() + var verticalPaddingTextField = NumericField() + var dotSizeTextField = NumericField() + + override func allTextFields() -> [TextField]? { [textField, heightTextField, widthTextField, horizontalPaddingTextField, verticalPaddingTextField, dotSizeTextField] } + + + var numberedForm = FormSection().with { $0.title = "Numbered Kind"} + var dotForm = FormSection().with { $0.title = "Simple Kind"} + override func setupForm(){ super.setupForm() addFormRow(label: "Kind", view: kindPickerSelectorView) - hideDotRow = addFormRow(label: "Hide Dot", view: hideDotSwitch) - + addFormRow(label: "Height", view: heightTextField) + addFormRow(label: "Width", view: widthTextField) + addFormRow(label: "Horiztonal Padding", view: horizontalPaddingTextField) + addFormRow(label: "Vertical Padding", view: verticalPaddingTextField) addFormRow(label: "Fill Color", view: fillColorPickerSelectorView) addFormRow(label: "Surface", view: surfacePickerSelectorView) + addFormRow(label: "Hide Border", view: .makeWrapper(for: hideBorderSwitch)) addFormRow(label: "Border Light", view: borderColorLightPickerSelectorView) addFormRow(label: "Border Dark", view: borderColorDarkPickerSelectorView) addFormRow(label: "Size", view: textSizePickerSelectorView) + dotForm.addFormRow(label: "Hide Dot", view: .makeWrapper(for: hideDotSwitch)) + dotForm.addFormRow(label: "Dot Size", view: dotSizeTextField) numberedForm.addFormRow(label: "Text", view: textField) numberedForm.addFormRow(label: "Max Digits", view: maxDigitsPickerSelectorView) append(section: numberedForm) - numberedForm.isHidden = true + append(section: dotForm) hideDotSwitch.publisher(for: .valueChanged).sink { [weak self] control in self?.component.hideDot = control.isOn }.store(in: &subscribers) - + + hideBorderSwitch.publisher(for: .valueChanged).sink { [weak self] control in + self?.component.hideBorder = control.isOn + }.store(in: &subscribers) + textField .textPublisher .sink { [weak self] text in @@ -90,23 +109,80 @@ class BadgeIndicatorViewController: BaseViewController { self?.component.number = n.intValue } }.store(in: &subscribers) + + heightTextField + .textPublisher + .sink { [weak self] text in + if let n = NumberFormatter().number(from: text) { + self?.component.height = CGFloat(truncating: n) + } else { + self?.component.height = nil + } + }.store(in: &subscribers) + + widthTextField + .textPublisher + .sink { [weak self] text in + if let n = NumberFormatter().number(from: text) { + self?.component.width = CGFloat(truncating: n) + } else { + self?.component.width = nil + } + }.store(in: &subscribers) + + horizontalPaddingTextField + .textPublisher + .sink { [weak self] text in + if let n = NumberFormatter().number(from: text) { + self?.component.horitonalPadding = CGFloat(truncating: n) + } else { + self?.component.horitonalPadding = nil + } + }.store(in: &subscribers) + + verticalPaddingTextField + .textPublisher + .sink { [weak self] text in + if let n = NumberFormatter().number(from: text) { + self?.component.verticalPadding = CGFloat(truncating: n) + } else { + self?.component.verticalPadding = nil + } + }.store(in: &subscribers) + + dotSizeTextField + .textPublisher + .sink { [weak self] text in + if let n = NumberFormatter().number(from: text) { + self?.component.dotSize = CGFloat(truncating: n) + } else { + self?.component.dotSize = nil + } + }.store(in: &subscribers) + } func setupModel() { component.fillColor = .red component.number = 23 - component.kind = .numbered - component.textSize = .medium + component.kind = .simple + component.size = .medium //setup UI surfacePickerSelectorView.text = component.surface.rawValue kindPickerSelectorView.text = component.kind.rawValue fillColorPickerSelectorView.text = component.fillColor.rawValue - textSizePickerSelectorView.text = component.textSize.rawValue + textSizePickerSelectorView.text = component.size.rawValue maxDigitsPickerSelectorView.text = component.maxDigits.rawValue borderColorDarkPickerSelectorView.text = component.borderColorDark?.toVDSColor()?.rawValue ?? "" borderColorLightPickerSelectorView.text = component.borderColorLight?.toVDSColor()?.rawValue ?? "" textField.text = "\(component.number!)" + visibleForms() + } + + func visibleForms() { + numberedForm.isHidden = kindPickerSelectorView.selectedItem != .numbered + dotForm.isHidden = kindPickerSelectorView.selectedItem == .numbered } func setupPicker(){ @@ -118,8 +194,7 @@ class BadgeIndicatorViewController: BaseViewController { kindPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.kind = item - self?.numberedForm.isHidden = item != .numbered - self?.hideDotRow?.isHidden = item == .numbered + self?.visibleForms() } fillColorPickerSelectorView.onPickerDidSelect = { [weak self] item in @@ -127,7 +202,7 @@ class BadgeIndicatorViewController: BaseViewController { } textSizePickerSelectorView.onPickerDidSelect = { [weak self] item in - self?.component.textSize = item + self?.component.size = item } maxDigitsPickerSelectorView.onPickerDidSelect = { [weak self] item in From 22bf280a0bba67da3e6d3a92ad7b74a3ad9542db Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Tue, 20 Jun 2023 14:23:01 -0500 Subject: [PATCH 049/101] updated badge 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 47f2e43..8f08ae5 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -79,7 +79,7 @@ class MenuViewController: UITableViewController, TooltipLaunchable { let items: [MenuComponent] = [ MenuComponent(title: "DropShadow Tester", completed: true, viewController: DropShadowViewController.self), MenuComponent(title: "Badge", completed: true, viewController: BadgeViewController.self), - MenuComponent(title: "Badge Indicator", completed: false, viewController: BadgeIndicatorViewController.self), + MenuComponent(title: "Badge Indicator", completed: true, viewController: BadgeIndicatorViewController.self), MenuComponent(title: "Button", completed: true, viewController: ButtonViewController.self), MenuComponent(title: "ButtonGroup", completed: true, viewController: ButtonGroupViewController.self), MenuComponent(title: "ButtonIcon", completed: false, viewController: ButtonIconViewController.self), From 92361b11e71bfec77413d3de753aae76d92e861b Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Tue, 20 Jun 2023 16:02:11 -0500 Subject: [PATCH 050/101] added new bundle Signed-off-by: Matt Bruce --- VDSSample.xcodeproj/project.pbxproj | 2 - VDSSample/Extensions/IconName.swift | 1045 ++++++++--------- .../Resources/VDSIcons.bundle/Assets.car | Bin 1765848 -> 1869864 bytes .../Resources/VDSIcons.bundle/Info.plist | Bin 709 -> 736 bytes 4 files changed, 508 insertions(+), 539 deletions(-) diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index 62fcf22..44163ca 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -157,7 +157,6 @@ EA89205028B68307006B9984 /* TextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextField.swift; sourceTree = ""; }; EA978EC1291AC62200ACC883 /* VDS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = VDS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; EA985C00296CC21C00F2FF2E /* IconViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IconViewController.swift; sourceTree = ""; }; - EA985C14296CC5EE00F2FF2E /* VDSIcons.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = VDSIcons.bundle; path = SharedFrameworks/VDSIcons.bundle; sourceTree = ""; }; EA985C1F296DECF600F2FF2E /* IconName.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconName.swift; sourceTree = ""; }; EA985C24296E06EA00F2FF2E /* TextAreaViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextAreaViewController.swift; sourceTree = ""; }; EA985C28296E270000F2FF2E /* VDSIcons.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = VDSIcons.bundle; path = "VDSSample/Supporting Files/Resources/VDSIcons.bundle"; sourceTree = ""; }; @@ -233,7 +232,6 @@ EA3C3BB8289968A0000CA526 /* Frameworks */ = { isa = PBXGroup; children = ( - EA985C14296CC5EE00F2FF2E /* VDSIcons.bundle */, EA985C28296E270000F2FF2E /* VDSIcons.bundle */, EA978EC1291AC62200ACC883 /* VDS.framework */, EAF7F0DC289DB0B400B287F5 /* VDSColorTokens.xcframework */, diff --git a/VDSSample/Extensions/IconName.swift b/VDSSample/Extensions/IconName.swift index 92cc565..8dc6b69 100644 --- a/VDSSample/Extensions/IconName.swift +++ b/VDSSample/Extensions/IconName.swift @@ -9,542 +9,513 @@ import Foundation import VDS extension Icon.Name { - //accessibility - static let accessibility = Icon.Name(name: "accessibility") - static let americanSignLanguage = Icon.Name(name: "american-sign-language") - static let assistedListeningSystems = Icon.Name(name: "assisted-listening-systems") - static let audioDescription = Icon.Name(name: "audio-description") - static let blind = Icon.Name(name: "blind") - static let braille = Icon.Name(name: "braille") - static let brightness = Icon.Name(name: "brightness") - static let closedCaptioning = Icon.Name(name: "closed-captioning") - static let closedCaptioningFill = Icon.Name(name: "closed-captioning-fill") - static let cognitiveDisability = Icon.Name(name: "cognitive-disability") - static let deaf = Icon.Name(name: "deaf") - static let internationalSymbolOfAccess = Icon.Name(name: "international-symbol-of-access") - static let openCaptioning = Icon.Name(name: "open-captioning") - static let phoneVolume = Icon.Name(name: "phone-volume") - static let teletype = Icon.Name(name: "teletype") - static let textToSpeech = Icon.Name(name: "text-to-speech") - - //b2b - static let assetTracking = Icon.Name(name: "asset-tracking") - static let businessContinuity = Icon.Name(name: "business-continuity") - static let conditionBasedMaintenance = Icon.Name(name: "condition-based-maintenance") - static let conditionBasedWrench = Icon.Name(name: "condition-based-wrench") - static let constructionHammer = Icon.Name(name: "construction-hammer") - static let constructionTruck = Icon.Name(name: "construction-truck") - static let digitalSignageCar = Icon.Name(name: "digital-signage-car") - static let digitalSignage = Icon.Name(name: "digital-signage") - static let droneCamera = Icon.Name(name: "drone-camera") - static let educationCurriculum = Icon.Name(name: "education-curriculum") - static let education = Icon.Name(name: "education") - static let electricPower = Icon.Name(name: "electric-power") - static let electricUtility = Icon.Name(name: "electric-utility") - static let energyScience = Icon.Name(name: "energy-science") - static let energyUtilities = Icon.Name(name: "energy-utilities") - static let enterprise = Icon.Name(name: "enterprise") - static let federalDefense = Icon.Name(name: "federal-defense") - static let financial = Icon.Name(name: "financial") - static let fleetTracking = Icon.Name(name: "fleet-tracking") - static let fleet = Icon.Name(name: "fleet") - static let gas = Icon.Name(name: "gas") - static let government = Icon.Name(name: "government") - static let group = Icon.Name(name: "group") - static let growth = Icon.Name(name: "growth") - static let hackers = Icon.Name(name: "hackers") - static let healthcareCorporate = Icon.Name(name: "healthcare-corporate") - static let healthcareGeneral = Icon.Name(name: "healthcare-general") - static let healthcareWorker = Icon.Name(name: "healthcare-worker") - static let ideasSolutions = Icon.Name(name: "ideas-solutions") - static let inclusivity = Icon.Name(name: "inclusivity") - static let industry = Icon.Name(name: "industry") - static let insurance = Icon.Name(name: "insurance") - static let intelligentTracking = Icon.Name(name: "intelligent-tracking") - static let internetOfThings = Icon.Name(name: "internet-of-things") - static let joinCall = Icon.Name(name: "join-call") - static let k12Education = Icon.Name(name: "k12-education") - static let laptopAntivirus = Icon.Name(name: "laptop-antivirus") - static let laptopControls = Icon.Name(name: "laptop-controls") - static let laptopGpsTracking = Icon.Name(name: "laptop-gps-tracking") - static let laptopSettings = Icon.Name(name: "laptop-settings") - static let laptopTrends = Icon.Name(name: "laptop-trends") - static let laptopWireless = Icon.Name(name: "laptop-wireless") - static let law = Icon.Name(name: "law") - static let lmr = Icon.Name(name: "lmr") - static let loyaltyRetention = Icon.Name(name: "loyalty-retention") - static let manufacturing = Icon.Name(name: "manufacturing") - static let mediaEntertainment = Icon.Name(name: "media-entertainment") - static let mediumBusiness = Icon.Name(name: "medium-business") - static let mobileCommandCenter = Icon.Name(name: "mobile-command-center") - static let mobileKioskInfo = Icon.Name(name: "mobile-kiosk-info") - static let mobileKioskWireless = Icon.Name(name: "mobile-kiosk-wireless") - static let mobileRetail = Icon.Name(name: "mobile-retail") - static let mobileSearch = Icon.Name(name: "mobile-search") - static let mobileWorkforceManagement = Icon.Name(name: "mobile-workforce-management") - static let network = Icon.Name(name: "network") - static let networkAttachedStorage = Icon.Name(name: "network-attached-storage") - static let officePhoneSystem = Icon.Name(name: "office-phone-system") - static let oilIndustry = Icon.Name(name: "oil-industry") - static let operationalTransformation = Icon.Name(name: "operational-transformation") - static let pharmaceutical = Icon.Name(name: "pharmaceutical") - static let pharmacy = Icon.Name(name: "pharmacy") - static let planner = Icon.Name(name: "planner") - static let powerUtility = Icon.Name(name: "power-utility") - static let professionalServices = Icon.Name(name: "professional-services") - static let qualityAssurance = Icon.Name(name: "quality-assurance") - static let realEstate = Icon.Name(name: "real-estate") - static let regulatoryCompliance = Icon.Name(name: "regulatory-compliance") - static let retail = Icon.Name(name: "retail") - static let security = Icon.Name(name: "security") - static let securitySolution = Icon.Name(name: "security-solution") - static let smarthouse = Icon.Name(name: "smarthouse") - static let socialMedia = Icon.Name(name: "social-media") - static let software = Icon.Name(name: "software") - static let solarPower = Icon.Name(name: "solar-power") - static let solutions = Icon.Name(name: "solutions") - static let supplyChain = Icon.Name(name: "supply-chain") - static let systemIntegration = Icon.Name(name: "system-integration") - static let telecommunications = Icon.Name(name: "telecommunications") - static let telemedicine = Icon.Name(name: "telemedicine") - static let telemetry = Icon.Name(name: "telemetry") - static let thermodynamics = Icon.Name(name: "thermodynamics") - static let trends = Icon.Name(name: "trends") - static let utilityWorker = Icon.Name(name: "utility-worker") - static let vehicleTracking = Icon.Name(name: "vehicle-tracking") - static let warehouseManagement = Icon.Name(name: "warehouse-management") - static let waterIndustry = Icon.Name(name: "water-industry") - static let wellness = Icon.Name(name: "wellness") - - //directional - static let upCaret = Icon.Name(name: "up-caret") - static let closeAlt = Icon.Name(name: "close-alt") - static let close = Icon.Name(name: "close") - static let downArrow = Icon.Name(name: "down-arrow") - static let downCaret = Icon.Name(name: "down-caret") - static let evenMoreFlexibility = Icon.Name(name: "even-more-flexibility") - static let flexibilityRectangles = Icon.Name(name: "flexibility-rectangles") - static let flexibility = Icon.Name(name: "flexibility") - static let gateway = Icon.Name(name: "gateway") - static let minus = Icon.Name(name: "minus") - static let moreFlexibility = Icon.Name(name: "more-flexibility") - static let noOff = Icon.Name(name: "no-off") - static let no = Icon.Name(name: "no") - static let plus = Icon.Name(name: "plus") - static let swipeLeft = Icon.Name(name: "swipe-left") - static let swipeRight = Icon.Name(name: "swipe-right") - static let swipe = Icon.Name(name: "swipe") - static let `switch` = Icon.Name(name: "switch") - static let upArrow = Icon.Name(name: "up-arrow") - - //international - static let internationalLongDistance = Icon.Name(name: "international-long-distance") - static let international = Icon.Name(name: "international") - static let travelPass = Icon.Name(name: "travel-pass") - static let tripPlanner = Icon.Name(name: "trip-planner") - - //navigational - static let advancedSettings = Icon.Name(name: "advanced-settings") - static let agentChat = Icon.Name(name: "agent-chat") - static let bookmark = Icon.Name(name: "bookmark") - static let chat = Icon.Name(name: "chat") - static let filterOff = Icon.Name(name: "filter-off") - static let filter = Icon.Name(name: "filter") - static let list = Icon.Name(name: "list") - static let lockClosed = Icon.Name(name: "lock-closed") - static let lockOpen = Icon.Name(name: "lock-open") - static let logout = Icon.Name(name: "logout") - static let menu = Icon.Name(name: "menu") - static let moreHorizontal = Icon.Name(name: "more-horizontal") - static let myAccount = Icon.Name(name: "my-account") - static let realTimeTracking = Icon.Name(name: "real-time-tracking") - static let search = Icon.Name(name: "search") - static let settings = Icon.Name(name: "settings") - static let supportDrawer = Icon.Name(name: "support-drawer") - static let support = Icon.Name(name: "support") - static let userRegistration = Icon.Name(name: "user-registration") - - //nofication_feedback - static let alertNotification = Icon.Name(name: "alert-notification") - static let checkmarkAlt = Icon.Name(name: "checkmark-alt") - static let checkmark = Icon.Name(name: "checkmark") - static let clock = Icon.Name(name: "clock") - static let error = Icon.Name(name: "error") - static let feedback = Icon.Name(name: "feedback") - static let loader = Icon.Name(name: "loader") - static let notification = Icon.Name(name: "notification") - static let notificationsOff = Icon.Name(name: "notifications-off") - static let notifyMe = Icon.Name(name: "notify-me") - static let pushNotification = Icon.Name(name: "push-notification") - static let remindMe = Icon.Name(name: "remind-me") - static let reminder = Icon.Name(name: "reminder") - static let securityAlert = Icon.Name(name: "security-alert") - static let securityCheck = Icon.Name(name: "security-check") - static let securityKeyhole = Icon.Name(name: "security-keyhole") - static let securityWireless = Icon.Name(name: "security-wireless") - static let snooze = Icon.Name(name: "snooze") - static let speedMonitoring = Icon.Name(name: "speed-monitoring") - static let starOff = Icon.Name(name: "star-off") - static let star = Icon.Name(name: "star") - static let sync = Icon.Name(name: "sync") - static let timer = Icon.Name(name: "timer") - static let warning = Icon.Name(name: "warning") - - //objects_industry - static let ctr = Icon.Name(name: "ctr") - static let passenger = Icon.Name(name: "passenger") - static let tvContent = Icon.Name(name: "tv-content") - static let urlTransparency = Icon.Name(name: "url-transparency") - static let adaptiveSpeaker = Icon.Name(name: "adaptive-speaker") - static let adTechStack = Icon.Name(name: "ad-tech-stack") - static let agricultureLeaves = Icon.Name(name: "agriculture-leaves") - static let agricultureTractor = Icon.Name(name: "agriculture-tractor") - static let agricultureVineyard = Icon.Name(name: "agriculture-vineyard") - static let airport = Icon.Name(name: "airport") - static let airConditioner = Icon.Name(name: "air-conditioner") - static let audienceTargetedSearch = Icon.Name(name: "audience-targeted-search") - static let award = Icon.Name(name: "award") - static let babyMonitor = Icon.Name(name: "baby-monitor") - static let bestPractices = Icon.Name(name: "best-practices") - static let bid = Icon.Name(name: "bid") - static let bot = Icon.Name(name: "bot") - static let cellTower = Icon.Name(name: "cell-tower") - static let cloudDocument = Icon.Name(name: "cloud-document") - static let coffee = Icon.Name(name: "coffee") - static let coin = Icon.Name(name: "coin") - static let complianceDocument = Icon.Name(name: "compliance-document") - static let conversion = Icon.Name(name: "conversion") - static let countDown = Icon.Name(name: "count-down") - static let crossDeviceTargeting = Icon.Name(name: "cross-device-targeting") - static let crossDevice = Icon.Name(name: "cross-device") - static let customAudience = Icon.Name(name: "custom-audience") - static let digitalContent = Icon.Name(name: "digital-content") - static let dining = Icon.Name(name: "dining") - static let display = Icon.Name(name: "display") - static let domainTargeting = Icon.Name(name: "domain-targeting") - static let doorbell = Icon.Name(name: "doorbell") - static let driver = Icon.Name(name: "driver") - static let euro = Icon.Name(name: "euro") - static let expense = Icon.Name(name: "expense") - static let faceCovering = Icon.Name(name: "face-covering") - static let fineArt = Icon.Name(name: "fine-art") - static let flag = Icon.Name(name: "flag") - static let flurry = Icon.Name(name: "flurry") - static let fridge = Icon.Name(name: "fridge") - static let gaming = Icon.Name(name: "gaming") - static let geofence = Icon.Name(name: "geofence") - static let home = Icon.Name(name: "home") - static let identityGraph = Icon.Name(name: "identity-graph") - static let impressionVideo = Icon.Name(name: "impression-video") - static let inferredIdentity = Icon.Name(name: "inferred-identity") - static let irobot = Icon.Name(name: "irobot") - static let ironingBoard = Icon.Name(name: "ironing-board") - static let kidsStroller = Icon.Name(name: "kids-stroller") - static let levers = Icon.Name(name: "levers") - static let mobilePlusTv = Icon.Name(name: "mobile-plus-tv") - static let mobileRetargeting = Icon.Name(name: "mobile-retargeting") - static let motionDetector = Icon.Name(name: "motion-detector") - static let music = Icon.Name(name: "music") - static let nativeVideo = Icon.Name(name: "native-video") - static let native = Icon.Name(name: "native") - static let onGoCar = Icon.Name(name: "on-go-car") - static let packBackpack = Icon.Name(name: "pack-backpack") - static let packLuggage = Icon.Name(name: "pack-luggage") - static let packPurse = Icon.Name(name: "pack-purse") - static let petsCollar = Icon.Name(name: "pets-collar") - static let realTime = Icon.Name(name: "real-time") - static let research = Icon.Name(name: "research") - static let retailStore = Icon.Name(name: "retail-store") - static let retargeting = Icon.Name(name: "retargeting") - static let schoolNotebook = Icon.Name(name: "school-notebook") - static let singleDocument = Icon.Name(name: "single-document") - static let smartFamilyChildAddressBook = Icon.Name(name: "smart-family-child-address-book") - static let smartScooter = Icon.Name(name: "smart-scooter") - static let smokeDetector = Icon.Name(name: "smoke-detector") - static let solarPanel = Icon.Name(name: "solar-panel") - static let sportsBike = Icon.Name(name: "sports-bike") - static let sportsSkis = Icon.Name(name: "sports-skis") - static let sportsSoccer = Icon.Name(name: "sports-soccer") - static let sportsTennis = Icon.Name(name: "sports-tennis") - static let stadiumAlt = Icon.Name(name: "stadium-alt") - static let stadiumFlag = Icon.Name(name: "stadium-flag") - static let thermostatTech = Icon.Name(name: "thermostat-tech") - static let ticket = Icon.Name(name: "ticket") - static let tradingDeck = Icon.Name(name: "trading-deck") - static let traffic = Icon.Name(name: "traffic") - static let travelKeys = Icon.Name(name: "travel-keys") - static let trumpet = Icon.Name(name: "trumpet") - static let unification = Icon.Name(name: "unification") - static let visibility = Icon.Name(name: "visibility") - static let weights = Icon.Name(name: "weights") - static let yield = Icon.Name(name: "yield") - - //orders_pricing - static let addToFavorite = Icon.Name(name: "add-to-favorite") - static let addedToFavorite = Icon.Name(name: "added-to-favorite") - static let billDown = Icon.Name(name: "bill-down") - static let billUp = Icon.Name(name: "bill-up") - static let camera = Icon.Name(name: "camera") - static let creditCard = Icon.Name(name: "credit-card") - static let gift = Icon.Name(name: "gift") - static let inStorePickup = Icon.Name(name: "in-store-pickup") - static let noFee = Icon.Name(name: "no-fee") - static let oneYear = Icon.Name(name: "one-year") - static let orders = Icon.Name(name: "orders") - static let outOfStock = Icon.Name(name: "out-of-stock") - static let reoccuringPayment = Icon.Name(name: "reoccuring-payment") - static let reservations = Icon.Name(name: "reservations") - static let returns = Icon.Name(name: "returns") - static let rewards = Icon.Name(name: "rewards") - static let shipping = Icon.Name(name: "shipping") - static let shoppingBag = Icon.Name(name: "shopping-bag") - static let shopping = Icon.Name(name: "shopping") - static let tag = Icon.Name(name: "tag") - static let taxes = Icon.Name(name: "taxes") - - //other - static let growthOpportunities = Icon.Name(name: "growth-opportunities") - static let noSmoking = Icon.Name(name: "no-smoking") - static let socialDistancing = Icon.Name(name: "social-distancing") - - //plans_other - static let battery = Icon.Name(name: "battery") - static let bonusData = Icon.Name(name: "bonus-data") - static let bringYourOwnDevice = Icon.Name(name: "bring-your-own-device") - static let callerId = Icon.Name(name: "caller-id") - static let carryoverData = Icon.Name(name: "carryover-data") - static let compass = Icon.Name(name: "compass") - static let connect = Icon.Name(name: "connect") - static let dataBoost = Icon.Name(name: "data-boost") - static let deviceProtection = Icon.Name(name: "device-protection") - static let devicesAddons = Icon.Name(name: "devices-addons") - static let embeddedSound = Icon.Name(name: "embedded-sound") - static let findMyRemote = Icon.Name(name: "find-my-remote") - static let giftedData = Icon.Name(name: "gifted-data") - static let homeInternet = Icon.Name(name: "home-internet") - static let internetDevices = Icon.Name(name: "internet-devices") - static let largePlan = Icon.Name(name: "large-plan") - static let mediumPlan = Icon.Name(name: "medium-plan") - static let mobileApps = Icon.Name(name: "mobile-apps") - static let mobileHotspot = Icon.Name(name: "mobile-hotspot") - static let multipleDeviceProtection = Icon.Name(name: "multiple-device-protection") - static let multipleDevices = Icon.Name(name: "multiple-devices") - static let nationWide = Icon.Name(name: "nation-wide") - static let phoneAlt = Icon.Name(name: "phone-alt") - static let purchaseData = Icon.Name(name: "purchase-data") - static let router = Icon.Name(name: "router") - static let simCard = Icon.Name(name: "sim-card") - static let smallPlan = Icon.Name(name: "small-plan") - static let smartAssistant = Icon.Name(name: "smart-assistant") - static let sound = Icon.Name(name: "sound") - static let tablet = Icon.Name(name: "tablet") - static let techLaptop = Icon.Name(name: "tech-laptop") - static let techPhone = Icon.Name(name: "tech-phone") - static let totalMobileProtection = Icon.Name(name: "total-mobile-protection") - static let unlimitedPlan = Icon.Name(name: "unlimited-plan") - static let uplink = Icon.Name(name: "uplink") - static let videoOnTablet = Icon.Name(name: "video-on-tablet") - static let waterResistant = Icon.Name(name: "water-resistant") - static let wearable = Icon.Name(name: "wearable") - - //social - static let at = Icon.Name(name: "at") - static let facebook = Icon.Name(name: "facebook") - static let instagram = Icon.Name(name: "instagram") - static let twitter = Icon.Name(name: "twitter") - static let youtube = Icon.Name(name: "youtube") - - //utilities - static let ThreeDAd = Icon.Name(name: "3d-ad") - static let ar = Icon.Name(name: "ar") - static let addFolder = Icon.Name(name: "add-folder") - static let addUser = Icon.Name(name: "add-user") - static let analytics = Icon.Name(name: "analytics") - static let announcement = Icon.Name(name: "announcement") - static let archive = Icon.Name(name: "archive") - static let artboard = Icon.Name(name: "artboard") - static let attach = Icon.Name(name: "attach") - static let awareness = Icon.Name(name: "awareness") - static let barcode = Icon.Name(name: "barcode") - static let bluetooth = Icon.Name(name: "bluetooth") - static let boxOpen = Icon.Name(name: "box-open") - static let calendar = Icon.Name(name: "calendar") - static let calibrate = Icon.Name(name: "calibrate") - static let callDisconnected = Icon.Name(name: "call-disconnected") - static let cleanSurface = Icon.Name(name: "clean-surface") - static let cloudAlt = Icon.Name(name: "cloud-alt") - static let cloud = Icon.Name(name: "cloud") - static let comparison = Icon.Name(name: "comparison") - static let compose = Icon.Name(name: "compose") - static let connectParts = Icon.Name(name: "connect-parts") - static let consultativeTransfer = Icon.Name(name: "consultative-transfer") - static let convergence = Icon.Name(name: "convergence") - static let crop = Icon.Name(name: "crop") - static let cta = Icon.Name(name: "cta") - static let customize = Icon.Name(name: "customize") - static let data = Icon.Name(name: "data") - static let decrease = Icon.Name(name: "decrease") - static let deviceActivity = Icon.Name(name: "device-activity") - static let directCarrierBilling = Icon.Name(name: "direct-carrier-billing") - static let directory = Icon.Name(name: "directory") - static let displayUtilities = Icon.Name(name: "display-utilities") - static let distribution = Icon.Name(name: "distribution") - static let download = Icon.Name(name: "download") - static let dragAndDrop = Icon.Name(name: "drag-and-drop") - static let dropShipment = Icon.Name(name: "drop-shipment") - static let duplicate = Icon.Name(name: "duplicate") - static let edit = Icon.Name(name: "edit") - static let email = Icon.Name(name: "email") - static let emergencyContact = Icon.Name(name: "emergency-contact") - static let emoji = Icon.Name(name: "emoji") - static let externalLink = Icon.Name(name: "external-link") - static let fallDetected = Icon.Name(name: "fall-detected") - static let favorite = Icon.Name(name: "favorite") - static let fax = Icon.Name(name: "fax") - static let fingerprintSensor = Icon.Name(name: "fingerprint-sensor") - static let fire = Icon.Name(name: "fire") - static let fitToZone = Icon.Name(name: "fit-to-zone") - static let flipCamera = Icon.Name(name: "flip-camera") - static let forwardedCall = Icon.Name(name: "forwarded-call") - static let fullscreen = Icon.Name(name: "fullscreen") - static let getHelp = Icon.Name(name: "get-help") - static let gridView = Icon.Name(name: "grid-view") - static let history = Icon.Name(name: "history") - static let humidity = Icon.Name(name: "humidity") - static let incomingCall = Icon.Name(name: "incoming-call") - static let increase = Icon.Name(name: "increase") - static let info = Icon.Name(name: "info") - static let inventory = Icon.Name(name: "inventory") - static let invitationAccepted = Icon.Name(name: "invitation-accepted") - static let invitationExpired = Icon.Name(name: "invitation-expired") - static let invitationRejected = Icon.Name(name: "invitation-rejected") - static let landscape = Icon.Name(name: "landscape") - static let light = Icon.Name(name: "light") - static let link = Icon.Name(name: "link") - static let location = Icon.Name(name: "location") - static let locationPin = Icon.Name(name: "location-pin") - static let mapView = Icon.Name(name: "map-view") - static let masonryView = Icon.Name(name: "masonry-view") - static let maximize = Icon.Name(name: "maximize") - static let mergeCalls = Icon.Name(name: "merge-calls") - static let microphoneAlt = Icon.Name(name: "microphone-alt") - static let microphone = Icon.Name(name: "microphone") - static let missedCall = Icon.Name(name: "missed-call") - static let moveTo = Icon.Name(name: "move-to") - static let multicast = Icon.Name(name: "multicast") - static let mute = Icon.Name(name: "mute") - static let networkConnection = Icon.Name(name: "network-connection") - static let news = Icon.Name(name: "news") - static let next = Icon.Name(name: "next") - static let nfcTag = Icon.Name(name: "nfc-tag") - static let night = Icon.Name(name: "night") - static let noVideo = Icon.Name(name: "no-video") - static let onDemand = Icon.Name(name: "on-demand") - static let outgoingCall = Icon.Name(name: "outgoing-call") - static let paperFreeBilling = Icon.Name(name: "paper-free-billing") - static let pauseInternet = Icon.Name(name: "pause-internet") - static let pause = Icon.Name(name: "pause") - static let peelSticker = Icon.Name(name: "peel-sticker") - static let photo = Icon.Name(name: "photo") - static let platform = Icon.Name(name: "platform") - static let playAlt = Icon.Name(name: "play-alt") - static let playWith = Icon.Name(name: "play-with") - static let play = Icon.Name(name: "play") - static let portrait = Icon.Name(name: "portrait") - static let pressure = Icon.Name(name: "pressure") - static let previous = Icon.Name(name: "previous") - static let print = Icon.Name(name: "print") - static let question = Icon.Name(name: "question") - static let recycle = Icon.Name(name: "recycle") - static let removeItem = Icon.Name(name: "remove-item") - static let replaceAPhoto = Icon.Name(name: "replace-a-photo") - static let reply = Icon.Name(name: "reply") - static let ringing = Icon.Name(name: "ringing") - static let ringtone = Icon.Name(name: "ringtone") - static let riskMonitor = Icon.Name(name: "risk-monitor") - static let rss = Icon.Name(name: "rss") - static let satelliteOff = Icon.Name(name: "satellite-off") - static let satellite = Icon.Name(name: "satellite") - static let save = Icon.Name(name: "save") - static let scaleAlt = Icon.Name(name: "scale-alt") - static let scale = Icon.Name(name: "scale") - static let sendMessage = Icon.Name(name: "send-message") - static let setFallbackImage = Icon.Name(name: "set-fallback-image") - static let setGalleryImage = Icon.Name(name: "set-gallery-image") - static let share = Icon.Name(name: "share") - static let shock = Icon.Name(name: "shock") - static let signalBroadcast = Icon.Name(name: "signal-broadcast") - static let speakerMute = Icon.Name(name: "speaker-mute") - static let speakerPhone = Icon.Name(name: "speaker-phone") - static let speed = Icon.Name(name: "speed") - static let stakeholder = Icon.Name(name: "stakeholder") - static let steps = Icon.Name(name: "steps") - static let stop = Icon.Name(name: "stop") - static let stopAlt = Icon.Name(name: "stop-alt") - static let survey = Icon.Name(name: "survey") - static let talking = Icon.Name(name: "talking") - static let teamLeader = Icon.Name(name: "team-leader") - static let temperature = Icon.Name(name: "temperature") - static let template = Icon.Name(name: "template") - static let theme = Icon.Name(name: "theme") - static let thumbsDown = Icon.Name(name: "thumbs-down") - static let thumbsUp = Icon.Name(name: "thumbs-up") - static let tiles = Icon.Name(name: "tiles") - static let tilt = Icon.Name(name: "tilt") - static let tools = Icon.Name(name: "tools") - static let trash = Icon.Name(name: "trash") - static let turnonOff = Icon.Name(name: "turnon-off") - static let tv = Icon.Name(name: "tv") - static let upload = Icon.Name(name: "upload") - static let userSettings = Icon.Name(name: "user-settings") - static let vibration = Icon.Name(name: "vibration") - static let video = Icon.Name(name: "video") - static let volume = Icon.Name(name: "volume") - static let volunteer = Icon.Name(name: "volunteer") - static let virtualReality = Icon.Name(name: "virtual-reality") - static let voiceHd = Icon.Name(name: "voice-hd") - static let voiceMail = Icon.Name(name: "voice-mail") - static let weather = Icon.Name(name: "weather") - static let whiteBlackList = Icon.Name(name: "white-black-list") - static let wifi = Icon.Name(name: "wifi") - static let zoomIn = Icon.Name(name: "zoom-in") - static let zoomOut = Icon.Name(name: "zoom-out") - + public static let threedAd = Icon.Name(name: "3d-ad") + public static let accessibility = Icon.Name(name: "accessibility") + public static let accessories = Icon.Name(name: "accessories") + public static let adTechStack = Icon.Name(name: "ad-tech-stack") + public static let adaptiveSpeaker = Icon.Name(name: "adaptive-speaker") + public static let addFolder = Icon.Name(name: "add-folder") + public static let addToFavorite = Icon.Name(name: "add-to-favorite") + public static let addUser = Icon.Name(name: "add-user") + public static let addedToFavorite = Icon.Name(name: "added-to-favorite") + public static let advancedSettings = Icon.Name(name: "advanced-settings") + public static let agentChat = Icon.Name(name: "agent-chat") + public static let agricultureLeaves = Icon.Name(name: "agriculture-leaves") + public static let agricultureTractor = Icon.Name(name: "agriculture-tractor") + public static let agricultureVineyard = Icon.Name(name: "agriculture-vineyard") + public static let aiDashcam = Icon.Name(name: "ai-dashcam") + public static let airConditioner = Icon.Name(name: "air-conditioner") + public static let airport = Icon.Name(name: "airport") + public static let alertNotification = Icon.Name(name: "alert-notification") + public static let ambulance = Icon.Name(name: "ambulance") + public static let americanSignLanguage = Icon.Name(name: "american-sign-language") + public static let analytics = Icon.Name(name: "analytics") + public static let announcement = Icon.Name(name: "announcement") + public static let ar = Icon.Name(name: "ar") + public static let archive = Icon.Name(name: "archive") + public static let artboard = Icon.Name(name: "artboard") + public static let assetTracking = Icon.Name(name: "asset-tracking") + public static let assistedListeningSystems = Icon.Name(name: "assisted-listening-systems") + public static let at = Icon.Name(name: "at") + public static let attach = Icon.Name(name: "attach") + public static let audienceTargetedSearch = Icon.Name(name: "audience-targeted-search") + public static let audioDescription = Icon.Name(name: "audio-description") + public static let award = Icon.Name(name: "award") + public static let awareness = Icon.Name(name: "awareness") + public static let babyMonitor = Icon.Name(name: "baby-monitor") + public static let barcode = Icon.Name(name: "barcode") + public static let battery = Icon.Name(name: "battery") + public static let bestPractices = Icon.Name(name: "best-practices") + public static let bid = Icon.Name(name: "bid") + public static let billDown = Icon.Name(name: "bill-down") + public static let billUp = Icon.Name(name: "bill-up") + public static let blind = Icon.Name(name: "blind") + public static let bluetooth = Icon.Name(name: "bluetooth") + public static let bonusData = Icon.Name(name: "bonus-data") + public static let bookmark = Icon.Name(name: "bookmark") + public static let bot = Icon.Name(name: "bot") + public static let boxOpen = Icon.Name(name: "box-open") + public static let braille = Icon.Name(name: "braille") + public static let brightness = Icon.Name(name: "brightness") + public static let bringYourOwnDevice = Icon.Name(name: "bring-your-own-device") + public static let bucketTruckBoom = Icon.Name(name: "bucket-truck-boom") + public static let bucketTruck = Icon.Name(name: "bucket-truck") + public static let bug = Icon.Name(name: "bug") + public static let businessContinuity = Icon.Name(name: "business-continuity") + public static let calendar = Icon.Name(name: "calendar") + public static let calibrate = Icon.Name(name: "calibrate") + public static let callDisconnected = Icon.Name(name: "call-disconnected") + public static let callerId = Icon.Name(name: "caller-id") + public static let camera = Icon.Name(name: "camera") + public static let carBattery = Icon.Name(name: "car-battery") + public static let carryoverData = Icon.Name(name: "carryover-data") + public static let cellPhone = Icon.Name(name: "cell-phone") + public static let cellTower = Icon.Name(name: "cell-tower") + public static let chat = Icon.Name(name: "chat") + public static let checkmark = Icon.Name(name: "checkmark") + public static let cleanSurface = Icon.Name(name: "clean-surface") + public static let clock = Icon.Name(name: "clock") + public static let closeAlternate = Icon.Name(name: "close-alternate") + public static let close = Icon.Name(name: "close") + public static let closedCaptioning = Icon.Name(name: "closed-captioning") + public static let cloudDocument = Icon.Name(name: "cloud-document") + public static let cloud = Icon.Name(name: "cloud") + public static let coffee = Icon.Name(name: "coffee") + public static let cognitiveDisability = Icon.Name(name: "cognitive-disability") + public static let coin = Icon.Name(name: "coin") + public static let comparison = Icon.Name(name: "comparison") + public static let compass = Icon.Name(name: "compass") + public static let complianceDocument = Icon.Name(name: "compliance-document") + public static let compose = Icon.Name(name: "compose") + public static let conditionBasedMaintenance = Icon.Name(name: "condition-based-maintenance") + public static let conditionBasedWrench = Icon.Name(name: "condition-based-wrench") + public static let connectParts = Icon.Name(name: "connect-parts") + public static let connect = Icon.Name(name: "connect") + public static let constructionHammer = Icon.Name(name: "construction-hammer") + public static let constructionTruck = Icon.Name(name: "construction-truck") + public static let consultativeTransfer = Icon.Name(name: "consultative-transfer") + public static let convergence = Icon.Name(name: "convergence") + public static let conversion = Icon.Name(name: "conversion") + public static let countDown = Icon.Name(name: "count-down") + public static let creditCard = Icon.Name(name: "credit-card") + public static let crop = Icon.Name(name: "crop") + public static let crossDeviceTargeting = Icon.Name(name: "cross-device-targeting") + public static let crossDevice = Icon.Name(name: "cross-device") + public static let cta = Icon.Name(name: "cta") + public static let ctr = Icon.Name(name: "ctr") + public static let customAudience = Icon.Name(name: "custom-audience") + public static let customize = Icon.Name(name: "customize") + public static let dataBoost = Icon.Name(name: "data-boost") + public static let data = Icon.Name(name: "data") + public static let deaf = Icon.Name(name: "deaf") + public static let decrease = Icon.Name(name: "decrease") + public static let deviceActivity = Icon.Name(name: "device-activity") + public static let deviceProtection = Icon.Name(name: "device-protection") + public static let devicesAddons = Icon.Name(name: "devices-addons") + public static let dfcVideoSideBySide = Icon.Name(name: "dfc-video-side-by-side") + public static let diagnostic = Icon.Name(name: "diagnostic") + public static let digitalContent = Icon.Name(name: "digital-content") + public static let digitalSignageCar = Icon.Name(name: "digital-signage-car") + public static let digitalSignage = Icon.Name(name: "digital-signage") + public static let dining = Icon.Name(name: "dining") + public static let directCarrierBilling = Icon.Name(name: "direct-carrier-billing") + public static let directory = Icon.Name(name: "directory") + public static let displayUtilities = Icon.Name(name: "display-utilities") + public static let display = Icon.Name(name: "display") + public static let distribution = Icon.Name(name: "distribution") + public static let domainTargeting = Icon.Name(name: "domain-targeting") + public static let doorbell = Icon.Name(name: "doorbell") + public static let downArrow = Icon.Name(name: "down-arrow") + public static let downCaret = Icon.Name(name: "down-caret") + public static let download = Icon.Name(name: "download") + public static let dragAndDrop = Icon.Name(name: "drag-and-drop") + public static let driver = Icon.Name(name: "driver") + public static let droneCamera = Icon.Name(name: "drone-camera") + public static let dropShipment = Icon.Name(name: "drop-shipment") + public static let duplicate = Icon.Name(name: "duplicate") + public static let edit = Icon.Name(name: "edit") + public static let educationCurriculum = Icon.Name(name: "education-curriculum") + public static let education = Icon.Name(name: "education") + public static let electricCar = Icon.Name(name: "electric-car") + public static let electricPower = Icon.Name(name: "electric-power") + public static let electricUtility = Icon.Name(name: "electric-utility") + public static let electricVan = Icon.Name(name: "electric-van") + public static let emailSignature = Icon.Name(name: "email-signature") + public static let email = Icon.Name(name: "email") + public static let embeddedSound = Icon.Name(name: "embedded-sound") + public static let emergencyContact = Icon.Name(name: "emergency-contact") + public static let emoji = Icon.Name(name: "emoji") + public static let employeeTermination = Icon.Name(name: "employee-termination") + public static let energyScience = Icon.Name(name: "energy-science") + public static let energyUtilities = Icon.Name(name: "energy-utilities") + public static let enterprise = Icon.Name(name: "enterprise") + public static let error = Icon.Name(name: "error") + public static let euro = Icon.Name(name: "euro") + public static let expense = Icon.Name(name: "expense") + public static let externalLink = Icon.Name(name: "external-link") + public static let faceCovering = Icon.Name(name: "face-covering") + public static let facebook = Icon.Name(name: "facebook") + public static let fallDetected = Icon.Name(name: "fall-detected") + public static let favorite = Icon.Name(name: "favorite") + public static let fax = Icon.Name(name: "fax") + public static let federalDefense = Icon.Name(name: "federal-defense") + public static let feedback = Icon.Name(name: "feedback") + public static let filterOff = Icon.Name(name: "filter-off") + public static let filter = Icon.Name(name: "filter") + public static let financial = Icon.Name(name: "financial") + public static let findMyRemote = Icon.Name(name: "find-my-remote") + public static let fineArt = Icon.Name(name: "fine-art") + public static let fingerprintSensor = Icon.Name(name: "fingerprint-sensor") + public static let fire = Icon.Name(name: "fire") + public static let fitToZone = Icon.Name(name: "fit-to-zone") + public static let flag = Icon.Name(name: "flag") + public static let fleetTracking = Icon.Name(name: "fleet-tracking") + public static let fleet = Icon.Name(name: "fleet") + public static let flexibilityRectangles = Icon.Name(name: "flexibility-rectangles") + public static let flexibility = Icon.Name(name: "flexibility") + public static let flipCamera = Icon.Name(name: "flip-camera") + public static let flurry = Icon.Name(name: "flurry") + public static let forwardedCall = Icon.Name(name: "forwarded-call") + public static let fridge = Icon.Name(name: "fridge") + public static let fullscreen = Icon.Name(name: "fullscreen") + public static let gaming = Icon.Name(name: "gaming") + public static let gas = Icon.Name(name: "gas") + public static let gateway = Icon.Name(name: "gateway") + public static let geofence = Icon.Name(name: "geofence") + public static let getHelp = Icon.Name(name: "get-help") + public static let gift = Icon.Name(name: "gift") + public static let giftedData = Icon.Name(name: "gifted-data") + public static let government = Icon.Name(name: "government") + public static let gridView = Icon.Name(name: "grid-view") + public static let groupFamily = Icon.Name(name: "group-family") + public static let growthOpportunities = Icon.Name(name: "growth-opportunities") + public static let growth = Icon.Name(name: "growth") + public static let hackers = Icon.Name(name: "hackers") + public static let handshake = Icon.Name(name: "handshake") + public static let healthcareCorporate = Icon.Name(name: "healthcare-corporate") + public static let healthcareGeneral = Icon.Name(name: "healthcare-general") + public static let healthcareWorker = Icon.Name(name: "healthcare-worker") + public static let history = Icon.Name(name: "history") + public static let homeInternet = Icon.Name(name: "home-internet") + public static let home = Icon.Name(name: "home") + public static let humidity = Icon.Name(name: "humidity") + public static let ideasSolutions = Icon.Name(name: "ideas-solutions") + public static let identityGraph = Icon.Name(name: "identity-graph") + public static let impressionVideo = Icon.Name(name: "impression-video") + public static let inStorePickup = Icon.Name(name: "in-store-pickup") + public static let inclusivity = Icon.Name(name: "inclusivity") + public static let incomingCall = Icon.Name(name: "incoming-call") + public static let increase = Icon.Name(name: "increase") + public static let industry = Icon.Name(name: "industry") + public static let inferredIdentity = Icon.Name(name: "inferred-identity") + public static let info = Icon.Name(name: "info") + public static let instagram = Icon.Name(name: "instagram") + public static let insurance = Icon.Name(name: "insurance") + public static let intelligentTracking = Icon.Name(name: "intelligent-tracking") + public static let internationalLongDistance = Icon.Name(name: "international-long-distance") + public static let internationalSymbolOfAccess = Icon.Name(name: "international-symbol-of-access") + public static let international = Icon.Name(name: "international") + public static let internetDevices = Icon.Name(name: "internet-devices") + public static let internetOfThings = Icon.Name(name: "internet-of-things") + public static let inventory = Icon.Name(name: "inventory") + public static let invitationAccepted = Icon.Name(name: "invitation-accepted") + public static let invitationExpired = Icon.Name(name: "invitation-expired") + public static let invitationRejected = Icon.Name(name: "invitation-rejected") + public static let irobot = Icon.Name(name: "irobot") + public static let ironingBoard = Icon.Name(name: "ironing-board") + public static let joinCall = Icon.Name(name: "join-call") + public static let k12Education = Icon.Name(name: "k12-education") + public static let kidsStroller = Icon.Name(name: "kids-stroller") + public static let landscape = Icon.Name(name: "landscape") + public static let laptopAntivirus = Icon.Name(name: "laptop-antivirus") + public static let laptopControls = Icon.Name(name: "laptop-controls") + public static let laptopGpsTracking = Icon.Name(name: "laptop-gps-tracking") + public static let laptopSettings = Icon.Name(name: "laptop-settings") + public static let laptopTrends = Icon.Name(name: "laptop-trends") + public static let laptopWireless = Icon.Name(name: "laptop-wireless") + public static let largePlan = Icon.Name(name: "large-plan") + public static let law = Icon.Name(name: "law") + public static let leftArrow = Icon.Name(name: "left-arrow") + public static let leftCaret = Icon.Name(name: "left-caret") + public static let levers = Icon.Name(name: "levers") + public static let light = Icon.Name(name: "light") + public static let link = Icon.Name(name: "link") + public static let list = Icon.Name(name: "list") + public static let liveCaption = Icon.Name(name: "live-caption") + public static let lmr = Icon.Name(name: "lmr") + public static let loanerEquipment = Icon.Name(name: "loaner-equipment") + public static let locationPin = Icon.Name(name: "location-pin") + public static let location = Icon.Name(name: "location") + public static let lockClosed = Icon.Name(name: "lock-closed") + public static let lockOpen = Icon.Name(name: "lock-open") + public static let logout = Icon.Name(name: "logout") + public static let loyaltyRetention = Icon.Name(name: "loyalty-retention") + public static let manufacturing = Icon.Name(name: "manufacturing") + public static let mapView = Icon.Name(name: "map-view") + public static let masonryView = Icon.Name(name: "masonry-view") + public static let maximize = Icon.Name(name: "maximize") + public static let medal = Icon.Name(name: "medal") + public static let mediaEntertainment = Icon.Name(name: "media-entertainment") + public static let mediumBusiness = Icon.Name(name: "medium-business") + public static let mediumPlan = Icon.Name(name: "medium-plan") + public static let menu = Icon.Name(name: "menu") + public static let mergeCalls = Icon.Name(name: "merge-calls") + public static let microphone = Icon.Name(name: "microphone") + public static let minus = Icon.Name(name: "minus") + public static let missedCall = Icon.Name(name: "missed-call") + public static let mobileApps = Icon.Name(name: "mobile-apps") + public static let mobileCommandCenter = Icon.Name(name: "mobile-command-center") + public static let mobileHotspot = Icon.Name(name: "mobile-hotspot") + public static let mobileKioskInfo = Icon.Name(name: "mobile-kiosk-info") + public static let mobileKioskWireless = Icon.Name(name: "mobile-kiosk-wireless") + public static let mobilePlusTv = Icon.Name(name: "mobile-plus-tv") + public static let mobileRetail = Icon.Name(name: "mobile-retail") + public static let mobileRetargeting = Icon.Name(name: "mobile-retargeting") + public static let mobileSearch = Icon.Name(name: "mobile-search") + public static let mobileWorkforceManagement = Icon.Name(name: "mobile-workforce-management") + public static let moreHorizontal = Icon.Name(name: "more-horizontal") + public static let motionDetector = Icon.Name(name: "motion-detector") + public static let moveTo = Icon.Name(name: "move-to") + public static let multicast = Icon.Name(name: "multicast") + public static let multipleDeviceProtection = Icon.Name(name: "multiple-device-protection") + public static let multipleDevices = Icon.Name(name: "multiple-devices") + public static let multipleDocuments = Icon.Name(name: "multiple-documents") + public static let music = Icon.Name(name: "music") + public static let mute = Icon.Name(name: "mute") + public static let myAccount = Icon.Name(name: "my-account") + public static let nationwide = Icon.Name(name: "nationwide") + public static let nativeVideo = Icon.Name(name: "native-video") + public static let native = Icon.Name(name: "native") + public static let networkAttachedStorage = Icon.Name(name: "network-attached-storage") + public static let networkConnection = Icon.Name(name: "network-connection") + public static let network = Icon.Name(name: "network") + public static let news = Icon.Name(name: "news") + public static let next = Icon.Name(name: "next") + public static let nfcTag = Icon.Name(name: "nfc-tag") + public static let night = Icon.Name(name: "night") + public static let noFee = Icon.Name(name: "no-fee") + public static let noOff = Icon.Name(name: "no-off") + public static let noSmoking = Icon.Name(name: "no-smoking") + public static let noVideo = Icon.Name(name: "no-video") + public static let no = Icon.Name(name: "no") + public static let notification = Icon.Name(name: "notification") + public static let notificationsOff = Icon.Name(name: "notifications-off") + public static let notifyMe = Icon.Name(name: "notify-me") + public static let officePhoneSystem = Icon.Name(name: "office-phone-system") + public static let oilIndustry = Icon.Name(name: "oil-industry") + public static let onDemand = Icon.Name(name: "on-demand") + public static let onGoCar = Icon.Name(name: "on-go-car") + public static let oneYear = Icon.Name(name: "one-year") + public static let openCaptioning = Icon.Name(name: "open-captioning") + public static let operationalTransformation = Icon.Name(name: "operational-transformation") + public static let orders = Icon.Name(name: "orders") + public static let outOfStock = Icon.Name(name: "out-of-stock") + public static let outgoingCall = Icon.Name(name: "outgoing-call") + public static let packBackpack = Icon.Name(name: "pack-backpack") + public static let packLuggage = Icon.Name(name: "pack-luggage") + public static let packPurse = Icon.Name(name: "pack-purse") + public static let paperFreeBilling = Icon.Name(name: "paper-free-billing") + public static let passenger = Icon.Name(name: "passenger") + public static let pauseInternet = Icon.Name(name: "pause-internet") + public static let pause = Icon.Name(name: "pause") + public static let peelSticker = Icon.Name(name: "peel-sticker") + public static let petsCollar = Icon.Name(name: "pets-collar") + public static let pharmaceutical = Icon.Name(name: "pharmaceutical") + public static let phoneAllGood = Icon.Name(name: "phone-all-good") + public static let phoneFavorite = Icon.Name(name: "phone-favorite") + public static let phoneMedical = Icon.Name(name: "phone-medical") + public static let phonePublicSafety = Icon.Name(name: "phone-public-safety") + public static let phoneVolume = Icon.Name(name: "phone-volume") + public static let phone = Icon.Name(name: "phone") + public static let photo = Icon.Name(name: "photo") + public static let platform = Icon.Name(name: "platform") + public static let playWith = Icon.Name(name: "play-with") + public static let play = Icon.Name(name: "play") + public static let plus = Icon.Name(name: "plus") + public static let policeFleet = Icon.Name(name: "police-fleet") + public static let portrait = Icon.Name(name: "portrait") + public static let pressure = Icon.Name(name: "pressure") + public static let previous = Icon.Name(name: "previous") + public static let print = Icon.Name(name: "print") + public static let professionalServicesCase = Icon.Name(name: "professional-services-case") + public static let professionalServicesChart = Icon.Name(name: "professional-services-chart") + public static let publicSafety = Icon.Name(name: "public-safety") + public static let publicTransportation = Icon.Name(name: "public-transportation") + public static let purchaseData = Icon.Name(name: "purchase-data") + public static let pushNotification = Icon.Name(name: "push-notification") + public static let pushToTalk = Icon.Name(name: "push-to-talk") + public static let question = Icon.Name(name: "question") + public static let realTimeTracking = Icon.Name(name: "real-time-tracking") + public static let realTime = Icon.Name(name: "real-time") + public static let recycle = Icon.Name(name: "recycle") + public static let remindMe = Icon.Name(name: "remind-me") + public static let reminder = Icon.Name(name: "reminder") + public static let removeItem = Icon.Name(name: "remove-item") + public static let reoccurringPayment = Icon.Name(name: "reoccurring-payment") + public static let replaceAPhoto = Icon.Name(name: "replace-a-photo") + public static let reply = Icon.Name(name: "reply") + public static let reportsAndAlerts = Icon.Name(name: "reports-and-alerts") + public static let research = Icon.Name(name: "research") + public static let reservations = Icon.Name(name: "reservations") + public static let responsibleBusiness = Icon.Name(name: "responsible-business") + public static let retailStore = Icon.Name(name: "retail-store") + public static let retargeting = Icon.Name(name: "retargeting") + public static let returns = Icon.Name(name: "returns") + public static let rewards = Icon.Name(name: "rewards") + public static let rightArrow = Icon.Name(name: "right-arrow") + public static let rightCaret = Icon.Name(name: "right-caret") + public static let ringing = Icon.Name(name: "ringing") + public static let ringtone = Icon.Name(name: "ringtone") + public static let riskMonitor = Icon.Name(name: "risk-monitor") + public static let router = Icon.Name(name: "router") + public static let rss = Icon.Name(name: "rss") + public static let satelliteOff = Icon.Name(name: "satellite-off") + public static let satellite = Icon.Name(name: "satellite") + public static let save = Icon.Name(name: "save") + public static let scaleAlt = Icon.Name(name: "scale-alt") + public static let scale = Icon.Name(name: "scale") + public static let schoolNotebook = Icon.Name(name: "school-notebook") + public static let search = Icon.Name(name: "search") + public static let securityAlert = Icon.Name(name: "security-alert") + public static let securityCheck = Icon.Name(name: "security-check") + public static let securityKeyhole = Icon.Name(name: "security-keyhole") + public static let securityWireless = Icon.Name(name: "security-wireless") + public static let sendMessage = Icon.Name(name: "send-message") + public static let serverClock = Icon.Name(name: "server-clock") + public static let serverSearch = Icon.Name(name: "server-search") + public static let serverStack = Icon.Name(name: "server-stack") + public static let setFallbackImage = Icon.Name(name: "set-fallback-image") + public static let setGalleryImage = Icon.Name(name: "set-gallery-image") + public static let settings = Icon.Name(name: "settings") + public static let share = Icon.Name(name: "share") + public static let shipping = Icon.Name(name: "shipping") + public static let shock = Icon.Name(name: "shock") + public static let shoppingBag = Icon.Name(name: "shopping-bag") + public static let shopping = Icon.Name(name: "shopping") + public static let signalBroadcast = Icon.Name(name: "signal-broadcast") + public static let simCard = Icon.Name(name: "sim-card") + public static let singleDocument = Icon.Name(name: "single-document") + public static let smallBusiness = Icon.Name(name: "small-business") + public static let smallPlan = Icon.Name(name: "small-plan") + public static let smartAssistant = Icon.Name(name: "smart-assistant") + public static let smartBoiler = Icon.Name(name: "smart-boiler") + public static let smartCommunities = Icon.Name(name: "smart-communities") + public static let smartFamilyChildAddressBook = Icon.Name(name: "smart-family-child-address-book") + public static let smartLighting = Icon.Name(name: "smart-lighting") + public static let smartMeter = Icon.Name(name: "smart-meter") + public static let smartScooter = Icon.Name(name: "smart-scooter") + public static let smartSocket = Icon.Name(name: "smart-socket") + public static let smartSwitch = Icon.Name(name: "smart-switch") + public static let smokeDetector = Icon.Name(name: "smoke-detector") + public static let snooze = Icon.Name(name: "snooze") + public static let socialDistancing = Icon.Name(name: "social-distancing") + public static let solarPanel = Icon.Name(name: "solar-panel") + public static let sort = Icon.Name(name: "sort") + public static let sound = Icon.Name(name: "sound") + public static let speakerMute = Icon.Name(name: "speaker-mute") + public static let speakerPhone = Icon.Name(name: "speaker-phone") + public static let speedMonitoring = Icon.Name(name: "speed-monitoring") + public static let speed = Icon.Name(name: "speed") + public static let sportsBike = Icon.Name(name: "sports-bike") + public static let sportsSkis = Icon.Name(name: "sports-skis") + public static let sportsSoccer = Icon.Name(name: "sports-soccer") + public static let sportsTennis = Icon.Name(name: "sports-tennis") + public static let stadiumFlag = Icon.Name(name: "stadium-flag") + public static let stakeholder = Icon.Name(name: "stakeholder") + public static let star = Icon.Name(name: "star") + public static let steps = Icon.Name(name: "steps") + public static let stethoscope = Icon.Name(name: "stethoscope") + public static let stockTogether = Icon.Name(name: "stock-together") + public static let stopAlt = Icon.Name(name: "stop-alt") + public static let stop = Icon.Name(name: "stop") + public static let supportDrawer = Icon.Name(name: "support-drawer") + public static let support = Icon.Name(name: "support") + public static let survey = Icon.Name(name: "survey") + public static let swipeLeft = Icon.Name(name: "swipe-left") + public static let swipeRight = Icon.Name(name: "swipe-right") + public static let swipe = Icon.Name(name: "swipe") + public static let `switch` = Icon.Name(name: "switch") + public static let sync = Icon.Name(name: "sync") + public static let tabletData = Icon.Name(name: "tablet-data") + public static let tabletWireless = Icon.Name(name: "tablet-wireless") + public static let tablet = Icon.Name(name: "tablet") + public static let tag = Icon.Name(name: "tag") + public static let talking = Icon.Name(name: "talking") + public static let targetGoal = Icon.Name(name: "target-goal") + public static let taxes = Icon.Name(name: "taxes") + public static let teamLeader = Icon.Name(name: "team-leader") + public static let techLaptop = Icon.Name(name: "tech-laptop") + public static let technology = Icon.Name(name: "technology") + public static let telematicsCar = Icon.Name(name: "telematics-car") + public static let teletype = Icon.Name(name: "teletype") + public static let temperature = Icon.Name(name: "temperature") + public static let template = Icon.Name(name: "template") + public static let textToSpeech = Icon.Name(name: "text-to-speech") + public static let theme = Icon.Name(name: "theme") + public static let thermostatTech = Icon.Name(name: "thermostat-tech") + public static let thumbsDown = Icon.Name(name: "thumbs-down") + public static let thumbsUp = Icon.Name(name: "thumbs-up") + public static let ticket = Icon.Name(name: "ticket") + public static let tiles = Icon.Name(name: "tiles") + public static let tilt = Icon.Name(name: "tilt") + public static let timer = Icon.Name(name: "timer") + public static let tireBlowout = Icon.Name(name: "tire-blowout") + public static let tools = Icon.Name(name: "tools") + public static let topBox = Icon.Name(name: "top-box") + public static let totalMobileProtection = Icon.Name(name: "total-mobile-protection") + public static let towTruck = Icon.Name(name: "tow-truck") + public static let tradingDeck = Icon.Name(name: "trading-deck") + public static let trafficLight = Icon.Name(name: "traffic-light") + public static let traffic = Icon.Name(name: "traffic") + public static let trailers = Icon.Name(name: "trailers") + public static let training = Icon.Name(name: "training") + public static let transportation = Icon.Name(name: "transportation") + public static let trash = Icon.Name(name: "trash") + public static let travelKeys = Icon.Name(name: "travel-keys") + public static let travelPass = Icon.Name(name: "travel-pass") + public static let tripPlanner = Icon.Name(name: "trip-planner") + public static let trumpet = Icon.Name(name: "trumpet") + public static let turnOnOff = Icon.Name(name: "turn-on-off") + public static let tvContent = Icon.Name(name: "tv-content") + public static let tv = Icon.Name(name: "tv") + public static let twitter = Icon.Name(name: "twitter") + public static let undo = Icon.Name(name: "undo") + public static let unification = Icon.Name(name: "unification") + public static let unlimitedPlan = Icon.Name(name: "unlimited-plan") + public static let upArrow = Icon.Name(name: "up-arrow") + public static let upCaret = Icon.Name(name: "up-caret") + public static let uplink = Icon.Name(name: "uplink") + public static let upload = Icon.Name(name: "upload") + public static let urlTransparency = Icon.Name(name: "url-transparency") + public static let userGuides1 = Icon.Name(name: "user-guides-1") + public static let userGuides2 = Icon.Name(name: "user-guides-2") + public static let userRegistration = Icon.Name(name: "user-registration") + public static let userSettings = Icon.Name(name: "user-settings") + public static let utilityGridManagement = Icon.Name(name: "utility-grid-management") + public static let vibration = Icon.Name(name: "vibration") + public static let videoOnTablet = Icon.Name(name: "video-on-tablet") + public static let video = Icon.Name(name: "video") + public static let virtualReality = Icon.Name(name: "virtual-reality") + public static let visibility = Icon.Name(name: "visibility") + public static let voiceHd = Icon.Name(name: "voice-hd") + public static let voiceMail = Icon.Name(name: "voice-mail") + public static let volume = Icon.Name(name: "volume") + public static let volunteer = Icon.Name(name: "volunteer") + public static let warning = Icon.Name(name: "warning") + public static let waterResistant = Icon.Name(name: "water-resistant") + public static let waterUtility = Icon.Name(name: "water-utility") + public static let wearable = Icon.Name(name: "wearable") + public static let weather = Icon.Name(name: "weather") + public static let webinar = Icon.Name(name: "webinar") + public static let weights = Icon.Name(name: "weights") + public static let whiteboard = Icon.Name(name: "whiteboard") + public static let winchService = Icon.Name(name: "winch-service") + public static let wirelessVending = Icon.Name(name: "wireless-vending") + public static let wirelessVideoSurveillance = Icon.Name(name: "wireless-video-surveillance") + public static let yield = Icon.Name(name: "yield") + public static let youtube = Icon.Name(name: "youtube") + public static let zoomIn = Icon.Name(name: "zoom-in") + public static let zoomOut = Icon.Name(name: "zoom-out") static let all: [Icon.Name] = [ - //accessibility - .accessibility, .americanSignLanguage, .assistedListeningSystems, .audioDescription, .blind, .braille, .brightness, .closedCaptioning, .closedCaptioningFill, .cognitiveDisability, .deaf, .internationalSymbolOfAccess, .openCaptioning, .phoneVolume, .teletype, .textToSpeech, - - //b2b: - .assetTracking, .businessContinuity, .conditionBasedMaintenance, .conditionBasedWrench, .constructionHammer, .constructionTruck, .digitalSignageCar, .digitalSignage, .droneCamera, .educationCurriculum, .education, .electricPower, .electricUtility, .energyScience, .energyUtilities, .enterprise, .federalDefense, .financial, .fleetTracking, .fleet, .gas, .government, .group, .growth, .hackers, .healthcareCorporate, .healthcareGeneral, .healthcareWorker, .ideasSolutions, .inclusivity, .industry, .insurance, .intelligentTracking, .internetOfThings, .joinCall, .k12Education, .laptopAntivirus, .laptopControls, .laptopGpsTracking, .laptopSettings, .laptopTrends, .laptopWireless, .law, .lmr, .loyaltyRetention, .manufacturing, .mediaEntertainment, .mediumBusiness, .mobileCommandCenter, .mobileKioskInfo, .mobileKioskWireless, .mobileRetail, .mobileSearch, .mobileWorkforceManagement, .network, .networkAttachedStorage, .officePhoneSystem, .oilIndustry, .operationalTransformation, .pharmaceutical, .pharmacy, .planner, .powerUtility, .professionalServices, .qualityAssurance, .realEstate, .regulatoryCompliance, .research, .retail, .security, .securitySolution, .smarthouse, .socialMedia, .software, .solarPower, .solutions, .supplyChain, .systemIntegration, .telecommunications, .telemedicine, .telemetry, .thermodynamics, .trends, .utilityWorker, .vehicleTracking, .warehouseManagement, .waterIndustry, .wellness, - - //directional: - .closeAlt, .close, .downArrow, .downCaret, .evenMoreFlexibility, .flexibilityRectangles, .flexibility, .gateway, .leftArrow, .leftCaret, .minus, .moreFlexibility, .noOff, .no, .plus, .rightArrow, .rightCaret, .swipeLeft, .swipeRight, .swipe, .switch, .upArrow, .upCaret, - - //international: - .internationalLongDistance, .international, .travelPass, .tripPlanner, - - //navigational - .advancedSettings, .agentChat, .bookmark, .chat, .filterOff, .filter, .list, .lockClosed, .lockOpen, .logout, .menu, .moreHorizontal, .myAccount, .realTimeTracking, .search, .settings, .supportDrawer, .support, .userRegistration, - - //notification_feedback: - .alertNotification, .checkmarkAlt, .checkmark, .clock, .error, .feedback, .loader, .notification, .notificationsOff, .notifyMe, .pushNotification, .remindMe, .reminder, .securityAlert, .securityCheck, .securityKeyhole, .securityWireless, .snooze, .speedMonitoring, .starOff, .star, .sync, .timer, .warning, - - //objects_industry: - .ctr, .passenger, .tvContent, .urlTransparency, .adaptiveSpeaker, .adTechStack, .agricultureLeaves, .agricultureTractor, .agricultureVineyard, .airport, .airConditioner, .audienceTargetedSearch, .award, .babyMonitor, .bestPractices, .bid, .bot, .cellTower, .cloudDocument, .coffee, .coin, .complianceDocument, .conversion, .countDown, .crossDeviceTargeting, .crossDevice, .customAudience, .digitalContent, .dining, .display, .domainTargeting, .doorbell, .driver, .euro, .expense, .faceCovering, .fineArt, .flag, .flurry, .fridge, .gaming, .geofence, .home, .identityGraph, .impressionVideo, .inferredIdentity, .irobot, .ironingBoard, .kidsStroller, .levers, .mobilePlusTv, .mobileRetargeting, .motionDetector, .multipleDocuments, .music, .nativeVideo, .native, .onGoCar, .packBackpack, .packLuggage, .packPurse, .petsCollar, .realTime, .research, .retailStore, .retargeting, .schoolNotebook, .singleDocument, .smartFamilyChildAddressBook, .smartScooter, .smokeDetector, .solarPanel, .sportsBike, .sportsSkis, .sportsSoccer, .sportsTennis, .stadiumAlt, .stadiumFlag, .thermostatTech, .ticket, .tradingDeck, .traffic, .travelKeys, .trumpet, .unification, .unification, .visibility, .weights, .yield, - - //orders_pricing: - .addToFavorite, .addedToFavorite, .billDown, .billUp, .camera, .creditCard, .gift, .inStorePickup, .noFee, .oneYear, .orders, .outOfStock, .reoccuringPayment, .reservations, .returns, .rewards, .shipping, .shoppingBag, .shopping, .tag, .taxes, - - //other: - .growthOpportunities, .noSmoking, .socialDistancing, - - //plans_devices: - .battery, .bonusData, .bringYourOwnDevice, .callerId, .carryoverData, .compass, .connect, .dataBoost, .deviceProtection, .devicesAddons, .embeddedSound, .findMyRemote, .giftedData, .homeInternet, .internetDevices, .largePlan, .mediumPlan, .mobileApps, .mobileHotspot, .multipleDeviceProtection, .multipleDevices, .nationWide, .phoneAlt, .purchaseData, .router, .simCard, .smallPlan, .smartAssistant, .sound, .tablet, .techLaptop, .techPhone , .totalMobileProtection, .unlimitedPlan, .uplink, .videoOnTablet, .waterResistant, .wearable, - - //social: - .at, .facebook, .instagram, .twitter, .youtube, - - //utilities: - .ThreeDAd , .ar , .addFolder , .addUser , .analytics , .announcement , .archive , .artboard , .attach , .awareness , .barcode , .bluetooth , .boxOpen , .calendar , .calibrate , .callDisconnected , .cleanSurface , .cloudAlt , .cloud , .comparison , .compose , .connectParts , .consultativeTransfer , .convergence , .crop , .cta , .customize , .data , .decrease , .deviceActivity , .directCarrierBilling , .directory , .displayUtilities , .distribution , .download , .dragAndDrop , .dropShipment , .duplicate , .edit , .email , .emergencyContact , .emoji , .externalLink , .fallDetected , .favorite , .fax , .fingerprintSensor , .fire , .fitToZone , .flipCamera , .forwardedCall , .fullscreen , .getHelp , .gridView , .history , .humidity , .incomingCall , .increase , .info , .inventory , .invitationAccepted , .invitationExpired , .invitationRejected , .landscape , .light , .link , .location , .locationPin , .mapView , .masonryView , .maximize , .mergeCalls , .microphoneAlt , .microphone , .missedCall , .moveTo , .multicast , .mute , .networkConnection , .news , .next , .nfcTag , .night , .noVideo , .onDemand , .outgoingCall , .paperFreeBilling , .pauseInternet , .pause , .peelSticker , .photo , .platform , .playAlt , .playWith , .play , .portrait , .pressure , .previous , .print , .question , .recycle , .removeItem , .replaceAPhoto , .reply , .ringing , .ringtone , .riskMonitor , .rss , .satelliteOff , .satellite , .save , .scaleAlt , .scale , .sendMessage , .setFallbackImage , .setGalleryImage , .share , .shock , .signalBroadcast , .speakerMute , .speakerPhone , .speed , .stakeholder , .steps , .stop , .stopAlt , .survey , .talking , .teamLeader , .temperature , .template , .theme , .thumbsDown , .thumbsUp , .tiles , .tilt , .tools , .trash , .turnonOff , .tv , .upload , .userSettings , .vibration , .video , .volume , .volunteer , .virtualReality , .voiceHd , .voiceMail , .weather , .whiteBlackList , .wifi , .zoomIn , .zoomOut - ] + threedAd, accessibility, accessories, adTechStack, adaptiveSpeaker, addFolder, addToFavorite, addUser, addedToFavorite, advancedSettings, agentChat, agricultureLeaves, agricultureTractor, agricultureVineyard, aiDashcam, airConditioner, airport, alertNotification, ambulance, americanSignLanguage, analytics, announcement, ar, archive, artboard, assetTracking, assistedListeningSystems, at, attach, audienceTargetedSearch, audioDescription, award, awareness, babyMonitor, barcode, battery, bestPractices, bid, billDown, billUp, blind, bluetooth, bonusData, bookmark, bot, boxOpen, braille, brightness, bringYourOwnDevice, bucketTruckBoom, bucketTruck, bug, businessContinuity, calendar, calibrate, callDisconnected, callerId, camera, carBattery, carryoverData, cellPhone, cellTower, chat, checkmark, cleanSurface, clock, closeAlternate, close, closedCaptioning, cloudDocument, cloud, coffee, cognitiveDisability, coin, comparison, compass, complianceDocument, compose, conditionBasedMaintenance, conditionBasedWrench, connectParts, connect, constructionHammer, constructionTruck, consultativeTransfer, convergence, conversion, countDown, creditCard, crop, crossDeviceTargeting, crossDevice, cta, ctr, customAudience, customize, dataBoost, data, deaf, decrease, deviceActivity, deviceProtection, devicesAddons, dfcVideoSideBySide, diagnostic, digitalContent, digitalSignageCar, digitalSignage, dining, directCarrierBilling, directory, displayUtilities, display, distribution, domainTargeting, doorbell, downArrow, downCaret, download, dragAndDrop, driver, droneCamera, dropShipment, duplicate, edit, educationCurriculum, education, electricCar, electricPower, electricUtility, electricVan, emailSignature, email, embeddedSound, emergencyContact, emoji, employeeTermination, energyScience, energyUtilities, enterprise, error, euro, expense, externalLink, faceCovering, facebook, fallDetected, favorite, fax, federalDefense, feedback, filterOff, filter, financial, findMyRemote, fineArt, fingerprintSensor, fire, fitToZone, flag, fleetTracking, fleet, flexibilityRectangles, flexibility, flipCamera, flurry, forwardedCall, fridge, fullscreen, gaming, gas, gateway, geofence, getHelp, gift, giftedData, government, gridView, groupFamily, growthOpportunities, growth, hackers, handshake, healthcareCorporate, healthcareGeneral, healthcareWorker, history, homeInternet, home, humidity, ideasSolutions, identityGraph, impressionVideo, inStorePickup, inclusivity, incomingCall, increase, industry, inferredIdentity, info, instagram, insurance, intelligentTracking, internationalLongDistance, internationalSymbolOfAccess, international, internetDevices, internetOfThings, inventory, invitationAccepted, invitationExpired, invitationRejected, irobot, ironingBoard, joinCall, k12Education, kidsStroller, landscape, laptopAntivirus, laptopControls, laptopGpsTracking, laptopSettings, laptopTrends, laptopWireless, largePlan, law, leftArrow, leftCaret, levers, light, link, list, liveCaption, lmr, loanerEquipment, locationPin, location, lockClosed, lockOpen, logout, loyaltyRetention, manufacturing, mapView, masonryView, maximize, medal, mediaEntertainment, mediumBusiness, mediumPlan, menu, mergeCalls, microphone, minus, missedCall, mobileApps, mobileCommandCenter, mobileHotspot, mobileKioskInfo, mobileKioskWireless, mobilePlusTv, mobileRetail, mobileRetargeting, mobileSearch, mobileWorkforceManagement, moreHorizontal, motionDetector, moveTo, multicast, multipleDeviceProtection, multipleDevices, multipleDocuments, music, mute, myAccount, nationwide, nativeVideo, native, networkAttachedStorage, networkConnection, network, news, next, nfcTag, night, noFee, noOff, noSmoking, noVideo, no, notification, notificationsOff, notifyMe, officePhoneSystem, oilIndustry, onDemand, onGoCar, oneYear, openCaptioning, operationalTransformation, orders, outOfStock, outgoingCall, packBackpack, packLuggage, packPurse, paperFreeBilling, passenger, pauseInternet, pause, peelSticker, petsCollar, pharmaceutical, phoneAllGood, phoneFavorite, phoneMedical, phonePublicSafety, phoneVolume, phone, photo, platform, playWith, play, plus, policeFleet, portrait, pressure, previous, print, professionalServicesCase, professionalServicesChart, publicSafety, publicTransportation, purchaseData, pushNotification, pushToTalk, question, realTimeTracking, realTime, recycle, remindMe, reminder, removeItem, reoccurringPayment, replaceAPhoto, reply, reportsAndAlerts, research, reservations, responsibleBusiness, retailStore, retargeting, returns, rewards, rightArrow, rightCaret, ringing, ringtone, riskMonitor, router, rss, satelliteOff, satellite, save, scaleAlt, scale, schoolNotebook, search, securityAlert, securityCheck, securityKeyhole, securityWireless, sendMessage, serverClock, serverSearch, serverStack, setFallbackImage, setGalleryImage, settings, share, shipping, shock, shoppingBag, shopping, signalBroadcast, simCard, singleDocument, smallBusiness, smallPlan, smartAssistant, smartBoiler, smartCommunities, smartFamilyChildAddressBook, smartLighting, smartMeter, smartScooter, smartSocket, smartSwitch, smokeDetector, snooze, socialDistancing, solarPanel, sort, sound, speakerMute, speakerPhone, speedMonitoring, speed, sportsBike, sportsSkis, sportsSoccer, sportsTennis, stadiumFlag, stakeholder, star, steps, stethoscope, stockTogether, stopAlt, stop, supportDrawer, support, survey, swipeLeft, swipeRight, swipe, `switch`, sync, tabletData, tabletWireless, tablet, tag, talking, targetGoal, taxes, teamLeader, techLaptop, technology, telematicsCar, teletype, temperature, template, textToSpeech, theme, thermostatTech, thumbsDown, thumbsUp, ticket, tiles, tilt, timer, tireBlowout, tools, topBox, totalMobileProtection, towTruck, tradingDeck, trafficLight, traffic, trailers, training, transportation, trash, travelKeys, travelPass, tripPlanner, trumpet, turnOnOff, tvContent, tv, twitter, undo, unification, unlimitedPlan, upArrow, upCaret, uplink, upload, urlTransparency, userGuides1, userGuides2, userRegistration, userSettings, utilityGridManagement, vibration, videoOnTablet, video, virtualReality, visibility, voiceHd, voiceMail, volume, volunteer, warning, waterResistant, waterUtility, wearable, weather, webinar, weights, whiteboard, winchService, wirelessVending, wirelessVideoSurveillance, yield, youtube, zoomIn, zoomOut ] } diff --git a/VDSSample/Supporting Files/Resources/VDSIcons.bundle/Assets.car b/VDSSample/Supporting Files/Resources/VDSIcons.bundle/Assets.car index d1e163ef701bbaaf4656499cdc7a1d0159b3b832..11808160813fa33515e581d565f58e874ae36329 100644 GIT binary patch delta 875025 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%0Ap^{XCmK5#vzSG~?X)5&3lamnR(}2H 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 H&`7;Pjqd%PeFT}hs`PWun}%>zv^u;0+! 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%0A>SDvB^)S?{`7Af`v<9AeU1 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