@hitachivantara/uikit-react-core 5.66.6 → 5.66.8

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 (70) hide show
  1. package/dist/cjs/BaseDropdown/BaseDropdown.cjs +259 -241
  2. package/dist/cjs/BaseDropdown/BaseDropdownContext/BaseDropdownContext.cjs +6 -3
  3. package/dist/cjs/Button/Button.cjs +10 -2
  4. package/dist/cjs/Button/Button.styles.cjs +1 -1
  5. package/dist/cjs/Calendar/SingleCalendar/SingleCalendar.styles.cjs +0 -1
  6. package/dist/cjs/ColorPicker/ColorPicker.styles.cjs +2 -1
  7. package/dist/cjs/DropDownMenu/DropDownMenu.cjs +22 -5
  8. package/dist/cjs/DropDownMenu/DropDownMenu.styles.cjs +3 -1
  9. package/dist/cjs/Dropdown/List/List.cjs +2 -2
  10. package/dist/cjs/InlineEditor/InlineEditor.cjs +1 -1
  11. package/dist/cjs/MultiButton/MultiButton.styles.cjs +1 -6
  12. package/dist/cjs/TagsInput/TagsInput.cjs +1 -1
  13. package/dist/cjs/TimePicker/TimePicker.styles.cjs +0 -1
  14. package/dist/cjs/TreeView/TreeItem/TreeItem.cjs +2 -2
  15. package/dist/cjs/TreeView/TreeItem/TreeItem.styles.cjs +5 -3
  16. package/dist/cjs/TreeView/TreeItem/useHvTreeItem.cjs +23 -0
  17. package/dist/cjs/TreeView/internals/DescendantProvider.cjs +12 -16
  18. package/dist/cjs/VerticalNavigation/TreeView/TreeView.cjs +17 -24
  19. package/dist/cjs/VerticalNavigation/TreeView/TreeViewItem.cjs +4 -4
  20. package/dist/esm/BaseDropdown/BaseDropdown.js +261 -243
  21. package/dist/esm/BaseDropdown/BaseDropdown.js.map +1 -1
  22. package/dist/esm/BaseDropdown/BaseDropdownContext/BaseDropdownContext.js +8 -3
  23. package/dist/esm/BaseDropdown/BaseDropdownContext/BaseDropdownContext.js.map +1 -1
  24. package/dist/esm/Button/Button.js +11 -3
  25. package/dist/esm/Button/Button.js.map +1 -1
  26. package/dist/esm/Button/Button.styles.js +1 -1
  27. package/dist/esm/Button/Button.styles.js.map +1 -1
  28. package/dist/esm/Calendar/SingleCalendar/SingleCalendar.styles.js +0 -1
  29. package/dist/esm/Calendar/SingleCalendar/SingleCalendar.styles.js.map +1 -1
  30. package/dist/esm/CheckBox/CheckBox.js.map +1 -1
  31. package/dist/esm/CheckBoxGroup/CheckBoxGroup.js.map +1 -1
  32. package/dist/esm/ColorPicker/ColorPicker.styles.js +2 -1
  33. package/dist/esm/ColorPicker/ColorPicker.styles.js.map +1 -1
  34. package/dist/esm/DatePicker/DatePicker.js.map +1 -1
  35. package/dist/esm/DropDownMenu/DropDownMenu.js +23 -6
  36. package/dist/esm/DropDownMenu/DropDownMenu.js.map +1 -1
  37. package/dist/esm/DropDownMenu/DropDownMenu.styles.js +3 -1
  38. package/dist/esm/DropDownMenu/DropDownMenu.styles.js.map +1 -1
  39. package/dist/esm/Dropdown/Dropdown.js.map +1 -1
  40. package/dist/esm/Dropdown/List/List.js +3 -3
  41. package/dist/esm/Dropdown/List/List.js.map +1 -1
  42. package/dist/esm/InlineEditor/InlineEditor.js +1 -1
  43. package/dist/esm/InlineEditor/InlineEditor.js.map +1 -1
  44. package/dist/esm/MultiButton/MultiButton.styles.js +1 -6
  45. package/dist/esm/MultiButton/MultiButton.styles.js.map +1 -1
  46. package/dist/esm/SelectionList/SelectionList.js.map +1 -1
  47. package/dist/esm/Switch/Switch.js.map +1 -1
  48. package/dist/esm/TagsInput/TagsInput.js +1 -1
  49. package/dist/esm/TagsInput/TagsInput.js.map +1 -1
  50. package/dist/esm/TimePicker/TimePicker.js.map +1 -1
  51. package/dist/esm/TimePicker/TimePicker.styles.js +0 -1
  52. package/dist/esm/TimePicker/TimePicker.styles.js.map +1 -1
  53. package/dist/esm/TreeView/TreeItem/TreeItem.js +2 -2
  54. package/dist/esm/TreeView/TreeItem/TreeItem.js.map +1 -1
  55. package/dist/esm/TreeView/TreeItem/TreeItem.styles.js +5 -3
  56. package/dist/esm/TreeView/TreeItem/TreeItem.styles.js.map +1 -1
  57. package/dist/esm/TreeView/TreeItem/useHvTreeItem.js +4 -0
  58. package/dist/esm/TreeView/TreeItem/useHvTreeItem.js.map +1 -1
  59. package/dist/esm/TreeView/internals/DescendantProvider.js +12 -16
  60. package/dist/esm/TreeView/internals/DescendantProvider.js.map +1 -1
  61. package/dist/esm/VerticalNavigation/TreeView/TreeView.js +16 -23
  62. package/dist/esm/VerticalNavigation/TreeView/TreeView.js.map +1 -1
  63. package/dist/esm/VerticalNavigation/TreeView/TreeViewItem.js +2 -2
  64. package/dist/esm/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
  65. package/dist/esm/hooks/useControlled.js.map +1 -1
  66. package/dist/types/index.d.ts +15 -11
  67. package/package.json +6 -6
  68. package/dist/cjs/VerticalNavigation/TreeView/descendants.cjs +0 -125
  69. package/dist/esm/VerticalNavigation/TreeView/descendants.js +0 -125
  70. package/dist/esm/VerticalNavigation/TreeView/descendants.js.map +0 -1
