updated for accessable and ensure label on showtext/textposition changes

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2022-08-01 11:54:27 -05:00
parent ff61d3ff39
commit 2edd58c6d8

View File

@ -20,7 +20,7 @@ import Combine
@objcMembers open class VDSToggle: VDSControl, Modelable, Changable { @objcMembers open class VDSToggle: VDSControl, Modelable, Changable {
public typealias ModelType = VDSToggleModel public typealias ModelType = VDSToggleModel
@Published public var model: ModelType = DefaultToggleModel() @Published open var model: ModelType = DefaultToggleModel()
private var cancellable: AnyCancellable? private var cancellable: AnyCancellable?
//-------------------------------------------------- //--------------------------------------------------
@ -83,7 +83,13 @@ import Combine
// MARK: - Computed Properties // MARK: - Computed Properties
//-------------------------------------------------- //--------------------------------------------------
@Proxy(\.model.showText) @Proxy(\.model.showText)
public var showText: Bool public var showText: Bool {
didSet {
if oldValue != showText {
ensureLabel()
}
}
}
@Proxy(\.model.onText) @Proxy(\.model.onText)
public var onText: String public var onText: String
@ -92,7 +98,13 @@ import Combine
public var offText: String public var offText: String
@Proxy(\.model.textPosition) @Proxy(\.model.textPosition)
public var textPosition: VDSTextPosition public var textPosition: VDSTextPosition {
didSet {
if oldValue != textPosition {
ensureLabel()
}
}
}
@Proxy(\.model.fontSize) @Proxy(\.model.fontSize)
public var fontSize: VDSFontSize public var fontSize: VDSFontSize
@ -103,9 +115,12 @@ import Combine
@Proxy(\.model.surface) @Proxy(\.model.surface)
public var surface: Surface public var surface: Surface
@Proxy(\VDSToggle.model.on) @Proxy(\.model.on)
open var isOn: Bool open var isOn: Bool
@Proxy(\.model.disabled)
open var disabled: Bool
open override var isEnabled: Bool { open override var isEnabled: Bool {
get { !model.disabled } get { !model.disabled }
set { set {
@ -132,7 +147,8 @@ import Combine
// MARK: - Initializers // MARK: - Initializers
//-------------------------------------------------- //--------------------------------------------------
public required init?(coder: NSCoder) { public required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented") super.init(coder: coder)
setup()
} }
public override init(frame: CGRect) { public override init(frame: CGRect) {
@ -179,10 +195,7 @@ import Combine
super.setupView() super.setupView()
isAccessibilityElement = true isAccessibilityElement = true
setAccessibilityHint()
setAccessibilityLabel()
accessibilityTraits = .button accessibilityTraits = .button
addSubview(stackView) addSubview(stackView)
let toggleSize = Self.toggleSize let toggleSize = Self.toggleSize
@ -317,9 +330,9 @@ import Combine
/// Follow the SwiftUI View paradigm /// Follow the SwiftUI View paradigm
/// - Parameter viewModel: state /// - Parameter viewModel: state
private func onStateChange(viewModel: ModelType) { open func onStateChange(viewModel: ModelType) {
let enabled = !viewModel.disabled 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
@ -367,9 +380,9 @@ import Combine
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 setAccessibilityHint(enabled)
accessibilityValue = viewModel.on ? viewModel.accessibilityValueEnabled : viewModel.accessibilityValueDisabled setAccessibilityValue(viewModel.on)
accessibilityLabel = viewModel.on ? viewModel.accessibilityLabelEnabled : viewModel.accessibilityLabelDisabled setAccessibilityLabel(viewModel.on)
setNeedsLayout() setNeedsLayout()
layoutIfNeeded() layoutIfNeeded()