From bac5c67ba3c5569a071f2704cd8042f3f20ec457 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 15 Dec 2022 11:46:09 -0600 Subject: [PATCH] updated button group samples Signed-off-by: Matt Bruce --- .../ButtonGroupViewController.swift | 79 ++++++++++++++----- 1 file changed, 58 insertions(+), 21 deletions(-) diff --git a/VDSSample/ViewControllers/ButtonGroupViewController.swift b/VDSSample/ViewControllers/ButtonGroupViewController.swift index b80a290..41d9245 100644 --- a/VDSSample/ViewControllers/ButtonGroupViewController.swift +++ b/VDSSample/ViewControllers/ButtonGroupViewController.swift @@ -64,22 +64,39 @@ class ButtonGroupViewController: BaseViewController { var widthTextField = TextField() var percentageTextField = TextField() - let buttonGroup = ButtonGroup() - + let largeButtonGroup = ButtonGroup() + let smallButtonGroup = ButtonGroup() + let largeLabel = Label().with{ $0.text = "Large Button Group"; $0.typograpicalStyle = .BoldTitleSmall } + let smallLabel = Label().with{ $0.text = "Small Button Group"; $0.typograpicalStyle = .BoldTitleSmall } + override func viewDidLoad() { super.viewDidLoad() - buttonGroup.buttons = [ + + let stackView = UIStackView(arrangedSubviews: [largeLabel, largeButtonGroup, smallLabel, smallButtonGroup]) + stackView.setCustomSpacing(50, after: largeButtonGroup) + stackView.axis = .vertical + stackView.spacing = 30 + + largeButtonGroup.buttons = [ makeButton("Secondary", label: label).with{ $0.use = .secondary }, makeButton("Primary", label: label), makeTextLink("Large Text Link", label: label), makeButton("Widge Label Button", label: label), makeTextLinkCaret("Text Link Caret", label: label), - makeTextLink("Small Text Link", label: label).with{ $0.size = .small }, - makeButton("Small Button", label: label).with{$0.size = .small; $0.use = .secondary } ] - addContentTopView(view: buttonGroup) + smallButtonGroup.buttons = [ + makeTextLink("Small Text Link", label: label).with{ $0.size = .small }, + makeButton("Small Button", label: label).with{$0.size = .small; $0.use = .secondary }, + makeTextLink("Text Link 1", label: label).with{ $0.size = .small }, + makeTextLink("Text Link 2", label: label).with{ $0.size = .small }, + makeButton("Small Button 2", label: label).with{$0.size = .small; $0.use = .secondary } + ] + + addContentTopView(view: stackView) percentageTextField.isEnabled = false + percentageTextField.placeholder = "Active RowQty != none" + widthTextField.placeholder = "Active RowQty == none" setupForm() setupPicker() setupModel() @@ -99,29 +116,35 @@ class ButtonGroupViewController: BaseViewController { disabledSwitch .publisher(for: .valueChanged) .sink { [weak self] sender in - self?.buttonGroup.disabled = sender.isOn + self?.largeLabel.disabled = sender.isOn + self?.smallLabel.disabled = sender.isOn + self?.largeButtonGroup.disabled = sender.isOn + self?.smallButtonGroup.disabled = sender.isOn }.store(in: &subscribers) widthTextField .textPublisher .sink { [weak self] text in if let n = NumberFormatter().number(from: text) { - self?.buttonGroup.buttonWidth = CGFloat(truncating: n) + self?.largeButtonGroup.buttonWidth = CGFloat(truncating: n) + self?.smallButtonGroup.buttonWidth = CGFloat(truncating: n) self?.percentageTextField.text = "" } else { - self?.buttonGroup.buttonWidth = nil + self?.largeButtonGroup.buttonWidth = nil } }.store(in: &subscribers) percentageTextField .textPublisher .sink { [weak self] text in - let rowQty = self?.buttonGroup.rowQuantity ?? 0 + let rowQty = self?.largeButtonGroup.rowQuantity ?? 0 if let n = NumberFormatter().number(from: text), n.intValue <= 100, rowQty > 0 { - self?.buttonGroup.buttonPercentage = CGFloat(truncating: n) + self?.largeButtonGroup.buttonPercentage = CGFloat(truncating: n) + self?.smallButtonGroup.buttonPercentage = CGFloat(truncating: n) self?.widthTextField.text = "" } else { - self?.buttonGroup.buttonPercentage = nil + self?.largeButtonGroup.buttonPercentage = nil + self?.smallButtonGroup.buttonPercentage = nil } }.store(in: &subscribers) @@ -129,32 +152,46 @@ class ButtonGroupViewController: BaseViewController { func setupModel() { //setup UI - surfacePickerSelectorView.text = buttonGroup.surface.rawValue - buttonPositionSelectorView.text = buttonGroup.buttonPosition.rawValue - disabledSwitch.isOn = buttonGroup.disabled - rowQuantitySelectorView.text = RowQuantity(quantity: buttonGroup.rowQuantity).rawValue + surfacePickerSelectorView.text = largeButtonGroup.surface.rawValue + buttonPositionSelectorView.text = largeButtonGroup.buttonPosition.rawValue + disabledSwitch.isOn = largeButtonGroup.disabled + rowQuantitySelectorView.text = RowQuantity(quantity: largeButtonGroup.rowQuantity).rawValue widthTextField.text = "" } func setupPicker(){ surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in - self?.buttonGroup.surface = item + self?.largeLabel.surface = item + self?.smallLabel.surface = item + self?.largeButtonGroup.surface = item + self?.smallButtonGroup.surface = item self?.contentTopView.backgroundColor = item.color } buttonPositionSelectorView.onPickerDidSelect = { [weak self] item in - self?.buttonGroup.buttonPosition = item + self?.largeButtonGroup.buttonPosition = item + self?.smallButtonGroup.buttonPosition = item } rowQuantitySelectorView.onPickerDidSelect = { [weak self] item in self?.percentageTextField.isEnabled = item.intValue > 0 self?.widthTextField.isEnabled = item.intValue == 0 - if UIDevice.isIPad { - self?.buttonGroup.rowQuantityTablet = item.intValue + if item == .none { + self?.percentageTextField.text = "" } else { - self?.buttonGroup.rowQuantityPhone = item.intValue + self?.widthTextField.text = "" + self?.largeButtonGroup.buttonWidth = nil + self?.smallButtonGroup.buttonWidth = nil + } + + if UIDevice.isIPad { + self?.largeButtonGroup.rowQuantityTablet = item.intValue + self?.smallButtonGroup.rowQuantityTablet = item.intValue + } else { + self?.largeButtonGroup.rowQuantityPhone = item.intValue + self?.smallButtonGroup.rowQuantityPhone = item.intValue } } }