diff --git a/VDSSample.xcodeproj/project.pbxproj b/VDSSample.xcodeproj/project.pbxproj index abcbff8..93bfb3b 100644 --- a/VDSSample.xcodeproj/project.pbxproj +++ b/VDSSample.xcodeproj/project.pbxproj @@ -651,7 +651,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 17; - DEVELOPMENT_TEAM = FCMA4QKS77; + DEVELOPMENT_TEAM = 59V5935DHZ; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; @@ -665,7 +665,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.vzw.VDSSample; + PRODUCT_BUNDLE_IDENTIFIER = com.vzw.enterprise.VDSSample; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; @@ -681,7 +681,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 17; - DEVELOPMENT_TEAM = FCMA4QKS77; + DEVELOPMENT_TEAM = 59V5935DHZ; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = VDSSample/Info.plist; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; diff --git a/VDSSample/ViewControllers/BaseViewController.swift b/VDSSample/ViewControllers/BaseViewController.swift index 06fc770..08b964c 100644 --- a/VDSSample/ViewControllers/BaseViewController.swift +++ b/VDSSample/ViewControllers/BaseViewController.swift @@ -10,6 +10,45 @@ import UIKit import Combine import VDS +public class FormSection: UIStackView { + public override init(frame: CGRect) { + super.init(frame: frame) + translatesAutoresizingMaskIntoConstraints = false + alignment = .fill + distribution = .fill + axis = .vertical + spacing = 10 + } + + public convenience init() { + self.init(frame: .zero) + } + + required init(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + open func addFormRow(label: String, view: UIView) { + let formRow = UIStackView().with { + $0.translatesAutoresizingMaskIntoConstraints = false + $0.alignment = .fill + $0.distribution = .fillEqually + $0.axis = .horizontal + $0.spacing = 5 + } + + let label = Label().with { + $0.text = label + $0.textStyle = .bodyLarge + } + + formRow.addArrangedSubview(label) + formRow.addArrangedSubview(view) + + addArrangedSubview(formRow) + } +} + public class BaseViewController: UIViewController, Initable { deinit { print("\(Self.self) deinit") @@ -85,15 +124,7 @@ public class BaseViewController: UIViewController, Initable { } }() - public var formStackView: UIStackView = { - return UIStackView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - $0.alignment = .fill - $0.distribution = .fill - $0.axis = .vertical - $0.spacing = 10 - } - }() + public var formStackView = FormSection() public var contentTopView: UIView = { return UIView().with { @@ -173,29 +204,12 @@ public class BaseViewController: UIViewController, Initable { view.pinToSuperView(.init(top: edgeSpacing, left: edgeSpacing, bottom: edgeSpacing, right: edgeSpacing)) } - open func addFormRow(label: String, view: UIView, stackView: UIStackView? = nil) { - let formRow = UIStackView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - $0.alignment = .fill - $0.distribution = .fillEqually - $0.axis = .horizontal - $0.spacing = 5 - } - - let label = Label().with { - $0.text = label - $0.textStyle = .bodyLarge - } - - formRow.addArrangedSubview(label) - formRow.addArrangedSubview(view) - - if let stackView { - stackView.addArrangedSubview(formRow) - } else { - formStackView.addArrangedSubview(formRow) - } + open func append(section: FormSection) { + formStackView.addArrangedSubview(section) + } + open func addFormRow(label: String, view: UIView) { + formStackView.addFormRow(label: label, view: view) if let pickerViewable = view as? any PickerViewable { pickerViewable.scrollToBottom = { [weak self] in self?.scrollToBottom() } } diff --git a/VDSSample/ViewControllers/TabsContainerViewController.swift b/VDSSample/ViewControllers/TabsContainerViewController.swift index 41588db..fd33f47 100644 --- a/VDSSample/ViewControllers/TabsContainerViewController.swift +++ b/VDSSample/ViewControllers/TabsContainerViewController.swift @@ -11,8 +11,10 @@ import VDS import Combine import VDSColorTokens + + class TabsContainerViewController: BaseViewController { - + var disabledSwitch = Toggle() var borderlineSwitch = Toggle() var fillContainerSwitch = Toggle() @@ -20,26 +22,8 @@ class TabsContainerViewController: BaseViewController { var widthValueTextField = NumericField() var widthPercentageTextField = NumericField() - var verticalOrientationFormStackView: UIStackView = { - return UIStackView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - $0.alignment = .fill - $0.distribution = .fill - $0.axis = .vertical - $0.spacing = 10 - $0.isHidden = true - } - }() - - var horizontalOrientationFormStackView: UIStackView = { - return UIStackView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - $0.alignment = .fill - $0.distribution = .fill - $0.axis = .vertical - $0.spacing = 10 - } - }() + var verticalOrientationFormStackView = FormSection() + var horizontalOrientationFormStackView = FormSection() override func allTextFields() -> [TextField]? { [widthValueTextField, widthPercentageTextField] } @@ -77,7 +61,6 @@ class TabsContainerViewController: BaseViewController { override func setupForm(){ super.setupForm() addFormRow(label: "Large Sample", view: .makeWrapper(for: sampleSwitch)) - addFormRow(label: "Disabled", view: .makeWrapper(for: disabledSwitch)) addFormRow(label: "Show Borderline", view: .makeWrapper(for: borderlineSwitch)) addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Size", view: sizePickerSelectorView) @@ -85,17 +68,17 @@ class TabsContainerViewController: BaseViewController { if UIDevice.isIPad { addFormRow(label: "Orientation", view: orientationPickerSelectorView) //only in vertical mode - addFormRow(label: "% Width (0.25 -> 1.0)", view: widthPercentageTextField, stackView: verticalOrientationFormStackView) - addFormRow(label: "# Width", view: widthValueTextField, stackView: verticalOrientationFormStackView) + verticalOrientationFormStackView.addFormRow(label: "% Width (0.25 -> 1.0)", view: widthPercentageTextField) + verticalOrientationFormStackView.addFormRow(label: "# Width", view: widthValueTextField) } //only in horizontal mode - addFormRow(label: "Fill Container", view: .makeWrapper(for: fillContainerSwitch), stackView: horizontalOrientationFormStackView) - addFormRow(label: "Indicator Position", view: indicatorPositionPickerSelectorView, stackView: horizontalOrientationFormStackView) - addFormRow(label: "Overflow", view: overflowPickerSelectorView, stackView: horizontalOrientationFormStackView) + horizontalOrientationFormStackView.addFormRow(label: "Fill Container", view: .makeWrapper(for: fillContainerSwitch)) + horizontalOrientationFormStackView.addFormRow(label: "Indicator Position", view: indicatorPositionPickerSelectorView) + horizontalOrientationFormStackView.addFormRow(label: "Overflow", view: overflowPickerSelectorView) - formStackView.addArrangedSubview(verticalOrientationFormStackView) - formStackView.addArrangedSubview(horizontalOrientationFormStackView) + append(section: verticalOrientationFormStackView) + append(section: horizontalOrientationFormStackView) disabledSwitch.onChange = { [weak self] sender in self?.component.disabled = sender.isOn @@ -151,7 +134,7 @@ class TabsContainerViewController: BaseViewController { func setupModel() { //set to the large sample component.tabModels = getAllTabs() - + //setup UI surfacePickerSelectorView.text = component.surface.rawValue sizePickerSelectorView.text = component.size.rawValue diff --git a/VDSSample/ViewControllers/TabsViewController.swift b/VDSSample/ViewControllers/TabsViewController.swift index d9fed6b..ce37a64 100644 --- a/VDSSample/ViewControllers/TabsViewController.swift +++ b/VDSSample/ViewControllers/TabsViewController.swift @@ -17,31 +17,8 @@ class TabsViewController: BaseViewController { var borderlineSwitch = Toggle() var fillContainerSwitch = Toggle() var sampleSwitch = Toggle() - var widthValueTextField = NumericField() - var widthPercentageTextField = NumericField() - var verticalOrientationFormStackView: UIStackView = { - return UIStackView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - $0.alignment = .fill - $0.distribution = .fillProportionally - $0.axis = .vertical - $0.spacing = 10 - $0.isHidden = true - } - }() - - var horizontalOrientationFormStackView: UIStackView = { - return UIStackView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - $0.alignment = .fill - $0.distribution = .fillProportionally - $0.axis = .vertical - $0.spacing = 10 - } - }() - - override func allTextFields() -> [TextField]? { [widthValueTextField, widthPercentageTextField] } + var horizontalOrientationFormStackView = FormSection() lazy var orientationPickerSelectorView = { PickerSelectorView(title: "", @@ -77,25 +54,20 @@ class TabsViewController: BaseViewController { override func setupForm(){ super.setupForm() addFormRow(label: "Large Sample", view: .makeWrapper(for: sampleSwitch)) - addFormRow(label: "Disabled", view: .makeWrapper(for: disabledSwitch)) addFormRow(label: "Show Borderline", view: .makeWrapper(for: borderlineSwitch)) addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Size", view: sizePickerSelectorView) - + if UIDevice.isIPad { addFormRow(label: "Orientation", view: orientationPickerSelectorView) -// //only in vertical mode -// addFormRow(label: "% Width (0.25 -> 1.0)", view: widthPercentageTextField, stackView: verticalOrientationFormStackView) -// addFormRow(label: "# Width", view: widthValueTextField, stackView: verticalOrientationFormStackView) } - + //only in horizontal mode - addFormRow(label: "Fill Container", view: .makeWrapper(for: fillContainerSwitch), stackView: horizontalOrientationFormStackView) - addFormRow(label: "Indicator Position", view: indicatorPositionPickerSelectorView, stackView: horizontalOrientationFormStackView) - addFormRow(label: "Overflow", view: overflowPickerSelectorView, stackView: horizontalOrientationFormStackView) + horizontalOrientationFormStackView.addFormRow(label: "Fill Container", view: .makeWrapper(for: fillContainerSwitch)) + horizontalOrientationFormStackView.addFormRow(label: "Indicator Position", view: indicatorPositionPickerSelectorView) + horizontalOrientationFormStackView.addFormRow(label: "Overflow", view: overflowPickerSelectorView) -// formStackView.addArrangedSubview(verticalOrientationFormStackView) - formStackView.addArrangedSubview(horizontalOrientationFormStackView) + append(section: horizontalOrientationFormStackView) disabledSwitch.onChange = { [weak self] sender in self?.component.disabled = sender.isOn @@ -114,22 +86,6 @@ class TabsViewController: BaseViewController { self.component.selectedIndex = 0 self.component.tabModels = sender.isOn ? self.allTabs : self.some } - -// widthValueTextField.textPublisher.sink { [weak self] text in -// if let value = Double(text) { -// self?.component.width = .value(value) -// self?.widthPercentageTextField.text = "" -// -// } -// }.store(in: &subscribers) -// -// widthPercentageTextField.textPublisher.sink { [weak self] text in -// if let value = Double(text) { -// self?.component.width = .percentage(value) -// self?.widthValueTextField.text = "" -// } -// }.store(in: &subscribers) - } var allTabs: [Tabs.TabModel] = [ @@ -158,7 +114,6 @@ class TabsViewController: BaseViewController { borderlineSwitch.isOn = component.borderLine fillContainerSwitch.isOn = component.fillContainer sampleSwitch.isOn = true -// updateWidth() } func setupPicker(){ @@ -173,7 +128,6 @@ class TabsViewController: BaseViewController { orientationPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.orientation = item - self?.verticalOrientationFormStackView.isHidden = item == .horizontal self?.horizontalOrientationFormStackView.isHidden = item == .vertical } @@ -185,16 +139,4 @@ class TabsViewController: BaseViewController { self?.component.overflow = item } } - -// func updateWidth() { -// switch component.width { -// case .percentage(let percentage): -// widthPercentageTextField.text = "\(percentage)" -// case .value(let value): -// widthValueTextField.text = "\(value)" -// widthPercentageTextField.text = "" -// @unknown default: -// print("") -// } -// } } diff --git a/VDSSample/ViewControllers/ToggleViewController.swift b/VDSSample/ViewControllers/ToggleViewController.swift index b256f26..0d38720 100644 --- a/VDSSample/ViewControllers/ToggleViewController.swift +++ b/VDSSample/ViewControllers/ToggleViewController.swift @@ -28,15 +28,7 @@ class ToggleViewController: BaseViewController { var disabledSwitch = Toggle() var showTextSwitch = Toggle() - var textFormStackView: UIStackView = { - return UIStackView().with { - $0.translatesAutoresizingMaskIntoConstraints = false - $0.alignment = .fill - $0.distribution = .fillProportionally - $0.axis = .vertical - $0.spacing = 10 - } - }() + var textFormStackView = FormSection() var boldSwitch = Toggle() var onTextField = TextField() @@ -59,13 +51,14 @@ class ToggleViewController: BaseViewController { addFormRow(label: "Disabled", view: .makeWrapper(for: disabledSwitch)) //add the hidden elements to textFormStackView - addFormRow(label: "Bold", view: .makeWrapper(for: boldSwitch), stackView: textFormStackView) - addFormRow(label: "Text Size", view: textSizePickerSelectorView, stackView: textFormStackView) - addFormRow(label: "Text Position", view: textPositionPickerSelectorView, stackView: textFormStackView) - addFormRow(label: "On Text", view: onTextField, stackView: textFormStackView) - addFormRow(label: "Off Text", view: offTextField, stackView: textFormStackView) + textFormStackView.addFormRow(label: "Bold", view: .makeWrapper(for: boldSwitch)) + textFormStackView.addFormRow(label: "Text Size", view: textSizePickerSelectorView) + textFormStackView.addFormRow(label: "Text Position", view: textPositionPickerSelectorView) + textFormStackView.addFormRow(label: "On Text", view: onTextField) + textFormStackView.addFormRow(label: "Off Text", view: offTextField) + //add textFormStackView to main form - formStackView.addArrangedSubview(textFormStackView) + append(section: textFormStackView) component.onChange = { [weak self] toggle in let alertController:UIAlertController = UIAlertController(title: "Alert",