added selected color

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2024-04-18 15:02:27 -05:00
parent e0b0ad250d
commit fa6bb87cb1
3 changed files with 127 additions and 3 deletions

View File

@ -61,6 +61,7 @@
EA5E30552950EA6E0082B959 /* TitleLockupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E30542950EA6E0082B959 /* TitleLockupViewController.swift */; }; EA5E30552950EA6E0082B959 /* TitleLockupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E30542950EA6E0082B959 /* TitleLockupViewController.swift */; };
EA5E305C295111050082B959 /* TileletViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E305B295111050082B959 /* TileletViewController.swift */; }; EA5E305C295111050082B959 /* TileletViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E305B295111050082B959 /* TileletViewController.swift */; };
EA5F86CE2A1E863F00BC83E4 /* TabsContainerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5F86CD2A1E863F00BC83E4 /* TabsContainerViewController.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 */; }; EA81410E2A0ED8DC004F60D2 /* ButtonIconViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA81410D2A0ED8DC004F60D2 /* ButtonIconViewController.swift */; };
EA89201928B56DF5006B9984 /* RadioBoxGroupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89201828B56DF5006B9984 /* RadioBoxGroupViewController.swift */; }; EA89201928B56DF5006B9984 /* RadioBoxGroupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89201828B56DF5006B9984 /* RadioBoxGroupViewController.swift */; };
EA89204628B66CE2006B9984 /* ScrollViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89203F28B66CE2006B9984 /* ScrollViewController.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>"; }; 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>"; }; 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>"; }; 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>"; }; 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>"; }; 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>"; }; EA89203F28B66CE2006B9984 /* ScrollViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScrollViewController.swift; sourceTree = "<group>"; };
@ -263,9 +265,10 @@
EA89204F28B682F4006B9984 /* Classes */ = { EA89204F28B682F4006B9984 /* Classes */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
EA89205028B68307006B9984 /* TextField.swift */, EA6642962BD1B2E700D81DC4 /* ColorPickerView.swift */,
EAD062A42A3B5CDF0015965D /* Slider.swift */,
EAB5FEF22928153D00998C17 /* Helper.swift */, EAB5FEF22928153D00998C17 /* Helper.swift */,
EAD062A42A3B5CDF0015965D /* Slider.swift */,
EA89205028B68307006B9984 /* TextField.swift */,
); );
path = Classes; path = Classes;
sourceTree = "<group>"; sourceTree = "<group>";
@ -515,6 +518,7 @@
EAD062AD2A3B86950015965D /* BadgeIndicatorViewController.swift in Sources */, EAD062AD2A3B86950015965D /* BadgeIndicatorViewController.swift in Sources */,
EA5E305C295111050082B959 /* TileletViewController.swift in Sources */, EA5E305C295111050082B959 /* TileletViewController.swift in Sources */,
EAD062A32A3913920015965D /* DropShawdowViewController.swift in Sources */, EAD062A32A3913920015965D /* DropShawdowViewController.swift in Sources */,
EA6642972BD1B2E700D81DC4 /* ColorPickerView.swift in Sources */,
EA0D1C312A673F3500E5C127 /* RadioButtonViewController.swift in Sources */, EA0D1C312A673F3500E5C127 /* RadioButtonViewController.swift in Sources */,
EAB5FEF32928153D00998C17 /* Helper.swift in Sources */, EAB5FEF32928153D00998C17 /* Helper.swift in Sources */,
EA89204728B66CE2006B9984 /* KeyboardFrameChangeListener.swift in Sources */, EA89204728B66CE2006B9984 /* KeyboardFrameChangeListener.swift in Sources */,

View 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)
}
}

View File

@ -59,7 +59,7 @@ class ButtonIconViewController: BaseViewController<ButtonIcon> {
var selectableSwitch = Toggle() var selectableSwitch = Toggle()
var badgeIndicatorSwitch = Toggle() var badgeIndicatorSwitch = Toggle()
var variantOneSwitch = Toggle() var variantOneSwitch = Toggle()
lazy var badgeIndicatorExpandDirectionPickerSelectorView = { lazy var badgeIndicatorExpandDirectionPickerSelectorView = {
PickerSelectorView(title: "right", PickerSelectorView(title: "right",
picker: self.picker, picker: self.picker,
@ -75,6 +75,32 @@ class ButtonIconViewController: BaseViewController<ButtonIcon> {
var badgeIndicatorFormStackView = FormSection().with { $0.isHidden = true } 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(){ override func setupForm(){
super.setupForm() super.setupForm()
addFormRow(label: "Disabled", view: disabledSwitch) addFormRow(label: "Disabled", view: disabledSwitch)
@ -82,6 +108,8 @@ class ButtonIconViewController: BaseViewController<ButtonIcon> {
addFormRow(label: "Surface Type", view: surfaceTypePickerSelectorView) addFormRow(label: "Surface Type", view: surfaceTypePickerSelectorView)
addFormRow(label: "Size", view: sizePickerSelectorView) addFormRow(label: "Size", view: sizePickerSelectorView)
addFormRow(label: "Kind", view: kindPickerSelectorView) addFormRow(label: "Kind", view: kindPickerSelectorView)
addFormRow(label: "Selected Light", view: lightColorPicker)
addFormRow(label: "Selected Dark", view: darkColorPicker)
addFormRow(label: "Floating", view: floating) addFormRow(label: "Floating", view: floating)
addFormRow(label: "Hide Border", view: hideBorder) addFormRow(label: "Hide Border", view: hideBorder)
addFormRow(label: "Fit To Icon", view: fitToIcon) addFormRow(label: "Fit To Icon", view: fitToIcon)
@ -237,3 +265,27 @@ extension ButtonIconViewController: ComponentSampleable {
return ComponentSample(component: component, trailingPinningType: .lessThanOrEqual) 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)
}
}
}