removed default models

added accessibility

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2022-07-30 09:20:26 -05:00
parent d33f672350
commit 482d3854a1
2 changed files with 37 additions and 37 deletions

View File

@ -17,30 +17,6 @@ import Combine
Container: The background of the toggle control. Container: The background of the toggle control.
Knob: The circular indicator that slides on the container. Knob: The circular indicator that slides on the container.
*/ */
public class DefaultToggleModel: DefaultLabelModel, VDSToggleModel {
public var id: String?
public var inputId: String?
public var disabled: Bool = false
public var showText: Bool = false
public var on: Bool = false
public var offText: String = "Off"
public var onText: String = "On"
public var value: AnyHashable? = true
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 required init() {
super.init()
}
}
@objcMembers open class VDSToggle: VDSControl, Modelable, Changable { @objcMembers open class VDSToggle: VDSControl, Modelable, Changable {
public typealias ModelType = VDSToggleModel public typealias ModelType = VDSToggleModel
@ -126,6 +102,9 @@ public class DefaultToggleModel: DefaultLabelModel, VDSToggleModel {
@Proxy(\.model.surface) @Proxy(\.model.surface)
public var surface: Surface public var surface: Surface
@Proxy(\VDSToggle.model.on)
open var isOn: Bool
open override var isEnabled: Bool { open override var isEnabled: Bool {
get { !model.disabled } get { !model.disabled }
@ -137,16 +116,7 @@ public class DefaultToggleModel: DefaultLabelModel, VDSToggleModel {
} }
} }
} }
/// Simple means to prevent user interaction with the toggle.
public var isLocked: Bool = false {
didSet { isUserInteractionEnabled = !isLocked }
}
/// The state on the toggle. Default value: false.
@Proxy(\VDSToggle.model.on)
open var isOn: Bool
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Constraints // MARK: - Constraints
//-------------------------------------------------- //--------------------------------------------------
@ -348,7 +318,8 @@ public class DefaultToggleModel: DefaultLabelModel, VDSToggleModel {
/// Follow the SwiftUI View paradigm /// Follow the SwiftUI View paradigm
/// - Parameter viewModel: state /// - Parameter viewModel: state
private func onStateChange(viewModel: ModelType) { private func onStateChange(viewModel: ModelType) {
let enabled = !viewModel.disabled
label.set(with: viewModel) label.set(with: viewModel)
label.text = viewModel.on ? viewModel.onText : viewModel.offText label.text = viewModel.on ? viewModel.onText : viewModel.offText
@ -373,8 +344,8 @@ public class DefaultToggleModel: DefaultLabelModel, VDSToggleModel {
} }
if viewModel.disabled { if viewModel.disabled {
toggleView.backgroundColor = isEnabled ? isOn ? containerTintColor.on : containerTintColor.off : disabledTintColor.container toggleView.backgroundColor = enabled ? viewModel.on ? containerTintColor.on : containerTintColor.off : disabledTintColor.container
knobView.backgroundColor = isEnabled ? isOn ? knobTintColor.on : knobTintColor.off : disabledTintColor.knob knobView.backgroundColor = enabled ? viewModel.on ? knobTintColor.on : knobTintColor.off : disabledTintColor.knob
constrainKnob() constrainKnob()
} else { } else {
UIView.animate(withDuration: 0.2, delay: 0.0, options: .curveEaseIn, animations: { UIView.animate(withDuration: 0.2, delay: 0.0, options: .curveEaseIn, animations: {
@ -395,6 +366,11 @@ public class DefaultToggleModel: DefaultLabelModel, VDSToggleModel {
backgroundColor = viewModel.surface == .dark ? VDSColor.backgroundPrimaryDark : .clear backgroundColor = viewModel.surface == .dark ? VDSColor.backgroundPrimaryDark : .clear
isUserInteractionEnabled = !viewModel.disabled isUserInteractionEnabled = !viewModel.disabled
accessibilityHint = enabled ? viewModel.accessibilityHintEnabled :viewModel.accessibilityHintDisabled
accessibilityValue = viewModel.on ? viewModel.accessibilityValueEnabled : viewModel.accessibilityValueDisabled
accessibilityLabel = viewModel.on ? viewModel.accessibilityLabelEnabled : viewModel.accessibilityLabelDisabled
setNeedsLayout() setNeedsLayout()
layoutIfNeeded() layoutIfNeeded()
} }

View File

@ -28,3 +28,27 @@ extension VDSToggleModel {
set { return } set { return }
} }
} }
public class DefaultToggleModel: DefaultLabelModel, VDSToggleModel {
public var id: String?
public var inputId: String?
public var disabled: Bool = false
public var showText: Bool = false
public var on: Bool = false
public var offText: String = "Off"
public var onText: String = "On"
public var value: AnyHashable? = true
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 required init() {
super.init()
}
}