@@ -20,89 +20,251 @@ const BaseDropdownContext = require("./BaseDropdownContext/BaseDropdownContext.c
20
20
  const Typography = require("../Typography/Typography.cjs");
21
21
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
22
22
  const ClickAwayListener__default = /* @__PURE__ */ _interopDefault(ClickAwayListener);
23
+ const BaseDropdown = React.forwardRef((props, ref) => {
24
+ const {
25
+ id: idProp,
26
+ className,
27
+ classes: classesProp,
28
+ children,
29
+ role,
30
+ placeholder,
31
+ component,
32
+ adornment,
33
+ expanded,
34
+ dropdownHeaderProps,
35
+ defaultExpanded,
36
+ disabled,
37
+ readOnly,
38
+ required,
39
+ disablePortal,
40
+ "aria-expanded": ariaExpandedProp,
41
+ "aria-label": ariaLabelProp,
42
+ "aria-labelledby": ariaLabelledByProp,
43
+ dropdownHeaderRef: dropdownHeaderRefProp,
44
+ onToggle,
45
+ onClickOutside,
46
+ ...others
47
+ } = props;
48
+ const { classes, cx } = BaseDropdown_styles.useClasses(classesProp);
49
+ const {
50
+ popperPlacement,
51
+ popper,
52
+ popperElement,
53
+ referenceElement,
54
+ setPopperElement,
55
+ setReferenceElement
56
+ } = BaseDropdownContext.useBaseDropdownContext();
57
+ const { rootId } = useTheme.useTheme();
58
+ const [isOpen, setIsOpen] = useControlled.useControlled(expanded, Boolean(defaultExpanded));
59
+ const handleDropdownHeaderRefProp = useForkRef.useForkRef(
60
+ dropdownHeaderRefProp,
61
+ dropdownHeaderProps?.ref
62
+ );
63
+ const handleDropdownHeaderRef = useForkRef.useForkRef(
64
+ setReferenceElement,
65
+ handleDropdownHeaderRefProp
66
+ );
67
+ const ariaRole = role || (component == null ? "combobox" : void 0);
68
+ const ariaExpanded = ariaExpandedProp ?? (ariaRole ? !!isOpen : void 0);
69
+ const id = useUniqueId.useUniqueId(idProp);
70
+ const containerId = setId.setId(id, "children-container");
71
+ const headerControlArias = {
72
+ "aria-required": required ?? void 0,
73
+ "aria-readonly": readOnly ?? void 0,
74
+ "aria-disabled": disabled ?? void 0,
75
+ "aria-expanded": ariaExpanded,
76
+ "aria-owns": isOpen ? containerId : void 0,
77
+ "aria-controls": isOpen ? containerId : void 0
78
+ };
79
+ const headerAriaLabels = {
80
+ "aria-label": ariaLabelProp,
81
+ "aria-labelledby": ariaLabelledByProp
82
+ };
83
+ const extensionWidth = referenceElement ? referenceElement?.offsetWidth : "inherit";
84
+ const handleToggle = React.useCallback(
85
+ (event) => {
86
+ if (event && !keyboardUtils.isKey(event, "Tab")) {
87
+ event.preventDefault();
88
+ }
89
+ const notControlKey = !!event?.code && !keyboardUtils.isOneOfKeys(event, ["Tab", "Enter", "Esc", "ArrowDown", "Space"]);
90
+ const ignoredCombinations = keyboardUtils.isKey(event, "Esc") && !isOpen || keyboardUtils.isKey(event, "ArrowDown") && isOpen || keyboardUtils.isKey(event, "Tab") && !isOpen;
91
+ if (disabled || notControlKey || ignoredCombinations)
92
+ return;
93
+ const newOpen = !isOpen;
94
+ setIsOpen(() => {
95
+ if (!newOpen) {
96
+ referenceElement?.focus({ preventScroll: true });
97
+ }
98
+ return newOpen;
99
+ });
100
+ onToggle?.(event, newOpen);
101
+ },
102
+ [isOpen, disabled, setIsOpen, onToggle, referenceElement]
103
+ );
104
+ const ExpanderComponent = isOpen ? uikitReactIcons.DropUpXS : uikitReactIcons.DropDownXS;
105
+ const defaultHeaderElement = /* @__PURE__ */ jsxRuntime.jsxs(
106
+ "div",
107
+ {
108
+ id: setId.setId(id, "header"),
109
+ className: cx(classes.header, {
110
+ [classes.headerDisabled]: disabled,
111
+ [classes.headerReadOnly]: readOnly,
112
+ [classes.headerOpen]: isOpen,
113
+ [classes.headerOpenUp]: isOpen && popperPlacement?.includes("top"),
114
+ [classes.headerOpenDown]: isOpen && popperPlacement?.includes("bottom")
115
+ }),
116
+ role: ariaRole === "combobox" ? "textbox" : void 0,
117
+ ...headerAriaLabels,
118
+ style: disabled || readOnly ? { pointerEvents: "none" } : void 0,
119
+ tabIndex: disabled ? -1 : 0,
120
+ ref: handleDropdownHeaderRef,
121
+ ...dropdownHeaderProps,
122
+ children: [
123
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.selection, children: placeholder && typeof placeholder === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
124
+ Typography.HvTypography,
125
+ {
126
+ className: cx(classes.placeholder, {
127
+ [classes.selectionDisabled]: disabled
128
+ }),
129
+ variant: "body",
130
+ children: placeholder
131
+ }
132
+ ) : placeholder }),
133
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.arrowContainer, children: adornment || /* @__PURE__ */ jsxRuntime.jsx(
134
+ ExpanderComponent,
135
+ {
136
+ iconSize: "XS",
137
+ color: disabled ? "secondary_60" : void 0,
138
+ className: classes.arrow
139
+ }
140
+ ) })
141
+ ]
142
+ }
143
+ );
144
+ const headerElement = component && React.isValidElement(component) ? React.cloneElement(component, {
145
+ ref: handleDropdownHeaderRef,
146
+ ...headerControlArias
147
+ }) : defaultHeaderElement;
148
+ const containerComponent = (() => {
149
+ const handleContainerKeyDown = (event) => {
150
+ if (keyboardUtils.isKey(event, "Esc")) {
151
+ handleToggle(event);
152
+ }
153
+ if (keyboardUtils.isKey(event, "Tab") && !event.shiftKey) {
154
+ const focusList = focusableElementFinder.getFirstAndLastFocus(popperElement);
155
+ if (document.activeElement === focusList?.last) {
156
+ event.preventDefault();
157
+ focusList?.first?.focus();
158
+ }
159
+ }
160
+ };
161
+ const handleOutside = (event) => {
162
+ const isButtonClick = referenceElement?.contains(event.target);
163
+ if (!isButtonClick) {
164
+ onClickOutside?.(event);
165
+ setIsOpen(false);
166
+ onToggle?.(event, false);
167
+ }
168
+ };
169
+ const container = /* @__PURE__ */ jsxRuntime.jsx(
170
+ "div",
171
+ {
172
+ ref: setPopperElement,
173
+ className: classes.container,
174
+ style: popper?.styles.popper,
175
+ ...popper?.attributes.popper,
176
+ children: /* @__PURE__ */ jsxRuntime.jsx(ClickAwayListener__default.default, { onClickAway: handleOutside, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { onKeyDown: handleContainerKeyDown, children: [
177
+ popperPlacement?.includes("bottom") && /* @__PURE__ */ jsxRuntime.jsx(
178
+ "div",
179
+ {
180
+ style: { width: extensionWidth },
181
+ className: cx(classes.inputExtensionOpen, {
182
+ [classes.inputExtensionLeftPosition]: popperPlacement.includes("end")
183
+ })
184
+ }
185
+ ),
186
+ /* @__PURE__ */ jsxRuntime.jsx(
187
+ "div",
188
+ {
189
+ id: containerId,
190
+ className: cx(classes.panel, {
191
+ [classes.panelOpenedUp]: popperPlacement?.includes("top"),
192
+ [classes.panelOpenedDown]: popperPlacement?.includes("bottom")
193
+ }),
194
+ children
195
+ }
196
+ ),
197
+ popperPlacement?.includes("top") && /* @__PURE__ */ jsxRuntime.jsx(
198
+ "div",
199
+ {
200
+ style: { width: extensionWidth },
201
+ className: cx(
202
+ classes.inputExtensionOpen,
203
+ classes.inputExtensionOpenShadow,
204
+ {
205
+ [classes.inputExtensionFloatRight]: popperPlacement.includes("end"),
206
+ [classes.inputExtensionFloatLeft]: popperPlacement.includes("start")
207
+ }
208
+ )
209
+ }
210
+ )
211
+ ] }) })
212
+ }
213
+ );
214
+ if (disablePortal)
215
+ return container;
216
+ return reactDom.createPortal(
217
+ container,
218
+ document.getElementById(rootId || "") || document.body
219
+ );
220
+ })();
221
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.root, children: [
222
+ /* @__PURE__ */ jsxRuntime.jsx(
223
+ "div",
224
+ {
225
+ ref,
226
+ id,
227
+ className: cx(
228
+ classes.anchor,
229
+ { [classes.rootDisabled]: disabled },
230
+ className
231
+ ),
232
+ ...!readOnly && {
233
+ onKeyDown: handleToggle,
234
+ onClick: handleToggle
235
+ },
236
+ ...ariaRole && {
237
+ role: ariaRole,
238
+ ...headerAriaLabels,
239
+ ...headerControlArias
240
+ },
241
+ tabIndex: -1,
242
+ ...others,
243
+ children: headerElement
244
+ }
245
+ ),
246
+ isOpen && containerComponent
247
+ ] });
248
+ });
23
249
  const HvBaseDropdown = React.forwardRef(
24
250
  (props, ref) => {
25
251
  const {
26
- id: idProp,
27
- className,
28
- classes: classesProp,
29
- children,
30
- role,
31
- placeholder,
32
- component,
33
- adornment,
34
- expanded,
35
- dropdownHeaderProps,
36
- defaultExpanded,
37
- disabled,
38
- readOnly,
39
- required,
40
- disablePortal,
252
+ popperProps = {},
41
253
  variableWidth,
42
254
  placement: placementProp = "right",
43
- "aria-expanded": ariaExpandedProp,
44
- "aria-label": ariaLabelProp,
45
- "aria-labelledby": ariaLabelledByProp,
46
- popperProps = {},
47
- dropdownHeaderRef: dropdownHeaderRefProp,
48
- onToggle,
49
- onClickOutside,
50
255
  onContainerCreation,
51
256
  ...others
52
257
  } = useDefaultProps.useDefaultProps("HvBaseDropdown", props);
53
- const { classes, cx } = BaseDropdown_styles.useClasses(classesProp);
54
- const { rootId } = useTheme.useTheme();
55
- const [isOpen, setIsOpen] = useControlled.useControlled(
56
- expanded,
57
- Boolean(defaultExpanded)
58
- );
258
+ const placement = `bottom-${placementProp === "right" ? "start" : "end"}`;
259
+ const { modifiers: popperPropsModifiers = [], ...otherPopperProps } = popperProps;
59
260
  const [referenceElement, setReferenceElement] = React.useState(null);
60
261
  const [popperElement, setPopperElement] = React.useState(
61
262
  null
62
263
  );
63
264
  const [popperMaxSize, setPopperMaxSize] = React.useState({});
64
- const handleDropdownHeaderRefProp = useForkRef.useForkRef(
65
- dropdownHeaderRefProp,
66
- dropdownHeaderProps?.ref
67
- );
68
- const handleDropdownHeaderRef = useForkRef.useForkRef(
69
- setReferenceElement,
70
- handleDropdownHeaderRefProp
71
- );
72
- const ariaRole = role || (component == null ? "combobox" : void 0);
73
- const ariaExpanded = ariaExpandedProp ?? (ariaRole ? !!isOpen : void 0);
74
- const id = useUniqueId.useUniqueId(idProp);
75
- const containerId = setId.setId(id, "children-container");
76
- const headerControlArias = {
77
- "aria-required": required ?? void 0,
78
- "aria-readonly": readOnly ?? void 0,
79
- "aria-disabled": disabled ?? void 0,
80
- "aria-expanded": ariaExpanded,
81
- "aria-owns": isOpen ? containerId : void 0,
82
- "aria-controls": isOpen ? containerId : void 0
83
- };
84
- const headerAriaLabels = {
85
- "aria-label": ariaLabelProp,
86
- "aria-labelledby": ariaLabelledByProp
87
- };
88
- const placement = `bottom-${placementProp === "right" ? "start" : "end"}`;
89
- const extensionWidth = referenceElement ? referenceElement?.offsetWidth : "inherit";
90
- const { modifiers: popperPropsModifiers = [], ...otherPopperProps } = popperProps;
91
265
  const onFirstUpdate = React.useCallback(() => {
92
266
  onContainerCreation?.(popperElement);
93
267
  }, [onContainerCreation, popperElement]);
94
- const widthCalculator = React.useCallback(
95
- ({ state }) => {
96
- state.styles.popper.width = `${state.rects.reference.width}px`;
97
- },
98
- []
99
- );
100
- const widthCalculatorEffect = React.useCallback(
101
- ({ state }) => {
102
- state.elements.popper.style.width = `${state.elements.reference.offsetWidth}px`;
103
- },
104
- []
105
- );
106
268
  const applyMaxSizeCalculator = React.useCallback(
107
269
  ({ state }) => {
108
270
  const { width, height } = state.modifiersData.maxSize;
@@ -117,6 +279,18 @@ const HvBaseDropdown = React.forwardRef(
117
279
  },
118
280
  [popperMaxSize]
119
281
  );
282
+ const widthCalculator = React.useCallback(
283
+ ({ state }) => {
284
+ state.styles.popper.width = `${state.rects.reference.width}px`;
285
+ },
286
+ []
287
+ );
288
+ const widthCalculatorEffect = React.useCallback(
289
+ ({ state }) => {
290
+ state.elements.popper.style.width = `${state.elements.reference.offsetWidth}px`;
291
+ },
292
+ []
293
+ );
120
294
  const maxSizeCalculator = React.useCallback(
121
295
  ({ state, name, options }) => {
122
296
  const overflow = core.detectOverflow(state, options);
@@ -169,181 +343,25 @@ const HvBaseDropdown = React.forwardRef(
169
343
  widthCalculatorEffect
170
344
  ]
171
345
  );
172
- const { styles: popperStyles, attributes } = reactPopper.usePopper(
173
- referenceElement,
174
- popperElement,
175
- {
176
- placement,
177
- modifiers,
178
- onFirstUpdate,
179
- ...otherPopperProps
180
- }
181
- );
182
- const popperPlacement = attributes.popper?.["data-popper-placement"] ?? "bottom";
183
- const handleToggle = React.useCallback(
184
- (event) => {
185
- if (event && !keyboardUtils.isKey(event, "Tab")) {
186
- event.preventDefault();
187
- }
188
- const notControlKey = !!event?.code && !keyboardUtils.isOneOfKeys(event, ["Tab", "Enter", "Esc", "ArrowDown", "Space"]);
189
- const ignoredCombinations = keyboardUtils.isKey(event, "Esc") && !isOpen || keyboardUtils.isKey(event, "ArrowDown") && isOpen || keyboardUtils.isKey(event, "Tab") && !isOpen;
190
- if (disabled || notControlKey || ignoredCombinations)
191
- return;
192
- const newOpen = !isOpen;
193
- setIsOpen(() => {
194
- if (!newOpen) {
195
- referenceElement?.focus({ preventScroll: true });
196
- }
197
- return newOpen;
198
- });
199
- onToggle?.(event, newOpen);
200
- },
201
- [isOpen, disabled, setIsOpen, onToggle, referenceElement]
346
+ const popper = reactPopper.usePopper(referenceElement, popperElement, {
347
+ placement,
348
+ modifiers,
349
+ onFirstUpdate,
350
+ ...otherPopperProps
351
+ });
352
+ const value = React.useMemo(
353
+ () => ({
354
+ ...popperMaxSize,
355
+ popperPlacement: popper?.attributes.popper?.["data-popper-placement"] ?? "bottom",
356
+ popper,
357
+ popperElement,
358
+ setPopperElement,
359
+ referenceElement,
360
+ setReferenceElement
361
+ }),
362
+ [popper, popperElement, popperMaxSize, referenceElement]
202
363
  );
203
- const ExpanderComponent = isOpen ? uikitReactIcons.DropUpXS : uikitReactIcons.DropDownXS;
204
- const defaultHeaderElement = /* @__PURE__ */ jsxRuntime.jsxs(
205
- "div",
206
- {
207
- id: setId.setId(id, "header"),
208
- className: cx(classes.header, {
209
- [classes.headerDisabled]: disabled,
210
- [classes.headerReadOnly]: readOnly,
211
- [classes.headerOpen]: isOpen,
212
- [classes.headerOpenUp]: isOpen && popperPlacement.includes("top"),
213
- [classes.headerOpenDown]: isOpen && popperPlacement.includes("bottom")
214
- }),
215
- role: ariaRole === "combobox" ? "textbox" : void 0,
216
- ...headerAriaLabels,
217
- style: disabled || readOnly ? { pointerEvents: "none" } : void 0,
218
- tabIndex: disabled ? -1 : 0,
219
- ref: handleDropdownHeaderRef,
220
- ...dropdownHeaderProps,
221
- children: [
222
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.selection, children: placeholder && typeof placeholder === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
223
- Typography.HvTypography,
224
- {
225
- className: cx(classes.placeholder, {
226
- [classes.selectionDisabled]: disabled
227
- }),
228
- variant: "body",
229
- children: placeholder
230
- }
231
- ) : placeholder }),
232
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.arrowContainer, children: adornment || /* @__PURE__ */ jsxRuntime.jsx(
233
- ExpanderComponent,
234
- {
235
- iconSize: "XS",
236
- color: disabled ? "secondary_60" : void 0,
237
- className: classes.arrow
238
- }
239
- ) })
240
- ]
241
- }
242
- );
243
- const headerElement = component && React.isValidElement(component) ? React.cloneElement(component, {
244
- ref: handleDropdownHeaderRef,
245
- ...headerControlArias
246
- }) : defaultHeaderElement;
247
- const containerComponent = (() => {
248
- const handleContainerKeyDown = (event) => {
249
- if (keyboardUtils.isKey(event, "Esc")) {
250
- handleToggle(event);
251
- }
252
- if (keyboardUtils.isKey(event, "Tab") && !event.shiftKey) {
253
- const focusList = focusableElementFinder.getFirstAndLastFocus(popperElement);
254
- if (document.activeElement === focusList?.last) {
255
- event.preventDefault();
256
- focusList?.first?.focus();
257
- }
258
- }
259
- };
260
- const handleOutside = (event) => {
261
- const isButtonClick = referenceElement?.contains(event.target);
262
- if (!isButtonClick) {
263
- onClickOutside?.(event);
264
- setIsOpen(false);
265
- onToggle?.(event, false);
266
- }
267
- };
268
- const container = /* @__PURE__ */ jsxRuntime.jsx(
269
- "div",
270
- {
271
- ref: setPopperElement,
272
- className: classes.container,
273
- style: popperStyles.popper,
274
- ...attributes.popper,
275
- children: /* @__PURE__ */ jsxRuntime.jsx(ClickAwayListener__default.default, { onClickAway: handleOutside, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { onKeyDown: handleContainerKeyDown, children: [
276
- popperPlacement.includes("bottom") && /* @__PURE__ */ jsxRuntime.jsx(
277
- "div",
278
- {
279
- style: { width: extensionWidth },
280
- className: cx(classes.inputExtensionOpen, {
281
- [classes.inputExtensionLeftPosition]: popperPlacement.includes("end")
282
- })
283
- }
284
- ),
285
- /* @__PURE__ */ jsxRuntime.jsx(BaseDropdownContext.default.Provider, { value: popperMaxSize, children: /* @__PURE__ */ jsxRuntime.jsx(
286
- "div",
287
- {
288
- id: containerId,
289
- className: cx(classes.panel, {
290
- [classes.panelOpenedUp]: popperPlacement.includes("top"),
291
- [classes.panelOpenedDown]: popperPlacement.includes("bottom")
292
- }),
293
- children
294
- }
295
- ) }),
296
- popperPlacement.includes("top") && /* @__PURE__ */ jsxRuntime.jsx(
297
- "div",
298
- {
299
- style: { width: extensionWidth },
300
- className: cx(
301
- classes.inputExtensionOpen,
302
- classes.inputExtensionOpenShadow,
303
- {
304
- [classes.inputExtensionFloatRight]: popperPlacement.includes("end"),
305
- [classes.inputExtensionFloatLeft]: popperPlacement.includes("start")
306
- }
307
- )
308
- }
309
- )
310
- ] }) })
311
- }
312
- );
313
- if (disablePortal)
314
- return container;
315
- return reactDom.createPortal(
316
- container,
317
- document.getElementById(rootId || "") || document.body
318
- );
319
- })();
320
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.root, children: [
321
- /* @__PURE__ */ jsxRuntime.jsx(
322
- "div",
323
- {
324
- ref,
325
- id,
326
- className: cx(
327
- classes.anchor,
328
- { [classes.rootDisabled]: disabled },
329
- className
330
- ),
331
- ...!readOnly && {
332
- onKeyDown: handleToggle,
333
- onClick: handleToggle
334
- },
335
- ...ariaRole && {
336
- role: ariaRole,
337
- ...headerAriaLabels,
338
- ...headerControlArias
339
- },
340
- tabIndex: -1,
341
- ...others,
342
- children: headerElement
343
- }
344
- ),
345
- isOpen && containerComponent
346
- ] });
364
+ return /* @__PURE__ */ jsxRuntime.jsx(BaseDropdownContext.default.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(BaseDropdown, { ref, ...others }) });
347
365
  }
