From 75575653df2eb72baa6f97706b8cbc08e34e2842 Mon Sep 17 00:00:00 2001 From: vasavk Date: Wed, 7 Feb 2024 13:16:25 +0530 Subject: [PATCH 1/9] story:ONEAPP-6315: badge indicator specs added to button Icon --- .../ButtonIconViewController.swift | 201 ++++++++++++++++++ 1 file changed, 201 insertions(+) diff --git a/VDSSample/ViewControllers/ButtonIconViewController.swift b/VDSSample/ViewControllers/ButtonIconViewController.swift index e055285..cfa5617 100644 --- a/VDSSample/ViewControllers/ButtonIconViewController.swift +++ b/VDSSample/ViewControllers/ButtonIconViewController.swift @@ -50,6 +50,74 @@ class ButtonIconViewController: BaseViewController { var floating = Toggle() var hideBorder = Toggle() var disabledSwitch = Toggle() + var selectableSwitch = Toggle() + var badgeIndicatorSwitch = Toggle() + + lazy var badgeIndicatorKindPickerSelectorView = { + PickerSelectorView(title: "simple", + picker: self.picker, + items: BadgeIndicator.Kind.allCases) + }() + + lazy var badgeIndicatorFillColorPickerSelectorView = { + PickerSelectorView(title: "red", + picker: self.picker, + items: BadgeIndicator.FillColor.allCases) + }() + + lazy var badgeIndicatorBorderColorPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: UIColor.VDSColor.allCases) + }() + + lazy var textSizePickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: BadgeIndicator.Size.allCases) + }() + + lazy var maxDigitsPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: BadgeIndicator.MaximumDigits.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) + }() + + lazy var badgeIndicatorDirectionPickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: ButtonIcon.ExpandDirection.allCases) + }() + + var numberedForm = FormSection().with { $0.title = "Numbered Kind"} + var dotForm = FormSection().with { $0.title = "Simple Kind"} + var badgeIndicatorForm = FormSection().with { $0.title = "Badge Indicator Configurations"} + + var badgeIndicatorHideBorderSwitch = Toggle() + var textField = NumericField() + var leadingCharacterTextField = TextField() + var trailingTextField = TextField() + var hideDotSwitch = Toggle() + var hideBorderSwitch = Toggle() + + var heightTextField = NumericField() + var widthTextField = NumericField() + var horizontalPaddingTextField = NumericField() + var verticalPaddingTextField = NumericField() + var dotSizeTextField = NumericField() + override func viewDidLoad() { super.viewDidLoad() @@ -71,9 +139,108 @@ class ButtonIconViewController: BaseViewController { addFormRow(label: "Fit To Icon", view: fitToIcon) addFormRow(label: "Custom Size", view: customSizeField) addFormRow(label: "Name", view: namePickerSelectorView) + addFormRow(label: "Selectable", view: selectableSwitch) +// addFormRow(label: "Selected Name", view: namePickerSelectorView) // TO DO addFormRow(label: "X Offset", view: centerX) addFormRow(label: "Y Offset", view: centerY) + addFormRow(label: "Show Badge Indicator", view: badgeIndicatorSwitch) + badgeIndicatorForm.addFormRow(label: "Kind", view: badgeIndicatorKindPickerSelectorView) + badgeIndicatorForm.addFormRow(label: "Height", view: heightTextField) + badgeIndicatorForm.addFormRow(label: "Width", view: widthTextField) + badgeIndicatorForm.addFormRow(label: "Horiztonal Padding", view: horizontalPaddingTextField) + badgeIndicatorForm.addFormRow(label: "Vertical Padding", view: verticalPaddingTextField) + badgeIndicatorForm.addFormRow(label: "Fill Color", view: badgeIndicatorFillColorPickerSelectorView) + badgeIndicatorForm.addFormRow(label: "Hide Border", view: badgeIndicatorHideBorderSwitch) + badgeIndicatorForm.addFormRow(label: "Border Light", view: borderColorLightPickerSelectorView) + badgeIndicatorForm.addFormRow(label: "Border Dark", view: borderColorDarkPickerSelectorView) + badgeIndicatorForm.addFormRow(label: "Size", view: textSizePickerSelectorView) + badgeIndicatorForm.addFormRow(label: "Expand Direction", view: badgeIndicatorDirectionPickerSelectorView) + + dotForm.addFormRow(label: "Hide Dot", view: hideDotSwitch) + dotForm.addFormRow(label: "Dot Size", view: dotSizeTextField) + numberedForm.addFormRow(label: "Leading Character", view: leadingCharacterTextField) + numberedForm.addFormRow(label: "Trailing Text", view: trailingTextField) + numberedForm.addFormRow(label: "Number", view: textField) + numberedForm.addFormRow(label: "Max Digits", view: maxDigitsPickerSelectorView) + + append(section: badgeIndicatorForm) + append(section: numberedForm) + append(section: dotForm) + + badgeIndicatorForm.isHidden = !self.badgeIndicatorSwitch.isOn + numberedForm.isHidden = !self.badgeIndicatorSwitch.isOn + dotForm.isHidden = !self.badgeIndicatorSwitch.isOn + + hideDotSwitch.publisher(for: .valueChanged).sink { [weak self] control in + self?.component.badgeIndicator.hideDot = control.isOn + }.store(in: &subscribers) + + hideBorderSwitch.publisher(for: .valueChanged).sink { [weak self] control in + self?.component.hideBorder = control.isOn + }.store(in: &subscribers) + + textField + .numberPublisher + .sink { [weak self] number in + guard let number else { return } + self?.component.badgeIndicator.number = number.intValue + }.store(in: &subscribers) + + leadingCharacterTextField + .textPublisher + .sink { [weak self] text in + self?.component.badgeIndicator.leadingCharacter = text + }.store(in: &subscribers) + + trailingTextField + .textPublisher + .sink { [weak self] text in + self?.component.badgeIndicator.trailingText = text + }.store(in: &subscribers) + + heightTextField + .numberPublisher + .sink { [weak self] number in + self?.component.badgeIndicator.height = number?.cgFloatValue + }.store(in: &subscribers) + + widthTextField + .numberPublisher + .sink { [weak self] number in + self?.component.badgeIndicator.width = number?.cgFloatValue + }.store(in: &subscribers) + + horizontalPaddingTextField + .numberPublisher + .sink { [weak self] number in + self?.component.badgeIndicator.horizontalPadding = number?.cgFloatValue + }.store(in: &subscribers) + + verticalPaddingTextField + .numberPublisher + .sink { [weak self] number in + self?.component.badgeIndicator.verticalPadding = number?.cgFloatValue + }.store(in: &subscribers) + + dotSizeTextField + .numberPublisher + .sink { [weak self] number in + self?.component.badgeIndicator.dotSize = number?.cgFloatValue + }.store(in: &subscribers) + + badgeIndicatorSwitch.onChange = { [weak self] sender in + self?.component.showBadge = sender.isOn + self?.component.badgeIndicator.isHidden = !sender.isOn + self?.badgeIndicatorForm.isHidden = !sender.isOn + if !sender.isOn { + self?.numberedForm.isHidden = !sender.isOn + self?.dotForm.isHidden = !sender.isOn + } else { + self?.visibleForms() + } + } + disabledSwitch.onChange = { [weak self] sender in self?.component.isEnabled = !sender.isOn } @@ -160,7 +327,41 @@ class ButtonIconViewController: BaseViewController { namePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.iconName = item } + + badgeIndicatorKindPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.badgeIndicator.kind = item + self?.visibleForms() + } + + badgeIndicatorFillColorPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.badgeIndicator.fillColor = item + } + + textSizePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.badgeIndicator.size = item + } + + maxDigitsPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.badgeIndicator.maximumDigits = item + } + + borderColorDarkPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.badgeIndicator.borderColorDark = item.uiColor + } + + borderColorLightPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.badgeIndicator.borderColorLight = item.uiColor + } + +// badgeIndicatorDirectionPickerSelectorView.onPickerDidSelect = { [weak self] item in +// TO DO self?.component.badgeIndicator.directionalLayoutMargins = item +// } } + + func visibleForms() { + numberedForm.isHidden = badgeIndicatorKindPickerSelectorView.selectedItem != .numbered + dotForm.isHidden = badgeIndicatorKindPickerSelectorView.selectedItem == .numbered + } } extension UITextField { From a9de8b5d851434f8290a3aab591cb765a9e9cc7b Mon Sep 17 00:00:00 2001 From: vasavk Date: Thu, 8 Feb 2024 13:28:21 +0530 Subject: [PATCH 2/9] story:ONEAPP-6315: used model with a struct to set default properties on the setup form --- .../ButtonIconViewController.swift | 202 ++---------------- 1 file changed, 13 insertions(+), 189 deletions(-) diff --git a/VDSSample/ViewControllers/ButtonIconViewController.swift b/VDSSample/ViewControllers/ButtonIconViewController.swift index cfa5617..89bdc86 100644 --- a/VDSSample/ViewControllers/ButtonIconViewController.swift +++ b/VDSSample/ViewControllers/ButtonIconViewController.swift @@ -53,72 +53,6 @@ class ButtonIconViewController: BaseViewController { var selectableSwitch = Toggle() var badgeIndicatorSwitch = Toggle() - lazy var badgeIndicatorKindPickerSelectorView = { - PickerSelectorView(title: "simple", - picker: self.picker, - items: BadgeIndicator.Kind.allCases) - }() - - lazy var badgeIndicatorFillColorPickerSelectorView = { - PickerSelectorView(title: "red", - picker: self.picker, - items: BadgeIndicator.FillColor.allCases) - }() - - lazy var badgeIndicatorBorderColorPickerSelectorView = { - PickerSelectorView(title: "", - picker: self.picker, - items: UIColor.VDSColor.allCases) - }() - - lazy var textSizePickerSelectorView = { - PickerSelectorView(title: "", - picker: self.picker, - items: BadgeIndicator.Size.allCases) - }() - - lazy var maxDigitsPickerSelectorView = { - PickerSelectorView(title: "", - picker: self.picker, - items: BadgeIndicator.MaximumDigits.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) - }() - - lazy var badgeIndicatorDirectionPickerSelectorView = { - PickerSelectorView(title: "", - picker: self.picker, - items: ButtonIcon.ExpandDirection.allCases) - }() - - var numberedForm = FormSection().with { $0.title = "Numbered Kind"} - var dotForm = FormSection().with { $0.title = "Simple Kind"} - var badgeIndicatorForm = FormSection().with { $0.title = "Badge Indicator Configurations"} - - var badgeIndicatorHideBorderSwitch = Toggle() - var textField = NumericField() - var leadingCharacterTextField = TextField() - var trailingTextField = TextField() - var hideDotSwitch = Toggle() - var hideBorderSwitch = Toggle() - - var heightTextField = NumericField() - var widthTextField = NumericField() - var horizontalPaddingTextField = NumericField() - var verticalPaddingTextField = NumericField() - var dotSizeTextField = NumericField() - - override func viewDidLoad() { super.viewDidLoad() addContentTopView(view: .makeWrapper(for: component, edgeSpacing: 16.0), edgeSpacing: 0.0) @@ -143,102 +77,13 @@ class ButtonIconViewController: BaseViewController { // addFormRow(label: "Selected Name", view: namePickerSelectorView) // TO DO addFormRow(label: "X Offset", view: centerX) addFormRow(label: "Y Offset", view: centerY) - addFormRow(label: "Show Badge Indicator", view: badgeIndicatorSwitch) - badgeIndicatorForm.addFormRow(label: "Kind", view: badgeIndicatorKindPickerSelectorView) - badgeIndicatorForm.addFormRow(label: "Height", view: heightTextField) - badgeIndicatorForm.addFormRow(label: "Width", view: widthTextField) - badgeIndicatorForm.addFormRow(label: "Horiztonal Padding", view: horizontalPaddingTextField) - badgeIndicatorForm.addFormRow(label: "Vertical Padding", view: verticalPaddingTextField) - badgeIndicatorForm.addFormRow(label: "Fill Color", view: badgeIndicatorFillColorPickerSelectorView) - badgeIndicatorForm.addFormRow(label: "Hide Border", view: badgeIndicatorHideBorderSwitch) - badgeIndicatorForm.addFormRow(label: "Border Light", view: borderColorLightPickerSelectorView) - badgeIndicatorForm.addFormRow(label: "Border Dark", view: borderColorDarkPickerSelectorView) - badgeIndicatorForm.addFormRow(label: "Size", view: textSizePickerSelectorView) - badgeIndicatorForm.addFormRow(label: "Expand Direction", view: badgeIndicatorDirectionPickerSelectorView) - - dotForm.addFormRow(label: "Hide Dot", view: hideDotSwitch) - dotForm.addFormRow(label: "Dot Size", view: dotSizeTextField) - numberedForm.addFormRow(label: "Leading Character", view: leadingCharacterTextField) - numberedForm.addFormRow(label: "Trailing Text", view: trailingTextField) - numberedForm.addFormRow(label: "Number", view: textField) - numberedForm.addFormRow(label: "Max Digits", view: maxDigitsPickerSelectorView) - - append(section: badgeIndicatorForm) - append(section: numberedForm) - append(section: dotForm) - - badgeIndicatorForm.isHidden = !self.badgeIndicatorSwitch.isOn - numberedForm.isHidden = !self.badgeIndicatorSwitch.isOn - dotForm.isHidden = !self.badgeIndicatorSwitch.isOn - - hideDotSwitch.publisher(for: .valueChanged).sink { [weak self] control in - self?.component.badgeIndicator.hideDot = control.isOn - }.store(in: &subscribers) - - hideBorderSwitch.publisher(for: .valueChanged).sink { [weak self] control in - self?.component.hideBorder = control.isOn - }.store(in: &subscribers) - - textField - .numberPublisher - .sink { [weak self] number in - guard let number else { return } - self?.component.badgeIndicator.number = number.intValue - }.store(in: &subscribers) - - leadingCharacterTextField - .textPublisher - .sink { [weak self] text in - self?.component.badgeIndicator.leadingCharacter = text - }.store(in: &subscribers) - - trailingTextField - .textPublisher - .sink { [weak self] text in - self?.component.badgeIndicator.trailingText = text - }.store(in: &subscribers) - - heightTextField - .numberPublisher - .sink { [weak self] number in - self?.component.badgeIndicator.height = number?.cgFloatValue - }.store(in: &subscribers) - - widthTextField - .numberPublisher - .sink { [weak self] number in - self?.component.badgeIndicator.width = number?.cgFloatValue - }.store(in: &subscribers) - - horizontalPaddingTextField - .numberPublisher - .sink { [weak self] number in - self?.component.badgeIndicator.horizontalPadding = number?.cgFloatValue - }.store(in: &subscribers) - - verticalPaddingTextField - .numberPublisher - .sink { [weak self] number in - self?.component.badgeIndicator.verticalPadding = number?.cgFloatValue - }.store(in: &subscribers) - - dotSizeTextField - .numberPublisher - .sink { [weak self] number in - self?.component.badgeIndicator.dotSize = number?.cgFloatValue - }.store(in: &subscribers) badgeIndicatorSwitch.onChange = { [weak self] sender in - self?.component.showBadge = sender.isOn - self?.component.badgeIndicator.isHidden = !sender.isOn - self?.badgeIndicatorForm.isHidden = !sender.isOn - if !sender.isOn { - self?.numberedForm.isHidden = !sender.isOn - self?.dotForm.isHidden = !sender.isOn - } else { - self?.visibleForms() - } + guard let self else { return } + self.component.showBadge = sender.isOn + self.setBadgeIndicatorModel() + self.component.badgeIndicator.isHidden = !sender.isOn } disabledSwitch.onChange = { [weak self] sender in @@ -278,6 +123,15 @@ class ButtonIconViewController: BaseViewController { }.store(in: &subscribers) } + //sub models + func setBadgeIndicatorModel() { + if badgeIndicatorSwitch.isOn { + component.badgeIndicatorModel = ButtonIcon.BadgeIndicatorModel(kind: BadgeIndicator.Kind.simple, size: BadgeIndicator.Size.small) + } else { + component.badgeIndicatorModel = nil + } + } + func setupModel() { let name = Icon.Name.addToFavorite @@ -327,41 +181,11 @@ class ButtonIconViewController: BaseViewController { namePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.iconName = item } - - badgeIndicatorKindPickerSelectorView.onPickerDidSelect = { [weak self] item in - self?.component.badgeIndicator.kind = item - self?.visibleForms() - } - - badgeIndicatorFillColorPickerSelectorView.onPickerDidSelect = { [weak self] item in - self?.component.badgeIndicator.fillColor = item - } - - textSizePickerSelectorView.onPickerDidSelect = { [weak self] item in - self?.component.badgeIndicator.size = item - } - - maxDigitsPickerSelectorView.onPickerDidSelect = { [weak self] item in - self?.component.badgeIndicator.maximumDigits = item - } - - borderColorDarkPickerSelectorView.onPickerDidSelect = { [weak self] item in - self?.component.badgeIndicator.borderColorDark = item.uiColor - } - - borderColorLightPickerSelectorView.onPickerDidSelect = { [weak self] item in - self?.component.badgeIndicator.borderColorLight = item.uiColor - } // badgeIndicatorDirectionPickerSelectorView.onPickerDidSelect = { [weak self] item in // TO DO self?.component.badgeIndicator.directionalLayoutMargins = item // } } - - func visibleForms() { - numberedForm.isHidden = badgeIndicatorKindPickerSelectorView.selectedItem != .numbered - dotForm.isHidden = badgeIndicatorKindPickerSelectorView.selectedItem == .numbered - } } extension UITextField { From 1d3616edf0efcd5b16159a1e3e012cd58dda9bd7 Mon Sep 17 00:00:00 2001 From: vasavk Date: Thu, 8 Feb 2024 22:58:56 +0530 Subject: [PATCH 3/9] story:ONEAPP-6315: Changes for the ExpandDirection picker --- .../ButtonIconViewController.swift | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/VDSSample/ViewControllers/ButtonIconViewController.swift b/VDSSample/ViewControllers/ButtonIconViewController.swift index 89bdc86..64e0cde 100644 --- a/VDSSample/ViewControllers/ButtonIconViewController.swift +++ b/VDSSample/ViewControllers/ButtonIconViewController.swift @@ -53,6 +53,12 @@ class ButtonIconViewController: BaseViewController { var selectableSwitch = Toggle() var badgeIndicatorSwitch = Toggle() + lazy var badgeIndicatorExpandDirectionPickerSelectorView = { + PickerSelectorView(title: "right", + picker: self.picker, + items: ButtonIcon.ExpandDirection.allCases) + }() + override func viewDidLoad() { super.viewDidLoad() addContentTopView(view: .makeWrapper(for: component, edgeSpacing: 16.0), edgeSpacing: 0.0) @@ -78,10 +84,11 @@ class ButtonIconViewController: BaseViewController { addFormRow(label: "X Offset", view: centerX) addFormRow(label: "Y Offset", view: centerY) addFormRow(label: "Show Badge Indicator", view: badgeIndicatorSwitch) + addFormRow(label: "Expand Direction", view: badgeIndicatorExpandDirectionPickerSelectorView) badgeIndicatorSwitch.onChange = { [weak self] sender in guard let self else { return } - self.component.showBadge = sender.isOn + self.component.showBadgeIndicator = sender.isOn self.setBadgeIndicatorModel() self.component.badgeIndicator.isHidden = !sender.isOn } @@ -97,7 +104,7 @@ class ButtonIconViewController: BaseViewController { } hideBorder.onChange = { [weak self] sender in - self?.component.hideBorder = sender.isOn + self?.component.hideBorder = !sender.isOn } fitToIcon.onChange = { [weak self] sender in @@ -126,7 +133,7 @@ class ButtonIconViewController: BaseViewController { //sub models func setBadgeIndicatorModel() { if badgeIndicatorSwitch.isOn { - component.badgeIndicatorModel = ButtonIcon.BadgeIndicatorModel(kind: BadgeIndicator.Kind.simple, size: BadgeIndicator.Size.small) + component.badgeIndicatorModel = ButtonIcon.BadgeIndicatorModel(kind: BadgeIndicator.Kind.numbered, size: BadgeIndicator.Size.small, maximumDigits: BadgeIndicator.MaximumDigits.three, number: 9999, trailingText: "New") } else { component.badgeIndicatorModel = nil } @@ -143,6 +150,7 @@ class ButtonIconViewController: BaseViewController { sizePickerSelectorView.text = component.size.rawValue namePickerSelectorView.text = name.rawValue disabledSwitch.isOn = !component.isEnabled + badgeIndicatorExpandDirectionPickerSelectorView.text = component.expandDirection.rawValue } func updateOffset() { @@ -181,10 +189,10 @@ class ButtonIconViewController: BaseViewController { namePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.iconName = item } - -// badgeIndicatorDirectionPickerSelectorView.onPickerDidSelect = { [weak self] item in -// TO DO self?.component.badgeIndicator.directionalLayoutMargins = item -// } + + badgeIndicatorExpandDirectionPickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.expandDirection = item + } } } From b2e7d217bd4704cc0a9d74cba083fc218b1999b3 Mon Sep 17 00:00:00 2001 From: vasavk Date: Fri, 9 Feb 2024 16:44:23 +0530 Subject: [PATCH 4/9] story:ONEAPP-6315: made changes for selectableSwitch, selectedIconName --- .../ButtonIconViewController.swift | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/VDSSample/ViewControllers/ButtonIconViewController.swift b/VDSSample/ViewControllers/ButtonIconViewController.swift index 64e0cde..54feaac 100644 --- a/VDSSample/ViewControllers/ButtonIconViewController.swift +++ b/VDSSample/ViewControllers/ButtonIconViewController.swift @@ -36,6 +36,12 @@ class ButtonIconViewController: BaseViewController { picker: self.picker, items: Icon.Name.all.sorted{ $0.rawValue < $1.rawValue }) }() + + lazy var selectedIconNamePickerSelectorView = { + PickerSelectorView(title: "", + picker: self.picker, + items: Icon.Name.all.sorted{ $0.rawValue < $1.rawValue }) + }() lazy var sizePickerSelectorView = { PickerSelectorView(title: "", @@ -68,7 +74,7 @@ class ButtonIconViewController: BaseViewController { override func setupForm(){ super.setupForm() - addActionRow() +// addActionRow() addFormRow(label: "Disabled", view: disabledSwitch) addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Surface Type", view: surfaceTypePickerSelectorView) @@ -79,8 +85,8 @@ class ButtonIconViewController: BaseViewController { addFormRow(label: "Fit To Icon", view: fitToIcon) addFormRow(label: "Custom Size", view: customSizeField) addFormRow(label: "Name", view: namePickerSelectorView) + addFormRow(label: "Selected Icon Name", view: selectedIconNamePickerSelectorView) // TO DO addFormRow(label: "Selectable", view: selectableSwitch) -// addFormRow(label: "Selected Name", view: namePickerSelectorView) // TO DO addFormRow(label: "X Offset", view: centerX) addFormRow(label: "Y Offset", view: centerY) addFormRow(label: "Show Badge Indicator", view: badgeIndicatorSwitch) @@ -96,8 +102,17 @@ class ButtonIconViewController: BaseViewController { disabledSwitch.onChange = { [weak self] sender in self?.component.isEnabled = !sender.isOn } - - component.onClickActionPublisher("ButtonIcon", label: actionLabel) + + selectableSwitch.onChange = { [weak self] sender in + guard let self else { return } + if sender.isOn { + self.component.onClick = { _ in + self.component.selectable = !self.component.selectable + } + } else { + self.component.onClick = nil + } + } floating.onChange = { [weak self] sender in self?.component.floating = sender.isOn @@ -189,7 +204,11 @@ class ButtonIconViewController: BaseViewController { namePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.iconName = item } - + + selectedIconNamePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.selectedIconName = item + } + badgeIndicatorExpandDirectionPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.expandDirection = item } From dda7d2f598f23b61574609d327a8f680e25348c3 Mon Sep 17 00:00:00 2001 From: vasavk Date: Mon, 12 Feb 2024 13:27:11 +0530 Subject: [PATCH 5/9] story:ONEAPP-6315: show badge variants --- .../ButtonIconViewController.swift | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/VDSSample/ViewControllers/ButtonIconViewController.swift b/VDSSample/ViewControllers/ButtonIconViewController.swift index 54feaac..423d0f5 100644 --- a/VDSSample/ViewControllers/ButtonIconViewController.swift +++ b/VDSSample/ViewControllers/ButtonIconViewController.swift @@ -58,6 +58,7 @@ class ButtonIconViewController: BaseViewController { var disabledSwitch = Toggle() var selectableSwitch = Toggle() var badgeIndicatorSwitch = Toggle() + var variantOneSwitch = Toggle() lazy var badgeIndicatorExpandDirectionPickerSelectorView = { PickerSelectorView(title: "right", @@ -74,7 +75,6 @@ class ButtonIconViewController: BaseViewController { override func setupForm(){ super.setupForm() -// addActionRow() addFormRow(label: "Disabled", view: disabledSwitch) addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Surface Type", view: surfaceTypePickerSelectorView) @@ -91,12 +91,27 @@ class ButtonIconViewController: BaseViewController { addFormRow(label: "Y Offset", view: centerY) addFormRow(label: "Show Badge Indicator", view: badgeIndicatorSwitch) addFormRow(label: "Expand Direction", view: badgeIndicatorExpandDirectionPickerSelectorView) - + addFormRow(label: "Badge Variants", view: variantOneSwitch) + + variantOneSwitch.onChange = { [weak self] sender in + guard let self else { return } + if sender.isOn { + if badgeIndicatorSwitch.isOn { + component.badgeIndicatorModel = ButtonIcon.BadgeIndicatorModel(kind: BadgeIndicator.Kind.simple, size: BadgeIndicator.Size.small) + } else { + component.badgeIndicatorModel = nil + } + } else { + component.badgeIndicatorModel = ButtonIcon.BadgeIndicatorModel(kind: BadgeIndicator.Kind.numbered, size: BadgeIndicator.Size.small, maximumDigits: BadgeIndicator.MaximumDigits.two, number: 999, trailingText: "New") + } + } + badgeIndicatorSwitch.onChange = { [weak self] sender in guard let self else { return } self.component.showBadgeIndicator = sender.isOn self.setBadgeIndicatorModel() self.component.badgeIndicator.isHidden = !sender.isOn + variantOneSwitch.isOn = false } disabledSwitch.onChange = { [weak self] sender in @@ -148,7 +163,7 @@ class ButtonIconViewController: BaseViewController { //sub models func setBadgeIndicatorModel() { if badgeIndicatorSwitch.isOn { - component.badgeIndicatorModel = ButtonIcon.BadgeIndicatorModel(kind: BadgeIndicator.Kind.numbered, size: BadgeIndicator.Size.small, maximumDigits: BadgeIndicator.MaximumDigits.three, number: 9999, trailingText: "New") + component.badgeIndicatorModel = ButtonIcon.BadgeIndicatorModel(kind: BadgeIndicator.Kind.numbered, size: BadgeIndicator.Size.small, maximumDigits: BadgeIndicator.MaximumDigits.two, number: 999) } else { component.badgeIndicatorModel = nil } From 44008aba2d29fe6ad80094bd82e60e1ca4931c5e Mon Sep 17 00:00:00 2001 From: vasavk Date: Mon, 12 Feb 2024 16:03:16 +0530 Subject: [PATCH 6/9] story:ONEAPP-6315: removed unnecessary text --- VDSSample/ViewControllers/ButtonIconViewController.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VDSSample/ViewControllers/ButtonIconViewController.swift b/VDSSample/ViewControllers/ButtonIconViewController.swift index 423d0f5..98cac05 100644 --- a/VDSSample/ViewControllers/ButtonIconViewController.swift +++ b/VDSSample/ViewControllers/ButtonIconViewController.swift @@ -83,9 +83,9 @@ class ButtonIconViewController: BaseViewController { addFormRow(label: "Floating", view: floating) addFormRow(label: "Hide Border", view: hideBorder) addFormRow(label: "Fit To Icon", view: fitToIcon) - addFormRow(label: "Custom Size", view: customSizeField) +// addFormRow(label: "Custom Size", view: customSizeField) addFormRow(label: "Name", view: namePickerSelectorView) - addFormRow(label: "Selected Icon Name", view: selectedIconNamePickerSelectorView) // TO DO + addFormRow(label: "Selected Icon Name", view: selectedIconNamePickerSelectorView) addFormRow(label: "Selectable", view: selectableSwitch) addFormRow(label: "X Offset", view: centerX) addFormRow(label: "Y Offset", view: centerY) From c8de65f16f4e9ecdb1064bf92597cc8f8e08da44 Mon Sep 17 00:00:00 2001 From: vasavk Date: Tue, 13 Feb 2024 22:17:37 +0530 Subject: [PATCH 7/9] story:ONEAPP-6315: selectable update on switch change --- VDSSample/ViewControllers/ButtonIconViewController.swift | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/VDSSample/ViewControllers/ButtonIconViewController.swift b/VDSSample/ViewControllers/ButtonIconViewController.swift index 98cac05..29e9460 100644 --- a/VDSSample/ViewControllers/ButtonIconViewController.swift +++ b/VDSSample/ViewControllers/ButtonIconViewController.swift @@ -120,13 +120,7 @@ class ButtonIconViewController: BaseViewController { selectableSwitch.onChange = { [weak self] sender in guard let self else { return } - if sender.isOn { - self.component.onClick = { _ in - self.component.selectable = !self.component.selectable - } - } else { - self.component.onClick = nil - } + self.component.selectable = !self.component.selectable } floating.onChange = { [weak self] sender in From 9594832c168f112efe5b054c46558b88a60ae2ee Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 14 Feb 2024 11:56:38 -0600 Subject: [PATCH 8/9] refactored view controller to show/hide buttonicon badge indicator Signed-off-by: Matt Bruce --- .../ButtonIconViewController.swift | 56 +++++++++---------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/VDSSample/ViewControllers/ButtonIconViewController.swift b/VDSSample/ViewControllers/ButtonIconViewController.swift index 29e9460..d7246ac 100644 --- a/VDSSample/ViewControllers/ButtonIconViewController.swift +++ b/VDSSample/ViewControllers/ButtonIconViewController.swift @@ -63,7 +63,7 @@ class ButtonIconViewController: BaseViewController { lazy var badgeIndicatorExpandDirectionPickerSelectorView = { PickerSelectorView(title: "right", picker: self.picker, - items: ButtonIcon.ExpandDirection.allCases) + items: ButtonIcon.BadgeIndicatorModel.ExpandDirection.allCases) }() override func viewDidLoad() { @@ -73,6 +73,8 @@ class ButtonIconViewController: BaseViewController { setupModel() } + var badgeIndicatorFormStackView = FormSection().with { $0.isHidden = true } + override func setupForm(){ super.setupForm() addFormRow(label: "Disabled", view: disabledSwitch) @@ -83,34 +85,27 @@ class ButtonIconViewController: BaseViewController { addFormRow(label: "Floating", view: floating) addFormRow(label: "Hide Border", view: hideBorder) addFormRow(label: "Fit To Icon", view: fitToIcon) -// addFormRow(label: "Custom Size", view: customSizeField) addFormRow(label: "Name", view: namePickerSelectorView) addFormRow(label: "Selected Icon Name", view: selectedIconNamePickerSelectorView) addFormRow(label: "Selectable", view: selectableSwitch) addFormRow(label: "X Offset", view: centerX) addFormRow(label: "Y Offset", view: centerY) + + //badgeIndicator section addFormRow(label: "Show Badge Indicator", view: badgeIndicatorSwitch) - addFormRow(label: "Expand Direction", view: badgeIndicatorExpandDirectionPickerSelectorView) - addFormRow(label: "Badge Variants", view: variantOneSwitch) + badgeIndicatorFormStackView.addFormRow(label: "Expand Direction", view: badgeIndicatorExpandDirectionPickerSelectorView) + badgeIndicatorFormStackView.addFormRow(label: "Badge Variants", view: variantOneSwitch) + append(section: badgeIndicatorFormStackView) variantOneSwitch.onChange = { [weak self] sender in - guard let self else { return } - if sender.isOn { - if badgeIndicatorSwitch.isOn { - component.badgeIndicatorModel = ButtonIcon.BadgeIndicatorModel(kind: BadgeIndicator.Kind.simple, size: BadgeIndicator.Size.small) - } else { - component.badgeIndicatorModel = nil - } - } else { - component.badgeIndicatorModel = ButtonIcon.BadgeIndicatorModel(kind: BadgeIndicator.Kind.numbered, size: BadgeIndicator.Size.small, maximumDigits: BadgeIndicator.MaximumDigits.two, number: 999, trailingText: "New") - } + self?.setBadgeIndicatorModel() } badgeIndicatorSwitch.onChange = { [weak self] sender in guard let self else { return } self.component.showBadgeIndicator = sender.isOn + self.badgeIndicatorFormStackView.isHidden = !sender.isOn self.setBadgeIndicatorModel() - self.component.badgeIndicator.isHidden = !sender.isOn variantOneSwitch.isOn = false } @@ -154,15 +149,6 @@ class ButtonIconViewController: BaseViewController { }.store(in: &subscribers) } - //sub models - func setBadgeIndicatorModel() { - if badgeIndicatorSwitch.isOn { - component.badgeIndicatorModel = ButtonIcon.BadgeIndicatorModel(kind: BadgeIndicator.Kind.numbered, size: BadgeIndicator.Size.small, maximumDigits: BadgeIndicator.MaximumDigits.two, number: 999) - } else { - component.badgeIndicatorModel = nil - } - } - func setupModel() { let name = Icon.Name.addToFavorite @@ -174,7 +160,7 @@ class ButtonIconViewController: BaseViewController { sizePickerSelectorView.text = component.size.rawValue namePickerSelectorView.text = name.rawValue disabledSwitch.isOn = !component.isEnabled - badgeIndicatorExpandDirectionPickerSelectorView.text = component.expandDirection.rawValue + badgeIndicatorExpandDirectionPickerSelectorView.text = ButtonIcon.BadgeIndicatorModel.ExpandDirection.right.rawValue } func updateOffset() { @@ -191,12 +177,12 @@ class ButtonIconViewController: BaseViewController { func setupPicker(){ - + surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.surface = item self?.contentTopView.backgroundColor = item.color } - + surfaceTypePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.surfaceType = item } @@ -213,13 +199,25 @@ class ButtonIconViewController: BaseViewController { namePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.iconName = item } - + selectedIconNamePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.selectedIconName = item } badgeIndicatorExpandDirectionPickerSelectorView.onPickerDidSelect = { [weak self] item in - self?.component.expandDirection = item + self?.setBadgeIndicatorModel() + } + } + + func setBadgeIndicatorModel() { + if variantOneSwitch.isOn { + if badgeIndicatorSwitch.isOn { + component.badgeIndicatorModel = ButtonIcon.BadgeIndicatorModel(kind: BadgeIndicator.Kind.simple, size: BadgeIndicator.Size.small) + } else { + component.badgeIndicatorModel = nil + } + } else { + component.badgeIndicatorModel = ButtonIcon.BadgeIndicatorModel(kind: BadgeIndicator.Kind.numbered, expandDirection: badgeIndicatorExpandDirectionPickerSelectorView.selectedItem, size: BadgeIndicator.Size.small, maximumDigits: BadgeIndicator.MaximumDigits.two, number: 999) } } } From 96bb1a893c2fd9e5160301bee7ffe852dbfa2f31 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 14 Feb 2024 12:02:26 -0600 Subject: [PATCH 9/9] marked as finished 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 753b294..d641463 100644 --- a/VDSSample/ViewControllers/MenuViewController.swift +++ b/VDSSample/ViewControllers/MenuViewController.swift @@ -72,7 +72,7 @@ class MenuViewController: UITableViewController, TooltipLaunchable { 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), + MenuComponent(title: "ButtonIcon", completed: true, viewController: ButtonIconViewController.self), MenuComponent(title: "Checkbox", completed: true, viewController: CheckboxViewController.self), MenuComponent(title: "CheckboxItem", completed: true, viewController: CheckboxItemViewController.self), MenuComponent(title: "CheckboxGroup", completed: true, viewController: CheckboxGroupViewController.self),