refactore checkbox

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2022-08-24 11:21:40 -05:00
parent 5ed2384db3
commit 368cae35a7
3 changed files with 76 additions and 54 deletions

View File

@ -45,12 +45,18 @@ class PickerBase<EnumType: RawRepresentable>: NSObject, PickerViewable, UIPicker
} }
class PickerSelectorView: UIStackView { class PickerSelectorView: UIStackView {
var label = UILabel() private var label = UILabel()
var button = UIButton(type: .system).with { instance in var button = UIButton(type: .system).with { instance in
instance.configuration = .filled() instance.configuration = .filled()
instance.setTitle("Select", for: .normal) instance.setTitle("Select", for: .normal)
} }
var text: String = "" {
didSet {
label.text = text
}
}
init(title: String){ init(title: String){
super.init(frame: .zero) super.init(frame: .zero)
self.axis = .horizontal self.axis = .horizontal

View File

@ -34,7 +34,7 @@ class CheckboxGroupViewController: ModelScrollViewController<DefaultCheckboxGro
addFormRow(label: "Disabled", view: disabledSwitch) addFormRow(label: "Disabled", view: disabledSwitch)
addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Surface", view: surfacePickerSelectorView)
addFormRow(label: "Label Text", view: labelTextField) addFormRow(label: "Label Text", view: labelTextField)
addFormRow(label: "Childe Text", view: childTextField) addFormRow(label: "Child Text", view: childTextField)
addFormRow(label: "Error", view: showErrorSwitch) addFormRow(label: "Error", view: showErrorSwitch)
checkboxGroup checkboxGroup
@ -93,7 +93,7 @@ class CheckboxGroupViewController: ModelScrollViewController<DefaultCheckboxGro
set(with: defaultModel) set(with: defaultModel)
//setup UI //setup UI
surfacePickerSelectorView.label.text = model.surface.rawValue surfacePickerSelectorView.text = model.surface.rawValue
disabledSwitch.isOn = model.disabled disabledSwitch.isOn = model.disabled
labelTextField.text = model2.labelText labelTextField.text = model2.labelText
childTextField.text = model1.childText childTextField.text = model1.childText
@ -135,7 +135,7 @@ class CheckboxGroupViewController: ModelScrollViewController<DefaultCheckboxGro
surfacePicker.onPickerDidSelect = { [weak self] item in surfacePicker.onPickerDidSelect = { [weak self] item in
self?.checkboxGroup.surface = item self?.checkboxGroup.surface = item
self?.contentTopView.backgroundColor = item.color self?.contentTopView.backgroundColor = item.color
self?.surfacePickerSelectorView.label.text = item.rawValue self?.surfacePickerSelectorView.text = item.rawValue
} }
} }

View File

@ -11,34 +11,76 @@ import VDS
import VDSColorTokens import VDSColorTokens
import Combine import Combine
class CheckboxViewController: ModelViewController<DefaultCheckboxModel>, StoryboardInitable { class CheckboxViewController: ModelScrollViewController<DefaultCheckboxModel> {
enum PickerType { enum PickerType {
case surface case surface
} }
static var storyboardId: String = "checkbox"
static var storyboardName: String = "Components"
@IBOutlet weak var checkboxContainerView: UIView! var picker = UIPickerView()
@IBOutlet weak var picker: UIPickerView! var surfacePickerSelectorView = PickerSelectorView(title: "light")
@IBOutlet weak var surfaceLabel: UILabel! var disabledSwitch = UISwitch()
var labelTextField = TextField()
@IBOutlet weak var disabledSwitch: UISwitch! var childTextField = TextField()
@IBOutlet weak var labelTextField: UITextField! var errorTextField = TextField()
@IBOutlet weak var childTextField: UITextField! var showErrorSwitch = UISwitch()
@IBOutlet weak var showErrorSwitch: UISwitch!
@IBOutlet weak var errorTextField: UITextField!
var checkbox = Checkbox() var checkbox = Checkbox()
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
checkboxContainerView.addSubview(checkbox) addContentTopView(view: checkbox)
checkbox.leadingAnchor.constraint(equalTo: checkboxContainerView.leadingAnchor, constant: 10).isActive = true
checkbox.bottomAnchor.constraint(equalTo: checkboxContainerView.bottomAnchor, constant: -20).isActive = true addFormRow(label: "Disabled", view: disabledSwitch)
checkbox.topAnchor.constraint(equalTo: checkboxContainerView.topAnchor, constant: 20).isActive = true addFormRow(label: "Surface", view: surfacePickerSelectorView)
checkbox.trailingAnchor.constraint(equalTo: checkboxContainerView.trailingAnchor, constant: 10).isActive = true addFormRow(label: "Label Text", view: labelTextField)
view.addGestureRecognizer(UITapGestureRecognizer(target: self.view, action: #selector(UIView.endEditing(_:)))) addFormRow(label: "Childe Text", view: childTextField)
addFormRow(label: "Error", view: showErrorSwitch)
addFormRow(label: "Error Text", view: errorTextField)
checkbox
.handlerPublisher()
.sink { [weak self] viewModel in
self?.model = viewModel
}.store(in: &subscribers)
showErrorSwitch
.publisher(for: .valueChanged)
.sink { [weak self] sender in
self?.checkbox.hasError = sender.isOn
}.store(in: &subscribers)
disabledSwitch
.publisher(for: .valueChanged)
.sink { [weak self] sender in
self?.checkbox.disabled = sender.isOn
}.store(in: &subscribers)
labelTextField
.textPublisher
.sink { [weak self] text in
self?.checkbox.labelText = text
}.store(in: &subscribers)
childTextField
.textPublisher
.sink { [weak self] text in
self?.checkbox.childText = text
}.store(in: &subscribers)
errorTextField
.textPublisher
.sink { [weak self] text in
self?.checkbox.errorText = text
}.store(in: &subscribers)
surfacePickerSelectorView.button
.publisher(for: .touchUpInside)
.sink { [weak self] _ in
self?.pickerType = .surface
}.store(in: &subscribers)
setupPicker() setupPicker()
setupModel() setupModel()
} }
@ -57,7 +99,7 @@ class CheckboxViewController: ModelViewController<DefaultCheckboxModel>, Storyb
}.store(in: &subscribers) }.store(in: &subscribers)
//setup UI //setup UI
surfaceLabel.text = model.surface.rawValue surfacePickerSelectorView.text = model.surface.rawValue
disabledSwitch.isOn = model.selected disabledSwitch.isOn = model.selected
labelTextField.text = model.labelText labelTextField.text = model.labelText
childTextField.text = model.childText childTextField.text = model.childText
@ -71,33 +113,6 @@ class CheckboxViewController: ModelViewController<DefaultCheckboxModel>, Storyb
checkbox.set(with: viewModel) checkbox.set(with: viewModel)
} }
@IBAction func disabledChanged(_ sender: UISwitch) {
checkbox.disabled = sender.isOn
}
@IBAction func onLabelTextDidEnd(_ sender: UITextField) {
checkbox.labelText = sender.text
sender.resignFirstResponder()
}
@IBAction func onChildTextDidEnd(_ sender: UITextField) {
checkbox.childText = sender.text
sender.resignFirstResponder()
}
@IBAction func showErrorChanged(_ sender: UISwitch) {
checkbox.hasError = sender.isOn
}
@IBAction func onErrorTextDidEnd(_ sender: UITextField) {
checkbox.errorText = sender.text
sender.resignFirstResponder()
}
@IBAction func surfaceClick(_ sender: Any) {
pickerType = .surface
}
//Picker //Picker
var surfacePicker = SurfacePicker() var surfacePicker = SurfacePicker()
@ -119,11 +134,12 @@ class CheckboxViewController: ModelViewController<DefaultCheckboxModel>, Storyb
} }
func setupPicker(){ func setupPicker(){
contentStackView.addArrangedSubview(picker)
picker.isHidden = true picker.isHidden = true
surfacePicker.onPickerDidSelect = { [weak self] item in surfacePicker.onPickerDidSelect = { [weak self] item in
self?.checkbox.surface = item self?.checkbox.surface = item
self?.checkboxContainerView.backgroundColor = item.color self?.contentTopView.backgroundColor = item.color
self?.surfaceLabel.text = item.rawValue self?.surfacePickerSelectorView.text = item.rawValue
} }
} }
} }