diff --git a/VDSSample/ViewControllers/BadgeViewController.swift b/VDSSample/ViewControllers/BadgeViewController.swift index e24cfbc..73f8072 100644 --- a/VDSSample/ViewControllers/BadgeViewController.swift +++ b/VDSSample/ViewControllers/BadgeViewController.swift @@ -11,7 +11,7 @@ import VDS import VDSColorTokens import Combine -class BadgeViewController: ModelScrollViewController { +class BadgeViewController: ModelScrollViewController { enum NumberOfLines: String, CaseIterable { case unlimited @@ -93,28 +93,13 @@ class BadgeViewController: ModelScrollViewController { } func setupModel() { - var defaultModel = DefaultBadgeModel() - defaultModel.fillColor = .red - defaultModel.text = "Terms and conditions" - defaultModel.numberOfLines = 1 - - set(with: defaultModel) - - badge - .handlerPublisher() - .sink { [weak self] viewModel in - self?.model = viewModel - }.store(in: &subscribers) - + badge.fillColor = .red + badge.text = "Terms and conditions" + badge.numberOfLines = 1 //setup UI - surfacePickerSelectorView.text = model.surface.rawValue - textField.text = model.text - } - - override func updateView(viewModel: DefaultBadgeModel) { - print("\(Self.self) updateView(viewModel)") - badge.set(with: viewModel) + surfacePickerSelectorView.text = badge.surface.rawValue + textField.text = badge.text } func setupPicker(){ diff --git a/VDSSample/ViewControllers/ButtonViewController.swift b/VDSSample/ViewControllers/ButtonViewController.swift index 913e390..b3fcfaf 100644 --- a/VDSSample/ViewControllers/ButtonViewController.swift +++ b/VDSSample/ViewControllers/ButtonViewController.swift @@ -10,7 +10,7 @@ import UIKit import VDS import VDSColorTokens -class ButtonViewController: ModelScrollViewController { +class ButtonViewController: ModelScrollViewController { lazy var usePickerSelectorView = { PickerSelectorView(title: "", @@ -77,16 +77,8 @@ class ButtonViewController: ModelScrollViewController { } func setupModel() { - var defaultModel = DefaultButtonModel() - defaultModel.text = "Button" - set(with: defaultModel) + button.text = "Button" - button - .handlerPublisher() - .sink { [weak self] viewModel in - self?.model = viewModel - }.store(in: &subscribers) - button .publisher(for: .touchUpInside) .sink { control in @@ -95,17 +87,13 @@ class ButtonViewController: ModelScrollViewController { //setup UI - surfacePickerSelectorView.text = model.surface.rawValue - disabledSwitch.isOn = model.disabled - textField.text = model.text - usePickerSelectorView.text = model.use.rawValue + surfacePickerSelectorView.text = button.surface.rawValue + disabledSwitch.isOn = button.disabled + textField.text = button.text + usePickerSelectorView.text = button.use.rawValue widthTextField.text = "" buttonSizePickerSelectorView.text = ButtonSize.large.rawValue } - - override func updateView(viewModel: DefaultButtonModel) { - button.set(with: viewModel) - } func setupPicker(){ diff --git a/VDSSample/ViewControllers/CheckBoxGroupViewController.swift b/VDSSample/ViewControllers/CheckBoxGroupViewController.swift index e9ae872..307a858 100644 --- a/VDSSample/ViewControllers/CheckBoxGroupViewController.swift +++ b/VDSSample/ViewControllers/CheckBoxGroupViewController.swift @@ -11,14 +11,13 @@ import VDS import VDSColorTokens import Combine -class CheckboxGroupViewController: ModelScrollViewController { +class CheckboxGroupViewController: ModelScrollViewController { var disabledSwitch = UISwitch() var labelTextField = TextField() var childTextField = TextField() var showErrorSwitch = UISwitch() - var checkboxGroup = CheckboxGroup() override func viewDidLoad() { @@ -63,27 +62,20 @@ class CheckboxGroupViewController: ModelScrollViewController { +class CheckboxViewController: ModelScrollViewController { var disabledSwitch = UISwitch() var labelTextField = TextField() @@ -38,12 +38,6 @@ class CheckboxViewController: ModelScrollViewController { 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 @@ -76,18 +70,10 @@ class CheckboxViewController: ModelScrollViewController { } func setupModel() { - var defaultModel = DefaultCheckboxModel() - defaultModel.labelText = "Terms and conditions" - defaultModel.childText = "I agree to Verizon's terms and conditions click here" - defaultModel.errorText = "Error Text" - set(with: defaultModel) + checkbox.labelText = "Terms and conditions" + checkbox.childText = "I agree to Verizon's terms and conditions click here" + checkbox.errorText = "Error Text" - checkbox - .handlerPublisher() - .sink { [weak self] viewModel in - self?.model = viewModel - }.store(in: &subscribers) - checkbox .publisher(for: .valueChanged) .sink { checkbox in @@ -95,22 +81,15 @@ class CheckboxViewController: ModelScrollViewController { }.store(in: &subscribers) //setup UI - surfacePickerSelectorView.text = model.surface.rawValue - disabledSwitch.isOn = model.selected - labelTextField.text = model.labelText - childTextField.text = model.childText - showErrorSwitch.isOn = model.showError - errorTextField.text = model.errorText + surfacePickerSelectorView.text = checkbox.surface.rawValue + disabledSwitch.isOn = checkbox.disabled + labelTextField.text = checkbox.labelText + childTextField.text = checkbox.childText + showErrorSwitch.isOn = checkbox.showError + errorTextField.text = checkbox.errorText } - - override func updateView(viewModel: DefaultCheckboxModel) { - print("\(Self.self) updateView(viewModel)") - showErrorSwitch.isOn = viewModel.showError - disabledSwitch.isOn = viewModel.disabled - checkbox.set(with: viewModel) - } - + //Picker func setupPicker(){ surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in diff --git a/VDSSample/ViewControllers/LabelViewController.swift b/VDSSample/ViewControllers/LabelViewController.swift index 400c7b1..2996c1a 100644 --- a/VDSSample/ViewControllers/LabelViewController.swift +++ b/VDSSample/ViewControllers/LabelViewController.swift @@ -10,7 +10,7 @@ import UIKit import VDS import VDSColorTokens -class LabelViewController: ModelScrollViewController { +class LabelViewController: ModelScrollViewController { lazy var textSizePickerSelectorView = { TextSizePickerSelectorView(title: "", @@ -67,22 +67,14 @@ class LabelViewController: ModelScrollViewController { } func setupModel() { - var defaultModel = DefaultLabelModel() - defaultModel.text = "Label Component" - defaultModel.typograpicalStyle = .FeatureSmall - set(with: defaultModel) - - label - .handlerPublisher() - .sink { [weak self] viewModel in - self?.model = viewModel - }.store(in: &subscribers) + label.text = "Label Component" + label.typograpicalStyle = .FeatureSmall //setup UI - surfacePickerSelectorView.text = model.surface.rawValue - disabledSwitch.isOn = model.disabled + surfacePickerSelectorView.text = label.surface.rawValue + disabledSwitch.isOn = label.disabled boldSwitch.isOn = isBold - textField.text = model.text + textField.text = label.text //set the font fontCategory = .feature @@ -91,10 +83,6 @@ class LabelViewController: ModelScrollViewController { textSizePickerSelectorView.text = "Small" } - override func updateView(viewModel: DefaultLabelModel) { - label.set(with: viewModel) - } - //Picker private var fontCategory: TypographicalStyle.FontCategory = .feature { didSet { diff --git a/VDSSample/ViewControllers/ModelScrollViewController.swift b/VDSSample/ViewControllers/ModelScrollViewController.swift index 7b605c1..a6dabdf 100644 --- a/VDSSample/ViewControllers/ModelScrollViewController.swift +++ b/VDSSample/ViewControllers/ModelScrollViewController.swift @@ -10,7 +10,7 @@ import UIKit import Combine import VDS -public class ModelScrollViewController: UIViewController, ModelHandlerable, Initable { +public class ModelScrollViewController: UIViewController, ModelHandlerable, Initable { deinit { print("\(Self.self) deinit") } @@ -21,8 +21,7 @@ public class ModelScrollViewController: UIViewController, //-------------------------------------------------- // MARK: - Combine Properties //-------------------------------------------------- - @Published public var model: ModelType = ModelType() - public var modelPublisher: Published.Publisher { $model } + public var subject = PassthroughSubject() public var subscribers = Set() public var firstRender: Bool = false @@ -31,11 +30,9 @@ public class ModelScrollViewController: UIViewController, //-------------------------------------------------- private var initialSetupPerformed = false - @Proxy(\.model.surface) - open var surface: Surface + open var surface: Surface = .light { didSet { subject.send() }} - @Proxy(\.model.disabled) - open var disabled: Bool + open var disabled: Bool = false { didSet { subject.send() }} //-------------------------------------------------- // MARK: - Initializers @@ -43,15 +40,8 @@ public class ModelScrollViewController: UIViewController, required public init() { super.init(nibName: nil, bundle: nil) initialSetup() - set(with: model) } - - public required init(with model: ModelType) { - super.init(nibName: nil, bundle: nil) - initialSetup() - set(with: model) - } - + public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { super.init(nibName: nil, bundle: nil) initialSetup() @@ -206,6 +196,8 @@ public class ModelScrollViewController: UIViewController, open func setup() {} - open func updateView(viewModel: ModelType) {} - + open func updateView() { + print("\(Self.self) updateView()") + } + } diff --git a/VDSSample/ViewControllers/RadioBoxGroupViewController.swift b/VDSSample/ViewControllers/RadioBoxGroupViewController.swift index 0bb56d0..16e7014 100644 --- a/VDSSample/ViewControllers/RadioBoxGroupViewController.swift +++ b/VDSSample/ViewControllers/RadioBoxGroupViewController.swift @@ -11,7 +11,7 @@ import VDS import VDSColorTokens import Combine -class RadioBoxGroupViewController: ModelScrollViewController { +class RadioBoxGroupViewController: ModelScrollViewController { var disabledSwitch = UISwitch() var strikeThroughSwitch = UISwitch() @@ -71,33 +71,22 @@ class RadioBoxGroupViewController: ModelScrollViewController { +class RadioButtonViewController: ModelScrollViewController { var disabledSwitch = UISwitch() var labelTextField = TextField() @@ -63,36 +63,25 @@ class RadioButtonViewController: ModelScrollViewController { +class RadioSwatchGroupViewController: ModelScrollViewController { var disabledSwitch = UISwitch() var strikeThroughSwitch = UISwitch() @@ -39,93 +39,64 @@ class RadioSwatchGroupViewController: ModelScrollViewController { +class ToggleViewController: ModelScrollViewController { lazy var textSizePickerSelectorView = { PickerSelectorView(title: "", @@ -105,20 +105,14 @@ class ToggleViewController: ModelScrollViewController { textFormStackView.isHidden = true //setup UI - surfacePickerSelectorView.text = model.surface.rawValue - textSizePickerSelectorView.text = model.textSize.rawValue - textPositionPickerSelectorView.text = model.textPosition.rawValue - onTextField.text = model.onText - offTextField.text = model.offText + surfacePickerSelectorView.text = toggle.surface.rawValue + textSizePickerSelectorView.text = toggle.textSize.rawValue + textPositionPickerSelectorView.text = toggle.textPosition.rawValue + onTextField.text = toggle.onText + offTextField.text = toggle.offText } - override func updateView(viewModel: DefaultToggleModel) { - print("\(Self.self) updateView(viewModel)") - toggle.set(with: viewModel) - } - - //Picker - + //Picker func setupPicker(){ surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in