diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index 6704630..f65a12b 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -59,6 +59,7 @@ EA89205128B68307006B9984 /* TextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89205028B68307006B9984 /* TextField.swift */; }; EA978EC2291AC62200ACC883 /* VDS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA978EC1291AC62200ACC883 /* VDS.framework */; }; EA978EC3291AC62200ACC883 /* VDS.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = EA978EC1291AC62200ACC883 /* VDS.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + EA985C01296CC21C00F2FF2E /* IconViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985C00296CC21C00F2FF2E /* IconViewController.swift */; }; EAA5EEAD28EB6924003B3210 /* TextEntryFieldViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAA5EEAC28EB6924003B3210 /* TextEntryFieldViewController.swift */; }; EAB1D2C928AAAA1D00DAE764 /* BaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D2C828AAAA1D00DAE764 /* BaseViewController.swift */; }; EAB1D2D428AC409F00DAE764 /* LabelViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D2D328AC409F00DAE764 /* LabelViewController.swift */; }; @@ -125,6 +126,7 @@ EA89204D28B67332006B9984 /* CheckBoxGroupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckBoxGroupViewController.swift; sourceTree = ""; }; 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 = ""; }; EAA5EEAC28EB6924003B3210 /* TextEntryFieldViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextEntryFieldViewController.swift; sourceTree = ""; }; EAB1D2C828AAAA1D00DAE764 /* BaseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseViewController.swift; sourceTree = ""; }; EAB1D2D328AC409F00DAE764 /* LabelViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelViewController.swift; sourceTree = ""; }; @@ -252,6 +254,7 @@ 5FC35BE828D5235A004EBEAC /* ButtonViewController.swift */, EA89204D28B67332006B9984 /* CheckBoxGroupViewController.swift */, EAF7F09B2899B92400B287F5 /* CheckboxViewController.swift */, + EA985C00296CC21C00F2FF2E /* IconViewController.swift */, EAB1D2D328AC409F00DAE764 /* LabelViewController.swift */, EA89201828B56DF5006B9984 /* RadioBoxGroupViewController.swift */, EAF7F11928A14A0E00B287F5 /* RadioButtonViewController.swift */, @@ -433,6 +436,7 @@ EA89204E28B67332006B9984 /* CheckBoxGroupViewController.swift in Sources */, EAA5EEAD28EB6924003B3210 /* TextEntryFieldViewController.swift in Sources */, EA89204928B66CE2006B9984 /* KeyboardFrameChangeListening.swift in Sources */, + EA985C01296CC21C00F2FF2E /* IconViewController.swift in Sources */, EAC9258029119FC400091998 /* TextLinkViewController.swift in Sources */, EAB1D2D428AC409F00DAE764 /* LabelViewController.swift in Sources */, EA89204B28B66CE2006B9984 /* ScrollViewKeyboardAvoider.swift in Sources */, diff --git a/VDSSample/ViewControllers/IconViewController.swift b/VDSSample/ViewControllers/IconViewController.swift new file mode 100644 index 0000000..a104368 --- /dev/null +++ b/VDSSample/ViewControllers/IconViewController.swift @@ -0,0 +1,105 @@ +// +// IconViewController.swift +// VDSSample +// +// Created by Matt Bruce on 1/9/23. +// + +import Foundation +import UIKit +import VDS +import Combine + +class IconViewController: BaseViewController { + + lazy var colorPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: IconColor.allCases) + }() + + lazy var categoryPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: IconCategory.allCases.sorted{ $0.rawValue < $1.rawValue }) + }() + + lazy var namePickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: []) + }() + + lazy var sizePickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: IconSize.allCases) + }() + + var icon = Icon() + + override func viewDidLoad() { + super.viewDidLoad() + addContentTopView(view: .makeWrapper(for: icon)) + setupForm() + setupPicker() + setupModel() + } + + func setupForm(){ + addFormRow(label: "Surface", view: surfacePickerSelectorView) + addFormRow(label: "Size", view: sizePickerSelectorView) + addFormRow(label: "Color", view: colorPickerSelectorView) + addFormRow(label: "Category", view: categoryPickerSelectorView) + addFormRow(label: "Name", view: namePickerSelectorView) + } + + func setupModel() { + let name = IconName.accessibility + icon.color = .black + icon.name = name + + //setup UI + surfacePickerSelectorView.text = icon.surface.rawValue + sizePickerSelectorView.text = icon.size.rawValue + colorPickerSelectorView.text = icon.color.rawValue + category = .accessibility + namePickerSelectorView.text = name.rawValue + } + + private var category: IconCategory = .accessibility { + didSet { + categoryPickerSelectorView.text = category.rawValue + let icons = category.icons.sorted{ $0.rawValue < $1.rawValue } + namePickerSelectorView.items = icons + if let first = icons.first { + namePickerSelectorView.text = first.rawValue + icon.name = first + } + } + } + + func setupPicker(){ + + surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.icon.surface = item + self?.contentTopView.backgroundColor = item.color + } + + categoryPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.category = item + } + + sizePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.icon.size = item + } + + colorPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.icon.color = item + } + + namePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.icon.name = item + } + } +} diff --git a/VDSSample/ViewControllers/MenuViewController.swift b/VDSSample/ViewControllers/MenuViewController.swift index d4333b0..def5b64 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -76,6 +76,7 @@ class MenuViewController: UITableViewController { MenuComponent(title: "ButtonGroup", completed: true, viewController: ButtonGroupViewController.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), MenuComponent(title: "Label", completed: true, viewController: LabelViewController.self), MenuComponent(title: "RadioBoxGroup", completed: true, viewController: RadioBoxGroupViewController.self), MenuComponent(title: "RadioButtonGroup", completed: true, viewController: RadioButtonViewController.self),