refactore checkbox
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
5ed2384db3
commit
368cae35a7
@ -45,11 +45,17 @@ 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)
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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"
|
var picker = UIPickerView()
|
||||||
|
var surfacePickerSelectorView = PickerSelectorView(title: "light")
|
||||||
@IBOutlet weak var checkboxContainerView: UIView!
|
var disabledSwitch = UISwitch()
|
||||||
@IBOutlet weak var picker: UIPickerView!
|
var labelTextField = TextField()
|
||||||
@IBOutlet weak var surfaceLabel: UILabel!
|
var childTextField = TextField()
|
||||||
|
var errorTextField = TextField()
|
||||||
@IBOutlet weak var disabledSwitch: UISwitch!
|
var showErrorSwitch = UISwitch()
|
||||||
@IBOutlet weak var labelTextField: UITextField!
|
|
||||||
@IBOutlet weak var childTextField: UITextField!
|
|
||||||
@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
|
||||||
@ -70,34 +112,7 @@ class CheckboxViewController: ModelViewController<DefaultCheckboxModel>, Storyb
|
|||||||
print("\(Self.self) updateView(viewModel)")
|
print("\(Self.self) updateView(viewModel)")
|
||||||
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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user