updated for accessable and ensure label on showtext/textposition changes
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
ff61d3ff39
commit
2edd58c6d8
@ -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()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user