updated button group samples

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2022-12-15 11:46:09 -06:00
parent dc726ecb25
commit bac5c67ba3

View File

@ -64,22 +64,39 @@ class ButtonGroupViewController: BaseViewController {
var widthTextField = TextField() var widthTextField = TextField()
var percentageTextField = 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() { override func viewDidLoad() {
super.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("Secondary", label: label).with{ $0.use = .secondary },
makeButton("Primary", label: label), makeButton("Primary", label: label),
makeTextLink("Large Text Link", label: label), makeTextLink("Large Text Link", label: label),
makeButton("Widge Label Button", label: label), makeButton("Widge Label Button", label: label),
makeTextLinkCaret("Text Link Caret", 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.isEnabled = false
percentageTextField.placeholder = "Active RowQty != none"
widthTextField.placeholder = "Active RowQty == none"
setupForm() setupForm()
setupPicker() setupPicker()
setupModel() setupModel()
@ -99,29 +116,35 @@ class ButtonGroupViewController: BaseViewController {
disabledSwitch disabledSwitch
.publisher(for: .valueChanged) .publisher(for: .valueChanged)
.sink { [weak self] sender in .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) }.store(in: &subscribers)
widthTextField widthTextField
.textPublisher .textPublisher
.sink { [weak self] text in .sink { [weak self] text in
if let n = NumberFormatter().number(from: text) { 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 = "" self?.percentageTextField.text = ""
} else { } else {
self?.buttonGroup.buttonWidth = nil self?.largeButtonGroup.buttonWidth = nil
} }
}.store(in: &subscribers) }.store(in: &subscribers)
percentageTextField percentageTextField
.textPublisher .textPublisher
.sink { [weak self] text in .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 { 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 = "" self?.widthTextField.text = ""
} else { } else {
self?.buttonGroup.buttonPercentage = nil self?.largeButtonGroup.buttonPercentage = nil
self?.smallButtonGroup.buttonPercentage = nil
} }
}.store(in: &subscribers) }.store(in: &subscribers)
@ -129,32 +152,46 @@ class ButtonGroupViewController: BaseViewController {
func setupModel() { func setupModel() {
//setup UI //setup UI
surfacePickerSelectorView.text = buttonGroup.surface.rawValue surfacePickerSelectorView.text = largeButtonGroup.surface.rawValue
buttonPositionSelectorView.text = buttonGroup.buttonPosition.rawValue buttonPositionSelectorView.text = largeButtonGroup.buttonPosition.rawValue
disabledSwitch.isOn = buttonGroup.disabled disabledSwitch.isOn = largeButtonGroup.disabled
rowQuantitySelectorView.text = RowQuantity(quantity: buttonGroup.rowQuantity).rawValue rowQuantitySelectorView.text = RowQuantity(quantity: largeButtonGroup.rowQuantity).rawValue
widthTextField.text = "" widthTextField.text = ""
} }
func setupPicker(){ func setupPicker(){
surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in 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 self?.contentTopView.backgroundColor = item.color
} }
buttonPositionSelectorView.onPickerDidSelect = { [weak self] item in buttonPositionSelectorView.onPickerDidSelect = { [weak self] item in
self?.buttonGroup.buttonPosition = item self?.largeButtonGroup.buttonPosition = item
self?.smallButtonGroup.buttonPosition = item
} }
rowQuantitySelectorView.onPickerDidSelect = { [weak self] item in rowQuantitySelectorView.onPickerDidSelect = { [weak self] item in
self?.percentageTextField.isEnabled = item.intValue > 0 self?.percentageTextField.isEnabled = item.intValue > 0
self?.widthTextField.isEnabled = item.intValue == 0 self?.widthTextField.isEnabled = item.intValue == 0
if UIDevice.isIPad { if item == .none {
self?.buttonGroup.rowQuantityTablet = item.intValue self?.percentageTextField.text = ""
} else { } 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
} }
} }
} }