diff --git a/VDS/Components/Toggle/VDSToggle.swift b/VDS/Components/Toggle/VDSToggle.swift index 09831873..066c41fa 100644 --- a/VDS/Components/Toggle/VDSToggle.swift +++ b/VDS/Components/Toggle/VDSToggle.swift @@ -25,44 +25,40 @@ import Combine //-------------------------------------------------- // MARK: - Private Properties //-------------------------------------------------- - private var toggleTintColor: (on: UIColor, off: UIColor) { - return getToggleColor(for: disabled, surface: surface) - } - - private var knobTintColor: (on: UIColor, off: UIColor) { - return getKnobColor(for: disabled, surface: surface) - } - - private func getToggleColor(for disabled: Bool, surface: Surface) -> (on: UIColor, off: UIColor) { - if disabled { - if surface == .light { - return (on: VDSColor.interactiveDisabledOnlight, off: VDSColor.interactiveDisabledOnlight) + private func getToggleColor(viewModel: ModelType) -> UIColor { + var colors: (on: UIColor, off: UIColor) + if viewModel.disabled { + if viewModel.surface == .light { + colors = (on: VDSColor.interactiveDisabledOnlight, off: VDSColor.interactiveDisabledOnlight) } else { - return (on: VDSColor.interactiveDisabledOndark, off: VDSColor.interactiveDisabledOndark) + colors = (on: VDSColor.interactiveDisabledOndark, off: VDSColor.interactiveDisabledOndark) } } else { - if surface == .light { - return (on: VDSColor.paletteGreen26, off: VDSColor.elementsSecondaryOnlight) + if viewModel.surface == .light { + colors = (on: VDSColor.paletteGreen26, off: VDSColor.elementsSecondaryOnlight) } else { - return (on: VDSColor.paletteGreen34, off: VDSColor.paletteGray44) + colors = (on: VDSColor.paletteGreen34, off: VDSColor.paletteGray44) } } + return viewModel.on ? colors.on : colors.off } - private func getKnobColor(for disabled: Bool, surface: Surface) -> (on: UIColor, off: UIColor) { - if disabled { - if surface == .light { - return (on: VDSColor.paletteGray95, off: VDSColor.paletteGray95) + private func getKnobColor(viewModel: ModelType) -> UIColor { + var colors: (on: UIColor, off: UIColor) + if viewModel.disabled { + if viewModel.surface == .light { + colors = (on: VDSColor.paletteGray95, off: VDSColor.paletteGray95) } else { - return (on: VDSColor.paletteGray44, off: VDSColor.paletteGray44) + colors = (on: VDSColor.paletteGray44, off: VDSColor.paletteGray44) } } else { - if surface == .light { - return (on: VDSColor.elementsPrimaryOndark, off: VDSColor.elementsPrimaryOndark) + if viewModel.surface == .light { + colors = (on: VDSColor.elementsPrimaryOndark, off: VDSColor.elementsPrimaryOndark) } else { - return (on: VDSColor.elementsPrimaryOndark, off: VDSColor.elementsPrimaryOndark) + colors = (on: VDSColor.elementsPrimaryOndark, off: VDSColor.elementsPrimaryOndark) } } + return viewModel.on ? colors.on : colors.off } private var showTextSpacing: CGFloat { @@ -225,7 +221,7 @@ import Combine toggleView.layer.cornerRadius = toggleSize.height / 2.0 knobView.layer.cornerRadius = knobSize.height / 2.0 - toggleView.backgroundColor = toggleTintColor.off + toggleView.backgroundColor = getToggleColor(viewModel: model) toggleView.addSubview(knobView) @@ -261,9 +257,8 @@ import Combine public override func reset() { super.reset() - - toggleView.backgroundColor = toggleTintColor.off - knobView.backgroundColor = knobTintColor.off + toggleView.backgroundColor = getToggleColor(viewModel: model) + knobView.backgroundColor = getKnobColor(viewModel: model) setAccessibilityLabel() onChange = nil } @@ -357,17 +352,17 @@ import Combine self.layoutIfNeeded() } - let toggleColor = getToggleColor(for: viewModel.disabled, surface: viewModel.surface) - let knobColor = getKnobColor(for: viewModel.disabled, surface: viewModel.surface) + let toggleColor = getToggleColor(viewModel: viewModel) + let knobColor = getKnobColor(viewModel: viewModel) if viewModel.disabled { - toggleView.backgroundColor = viewModel.on ? toggleColor.on : toggleColor.off - knobView.backgroundColor = viewModel.on ? knobColor.on : knobColor.off + toggleView.backgroundColor = toggleColor + knobView.backgroundColor = knobColor constrainKnob() } else { UIView.animate(withDuration: 0.2, delay: 0.0, options: .curveEaseIn, animations: { - self.toggleView.backgroundColor = viewModel.on ? toggleColor.on : toggleColor.off - self.knobView.backgroundColor = viewModel.on ? knobColor.on : knobColor.off + self.toggleView.backgroundColor = toggleColor + self.knobView.backgroundColor = knobColor }, completion: nil) UIView.animate(withDuration: 0.33, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 0.5, options: [], animations: {