From 649abb1bdb21b9d321fa73431ad5477ee032f893 Mon Sep 17 00:00:00 2001 From: Vasavi Kanamarlapudi Date: Mon, 24 Jun 2024 19:57:58 +0530 Subject: [PATCH 01/12] Digital ACT-191 ONEAPP-9311 story: added new controller for Input Stepper --- VDSSample.xcodeproj/project.pbxproj | 4 ++++ .../InputStepperViewController.swift | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 VDSSample/ViewControllers/InputStepperViewController.swift diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index 7486d35..e973925 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -32,6 +32,7 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ + 180636CB2C29B12B00C92D86 /* InputStepperViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 180636CA2C29B12B00C92D86 /* InputStepperViewController.swift */; }; 1808BEBE2BA4479500129230 /* CarouselScrollbarViewConttroller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1808BEBD2BA4479500129230 /* CarouselScrollbarViewConttroller.swift */; }; 1832AC5B2BA1347B008AE476 /* BreadcrumbsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1832AC5A2BA1347B008AE476 /* BreadcrumbsViewController.swift */; }; 186D13CD2BBA990800986B53 /* DropdownSelectViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 186D13CC2BBA990800986B53 /* DropdownSelectViewController.swift */; }; @@ -129,6 +130,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 180636CA2C29B12B00C92D86 /* InputStepperViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InputStepperViewController.swift; sourceTree = ""; }; 1808BEBD2BA4479500129230 /* CarouselScrollbarViewConttroller.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarouselScrollbarViewConttroller.swift; sourceTree = ""; }; 1832AC5A2BA1347B008AE476 /* BreadcrumbsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BreadcrumbsViewController.swift; sourceTree = ""; }; 186D13CC2BBA990800986B53 /* DropdownSelectViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DropdownSelectViewController.swift; sourceTree = ""; }; @@ -335,6 +337,7 @@ EA1758452BC8893700A5C0D9 /* DatePickerViewController.swift */, 186D13CC2BBA990800986B53 /* DropdownSelectViewController.swift */, EA985C00296CC21C00F2FF2E /* IconViewController.swift */, + 180636CA2C29B12B00C92D86 /* InputStepperViewController.swift */, EAA5EEAC28EB6924003B3210 /* InputFieldViewController.swift */, EAB1D2D328AC409F00DAE764 /* LabelViewController.swift */, 44604AD829CE1CF900E62B51 /* LineViewController.swift */, @@ -531,6 +534,7 @@ EAB2376C29E9E74900AABE9A /* TrailingTooltipLabelViewController.swift in Sources */, EAB1D2C928AAAA1D00DAE764 /* BaseViewController.swift in Sources */, EA1758462BC8893700A5C0D9 /* DatePickerViewController.swift in Sources */, + 180636CB2C29B12B00C92D86 /* InputStepperViewController.swift in Sources */, EAD062AD2A3B86950015965D /* BadgeIndicatorViewController.swift in Sources */, EA5E305C295111050082B959 /* TileletViewController.swift in Sources */, EAD062A32A3913920015965D /* DropShawdowViewController.swift in Sources */, diff --git a/VDSSample/ViewControllers/InputStepperViewController.swift b/VDSSample/ViewControllers/InputStepperViewController.swift new file mode 100644 index 0000000..64e79a8 --- /dev/null +++ b/VDSSample/ViewControllers/InputStepperViewController.swift @@ -0,0 +1,19 @@ +// +// InputStepperViewController.swift +// VDSSample +// +// Created by Kanamarlapudi, Vasavi on 24/06/24. +// + +import Foundation +import UIKit +import VDS +import VDSCoreTokens +import Combine + +class InputStepperViewController: BaseViewController { + + override func viewDidLoad() { + super.viewDidLoad() + } +} From ed6344a9a4b43ae0575a0c6a92d247c83caa98b6 Mon Sep 17 00:00:00 2001 From: Vasavi Kanamarlapudi Date: Fri, 12 Jul 2024 13:45:46 +0530 Subject: [PATCH 02/12] Digital ACT-191 ONEAPP-9311 story: setup form to pass values to stepper --- .../InputStepperViewController.swift | 151 +++++++++++++++++- .../ViewControllers/MenuViewController.swift | 1 + 2 files changed, 151 insertions(+), 1 deletion(-) diff --git a/VDSSample/ViewControllers/InputStepperViewController.swift b/VDSSample/ViewControllers/InputStepperViewController.swift index 64e79a8..06ad839 100644 --- a/VDSSample/ViewControllers/InputStepperViewController.swift +++ b/VDSSample/ViewControllers/InputStepperViewController.swift @@ -11,9 +11,158 @@ import VDS import VDSCoreTokens import Combine -class InputStepperViewController: BaseViewController { +class InputStepperViewController: BaseViewController { + + var controlWidthTextField = NumericField() + var defaultValueField = NumericField() + var maxValueTextField = NumericField() + var minValueTextField = NumericField() + var trailingTextField = TextField() + + var widthTextField = NumericField() + var disabledSwitch = Toggle() + var readOnlySwitch = Toggle() + var requiredSwitch = Toggle() + var labelTextField = TextField() + var showErrorSwitch = Toggle() + var errorTextField = TextField() + var helperTextField = TextField() + var tooltipTitleTextField = TextField() + var tooltipContentTextField = TextField() + + lazy var controlwidthPickerSelectorView = { + PickerSelectorView(title: "", picker: self.picker, items: InputStepper.controlWidth.allCases) + } + + lazy var helperTextPlacementPickerSelectorView = { + PickerSelectorView(title: "", picker: self.picker, items: InputStepper.HelperTextPlacement.allCases) + }() + override func viewDidLoad() { super.viewDidLoad() + addContentTopView(view: component) + setupPicker() + setupModel() + } + + override func setupForm(){ + super.setupForm() + + addFormRow(label: "Surface", view: surfacePickerSelectorView) + addFormRow(label: "Control Width", view: controlWidthTextField) + addFormRow(label: "Default Value", view: defaultValueField) + addFormRow(label: "Max Value", view: maxValueTextField) + addFormRow(label: "Min Value", view: minValueTextField) + addFormRow(label: "Trailing Text", view: trailingTextField) + + addFormRow(label: "Width", view: widthTextField) + addFormRow(label: "Disabled", view: disabledSwitch) + addFormRow(label: "Read Only", view: readOnlySwitch) + addFormRow(label: "Required", view: requiredSwitch) + addFormRow(label: "Label Text", view: labelTextField) + addFormRow(label: "Error", view: showErrorSwitch) + addFormRow(label: "Error Text", view: errorTextField) + addFormRow(label: "Helper Text Placement", view: helperTextPlacementPickerSelectorView) + addFormRow(label: "Helper Text", view: helperTextField) + addFormRow(label: "Tooltip Title", view: tooltipTitleTextField) + addFormRow(label: "Tooltip Content", view: tooltipContentTextField) + + requiredSwitch.onChange = { [weak self] sender in + self?.component.isRequired = sender.isOn + } + + showErrorSwitch.onChange = { [weak self] sender in + guard let self else { return } + self.component.showError = sender.isOn + if self.component.showError != sender.isOn { + self.showErrorSwitch.isOn = self.component.showError + } + } + + disabledSwitch.onChange = { [weak self] sender in + self?.component.isEnabled = !sender.isOn + } + + readOnlySwitch.onChange = { [weak self] sender in + self?.component.isReadOnly = sender.isOn + } + + labelTextField + .textPublisher + .sink { [weak self] text in + self?.component.labelText = text + }.store(in: &subscribers) + + helperTextField + .textPublisher + .sink { [weak self] text in + self?.component.helperText = text + }.store(in: &subscribers) + + errorTextField + .textPublisher + .sink { [weak self] text in + 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 + self?.updateTooltip() + }.store(in: &subscribers) + + tooltipContentTextField + .textPublisher + .sink { [weak self] text in + self?.updateTooltip() + }.store(in: &subscribers) + } + + func updateTooltip() { + let title = tooltipTitleTextField.text ?? "" + let content = tooltipContentTextField.text ?? "" + + component.tooltipModel = !title.isEmpty || !content.isEmpty ? .init(title: title, + content: content) : nil + } + + //Picker + func setupPicker(){ + surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.surface = item + self?.contentTopView.backgroundColor = item.color + } + + helperTextPlacementPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.helperTextPlacement = item + } + } + + func setupModel() { + component.labelText = "Quantity" + component.helperText = "Add up to 99 lines." + component.errorText = "You must choose a number of lines before advancing to the next step." + component.defaultValue = 2 + component.trailingText = "lines" + + +// component.onChange = { component in +// if let text = component.value { +// print("text entry: \(text)") +// } else { +// print("text entry: null") +// } +// } + + //setup UI + surfacePickerSelectorView.text = component.surface.rawValue + helperTextPlacementPickerSelectorView.text = component.helperTextPlacement.rawValue } } diff --git a/VDSSample/ViewControllers/MenuViewController.swift b/VDSSample/ViewControllers/MenuViewController.swift index 4ce88ab..ff15e16 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -83,6 +83,7 @@ class MenuViewController: UITableViewController, TooltipLaunchable { MenuComponent(title: "DropdownSelect", completed: true, viewController: DropdownSelectViewController.self), MenuComponent(title: "Icon", completed: true, viewController: IconViewController.self), MenuComponent(title: "InputField", completed: true, viewController: InputFieldViewController.self), + MenuComponent(title: "InputStepper", completed: false, viewController: InputStepperViewController.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), From 146ba03ab8e5e9a5cc7655bfb1363b431d2bb806 Mon Sep 17 00:00:00 2001 From: Vasavi Kanamarlapudi Date: Mon, 15 Jul 2024 14:58:24 +0530 Subject: [PATCH 03/12] Digital ACT-191 ONEAPP-9311 story: Added size to form which shows large and small values --- .../InputStepperViewController.swift | 49 +++++++++++-------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/VDSSample/ViewControllers/InputStepperViewController.swift b/VDSSample/ViewControllers/InputStepperViewController.swift index 06ad839..de1fba9 100644 --- a/VDSSample/ViewControllers/InputStepperViewController.swift +++ b/VDSSample/ViewControllers/InputStepperViewController.swift @@ -13,7 +13,7 @@ import Combine class InputStepperViewController: BaseViewController { - var controlWidthTextField = NumericField() + var controlWidthTextField = TextField() var defaultValueField = NumericField() var maxValueTextField = NumericField() var minValueTextField = NumericField() @@ -30,14 +30,14 @@ class InputStepperViewController: BaseViewController { var tooltipTitleTextField = TextField() var tooltipContentTextField = TextField() - lazy var controlwidthPickerSelectorView = { - PickerSelectorView(title: "", picker: self.picker, items: InputStepper.controlWidth.allCases) - } - lazy var helperTextPlacementPickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, items: InputStepper.HelperTextPlacement.allCases) }() + lazy var sizePickerSelectorView = { + PickerSelectorView(title: "", picker: self.picker, items: InputStepper.Size.allCases) + }() + override func viewDidLoad() { super.viewDidLoad() @@ -55,6 +55,7 @@ class InputStepperViewController: BaseViewController { addFormRow(label: "Max Value", view: maxValueTextField) addFormRow(label: "Min Value", view: minValueTextField) addFormRow(label: "Trailing Text", view: trailingTextField) + addFormRow(label: "Size", view: sizePickerSelectorView) addFormRow(label: "Width", view: widthTextField) addFormRow(label: "Disabled", view: disabledSwitch) @@ -67,7 +68,7 @@ class InputStepperViewController: BaseViewController { addFormRow(label: "Helper Text", view: helperTextField) addFormRow(label: "Tooltip Title", view: tooltipTitleTextField) addFormRow(label: "Tooltip Content", view: tooltipContentTextField) - + requiredSwitch.onChange = { [weak self] sender in self?.component.isRequired = sender.isOn } @@ -106,11 +107,11 @@ class InputStepperViewController: BaseViewController { self?.component.errorText = text }.store(in: &subscribers) -// widthTextField -// .numberPublisher -// .sink { [weak self] number in -// self?.component.width = number?.cgFloatValue -// }.store(in: &subscribers) + widthTextField + .numberPublisher + .sink { [weak self] number in + self?.component.width = number?.cgFloatValue + }.store(in: &subscribers) tooltipTitleTextField .textPublisher @@ -143,23 +144,29 @@ class InputStepperViewController: BaseViewController { helperTextPlacementPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.helperTextPlacement = item } + + sizePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.size = item + } } func setupModel() { component.labelText = "Quantity" - component.helperText = "Add up to 99 lines." + component.helperText = "Add up to max lines." component.errorText = "You must choose a number of lines before advancing to the next step." component.defaultValue = 2 component.trailingText = "lines" - - -// component.onChange = { component in -// if let text = component.value { -// print("text entry: \(text)") -// } else { -// print("text entry: null") -// } -// } + component.controlWidth = "auto" + trailingTextField.text = component.trailingText + controlWidthTextField.text = component.controlWidth + errorTextField.text = component.errorText + helperTextField.text = component.helperText + labelTextField.text = component.labelText + defaultValueField.text = String(component.defaultValue) + minValueTextField.text = String(component.minValue ?? 0) + maxValueTextField.text = String(component.maxValue ?? 99) + component.size = .large + sizePickerSelectorView.text = "large" //setup UI surfacePickerSelectorView.text = component.surface.rawValue From d3de7775b9414edf38868e62f62a3e09f013b8cd Mon Sep 17 00:00:00 2001 From: Vasavi Kanamarlapudi Date: Mon, 15 Jul 2024 14:59:15 +0530 Subject: [PATCH 04/12] Digital ACT-191 ONEAPP-9311 story: updated form with basic data and updating data if changes --- .../InputStepperViewController.swift | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/VDSSample/ViewControllers/InputStepperViewController.swift b/VDSSample/ViewControllers/InputStepperViewController.swift index de1fba9..b64ac5b 100644 --- a/VDSSample/ViewControllers/InputStepperViewController.swift +++ b/VDSSample/ViewControllers/InputStepperViewController.swift @@ -68,6 +68,36 @@ class InputStepperViewController: BaseViewController { addFormRow(label: "Helper Text", view: helperTextField) addFormRow(label: "Tooltip Title", view: tooltipTitleTextField) addFormRow(label: "Tooltip Content", view: tooltipContentTextField) + + widthTextField + .textPublisher + .sink { [weak self] text in + self?.component.controlWidth = text + }.store(in: &subscribers) + + defaultValueField + .numberPublisher + .sink { [weak self] number in + self?.component.defaultValue = number?.intValue ?? 0 + }.store(in: &subscribers) + + maxValueTextField + .numberPublisher + .sink { [weak self] number in + self?.component.maxValue = number?.intValue + }.store(in: &subscribers) + + minValueTextField + .numberPublisher + .sink { [weak self] number in + self?.component.minValue = number?.intValue + }.store(in: &subscribers) + + trailingTextField + .textPublisher + .sink { [weak self] text in + self?.component.errorText = text + }.store(in: &subscribers) requiredSwitch.onChange = { [weak self] sender in self?.component.isRequired = sender.isOn From 170d902a1e8b65bcfc769a788985471acc2f5a7b Mon Sep 17 00:00:00 2001 From: Vasavi Kanamarlapudi Date: Wed, 24 Jul 2024 20:41:13 +0530 Subject: [PATCH 05/12] Digital ACT-191 ONEAPP-9311 story: control width can be set to auto (default) or value (pixel) --- VDSSample/ViewControllers/InputStepperViewController.swift | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/VDSSample/ViewControllers/InputStepperViewController.swift b/VDSSample/ViewControllers/InputStepperViewController.swift index b64ac5b..cc70e1d 100644 --- a/VDSSample/ViewControllers/InputStepperViewController.swift +++ b/VDSSample/ViewControllers/InputStepperViewController.swift @@ -69,7 +69,7 @@ class InputStepperViewController: BaseViewController { addFormRow(label: "Tooltip Title", view: tooltipTitleTextField) addFormRow(label: "Tooltip Content", view: tooltipContentTextField) - widthTextField + controlWidthTextField .textPublisher .sink { [weak self] text in self?.component.controlWidth = text @@ -96,9 +96,10 @@ class InputStepperViewController: BaseViewController { trailingTextField .textPublisher .sink { [weak self] text in - self?.component.errorText = text + self?.component.trailingText = text }.store(in: &subscribers) + requiredSwitch.onChange = { [weak self] sender in self?.component.isRequired = sender.isOn } From 08306101084189d0b426433874293ce47a7c0221 Mon Sep 17 00:00:00 2001 From: Vasavi Kanamarlapudi Date: Fri, 26 Jul 2024 20:49:36 +0530 Subject: [PATCH 06/12] Digital ACT-191 ONEAPP-9311 story: parent container width, controlWidth of input stepper can be set to value - percentage --- .../InputStepperViewController.swift | 43 ++++++++++++++++--- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/VDSSample/ViewControllers/InputStepperViewController.swift b/VDSSample/ViewControllers/InputStepperViewController.swift index cc70e1d..f252636 100644 --- a/VDSSample/ViewControllers/InputStepperViewController.swift +++ b/VDSSample/ViewControllers/InputStepperViewController.swift @@ -14,12 +14,14 @@ import Combine class InputStepperViewController: BaseViewController { var controlWidthTextField = TextField() + var controlWidthPercentageTextField = TextField() var defaultValueField = NumericField() var maxValueTextField = NumericField() var minValueTextField = NumericField() var trailingTextField = TextField() var widthTextField = NumericField() + var widthPercentageTextField = NumericField() var disabledSwitch = Toggle() var readOnlySwitch = Toggle() var requiredSwitch = Toggle() @@ -51,13 +53,15 @@ class InputStepperViewController: BaseViewController { addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Control Width", view: controlWidthTextField) + addFormRow(label: "ControlWidth Percentage", view: controlWidthPercentageTextField) addFormRow(label: "Default Value", view: defaultValueField) addFormRow(label: "Max Value", view: maxValueTextField) addFormRow(label: "Min Value", view: minValueTextField) addFormRow(label: "Trailing Text", view: trailingTextField) addFormRow(label: "Size", view: sizePickerSelectorView) - addFormRow(label: "Width", view: widthTextField) + addFormRow(label: "Width Value", view: widthTextField) + addFormRow(label: "Width Percentage", view: widthPercentageTextField) addFormRow(label: "Disabled", view: disabledSwitch) addFormRow(label: "Read Only", view: readOnlySwitch) addFormRow(label: "Required", view: requiredSwitch) @@ -73,8 +77,21 @@ class InputStepperViewController: BaseViewController { .textPublisher .sink { [weak self] text in self?.component.controlWidth = text + self?.controlWidthPercentageTextField.text = "" + self?.component.controlWidthPercentage = nil }.store(in: &subscribers) + controlWidthPercentageTextField + .numberPublisher + .sink { [weak self] number in + if let number { + self?.component.controlWidthPercentage = number.cgFloatValue + self?.controlWidthTextField.text = "" + } else { + self?.component.controlWidthPercentage = nil + } + }.store(in: &subscribers) + defaultValueField .numberPublisher .sink { [weak self] number in @@ -141,8 +158,24 @@ class InputStepperViewController: BaseViewController { widthTextField .numberPublisher .sink { [weak self] number in - self?.component.width = number?.cgFloatValue - }.store(in: &subscribers) + if let number { + self?.component.width = number.cgFloatValue + self?.widthPercentageTextField.text = "" + } else { + self?.component.width = nil + } + }.store(in: &subscribers) + + widthPercentageTextField + .numberPublisher + .sink { [weak self] number in + if let number { + self?.component.widthPercentage = number.cgFloatValue + self?.widthTextField.text = "" + } else { + self?.component.widthPercentage = nil + } + }.store(in: &subscribers) tooltipTitleTextField .textPublisher @@ -185,8 +218,8 @@ class InputStepperViewController: BaseViewController { component.labelText = "Quantity" component.helperText = "Add up to max lines." component.errorText = "You must choose a number of lines before advancing to the next step." - component.defaultValue = 2 - component.trailingText = "lines" + component.defaultValue = 88 + component.trailingText = "" component.controlWidth = "auto" trailingTextField.text = component.trailingText controlWidthTextField.text = component.controlWidth From 81f29f3558c151a3a9c58d61263b1ebc3bb8214c Mon Sep 17 00:00:00 2001 From: Vasavi Kanamarlapudi Date: Mon, 29 Jul 2024 16:54:09 +0530 Subject: [PATCH 07/12] Digital ACT-191 ONEAPP-9311 story: minor changes --- VDSSample/ViewControllers/InputStepperViewController.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/VDSSample/ViewControllers/InputStepperViewController.swift b/VDSSample/ViewControllers/InputStepperViewController.swift index f252636..3090679 100644 --- a/VDSSample/ViewControllers/InputStepperViewController.swift +++ b/VDSSample/ViewControllers/InputStepperViewController.swift @@ -84,7 +84,7 @@ class InputStepperViewController: BaseViewController { controlWidthPercentageTextField .numberPublisher .sink { [weak self] number in - if let number { + if let number, number.intValue > 10 { self?.component.controlWidthPercentage = number.cgFloatValue self?.controlWidthTextField.text = "" } else { @@ -169,7 +169,7 @@ class InputStepperViewController: BaseViewController { widthPercentageTextField .numberPublisher .sink { [weak self] number in - if let number { + if let number, number.intValue > 10 { self?.component.widthPercentage = number.cgFloatValue self?.widthTextField.text = "" } else { @@ -218,7 +218,7 @@ class InputStepperViewController: BaseViewController { component.labelText = "Quantity" component.helperText = "Add up to max lines." component.errorText = "You must choose a number of lines before advancing to the next step." - component.defaultValue = 88 + component.defaultValue = 8 component.trailingText = "" component.controlWidth = "auto" trailingTextField.text = component.trailingText From a85a67521442a41b4bfe6f7e44ef2390fac92cab Mon Sep 17 00:00:00 2001 From: Vasavi Kanamarlapudi Date: Tue, 30 Jul 2024 14:55:48 +0530 Subject: [PATCH 08/12] Digital ACT-191 ONEAPP-9311 story: checking type for defaultValue and using it. --- VDSSample/ViewControllers/InputStepperViewController.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/VDSSample/ViewControllers/InputStepperViewController.swift b/VDSSample/ViewControllers/InputStepperViewController.swift index 3090679..3bad6bb 100644 --- a/VDSSample/ViewControllers/InputStepperViewController.swift +++ b/VDSSample/ViewControllers/InputStepperViewController.swift @@ -226,7 +226,9 @@ class InputStepperViewController: BaseViewController { errorTextField.text = component.errorText helperTextField.text = component.helperText labelTextField.text = component.labelText - defaultValueField.text = String(component.defaultValue) + if let defaultVal = component.defaultValue as? Int { + defaultValueField.text = String(defaultVal) + } minValueTextField.text = String(component.minValue ?? 0) maxValueTextField.text = String(component.maxValue ?? 99) component.size = .large From 4399eef2d6b2b10535cb7b18e50e45f762ff381d Mon Sep 17 00:00:00 2001 From: Vasavi Kanamarlapudi Date: Wed, 31 Jul 2024 14:53:43 +0530 Subject: [PATCH 09/12] Digital ACT-191 ONEAPP-9311 story: refactored code and resolved constraint issues --- .../InputStepperViewController.swift | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/VDSSample/ViewControllers/InputStepperViewController.swift b/VDSSample/ViewControllers/InputStepperViewController.swift index 3bad6bb..2201875 100644 --- a/VDSSample/ViewControllers/InputStepperViewController.swift +++ b/VDSSample/ViewControllers/InputStepperViewController.swift @@ -72,23 +72,26 @@ class InputStepperViewController: BaseViewController { addFormRow(label: "Helper Text", view: helperTextField) addFormRow(label: "Tooltip Title", view: tooltipTitleTextField) addFormRow(label: "Tooltip Content", view: tooltipContentTextField) - + controlWidthTextField - .textPublisher - .sink { [weak self] text in - self?.component.controlWidth = text - self?.controlWidthPercentageTextField.text = "" - self?.component.controlWidthPercentage = nil + .numberPublisher + .sink { [weak self] number in + if let number { + self?.component.controlWidth = .value(number.cgFloatValue) + self?.controlWidthPercentageTextField.text = "" + } else { + self?.component.controlWidth = nil + } }.store(in: &subscribers) controlWidthPercentageTextField .numberPublisher .sink { [weak self] number in - if let number, number.intValue > 10 { - self?.component.controlWidthPercentage = number.cgFloatValue + if let number { + self?.component.controlWidth = .percentage(number.cgFloatValue) self?.controlWidthTextField.text = "" } else { - self?.component.controlWidthPercentage = nil + self?.component.controlWidth = nil } }.store(in: &subscribers) @@ -159,6 +162,7 @@ class InputStepperViewController: BaseViewController { .numberPublisher .sink { [weak self] number in if let number { + self?.component.widthPercentage = nil self?.component.width = number.cgFloatValue self?.widthPercentageTextField.text = "" } else { @@ -170,6 +174,7 @@ class InputStepperViewController: BaseViewController { .numberPublisher .sink { [weak self] number in if let number, number.intValue > 10 { + self?.component.width = nil self?.component.widthPercentage = number.cgFloatValue self?.widthTextField.text = "" } else { @@ -220,9 +225,8 @@ class InputStepperViewController: BaseViewController { component.errorText = "You must choose a number of lines before advancing to the next step." component.defaultValue = 8 component.trailingText = "" - component.controlWidth = "auto" trailingTextField.text = component.trailingText - controlWidthTextField.text = component.controlWidth + controlWidthTextField.text = "" errorTextField.text = component.errorText helperTextField.text = component.helperText labelTextField.text = component.labelText From 0a10dbceb4311e3dffe4b255a627d2b486598d2d Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 2 Aug 2024 16:49:11 -0500 Subject: [PATCH 10/12] refactored Signed-off-by: Matt Bruce --- .../InputStepperViewController.swift | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/VDSSample/ViewControllers/InputStepperViewController.swift b/VDSSample/ViewControllers/InputStepperViewController.swift index 2201875..559125e 100644 --- a/VDSSample/ViewControllers/InputStepperViewController.swift +++ b/VDSSample/ViewControllers/InputStepperViewController.swift @@ -104,13 +104,15 @@ class InputStepperViewController: BaseViewController { maxValueTextField .numberPublisher .sink { [weak self] number in - self?.component.maxValue = number?.intValue + guard let number else { return } + self?.component.maxValue = number.intValue }.store(in: &subscribers) minValueTextField .numberPublisher .sink { [weak self] number in - self?.component.minValue = number?.intValue + guard let number else { return } + self?.component.minValue = number.intValue }.store(in: &subscribers) trailingTextField @@ -223,18 +225,26 @@ class InputStepperViewController: BaseViewController { component.labelText = "Quantity" component.helperText = "Add up to max lines." component.errorText = "You must choose a number of lines before advancing to the next step." - component.defaultValue = 8 + component.defaultValue = nil component.trailingText = "" + component.onChange = { component in + if let text = component.value { + print("inputStepper Change: \(text)") + } else { + print("inputStepper Change: check code") + } + } + trailingTextField.text = component.trailingText controlWidthTextField.text = "" errorTextField.text = component.errorText helperTextField.text = component.helperText labelTextField.text = component.labelText - if let defaultVal = component.defaultValue as? Int { + if let defaultVal = component.defaultValue { defaultValueField.text = String(defaultVal) } - minValueTextField.text = String(component.minValue ?? 0) - maxValueTextField.text = String(component.maxValue ?? 99) + minValueTextField.text = String(component.minValue) + maxValueTextField.text = String(component.maxValue) component.size = .large sizePickerSelectorView.text = "large" From 4a6e4b1cdda69dfff2cf242465ece7398bb8568c Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 8 Aug 2024 11:33:37 -0500 Subject: [PATCH 11/12] fixed issues with tilecontainer base change Signed-off-by: Matt Bruce --- VDSSample/Classes/Helper.swift | 11 ++++++++++- .../ViewControllers/TileContainerViewController.swift | 8 +++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/VDSSample/Classes/Helper.swift b/VDSSample/Classes/Helper.swift index 058ebd0..7fefee7 100644 --- a/VDSSample/Classes/Helper.swift +++ b/VDSSample/Classes/Helper.swift @@ -60,7 +60,16 @@ extension Changeable { } } -extension Clickable { +extension Clickable where Self: UIControl { + func onClickActionPublisher(_ text: String, label: UILabel) { + onClick = { _ in + let handler = labelPublisherCompletionHandler() + handler(text, label) + } + } +} + +extension Clickable where Self: UIView { func onClickActionPublisher(_ text: String, label: UILabel) { onClick = { _ in let handler = labelPublisherCompletionHandler() diff --git a/VDSSample/ViewControllers/TileContainerViewController.swift b/VDSSample/ViewControllers/TileContainerViewController.swift index b32e7d5..4edbace 100644 --- a/VDSSample/ViewControllers/TileContainerViewController.swift +++ b/VDSSample/ViewControllers/TileContainerViewController.swift @@ -127,8 +127,9 @@ class TileContainerViewController: BaseViewController { topLabel.text = "Do you want to Register?" let topButton = Button() - topButton.setTitle("Register", for: .normal) - + topButton.text = "Register" + topButton.onClick = { c in print("clicked \(c.text!)") } + ///bottom let bottomView = View() bottomView.backgroundColor = .green @@ -137,7 +138,8 @@ class TileContainerViewController: BaseViewController { bottomLabel.text = "Forgot your info?" let bottomButton = Button() - bottomButton.setTitle("Forgot Password", for: .normal) + bottomButton.text = "Forgot Password" + bottomButton.onClick = { c in print("clicked \(c.text!)") } mainView.addSubview(topView) mainView.addSubview(bottomView) From 0f5226ea7681423d0e0c3a76b1c9e816ee3f9839 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Sat, 10 Aug 2024 10:14:29 -0500 Subject: [PATCH 12/12] enabled inputstepper 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 e193ca8..fea086d 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -84,7 +84,7 @@ class MenuViewController: UITableViewController, TooltipLaunchable { MenuComponent(title: "DropdownSelect", completed: true, viewController: DropdownSelectViewController.self), MenuComponent(title: "Icon", completed: true, viewController: IconViewController.self), MenuComponent(title: "InputField", completed: true, viewController: InputFieldViewController.self), - MenuComponent(title: "InputStepper", completed: false, viewController: InputStepperViewController.self), + MenuComponent(title: "InputStepper", completed: true, viewController: InputStepperViewController.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),