diff --git a/VDSSample/ViewControllers/BadgeViewController.swift b/VDSSample/ViewControllers/BadgeViewController.swift index 3fec5dd..aa199b0 100644 --- a/VDSSample/ViewControllers/BadgeViewController.swift +++ b/VDSSample/ViewControllers/BadgeViewController.swift @@ -110,11 +110,8 @@ class BadgeViewController: BaseViewController { extension BadgeViewController: ComponentSampleable { static func makeSample() -> ComponentSample { - let component = Self.makeComponent() - component.fillColor = .red - component.text = "Terms and conditions" - component.maxWidth = 70 - component.numberOfLines = 3 - return ComponentSample(component: component, trailingPinningType: .lessThanOrEqual) + let c = Self() + c.setupModel() + return ComponentSample(component: c.component, trailingPinningType: .lessThanOrEqual) } } diff --git a/VDSSample/ViewControllers/BaseViewController.swift b/VDSSample/ViewControllers/BaseViewController.swift index 7d24751..b461600 100644 --- a/VDSSample/ViewControllers/BaseViewController.swift +++ b/VDSSample/ViewControllers/BaseViewController.swift @@ -334,15 +334,33 @@ public class BaseViewController: UIViewController, Initable , viewController.didMove(toParent: self) } + var componentTrailingEqualConstraint: NSLayoutConstraint? + var componentTrailingLessThanEqualConstraint: NSLayoutConstraint? open func addContentTopView(view: UIView, edgeSpacing: CGFloat = 16.0, pinTrailing: Bool = true) { view.translatesAutoresizingMaskIntoConstraints = false + contentTopView.addSubview(view) + componentTrailingEqualConstraint = view.pinTrailing(anchor: contentTopView.trailingAnchor, constant: edgeSpacing)?.deactivate() + componentTrailingLessThanEqualConstraint = view.pinTrailingLessThanOrEqualTo(anchor: contentTopView.trailingAnchor, constant: edgeSpacing)?.deactivate() + view + .pinTop(edgeSpacing) + .pinLeading(edgeSpacing) + .pinBottom(edgeSpacing) + if pinTrailing { - contentTopView.addSubview(view) - view.pinToSuperView(.uniform(edgeSpacing)) + componentTrailingEqualConstraint?.activate() } else { - let wrapper = UIView.makeWrapper(for: view) - contentTopView.addSubview(wrapper) - wrapper.pinToSuperView(.uniform(edgeSpacing)) + componentTrailingLessThanEqualConstraint?.activate() + } + } + + open func updateComponentConstraint(pinTrailing: Bool = true) { + componentTrailingEqualConstraint?.deactivate() + componentTrailingLessThanEqualConstraint?.deactivate() + + if pinTrailing { + componentTrailingEqualConstraint?.activate() + } else { + componentTrailingLessThanEqualConstraint?.activate() } } diff --git a/VDSSample/ViewControllers/ButtonIconViewController.swift b/VDSSample/ViewControllers/ButtonIconViewController.swift index 23092cd..1a022a9 100644 --- a/VDSSample/ViewControllers/ButtonIconViewController.swift +++ b/VDSSample/ViewControllers/ButtonIconViewController.swift @@ -71,7 +71,7 @@ class ButtonIconViewController: BaseViewController { override func viewDidLoad() { super.viewDidLoad() - addContentTopView(view: component, pinTrailing: false) + addContentTopView(view: component, pinTrailing: false) setupPicker() setupModel() } diff --git a/VDSSample/ViewControllers/CalendarViewController.swift b/VDSSample/ViewControllers/CalendarViewController.swift index 846318e..99c513b 100644 --- a/VDSSample/ViewControllers/CalendarViewController.swift +++ b/VDSSample/ViewControllers/CalendarViewController.swift @@ -47,13 +47,6 @@ class CalendarViewController: BaseViewController { override func viewDidLoad() { super.viewDidLoad() addContentTopView(view: component) - component.minDate = Date().startOfMonth - component.maxDate = Date().endOfMonth - component.onChange = { [weak self] control in - self?.label.text = DateFormatter.localizedString(from: control.selectedDate, dateStyle: .short, timeStyle: .none) - } - minDatePicker.date = component.minDate - maxDatePicker.date = component.maxDate setupPicker() setupModel() } @@ -206,6 +199,13 @@ class CalendarViewController: BaseViewController { func setupModel() { let calendar = Calendar.current let indicatorDate = calendar.startOfDay(for: calendar.date(byAdding: .day, value: 1, to: Date())!) + component.minDate = Date().startOfMonth + component.maxDate = Date().endOfMonth + component.onChange = { [weak self] control in + self?.label.text = DateFormatter.localizedString(from: control.selectedDate, dateStyle: .short, timeStyle: .none) + } + minDatePicker.date = component.minDate + maxDatePicker.date = component.maxDate component.indicators = indicators legendOneField.text = "Due Date" legendTwoField.text = "Auto Pay" @@ -303,3 +303,11 @@ class CalendarViewController: BaseViewController { return day } } + +extension CalendarViewController: ComponentSampleable { + static func makeSample() -> ComponentSample { + let c = Self() + c.viewDidLoad() + return ComponentSample(component: c.component, edgeInset: .init(top: 16, left: 0, bottom: 16, right: 0)) + } +} diff --git a/VDSSample/ViewControllers/CarouselViewController.swift b/VDSSample/ViewControllers/CarouselViewController.swift index 89251b3..97596f1 100644 --- a/VDSSample/ViewControllers/CarouselViewController.swift +++ b/VDSSample/ViewControllers/CarouselViewController.swift @@ -219,3 +219,11 @@ class CarouselViewController: BaseViewController { } } } + +extension CarouselViewController: ComponentSampleable { + static func makeSample() -> ComponentSample { + let c = Self() + c.setupModel() + return ComponentSample(component: c.component) + } +} diff --git a/VDSSample/ViewControllers/CheckBoxGroupViewController.swift b/VDSSample/ViewControllers/CheckBoxGroupViewController.swift index e75a693..019157f 100644 --- a/VDSSample/ViewControllers/CheckBoxGroupViewController.swift +++ b/VDSSample/ViewControllers/CheckBoxGroupViewController.swift @@ -138,6 +138,6 @@ extension CheckboxGroupViewController: ComponentSampleable { component.selectorModels = [checkbox1, checkbox2] - return ComponentSample(component: component, trailingPinningType: .lessThanOrEqual) + return ComponentSample(component: component) } } diff --git a/VDSSample/ViewControllers/CheckboxItemViewController.swift b/VDSSample/ViewControllers/CheckboxItemViewController.swift index 2f3a4e3..b55404f 100644 --- a/VDSSample/ViewControllers/CheckboxItemViewController.swift +++ b/VDSSample/ViewControllers/CheckboxItemViewController.swift @@ -110,6 +110,6 @@ extension CheckboxItemViewController: ComponentSampleable { component.childText = "I agree to Verizon's terms and conditions click here" component.errorText = "Error Text" - return ComponentSample(component: component, trailingPinningType: .lessThanOrEqual) + return ComponentSample(component: component) } } diff --git a/VDSSample/ViewControllers/PriceLockupViewController.swift b/VDSSample/ViewControllers/PriceLockupViewController.swift index 1a2b59c..14144c6 100644 --- a/VDSSample/ViewControllers/PriceLockupViewController.swift +++ b/VDSSample/ViewControllers/PriceLockupViewController.swift @@ -142,3 +142,11 @@ class PriceLockupViewController: BaseViewController { } } } + +extension PriceLockupViewController: ComponentSampleable { + static func makeSample() -> ComponentSample { + let c = Self() + c.setupModel() + return ComponentSample(component: c.component) + } +} diff --git a/VDSSample/ViewControllers/RadioBoxGroupViewController.swift b/VDSSample/ViewControllers/RadioBoxGroupViewController.swift index 94c9cfa..f5abd47 100644 --- a/VDSSample/ViewControllers/RadioBoxGroupViewController.swift +++ b/VDSSample/ViewControllers/RadioBoxGroupViewController.swift @@ -140,6 +140,6 @@ extension RadioBoxGroupViewController: ComponentSampleable { component.selectorModels = [radioBox1, radioBox2] - return ComponentSample(component: component, trailingPinningType: .lessThanOrEqual) + return ComponentSample(component: component) } } diff --git a/VDSSample/ViewControllers/RadioButtonGroupViewController.swift b/VDSSample/ViewControllers/RadioButtonGroupViewController.swift index 67e2d8a..4bd5cae 100644 --- a/VDSSample/ViewControllers/RadioButtonGroupViewController.swift +++ b/VDSSample/ViewControllers/RadioButtonGroupViewController.swift @@ -133,6 +133,6 @@ extension RadioButtonGroupViewController: ComponentSampleable { component.selectorModels = [radioButton1, radioButton2, radioButton3] - return ComponentSample(component: component, trailingPinningType: .lessThanOrEqual) + return ComponentSample(component: component) } } diff --git a/VDSSample/ViewControllers/RadioButtonItemViewController.swift b/VDSSample/ViewControllers/RadioButtonItemViewController.swift index b84ce1c..0124577 100644 --- a/VDSSample/ViewControllers/RadioButtonItemViewController.swift +++ b/VDSSample/ViewControllers/RadioButtonItemViewController.swift @@ -105,6 +105,6 @@ extension RadioButtonItemViewController: ComponentSampleable { component.childText = "I agree to Verizon's terms and conditions click here" component.errorText = "Error Text" - return ComponentSample(component: component, trailingPinningType: .lessThanOrEqual) + return ComponentSample(component: component) } } diff --git a/VDSSample/ViewControllers/TableViewController.swift b/VDSSample/ViewControllers/TableViewController.swift index 767a359..4e8b25e 100644 --- a/VDSSample/ViewControllers/TableViewController.swift +++ b/VDSSample/ViewControllers/TableViewController.swift @@ -218,3 +218,11 @@ class TableViewController: BaseViewController { self.component.tableRows = rows } } + +extension TableViewController: ComponentSampleable { + static func makeSample() -> ComponentSample { + let c = Self() + c.setupModel() + return ComponentSample(component: c.component) + } +} diff --git a/VDSSample/ViewControllers/TableViewTestController.swift b/VDSSample/ViewControllers/TableViewTestController.swift index 8185cc3..b70e938 100644 --- a/VDSSample/ViewControllers/TableViewTestController.swift +++ b/VDSSample/ViewControllers/TableViewTestController.swift @@ -20,7 +20,7 @@ public struct ComponentSample { public enum LessThanPinningType: String { case none, equalTo, lessThanOrEqual } - + public var edgeInset: UIEdgeInsets = .uniform(16) public var top: GreaterThanPinningType = .equalTo public var leading: GreaterThanPinningType = .equalTo public var trailing: LessThanPinningType = .equalTo @@ -30,16 +30,18 @@ public struct ComponentSample { topPinningType: GreaterThanPinningType = .equalTo, leadingPinningType: GreaterThanPinningType = .equalTo, trailingPinningType: LessThanPinningType = .equalTo, - bottomPinningType: LessThanPinningType = .equalTo) { + bottomPinningType: LessThanPinningType = .equalTo, + edgeInset: UIEdgeInsets = .uniform(16)) { self.component = component self.top = topPinningType self.leading = leadingPinningType self.trailing = trailingPinningType self.bottom = bottomPinningType + self.edgeInset = edgeInset } - public func pin(edgeInset: UIEdgeInsets = .zero) { + public func pin() { guard let superview = component.superview else { return } switch top { @@ -126,10 +128,10 @@ public class TableViewTestController: UIViewController, Initable, Surfaceable { } } - let toggleSample = ComponentSample(component: toggle, leadingPinningType: .none) + let toggleSample = ComponentSample(component: toggle, leadingPinningType: .none, edgeInset: .init(top: 5, left: 0, bottom: 5, right: 16)) let wrapper = UIView().with { $0.translatesAutoresizingMaskIntoConstraints = false } wrapper.addSubview(toggle) - toggleSample.pin(edgeInset: .init(top: 5, left: 0, bottom: 5, right: 16)) + toggleSample.pin() let stackView = UIStackView(arrangedSubviews: [wrapper, tableView]).with { $0.translatesAutoresizingMaskIntoConstraints = false @@ -193,7 +195,7 @@ extension TableViewTestController : UITableViewDelegate, UITableViewDataSource { let cell = UITableViewCell() cell.contentView.addSubview(component) - sample.pin(edgeInset: .uniform(16)) + sample.pin() cell.backgroundColor = surface.color cell.layoutIfNeeded() return cell