added selected color
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
e0b0ad250d
commit
fa6bb87cb1
@ -61,6 +61,7 @@
|
||||
EA5E30552950EA6E0082B959 /* TitleLockupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E30542950EA6E0082B959 /* TitleLockupViewController.swift */; };
|
||||
EA5E305C295111050082B959 /* TileletViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E305B295111050082B959 /* TileletViewController.swift */; };
|
||||
EA5F86CE2A1E863F00BC83E4 /* TabsContainerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5F86CD2A1E863F00BC83E4 /* TabsContainerViewController.swift */; };
|
||||
EA6642972BD1B2E700D81DC4 /* ColorPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6642962BD1B2E700D81DC4 /* ColorPickerView.swift */; };
|
||||
EA81410E2A0ED8DC004F60D2 /* ButtonIconViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA81410D2A0ED8DC004F60D2 /* ButtonIconViewController.swift */; };
|
||||
EA89201928B56DF5006B9984 /* RadioBoxGroupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89201828B56DF5006B9984 /* RadioBoxGroupViewController.swift */; };
|
||||
EA89204628B66CE2006B9984 /* ScrollViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89203F28B66CE2006B9984 /* ScrollViewController.swift */; };
|
||||
@ -155,6 +156,7 @@
|
||||
EA5E30542950EA6E0082B959 /* TitleLockupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleLockupViewController.swift; sourceTree = "<group>"; };
|
||||
EA5E305B295111050082B959 /* TileletViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TileletViewController.swift; sourceTree = "<group>"; };
|
||||
EA5F86CD2A1E863F00BC83E4 /* TabsContainerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabsContainerViewController.swift; sourceTree = "<group>"; };
|
||||
EA6642962BD1B2E700D81DC4 /* ColorPickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorPickerView.swift; sourceTree = "<group>"; };
|
||||
EA81410D2A0ED8DC004F60D2 /* ButtonIconViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonIconViewController.swift; sourceTree = "<group>"; };
|
||||
EA89201828B56DF5006B9984 /* RadioBoxGroupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioBoxGroupViewController.swift; sourceTree = "<group>"; };
|
||||
EA89203F28B66CE2006B9984 /* ScrollViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScrollViewController.swift; sourceTree = "<group>"; };
|
||||
@ -263,9 +265,10 @@
|
||||
EA89204F28B682F4006B9984 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EA89205028B68307006B9984 /* TextField.swift */,
|
||||
EAD062A42A3B5CDF0015965D /* Slider.swift */,
|
||||
EA6642962BD1B2E700D81DC4 /* ColorPickerView.swift */,
|
||||
EAB5FEF22928153D00998C17 /* Helper.swift */,
|
||||
EAD062A42A3B5CDF0015965D /* Slider.swift */,
|
||||
EA89205028B68307006B9984 /* TextField.swift */,
|
||||
);
|
||||
path = Classes;
|
||||
sourceTree = "<group>";
|
||||
@ -515,6 +518,7 @@
|
||||
EAD062AD2A3B86950015965D /* BadgeIndicatorViewController.swift in Sources */,
|
||||
EA5E305C295111050082B959 /* TileletViewController.swift in Sources */,
|
||||
EAD062A32A3913920015965D /* DropShawdowViewController.swift in Sources */,
|
||||
EA6642972BD1B2E700D81DC4 /* ColorPickerView.swift in Sources */,
|
||||
EA0D1C312A673F3500E5C127 /* RadioButtonViewController.swift in Sources */,
|
||||
EAB5FEF32928153D00998C17 /* Helper.swift in Sources */,
|
||||
EA89204728B66CE2006B9984 /* KeyboardFrameChangeListener.swift in Sources */,
|
||||
|
||||
68
VDSSample/Classes/ColorPickerView.swift
Normal file
68
VDSSample/Classes/ColorPickerView.swift
Normal file
@ -0,0 +1,68 @@
|
||||
//
|
||||
// ColorPickerView.swift
|
||||
// VDSSample
|
||||
//
|
||||
// Created by Matt Bruce on 4/18/24.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
import VDS
|
||||
|
||||
public class ColorPickerView<EnumType>: UIStackView {
|
||||
public var pickerType: EnumType
|
||||
public var selectedColor: UIColor? {
|
||||
didSet {
|
||||
selectedColorView.backgroundColor = selectedColor
|
||||
}
|
||||
}
|
||||
|
||||
var selectedColorView: UIView = {
|
||||
let view = UIView()
|
||||
view.translatesAutoresizingMaskIntoConstraints = false
|
||||
view.widthAnchor.constraint(equalToConstant: 20).isActive = true
|
||||
view.heightAnchor.constraint(equalToConstant: 20).isActive = true
|
||||
return view
|
||||
}()
|
||||
|
||||
var button = Button().with {
|
||||
$0.size = .small
|
||||
$0.use = .secondary
|
||||
$0.text = "Select"
|
||||
}
|
||||
|
||||
public init(with pickerType: EnumType, onClick: @escaping (ColorPickerView)->Void) {
|
||||
self.pickerType = pickerType
|
||||
super.init(frame: .zero)
|
||||
setup()
|
||||
button.onClick = { _ in onClick(self) }
|
||||
}
|
||||
|
||||
required init(coder: NSCoder) {
|
||||
fatalError()
|
||||
}
|
||||
|
||||
private func setup() {
|
||||
distribution = .fillEqually
|
||||
alignment = .fill
|
||||
spacing = 10
|
||||
|
||||
let indicatorWrapper = View()
|
||||
indicatorWrapper.addSubview(selectedColorView)
|
||||
indicatorWrapper.height(32)
|
||||
indicatorWrapper.pinTop()
|
||||
indicatorWrapper.pinLeading()
|
||||
indicatorWrapper.pinBottom()
|
||||
indicatorWrapper.pinTrailingGreaterThanOrEqualTo(anchor: indicatorWrapper.trailingAnchor)
|
||||
|
||||
addArrangedSubview(indicatorWrapper)
|
||||
let buttonWrapper = View()
|
||||
buttonWrapper.addSubview(button)
|
||||
buttonWrapper.height(32)
|
||||
button.pinTop()
|
||||
button.pinTrailing()
|
||||
button.pinBottom()
|
||||
button.pinLeadingGreaterThanOrEqualTo(anchor: buttonWrapper.leadingAnchor)
|
||||
addArrangedSubview(buttonWrapper)
|
||||
}
|
||||
}
|
||||
@ -59,7 +59,7 @@ class ButtonIconViewController: BaseViewController<ButtonIcon> {
|
||||
var selectableSwitch = Toggle()
|
||||
var badgeIndicatorSwitch = Toggle()
|
||||
var variantOneSwitch = Toggle()
|
||||
|
||||
|
||||
lazy var badgeIndicatorExpandDirectionPickerSelectorView = {
|
||||
PickerSelectorView(title: "right",
|
||||
picker: self.picker,
|
||||
@ -75,6 +75,32 @@ class ButtonIconViewController: BaseViewController<ButtonIcon> {
|
||||
|
||||
var badgeIndicatorFormStackView = FormSection().with { $0.isHidden = true }
|
||||
|
||||
///ColorPicker
|
||||
var colorPickerType: ColorPickerType = .light
|
||||
enum ColorPickerType {
|
||||
case light, dark
|
||||
}
|
||||
|
||||
lazy var colorPicker: UIColorPickerViewController = {
|
||||
let picker = UIColorPickerViewController()
|
||||
picker.delegate = self
|
||||
return picker
|
||||
}()
|
||||
|
||||
lazy var lightColorPicker: ColorPickerView<ColorPickerType> = {
|
||||
return .init(with: ColorPickerType.light) {[weak self] picker in
|
||||
self?.colorPickerType = picker.pickerType
|
||||
self?.selectedColorTapped(picker)
|
||||
}
|
||||
}()
|
||||
|
||||
lazy var darkColorPicker: ColorPickerView = {
|
||||
return .init(with: ColorPickerType.dark) {[weak self] picker in
|
||||
self?.colorPickerType = picker.pickerType
|
||||
self?.selectedColorTapped(picker)
|
||||
}
|
||||
}()
|
||||
|
||||
override func setupForm(){
|
||||
super.setupForm()
|
||||
addFormRow(label: "Disabled", view: disabledSwitch)
|
||||
@ -82,6 +108,8 @@ class ButtonIconViewController: BaseViewController<ButtonIcon> {
|
||||
addFormRow(label: "Surface Type", view: surfaceTypePickerSelectorView)
|
||||
addFormRow(label: "Size", view: sizePickerSelectorView)
|
||||
addFormRow(label: "Kind", view: kindPickerSelectorView)
|
||||
addFormRow(label: "Selected Light", view: lightColorPicker)
|
||||
addFormRow(label: "Selected Dark", view: darkColorPicker)
|
||||
addFormRow(label: "Floating", view: floating)
|
||||
addFormRow(label: "Hide Border", view: hideBorder)
|
||||
addFormRow(label: "Fit To Icon", view: fitToIcon)
|
||||
@ -237,3 +265,27 @@ extension ButtonIconViewController: ComponentSampleable {
|
||||
return ComponentSample(component: component, trailingPinningType: .lessThanOrEqual)
|
||||
}
|
||||
}
|
||||
|
||||
extension ButtonIconViewController: UIColorPickerViewControllerDelegate {
|
||||
|
||||
func selectedColorTapped(_ picker: ColorPickerView<ColorPickerType>) {
|
||||
let selectedColor = picker.selectedColor
|
||||
if let selectedColor {
|
||||
colorPicker.selectedColor = selectedColor
|
||||
}
|
||||
present(colorPicker, animated: true)
|
||||
}
|
||||
|
||||
func colorPickerViewControllerDidFinish(_ viewController: UIColorPickerViewController) {
|
||||
dismiss(animated: true)
|
||||
}
|
||||
|
||||
func colorPickerViewControllerDidSelectColor(_ viewController: UIColorPickerViewController) {
|
||||
let color = viewController.selectedColor
|
||||
let selectedColorPickerView = colorPickerType == .dark ? darkColorPicker : lightColorPicker
|
||||
selectedColorPickerView.selectedColor = color
|
||||
if let selectedDarkColor = darkColorPicker.selectedColor, let selectedLightColor = lightColorPicker.selectedColor {
|
||||
component.selectedIconColorConfiguration = .init(selectedLightColor, selectedDarkColor)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user