@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.
Files changed (196) hide show
  1. package/dist/cjs/components/Banner/Banner.cjs +33 -27
  2. package/dist/cjs/components/Banner/Banner.cjs.map +1 -1
  3. package/dist/cjs/components/Banner/Banner.styles.cjs +10 -39
  4. package/dist/cjs/components/Banner/Banner.styles.cjs.map +1 -1
  5. package/dist/cjs/components/Banner/BannerContent/ActionContainer/ActionContainer.cjs +32 -33
  6. package/dist/cjs/components/Banner/BannerContent/ActionContainer/ActionContainer.cjs.map +1 -1
  7. package/dist/cjs/components/Banner/BannerContent/ActionContainer/ActionContainer.styles.cjs +22 -91
  8. package/dist/cjs/components/Banner/BannerContent/ActionContainer/ActionContainer.styles.cjs.map +1 -1
  9. package/dist/cjs/components/Banner/BannerContent/BannerContent.cjs +37 -30
  10. package/dist/cjs/components/Banner/BannerContent/BannerContent.cjs.map +1 -1
  11. package/dist/cjs/components/Banner/BannerContent/BannerContent.styles.cjs +20 -51
  12. package/dist/cjs/components/Banner/BannerContent/BannerContent.styles.cjs.map +1 -1
  13. package/dist/cjs/components/Banner/BannerContent/MessageContainer/MessageContainer.cjs +25 -19
  14. package/dist/cjs/components/Banner/BannerContent/MessageContainer/MessageContainer.cjs.map +1 -1
  15. package/dist/cjs/components/Banner/BannerContent/MessageContainer/MessageContainer.styles.cjs +17 -45
  16. package/dist/cjs/components/Banner/BannerContent/MessageContainer/MessageContainer.styles.cjs.map +1 -1
  17. package/dist/cjs/components/BaseInput/BaseInput.cjs +44 -47
  18. package/dist/cjs/components/BaseInput/BaseInput.cjs.map +1 -1
  19. package/dist/cjs/components/BaseInput/BaseInput.styles.cjs +119 -148
  20. package/dist/cjs/components/BaseInput/BaseInput.styles.cjs.map +1 -1
  21. package/dist/cjs/components/Card/Card.styles.cjs.map +1 -1
  22. package/dist/cjs/components/Card/Content/Content.styles.cjs.map +1 -1
  23. package/dist/cjs/components/Card/Header/Header.styles.cjs.map +1 -1
  24. package/dist/cjs/components/Card/Media/Media.styles.cjs.map +1 -1
  25. package/dist/cjs/components/ColorPicker/ColorPicker.cjs +186 -0
  26. package/dist/cjs/components/ColorPicker/ColorPicker.cjs.map +1 -0
  27. package/dist/cjs/components/ColorPicker/ColorPicker.styles.cjs +57 -0
  28. package/dist/cjs/components/ColorPicker/ColorPicker.styles.cjs.map +1 -0
  29. package/dist/cjs/components/ColorPicker/Fields/Fields.cjs +137 -0
  30. package/dist/cjs/components/ColorPicker/Fields/Fields.cjs.map +1 -0
  31. package/dist/cjs/components/ColorPicker/Fields/Fields.styles.cjs +36 -0
  32. package/dist/cjs/components/ColorPicker/Fields/Fields.styles.cjs.map +1 -0
  33. package/dist/cjs/components/ColorPicker/Fields/fieldsClasses.cjs +8 -0
  34. package/dist/cjs/components/ColorPicker/Fields/fieldsClasses.cjs.map +1 -0
  35. package/dist/cjs/components/ColorPicker/Picker/Picker.cjs +81 -0
  36. package/dist/cjs/components/ColorPicker/Picker/Picker.cjs.map +1 -0
  37. package/dist/cjs/components/ColorPicker/Picker/Picker.styles.cjs +59 -0
  38. package/dist/cjs/components/ColorPicker/Picker/Picker.styles.cjs.map +1 -0
  39. package/dist/cjs/components/ColorPicker/Picker/pickerClasses.cjs +8 -0
  40. package/dist/cjs/components/ColorPicker/Picker/pickerClasses.cjs.map +1 -0
  41. package/dist/cjs/components/ColorPicker/PresetColors/PresetColors.cjs +51 -0
  42. package/dist/cjs/components/ColorPicker/PresetColors/PresetColors.cjs.map +1 -0
  43. package/dist/cjs/components/ColorPicker/PresetColors/PresetColors.styles.cjs +30 -0
  44. package/dist/cjs/components/ColorPicker/PresetColors/PresetColors.styles.cjs.map +1 -0
  45. package/dist/cjs/components/ColorPicker/PresetColors/presetColorsClasses.cjs +8 -0
  46. package/dist/cjs/components/ColorPicker/PresetColors/presetColorsClasses.cjs.map +1 -0
  47. package/dist/cjs/components/ColorPicker/SavedColors/SavedColors.cjs +67 -0
  48. package/dist/cjs/components/ColorPicker/SavedColors/SavedColors.cjs.map +1 -0
  49. package/dist/cjs/components/ColorPicker/SavedColors/SavedColors.styles.cjs +60 -0
  50. package/dist/cjs/components/ColorPicker/SavedColors/SavedColors.styles.cjs.map +1 -0
  51. package/dist/cjs/components/ColorPicker/SavedColors/savedColorsClasses.cjs +8 -0
  52. package/dist/cjs/components/ColorPicker/SavedColors/savedColorsClasses.cjs.map +1 -0
  53. package/dist/cjs/components/ColorPicker/colorPickerClasses.cjs +8 -0
  54. package/dist/cjs/components/ColorPicker/colorPickerClasses.cjs.map +1 -0
  55. package/dist/cjs/components/DatePicker/DatePicker.styles.cjs +0 -24
  56. package/dist/cjs/components/DatePicker/DatePicker.styles.cjs.map +1 -1
  57. package/dist/cjs/components/Dialog/Dialog.styles.cjs +2 -2
  58. package/dist/cjs/components/Dialog/Dialog.styles.cjs.map +1 -1
  59. package/dist/cjs/components/FilterGroup/Counter/Counter.cjs +5 -3
  60. package/dist/cjs/components/FilterGroup/Counter/Counter.cjs.map +1 -1
  61. package/dist/cjs/components/FilterGroup/Counter/Counter.styles.cjs.map +1 -1
  62. package/dist/cjs/components/FilterGroup/Counter/counterClasses.cjs +8 -0
  63. package/dist/cjs/components/FilterGroup/Counter/counterClasses.cjs.map +1 -0
  64. package/dist/cjs/components/FilterGroup/FilterContent/FilterContent.cjs +1 -1
  65. package/dist/cjs/components/FilterGroup/FilterContent/FilterContent.cjs.map +1 -1
  66. package/dist/cjs/components/FilterGroup/FilterContent/FilterContent.styles.cjs.map +1 -1
  67. package/dist/cjs/components/FilterGroup/FilterContent/filterContentClasses.cjs +1 -1
  68. package/dist/cjs/components/FilterGroup/FilterContent/filterContentClasses.cjs.map +1 -1
  69. package/dist/cjs/components/FilterGroup/FilterGroup.styles.cjs.map +1 -1
  70. package/dist/cjs/components/FilterGroup/LeftPanel/LeftPanel.cjs +5 -2
  71. package/dist/cjs/components/FilterGroup/LeftPanel/LeftPanel.cjs.map +1 -1
  72. package/dist/cjs/components/FilterGroup/LeftPanel/LeftPanel.styles.cjs.map +1 -1
  73. package/dist/cjs/components/FilterGroup/LeftPanel/leftPanelClasses.cjs +8 -0
  74. package/dist/cjs/components/FilterGroup/LeftPanel/leftPanelClasses.cjs.map +1 -0
  75. package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs +8 -5
  76. package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs.map +1 -1
  77. package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.styles.cjs.map +1 -1
  78. package/dist/cjs/components/FilterGroup/RightPanel/rightPanelClasses.cjs +8 -0
  79. package/dist/cjs/components/FilterGroup/RightPanel/rightPanelClasses.cjs.map +1 -0
  80. package/dist/cjs/components/InlineEditor/InlineEditor.styles.cjs.map +1 -1
  81. package/dist/cjs/components/Input/Input.cjs +168 -127
  82. package/dist/cjs/components/Input/Input.cjs.map +1 -1
  83. package/dist/cjs/components/Input/Input.styles.cjs +61 -172
  84. package/dist/cjs/components/Input/Input.styles.cjs.map +1 -1
  85. package/dist/cjs/components/QueryBuilder/Rule/Rule.styles.cjs.map +1 -1
  86. package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.cjs.map +1 -1
  87. package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.cjs +1 -1
  88. package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.cjs.map +1 -1
  89. package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.styles.cjs.map +1 -1
  90. package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.styles.cjs +1 -0
  91. package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.styles.cjs.map +1 -1
  92. package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.styles.cjs.map +1 -1
  93. package/dist/cjs/components/ScrollTo/Horizontal/ScrollToHorizontal.styles.cjs.map +1 -1
  94. package/dist/cjs/components/ScrollTo/Vertical/ScrollToVertical.styles.cjs.map +1 -1
  95. package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.cjs.map +1 -1
  96. package/dist/cjs/index.cjs +4 -0
  97. package/dist/cjs/index.cjs.map +1 -1
  98. package/dist/esm/components/Banner/Banner.js +33 -28
  99. package/dist/esm/components/Banner/Banner.js.map +1 -1
  100. package/dist/esm/components/Banner/Banner.styles.js +10 -36
  101. package/dist/esm/components/Banner/Banner.styles.js.map +1 -1
  102. package/dist/esm/components/Banner/BannerContent/ActionContainer/ActionContainer.js +34 -35
  103. package/dist/esm/components/Banner/BannerContent/ActionContainer/ActionContainer.js.map +1 -1
  104. package/dist/esm/components/Banner/BannerContent/ActionContainer/ActionContainer.styles.js +22 -89
  105. package/dist/esm/components/Banner/BannerContent/ActionContainer/ActionContainer.styles.js.map +1 -1
  106. package/dist/esm/components/Banner/BannerContent/BannerContent.js +36 -31
  107. package/dist/esm/components/Banner/BannerContent/BannerContent.js.map +1 -1
  108. package/dist/esm/components/Banner/BannerContent/BannerContent.styles.js +20 -48
  109. package/dist/esm/components/Banner/BannerContent/BannerContent.styles.js.map +1 -1
  110. package/dist/esm/components/Banner/BannerContent/MessageContainer/MessageContainer.js +27 -21
  111. package/dist/esm/components/Banner/BannerContent/MessageContainer/MessageContainer.js.map +1 -1
  112. package/dist/esm/components/Banner/BannerContent/MessageContainer/MessageContainer.styles.js +17 -43
  113. package/dist/esm/components/Banner/BannerContent/MessageContainer/MessageContainer.styles.js.map +1 -1
  114. package/dist/esm/components/BaseInput/BaseInput.js +47 -50
  115. package/dist/esm/components/BaseInput/BaseInput.js.map +1 -1
  116. package/dist/esm/components/BaseInput/BaseInput.styles.js +119 -146
  117. package/dist/esm/components/BaseInput/BaseInput.styles.js.map +1 -1
  118. package/dist/esm/components/Card/Card.styles.js.map +1 -1
  119. package/dist/esm/components/Card/Content/Content.styles.js.map +1 -1
  120. package/dist/esm/components/Card/Header/Header.styles.js.map +1 -1
  121. package/dist/esm/components/Card/Media/Media.styles.js.map +1 -1
  122. package/dist/esm/components/ColorPicker/ColorPicker.js +186 -0
  123. package/dist/esm/components/ColorPicker/ColorPicker.js.map +1 -0
  124. package/dist/esm/components/ColorPicker/ColorPicker.styles.js +57 -0
  125. package/dist/esm/components/ColorPicker/ColorPicker.styles.js.map +1 -0
  126. package/dist/esm/components/ColorPicker/Fields/Fields.js +118 -0
  127. package/dist/esm/components/ColorPicker/Fields/Fields.js.map +1 -0
  128. package/dist/esm/components/ColorPicker/Fields/Fields.styles.js +36 -0
  129. package/dist/esm/components/ColorPicker/Fields/Fields.styles.js.map +1 -0
  130. package/dist/esm/components/ColorPicker/Fields/fieldsClasses.js +8 -0
  131. package/dist/esm/components/ColorPicker/Fields/fieldsClasses.js.map +1 -0
  132. package/dist/esm/components/ColorPicker/Picker/Picker.js +81 -0
  133. package/dist/esm/components/ColorPicker/Picker/Picker.js.map +1 -0
  134. package/dist/esm/components/ColorPicker/Picker/Picker.styles.js +59 -0
  135. package/dist/esm/components/ColorPicker/Picker/Picker.styles.js.map +1 -0
  136. package/dist/esm/components/ColorPicker/Picker/pickerClasses.js +8 -0
  137. package/dist/esm/components/ColorPicker/Picker/pickerClasses.js.map +1 -0
  138. package/dist/esm/components/ColorPicker/PresetColors/PresetColors.js +51 -0
  139. package/dist/esm/components/ColorPicker/PresetColors/PresetColors.js.map +1 -0
  140. package/dist/esm/components/ColorPicker/PresetColors/PresetColors.styles.js +30 -0
  141. package/dist/esm/components/ColorPicker/PresetColors/PresetColors.styles.js.map +1 -0
  142. package/dist/esm/components/ColorPicker/PresetColors/presetColorsClasses.js +8 -0
  143. package/dist/esm/components/ColorPicker/PresetColors/presetColorsClasses.js.map +1 -0
  144. package/dist/esm/components/ColorPicker/SavedColors/SavedColors.js +67 -0
  145. package/dist/esm/components/ColorPicker/SavedColors/SavedColors.js.map +1 -0
  146. package/dist/esm/components/ColorPicker/SavedColors/SavedColors.styles.js +60 -0
  147. package/dist/esm/components/ColorPicker/SavedColors/SavedColors.styles.js.map +1 -0
  148. package/dist/esm/components/ColorPicker/SavedColors/savedColorsClasses.js +8 -0
  149. package/dist/esm/components/ColorPicker/SavedColors/savedColorsClasses.js.map +1 -0
  150. package/dist/esm/components/ColorPicker/colorPickerClasses.js +8 -0
  151. package/dist/esm/components/ColorPicker/colorPickerClasses.js.map +1 -0
  152. package/dist/esm/components/DatePicker/DatePicker.styles.js +0 -24
  153. package/dist/esm/components/DatePicker/DatePicker.styles.js.map +1 -1
  154. package/dist/esm/components/Dialog/Dialog.styles.js +2 -2
  155. package/dist/esm/components/Dialog/Dialog.styles.js.map +1 -1
  156. package/dist/esm/components/FilterGroup/Counter/Counter.js +5 -3
  157. package/dist/esm/components/FilterGroup/Counter/Counter.js.map +1 -1
  158. package/dist/esm/components/FilterGroup/Counter/Counter.styles.js.map +1 -1
  159. package/dist/esm/components/FilterGroup/Counter/counterClasses.js +8 -0
  160. package/dist/esm/components/FilterGroup/Counter/counterClasses.js.map +1 -0
  161. package/dist/esm/components/FilterGroup/FilterContent/FilterContent.js +1 -1
  162. package/dist/esm/components/FilterGroup/FilterContent/FilterContent.js.map +1 -1
  163. package/dist/esm/components/FilterGroup/FilterContent/FilterContent.styles.js.map +1 -1
  164. package/dist/esm/components/FilterGroup/FilterContent/filterContentClasses.js +1 -1
  165. package/dist/esm/components/FilterGroup/FilterContent/filterContentClasses.js.map +1 -1
  166. package/dist/esm/components/FilterGroup/FilterGroup.styles.js.map +1 -1
  167. package/dist/esm/components/FilterGroup/LeftPanel/LeftPanel.js +5 -2
  168. package/dist/esm/components/FilterGroup/LeftPanel/LeftPanel.js.map +1 -1
  169. package/dist/esm/components/FilterGroup/LeftPanel/LeftPanel.styles.js.map +1 -1
  170. package/dist/esm/components/FilterGroup/LeftPanel/leftPanelClasses.js +8 -0
  171. package/dist/esm/components/FilterGroup/LeftPanel/leftPanelClasses.js.map +1 -0
  172. package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js +8 -5
  173. package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js.map +1 -1
  174. package/dist/esm/components/FilterGroup/RightPanel/RightPanel.styles.js.map +1 -1
  175. package/dist/esm/components/FilterGroup/RightPanel/rightPanelClasses.js +8 -0
  176. package/dist/esm/components/FilterGroup/RightPanel/rightPanelClasses.js.map +1 -0
  177. package/dist/esm/components/InlineEditor/InlineEditor.styles.js.map +1 -1
  178. package/dist/esm/components/Input/Input.js +170 -129
  179. package/dist/esm/components/Input/Input.js.map +1 -1
  180. package/dist/esm/components/Input/Input.styles.js +61 -170
  181. package/dist/esm/components/Input/Input.styles.js.map +1 -1
  182. package/dist/esm/components/QueryBuilder/Rule/Rule.styles.js.map +1 -1
  183. package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.js.map +1 -1
  184. package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.js +1 -1
  185. package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.js.map +1 -1
  186. package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.styles.js.map +1 -1
  187. package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.styles.js +1 -0
  188. package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.styles.js.map +1 -1
  189. package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.styles.js.map +1 -1
  190. package/dist/esm/components/ScrollTo/Horizontal/ScrollToHorizontal.styles.js.map +1 -1
  191. package/dist/esm/components/ScrollTo/Vertical/ScrollToVertical.styles.js.map +1 -1
  192. package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.js.map +1 -1
  193. package/dist/esm/index.js +22 -18
  194. package/dist/esm/index.js.map +1 -1
  195. package/dist/types/index.d.ts +112 -5
  196. 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":";;;;;;;AA4BO,MAAMA,SAASA,CAAC;AAAA,EACrBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AACW,MAAM;AACjB,QAAM,CAACC,aAAaC,cAAc,IAAIC,SAA6BJ,GAAG;AACtE,QAAM,CAACK,aAAaC,cAAc,IAAIF,SAA6BL,2BAAKQ,CAAC;AACzE,QAAM,CAACC,eAAeC,gBAAgB,IAAIL,SACxCL,2BAAKW,CAAC;AAER,QAAM,CAACC,cAAcC,eAAe,IAAIR,SAA6BL,2BAAKc,CAAC;AAE3E,QAAMC,cAAcC;AACpB,QAAMC,cAAcD;AACpB,QAAME,gBAAgBF;AACtB,QAAMG,eAAeH;AAErBI,YAAU,MAAM;AACVC,QAAAA,SAASC,kBAAkBP,YAAYQ,SAAS;AAClDnB,qBAAeH,GAAG;AAAA,IACpB;AAAA,EAAA,GACC,CAACA,GAAG,CAAC;AAERmB,YAAU,MAAM;AACVC,QAAAA,SAASC,kBAAkBL,YAAYM,SAAS;AAClDhB,qBAAeP,2BAAKQ,CAAC;AAAA,IACvB;AAEIa,QAAAA,SAASC,kBAAkBJ,cAAcK,SAAS;AACpDb,uBAAiBV,2BAAKW,CAAC;AAAA,IACzB;AAEIU,QAAAA,SAASC,kBAAkBH,aAAaI,SAAS;AACnDV,sBAAgBb,2BAAKc,CAAC;AAAA,IACxB;AAAA,EAAA,GACC,CAACd,GAAG,CAAC;AAEFwB,QAAAA,eAAeA,CACnBC,MAMAC,UACG;AACH,QAAID,KAAKxB,OAAO0B,MAAMC,WAAWH,KAAKxB,GAAG,GAAG;AAExC,eAAA;AAAA,QACEA,KAAKwB,KAAKxB;AAAAA,QACV4B,QAAQ;AAAA,SAEVH,KAAK;AAAA,IAAA,WAEED,KAAKjB,KAAKiB,KAAKd,KAAKc,KAAKX,GAAG;AAEnC,eAAA;AAAA,QACEN,GAAGiB,KAAKjB,MAAKR,2BAAKQ;AAAAA,QAClBG,GAAGc,KAAKd,MAAKX,2BAAKW;AAAAA,QAClBG,GAAGW,KAAKX,MAAKd,2BAAKc;AAAAA,QAClBe,QAAQ;AAAA,SAEVH,KAAK;AAAA,IAET;AAAA,EAAA;AAGII,QAAAA,cAAcA,CAClBJ,OACAK,UACG;AACH3B,mBAAe2B,KAAK;AACP,iBAAA;AAAA,MAAE9B,KAAK8B;AAAAA,OAASL,KAAK;AAAA,EAAA;AAGpC,QAAMM,cAAcA,CAClBN,OACAK,OACAE,cACG;AACH,QAAIA,cAAc;AAAoBC,qBAAAA,OAAOH,KAAK,CAAC;AACnD,QAAIE,cAAc;AAAsBC,uBAAAA,OAAOH,KAAK,CAAC;AACrD,QAAIE,cAAc;AAAqBC,sBAAAA,OAAOH,KAAK,CAAC;AAGlD,iBAAA;AAAA,MACEvB,GAAGyB,cAAc,MAAMC,OAAOH,KAAK,IAAI/B,2BAAKQ;AAAAA,MAC5CG,GAAGsB,cAAc,MAAMC,OAAOH,KAAK,IAAI/B,2BAAKW;AAAAA,MAC5CG,GAAGmB,cAAc,MAAMC,OAAOH,KAAK,IAAI/B,2BAAKc;AAAAA,OAE9CY,KAAK;AAAA,EAAA;AAIT,6BACGS,YAAU;AAAA,IAAAC,UACRA,CAAC;AAAA,MAAEC;AAAAA,MAAKC;AAAAA,IAAAA,2BACP,OAAA;AAAA,MACExC,WAAWwC,GACTC,yBAAyBC,QACzBH,IAAII,OAAOD,MAAM,GACjB1C,WACAI,mCAASsC,MAAM;AAAA,MACfJ,UAAA,CAEFM,oBAACC,SAAO;AAAA,QACNC,UAAU7B;AAAAA,QACVjB,WAAWwC,GACTC,yBAAyBM,QACzBR,IAAII,OAAOI,MAAM,GACjB3C,mCAAS2C,MAAM;AAAA,QAEjBC,OAAM;AAAA,QACNf,OAAO5B,2CAAa4C,QAAQ,KAAK;AAAA,QACjChD,UAAU+B;AAAAA,QACVkB,QAAQA,MAAM5C,eAAeH,GAAG;AAAA,QAChCgD,cAAY;AAAA,MAAA,CACZ,GACFP,oBAACC,SAAO;AAAA,QACNC,UAAU3B;AAAAA,QACVnB,WAAWwC,GACTC,yBAAyBW,QACzBb,IAAII,OAAOS,MAAM,GACjBhD,mCAASgD,MAAM;AAAA,QAEjBJ,OAAM;AAAA,QACNf,OAAQ,GAAEzB;AAAAA,QACVP,UAAUA,CAAC2B,OAAOK,UAAUC,YAAYN,OAAOK,OAAO,GAAG;AAAA,QACzDiB,QAAQA,MAAMzC,eAAeP,2BAAKQ,CAAC;AAAA,QACnCyC,cAAY;AAAA,MAAA,CACZ,GACFP,oBAACC,SAAO;AAAA,QACNC,UAAU1B;AAAAA,QACVpB,WAAWwC,GACTC,yBAAyBW,QACzBb,IAAII,OAAOS,MAAM,GACjBhD,mCAASgD,MAAM;AAAA,QAEjBJ,OAAM;AAAA,QACNf,OAAQ,GAAEtB;AAAAA,QACVV,UAAUA,CAAC2B,OAAOK,UAAUC,YAAYN,OAAOK,OAAO,GAAG;AAAA,QACzDiB,QAAQA,MAAMtC,iBAAiBV,2BAAKW,CAAC;AAAA,QACrCsC,cAAY;AAAA,MAAA,CACZ,GACFP,oBAACC,SAAO;AAAA,QACNC,UAAUzB;AAAAA,QACVrB,WAAWwC,GACTC,yBAAyBW,QACzBb,IAAII,OAAOS,MAAM,GACjBhD,mCAASgD,MAAM;AAAA,QAEjBJ,OAAM;AAAA,QACNf,OAAQ,GAAEnB;AAAAA,QACVb,UAAUA,CAAC2B,OAAOK,UAAUC,YAAYN,OAAOK,OAAO,GAAG;AAAA,QACzDiB,QAAQA,MAAMnC,gBAAgBb,2BAAKc,CAAC;AAAA,QACpCmC,cAAY;AAAA,MAAA,CACZ,CAAA;AAAA,IAAA,CAAA;AAAA,EAAA,CAGK;AAEjB;"}
@@ -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;"}