refactored picker logic
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
b760d32e4b
commit
5337f30843
@ -8,20 +8,73 @@
|
||||
import Foundation
|
||||
import UIKit
|
||||
import VDS
|
||||
import Combine
|
||||
|
||||
protocol PickerViewable {
|
||||
public struct PickerType : RawRepresentable, Equatable, Hashable {
|
||||
public var rawValue: String
|
||||
public init(_ rawValue: String) {
|
||||
self.rawValue = rawValue
|
||||
}
|
||||
public init(rawValue: String) {
|
||||
self.rawValue = rawValue
|
||||
}
|
||||
|
||||
public static var surface = PickerType(rawValue: "surface")
|
||||
public static var textPosition = PickerType(rawValue: "textPosition")
|
||||
public static var textSize = PickerType(rawValue: "textSize")
|
||||
public static var fontCategory = PickerType(rawValue: "fontCategory")
|
||||
}
|
||||
|
||||
protocol PickerViewable: UIPickerViewDataSource, UIPickerViewDelegate, Hashable {
|
||||
associatedtype EnumType: RawRepresentable
|
||||
var items: [EnumType] { get set }
|
||||
var onPickerDidSelect: ((EnumType) -> Void)? { get set }
|
||||
}
|
||||
|
||||
class PickerBase<EnumType: RawRepresentable>: NSObject, PickerViewable, UIPickerViewDataSource, UIPickerViewDelegate {
|
||||
var items: [EnumType]
|
||||
class PickerSelectorView<EnumType: RawRepresentable>: UIStackView, PickerViewable {
|
||||
private weak var picker: UIPickerView?
|
||||
fileprivate var selectedIndex = 0
|
||||
private var subscribers = Set<AnyCancellable>()
|
||||
private var label = UILabel()
|
||||
private var button = UIButton(type: .system).with { instance in
|
||||
instance.configuration = .filled()
|
||||
instance.setTitle("Select", for: .normal)
|
||||
}
|
||||
|
||||
var text: String = "" {
|
||||
didSet {
|
||||
label.text = text
|
||||
}
|
||||
}
|
||||
var items: [EnumType] {
|
||||
didSet { selectedIndex = 0 }
|
||||
}
|
||||
var onPickerDidSelect: ((EnumType) -> Void)?
|
||||
|
||||
init(items: [EnumType]) {
|
||||
init(title: String, picker: UIPickerView? = nil, items: [EnumType]) {
|
||||
self.picker = picker
|
||||
self.items = items
|
||||
super.init()
|
||||
super.init(frame: .zero)
|
||||
|
||||
self.axis = .horizontal
|
||||
self.distribution = .fillEqually
|
||||
self.alignment = .fill
|
||||
label.text = title
|
||||
addArrangedSubview(label)
|
||||
addArrangedSubview(button)
|
||||
button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.picker?.delegate = self
|
||||
self?.picker?.dataSource = self
|
||||
self?.picker?.reloadAllComponents()
|
||||
self?.picker?.selectRow(self?.selectedIndex ?? 0, inComponent: 0, animated: false)
|
||||
self?.picker?.isHidden = false
|
||||
}.store(in: &subscribers)
|
||||
}
|
||||
|
||||
required init(coder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
func numberOfComponents(in pickerView: UIPickerView) -> Int {
|
||||
@ -39,32 +92,15 @@ class PickerBase<EnumType: RawRepresentable>: NSObject, PickerViewable, UIPicker
|
||||
|
||||
func pickerView( _ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
|
||||
guard row - 1 >= 0 else { return }
|
||||
selectedIndex = row
|
||||
onPickerDidSelect?(items[row-1])
|
||||
pickerView.isHidden = true
|
||||
}
|
||||
}
|
||||
|
||||
class PickerSelectorView: UIStackView {
|
||||
private var label = UILabel()
|
||||
var button = UIButton(type: .system).with { instance in
|
||||
instance.configuration = .filled()
|
||||
instance.setTitle("Select", for: .normal)
|
||||
}
|
||||
|
||||
var text: String = "" {
|
||||
didSet {
|
||||
label.text = text
|
||||
}
|
||||
}
|
||||
|
||||
init(title: String){
|
||||
super.init(frame: .zero)
|
||||
self.axis = .horizontal
|
||||
self.distribution = .fillEqually
|
||||
self.alignment = .fill
|
||||
label.text = title
|
||||
addArrangedSubview(label)
|
||||
addArrangedSubview(button)
|
||||
class SurfacePickerSelectorView: PickerSelectorView<Surface>{
|
||||
init(picker: UIPickerView? = nil){
|
||||
super.init(title: "light", picker: picker, items: [.light, .dark])
|
||||
}
|
||||
|
||||
required init(coder: NSCoder) {
|
||||
@ -72,34 +108,32 @@ class PickerSelectorView: UIStackView {
|
||||
}
|
||||
}
|
||||
|
||||
class SurfacePicker: PickerBase<Surface> {
|
||||
init(){
|
||||
super.init(items: [.light, .dark])
|
||||
class TextPositionPickerSelectorView: PickerSelectorView<TextPosition>{
|
||||
init(picker: UIPickerView? = nil){
|
||||
super.init(title: "left", picker: picker, items: [.left, .right])
|
||||
}
|
||||
|
||||
required init(coder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
}
|
||||
|
||||
class TextPositionPicker: PickerBase<TextPosition> {
|
||||
init(){
|
||||
super.init(items: [.left, .right])
|
||||
class TextSizePickerSelectorView: PickerSelectorView<TypographicalStyle.FontSize>{
|
||||
init(title: String, picker: UIPickerView? = nil){
|
||||
super.init(title: title, picker: picker, items: [.small, .large])
|
||||
}
|
||||
|
||||
required init(coder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
}
|
||||
|
||||
class TextSizePicker: PickerBase<TypographicalStyle.FontSize> {
|
||||
init(){
|
||||
super.init(items: [.small, .large])
|
||||
class FontCategoryPickerSelectorView: PickerSelectorView<TypographicalStyle.FontCategory>{
|
||||
init(title: String, picker: UIPickerView? = nil){
|
||||
super.init(title: title, picker: picker, items: TypographicalStyle.FontCategory.allCases)
|
||||
}
|
||||
|
||||
required init(coder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
}
|
||||
|
||||
class FontCategoryPicker: PickerBase<TypographicalStyle.FontCategory> {
|
||||
init(){
|
||||
super.init(items: TypographicalStyle.FontCategory.allCases)
|
||||
}
|
||||
}
|
||||
|
||||
class UsePicker: PickerBase<Use> {
|
||||
init(){
|
||||
super.init(items: [.primary, .secondary])
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -12,11 +12,7 @@ import VDSColorTokens
|
||||
import Combine
|
||||
|
||||
class BadgeViewController: ModelScrollViewController<DefaultBadgeModel> {
|
||||
|
||||
enum PickerType {
|
||||
case surface, fillColor, numberOfLines
|
||||
}
|
||||
|
||||
|
||||
enum NumberOfLines: String, CaseIterable {
|
||||
case unlimited
|
||||
case one
|
||||
@ -40,10 +36,23 @@ class BadgeViewController: ModelScrollViewController<DefaultBadgeModel> {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
lazy var fillColorPickerSelectorView = {
|
||||
PickerSelectorView(title: "red",
|
||||
picker: self.picker,
|
||||
items: BadgeFillColor.allCases)
|
||||
}()
|
||||
|
||||
lazy var numberOfLinesPickerSelectorView = {
|
||||
PickerSelectorView(title: "one",
|
||||
picker: self.picker,
|
||||
items: NumberOfLines.allCases)
|
||||
}()
|
||||
|
||||
lazy var surfacePickerSelectorView = {
|
||||
SurfacePickerSelectorView(picker: self.picker)
|
||||
}()
|
||||
|
||||
var fillColorPickerSelectorView = PickerSelectorView(title: "red")
|
||||
var numberOfLinesPickerSelectorView = PickerSelectorView(title: "one")
|
||||
var surfacePickerSelectorView = PickerSelectorView(title: "light")
|
||||
var textField = TextField()
|
||||
var maxWidthTextField = TextField()
|
||||
var badge = Badge()
|
||||
@ -85,25 +94,6 @@ class BadgeViewController: ModelScrollViewController<DefaultBadgeModel> {
|
||||
}
|
||||
self?.badge.maxWidth = float
|
||||
}.store(in: &subscribers)
|
||||
|
||||
surfacePickerSelectorView.button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.pickerType = .surface
|
||||
}.store(in: &subscribers)
|
||||
|
||||
fillColorPickerSelectorView.button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.pickerType = .fillColor
|
||||
}.store(in: &subscribers)
|
||||
|
||||
numberOfLinesPickerSelectorView.button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.pickerType = .numberOfLines
|
||||
}.store(in: &subscribers)
|
||||
|
||||
}
|
||||
|
||||
func setupModel() {
|
||||
@ -130,49 +120,23 @@ class BadgeViewController: ModelScrollViewController<DefaultBadgeModel> {
|
||||
print("\(Self.self) updateView(viewModel)")
|
||||
badge.set(with: viewModel)
|
||||
}
|
||||
|
||||
//Picker
|
||||
var surfacePicker = SurfacePicker()
|
||||
var fillColorPicker = PickerBase<BadgeFillColor>.init(items: BadgeFillColor.allCases)
|
||||
var numberOfLinesPicker = PickerBase<NumberOfLines>.init(items: NumberOfLines.allCases)
|
||||
|
||||
var pickerType: PickerType = .surface {
|
||||
didSet {
|
||||
func update(object: UIPickerViewDelegate & UIPickerViewDataSource){
|
||||
picker.delegate = object
|
||||
picker.dataSource = object
|
||||
}
|
||||
|
||||
switch pickerType{
|
||||
case .surface:
|
||||
update(object: surfacePicker)
|
||||
case .fillColor:
|
||||
update(object: fillColorPicker)
|
||||
case .numberOfLines:
|
||||
update(object: numberOfLinesPicker)
|
||||
}
|
||||
picker.reloadAllComponents()
|
||||
picker.selectRow(0, inComponent: 0, animated: false)
|
||||
picker.isHidden = false
|
||||
}
|
||||
}
|
||||
|
||||
func setupPicker(){
|
||||
surfacePicker.onPickerDidSelect = { [weak self] item in
|
||||
|
||||
surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||
self?.badge.surface = item
|
||||
self?.contentTopView.backgroundColor = item.color
|
||||
self?.surfacePickerSelectorView.text = item.rawValue
|
||||
}
|
||||
|
||||
fillColorPicker.onPickerDidSelect = { [weak self] item in
|
||||
fillColorPickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||
self?.badge.fillColor = item
|
||||
self?.fillColorPickerSelectorView.text = item.rawValue
|
||||
}
|
||||
|
||||
numberOfLinesPicker.onPickerDidSelect = { [weak self] item in
|
||||
numberOfLinesPickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||
self?.badge.numberOfLines = item.intValue
|
||||
self?.numberOfLinesPickerSelectorView.text = item.rawValue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -11,13 +11,22 @@ import VDS
|
||||
import VDSColorTokens
|
||||
|
||||
class ButtonViewController: ModelScrollViewController<DefaultButtonModel> {
|
||||
|
||||
enum PickerType {
|
||||
case surface, use, buttonSize
|
||||
}
|
||||
var surfacePickerSelectorView = PickerSelectorView(title: "")
|
||||
var usePickerSelectorView = PickerSelectorView(title: "")
|
||||
var buttonSizePickerSelectorView = PickerSelectorView(title: "")
|
||||
|
||||
lazy var surfacePickerSelectorView = {
|
||||
SurfacePickerSelectorView(picker: self.picker)
|
||||
}()
|
||||
|
||||
lazy var usePickerSelectorView = {
|
||||
PickerSelectorView<Use>(title: "",
|
||||
picker: self.picker,
|
||||
items: [.primary, .secondary])
|
||||
}()
|
||||
|
||||
lazy var buttonSizePickerSelectorView = {
|
||||
PickerSelectorView(title: "",
|
||||
picker: self.picker,
|
||||
items: ButtonSize.allCases)
|
||||
}()
|
||||
|
||||
var disabledSwitch = UISwitch()
|
||||
var textField = TextField()
|
||||
@ -55,18 +64,6 @@ class ButtonViewController: ModelScrollViewController<DefaultButtonModel> {
|
||||
self?.button.disabled = sender.isOn
|
||||
}.store(in: &subscribers)
|
||||
|
||||
surfacePickerSelectorView.button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.pickerType = .surface
|
||||
}.store(in: &subscribers)
|
||||
|
||||
usePickerSelectorView.button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.pickerType = .use
|
||||
}.store(in: &subscribers)
|
||||
|
||||
textField
|
||||
.textPublisher
|
||||
.sink { [weak self] text in
|
||||
@ -80,12 +77,6 @@ class ButtonViewController: ModelScrollViewController<DefaultButtonModel> {
|
||||
self?.button.width = CGFloat(truncating: n)
|
||||
}
|
||||
}.store(in: &subscribers)
|
||||
|
||||
buttonSizePickerSelectorView.button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.pickerType = .buttonSize
|
||||
}.store(in: &subscribers)
|
||||
|
||||
}
|
||||
|
||||
@ -120,46 +111,21 @@ class ButtonViewController: ModelScrollViewController<DefaultButtonModel> {
|
||||
button.set(with: viewModel)
|
||||
}
|
||||
|
||||
//Picker
|
||||
var surfacePicker = SurfacePicker()
|
||||
var usePicker = UsePicker()
|
||||
var buttonSizePicker = PickerBase<ButtonSize>.init(items: ButtonSize.allCases)
|
||||
|
||||
var pickerType: PickerType = .surface {
|
||||
didSet {
|
||||
func update(object: UIPickerViewDelegate & UIPickerViewDataSource){
|
||||
picker.delegate = object
|
||||
picker.dataSource = object
|
||||
}
|
||||
|
||||
switch pickerType{
|
||||
case .surface:
|
||||
update(object: surfacePicker)
|
||||
case .use:
|
||||
update(object: usePicker)
|
||||
case .buttonSize:
|
||||
update(object: buttonSizePicker)
|
||||
}
|
||||
picker.reloadAllComponents()
|
||||
picker.selectRow(0, inComponent: 0, animated: false)
|
||||
picker.isHidden = false
|
||||
}
|
||||
}
|
||||
|
||||
func setupPicker(){
|
||||
surfacePicker.onPickerDidSelect = { [weak self] item in
|
||||
|
||||
surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||
self?.button.surface = item
|
||||
self?.contentTopView.backgroundColor = item.color
|
||||
self?.surfacePickerSelectorView.text = item.rawValue
|
||||
}
|
||||
|
||||
usePicker.onPickerDidSelect = { [weak self] item in
|
||||
usePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||
self?.button.use = item
|
||||
self?.button.backgroundColor = item.color
|
||||
self?.usePickerSelectorView.text = item.rawValue
|
||||
}
|
||||
|
||||
buttonSizePicker.onPickerDidSelect = { [weak self] item in
|
||||
buttonSizePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||
self?.button.size = item
|
||||
self?.buttonSizePickerSelectorView.text = item.rawValue
|
||||
}
|
||||
|
||||
@ -12,12 +12,11 @@ import VDSColorTokens
|
||||
import Combine
|
||||
|
||||
class CheckboxGroupViewController: ModelScrollViewController<DefaultCheckboxGroupModel> {
|
||||
|
||||
lazy var surfacePickerSelectorView = {
|
||||
SurfacePickerSelectorView(picker: self.picker)
|
||||
}()
|
||||
|
||||
enum PickerType {
|
||||
case surface
|
||||
}
|
||||
|
||||
var surfacePickerSelectorView = PickerSelectorView(title: "light")
|
||||
var disabledSwitch = UISwitch()
|
||||
var labelTextField = TextField()
|
||||
var childTextField = TextField()
|
||||
@ -65,12 +64,6 @@ class CheckboxGroupViewController: ModelScrollViewController<DefaultCheckboxGro
|
||||
.sink { [weak self] text in
|
||||
self?.checkbox?.childText = text
|
||||
}.store(in: &subscribers)
|
||||
|
||||
surfacePickerSelectorView.button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.pickerType = .surface
|
||||
}.store(in: &subscribers)
|
||||
}
|
||||
|
||||
func setupModel() {
|
||||
@ -126,26 +119,8 @@ class CheckboxGroupViewController: ModelScrollViewController<DefaultCheckboxGro
|
||||
}
|
||||
|
||||
//Picker
|
||||
var surfacePicker = SurfacePicker()
|
||||
var pickerType: PickerType = .surface {
|
||||
didSet {
|
||||
func update(object: UIPickerViewDelegate & UIPickerViewDataSource){
|
||||
picker.delegate = object
|
||||
picker.dataSource = object
|
||||
}
|
||||
|
||||
switch pickerType{
|
||||
case .surface:
|
||||
update(object: surfacePicker)
|
||||
}
|
||||
picker.reloadAllComponents()
|
||||
picker.selectRow(0, inComponent: 0, animated: false)
|
||||
picker.isHidden = false
|
||||
}
|
||||
}
|
||||
|
||||
func setupPicker(){
|
||||
surfacePicker.onPickerDidSelect = { [weak self] item in
|
||||
surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||
self?.checkboxGroup.surface = item
|
||||
self?.contentTopView.backgroundColor = item.color
|
||||
self?.surfacePickerSelectorView.text = item.rawValue
|
||||
|
||||
@ -12,12 +12,11 @@ import VDSColorTokens
|
||||
import Combine
|
||||
|
||||
class CheckboxViewController: ModelScrollViewController<DefaultCheckboxModel> {
|
||||
|
||||
enum PickerType {
|
||||
case surface
|
||||
}
|
||||
|
||||
var surfacePickerSelectorView = PickerSelectorView(title: "light")
|
||||
lazy var surfacePickerSelectorView = {
|
||||
SurfacePickerSelectorView(picker: self.picker)
|
||||
}()
|
||||
|
||||
var disabledSwitch = UISwitch()
|
||||
var labelTextField = TextField()
|
||||
var childTextField = TextField()
|
||||
@ -78,13 +77,6 @@ class CheckboxViewController: ModelScrollViewController<DefaultCheckboxModel> {
|
||||
.sink { [weak self] text in
|
||||
self?.checkbox.errorText = text
|
||||
}.store(in: &subscribers)
|
||||
|
||||
|
||||
surfacePickerSelectorView.button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.pickerType = .surface
|
||||
}.store(in: &subscribers)
|
||||
}
|
||||
|
||||
func setupModel() {
|
||||
@ -124,26 +116,8 @@ class CheckboxViewController: ModelScrollViewController<DefaultCheckboxModel> {
|
||||
}
|
||||
|
||||
//Picker
|
||||
var surfacePicker = SurfacePicker()
|
||||
var pickerType: PickerType = .surface {
|
||||
didSet {
|
||||
func update(object: UIPickerViewDelegate & UIPickerViewDataSource){
|
||||
picker.delegate = object
|
||||
picker.dataSource = object
|
||||
}
|
||||
|
||||
switch pickerType{
|
||||
case .surface:
|
||||
update(object: surfacePicker)
|
||||
}
|
||||
picker.reloadAllComponents()
|
||||
picker.selectRow(0, inComponent: 0, animated: false)
|
||||
picker.isHidden = false
|
||||
}
|
||||
}
|
||||
|
||||
func setupPicker(){
|
||||
surfacePicker.onPickerDidSelect = { [weak self] item in
|
||||
surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||
self?.checkbox.surface = item
|
||||
self?.contentTopView.backgroundColor = item.color
|
||||
self?.surfacePickerSelectorView.text = item.rawValue
|
||||
|
||||
@ -12,12 +12,20 @@ import VDSColorTokens
|
||||
|
||||
class LabelViewController: ModelScrollViewController<DefaultLabelModel> {
|
||||
|
||||
enum PickerType {
|
||||
case surface, textSize, fontCategory
|
||||
}
|
||||
var surfacePickerSelectorView = PickerSelectorView(title: "")
|
||||
var textSizePickerSelectorView = PickerSelectorView(title: "")
|
||||
var fontCategoryPickerSelectorView = PickerSelectorView(title: "")
|
||||
lazy var surfacePickerSelectorView = {
|
||||
SurfacePickerSelectorView(picker: self.picker)
|
||||
}()
|
||||
|
||||
lazy var textSizePickerSelectorView = {
|
||||
TextSizePickerSelectorView(title: "",
|
||||
picker: self.picker)
|
||||
}()
|
||||
|
||||
lazy var fontCategoryPickerSelectorView = {
|
||||
FontCategoryPickerSelectorView(title: "",
|
||||
picker: self.picker)
|
||||
}()
|
||||
|
||||
var boldSwitch = UISwitch()
|
||||
var disabledSwitch = UISwitch()
|
||||
var textField = TextField()
|
||||
@ -55,24 +63,6 @@ class LabelViewController: ModelScrollViewController<DefaultLabelModel> {
|
||||
self?.updateLabelStyle()
|
||||
}.store(in: &subscribers)
|
||||
|
||||
surfacePickerSelectorView.button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.pickerType = .surface
|
||||
}.store(in: &subscribers)
|
||||
|
||||
fontCategoryPickerSelectorView.button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.pickerType = .fontCategory
|
||||
}.store(in: &subscribers)
|
||||
|
||||
textSizePickerSelectorView.button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.pickerType = .textSize
|
||||
}.store(in: &subscribers)
|
||||
|
||||
textField
|
||||
.textPublisher
|
||||
.sink { [weak self] text in
|
||||
@ -110,37 +100,12 @@ class LabelViewController: ModelScrollViewController<DefaultLabelModel> {
|
||||
}
|
||||
|
||||
//Picker
|
||||
var surfacePicker = SurfacePicker()
|
||||
var textSizePicker = TextSizePicker()
|
||||
var fontCategoryPicker = FontCategoryPicker()
|
||||
|
||||
var pickerType: PickerType = .surface {
|
||||
didSet {
|
||||
func update(object: UIPickerViewDelegate & UIPickerViewDataSource){
|
||||
picker.delegate = object
|
||||
picker.dataSource = object
|
||||
}
|
||||
|
||||
switch pickerType{
|
||||
case .surface:
|
||||
update(object: surfacePicker)
|
||||
case .textSize:
|
||||
update(object: textSizePicker)
|
||||
case .fontCategory:
|
||||
update(object: fontCategoryPicker)
|
||||
}
|
||||
picker.reloadAllComponents()
|
||||
picker.selectRow(0, inComponent: 0, animated: false)
|
||||
picker.isHidden = false
|
||||
}
|
||||
}
|
||||
|
||||
private var fontCategory: TypographicalStyle.FontCategory = .feature {
|
||||
didSet {
|
||||
fontCategoryPickerSelectorView.text = fontCategory.rawValue
|
||||
textSizePicker.items = fontCategory.sizes
|
||||
if textSizePicker.items.count > 0 {
|
||||
textSize = textSizePicker.items[0]
|
||||
textSizePickerSelectorView.items = fontCategory.sizes
|
||||
if textSizePickerSelectorView.items.count > 0 {
|
||||
textSize = textSizePickerSelectorView.items[0]
|
||||
} else {
|
||||
textSize = nil
|
||||
}
|
||||
@ -161,19 +126,19 @@ class LabelViewController: ModelScrollViewController<DefaultLabelModel> {
|
||||
label.typograpicalStyle = style
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func setupPicker(){
|
||||
surfacePicker.onPickerDidSelect = { [weak self] item in
|
||||
surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||
self?.label.surface = item
|
||||
self?.contentTopView.backgroundColor = item.color
|
||||
self?.surfacePickerSelectorView.text = item.rawValue
|
||||
}
|
||||
|
||||
textSizePicker.onPickerDidSelect = { [weak self] item in
|
||||
textSizePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||
self?.textSize = item
|
||||
}
|
||||
|
||||
fontCategoryPicker.onPickerDidSelect = { [weak self] item in
|
||||
fontCategoryPickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||
self?.fontCategory = item
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,13 +13,12 @@ import Combine
|
||||
|
||||
class RadioBoxGroupViewController: ModelScrollViewController<DefaultRadioBoxGroupModel> {
|
||||
|
||||
enum PickerType {
|
||||
case surface
|
||||
}
|
||||
|
||||
lazy var surfacePickerSelectorView = {
|
||||
SurfacePickerSelectorView(picker: self.picker)
|
||||
}()
|
||||
|
||||
var disabledSwitch = UISwitch()
|
||||
var strikeThroughSwitch = UISwitch()
|
||||
var surfacePickerSelectorView = PickerSelectorView(title: "light")
|
||||
var textField = TextField()
|
||||
var subTextField = TextField()
|
||||
var subTextRightField = TextField()
|
||||
@ -73,12 +72,6 @@ class RadioBoxGroupViewController: ModelScrollViewController<DefaultRadioBoxGro
|
||||
.sink { [weak self] text in
|
||||
self?.radioBox?.subTextRight = text
|
||||
}.store(in: &subscribers)
|
||||
|
||||
surfacePickerSelectorView.button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.pickerType = .surface
|
||||
}.store(in: &subscribers)
|
||||
}
|
||||
|
||||
func setupModel(){
|
||||
@ -136,30 +129,13 @@ class RadioBoxGroupViewController: ModelScrollViewController<DefaultRadioBoxGro
|
||||
}
|
||||
|
||||
//Picker
|
||||
var surfacePicker = SurfacePicker()
|
||||
|
||||
var pickerType: PickerType = .surface {
|
||||
didSet {
|
||||
func update(object: UIPickerViewDelegate & UIPickerViewDataSource){
|
||||
picker.delegate = object
|
||||
picker.dataSource = object
|
||||
}
|
||||
|
||||
switch pickerType{
|
||||
case .surface:
|
||||
update(object: surfacePicker)
|
||||
}
|
||||
picker.reloadAllComponents()
|
||||
picker.selectRow(0, inComponent: 0, animated: false)
|
||||
picker.isHidden = false
|
||||
}
|
||||
}
|
||||
|
||||
func setupPicker(){
|
||||
surfacePicker.onPickerDidSelect = { [weak self] item in
|
||||
|
||||
surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||
self?.radioBoxGroup.surface = item
|
||||
self?.contentTopView.backgroundColor = item.color
|
||||
self?.surfacePickerSelectorView.text = item.rawValue
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,10 +13,10 @@ import Combine
|
||||
|
||||
class RadioButtonViewController: ModelScrollViewController<DefaultRadioButtonGroupModel> {
|
||||
|
||||
enum PickerType {
|
||||
case surface
|
||||
}
|
||||
var surfacePickerSelectorView = PickerSelectorView(title: "light")
|
||||
lazy var surfacePickerSelectorView = {
|
||||
SurfacePickerSelectorView(picker: self.picker)
|
||||
}()
|
||||
|
||||
var disabledSwitch = UISwitch()
|
||||
var labelTextField = TextField()
|
||||
var childTextField = TextField()
|
||||
@ -39,19 +39,19 @@ class RadioButtonViewController: ModelScrollViewController<DefaultRadioButtonGr
|
||||
addFormRow(label: "Label Text", view: labelTextField)
|
||||
addFormRow(label: "Child Text", view: childTextField)
|
||||
addFormRow(label: "Error", view: showErrorSwitch)
|
||||
|
||||
|
||||
showErrorSwitch
|
||||
.publisher(for: .valueChanged)
|
||||
.sink { [weak self] sender in
|
||||
self?.radioButtonGroup.hasError = sender.isOn
|
||||
}.store(in: &subscribers)
|
||||
|
||||
|
||||
disabledSwitch
|
||||
.publisher(for: .valueChanged)
|
||||
.sink { [weak self] sender in
|
||||
self?.radioButtonGroup.disabled = sender.isOn
|
||||
}.store(in: &subscribers)
|
||||
|
||||
|
||||
labelTextField
|
||||
.textPublisher
|
||||
.sink { [weak self] text in
|
||||
@ -64,11 +64,6 @@ class RadioButtonViewController: ModelScrollViewController<DefaultRadioButtonGr
|
||||
self?.radioButton?.childText = text
|
||||
}.store(in: &subscribers)
|
||||
|
||||
surfacePickerSelectorView.button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.pickerType = .surface
|
||||
}.store(in: &subscribers)
|
||||
}
|
||||
|
||||
func setupModel(){
|
||||
@ -129,31 +124,14 @@ class RadioButtonViewController: ModelScrollViewController<DefaultRadioButtonGr
|
||||
}
|
||||
|
||||
//Picker
|
||||
var surfacePicker = SurfacePicker()
|
||||
|
||||
var pickerType: PickerType = .surface {
|
||||
didSet {
|
||||
func update(object: UIPickerViewDelegate & UIPickerViewDataSource){
|
||||
picker.delegate = object
|
||||
picker.dataSource = object
|
||||
}
|
||||
|
||||
switch pickerType{
|
||||
case .surface:
|
||||
update(object: surfacePicker)
|
||||
}
|
||||
picker.reloadAllComponents()
|
||||
picker.selectRow(0, inComponent: 0, animated: false)
|
||||
picker.isHidden = false
|
||||
}
|
||||
}
|
||||
|
||||
func setupPicker(){
|
||||
|
||||
picker.isHidden = true
|
||||
surfacePicker.onPickerDidSelect = { [weak self] item in
|
||||
surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||
self?.radioButtonGroup.surface = item
|
||||
self?.contentTopView.backgroundColor = item.color
|
||||
self?.surfacePickerSelectorView.text = item.rawValue
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,14 +13,12 @@ import Combine
|
||||
|
||||
class RadioSwatchGroupViewController: ModelScrollViewController<DefaultRadioSwatchGroupModel> {
|
||||
|
||||
enum PickerType {
|
||||
case surface
|
||||
}
|
||||
|
||||
lazy var surfacePickerSelectorView = {
|
||||
SurfacePickerSelectorView(picker: self.picker)
|
||||
}()
|
||||
|
||||
var disabledSwitch = UISwitch()
|
||||
var strikeThroughSwitch = UISwitch()
|
||||
var surfacePickerSelectorView = PickerSelectorView(title: "light")
|
||||
|
||||
var radioSwatchGroup = RadioSwatchGroup()
|
||||
|
||||
override func viewDidLoad() {
|
||||
@ -58,12 +56,6 @@ class RadioSwatchGroupViewController: ModelScrollViewController<DefaultRadioSwa
|
||||
self?.model.selectors = selectors
|
||||
}
|
||||
}.store(in: &subscribers)
|
||||
|
||||
surfacePickerSelectorView.button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.pickerType = .surface
|
||||
}.store(in: &subscribers)
|
||||
}
|
||||
|
||||
func setupModel(){
|
||||
@ -141,30 +133,13 @@ class RadioSwatchGroupViewController: ModelScrollViewController<DefaultRadioSwa
|
||||
}
|
||||
|
||||
//Picker
|
||||
var surfacePicker = SurfacePicker()
|
||||
|
||||
var pickerType: PickerType = .surface {
|
||||
didSet {
|
||||
func update(object: UIPickerViewDelegate & UIPickerViewDataSource){
|
||||
picker.delegate = object
|
||||
picker.dataSource = object
|
||||
}
|
||||
|
||||
switch pickerType{
|
||||
case .surface:
|
||||
update(object: surfacePicker)
|
||||
}
|
||||
picker.reloadAllComponents()
|
||||
picker.selectRow(0, inComponent: 0, animated: false)
|
||||
picker.isHidden = false
|
||||
}
|
||||
}
|
||||
|
||||
func setupPicker(){
|
||||
surfacePicker.onPickerDidSelect = { [weak self] item in
|
||||
|
||||
surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||
self?.radioSwatchGroup.surface = item
|
||||
self?.contentTopView.backgroundColor = item.color
|
||||
self?.surfacePickerSelectorView.text = item.rawValue
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,11 +12,19 @@ import VDSColorTokens
|
||||
|
||||
class ToggleViewController: ModelScrollViewController<DefaultToggleModel> {
|
||||
|
||||
enum PickerType {
|
||||
case surface, textSize, textPosition
|
||||
}
|
||||
lazy var surfacePickerSelectorView = {
|
||||
SurfacePickerSelectorView(picker: self.picker)
|
||||
}()
|
||||
|
||||
lazy var textSizePickerSelectorView = {
|
||||
TextSizePickerSelectorView(title: "Small",
|
||||
picker: self.picker)
|
||||
}()
|
||||
|
||||
lazy var textPositionPickerSelectorView = {
|
||||
TextPositionPickerSelectorView(picker: self.picker)
|
||||
}()
|
||||
|
||||
var surfacePickerSelectorView = PickerSelectorView(title: "light")
|
||||
var disabledSwitch = UISwitch()
|
||||
var showTextSwitch = UISwitch()
|
||||
|
||||
@ -31,8 +39,6 @@ class ToggleViewController: ModelScrollViewController<DefaultToggleModel> {
|
||||
}()
|
||||
|
||||
var boldSwitch = UISwitch()
|
||||
var textSizePickerSelectorView = PickerSelectorView(title: "Large")
|
||||
var textPositionPickerSelectorView = PickerSelectorView(title: "left")
|
||||
var onTextField = TextField()
|
||||
var offTextField = TextField()
|
||||
|
||||
@ -72,24 +78,6 @@ class ToggleViewController: ModelScrollViewController<DefaultToggleModel> {
|
||||
self?.textFormStackView.isHidden = !sender.isOn
|
||||
}.store(in: &subscribers)
|
||||
|
||||
surfacePickerSelectorView.button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.pickerType = .surface
|
||||
}.store(in: &subscribers)
|
||||
|
||||
textSizePickerSelectorView.button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.pickerType = .textSize
|
||||
}.store(in: &subscribers)
|
||||
|
||||
textPositionPickerSelectorView.button
|
||||
.publisher(for: .touchUpInside)
|
||||
.sink { [weak self] _ in
|
||||
self?.pickerType = .textPosition
|
||||
}.store(in: &subscribers)
|
||||
|
||||
disabledSwitch
|
||||
.publisher(for: .valueChanged)
|
||||
.sink { [weak self] sender in
|
||||
@ -123,47 +111,24 @@ class ToggleViewController: ModelScrollViewController<DefaultToggleModel> {
|
||||
}
|
||||
|
||||
//Picker
|
||||
var surfacePicker = SurfacePicker()
|
||||
var textSizePicker = TextSizePicker()
|
||||
var textPositionPicker = TextPositionPicker()
|
||||
|
||||
var pickerType: PickerType = .surface {
|
||||
didSet {
|
||||
func update(object: UIPickerViewDelegate & UIPickerViewDataSource){
|
||||
picker.delegate = object
|
||||
picker.dataSource = object
|
||||
}
|
||||
|
||||
switch pickerType{
|
||||
case .surface:
|
||||
update(object: surfacePicker)
|
||||
case .textSize:
|
||||
update(object: textSizePicker)
|
||||
case .textPosition:
|
||||
update(object: textPositionPicker)
|
||||
}
|
||||
picker.reloadAllComponents()
|
||||
picker.selectRow(0, inComponent: 0, animated: false)
|
||||
picker.isHidden = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func setupPicker(){
|
||||
|
||||
surfacePicker.onPickerDidSelect = { [weak self] item in
|
||||
|
||||
surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||
self?.toggle.surface = item
|
||||
self?.contentTopView.backgroundColor = item.color
|
||||
self?.surfacePickerSelectorView.text = item.rawValue
|
||||
}
|
||||
|
||||
textSizePicker.onPickerDidSelect = { [weak self] item in
|
||||
textSizePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||
self?.toggle.fontSize = item
|
||||
self?.textSizePickerSelectorView.text = item.rawValue
|
||||
}
|
||||
|
||||
textPositionPicker.onPickerDidSelect = { [weak self] item in
|
||||
textPositionPickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||
self?.toggle.textPosition = item
|
||||
self?.textPositionPickerSelectorView.text = item.rawValue
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user