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 */; };
|
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 */,
|
||||||
|
|||||||
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 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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user