@hitachivantara/uikit-react-core 5.6.0 → 5.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/Banner/Banner.cjs +33 -27
- package/dist/cjs/components/Banner/Banner.cjs.map +1 -1
- package/dist/cjs/components/Banner/Banner.styles.cjs +10 -39
- package/dist/cjs/components/Banner/Banner.styles.cjs.map +1 -1
- package/dist/cjs/components/Banner/BannerContent/ActionContainer/ActionContainer.cjs +32 -33
- package/dist/cjs/components/Banner/BannerContent/ActionContainer/ActionContainer.cjs.map +1 -1
- package/dist/cjs/components/Banner/BannerContent/ActionContainer/ActionContainer.styles.cjs +22 -91
- package/dist/cjs/components/Banner/BannerContent/ActionContainer/ActionContainer.styles.cjs.map +1 -1
- package/dist/cjs/components/Banner/BannerContent/BannerContent.cjs +37 -30
- package/dist/cjs/components/Banner/BannerContent/BannerContent.cjs.map +1 -1
- package/dist/cjs/components/Banner/BannerContent/BannerContent.styles.cjs +20 -51
- package/dist/cjs/components/Banner/BannerContent/BannerContent.styles.cjs.map +1 -1
- package/dist/cjs/components/Banner/BannerContent/MessageContainer/MessageContainer.cjs +25 -19
- package/dist/cjs/components/Banner/BannerContent/MessageContainer/MessageContainer.cjs.map +1 -1
- package/dist/cjs/components/Banner/BannerContent/MessageContainer/MessageContainer.styles.cjs +17 -45
- package/dist/cjs/components/Banner/BannerContent/MessageContainer/MessageContainer.styles.cjs.map +1 -1
- package/dist/cjs/components/BaseInput/BaseInput.cjs +44 -47
- package/dist/cjs/components/BaseInput/BaseInput.cjs.map +1 -1
- package/dist/cjs/components/BaseInput/BaseInput.styles.cjs +119 -148
- package/dist/cjs/components/BaseInput/BaseInput.styles.cjs.map +1 -1
- package/dist/cjs/components/Card/Card.styles.cjs.map +1 -1
- package/dist/cjs/components/Card/Content/Content.styles.cjs.map +1 -1
- package/dist/cjs/components/Card/Header/Header.styles.cjs.map +1 -1
- package/dist/cjs/components/Card/Media/Media.styles.cjs.map +1 -1
- package/dist/cjs/components/ColorPicker/ColorPicker.cjs +186 -0
- package/dist/cjs/components/ColorPicker/ColorPicker.cjs.map +1 -0
- package/dist/cjs/components/ColorPicker/ColorPicker.styles.cjs +57 -0
- package/dist/cjs/components/ColorPicker/ColorPicker.styles.cjs.map +1 -0
- package/dist/cjs/components/ColorPicker/Fields/Fields.cjs +137 -0
- package/dist/cjs/components/ColorPicker/Fields/Fields.cjs.map +1 -0
- package/dist/cjs/components/ColorPicker/Fields/Fields.styles.cjs +36 -0
- package/dist/cjs/components/ColorPicker/Fields/Fields.styles.cjs.map +1 -0
- package/dist/cjs/components/ColorPicker/Fields/fieldsClasses.cjs +8 -0
- package/dist/cjs/components/ColorPicker/Fields/fieldsClasses.cjs.map +1 -0
- package/dist/cjs/components/ColorPicker/Picker/Picker.cjs +81 -0
- package/dist/cjs/components/ColorPicker/Picker/Picker.cjs.map +1 -0
- package/dist/cjs/components/ColorPicker/Picker/Picker.styles.cjs +59 -0
- package/dist/cjs/components/ColorPicker/Picker/Picker.styles.cjs.map +1 -0
- package/dist/cjs/components/ColorPicker/Picker/pickerClasses.cjs +8 -0
- package/dist/cjs/components/ColorPicker/Picker/pickerClasses.cjs.map +1 -0
- package/dist/cjs/components/ColorPicker/PresetColors/PresetColors.cjs +51 -0
- package/dist/cjs/components/ColorPicker/PresetColors/PresetColors.cjs.map +1 -0
- package/dist/cjs/components/ColorPicker/PresetColors/PresetColors.styles.cjs +30 -0
- package/dist/cjs/components/ColorPicker/PresetColors/PresetColors.styles.cjs.map +1 -0
- package/dist/cjs/components/ColorPicker/PresetColors/presetColorsClasses.cjs +8 -0
- package/dist/cjs/components/ColorPicker/PresetColors/presetColorsClasses.cjs.map +1 -0
- package/dist/cjs/components/ColorPicker/SavedColors/SavedColors.cjs +67 -0
- package/dist/cjs/components/ColorPicker/SavedColors/SavedColors.cjs.map +1 -0
- package/dist/cjs/components/ColorPicker/SavedColors/SavedColors.styles.cjs +60 -0
- package/dist/cjs/components/ColorPicker/SavedColors/SavedColors.styles.cjs.map +1 -0
- package/dist/cjs/components/ColorPicker/SavedColors/savedColorsClasses.cjs +8 -0
- package/dist/cjs/components/ColorPicker/SavedColors/savedColorsClasses.cjs.map +1 -0
- package/dist/cjs/components/ColorPicker/colorPickerClasses.cjs +8 -0
- package/dist/cjs/components/ColorPicker/colorPickerClasses.cjs.map +1 -0
- package/dist/cjs/components/DatePicker/DatePicker.styles.cjs +0 -24
- package/dist/cjs/components/DatePicker/DatePicker.styles.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Dialog.styles.cjs +2 -2
- package/dist/cjs/components/Dialog/Dialog.styles.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/Counter/Counter.cjs +5 -3
- package/dist/cjs/components/FilterGroup/Counter/Counter.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/Counter/Counter.styles.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/Counter/counterClasses.cjs +8 -0
- package/dist/cjs/components/FilterGroup/Counter/counterClasses.cjs.map +1 -0
- package/dist/cjs/components/FilterGroup/FilterContent/FilterContent.cjs +1 -1
- package/dist/cjs/components/FilterGroup/FilterContent/FilterContent.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/FilterContent/FilterContent.styles.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/FilterContent/filterContentClasses.cjs +1 -1
- package/dist/cjs/components/FilterGroup/FilterContent/filterContentClasses.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/FilterGroup.styles.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/LeftPanel/LeftPanel.cjs +5 -2
- package/dist/cjs/components/FilterGroup/LeftPanel/LeftPanel.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/LeftPanel/LeftPanel.styles.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/LeftPanel/leftPanelClasses.cjs +8 -0
- package/dist/cjs/components/FilterGroup/LeftPanel/leftPanelClasses.cjs.map +1 -0
- package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs +8 -5
- package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.styles.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/RightPanel/rightPanelClasses.cjs +8 -0
- package/dist/cjs/components/FilterGroup/RightPanel/rightPanelClasses.cjs.map +1 -0
- package/dist/cjs/components/InlineEditor/InlineEditor.styles.cjs.map +1 -1
- package/dist/cjs/components/Input/Input.cjs +168 -127
- package/dist/cjs/components/Input/Input.cjs.map +1 -1
- package/dist/cjs/components/Input/Input.styles.cjs +61 -172
- package/dist/cjs/components/Input/Input.styles.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Rule.styles.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.cjs +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.styles.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.styles.cjs +1 -0
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.styles.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.styles.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Horizontal/ScrollToHorizontal.styles.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Vertical/ScrollToVertical.styles.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.cjs.map +1 -1
- package/dist/cjs/index.cjs +4 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/components/Banner/Banner.js +33 -28
- package/dist/esm/components/Banner/Banner.js.map +1 -1
- package/dist/esm/components/Banner/Banner.styles.js +10 -36
- package/dist/esm/components/Banner/Banner.styles.js.map +1 -1
- package/dist/esm/components/Banner/BannerContent/ActionContainer/ActionContainer.js +34 -35
- package/dist/esm/components/Banner/BannerContent/ActionContainer/ActionContainer.js.map +1 -1
- package/dist/esm/components/Banner/BannerContent/ActionContainer/ActionContainer.styles.js +22 -89
- package/dist/esm/components/Banner/BannerContent/ActionContainer/ActionContainer.styles.js.map +1 -1
- package/dist/esm/components/Banner/BannerContent/BannerContent.js +36 -31
- package/dist/esm/components/Banner/BannerContent/BannerContent.js.map +1 -1
- package/dist/esm/components/Banner/BannerContent/BannerContent.styles.js +20 -48
- package/dist/esm/components/Banner/BannerContent/BannerContent.styles.js.map +1 -1
- package/dist/esm/components/Banner/BannerContent/MessageContainer/MessageContainer.js +27 -21
- package/dist/esm/components/Banner/BannerContent/MessageContainer/MessageContainer.js.map +1 -1
- package/dist/esm/components/Banner/BannerContent/MessageContainer/MessageContainer.styles.js +17 -43
- package/dist/esm/components/Banner/BannerContent/MessageContainer/MessageContainer.styles.js.map +1 -1
- package/dist/esm/components/BaseInput/BaseInput.js +47 -50
- package/dist/esm/components/BaseInput/BaseInput.js.map +1 -1
- package/dist/esm/components/BaseInput/BaseInput.styles.js +119 -146
- package/dist/esm/components/BaseInput/BaseInput.styles.js.map +1 -1
- package/dist/esm/components/Card/Card.styles.js.map +1 -1
- package/dist/esm/components/Card/Content/Content.styles.js.map +1 -1
- package/dist/esm/components/Card/Header/Header.styles.js.map +1 -1
- package/dist/esm/components/Card/Media/Media.styles.js.map +1 -1
- package/dist/esm/components/ColorPicker/ColorPicker.js +186 -0
- package/dist/esm/components/ColorPicker/ColorPicker.js.map +1 -0
- package/dist/esm/components/ColorPicker/ColorPicker.styles.js +57 -0
- package/dist/esm/components/ColorPicker/ColorPicker.styles.js.map +1 -0
- package/dist/esm/components/ColorPicker/Fields/Fields.js +118 -0
- package/dist/esm/components/ColorPicker/Fields/Fields.js.map +1 -0
- package/dist/esm/components/ColorPicker/Fields/Fields.styles.js +36 -0
- package/dist/esm/components/ColorPicker/Fields/Fields.styles.js.map +1 -0
- package/dist/esm/components/ColorPicker/Fields/fieldsClasses.js +8 -0
- package/dist/esm/components/ColorPicker/Fields/fieldsClasses.js.map +1 -0
- package/dist/esm/components/ColorPicker/Picker/Picker.js +81 -0
- package/dist/esm/components/ColorPicker/Picker/Picker.js.map +1 -0
- package/dist/esm/components/ColorPicker/Picker/Picker.styles.js +59 -0
- package/dist/esm/components/ColorPicker/Picker/Picker.styles.js.map +1 -0
- package/dist/esm/components/ColorPicker/Picker/pickerClasses.js +8 -0
- package/dist/esm/components/ColorPicker/Picker/pickerClasses.js.map +1 -0
- package/dist/esm/components/ColorPicker/PresetColors/PresetColors.js +51 -0
- package/dist/esm/components/ColorPicker/PresetColors/PresetColors.js.map +1 -0
- package/dist/esm/components/ColorPicker/PresetColors/PresetColors.styles.js +30 -0
- package/dist/esm/components/ColorPicker/PresetColors/PresetColors.styles.js.map +1 -0
- package/dist/esm/components/ColorPicker/PresetColors/presetColorsClasses.js +8 -0
- package/dist/esm/components/ColorPicker/PresetColors/presetColorsClasses.js.map +1 -0
- package/dist/esm/components/ColorPicker/SavedColors/SavedColors.js +67 -0
- package/dist/esm/components/ColorPicker/SavedColors/SavedColors.js.map +1 -0
- package/dist/esm/components/ColorPicker/SavedColors/SavedColors.styles.js +60 -0
- package/dist/esm/components/ColorPicker/SavedColors/SavedColors.styles.js.map +1 -0
- package/dist/esm/components/ColorPicker/SavedColors/savedColorsClasses.js +8 -0
- package/dist/esm/components/ColorPicker/SavedColors/savedColorsClasses.js.map +1 -0
- package/dist/esm/components/ColorPicker/colorPickerClasses.js +8 -0
- package/dist/esm/components/ColorPicker/colorPickerClasses.js.map +1 -0
- package/dist/esm/components/DatePicker/DatePicker.styles.js +0 -24
- package/dist/esm/components/DatePicker/DatePicker.styles.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.styles.js +2 -2
- package/dist/esm/components/Dialog/Dialog.styles.js.map +1 -1
- package/dist/esm/components/FilterGroup/Counter/Counter.js +5 -3
- package/dist/esm/components/FilterGroup/Counter/Counter.js.map +1 -1
- package/dist/esm/components/FilterGroup/Counter/Counter.styles.js.map +1 -1
- package/dist/esm/components/FilterGroup/Counter/counterClasses.js +8 -0
- package/dist/esm/components/FilterGroup/Counter/counterClasses.js.map +1 -0
- package/dist/esm/components/FilterGroup/FilterContent/FilterContent.js +1 -1
- package/dist/esm/components/FilterGroup/FilterContent/FilterContent.js.map +1 -1
- package/dist/esm/components/FilterGroup/FilterContent/FilterContent.styles.js.map +1 -1
- package/dist/esm/components/FilterGroup/FilterContent/filterContentClasses.js +1 -1
- package/dist/esm/components/FilterGroup/FilterContent/filterContentClasses.js.map +1 -1
- package/dist/esm/components/FilterGroup/FilterGroup.styles.js.map +1 -1
- package/dist/esm/components/FilterGroup/LeftPanel/LeftPanel.js +5 -2
- package/dist/esm/components/FilterGroup/LeftPanel/LeftPanel.js.map +1 -1
- package/dist/esm/components/FilterGroup/LeftPanel/LeftPanel.styles.js.map +1 -1
- package/dist/esm/components/FilterGroup/LeftPanel/leftPanelClasses.js +8 -0
- package/dist/esm/components/FilterGroup/LeftPanel/leftPanelClasses.js.map +1 -0
- package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js +8 -5
- package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js.map +1 -1
- package/dist/esm/components/FilterGroup/RightPanel/RightPanel.styles.js.map +1 -1
- package/dist/esm/components/FilterGroup/RightPanel/rightPanelClasses.js +8 -0
- package/dist/esm/components/FilterGroup/RightPanel/rightPanelClasses.js.map +1 -0
- package/dist/esm/components/InlineEditor/InlineEditor.styles.js.map +1 -1
- package/dist/esm/components/Input/Input.js +170 -129
- package/dist/esm/components/Input/Input.js.map +1 -1
- package/dist/esm/components/Input/Input.styles.js +61 -170
- package/dist/esm/components/Input/Input.styles.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Rule.styles.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.js +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.styles.js.map +1 -1
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.styles.js +1 -0
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.styles.js.map +1 -1
- package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.styles.js.map +1 -1
- package/dist/esm/components/ScrollTo/Horizontal/ScrollToHorizontal.styles.js.map +1 -1
- package/dist/esm/components/ScrollTo/Vertical/ScrollToVertical.styles.js.map +1 -1
- package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.js.map +1 -1
- package/dist/esm/index.js +22 -18
- package/dist/esm/index.js.map +1 -1
- package/dist/types/index.d.ts +112 -5
- package/package.json +6 -5
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { ClassNames } from "@emotion/react";
|
|
2
|
+
import { Checkbox, ColorPicker } from "@hitachivantara/uikit-react-icons";
|
|
3
|
+
import { styles } from "./ColorPicker.styles.js";
|
|
4
|
+
import colorPickerClasses from "./colorPickerClasses.js";
|
|
5
|
+
import { jsx, jsxs, Fragment } from "@emotion/react/jsx-runtime";
|
|
6
|
+
import useUniqueId from "../../hooks/useUniqueId.js";
|
|
7
|
+
import { PresetColors } from "./PresetColors/PresetColors.js";
|
|
8
|
+
import Picker from "./Picker/Picker.js";
|
|
9
|
+
import { SavedColors } from "./SavedColors/SavedColors.js";
|
|
10
|
+
import { useTheme } from "../../hooks/useTheme.js";
|
|
11
|
+
import { useLabels } from "../../hooks/useLabels.js";
|
|
12
|
+
import { useControlled } from "../../hooks/useControlled.js";
|
|
13
|
+
import { HvFormElement } from "../Forms/FormElement/FormElement.js";
|
|
14
|
+
import { HvLabel } from "../Forms/Label/Label.js";
|
|
15
|
+
import { setId } from "../../utils/setId.js";
|
|
16
|
+
import { HvInfoMessage } from "../Forms/InfoMessage/InfoMessage.js";
|
|
17
|
+
import { HvBaseDropdown } from "../BaseDropdown/BaseDropdown.js";
|
|
18
|
+
import { HvTypography } from "../Typography/Typography.js";
|
|
19
|
+
import { HvPanel } from "../Panel/Panel.js";
|
|
20
|
+
const DEFAULT_LABELS = {
|
|
21
|
+
recommendedColorsLabel: "Recommended colors:",
|
|
22
|
+
customColorsLabel: "Custom colors:"
|
|
23
|
+
};
|
|
24
|
+
const HvColorPicker = ({
|
|
25
|
+
id,
|
|
26
|
+
name,
|
|
27
|
+
required = false,
|
|
28
|
+
disabled = false,
|
|
29
|
+
label,
|
|
30
|
+
"aria-label": ariaLabel,
|
|
31
|
+
"aria-labelledby": ariaLabelledBy,
|
|
32
|
+
description,
|
|
33
|
+
"aria-describedby": ariaDescribedBy,
|
|
34
|
+
className,
|
|
35
|
+
classes,
|
|
36
|
+
value,
|
|
37
|
+
onChange,
|
|
38
|
+
defaultValue = "",
|
|
39
|
+
expanded,
|
|
40
|
+
defaultExpanded = false,
|
|
41
|
+
recommendedColorsPosition = "top",
|
|
42
|
+
recommendedColors = ["#95AFE8", "#E89E5D", "#83B8A6", "#70759C", "#C57E7E", "#FADA95", "#ADBFE8", "#E3B386", "#9AC6B7", "#8B90AF", "#CF9797", "#FAE1AA"],
|
|
43
|
+
showLabels = true,
|
|
44
|
+
labels: labelsProp,
|
|
45
|
+
dropdownIcon = "colorPicker",
|
|
46
|
+
placeholder = "Select color...",
|
|
47
|
+
iconOnly = false,
|
|
48
|
+
showSavedColors = true,
|
|
49
|
+
showCustomColors = true,
|
|
50
|
+
savedColorsValue,
|
|
51
|
+
defaultSavedColorsValue = [],
|
|
52
|
+
onSavedColorAdded,
|
|
53
|
+
onSavedColorRemoved,
|
|
54
|
+
deleteSavedColorButtonArialLabel = "Delete saved color"
|
|
55
|
+
}) => {
|
|
56
|
+
const {
|
|
57
|
+
activeTheme
|
|
58
|
+
} = useTheme();
|
|
59
|
+
const labels = useLabels(DEFAULT_LABELS, labelsProp);
|
|
60
|
+
const [isOpen, setIsOpen] = useControlled(expanded, Boolean(defaultExpanded));
|
|
61
|
+
const [color, setColor] = useControlled(value, defaultValue);
|
|
62
|
+
const [savedColors, setSavedColors] = useControlled(savedColorsValue, defaultSavedColorsValue);
|
|
63
|
+
const elementId = useUniqueId(id, "hvdropdown");
|
|
64
|
+
const hasLabel = label != null;
|
|
65
|
+
const hasDescription = description != null;
|
|
66
|
+
const handleToggle = (_, open) => {
|
|
67
|
+
setIsOpen(open);
|
|
68
|
+
};
|
|
69
|
+
const handleSelect = (val) => {
|
|
70
|
+
onChange == null ? void 0 : onChange(val.hex);
|
|
71
|
+
setColor(val.hex);
|
|
72
|
+
};
|
|
73
|
+
const handleAddColor = () => {
|
|
74
|
+
const colorToAdd = color || "#000000";
|
|
75
|
+
onSavedColorAdded == null ? void 0 : onSavedColorAdded(colorToAdd);
|
|
76
|
+
setSavedColors([...savedColors, colorToAdd]);
|
|
77
|
+
};
|
|
78
|
+
const handleRemoveColor = (val, position) => {
|
|
79
|
+
if (savedColors[position] === val) {
|
|
80
|
+
const sColors = [...savedColors];
|
|
81
|
+
sColors.splice(position, 1);
|
|
82
|
+
onSavedColorRemoved == null ? void 0 : onSavedColorRemoved(val);
|
|
83
|
+
setSavedColors(sColors);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
const setFocusToContent = (containerRef) => {
|
|
87
|
+
const inputs = containerRef == null ? void 0 : containerRef.getElementsByTagName("input");
|
|
88
|
+
if (inputs && inputs.length > 0) {
|
|
89
|
+
inputs[0].focus();
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
return /* @__PURE__ */ jsx(ClassNames, {
|
|
93
|
+
children: ({
|
|
94
|
+
css,
|
|
95
|
+
cx
|
|
96
|
+
}) => /* @__PURE__ */ jsxs(HvFormElement, {
|
|
97
|
+
id,
|
|
98
|
+
name,
|
|
99
|
+
disabled,
|
|
100
|
+
required,
|
|
101
|
+
className: cx(colorPickerClasses.root, className, classes == null ? void 0 : classes.root),
|
|
102
|
+
children: [(hasLabel || hasDescription) && /* @__PURE__ */ jsxs("div", {
|
|
103
|
+
className: cx(colorPickerClasses.labelContainer, css(styles.labelContainer), classes == null ? void 0 : classes.labelContainer),
|
|
104
|
+
children: [hasLabel && /* @__PURE__ */ jsx(HvLabel, {
|
|
105
|
+
id: setId(elementId, "label"),
|
|
106
|
+
label,
|
|
107
|
+
className: cx(colorPickerClasses.label, css(styles.label), classes == null ? void 0 : classes.label)
|
|
108
|
+
}), hasDescription && /* @__PURE__ */ jsx(HvInfoMessage, {
|
|
109
|
+
id: setId(elementId, "description"),
|
|
110
|
+
className: cx(colorPickerClasses.description, classes == null ? void 0 : classes.description),
|
|
111
|
+
children: description
|
|
112
|
+
})]
|
|
113
|
+
}), /* @__PURE__ */ jsx(HvBaseDropdown, {
|
|
114
|
+
className,
|
|
115
|
+
expanded: isOpen,
|
|
116
|
+
onToggle: handleToggle,
|
|
117
|
+
onContainerCreation: setFocusToContent,
|
|
118
|
+
classes: {
|
|
119
|
+
root: iconOnly ? cx(colorPickerClasses.dropdownRootIconOnly, css(styles.dropdownRootIconOnly), classes == null ? void 0 : classes.dropdownRootIconOnly) : void 0
|
|
120
|
+
},
|
|
121
|
+
adornment: iconOnly && color ? /* @__PURE__ */ jsx(Checkbox, {
|
|
122
|
+
className: cx(colorPickerClasses.headerColorIconOnly, css(styles.headerColorIconOnly), css({
|
|
123
|
+
"& svg:last-child": {
|
|
124
|
+
fill: color
|
|
125
|
+
}
|
|
126
|
+
}), classes == null ? void 0 : classes.headerColorIconOnly),
|
|
127
|
+
color: [color]
|
|
128
|
+
}) : dropdownIcon === "colorPicker" ? /* @__PURE__ */ jsx(ColorPicker, {
|
|
129
|
+
className: cx(colorPickerClasses.colorPickerIcon, css(styles.colorPickerIcon), classes == null ? void 0 : classes.colorPickerIcon)
|
|
130
|
+
}) : void 0,
|
|
131
|
+
placeholder: iconOnly ? void 0 : color ? /* @__PURE__ */ jsxs(Fragment, {
|
|
132
|
+
children: [/* @__PURE__ */ jsx(Checkbox, {
|
|
133
|
+
className: cx(colorPickerClasses.headerColorIcon, css(styles.headerColorIcon), css({
|
|
134
|
+
"& svg:last-child": {
|
|
135
|
+
fill: color
|
|
136
|
+
}
|
|
137
|
+
}), classes == null ? void 0 : classes.headerColorIcon),
|
|
138
|
+
color: [color]
|
|
139
|
+
}), /* @__PURE__ */ jsx(HvTypography, {
|
|
140
|
+
className: cx(colorPickerClasses.headerColorValue, css(styles.headerColorValue), classes == null ? void 0 : classes.headerColorValue),
|
|
141
|
+
variant: activeTheme == null ? void 0 : activeTheme.colorPicker.inputValueVariant,
|
|
142
|
+
children: color
|
|
143
|
+
})]
|
|
144
|
+
}) : placeholder,
|
|
145
|
+
"aria-label": ariaLabel,
|
|
146
|
+
"aria-labelledby": [label && setId(elementId, "label"), ariaLabelledBy].join(" ").trim() || void 0,
|
|
147
|
+
"aria-describedby": [description && setId(elementId, "description"), ariaDescribedBy].join(" ").trim() || void 0,
|
|
148
|
+
children: /* @__PURE__ */ jsx(HvPanel, {
|
|
149
|
+
className: cx(colorPickerClasses.panel, css(styles.panel), classes == null ? void 0 : classes.panel),
|
|
150
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
151
|
+
className: cx(colorPickerClasses.colorPicker, css(styles.colorPicker), classes == null ? void 0 : classes.colorPicker),
|
|
152
|
+
children: [recommendedColorsPosition === "top" && /* @__PURE__ */ jsx(PresetColors, {
|
|
153
|
+
className: cx(colorPickerClasses.recommendedColorsRoot, (showCustomColors || showSavedColors) && css({
|
|
154
|
+
paddingBottom: activeTheme == null ? void 0 : activeTheme.colorPicker.recommendedColorsBottomPadding
|
|
155
|
+
}), classes == null ? void 0 : classes.recommendedColorsRoot),
|
|
156
|
+
colors: recommendedColors,
|
|
157
|
+
onClick: handleSelect,
|
|
158
|
+
title: showLabels ? labels == null ? void 0 : labels.recommendedColorsLabel : void 0
|
|
159
|
+
}), showCustomColors && /* @__PURE__ */ jsx(Picker, {
|
|
160
|
+
classes: {
|
|
161
|
+
fields: recommendedColorsPosition === "bottom" || showSavedColors ? cx(colorPickerClasses.pickerFields, css(styles.pickerFields), classes == null ? void 0 : classes.pickerFields) : void 0
|
|
162
|
+
},
|
|
163
|
+
title: showLabels ? labels == null ? void 0 : labels.customColorsLabel : void 0,
|
|
164
|
+
color,
|
|
165
|
+
onChange: handleSelect
|
|
166
|
+
}), showSavedColors && /* @__PURE__ */ jsx(SavedColors, {
|
|
167
|
+
colors: savedColors,
|
|
168
|
+
onAddColor: handleAddColor,
|
|
169
|
+
onClickColor: handleSelect,
|
|
170
|
+
onRemoveColor: handleRemoveColor,
|
|
171
|
+
deleteButtonArialLabel: deleteSavedColorButtonArialLabel
|
|
172
|
+
}), recommendedColorsPosition === "bottom" && /* @__PURE__ */ jsx(PresetColors, {
|
|
173
|
+
colors: recommendedColors,
|
|
174
|
+
onClick: handleSelect,
|
|
175
|
+
title: showLabels ? labels == null ? void 0 : labels.recommendedColorsLabel : void 0
|
|
176
|
+
})]
|
|
177
|
+
})
|
|
178
|
+
})
|
|
179
|
+
})]
|
|
180
|
+
})
|
|
181
|
+
});
|
|
182
|
+
};
|
|
183
|
+
export {
|
|
184
|
+
HvColorPicker
|
|
185
|
+
};
|
|
186
|
+
//# sourceMappingURL=ColorPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorPicker.js","sources":["../../../../src/components/ColorPicker/ColorPicker.tsx"],"sourcesContent":["import {\n HvBaseDropdown,\n HvFormElement,\n HvInfoMessage,\n HvLabel,\n HvPanel,\n HvTypography,\n} from \"@core/components\";\nimport { ClassNames } from \"@emotion/react\";\nimport { Checkbox, ColorPicker } from \"@hitachivantara/uikit-react-icons\";\nimport { Picker } from \"./Picker\";\nimport { styles } from \"./ColorPicker.styles\";\nimport colorPickerClasses, { HvColorPickerClasses } from \"./colorPickerClasses\";\nimport { ColorState } from \"react-color\";\nimport { PresetColors } from \"./PresetColors\";\nimport { SavedColors } from \"./SavedColors\";\nimport { useControlled, useLabels, useTheme, useUniqueId } from \"@core/hooks\";\nimport { setId } from \"@core/utils\";\n\nexport interface HvColorPickerProps {\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n \"aria-describedby\"?: string;\n /** Class names to be applied. */\n className?: string;\n /** Id to be applied to the form element root node. */\n id?: string;\n /** The form element name. */\n name?: string;\n /**\n * The label of the form element.\n *\n * The form element must be labeled for accessibility reasons.\n * If not provided, an aria-label or aria-labelledby must be provided instead.\n */\n label?: React.ReactNode;\n /** Provide additional descriptive text for the form element. */\n description?: React.ReactNode;\n /** Indicates that user input is required on the form element. */\n required?: boolean;\n /** The value color, in HEX format. */\n value?: string;\n /** The default value color, in HEX format. */\n defaultValue?: string;\n /** If `true` the dropdown is disabled unable to be interacted, if `false` it is enabled. */\n disabled?: boolean;\n /** If `true` the dropdown starts opened if `false` it starts closed. */\n expanded?: boolean;\n /** When uncontrolled, defines the initial expanded state. */\n defaultExpanded?: boolean;\n /** A function to be executed whenever the color changes. */\n onChange?: (color: string) => void;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvColorPickerClasses;\n /** The placeholder value when nothing is selected. */\n placeholder?: string;\n /** Recommended colors. The colors are HEX values. */\n recommendedColors?: string[];\n /** Recommended colors position. */\n recommendedColorsPosition?: \"top\" | \"bottom\";\n /** If `true`, the labels are shown. If `false`, they are not shown. */\n showLabels?: boolean;\n /** An object containing all the labels. */\n labels?: {\n recommendedColorsLabel?: string;\n customColorsLabel?: string;\n };\n /** Icon type for the input's end adornment. */\n dropdownIcon?: \"arrow\" | \"colorPicker\";\n /** If `true`, the input only shows an icon. If `false`, the input shows text and icons. */\n iconOnly?: boolean;\n /** If `true`, the saved colors area is shown. If `false`, it is not shown. */\n showSavedColors?: boolean;\n /** If `true`, the custom colors area is shown. If `false`, it is not shown. */\n showCustomColors?: boolean;\n /** The saved colors. The colors are HEX values. */\n savedColorsValue?: string[];\n /** The default saved colors. The colors are HEX values. */\n defaultSavedColorsValue?: string[];\n /** Callback fired when a new saved color is added. */\n onSavedColorAdded?: (color?: string) => void;\n /** Callback fired when a new saved color is removed. */\n onSavedColorRemoved?: (color?: string) => void;\n /** Aria label to apply to delete saved color button. */\n deleteSavedColorButtonArialLabel?: string;\n}\n\nconst DEFAULT_LABELS: HvColorPickerProps[\"labels\"] = {\n recommendedColorsLabel: \"Recommended colors:\",\n customColorsLabel: \"Custom colors:\",\n};\n\n/**\n * A color picker component which allows the user to select a color from a list of pre-defined colors or freely select one color via the Hue and Saturation.\n * It receives a color string in HEX format and outputs an HEX formatted color.\n */\nexport const HvColorPicker = ({\n id,\n name,\n required = false,\n disabled = false,\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n className,\n classes,\n value,\n onChange,\n defaultValue = \"\",\n expanded,\n defaultExpanded = false,\n recommendedColorsPosition = \"top\",\n recommendedColors = [\n \"#95AFE8\",\n \"#E89E5D\",\n \"#83B8A6\",\n \"#70759C\",\n \"#C57E7E\",\n \"#FADA95\",\n \"#ADBFE8\",\n \"#E3B386\",\n \"#9AC6B7\",\n \"#8B90AF\",\n \"#CF9797\",\n \"#FAE1AA\",\n ],\n showLabels = true,\n labels: labelsProp,\n dropdownIcon = \"colorPicker\",\n placeholder = \"Select color...\",\n iconOnly = false,\n showSavedColors = true,\n showCustomColors = true,\n savedColorsValue,\n defaultSavedColorsValue = [],\n onSavedColorAdded,\n onSavedColorRemoved,\n deleteSavedColorButtonArialLabel = \"Delete saved color\",\n}: HvColorPickerProps) => {\n const { activeTheme } = useTheme();\n\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const [isOpen, setIsOpen] = useControlled(expanded, Boolean(defaultExpanded));\n const [color, setColor] = useControlled(value, defaultValue);\n const [savedColors, setSavedColors] = useControlled(\n savedColorsValue,\n defaultSavedColorsValue\n );\n const elementId = useUniqueId(id, \"hvdropdown\");\n const hasLabel = label != null;\n const hasDescription = description != null;\n\n const handleToggle = (_, open: boolean) => {\n setIsOpen(open);\n };\n\n const handleSelect = (val: ColorState | { hex: string; source: string }) => {\n onChange?.(val.hex);\n setColor(val.hex);\n };\n\n const handleAddColor = () => {\n // When no color is provided, react-color sets the picker to #000000.\n // This is the color that should be added in this case.\n const colorToAdd = color || \"#000000\";\n\n onSavedColorAdded?.(colorToAdd);\n setSavedColors([...savedColors, colorToAdd]);\n };\n\n const handleRemoveColor = (val: string, position: number) => {\n if (savedColors[position] === val) {\n const sColors = [...savedColors];\n sColors.splice(position, 1);\n onSavedColorRemoved?.(val);\n setSavedColors(sColors);\n }\n };\n\n const setFocusToContent = (containerRef: HTMLElement | null) => {\n const inputs = containerRef?.getElementsByTagName(\"input\");\n if (inputs && inputs.length > 0) {\n inputs[0].focus();\n }\n };\n\n return (\n <ClassNames>\n {({ css, cx }) => (\n <HvFormElement\n id={id}\n name={name}\n disabled={disabled}\n required={required}\n className={cx(colorPickerClasses.root, className, classes?.root)}\n >\n {(hasLabel || hasDescription) && (\n <div\n className={cx(\n colorPickerClasses.labelContainer,\n css(styles.labelContainer),\n classes?.labelContainer\n )}\n >\n {hasLabel && (\n <HvLabel\n id={setId(elementId, \"label\")}\n label={label}\n className={cx(\n colorPickerClasses.label,\n css(styles.label),\n classes?.label\n )}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage\n id={setId(elementId, \"description\")}\n className={cx(\n colorPickerClasses.description,\n classes?.description\n )}\n >\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n <HvBaseDropdown\n className={className}\n expanded={isOpen}\n onToggle={handleToggle}\n onContainerCreation={setFocusToContent}\n classes={{\n root: iconOnly\n ? cx(\n colorPickerClasses.dropdownRootIconOnly,\n css(styles.dropdownRootIconOnly),\n classes?.dropdownRootIconOnly\n )\n : undefined,\n }}\n adornment={\n iconOnly && color ? (\n <Checkbox\n className={cx(\n colorPickerClasses.headerColorIconOnly,\n css(styles.headerColorIconOnly),\n css({\n \"& svg:last-child\": {\n fill: color,\n },\n }),\n classes?.headerColorIconOnly\n )}\n color={[color]}\n />\n ) : dropdownIcon === \"colorPicker\" ? (\n <ColorPicker\n className={cx(\n colorPickerClasses.colorPickerIcon,\n css(styles.colorPickerIcon),\n classes?.colorPickerIcon\n )}\n />\n ) : undefined\n }\n placeholder={\n iconOnly ? undefined : color ? (\n <>\n <Checkbox\n className={cx(\n colorPickerClasses.headerColorIcon,\n css(styles.headerColorIcon),\n css({\n \"& svg:last-child\": {\n fill: color,\n },\n }),\n classes?.headerColorIcon\n )}\n color={[color]}\n />\n <HvTypography\n className={cx(\n colorPickerClasses.headerColorValue,\n css(styles.headerColorValue),\n classes?.headerColorValue\n )}\n variant={activeTheme?.colorPicker.inputValueVariant}\n >\n {color}\n </HvTypography>\n </>\n ) : (\n placeholder\n )\n }\n aria-label={ariaLabel}\n aria-labelledby={\n [label && setId(elementId, \"label\"), ariaLabelledBy]\n .join(\" \")\n .trim() || undefined\n }\n aria-describedby={\n [description && setId(elementId, \"description\"), ariaDescribedBy]\n .join(\" \")\n .trim() || undefined\n }\n >\n <HvPanel\n className={cx(\n colorPickerClasses.panel,\n css(styles.panel),\n classes?.panel\n )}\n >\n <div\n className={cx(\n colorPickerClasses.colorPicker,\n css(styles.colorPicker),\n classes?.colorPicker\n )}\n >\n {recommendedColorsPosition === \"top\" && (\n <PresetColors\n className={cx(\n colorPickerClasses.recommendedColorsRoot,\n (showCustomColors || showSavedColors) &&\n css({\n paddingBottom:\n activeTheme?.colorPicker\n .recommendedColorsBottomPadding,\n }),\n classes?.recommendedColorsRoot\n )}\n colors={recommendedColors}\n onClick={handleSelect}\n title={\n showLabels ? labels?.recommendedColorsLabel : undefined\n }\n />\n )}\n {showCustomColors && (\n <Picker\n classes={{\n fields:\n recommendedColorsPosition === \"bottom\" ||\n showSavedColors\n ? cx(\n colorPickerClasses.pickerFields,\n css(styles.pickerFields),\n classes?.pickerFields\n )\n : undefined,\n }}\n title={showLabels ? labels?.customColorsLabel : undefined}\n color={color}\n onChange={handleSelect}\n />\n )}\n {showSavedColors && (\n <SavedColors\n colors={savedColors}\n onAddColor={handleAddColor}\n onClickColor={handleSelect}\n onRemoveColor={handleRemoveColor}\n deleteButtonArialLabel={deleteSavedColorButtonArialLabel}\n />\n )}\n {recommendedColorsPosition === \"bottom\" && (\n <PresetColors\n colors={recommendedColors}\n onClick={handleSelect}\n title={\n showLabels ? labels?.recommendedColorsLabel : undefined\n }\n />\n )}\n </div>\n </HvPanel>\n </HvBaseDropdown>\n </HvFormElement>\n )}\n </ClassNames>\n );\n};\n"],"names":["DEFAULT_LABELS","recommendedColorsLabel","customColorsLabel","HvColorPicker","id","name","required","disabled","label","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","className","classes","value","onChange","defaultValue","expanded","defaultExpanded","recommendedColorsPosition","recommendedColors","showLabels","labels","labelsProp","dropdownIcon","placeholder","iconOnly","showSavedColors","showCustomColors","savedColorsValue","defaultSavedColorsValue","onSavedColorAdded","onSavedColorRemoved","deleteSavedColorButtonArialLabel","activeTheme","useTheme","useLabels","isOpen","setIsOpen","useControlled","Boolean","color","setColor","savedColors","setSavedColors","elementId","useUniqueId","hasLabel","hasDescription","handleToggle","_","open","handleSelect","val","hex","handleAddColor","colorToAdd","handleRemoveColor","position","sColors","splice","setFocusToContent","containerRef","inputs","getElementsByTagName","length","focus","ClassNames","children","css","cx","HvFormElement","colorPickerClasses","root","labelContainer","styles","_jsx","HvLabel","setId","HvInfoMessage","HvBaseDropdown","onToggle","onContainerCreation","dropdownRootIconOnly","undefined","adornment","Checkbox","headerColorIconOnly","fill","ColorPicker","colorPickerIcon","_Fragment","headerColorIcon","HvTypography","headerColorValue","variant","colorPicker","inputValueVariant","join","trim","HvPanel","panel","PresetColors","recommendedColorsRoot","paddingBottom","recommendedColorsBottomPadding","colors","onClick","title","Picker","fields","pickerFields","SavedColors","onAddColor","onClickColor","onRemoveColor","deleteButtonArialLabel"],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { theme } from "@hitachivantara/uikit-styles";
|
|
2
|
+
const styles = {
|
|
3
|
+
labelContainer: {
|
|
4
|
+
display: "flex",
|
|
5
|
+
alignItems: "flex-start"
|
|
6
|
+
},
|
|
7
|
+
label: {
|
|
8
|
+
paddingBottom: "6px",
|
|
9
|
+
display: "block"
|
|
10
|
+
},
|
|
11
|
+
headerColorValue: {
|
|
12
|
+
textTransform: "uppercase"
|
|
13
|
+
},
|
|
14
|
+
headerColorIcon: {
|
|
15
|
+
width: 24,
|
|
16
|
+
"& svg": {
|
|
17
|
+
marginLeft: 0
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
panel: {
|
|
21
|
+
width: "100%",
|
|
22
|
+
minWidth: theme.colorPicker.panelMinWidth,
|
|
23
|
+
display: "flex",
|
|
24
|
+
justifyContent: "center",
|
|
25
|
+
padding: theme.colorPicker.panelPadding,
|
|
26
|
+
border: theme.colorPicker.panelBorder,
|
|
27
|
+
borderRadius: theme.colorPicker.panelBorderRadius
|
|
28
|
+
},
|
|
29
|
+
colorPicker: {
|
|
30
|
+
width: theme.colorPicker.colorPickerWidth
|
|
31
|
+
},
|
|
32
|
+
colorPickerIcon: {
|
|
33
|
+
position: "absolute",
|
|
34
|
+
pointerEvents: "none",
|
|
35
|
+
top: -1,
|
|
36
|
+
right: -1
|
|
37
|
+
},
|
|
38
|
+
dropdownRootIconOnly: {
|
|
39
|
+
width: 32,
|
|
40
|
+
height: 32
|
|
41
|
+
},
|
|
42
|
+
headerColorIconOnly: {
|
|
43
|
+
position: "absolute",
|
|
44
|
+
pointerEvents: "none",
|
|
45
|
+
top: -1,
|
|
46
|
+
right: -1,
|
|
47
|
+
width: 32,
|
|
48
|
+
height: 32
|
|
49
|
+
},
|
|
50
|
+
pickerFields: {
|
|
51
|
+
paddingBottom: 20
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
export {
|
|
55
|
+
styles
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=ColorPicker.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorPicker.styles.js","sources":["../../../../src/components/ColorPicker/ColorPicker.styles.tsx"],"sourcesContent":["import { CSSInterpolation } from \"@emotion/serialize\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport { HvColorPickerClasses } from \"./colorPickerClasses\";\n\nexport const styles: Partial<\n Record<keyof HvColorPickerClasses, CSSInterpolation>\n> = {\n labelContainer: {\n display: \"flex\",\n alignItems: \"flex-start\",\n },\n label: {\n paddingBottom: \"6px\",\n display: \"block\",\n },\n headerColorValue: {\n textTransform: \"uppercase\",\n },\n headerColorIcon: {\n width: 24,\n \"& svg\": {\n marginLeft: 0,\n },\n },\n panel: {\n width: \"100%\",\n minWidth: theme.colorPicker.panelMinWidth,\n display: \"flex\",\n justifyContent: \"center\",\n padding: theme.colorPicker.panelPadding,\n border: theme.colorPicker.panelBorder,\n borderRadius: theme.colorPicker.panelBorderRadius,\n },\n colorPicker: {\n width: theme.colorPicker.colorPickerWidth,\n },\n colorPickerIcon: {\n position: \"absolute\",\n pointerEvents: \"none\",\n top: -1,\n right: -1,\n },\n dropdownRootIconOnly: {\n width: 32,\n height: 32,\n },\n headerColorIconOnly: {\n position: \"absolute\",\n pointerEvents: \"none\",\n top: -1,\n right: -1,\n width: 32,\n height: 32,\n },\n pickerFields: { paddingBottom: 20 },\n};\n"],"names":["styles","labelContainer","display","alignItems","label","paddingBottom","headerColorValue","textTransform","headerColorIcon","width","marginLeft","panel","minWidth","theme","colorPicker","panelMinWidth","justifyContent","padding","panelPadding","border","panelBorder","borderRadius","panelBorderRadius","colorPickerWidth","colorPickerIcon","position","pointerEvents","top","right","dropdownRootIconOnly","height","headerColorIconOnly","pickerFields"],"mappings":";AAIO,MAAMA,SAET;AAAA,EACFC,gBAAgB;AAAA,IACdC,SAAS;AAAA,IACTC,YAAY;AAAA,EACd;AAAA,EACAC,OAAO;AAAA,IACLC,eAAe;AAAA,IACfH,SAAS;AAAA,EACX;AAAA,EACAI,kBAAkB;AAAA,IAChBC,eAAe;AAAA,EACjB;AAAA,EACAC,iBAAiB;AAAA,IACfC,OAAO;AAAA,IACP,SAAS;AAAA,MACPC,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACAC,OAAO;AAAA,IACLF,OAAO;AAAA,IACPG,UAAUC,MAAMC,YAAYC;AAAAA,IAC5Bb,SAAS;AAAA,IACTc,gBAAgB;AAAA,IAChBC,SAASJ,MAAMC,YAAYI;AAAAA,IAC3BC,QAAQN,MAAMC,YAAYM;AAAAA,IAC1BC,cAAcR,MAAMC,YAAYQ;AAAAA,EAClC;AAAA,EACAR,aAAa;AAAA,IACXL,OAAOI,MAAMC,YAAYS;AAAAA,EAC3B;AAAA,EACAC,iBAAiB;AAAA,IACfC,UAAU;AAAA,IACVC,eAAe;AAAA,IACfC,KAAK;AAAA,IACLC,OAAO;AAAA,EACT;AAAA,EACAC,sBAAsB;AAAA,IACpBpB,OAAO;AAAA,IACPqB,QAAQ;AAAA,EACV;AAAA,EACAC,qBAAqB;AAAA,IACnBN,UAAU;AAAA,IACVC,eAAe;AAAA,IACfC,KAAK;AAAA,IACLC,OAAO;AAAA,IACPnB,OAAO;AAAA,IACPqB,QAAQ;AAAA,EACV;AAAA,EACAE,cAAc;AAAA,IAAE3B,eAAe;AAAA,EAAG;AACpC;"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { ClassNames } from "@emotion/react";
|
|
2
|
+
import { useState, useRef, useEffect } from "react";
|
|
3
|
+
import * as color from "react-color/lib/helpers/color";
|
|
4
|
+
import { styles } from "./Fields.styles.js";
|
|
5
|
+
import colorPickerFieldsClasses from "./fieldsClasses.js";
|
|
6
|
+
import { jsx, jsxs } from "@emotion/react/jsx-runtime";
|
|
7
|
+
import { HvInput } from "../../Input/Input.js";
|
|
8
|
+
const Fields = ({
|
|
9
|
+
className,
|
|
10
|
+
onChange,
|
|
11
|
+
rgb,
|
|
12
|
+
hex,
|
|
13
|
+
classes
|
|
14
|
+
}) => {
|
|
15
|
+
const [internalHex, setInternalHex] = useState(hex);
|
|
16
|
+
const [internalRed, setInternalRed] = useState(rgb == null ? void 0 : rgb.r);
|
|
17
|
+
const [internalGreen, setInternalGreen] = useState(rgb == null ? void 0 : rgb.g);
|
|
18
|
+
const [internalBlue, setInternalBlue] = useState(rgb == null ? void 0 : rgb.b);
|
|
19
|
+
const hexInputRef = useRef();
|
|
20
|
+
const redInputRef = useRef();
|
|
21
|
+
const greenInputRef = useRef();
|
|
22
|
+
const blueInputRef = useRef();
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
if (document.activeElement !== hexInputRef.current) {
|
|
25
|
+
setInternalHex(hex);
|
|
26
|
+
}
|
|
27
|
+
}, [hex]);
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (document.activeElement !== redInputRef.current) {
|
|
30
|
+
setInternalRed(rgb == null ? void 0 : rgb.r);
|
|
31
|
+
}
|
|
32
|
+
if (document.activeElement !== greenInputRef.current) {
|
|
33
|
+
setInternalGreen(rgb == null ? void 0 : rgb.g);
|
|
34
|
+
}
|
|
35
|
+
if (document.activeElement !== blueInputRef.current) {
|
|
36
|
+
setInternalBlue(rgb == null ? void 0 : rgb.b);
|
|
37
|
+
}
|
|
38
|
+
}, [rgb]);
|
|
39
|
+
const handleChange = (data, event) => {
|
|
40
|
+
if (data.hex && color.isValidHex(data.hex)) {
|
|
41
|
+
onChange({
|
|
42
|
+
hex: data.hex,
|
|
43
|
+
source: "hex"
|
|
44
|
+
}, event);
|
|
45
|
+
} else if (data.r || data.g || data.b) {
|
|
46
|
+
onChange({
|
|
47
|
+
r: data.r || (rgb == null ? void 0 : rgb.r),
|
|
48
|
+
g: data.g || (rgb == null ? void 0 : rgb.g),
|
|
49
|
+
b: data.b || (rgb == null ? void 0 : rgb.b),
|
|
50
|
+
source: "rgb"
|
|
51
|
+
}, event);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
const onChangeHex = (event, value) => {
|
|
55
|
+
setInternalHex(value);
|
|
56
|
+
handleChange({
|
|
57
|
+
hex: value
|
|
58
|
+
}, event);
|
|
59
|
+
};
|
|
60
|
+
const onChangeRbg = (event, value, colorPart) => {
|
|
61
|
+
if (colorPart === "r")
|
|
62
|
+
setInternalRed(Number(value));
|
|
63
|
+
if (colorPart === "g")
|
|
64
|
+
setInternalGreen(Number(value));
|
|
65
|
+
if (colorPart === "b")
|
|
66
|
+
setInternalBlue(Number(value));
|
|
67
|
+
handleChange({
|
|
68
|
+
r: colorPart === "r" ? Number(value) : rgb == null ? void 0 : rgb.r,
|
|
69
|
+
g: colorPart === "g" ? Number(value) : rgb == null ? void 0 : rgb.g,
|
|
70
|
+
b: colorPart === "b" ? Number(value) : rgb == null ? void 0 : rgb.b
|
|
71
|
+
}, event);
|
|
72
|
+
};
|
|
73
|
+
return /* @__PURE__ */ jsx(ClassNames, {
|
|
74
|
+
children: ({
|
|
75
|
+
css,
|
|
76
|
+
cx
|
|
77
|
+
}) => /* @__PURE__ */ jsxs("div", {
|
|
78
|
+
className: cx(colorPickerFieldsClasses.fields, css(styles.fields), className, classes == null ? void 0 : classes.fields),
|
|
79
|
+
children: [/* @__PURE__ */ jsx(HvInput, {
|
|
80
|
+
inputRef: hexInputRef,
|
|
81
|
+
className: cx(colorPickerFieldsClasses.double, css(styles.double), classes == null ? void 0 : classes.double),
|
|
82
|
+
label: "HEX",
|
|
83
|
+
value: internalHex == null ? void 0 : internalHex.replace("#", ""),
|
|
84
|
+
onChange: onChangeHex,
|
|
85
|
+
onBlur: () => setInternalHex(hex),
|
|
86
|
+
disableClear: true
|
|
87
|
+
}), /* @__PURE__ */ jsx(HvInput, {
|
|
88
|
+
inputRef: redInputRef,
|
|
89
|
+
className: cx(colorPickerFieldsClasses.single, css(styles.single), classes == null ? void 0 : classes.single),
|
|
90
|
+
label: "R",
|
|
91
|
+
value: `${internalRed}`,
|
|
92
|
+
onChange: (event, value) => onChangeRbg(event, value, "r"),
|
|
93
|
+
onBlur: () => setInternalRed(rgb == null ? void 0 : rgb.r),
|
|
94
|
+
disableClear: true
|
|
95
|
+
}), /* @__PURE__ */ jsx(HvInput, {
|
|
96
|
+
inputRef: greenInputRef,
|
|
97
|
+
className: cx(colorPickerFieldsClasses.single, css(styles.single), classes == null ? void 0 : classes.single),
|
|
98
|
+
label: "G",
|
|
99
|
+
value: `${internalGreen}`,
|
|
100
|
+
onChange: (event, value) => onChangeRbg(event, value, "g"),
|
|
101
|
+
onBlur: () => setInternalGreen(rgb == null ? void 0 : rgb.g),
|
|
102
|
+
disableClear: true
|
|
103
|
+
}), /* @__PURE__ */ jsx(HvInput, {
|
|
104
|
+
inputRef: blueInputRef,
|
|
105
|
+
className: cx(colorPickerFieldsClasses.single, css(styles.single), classes == null ? void 0 : classes.single),
|
|
106
|
+
label: "B",
|
|
107
|
+
value: `${internalBlue}`,
|
|
108
|
+
onChange: (event, value) => onChangeRbg(event, value, "b"),
|
|
109
|
+
onBlur: () => setInternalBlue(rgb == null ? void 0 : rgb.b),
|
|
110
|
+
disableClear: true
|
|
111
|
+
})]
|
|
112
|
+
})
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
export {
|
|
116
|
+
Fields
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=Fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Fields.js","sources":["../../../../../src/components/ColorPicker/Fields/Fields.tsx"],"sourcesContent":["import { ClassNames } from \"@emotion/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { HvInput } from \"@core/components\";\nimport { HSLColor, HSVColor, RGBColor } from \"react-color\";\nimport * as color from \"react-color/lib/helpers/color\";\nimport { styles } from \"./Fields.styles\";\nimport colorPickerFieldsClasses, {\n HvColorPickerFieldsClasses,\n} from \"./fieldsClasses\";\n\ninterface FieldsProps {\n className?: string;\n rgb?: RGBColor;\n hex?: string;\n onChange: (\n data:\n | HSLColor\n | HSVColor\n | RGBColor\n | {\n source?: string;\n hex?: string;\n },\n event: React.ChangeEvent<HTMLInputElement>\n ) => void;\n classes?: HvColorPickerFieldsClasses;\n}\n\nexport const Fields = ({\n className,\n onChange,\n rgb,\n hex,\n classes,\n}: FieldsProps) => {\n const [internalHex, setInternalHex] = useState<string | undefined>(hex);\n const [internalRed, setInternalRed] = useState<number | undefined>(rgb?.r);\n const [internalGreen, setInternalGreen] = useState<number | undefined>(\n rgb?.g\n );\n const [internalBlue, setInternalBlue] = useState<number | undefined>(rgb?.b);\n\n const hexInputRef = useRef();\n const redInputRef = useRef();\n const greenInputRef = useRef();\n const blueInputRef = useRef();\n\n useEffect(() => {\n if (document.activeElement !== hexInputRef.current) {\n setInternalHex(hex);\n }\n }, [hex]);\n\n useEffect(() => {\n if (document.activeElement !== redInputRef.current) {\n setInternalRed(rgb?.r);\n }\n\n if (document.activeElement !== greenInputRef.current) {\n setInternalGreen(rgb?.g);\n }\n\n if (document.activeElement !== blueInputRef.current) {\n setInternalBlue(rgb?.b);\n }\n }, [rgb]);\n\n const handleChange = (\n data: {\n hex?: string;\n r?: number;\n g?: number;\n b?: number;\n },\n event: React.ChangeEvent<HTMLInputElement>\n ) => {\n if (data.hex && color.isValidHex(data.hex)) {\n onChange(\n {\n hex: data.hex,\n source: \"hex\",\n },\n event\n );\n } else if (data.r || data.g || data.b) {\n onChange(\n {\n r: data.r || rgb?.r,\n g: data.g || rgb?.g,\n b: data.b || rgb?.b,\n source: \"rgb\",\n },\n event\n );\n }\n };\n\n const onChangeHex = (\n event: React.ChangeEvent<HTMLInputElement>,\n value: string\n ) => {\n setInternalHex(value);\n handleChange({ hex: value }, event);\n };\n\n const onChangeRbg = (\n event: React.ChangeEvent<HTMLInputElement>,\n value: string,\n colorPart: \"r\" | \"g\" | \"b\"\n ) => {\n if (colorPart === \"r\") setInternalRed(Number(value));\n if (colorPart === \"g\") setInternalGreen(Number(value));\n if (colorPart === \"b\") setInternalBlue(Number(value));\n\n handleChange(\n {\n r: colorPart === \"r\" ? Number(value) : rgb?.r,\n g: colorPart === \"g\" ? Number(value) : rgb?.g,\n b: colorPart === \"b\" ? Number(value) : rgb?.b,\n },\n event\n );\n };\n\n return (\n <ClassNames>\n {({ css, cx }) => (\n <div\n className={cx(\n colorPickerFieldsClasses.fields,\n css(styles.fields),\n className,\n classes?.fields\n )}\n >\n <HvInput\n inputRef={hexInputRef}\n className={cx(\n colorPickerFieldsClasses.double,\n css(styles.double),\n classes?.double\n )}\n label=\"HEX\"\n value={internalHex?.replace(\"#\", \"\")}\n onChange={onChangeHex}\n onBlur={() => setInternalHex(hex)}\n disableClear\n />\n <HvInput\n inputRef={redInputRef}\n className={cx(\n colorPickerFieldsClasses.single,\n css(styles.single),\n classes?.single\n )}\n label=\"R\"\n value={`${internalRed}`}\n onChange={(event, value) => onChangeRbg(event, value, \"r\")}\n onBlur={() => setInternalRed(rgb?.r)}\n disableClear\n />\n <HvInput\n inputRef={greenInputRef}\n className={cx(\n colorPickerFieldsClasses.single,\n css(styles.single),\n classes?.single\n )}\n label=\"G\"\n value={`${internalGreen}`}\n onChange={(event, value) => onChangeRbg(event, value, \"g\")}\n onBlur={() => setInternalGreen(rgb?.g)}\n disableClear\n />\n <HvInput\n inputRef={blueInputRef}\n className={cx(\n colorPickerFieldsClasses.single,\n css(styles.single),\n classes?.single\n )}\n label=\"B\"\n value={`${internalBlue}`}\n onChange={(event, value) => onChangeRbg(event, value, \"b\")}\n onBlur={() => setInternalBlue(rgb?.b)}\n disableClear\n />\n </div>\n )}\n </ClassNames>\n );\n};\n"],"names":["Fields","className","onChange","rgb","hex","classes","internalHex","setInternalHex","useState","internalRed","setInternalRed","r","internalGreen","setInternalGreen","g","internalBlue","setInternalBlue","b","hexInputRef","useRef","redInputRef","greenInputRef","blueInputRef","useEffect","document","activeElement","current","handleChange","data","event","color","isValidHex","source","onChangeHex","value","onChangeRbg","colorPart","Number","ClassNames","children","css","cx","colorPickerFieldsClasses","fields","styles","_jsx","HvInput","inputRef","double","label","replace","onBlur","disableClear","single"],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { theme } from "@hitachivantara/uikit-styles";
|
|
2
|
+
const styles = {
|
|
3
|
+
fields: {
|
|
4
|
+
width: "100%",
|
|
5
|
+
display: "flex",
|
|
6
|
+
paddingTop: theme.colorPicker.fieldsPaddingTop,
|
|
7
|
+
marginRight: theme.colorPicker.fieldsMarginRight
|
|
8
|
+
},
|
|
9
|
+
single: {
|
|
10
|
+
maxWidth: theme.colorPicker.fieldsRgbWidth,
|
|
11
|
+
paddingLeft: theme.colorPicker.fieldsRgbPaddingLeft,
|
|
12
|
+
"& input": {
|
|
13
|
+
marginLeft: 5,
|
|
14
|
+
marginRight: 5
|
|
15
|
+
},
|
|
16
|
+
"& label": {
|
|
17
|
+
paddingLeft: 5
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
double: {
|
|
21
|
+
maxWidth: theme.colorPicker.fieldsHexWidth,
|
|
22
|
+
paddingRight: theme.colorPicker.fieldsHexPaddingRight,
|
|
23
|
+
"& input": {
|
|
24
|
+
textTransform: "uppercase",
|
|
25
|
+
marginLeft: 5,
|
|
26
|
+
marginRight: 5
|
|
27
|
+
},
|
|
28
|
+
"& label": {
|
|
29
|
+
paddingLeft: 5
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
export {
|
|
34
|
+
styles
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=Fields.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Fields.styles.js","sources":["../../../../../src/components/ColorPicker/Fields/Fields.styles.tsx"],"sourcesContent":["import { CSSInterpolation } from \"@emotion/serialize\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport { HvColorPickerFieldsClasses } from \"./fieldsClasses\";\n\nexport const styles: Partial<\n Record<keyof HvColorPickerFieldsClasses, CSSInterpolation>\n> = {\n fields: {\n width: \"100%\",\n display: \"flex\",\n paddingTop: theme.colorPicker.fieldsPaddingTop,\n marginRight: theme.colorPicker.fieldsMarginRight,\n },\n single: {\n maxWidth: theme.colorPicker.fieldsRgbWidth,\n paddingLeft: theme.colorPicker.fieldsRgbPaddingLeft,\n \"& input\": {\n marginLeft: 5,\n marginRight: 5,\n },\n \"& label\": {\n paddingLeft: 5,\n },\n },\n double: {\n maxWidth: theme.colorPicker.fieldsHexWidth,\n paddingRight: theme.colorPicker.fieldsHexPaddingRight,\n \"& input\": {\n textTransform: \"uppercase\",\n marginLeft: 5,\n marginRight: 5,\n },\n \"& label\": {\n paddingLeft: 5,\n },\n },\n};\n"],"names":["styles","fields","width","display","paddingTop","theme","colorPicker","fieldsPaddingTop","marginRight","fieldsMarginRight","single","maxWidth","fieldsRgbWidth","paddingLeft","fieldsRgbPaddingLeft","marginLeft","double","fieldsHexWidth","paddingRight","fieldsHexPaddingRight","textTransform"],"mappings":";AAIO,MAAMA,SAET;AAAA,EACFC,QAAQ;AAAA,IACNC,OAAO;AAAA,IACPC,SAAS;AAAA,IACTC,YAAYC,MAAMC,YAAYC;AAAAA,IAC9BC,aAAaH,MAAMC,YAAYG;AAAAA,EACjC;AAAA,EACAC,QAAQ;AAAA,IACNC,UAAUN,MAAMC,YAAYM;AAAAA,IAC5BC,aAAaR,MAAMC,YAAYQ;AAAAA,IAC/B,WAAW;AAAA,MACTC,YAAY;AAAA,MACZP,aAAa;AAAA,IACf;AAAA,IACA,WAAW;AAAA,MACTK,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACAG,QAAQ;AAAA,IACNL,UAAUN,MAAMC,YAAYW;AAAAA,IAC5BC,cAAcb,MAAMC,YAAYa;AAAAA,IAChC,WAAW;AAAA,MACTC,eAAe;AAAA,MACfL,YAAY;AAAA,MACZP,aAAa;AAAA,IACf;AAAA,IACA,WAAW;AAAA,MACTK,aAAa;AAAA,IACf;AAAA,EACF;AACF;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { getClasses } from "../../../utils/classes.js";
|
|
2
|
+
const classKeys = ["double", "fields", "single"];
|
|
3
|
+
const colorPickerFieldsClasses = getClasses(classKeys, "HvColorPicker-Fields");
|
|
4
|
+
const colorPickerFieldsClasses$1 = colorPickerFieldsClasses;
|
|
5
|
+
export {
|
|
6
|
+
colorPickerFieldsClasses$1 as default
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=fieldsClasses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldsClasses.js","sources":["../../../../../src/components/ColorPicker/Fields/fieldsClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvColorPickerFieldsClasses {\n fields?: string;\n double?: string;\n single?: string;\n}\n\nconst classKeys: (keyof HvColorPickerFieldsClasses)[] = [\n \"double\",\n \"fields\",\n \"single\",\n];\n\nconst colorPickerFieldsClasses = getClasses(classKeys, \"HvColorPicker-Fields\");\n\nexport default colorPickerFieldsClasses;\n"],"names":["classKeys","colorPickerFieldsClasses","getClasses"],"mappings":";AAQA,MAAMA,YAAkD,CACtD,UACA,UACA,QAAQ;AAGV,MAAMC,2BAA2BC,WAAWF,WAAW,sBAAsB;AAE7E,MAAA,6BAAeC;"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { ClassNames } from "@emotion/react";
|
|
2
|
+
import { useCallback } from "react";
|
|
3
|
+
import { Saturation, Hue } from "react-color/lib/components/common";
|
|
4
|
+
import { CustomPicker } from "react-color";
|
|
5
|
+
import { styles } from "./Picker.styles.js";
|
|
6
|
+
import colorPickerPickerClasses from "./pickerClasses.js";
|
|
7
|
+
import { jsx, jsxs, Fragment } from "@emotion/react/jsx-runtime";
|
|
8
|
+
import { Fields } from "../Fields/Fields.js";
|
|
9
|
+
import { useTheme } from "../../../hooks/useTheme.js";
|
|
10
|
+
import { HvTypography } from "../../Typography/Typography.js";
|
|
11
|
+
const Picker = ({
|
|
12
|
+
onChange,
|
|
13
|
+
rgb,
|
|
14
|
+
hsl,
|
|
15
|
+
hsv,
|
|
16
|
+
hex,
|
|
17
|
+
title,
|
|
18
|
+
classes
|
|
19
|
+
}) => {
|
|
20
|
+
const {
|
|
21
|
+
activeTheme
|
|
22
|
+
} = useTheme();
|
|
23
|
+
const SaturationPointer = useCallback(() => /* @__PURE__ */ jsx(ClassNames, {
|
|
24
|
+
children: ({
|
|
25
|
+
css,
|
|
26
|
+
cx
|
|
27
|
+
}) => /* @__PURE__ */ jsx("div", {
|
|
28
|
+
className: cx(colorPickerPickerClasses.saturationPointer, css(styles.saturationPointer), classes == null ? void 0 : classes.saturationPointer)
|
|
29
|
+
})
|
|
30
|
+
}), []);
|
|
31
|
+
const HueSlider = useCallback(() => /* @__PURE__ */ jsx(ClassNames, {
|
|
32
|
+
children: ({
|
|
33
|
+
css,
|
|
34
|
+
cx
|
|
35
|
+
}) => /* @__PURE__ */ jsx("div", {
|
|
36
|
+
className: cx(colorPickerPickerClasses.hueSlider, css(styles.hueSlider), classes == null ? void 0 : classes.hueSlider)
|
|
37
|
+
})
|
|
38
|
+
}), []);
|
|
39
|
+
return /* @__PURE__ */ jsx(ClassNames, {
|
|
40
|
+
children: ({
|
|
41
|
+
css,
|
|
42
|
+
cx
|
|
43
|
+
}) => /* @__PURE__ */ jsxs(Fragment, {
|
|
44
|
+
children: [title && /* @__PURE__ */ jsx(HvTypography, {
|
|
45
|
+
className: cx(colorPickerPickerClasses.title, css(styles.title), classes == null ? void 0 : classes.title),
|
|
46
|
+
variant: "caption1",
|
|
47
|
+
children: title
|
|
48
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
49
|
+
className: cx(colorPickerPickerClasses.pickers, css(styles.pickers), classes == null ? void 0 : classes.pickers),
|
|
50
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
51
|
+
className: cx(colorPickerPickerClasses.saturation, css(styles.saturation), classes == null ? void 0 : classes.saturation),
|
|
52
|
+
children: /* @__PURE__ */ jsx(Saturation, {
|
|
53
|
+
hsl,
|
|
54
|
+
hsv,
|
|
55
|
+
onChange,
|
|
56
|
+
pointer: SaturationPointer
|
|
57
|
+
})
|
|
58
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
59
|
+
className: cx(colorPickerPickerClasses.hue, css(styles.hue), classes == null ? void 0 : classes.hue),
|
|
60
|
+
children: /* @__PURE__ */ jsx(Hue, {
|
|
61
|
+
direction: activeTheme == null ? void 0 : activeTheme.colorPicker.hueDirection,
|
|
62
|
+
hsl,
|
|
63
|
+
onChange,
|
|
64
|
+
pointer: HueSlider
|
|
65
|
+
})
|
|
66
|
+
})]
|
|
67
|
+
}), /* @__PURE__ */ jsx(Fields, {
|
|
68
|
+
className: cx(colorPickerPickerClasses.fields, classes == null ? void 0 : classes.fields),
|
|
69
|
+
rgb,
|
|
70
|
+
hex,
|
|
71
|
+
onChange
|
|
72
|
+
})]
|
|
73
|
+
})
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
const Picker$1 = CustomPicker(Picker);
|
|
77
|
+
export {
|
|
78
|
+
Picker,
|
|
79
|
+
Picker$1 as default
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=Picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Picker.js","sources":["../../../../../src/components/ColorPicker/Picker/Picker.tsx"],"sourcesContent":["import { ClassNames } from \"@emotion/react\";\nimport { useCallback } from \"react\";\nimport { Saturation, Hue } from \"react-color/lib/components/common\";\nimport {\n CustomPicker,\n CustomPickerInjectedProps,\n HSLColor,\n HSVColor,\n RGBColor,\n} from \"react-color\";\nimport { styles } from \"./Picker.styles\";\nimport { Fields } from \"../Fields\";\nimport { HvTypography } from \"@core/components\";\nimport { useTheme } from \"@core/hooks\";\nimport colorPickerPickerClasses, {\n HvColorPickerPickerClasses,\n} from \"./pickerClasses\";\n\nexport const Picker = ({\n onChange,\n rgb,\n hsl,\n hsv,\n hex,\n title,\n classes,\n}: {\n classes?: HvColorPickerPickerClasses;\n title?: string;\n} & CustomPickerInjectedProps<\n | HSLColor\n | HSVColor\n | RGBColor\n | {\n source?: string;\n hex?: string;\n }\n>) => {\n const { activeTheme } = useTheme();\n\n const SaturationPointer = useCallback(\n () => (\n <ClassNames>\n {({ css, cx }) => (\n <div\n className={cx(\n colorPickerPickerClasses.saturationPointer,\n css(styles.saturationPointer),\n classes?.saturationPointer\n )}\n />\n )}\n </ClassNames>\n ),\n []\n );\n\n const HueSlider = useCallback(\n () => (\n <ClassNames>\n {({ css, cx }) => (\n <div\n className={cx(\n colorPickerPickerClasses.hueSlider,\n css(styles.hueSlider),\n classes?.hueSlider\n )}\n />\n )}\n </ClassNames>\n ),\n []\n );\n\n return (\n <ClassNames>\n {({ css, cx }) => (\n <>\n {title && (\n <HvTypography\n className={cx(\n colorPickerPickerClasses.title,\n css(styles.title),\n classes?.title\n )}\n variant=\"caption1\"\n >\n {title}\n </HvTypography>\n )}\n <div\n className={cx(\n colorPickerPickerClasses.pickers,\n css(styles.pickers),\n classes?.pickers\n )}\n >\n <div\n className={cx(\n colorPickerPickerClasses.saturation,\n css(styles.saturation),\n classes?.saturation\n )}\n >\n <Saturation\n hsl={hsl}\n hsv={hsv}\n onChange={onChange}\n pointer={SaturationPointer}\n />\n </div>\n <div\n className={cx(\n colorPickerPickerClasses.hue,\n css(styles.hue),\n classes?.hue\n )}\n >\n <Hue\n direction={activeTheme?.colorPicker.hueDirection}\n hsl={hsl}\n onChange={onChange}\n pointer={HueSlider}\n />\n </div>\n </div>\n <Fields\n className={cx(colorPickerPickerClasses.fields, classes?.fields)}\n rgb={rgb}\n hex={hex}\n onChange={onChange}\n />\n </>\n )}\n </ClassNames>\n );\n};\n\nexport default CustomPicker(Picker);\n"],"names":["Picker","onChange","rgb","hsl","hsv","hex","title","classes","activeTheme","useTheme","SaturationPointer","useCallback","_jsx","ClassNames","children","css","cx","className","colorPickerPickerClasses","saturationPointer","styles","HueSlider","hueSlider","_Fragment","HvTypography","variant","_jsxs","pickers","saturation","Saturation","pointer","hue","Hue","direction","colorPicker","hueDirection","Fields","fields","CustomPicker"],"mappings":";;;;;;;;;;AAkBO,MAAMA,SAASA,CAAC;AAAA,EACrBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAYF,MAAM;AACE,QAAA;AAAA,IAAEC;AAAAA,MAAgBC,SAAU;AAElC,QAAMC,oBAAoBC,YACxB,MACEC,oBAACC,YAAU;AAAA,IAAAC,UACRA,CAAC;AAAA,MAAEC;AAAAA,MAAKC;AAAAA,IAAAA,0BACP,OAAA;AAAA,MACEC,WAAWD,GACTE,yBAAyBC,mBACzBJ,IAAIK,OAAOD,iBAAiB,GAC5BZ,mCAASY,iBAAiB;AAAA,IAAA,CAC1B;AAAA,EAAA,CAIT,GACD,CAAE,CAAA;AAGJ,QAAME,YAAYV,YAChB,MACEC,oBAACC,YAAU;AAAA,IAAAC,UACRA,CAAC;AAAA,MAAEC;AAAAA,MAAKC;AAAAA,IAAAA,0BACP,OAAA;AAAA,MACEC,WAAWD,GACTE,yBAAyBI,WACzBP,IAAIK,OAAOE,SAAS,GACpBf,mCAASe,SAAS;AAAA,IAAA,CAClB;AAAA,EAAA,CAIT,GACD,CAAE,CAAA;AAGJ,6BACGT,YAAU;AAAA,IAAAC,UACRA,CAAC;AAAA,MAAEC;AAAAA,MAAKC;AAAAA,IAAAA,2BACPO,UAAA;AAAA,MAAAT,UACGR,CAAAA,SACCM,oBAACY,cAAY;AAAA,QACXP,WAAWD,GACTE,yBAAyBZ,OACzBS,IAAIK,OAAOd,KAAK,GAChBC,mCAASD,KAAK;AAAA,QAEhBmB,SAAQ;AAAA,QAAUX,UAEjBR;AAAAA,MAAAA,CAAK,GAGVoB,qBAAA,OAAA;AAAA,QACET,WAAWD,GACTE,yBAAyBS,SACzBZ,IAAIK,OAAOO,OAAO,GAClBpB,mCAASoB,OAAO;AAAA,QAChBb,WAEFF,oBAAA,OAAA;AAAA,UACEK,WAAWD,GACTE,yBAAyBU,YACzBb,IAAIK,OAAOQ,UAAU,GACrBrB,mCAASqB,UAAU;AAAA,UACnBd,8BAEDe,YAAU;AAAA,YACT1B;AAAAA,YACAC;AAAAA,YACAH;AAAAA,YACA6B,SAASpB;AAAAA,UAAAA,CAAkB;AAAA,QAAA,CAC3B,GAEJE,oBAAA,OAAA;AAAA,UACEK,WAAWD,GACTE,yBAAyBa,KACzBhB,IAAIK,OAAOW,GAAG,GACdxB,mCAASwB,GAAG;AAAA,UACZjB,8BAEDkB,KAAG;AAAA,YACFC,WAAWzB,2CAAa0B,YAAYC;AAAAA,YACpChC;AAAAA,YACAF;AAAAA,YACA6B,SAAST;AAAAA,UAAAA,CAAU;AAAA,QAAA,CAEjB,CAAA;AAAA,MAAA,CACF,GACNT,oBAACwB,QAAM;AAAA,QACLnB,WAAWD,GAAGE,yBAAyBmB,QAAQ9B,mCAAS8B,MAAM;AAAA,QAC9DnC;AAAAA,QACAG;AAAAA,QACAJ;AAAAA,MAAAA,CACA,CAAA;AAAA,IAAA,CAAA;AAAA,EAAA,CAGK;AAEjB;AAEA,MAAeqC,WAAAA,aAAatC,MAAM;"}
|