diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index 04408f2..185e3e0 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -54,7 +54,7 @@ EA89204E28B67332006B9984 /* CheckBoxGroupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89204D28B67332006B9984 /* CheckBoxGroupViewController.swift */; }; EA89205128B68307006B9984 /* TextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89205028B68307006B9984 /* TextField.swift */; }; EAA5EEAD28EB6924003B3210 /* TextEntryFieldViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAA5EEAC28EB6924003B3210 /* TextEntryFieldViewController.swift */; }; - EAB1D2C928AAAA1D00DAE764 /* ModelScrollViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D2C828AAAA1D00DAE764 /* ModelScrollViewController.swift */; }; + EAB1D2C928AAAA1D00DAE764 /* BaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D2C828AAAA1D00DAE764 /* BaseViewController.swift */; }; EAB1D2D428AC409F00DAE764 /* LabelViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D2D328AC409F00DAE764 /* LabelViewController.swift */; }; EAF7F07D2899698800B287F5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EAF7F07B2899698800B287F5 /* Assets.xcassets */; }; EAF7F09C2899B92400B287F5 /* CheckboxViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F09B2899B92400B287F5 /* CheckboxViewController.swift */; }; @@ -118,7 +118,7 @@ EA89204D28B67332006B9984 /* CheckBoxGroupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckBoxGroupViewController.swift; sourceTree = ""; }; EA89205028B68307006B9984 /* TextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextField.swift; sourceTree = ""; }; EAA5EEAC28EB6924003B3210 /* TextEntryFieldViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextEntryFieldViewController.swift; sourceTree = ""; }; - EAB1D2C828AAAA1D00DAE764 /* ModelScrollViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModelScrollViewController.swift; sourceTree = ""; }; + EAB1D2C828AAAA1D00DAE764 /* BaseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseViewController.swift; sourceTree = ""; }; EAB1D2D328AC409F00DAE764 /* LabelViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelViewController.swift; sourceTree = ""; }; EAF7F07B2899698800B287F5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; EAF7F09B2899B92400B287F5 /* CheckboxViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckboxViewController.swift; sourceTree = ""; }; @@ -249,7 +249,7 @@ children = ( EA89203E28B66CE2006B9984 /* ScrollViewController */, EA3C3BB228996775000CA526 /* MenuViewController.swift */, - EAB1D2C828AAAA1D00DAE764 /* ModelScrollViewController.swift */, + EAB1D2C828AAAA1D00DAE764 /* BaseViewController.swift */, EA4DB30328DCD25B00103EE3 /* BadgeViewController.swift */, 5FC35BE828D5235A004EBEAC /* ButtonViewController.swift */, EA89204D28B67332006B9984 /* CheckBoxGroupViewController.swift */, @@ -416,7 +416,7 @@ 5FC35BE928D5235A004EBEAC /* ButtonViewController.swift in Sources */, EA89204A28B66CE2006B9984 /* KeyboardFrameChange.swift in Sources */, EA3C3BB428996775000CA526 /* PickerBase.swift in Sources */, - EAB1D2C928AAAA1D00DAE764 /* ModelScrollViewController.swift in Sources */, + EAB1D2C928AAAA1D00DAE764 /* BaseViewController.swift in Sources */, EA89204728B66CE2006B9984 /* KeyboardFrameChangeListener.swift in Sources */, EA4DB30428DCD25B00103EE3 /* BadgeViewController.swift in Sources */, EA89204828B66CE2006B9984 /* ScrollViewKeyboardAvoiding.swift in Sources */, diff --git a/VDSSample/Supporting Files/Resources/Assets.xcassets/imageSwatch.imageset/Contents.json b/VDSSample/Supporting Files/Resources/Assets.xcassets/imageSwatch.imageset/Contents.json index 3e12c2e..b722c8f 100644 --- a/VDSSample/Supporting Files/Resources/Assets.xcassets/imageSwatch.imageset/Contents.json +++ b/VDSSample/Supporting Files/Resources/Assets.xcassets/imageSwatch.imageset/Contents.json @@ -2,16 +2,7 @@ "images" : [ { "filename" : "S_1590095FQ_975.jpeg", - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" + "idiom" : "universal" } ], "info" : { diff --git a/VDSSample/ViewControllers/BadgeViewController.swift b/VDSSample/ViewControllers/BadgeViewController.swift index 718b323..c2324e9 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: BaseViewController { enum NumberOfLines: String, CaseIterable { case unlimited @@ -72,7 +72,7 @@ class BadgeViewController: ModelScrollViewController { addFormRow(label: "Fill Color", view: fillColorPickerSelectorView) addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Text", view: textField) - addFormRow(label: "Width", view: maxWidthTextField) + addFormRow(label: "Max Width", view: maxWidthTextField) addFormRow(label: "Number of Lines", view: numberOfLinesPickerSelectorView) textField @@ -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/ModelScrollViewController.swift b/VDSSample/ViewControllers/BaseViewController.swift similarity index 92% rename from VDSSample/ViewControllers/ModelScrollViewController.swift rename to VDSSample/ViewControllers/BaseViewController.swift index 7b605c1..a0cb5bc 100644 --- a/VDSSample/ViewControllers/ModelScrollViewController.swift +++ b/VDSSample/ViewControllers/BaseViewController.swift @@ -10,7 +10,7 @@ import UIKit import Combine import VDS -public class ModelScrollViewController: UIViewController, ModelHandlerable, Initable { +public class BaseViewController: UIViewController, Initable { deinit { print("\(Self.self) deinit") } @@ -21,8 +21,6 @@ public class ModelScrollViewController: UIViewController, //-------------------------------------------------- // MARK: - Combine Properties //-------------------------------------------------- - @Published public var model: ModelType = ModelType() - public var modelPublisher: Published.Publisher { $model } public var subscribers = Set() public var firstRender: Bool = false @@ -30,12 +28,6 @@ public class ModelScrollViewController: UIViewController, // MARK: - Properties //-------------------------------------------------- private var initialSetupPerformed = false - - @Proxy(\.model.surface) - open var surface: Surface - - @Proxy(\.model.disabled) - open var disabled: Bool //-------------------------------------------------- // MARK: - Initializers @@ -43,15 +35,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() @@ -69,7 +54,7 @@ public class ModelScrollViewController: UIViewController, public func initialSetup() { if !initialSetupPerformed { initialSetupPerformed = true - setupUpdateView() + //setupUpdateView() setup() contentTopView.backgroundColor = Surface.light.color surfacePickerSelectorView.scrollToBottom = { [weak self] in self?.scrollToBottom()} @@ -206,6 +191,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/ButtonViewController.swift b/VDSSample/ViewControllers/ButtonViewController.swift index 913e390..1c54991 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: BaseViewController { 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..1352ced 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: BaseViewController { var disabledSwitch = UISwitch() var labelTextField = TextField() var childTextField = TextField() var showErrorSwitch = UISwitch() - var checkboxGroup = CheckboxGroup() override func viewDidLoad() { @@ -63,31 +62,24 @@ class CheckboxGroupViewController: ModelScrollViewController { +class CheckboxViewController: BaseViewController { 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..96589ed 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: BaseViewController { 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/RadioBoxGroupViewController.swift b/VDSSample/ViewControllers/RadioBoxGroupViewController.swift index 0bb56d0..c82b720 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: BaseViewController { var disabledSwitch = UISwitch() var strikeThroughSwitch = UISwitch() @@ -71,55 +71,37 @@ class RadioBoxGroupViewController: ModelScrollViewController { +class RadioButtonViewController: BaseViewController { var disabledSwitch = UISwitch() var labelTextField = TextField() @@ -63,56 +63,38 @@ class RadioButtonViewController: ModelScrollViewController { +class RadioSwatchGroupViewController: BaseViewController { var disabledSwitch = UISwitch() var strikeThroughSwitch = UISwitch() @@ -39,93 +39,64 @@ class RadioSwatchGroupViewController: ModelScrollViewController { +class ToggleViewController: BaseViewController { lazy var textSizePickerSelectorView = { - TextSizePickerSelectorView(title: "Small", - picker: self.picker) + PickerSelectorView(title: "", + picker: self.picker, + items: ToggleTextSize.allCases) + }() lazy var textPositionPickerSelectorView = { - TextPositionPickerSelectorView(picker: self.picker) + PickerSelectorView(title: "", + picker: self.picker, + items: ToggleTextPosition.allCases) }() var disabledSwitch = UISwitch() @@ -83,7 +87,7 @@ class ToggleViewController: ModelScrollViewController { boldSwitch .publisher(for: .valueChanged) .sink { [weak self] sender in - self?.toggle.isBold = sender.isOn + self?.toggle.textWeight = sender.isOn ? .bold : .regular }.store(in: &subscribers) onTextField @@ -99,15 +103,16 @@ class ToggleViewController: ModelScrollViewController { }.store(in: &subscribers) textFormStackView.isHidden = true + + //setup UI + 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 @@ -116,7 +121,7 @@ class ToggleViewController: ModelScrollViewController { } textSizePickerSelectorView.onPickerDidSelect = { [weak self] item in - self?.toggle.fontSize = item + self?.toggle.textSize = item } textPositionPickerSelectorView.onPickerDidSelect = { [weak self] item in