From 669c2b15b5f6d2fd0b50c5c16e0454d5d4838c35 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Mon, 1 Aug 2022 12:41:05 -0500 Subject: [PATCH] refactored colors Signed-off-by: Matt Bruce --- VDS/Components/Toggle/VDSToggle.swift | 66 +++++++++++++++++++-------- 1 file changed, 47 insertions(+), 19 deletions(-) diff --git a/VDS/Components/Toggle/VDSToggle.swift b/VDS/Components/Toggle/VDSToggle.swift index c569597f..81c3defb 100644 --- a/VDS/Components/Toggle/VDSToggle.swift +++ b/VDS/Components/Toggle/VDSToggle.swift @@ -26,15 +26,46 @@ import Combine //-------------------------------------------------- // MARK: - Private Properties //-------------------------------------------------- - /// Holds the on and off colors for the container. - private var containerTintColor: (on: UIColor, off: UIColor) = (on: VDSColor.paletteGreen26, off: VDSColor.paletteGray44) + private var toggleTintColor: (on: UIColor, off: UIColor) { + return getToggleColor(for: disabled, surface: surface) + } - /// Holds the on and off colors for the knob. - private var knobTintColor: (on: UIColor, off: UIColor) = (on: VDSColor.paletteWhite, off: VDSColor.paletteWhite) + 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) + } else { + return (on: VDSColor.interactiveDisabledOndark, off: VDSColor.interactiveDisabledOndark) + } + } else { + if surface == .light { + return (on: VDSColor.paletteGreen26, off: VDSColor.elementsSecondaryOndark) + } else { + return (on: VDSColor.paletteGreen34, off: VDSColor.paletteGray44) + } + } + } + + private func getKnobColor(for disabled: Bool, surface: Surface) -> (on: UIColor, off: UIColor) { + if disabled { + if surface == .light { + return (on: VDSColor.paletteGray95, off: VDSColor.paletteGray95) + } else { + return (on: VDSColor.paletteGray44, off: VDSColor.paletteGray44) + } + } else { + if surface == .light { + return (on: VDSColor.elementsPrimaryOndark, off: VDSColor.elementsPrimaryOndark) + } else { + return (on: VDSColor.elementsPrimaryOndark, off: VDSColor.elementsPrimaryOndark) + } + } + } - /// Holds the on and off colors for the disabled state.. - private var disabledTintColor: (container: UIColor, knob: UIColor) = (container: VDSColor.paletteGray11, knob: VDSColor.paletteWhite) - private var showTextSpacing: CGFloat { showText ? 12 : 0 } @@ -210,7 +241,7 @@ import Combine toggleView.layer.cornerRadius = toggleSize.height / 2.0 knobView.layer.cornerRadius = knobSize.height / 2.0 - toggleView.backgroundColor = containerTintColor.off + toggleView.backgroundColor = toggleTintColor.off toggleView.addSubview(knobView) @@ -251,7 +282,7 @@ import Combine public override func reset() { super.reset() - toggleView.backgroundColor = containerTintColor.off + toggleView.backgroundColor = toggleTintColor.off knobView.backgroundColor = knobTintColor.off setAccessibilityLabel() onChange = nil @@ -356,20 +387,17 @@ import Combine self.layoutIfNeeded() } + let toggleColor = getToggleColor(for: viewModel.disabled, surface: viewModel.surface) + let knobColor = getKnobColor(for: viewModel.disabled, surface: viewModel.surface) + if viewModel.disabled { - toggleView.backgroundColor = enabled ? viewModel.on ? containerTintColor.on : containerTintColor.off : disabledTintColor.container - knobView.backgroundColor = enabled ? viewModel.on ? knobTintColor.on : knobTintColor.off : disabledTintColor.knob + toggleView.backgroundColor = viewModel.on ? toggleColor.on : toggleColor.off + knobView.backgroundColor = viewModel.on ? knobColor.on : knobColor.off constrainKnob() } else { UIView.animate(withDuration: 0.2, delay: 0.0, options: .curveEaseIn, animations: { - if viewModel.on { - self.knobView.backgroundColor = self.knobTintColor.on - self.toggleView.backgroundColor = self.containerTintColor.on - - } else { - self.knobView.backgroundColor = self.knobTintColor.off - self.toggleView.backgroundColor = self.containerTintColor.off - } + self.toggleView.backgroundColor = viewModel.on ? toggleColor.on : toggleColor.off + self.knobView.backgroundColor = viewModel.on ? knobColor.on : knobColor.off }, completion: nil) UIView.animate(withDuration: 0.33, delay: 0, usingSpringWithDamping: 0.6, initialSpringVelocity: 0.2, options: [], animations: {