348
366
  );
349
367
  exports.baseDropdownClasses = BaseDropdown_styles.staticClasses;
@@ -1,9 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const React = require("react");
4
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
5
- const React__default = /* @__PURE__ */ _interopDefault(React);
6
- const BaseDropdownContext = React__default.default.createContext({});
4
+ const BaseDropdownContext = React.createContext({
5
+ referenceElement: null,
6
+ popperElement: null
7
+ });
7
8
  BaseDropdownContext.displayName = "BaseDropdownContext";
9
+ const useBaseDropdownContext = () => React.useContext(BaseDropdownContext);
8
10
  const BaseDropdownContext$1 = BaseDropdownContext;
9
11
  exports.default = BaseDropdownContext$1;
12
+ exports.useBaseDropdownContext = useBaseDropdownContext;
@@ -35,6 +35,7 @@ const HvButton = generic.fixedForwardRef(function HvButton2(props, ref) {
35
35
  onClick: onClickProp,
36
36
  onMouseDown: onMouseDownProp,
37
37
  selected,
38
+ style,
38
39
  ...others
39
40
  } = useDefaultProps.useDefaultProps("HvButton", props);
40
41
  const { classes, css, cx } = Button_styles.useClasses(classesProp);
@@ -59,24 +60,31 @@ const HvButton = generic.fixedForwardRef(function HvButton2(props, ref) {
59
60
  return [];
60
61
  return result.map((x) => x.toLowerCase());
61
62
  }, [variant]);
63
+ const sizeStyles = React.useMemo(
64
+ () => size ? icon ? Button_styles.getIconSizeStyles(size) : Button_styles.getSizeStyles(size) : void 0,
65
+ [size, icon]
66
+ );
62
67
  return /* @__PURE__ */ jsxRuntime.jsxs(
63
68
  Component,
64
69
  {
65
70
  ref,
71
+ style: {
72
+ ...style,
73
+ "--HvButton-height": sizeStyles ? sizeStyles.height : "32px"
74
+ },
66
75
  className: cx(
67
76
  classes.root,
68
77
  type && classes[type],
69
78
  color && css(Button_styles.getColoringStyle(color, type)),
70
79
  classes[variant],
71
80
  // Placed after type and color CSS for DS3 override
72
- size && !icon && css(Button_styles.getSizeStyles(size)),
73
81
  radius && css(Button_styles.getRadiusStyles(radius)),
74
82
  overrideIconColors && css(Button_styles.getOverrideColors()),
75
83
  {
76
84
  [classes.icon]: icon,
77
85
  [classes.disabled]: disabled
78
86
  },
79
- size && icon && css(Button_styles.getIconSizeStyles(size)),
87
+ sizeStyles && css(sizeStyles),
80
88
  className
81
89
  ),
82
90
  onClick: handleClick,
@@ -22,7 +22,7 @@ const { staticClasses, useClasses } = classes.createClasses("HvButton", {
22
22
  // Default button - no size specified
23
23
  fontFamily: uikitStyles.theme.fontFamily.body,
24
24
  ...uikitStyles.theme.typography.label,
25
- height: "32px",
25
+ height: "var(--HvButton-height)",
26
26
  border: "1px solid currentcolor",
27
27
  borderRadius: uikitStyles.theme.radii.base,
28
28
  padding: uikitStyles.theme.spacing(0, "sm")
@@ -4,7 +4,6 @@ const uikitStyles = require("@hitachivantara/uikit-styles");
4
4
  const classes = require("../../utils/classes.cjs");
5
5
  const { staticClasses, useClasses } = classes.createClasses("HvSingleCalendar", {
6
6
  calendarContainer: {
7
- backgroundColor: uikitStyles.theme.colors.atmo1,
8
7
  width: "318px",
9
8
  minHeight: "440px",
10
9
  position: "relative"
@@ -27,7 +27,8 @@ const { staticClasses, useClasses } = classes.createClasses("HvColorPicker", {
27
27
  minWidth: "266px",
28
28
  display: "flex",
29
29
  justifyContent: "center",
30
- padding: "16px"
30
+ padding: "16px",
31
+ backgroundColor: "transparent"
31
32
  },
32
33
  colorPicker: {
33
34
  width: "232px"
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("@emotion/react/jsx-runtime");
4
4
  const React = require("react");
5
5
  const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
6
+ const BaseDropdownContext = require("../BaseDropdown/BaseDropdownContext/BaseDropdownContext.cjs");
6
7
  const useControlled = require("../hooks/useControlled.cjs");
7
8
  const useDefaultProps = require("../hooks/useDefaultProps.cjs");
8
9
  const useUniqueId = require("../hooks/useUniqueId.cjs");
@@ -14,6 +15,26 @@ const BaseDropdown = require("../BaseDropdown/BaseDropdown.cjs");
14
15
  const List = require("../List/List.cjs");
15
16
  const DropdownButton = require("../DropdownButton/DropdownButton.cjs");
16
17
  const Panel = require("../Panel/Panel.cjs");
18
+ const HeaderComponent = React.forwardRef(
19
+ (props, ref) => {
20
+ const { open, children, ...others } = props;
21
+ const { popperPlacement } = BaseDropdownContext.useBaseDropdownContext();
22
+ return /* @__PURE__ */ jsxRuntime.jsx(
23
+ DropdownButton.HvDropdownButton,
24
+ {
25
+ icon: true,
26
+ ref,
27
+ open,
28
+ "aria-expanded": open,
29
+ "aria-label": "Dropdown menu",
30
+ "aria-haspopup": "menu",
31
+ placement: popperPlacement,
32
+ ...others,
33
+ children
34
+ }
35
+ );
36
+ }
37
+ );
17
38
  const HvDropDownMenu = (props) => {
18
39
  const {
19
40
  id: idProp,
@@ -68,7 +89,7 @@ const HvDropDownMenu = (props) => {
68
89
  },
69
90
  expanded: open && !disabled,
70
91
  component: /* @__PURE__ */ jsxRuntime.jsx(
71
- DropdownButton.HvDropdownButton,
92
+ HeaderComponent,
72
93
  {
73
94
  id: setId.setId(id, "icon-button"),
74
95
  disabled,
@@ -78,10 +99,6 @@ const HvDropDownMenu = (props) => {
78
99
  size,
79
100
  variant: variant ?? category,
80
101
  open,
81
- "aria-expanded": open,
82
- "aria-label": "Dropdown menu",
83
- "aria-haspopup": "menu",
84
- icon: true,
85
102
  children: icon || /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.MoreOptionsVertical, { role: "presentation" })
86
103
  }
87
104
  ),
@@ -13,7 +13,9 @@ const { staticClasses, useClasses } = classes.createClasses("HvDropDownMenu", {
13
13
  iconSelected: {
14
14
  boxShadow: uikitStyles.theme.colors.shadow
15
15
  },
16
- menuListRoot: {},
16
+ menuListRoot: {
17
+ backgroundColor: "transparent"
18
+ },
17
19
  menuList: {}
18
20
  });
19
21
  exports.staticClasses = staticClasses;