59 lines
1.6 KiB
Swift
59 lines
1.6 KiB
Swift
//
|
|
// ToggleModel.swift
|
|
// VDS
|
|
//
|
|
// Created by Matt Bruce on 7/22/22.
|
|
//
|
|
|
|
import Foundation
|
|
import UIKit
|
|
|
|
public protocol ToggleModel: Modelable, FormFieldable, DataTrackable, Accessable, Labelable, BinaryColorable {
|
|
var showText: Bool { get set }
|
|
var on: Bool { get set }
|
|
var offText: String { get set }
|
|
var onText: String { get set }
|
|
}
|
|
|
|
extension ToggleModel {
|
|
public var userTrueColor: Bool { return on }
|
|
|
|
public var label: DefaultLabelModel {
|
|
var model = DefaultLabelModel()
|
|
model.textPosition = textPosition
|
|
model.typograpicalStyle = typograpicalStyle
|
|
model.text = on ? onText : offText
|
|
model.surface = surface
|
|
model.disabled = disabled
|
|
return model
|
|
}
|
|
}
|
|
|
|
public struct DefaultToggleModel: ToggleModel {
|
|
public var on: Bool = false
|
|
public var showText: Bool = false
|
|
public var offText: String = "Off"
|
|
public var onText: String = "On"
|
|
|
|
public var typograpicalStyle: TypographicalStyle = .BodySmall
|
|
public var textPosition: TextPosition = .left
|
|
|
|
public var inputId: String?
|
|
public var value: AnyHashable? = true
|
|
|
|
public var surface: Surface = .light
|
|
public var disabled: Bool = false
|
|
|
|
public var dataAnalyticsTrack: String?
|
|
public var dataClickStream: String?
|
|
public var dataTrack: String?
|
|
public var accessibilityHintEnabled: String?
|
|
public var accessibilityHintDisabled: String?
|
|
public var accessibilityValueEnabled: String?
|
|
public var accessibilityValueDisabled: String?
|
|
public var accessibilityLabelEnabled: String?
|
|
public var accessibilityLabelDisabled: String?
|
|
|
|
public init() { }
|
|
}
|