From de0ca8ab862dafcc9707f998b53f7e1a02620dfd Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 8 May 2024 11:04:11 -0500 Subject: [PATCH 1/5] 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 55a1456..3d37249 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -692,7 +692,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 61; + CURRENT_PROJECT_VERSION = 62; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = FCMA4QKS77; GENERATE_INFOPLIST_FILE = YES; @@ -727,7 +727,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 61; + CURRENT_PROJECT_VERSION = 62; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = FCMA4QKS77; GENERATE_INFOPLIST_FILE = YES; From b069fff09fe94def6074f090186f76cff554ce5b Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 9 May 2024 14:33:45 -0500 Subject: [PATCH 2/5] added more areas for input Signed-off-by: Matt Bruce --- .../InputFieldViewController.swift | 82 ++++++++++++++----- 1 file changed, 63 insertions(+), 19 deletions(-) diff --git a/VDSSample/ViewControllers/InputFieldViewController.swift b/VDSSample/ViewControllers/InputFieldViewController.swift index 71fbf7e..addadae 100644 --- a/VDSSample/ViewControllers/InputFieldViewController.swift +++ b/VDSSample/ViewControllers/InputFieldViewController.swift @@ -62,6 +62,14 @@ class InputFieldViewController: BaseViewController { $0.isHidden = true } + //inlineAction + var inlineActionTextField = TextField() + lazy var inlineActionSection = FormSection().with { + $0.title = "inlineAction Settings" + $0.addFormRow(label: "Action Text", view: inlineActionTextField) + $0.isHidden = true + } + override func viewDidLoad() { super.viewDidLoad() addContentTopView(view: component) @@ -71,23 +79,36 @@ class InputFieldViewController: BaseViewController { override func setupForm(){ super.setupForm() - addFormRow(label: "Disabled", view: disabledSwitch) - addFormRow(label: "Required", view: requiredSwitch) - addFormRow(label: "Surface", view: surfacePickerSelectorView) - addFormRow(label: "Label Text", view: labelTextField) - addFormRow(label: "Helper Text Placement", view: helperTextPlacementPickerSelectorView) - addFormRow(label: "Helper Text", view: helperTextField) - addFormRow(label: "Error", view: showErrorSwitch) - addFormRow(label: "Error Text", view: errorTextField) - addFormRow(label: "Success", view: showSuccessSwitch) - addFormRow(label: "Success Text", view: successTextField) - addFormRow(label: "Width", view: widthTextField) - addFormRow(label: "ToolTip Title", view: tooltipTitleTextField) - addFormRow(label: "ToolTip Content", view: tooltipContentTextField) - addFormRow(label: "Field Type", view: inputTypePickerSelectorView) + + let fieldType = FormSection().with { + $0.title = "Field Type Settings" + $0.addFormRow(label: "Field Type", view: inputTypePickerSelectorView) + } + + let general = FormSection().with { + $0.title = "\n\nGeneral Settings" + } + + general.addFormRow(label: "Disabled", view: disabledSwitch) + general.addFormRow(label: "Required", view: requiredSwitch) + general.addFormRow(label: "Surface", view: surfacePickerSelectorView) + general.addFormRow(label: "Label Text", view: labelTextField) + general.addFormRow(label: "Helper Text Placement", view: helperTextPlacementPickerSelectorView) + general.addFormRow(label: "Helper Text", view: helperTextField) + general.addFormRow(label: "Error", view: showErrorSwitch) + general.addFormRow(label: "Error Text", view: errorTextField) + general.addFormRow(label: "Success", view: showSuccessSwitch) + general.addFormRow(label: "Success Text", view: successTextField) + general.addFormRow(label: "Width", view: widthTextField) + general.addFormRow(label: "ToolTip Title", view: tooltipTitleTextField) + general.addFormRow(label: "ToolTip Content", view: tooltipContentTextField) + + append(section: fieldType) append(section: passwordSection) append(section: dateSection) + append(section: inlineActionSection) + append(section: general) requiredSwitch.onChange = { [weak self] sender in self?.component.isRequired = sender.isOn @@ -162,6 +183,21 @@ class InputFieldViewController: BaseViewController { .sink { [weak self] text in self?.component.showPasswordButtonText = text }.store(in: &subscribers) + + //inlineAction + inlineActionTextField + .textPublisher + .sink { [weak self] text in + if !text.isEmpty { + self?.component.actionTextLinkModel = .init(text: text, onClick: { inputField in + var value = inputField.value ?? "" + value = !value.isEmpty ? value : "nil" + self?.present(UIAlertController(title: "inlineAction", message: "Clicked and you get the value: \(value)", preferredStyle: .alert).with{ $0.addAction(.init(title: "OK", style: .default)) }, animated: true) + }) + } else { + self?.component.actionTextLinkModel = nil + } + }.store(in: &subscribers) } func setupModel() { @@ -171,7 +207,6 @@ class InputFieldViewController: BaseViewController { component.helperText = "For example: 123 Verizon St" component.errorText = "Enter a valid address." component.successText = "Good job entering a valid address!" - component.tooltipModel = .init(title: "Check the formatting of your address", content:"House/Building number then street name") component.onChange = { component in if let text = component.value { @@ -184,6 +219,7 @@ class InputFieldViewController: BaseViewController { //setup UI surfacePickerSelectorView.text = component.surface.rawValue helperTextPlacementPickerSelectorView.text = component.helperTextPlacement.rawValue + dateFormatPickerSelectorView.text = component.dateFormat.rawValue inputTypePickerSelectorView.text = component.fieldType.rawValue disabledSwitch.isOn = !component.isEnabled requiredSwitch.isOn = component.isRequired @@ -213,6 +249,7 @@ class InputFieldViewController: BaseViewController { inputTypePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.fieldType = item + self?.component.text = "" self?.updateFormSections() } @@ -231,7 +268,13 @@ class InputFieldViewController: BaseViewController { } func updateFormSections() { - [passwordSection, dateSection].forEach { $0.isHidden = true } + [passwordSection, dateSection, inlineActionSection].forEach { $0.isHidden = true } + //reset other fields + component.actionTextLinkModel = nil + component.tooltipModel = nil + tooltipTitleTextField.text = nil + tooltipContentTextField.text = nil + switch component.fieldType { case .text: break @@ -240,15 +283,16 @@ class InputFieldViewController: BaseViewController { break case .inlineAction: - break - + inlineActionTextField.text = nil + inlineActionSection.isHidden = false + case .password: passwordSection.isHidden = false case .creditCard: break - case .tel: + case .telephone: break case .date: From 363397e12f6830f4c7abf270d5b210cef09d3e40 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 10 May 2024 11:07:33 -0500 Subject: [PATCH 3/5] updated for components Signed-off-by: Matt Bruce --- .../DropdownSelectViewController.swift | 21 ++++++++++ .../InputFieldViewController.swift | 40 +++++++++++-------- 2 files changed, 45 insertions(+), 16 deletions(-) diff --git a/VDSSample/ViewControllers/DropdownSelectViewController.swift b/VDSSample/ViewControllers/DropdownSelectViewController.swift index 5d03dbe..6fcc338 100644 --- a/VDSSample/ViewControllers/DropdownSelectViewController.swift +++ b/VDSSample/ViewControllers/DropdownSelectViewController.swift @@ -10,6 +10,12 @@ import VDS class DropdownSelectViewController: BaseViewController { + lazy var helperTextPlacementPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: InputField.HelperTextPlacement.allCases) + }() + var disabledSwitch = Toggle() var requiredSwitch = Toggle() var labelTextField = TextField() @@ -21,6 +27,7 @@ class DropdownSelectViewController: BaseViewController { var errorSwitch = Toggle() var tooltipTitleTextField = TextField() var tooltipContentTextField = TextField() + var widthTextField = NumericField() var optionsSwitch = Toggle() var moreOptions: [DropdownSelect.DropdownOptionModel] = [ .init(text: "Alabama"), @@ -60,12 +67,14 @@ class DropdownSelectViewController: BaseViewController { addFormRow(label: "Disabled", view: disabledSwitch) addFormRow(label: "Required", view: requiredSwitch) addFormRow(label: "Label Text", view: labelTextField) + addFormRow(label: "Helper Text Placement", view: helperTextPlacementPickerSelectorView) addFormRow(label: "Helper Text", view: helperTextField) addFormRow(label: "Inline Label", view: .makeWrapper(for: inlineLabelSwitch)) addFormRow(label: "Readonly", view: readonlySwitch) addFormRow(label: "Transparent Background", view: transparentBgSwitch) addFormRow(label: "Error", view: .makeWrapper(for: errorSwitch)) addFormRow(label: "Error Text", view: errorTextField) + addFormRow(label: "Width", view: widthTextField) addFormRow(label: "ToolTip Title", view: tooltipTitleTextField) addFormRow(label: "ToolTip Content", view: tooltipContentTextField) addFormRow(label: "More Options", view: optionsSwitch) @@ -119,6 +128,12 @@ class DropdownSelectViewController: BaseViewController { self?.component.errorText = text }.store(in: &subscribers) + widthTextField + .numberPublisher + .sink { [weak self] number in + self?.component.width = number?.cgFloatValue + }.store(in: &subscribers) + tooltipTitleTextField .textPublisher .sink { [weak self] text in @@ -161,6 +176,7 @@ class DropdownSelectViewController: BaseViewController { requiredSwitch.isOn = component.isRequired surfacePickerSelectorView.text = component.surface.rawValue labelTextField.text = component.labelText + helperTextPlacementPickerSelectorView.text = component.helperTextPlacement.rawValue helperTextField.text = component.helperText readonlySwitch.isOn = false transparentBgSwitch.isOn = false @@ -176,6 +192,11 @@ class DropdownSelectViewController: BaseViewController { self?.component.surface = item self?.contentTopView.backgroundColor = item.color } + + helperTextPlacementPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.helperTextPlacement = item + } + } func updateTooltip() { diff --git a/VDSSample/ViewControllers/InputFieldViewController.swift b/VDSSample/ViewControllers/InputFieldViewController.swift index addadae..d9c94af 100644 --- a/VDSSample/ViewControllers/InputFieldViewController.swift +++ b/VDSSample/ViewControllers/InputFieldViewController.swift @@ -70,6 +70,19 @@ class InputFieldViewController: BaseViewController { $0.isHidden = true } + //securityCode + lazy var cardTypePickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: InputField.CreditCardType.allCases) + }() + + lazy var securityCodeSection = FormSection().with { + $0.title = "Security Code Settings" + $0.addFormRow(label: "Card Type", view: cardTypePickerSelectorView) + $0.isHidden = true + } + override func viewDidLoad() { super.viewDidLoad() addContentTopView(view: component) @@ -108,6 +121,7 @@ class InputFieldViewController: BaseViewController { append(section: passwordSection) append(section: dateSection) append(section: inlineActionSection) + append(section: securityCodeSection) append(section: general) requiredSwitch.onChange = { [weak self] sender in @@ -257,6 +271,10 @@ class InputFieldViewController: BaseViewController { self?.component.dateFormat = item self?.updateFormSections() } + + cardTypePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.cardType = item + } } func updateTooltip() { @@ -268,20 +286,16 @@ class InputFieldViewController: BaseViewController { } func updateFormSections() { - [passwordSection, dateSection, inlineActionSection].forEach { $0.isHidden = true } + [passwordSection, dateSection, inlineActionSection, securityCodeSection].forEach { $0.isHidden = true } //reset other fields component.actionTextLinkModel = nil component.tooltipModel = nil + component.cardType = .generic tooltipTitleTextField.text = nil tooltipContentTextField.text = nil - + dateFormatPickerSelectorView.text = component.dateFormat.rawValue + cardTypePickerSelectorView.text = component.cardType.rawValue switch component.fieldType { - case .text: - break - - case .number: - break - case .inlineAction: inlineActionTextField.text = nil inlineActionSection.isHidden = false @@ -289,19 +303,13 @@ class InputFieldViewController: BaseViewController { case .password: passwordSection.isHidden = false - case .creditCard: - break - - case .telephone: - break - case .date: dateSection.isHidden = false case .securityCode: - break + securityCodeSection.isHidden = false - @unknown default: + default: break } } From beb64408beb98982b12a6cce6eeb1f7205b85ff8 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 10 May 2024 15:27:04 -0500 Subject: [PATCH 4/5] removed default Signed-off-by: Matt Bruce --- VDSSample/ViewControllers/InputFieldViewController.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/VDSSample/ViewControllers/InputFieldViewController.swift b/VDSSample/ViewControllers/InputFieldViewController.swift index d9c94af..9ca4875 100644 --- a/VDSSample/ViewControllers/InputFieldViewController.swift +++ b/VDSSample/ViewControllers/InputFieldViewController.swift @@ -216,7 +216,6 @@ class InputFieldViewController: BaseViewController { func setupModel() { component.fieldType = .text - component.width = 328 component.labelText = "Street Address" component.helperText = "For example: 123 Verizon St" component.errorText = "Enter a valid address." From 2f43f4cae560c8275fa55966b6f510fb32fb1e66 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 10 May 2024 17:04:16 -0500 Subject: [PATCH 5/5] updated controllers Signed-off-by: Matt Bruce --- VDSSample/ViewControllers/MenuViewController.swift | 2 +- VDSSample/ViewControllers/TextAreaViewController.swift | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/VDSSample/ViewControllers/MenuViewController.swift b/VDSSample/ViewControllers/MenuViewController.swift index c300171..78c0e97 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -80,7 +80,7 @@ class MenuViewController: UITableViewController, TooltipLaunchable { MenuComponent(title: "CheckboxGroup", completed: true, viewController: CheckboxGroupViewController.self), MenuComponent(title: "DropdownSelect", completed: true, viewController: DropdownSelectViewController.self), MenuComponent(title: "Icon", completed: true, viewController: IconViewController.self), - MenuComponent(title: "InputField", completed: false, viewController: InputFieldViewController.self), + MenuComponent(title: "InputField", completed: true, viewController: InputFieldViewController.self), MenuComponent(title: "Label", completed: true, viewController: LabelViewController.self), MenuComponent(title: "Line", completed: true, viewController: LineViewController.self), MenuComponent(title: "Loader", completed: true, viewController: LoaderViewController.self), diff --git a/VDSSample/ViewControllers/TextAreaViewController.swift b/VDSSample/ViewControllers/TextAreaViewController.swift index 22dc701..6559a2e 100644 --- a/VDSSample/ViewControllers/TextAreaViewController.swift +++ b/VDSSample/ViewControllers/TextAreaViewController.swift @@ -126,7 +126,6 @@ class TextAreaViewController: BaseViewController