From 48c9c087f80bd51c0f85c6847445ba32916f0fa2 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Wed, 9 Oct 2024 13:11:06 -0500 Subject: [PATCH] slight refactor Signed-off-by: Matt Bruce --- VDSSample/Classes/ColorPickerView.swift | 46 ++++++++----------- .../Classes/TokenColorPickerFormSection.swift | 12 ++--- 2 files changed, 26 insertions(+), 32 deletions(-) diff --git a/VDSSample/Classes/ColorPickerView.swift b/VDSSample/Classes/ColorPickerView.swift index 7f09ab1..6b7bb5c 100644 --- a/VDSSample/Classes/ColorPickerView.swift +++ b/VDSSample/Classes/ColorPickerView.swift @@ -16,12 +16,9 @@ public class ColorPickerView: UIStackView, UIColorPickerViewControllerDelegate { } } - private var colorPicker: UIColorPickerViewController = { - let picker = UIColorPickerViewController() - return picker - }() - - var selectedColorView: UIView = { + public var onColorSelected: ((UIColor) -> Void)? + + private var selectedColorView: UIView = { let view = UIView() view.translatesAutoresizingMaskIntoConstraints = false view.widthAnchor.constraint(equalToConstant: 20).isActive = true @@ -29,27 +26,18 @@ public class ColorPickerView: UIStackView, UIColorPickerViewControllerDelegate { return view }() - var button = Button().with { + private var button = Button().with { $0.size = .small $0.use = .secondary $0.text = "Select" } - /// Callback once the user picks a color from the picker. - public var onColorSelected: ((UIColor) -> Void)? - public init(color: UIColor? = nil) { super.init(frame: .zero) - if let color { - selectedColor = color - } - colorPicker.delegate = self + self.selectedColor = color setup() - button.onClick = { _ in - UIApplication.topViewController()?.present(self.colorPicker, animated: true) - } } - + required init(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } @@ -58,7 +46,7 @@ public class ColorPickerView: UIStackView, UIColorPickerViewControllerDelegate { distribution = .fillEqually alignment = .fill spacing = 10 - + let indicatorWrapper = View() indicatorWrapper.addSubview(selectedColorView) indicatorWrapper.height(32) @@ -66,9 +54,8 @@ public class ColorPickerView: UIStackView, UIColorPickerViewControllerDelegate { indicatorWrapper.pinLeading() indicatorWrapper.pinBottom() indicatorWrapper.pinTrailingGreaterThanOrEqualTo(anchor: indicatorWrapper.trailingAnchor) - addArrangedSubview(indicatorWrapper) - + let buttonWrapper = View() buttonWrapper.addSubview(button) buttonWrapper.height(32) @@ -77,16 +64,23 @@ public class ColorPickerView: UIStackView, UIColorPickerViewControllerDelegate { button.pinBottom() button.pinLeadingGreaterThanOrEqualTo(anchor: buttonWrapper.leadingAnchor) addArrangedSubview(buttonWrapper) + + button.onClick = { [weak self] _ in + guard let self = self else { return } + let colorPicker = UIColorPickerViewController() + colorPicker.title = "Select a Color" + colorPicker.delegate = self + if let selectedColor = self.selectedColor { + colorPicker.selectedColor = selectedColor + } + UIApplication.topViewController()?.present(colorPicker, animated: true) + } } // MARK: - UIColorPickerViewControllerDelegate - public func colorPickerViewControllerDidSelectColor(_ viewController: UIColorPickerViewController) { selectedColor = viewController.selectedColor onColorSelected?(viewController.selectedColor) } - - public func colorPickerViewControllerDidFinish(_ viewController: UIColorPickerViewController) { - UIApplication.topViewController()?.dismiss(animated: true) - } + } diff --git a/VDSSample/Classes/TokenColorPickerFormSection.swift b/VDSSample/Classes/TokenColorPickerFormSection.swift index 4421ac1..17937e2 100644 --- a/VDSSample/Classes/TokenColorPickerFormSection.swift +++ b/VDSSample/Classes/TokenColorPickerFormSection.swift @@ -85,19 +85,19 @@ public class TokenColorPickerSection: let isToken = item.rawValue == "token" let isCustom = item.rawValue == "custom" if isToken { - self.onTokenSelected?(self.tokenColorView.selectedItem) + onTokenSelected?(self.tokenColorView.selectedItem) } else if let selectedItem = self.customColorView.selectedColor, isCustom { - self.onColorSelected?(selectedItem) + onColorSelected?(selectedItem) } else { - self.onSelected?(item) + onSelected?(item) } - self.tokenColorRow?.isHidden = !isToken - self.customColorRow?.isHidden = !isCustom + tokenColorRow?.isHidden = !isToken + customColorRow?.isHidden = !isCustom } tokenColorView.onPickerDidSelect = { [weak self] item in guard let self else { return } - self.onTokenSelected?(item) + onTokenSelected?(item) } }