From fc7650f7d9f08b091d6c8ea7e3a8b7995fecb178 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 9 Aug 2024 16:45:18 -0500 Subject: [PATCH] refactor toggle with setDefaults Signed-off-by: Matt Bruce --- VDS/Components/Toggle/Toggle.swift | 31 ++++++++++++++------------ VDS/Components/Toggle/ToggleView.swift | 22 ++++++++---------- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/VDS/Components/Toggle/Toggle.swift b/VDS/Components/Toggle/Toggle.swift index 260fdc31..304b18ce 100644 --- a/VDS/Components/Toggle/Toggle.swift +++ b/VDS/Components/Toggle/Toggle.swift @@ -158,11 +158,6 @@ open class Toggle: Control, Changeable, FormFieldable { open override func setup() { super.setup() - onClick = { [weak self] _ in - guard let self else { return } - toggle() - } - isAccessibilityElement = true if #available(iOS 17.0, *) { accessibilityTraits = .toggleButton @@ -237,6 +232,16 @@ open class Toggle: Control, Changeable, FormFieldable { label.trailingAnchor.constraint(equalTo: trailingAnchor) ] + } + + open override func setDefaults() { + super.setDefaults() + + onClick = { [weak self] _ in + guard let self else { return } + toggle() + } + bridge_accessibilityValueBlock = { [weak self] in guard let self else { return "" } if showText { @@ -245,13 +250,7 @@ open class Toggle: Control, Changeable, FormFieldable { return isSelected ? "On" : "Off" } } - } - - /// Resets to default settings. - open override func reset() { - super.reset() - shouldUpdateView = false - label.reset() + isEnabled = true isOn = false isAnimated = true @@ -263,8 +262,12 @@ open class Toggle: Control, Changeable, FormFieldable { textPosition = .left inputId = nil onChange = nil - shouldUpdateView = true - setNeedsUpdate() + } + + /// Resets to default settings. + open override func reset() { + label.reset() + super.reset() } /// Used to make changes to the View based off a change events or from local properties. diff --git a/VDS/Components/Toggle/ToggleView.swift b/VDS/Components/Toggle/ToggleView.swift index 1ba5d605..2ecfd44a 100644 --- a/VDS/Components/Toggle/ToggleView.swift +++ b/VDS/Components/Toggle/ToggleView.swift @@ -109,11 +109,6 @@ open class ToggleView: Control, Changeable, FormFieldable { open override func setup() { super.setup() - onClick = { [weak self] _ in - guard let self else { return } - toggle() - } - isAccessibilityElement = true if #available(iOS 17.0, *) { accessibilityTraits = .toggleButton @@ -154,20 +149,21 @@ open class ToggleView: Control, Changeable, FormFieldable { accessibilityLabel = "Toggle" } - /// Resets to default settings. - open override func reset() { - super.reset() - shouldUpdateView = false + open override func setDefaults() { + super.setDefaults() isOn = false isAnimated = true inputId = nil toggleView.backgroundColor = toggleColorConfiguration.getColor(self) knobView.backgroundColor = knobColorConfiguration.getColor(self) - onChange = nil - shouldUpdateView = true - setNeedsUpdate() + onChange = nil + + onClick = { [weak self] _ in + guard let self else { return } + toggle() + } } - + /// Used to make changes to the View based off a change events or from local properties. open override func updateView() { super.updateView()