diff --git a/VDSSample/Extensions/IconName.swift b/VDSSample/Extensions/IconName.swift index 6d98811..07a817c 100644 --- a/VDSSample/Extensions/IconName.swift +++ b/VDSSample/Extensions/IconName.swift @@ -126,15 +126,11 @@ extension IconName { static let flexibilityRectangles = IconName(name: "flexibility-rectangles") static let flexibility = IconName(name: "flexibility") static let gateway = IconName(name: "gateway") - static let leftArrow = IconName(name: "left-arrow") - static let leftCaret = IconName(name: "left-caret") static let minus = IconName(name: "minus") static let moreFlexibility = IconName(name: "more-flexibility") static let noOff = IconName(name: "no-off") static let no = IconName(name: "no") static let plus = IconName(name: "plus") - static let rightArrow = IconName(name: "right-arrow") - static let rightCaret = IconName(name: "right-caret") static let swipeLeft = IconName(name: "swipe-left") static let swipeRight = IconName(name: "swipe-right") static let swipe = IconName(name: "swipe") @@ -248,7 +244,6 @@ extension IconName { static let mobilePlusTv = IconName(name: "mobile-plus-tv") static let mobileRetargeting = IconName(name: "mobile-retargeting") static let motionDetector = IconName(name: "motion-detector") - static let multipleDocuments = IconName(name: "multiple-documents") static let music = IconName(name: "music") static let nativeVideo = IconName(name: "native-video") static let native = IconName(name: "native") diff --git a/VDSSample/ViewControllers/TileContainerViewController.swift b/VDSSample/ViewControllers/TileContainerViewController.swift index e59486f..013dc4e 100644 --- a/VDSSample/ViewControllers/TileContainerViewController.swift +++ b/VDSSample/ViewControllers/TileContainerViewController.swift @@ -9,6 +9,7 @@ import Foundation import UIKit import VDS import VDSColorTokens +import Combine class TileContainerViewController: BaseViewController { @@ -34,6 +35,9 @@ class TileContainerViewController: BaseViewController { items: TileContainer.ContainerScalingType.allCases) }() + var clickableSwitch = Toggle() + var clickableCancel: AnyCancellable? + var showBackgroundImageSwitch = Toggle() var showBorderSwitch = Toggle() var showDropShadowSwitch = Toggle() @@ -46,20 +50,20 @@ class TileContainerViewController: BaseViewController { override func viewDidLoad() { super.viewDidLoad() addContentTopView(view: .makeWrapper(for: tileContainer)) - + tileContainer.width = 150 setupForm() setupPicker() setupModel() } override func allTextFields() -> [TextField]? { [widthTextField, heightTextField] } - func setupForm(){ formStackView.addArrangedSubview(Label().with{ $0.typograpicalStyle = .BoldBodyLarge $0.text = "This object does NOT reflect normal \"surface\" changes, all properties are maually set" }) addFormRow(label: "Surface", view: surfacePickerSelectorView) + addFormRow(label: "Clickable", view: .makeWrapper(for: clickableSwitch)) addFormRow(label: "Width", view: widthTextField) addFormRow(label: "Height", view: heightTextField) addFormRow(label: "Show Border", view: showBorderSwitch) @@ -67,9 +71,24 @@ class TileContainerViewController: BaseViewController { addFormRow(label: "Background Color", view: backgroundColorPickerSelectorView) addFormRow(label: "Padding", view: paddingPickerSelectorView) addFormRow(label: "Aspect Ratio", view: scalingTypePickerSelectorView) - addFormRow(label: "Background Image", view: showBackgroundImageSwitch) + addFormRow(label: "Background Image", view: .makeWrapper(for: showBackgroundImageSwitch)) addFormRow(label: "Image Fallback Color", view: imageFallbackColorPickerSelectorView) + clickableSwitch + .publisher(for: .valueChanged) + .sink { [weak self] sender in + if sender.isOn { + self?.clickableCancel = self?.tileContainer + .publisher(for: .touchUpInside) + .sink(receiveValue: { _ in + print("you click on me!") + }) + } else { + self?.clickableCancel?.cancel() + self?.clickableCancel = nil + } + }.store(in: &subscribers) + showBackgroundImageSwitch .publisher(for: .valueChanged) .sink { [weak self] sender in @@ -117,7 +136,7 @@ class TileContainerViewController: BaseViewController { surfacePickerSelectorView.text = tileContainer.surface.rawValue paddingPickerSelectorView.text = tileContainer.containerPadding.rawValue scalingTypePickerSelectorView.text = tileContainer.aspectRatio.rawValue - widthTextField.text = "\(tileContainer.width)" + widthTextField.text = tileContainer.width != nil ? "\(tileContainer.width!)" : "" heightTextField.text = tileContainer.height != nil ? "\(tileContainer.height!)" : "" } diff --git a/VDSSample/ViewControllers/TiletViewController.swift b/VDSSample/ViewControllers/TiletViewController.swift index b7d9e28..57b5621 100644 --- a/VDSSample/ViewControllers/TiletViewController.swift +++ b/VDSSample/ViewControllers/TiletViewController.swift @@ -9,6 +9,7 @@ import Foundation import UIKit import VDS import VDSColorTokens +import Combine class TiletViewController: BaseViewController { @@ -30,6 +31,9 @@ class TiletViewController: BaseViewController { items: [.primary, .secondary]) }() + var clickableSwitch = Toggle() + var clickableCancel: AnyCancellable? + var titleTextField = TextField() var subTitleTextField = TextField() var widthTextField = NumericField() @@ -37,7 +41,8 @@ class TiletViewController: BaseViewController { var textPercentageTextField = NumericField() var textWidthTextField = NumericField() - var showBadgeSwitch = Toggle() + var showDescriptionIconSwitch = Toggle() + var showDirectionalIconSwitch = Toggle() var badgeTextField = TextField() var tilet = Tilet() @@ -54,7 +59,8 @@ class TiletViewController: BaseViewController { func setupForm(){ addFormRow(label: "Surface", view: surfacePickerSelectorView) - + addFormRow(label: "Clickable", view: .makeWrapper(for: clickableSwitch)) + addFormRow(label: "Title Style", view: titleTextStylePickerSelectorView) addFormRow(label: "Other Style", view: otherTextStylePickerSelectorView) @@ -62,11 +68,27 @@ class TiletViewController: BaseViewController { addFormRow(label: "Subtitle Color", view: subtitleColorPickerSelectorView) addFormRow(label: "Subtitle Text", view: subTitleTextField) addFormRow(label: "Width", view: widthTextField) - addFormRow(label: "Height", view: heightTextField) + //addFormRow(label: "Height", view: heightTextField) addFormRow(label: "Text Width", view: textWidthTextField) addFormRow(label: "Text Percentage", view: badgeTextField) - addFormRow(label: "Badge Text", view: badgeTextField) + addFormRow(label: "Description Icon", view: .makeWrapper(for: showDescriptionIconSwitch)) + addFormRow(label: "Directional Icon", view: .makeWrapper(for: showDirectionalIconSwitch)) + + clickableSwitch + .publisher(for: .valueChanged) + .sink { [weak self] sender in + if sender.isOn { + self?.clickableCancel = self?.tilet + .publisher(for: .touchUpInside) + .sink(receiveValue: { _ in + print("you click on me!") + }) + } else { + self?.clickableCancel?.cancel() + self?.clickableCancel = nil + } + }.store(in: &subscribers) widthTextField .textPublisher @@ -90,7 +112,7 @@ class TiletViewController: BaseViewController { .textPublisher .sink { [weak self] text in guard let self else { return } - if let n = NumberFormatter().number(from: text), n.floatValue > 50.0 && n.floatValue <= Float(self.tilet.width) { + if let n = NumberFormatter().number(from: text), n.floatValue > 50.0 { self.tilet.textWidth = CGFloat(truncating: n) self.textPercentageTextField.text = "" } else { @@ -126,6 +148,29 @@ class TiletViewController: BaseViewController { .sink { [weak self] text in self?.setBadgeModel() }.store(in: &subscribers) + + showDescriptionIconSwitch + .publisher(for: .valueChanged) + .sink { [weak self] sender in + if sender.isOn { + self?.showDirectionalIconSwitch.isOn = false + self?.tilet.descriptiveIconModel = .init(size: .medium, surface: .dark) + } else { + self?.tilet.descriptiveIconModel = nil + } + }.store(in: &subscribers) + + showDirectionalIconSwitch + .publisher(for: .valueChanged) + .sink { [weak self] sender in + if sender.isOn { + self?.showDescriptionIconSwitch.isOn = false + self?.tilet.directionalIconModel = .init(size: .medium, surface: .dark) + } else { + self?.tilet.directionalIconModel = nil + } + }.store(in: &subscribers) + } func setupModel() { @@ -133,9 +178,9 @@ class TiletViewController: BaseViewController { let subTitleModel = TiletSubTitleModel(text: "Enroll in Auto Pay & paper-free billing to save on your monthly bill.") tilet.surface = .light - tilet.width = 312 tilet.titleModel = titleModel tilet.subTitleModel = subTitleModel + //setup UI surfacePickerSelectorView.text = tilet.surface.rawValue otherTextStylePickerSelectorView.text = subTitleModel.typographicalStyle.rawValue @@ -143,7 +188,7 @@ class TiletViewController: BaseViewController { subtitleColorPickerSelectorView.text = subTitleModel.textColor.rawValue titleTextField.text = titleModel.text subTitleTextField.text = subTitleModel.text - widthTextField.text = "\(tilet.width)" + widthTextField.text = tilet.width != nil ? "\(tilet.width!)" : "" } //sub models