@carbon/react 1.101.0 → 1.102.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 (174) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +987 -952
  2. package/es/components/Accordion/AccordionItem.js +8 -6
  3. package/es/components/CheckboxGroup/CheckboxGroup.d.ts +1 -1
  4. package/es/components/CheckboxGroup/CheckboxGroup.js +2 -2
  5. package/es/components/ComboBox/ComboBox.js +3 -4
  6. package/es/components/ComposedModal/ComposedModal.js +0 -1
  7. package/es/components/ContainedList/ContainedList.d.ts +1 -1
  8. package/es/components/ContainedList/ContainedList.js +9 -34
  9. package/es/components/ContentSwitcher/ContentSwitcher.d.ts +3 -3
  10. package/es/components/ContentSwitcher/ContentSwitcher.js +4 -4
  11. package/es/components/DataTable/DataTable.d.ts +6 -2
  12. package/es/components/DataTable/DataTable.js +3 -1
  13. package/es/components/DataTable/Table.js +1 -1
  14. package/es/components/DataTable/TableExpandRow.js +2 -2
  15. package/es/components/DataTable/TableToolbarSearch.d.ts +11 -2
  16. package/es/components/DataTable/TableToolbarSearch.js +10 -3
  17. package/es/components/DataTable/stories/examples/TableToolbarFilter.d.ts +3 -0
  18. package/es/components/DataTable/tools/normalize.js +2 -1
  19. package/es/components/DataTableSkeleton/DataTableSkeleton.d.ts +2 -12
  20. package/es/components/DataTableSkeleton/DataTableSkeleton.js +1 -8
  21. package/es/components/DatePicker/DatePicker.js +7 -3
  22. package/es/components/DatePickerInput/DatePickerInput.d.ts +2 -5
  23. package/es/components/DatePickerInput/DatePickerInput.js +2 -13
  24. package/es/components/Dropdown/Dropdown.js +2 -3
  25. package/es/components/ExpandableSearch/ExpandableSearch.js +2 -1
  26. package/es/components/ExpandableSearch/index.js +12 -0
  27. package/es/components/FluidSelect/FluidSelect.d.ts +3 -3
  28. package/es/components/FluidTextArea/FluidTextArea.d.ts +2 -4
  29. package/es/components/FluidTextArea/FluidTextArea.js +1 -2
  30. package/es/components/FluidTimePickerSelect/FluidTimePickerSelect.d.ts +3 -3
  31. package/es/components/Grid/Column.d.ts +1 -1
  32. package/es/components/Grid/Column.js +2 -2
  33. package/es/components/Loading/Loading.d.ts +1 -1
  34. package/es/components/Loading/Loading.js +3 -1
  35. package/es/components/Menu/Menu.d.ts +1 -1
  36. package/es/components/Menu/Menu.js +6 -2
  37. package/es/components/Menu/MenuItem.js +2 -2
  38. package/es/components/Modal/Modal.js +0 -1
  39. package/es/components/MultiSelect/FilterableMultiSelect.js +4 -3
  40. package/es/components/MultiSelect/MultiSelect.js +5 -8
  41. package/es/components/MultiSelect/MultiSelectPropTypes.d.ts +6 -8
  42. package/es/components/MultiSelect/tools/sorting.d.ts +16 -9
  43. package/es/components/MultiSelect/tools/sorting.js +10 -14
  44. package/es/components/OverflowMenu/OverflowMenu.js +1 -0
  45. package/es/components/OverflowMenuItem/OverflowMenuItem.d.ts +5 -1
  46. package/es/components/OverflowMenuItem/OverflowMenuItem.js +12 -2
  47. package/es/components/Popover/index.js +3 -3
  48. package/es/components/ProgressIndicator/ProgressIndicator.js +3 -3
  49. package/es/components/RadioButtonGroup/RadioButtonGroup.d.ts +1 -1
  50. package/es/components/RadioButtonGroup/RadioButtonGroup.js +8 -11
  51. package/es/components/Search/Search.js +3 -2
  52. package/es/components/Search/utils.d.ts +7 -0
  53. package/es/components/Search/utils.js +10 -0
  54. package/es/components/Select/Select.d.ts +2 -2
  55. package/es/components/Select/Select.js +1 -1
  56. package/es/components/SelectItem/SelectItem.d.ts +3 -3
  57. package/es/components/Slider/Slider.d.ts +1 -1
  58. package/es/components/Slider/Slider.js +2 -8
  59. package/es/components/StructuredList/StructuredList.js +2 -2
  60. package/es/components/Tabs/Tabs.js +9 -4
  61. package/es/components/Tag/DismissibleTag.d.ts +1 -1
  62. package/es/components/Tag/DismissibleTag.js +2 -2
  63. package/es/components/Tag/OperationalTag.d.ts +1 -1
  64. package/es/components/Tag/OperationalTag.js +2 -2
  65. package/es/components/Tag/SelectableTag.d.ts +1 -1
  66. package/es/components/Tag/SelectableTag.js +2 -2
  67. package/es/components/Tag/Tag.d.ts +1 -1
  68. package/es/components/Tag/Tag.js +2 -2
  69. package/es/components/TextArea/TextArea.d.ts +1 -2
  70. package/es/components/TextArea/TextArea.js +4 -5
  71. package/es/components/TextInput/ControlledPasswordInput.js +1 -1
  72. package/es/components/TileGroup/TileGroup.d.ts +1 -1
  73. package/es/components/TileGroup/TileGroup.js +2 -1
  74. package/es/components/TimePickerSelect/TimePickerSelect.d.ts +4 -4
  75. package/es/components/Toggletip/index.js +1 -2
  76. package/es/components/TreeView/TreeNode.js +2 -2
  77. package/es/components/TreeView/TreeView.d.ts +1 -1
  78. package/es/components/UIShell/HeaderPanel.d.ts +1 -1
  79. package/es/components/UIShell/HeaderPanel.js +7 -4
  80. package/es/components/UIShell/SideNav.js +3 -3
  81. package/es/components/UIShell/Switcher.d.ts +1 -1
  82. package/es/components/UIShell/Switcher.js +6 -5
  83. package/es/feature-flags.js +2 -2
  84. package/es/internal/FloatingMenu.js +3 -3
  85. package/es/internal/useOverflowItems.d.ts +1 -5
  86. package/es/internal/useOverflowItems.js +6 -27
  87. package/lib/components/Accordion/AccordionItem.js +7 -5
  88. package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +1 -1
  89. package/lib/components/CheckboxGroup/CheckboxGroup.js +1 -1
  90. package/lib/components/ComboBox/ComboBox.js +3 -4
  91. package/lib/components/ComposedModal/ComposedModal.js +0 -1
  92. package/lib/components/ContainedList/ContainedList.d.ts +1 -1
  93. package/lib/components/ContainedList/ContainedList.js +9 -34
  94. package/lib/components/ContentSwitcher/ContentSwitcher.d.ts +3 -3
  95. package/lib/components/ContentSwitcher/ContentSwitcher.js +3 -3
  96. package/lib/components/DataTable/DataTable.d.ts +6 -2
  97. package/lib/components/DataTable/DataTable.js +3 -1
  98. package/lib/components/DataTable/Table.js +1 -1
  99. package/lib/components/DataTable/TableExpandRow.js +1 -1
  100. package/lib/components/DataTable/TableToolbarSearch.d.ts +11 -2
  101. package/lib/components/DataTable/TableToolbarSearch.js +10 -3
  102. package/lib/components/DataTable/stories/examples/TableToolbarFilter.d.ts +3 -0
  103. package/lib/components/DataTable/tools/normalize.js +2 -1
  104. package/lib/components/DataTableSkeleton/DataTableSkeleton.d.ts +2 -12
  105. package/lib/components/DataTableSkeleton/DataTableSkeleton.js +1 -8
  106. package/lib/components/DatePicker/DatePicker.js +7 -3
  107. package/lib/components/DatePickerInput/DatePickerInput.d.ts +2 -5
  108. package/lib/components/DatePickerInput/DatePickerInput.js +2 -13
  109. package/lib/components/Dropdown/Dropdown.js +2 -3
  110. package/lib/components/ExpandableSearch/ExpandableSearch.js +2 -1
  111. package/lib/components/ExpandableSearch/index.js +17 -0
  112. package/lib/components/FeatureFlags/index.js +5 -5
  113. package/lib/components/FluidSelect/FluidSelect.d.ts +3 -3
  114. package/lib/components/FluidTextArea/FluidTextArea.d.ts +2 -4
  115. package/lib/components/FluidTextArea/FluidTextArea.js +1 -2
  116. package/lib/components/FluidTimePickerSelect/FluidTimePickerSelect.d.ts +3 -3
  117. package/lib/components/Grid/Column.d.ts +1 -1
  118. package/lib/components/Grid/Column.js +2 -21
  119. package/lib/components/Loading/Loading.d.ts +1 -1
  120. package/lib/components/Loading/Loading.js +3 -1
  121. package/lib/components/Menu/Menu.d.ts +1 -1
  122. package/lib/components/Menu/Menu.js +6 -2
  123. package/lib/components/Menu/MenuItem.js +2 -2
  124. package/lib/components/Modal/Modal.js +0 -1
  125. package/lib/components/MultiSelect/FilterableMultiSelect.js +4 -3
  126. package/lib/components/MultiSelect/MultiSelect.js +5 -8
  127. package/lib/components/MultiSelect/MultiSelectPropTypes.d.ts +6 -8
  128. package/lib/components/MultiSelect/tools/sorting.d.ts +16 -9
  129. package/lib/components/MultiSelect/tools/sorting.js +10 -14
  130. package/lib/components/OverflowMenu/OverflowMenu.js +1 -0
  131. package/lib/components/OverflowMenuItem/OverflowMenuItem.d.ts +5 -1
  132. package/lib/components/OverflowMenuItem/OverflowMenuItem.js +12 -2
  133. package/lib/components/Popover/index.js +3 -3
  134. package/lib/components/ProgressIndicator/ProgressIndicator.js +3 -3
  135. package/lib/components/RadioButtonGroup/RadioButtonGroup.d.ts +1 -1
  136. package/lib/components/RadioButtonGroup/RadioButtonGroup.js +7 -10
  137. package/lib/components/Search/Search.js +3 -2
  138. package/lib/components/Search/utils.d.ts +7 -0
  139. package/lib/components/Search/utils.js +12 -0
  140. package/lib/components/Select/Select.d.ts +2 -2
  141. package/lib/components/Select/Select.js +1 -1
  142. package/lib/components/SelectItem/SelectItem.d.ts +3 -3
  143. package/lib/components/Slider/Slider.d.ts +1 -1
  144. package/lib/components/Slider/Slider.js +2 -8
  145. package/lib/components/StructuredList/StructuredList.js +2 -2
  146. package/lib/components/Tabs/Tabs.js +9 -4
  147. package/lib/components/Tag/DismissibleTag.d.ts +1 -1
  148. package/lib/components/Tag/DismissibleTag.js +2 -2
  149. package/lib/components/Tag/OperationalTag.d.ts +1 -1
  150. package/lib/components/Tag/OperationalTag.js +2 -2
  151. package/lib/components/Tag/SelectableTag.d.ts +1 -1
  152. package/lib/components/Tag/SelectableTag.js +2 -2
  153. package/lib/components/Tag/Tag.d.ts +1 -1
  154. package/lib/components/Tag/Tag.js +2 -2
  155. package/lib/components/TextArea/TextArea.d.ts +1 -2
  156. package/lib/components/TextArea/TextArea.js +4 -5
  157. package/lib/components/TextInput/ControlledPasswordInput.js +1 -1
  158. package/lib/components/TileGroup/TileGroup.d.ts +1 -1
  159. package/lib/components/TileGroup/TileGroup.js +2 -1
  160. package/lib/components/TimePickerSelect/TimePickerSelect.d.ts +4 -4
  161. package/lib/components/Toggletip/index.js +1 -2
  162. package/lib/components/TreeView/TreeNode.js +2 -2
  163. package/lib/components/TreeView/TreeView.d.ts +1 -1
  164. package/lib/components/UIShell/HeaderPanel.d.ts +1 -1
  165. package/lib/components/UIShell/HeaderPanel.js +6 -3
  166. package/lib/components/UIShell/SideNav.js +3 -3
  167. package/lib/components/UIShell/Switcher.d.ts +1 -1
  168. package/lib/components/UIShell/Switcher.js +5 -4
  169. package/lib/feature-flags.js +2 -21
  170. package/lib/internal/FloatingMenu.js +3 -22
  171. package/lib/internal/useOverflowItems.d.ts +1 -5
  172. package/lib/internal/useOverflowItems.js +6 -27
  173. package/package.json +8 -8
  174. package/telemetry.yml +0 -1
@@ -31,7 +31,7 @@ const ControlledPasswordInput = /*#__PURE__*/React.forwardRef(({
31
31
  hideLabel,
32
32
  invalid = false,
33
33
  invalidText = '',
34
- helperText = '',
34
+ helperText,
35
35
  light,
36
36
  type = 'password',
37
37
  togglePasswordVisibility,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright IBM Corp. 2016, 2025
2
+ * Copyright IBM Corp. 2016, 2026
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -11,6 +11,7 @@ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelper
11
11
  var PropTypes = require('prop-types');
12
12
  var React = require('react');
13
13
  var RadioTile = require('../RadioTile/RadioTile.js');
14
+ var utils = require('../../internal/utils.js');
14
15
  var usePrefix = require('../../internal/usePrefix.js');
15
16
  var noopFn = require('../../internal/noopFn.js');
16
17
 
@@ -44,7 +45,7 @@ const TileGroup = ({
44
45
  if (! /*#__PURE__*/React.isValidElement(child)) return child;
45
46
 
46
47
  // If a `RadioTile` is found, return it with necessary props,
47
- if (/*#__PURE__*/React.isValidElement(child) && child.type === RadioTile.default) {
48
+ if (utils.isComponentElement(child, RadioTile.default)) {
48
49
  const {
49
50
  value,
50
51
  ...otherProps
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Copyright IBM Corp. 2016, 2025
2
+ * Copyright IBM Corp. 2016, 2026
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import React from 'react';
7
+ import React, { type SelectHTMLAttributes } from 'react';
8
8
  export type TimePickerSelectProps = {
9
9
  /**
10
10
  * Provide the contents of your TimePickerSelect
@@ -17,7 +17,7 @@ export type TimePickerSelectProps = {
17
17
  /**
18
18
  * Optionally provide the default value of the `<select>`
19
19
  */
20
- defaultValue?: any;
20
+ defaultValue?: SelectHTMLAttributes<HTMLSelectElement>['defaultValue'];
21
21
  /**
22
22
  * Specify whether the control is disabled
23
23
  */
@@ -39,7 +39,7 @@ declare const TimePickerSelect: React.ForwardRefExoticComponent<{
39
39
  /**
40
40
  * Optionally provide the default value of the `<select>`
41
41
  */
42
- defaultValue?: any;
42
+ defaultValue?: SelectHTMLAttributes<HTMLSelectElement>["defaultValue"];
43
43
  /**
44
44
  * Specify whether the control is disabled
45
45
  */
@@ -138,8 +138,7 @@ function Toggletip({
138
138
  const eventType = 'PointerEvent' in window ? 'pointerdown' : 'mousedown';
139
139
  const handleOutsideClick = event => {
140
140
  const node = event.target;
141
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
142
- if (open && node && !ref.current.contains(node)) {
141
+ if (open && node && !ref.current?.contains(node)) {
143
142
  setOpen(false);
144
143
  }
145
144
  };
@@ -245,7 +245,7 @@ const TreeNode = /*#__PURE__*/React.forwardRef(({
245
245
  return node;
246
246
  }
247
247
  if (node.classList.contains(`${prefix}--tree-node-link-parent`)) {
248
- return node.firstChild;
248
+ return node.firstElementChild;
249
249
  }
250
250
  if (node.classList.contains(`${prefix}--tree`)) {
251
251
  return null;
@@ -267,7 +267,7 @@ const TreeNode = /*#__PURE__*/React.forwardRef(({
267
267
  * When focus is on a leaf node or a closed parent node, move focus to
268
268
  * its parent node (unless its depth is level 1)
269
269
  */
270
- const parentNode = findParentTreeNode(href ? currentNode.current?.parentElement?.parentElement : currentNode.current?.parentElement);
270
+ const parentNode = findParentTreeNode((href ? currentNode.current?.parentElement?.parentElement : currentNode.current?.parentElement) ?? null);
271
271
  if (parentNode instanceof HTMLElement) {
272
272
  parentNode.focus();
273
273
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright IBM Corp. 2016, 2025
2
+ * Copyright IBM Corp. 2016, 2026
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright IBM Corp. 2016, 2025
2
+ * Copyright IBM Corp. 2016, 2026
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -13,6 +13,7 @@ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelper
13
13
  var cx = require('classnames');
14
14
  var PropTypes = require('prop-types');
15
15
  var React = require('react');
16
+ var utils = require('../../internal/utils.js');
16
17
  var usePrefix = require('../../internal/usePrefix.js');
17
18
  var keys = require('../../internal/keyboard/keys.js');
18
19
  var match = require('../../internal/keyboard/match.js');
@@ -63,10 +64,12 @@ const HeaderPanel = /*#__PURE__*/React.forwardRef(({
63
64
  };
64
65
  }
65
66
  useEvent.useWindowEvent('click', event => {
66
- const target = event.target;
67
- if (!(target instanceof HTMLElement)) return;
67
+ const {
68
+ target
69
+ } = event;
70
+ if (!(target instanceof Element)) return;
68
71
  setLastClickedElement(target);
69
- const isChildASwitcher = /*#__PURE__*/React.isValidElement(children) && typeof children.type !== 'string' && children.type === Switcher.default;
72
+ const isChildASwitcher = utils.isComponentElement(children, Switcher.default);
70
73
  if (isChildASwitcher && !target.closest(`.${prefix}--header-panel--expanded`) && !target.closest(`.${prefix}--header__action`) && !headerPanelReference?.current?.classList.contains(`${prefix}--switcher`) && expanded) {
71
74
  setExpandedState(false);
72
75
  onHeaderPanelFocus();
@@ -24,7 +24,7 @@ var useDelayedState = require('../../internal/useDelayedState.js');
24
24
  var layout = require('@carbon/layout');
25
25
  var useMatchMedia = require('../../internal/useMatchMedia.js');
26
26
 
27
- // TO-DO: comment back in when footer is added for rails
27
+ // TODO: comment back in when footer is added for rails
28
28
  // import SideNavFooter from './SideNavFooter';
29
29
 
30
30
  const SideNavContext = /*#__PURE__*/React.createContext({});
@@ -39,7 +39,7 @@ const SideNav = frFn((props, ref) => {
39
39
  children,
40
40
  onToggle,
41
41
  className: customClassName,
42
- // TO-DO: comment back in when footer is added for rails
42
+ // TODO: comment back in when footer is added for rails
43
43
  // translateById: t = (id) => translations[id],
44
44
  href,
45
45
  isFixedNav = false,
@@ -77,7 +77,7 @@ const SideNav = frFn((props, ref) => {
77
77
  'aria-labelledby': ariaLabelledBy
78
78
  };
79
79
 
80
- // TO-DO: comment back in when footer is added for rails
80
+ // TODO: comment back in when footer is added for rails
81
81
  // const assistiveText = expanded
82
82
  // ? t('carbon.sidenav.state.open')
83
83
  // : t('carbon.sidenav.state.closed');
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright IBM Corp. 2016, 2025
2
+ * Copyright IBM Corp. 2016, 2026
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -14,6 +14,7 @@ var React = require('react');
14
14
  var cx = require('classnames');
15
15
  var usePrefix = require('../../internal/usePrefix.js');
16
16
  var useMergedRefs = require('../../internal/useMergedRefs.js');
17
+ var utils = require('../../internal/utils.js');
17
18
  var PropTypes = require('prop-types');
18
19
  var AriaPropTypes = require('../../prop-types/AriaPropTypes.js');
19
20
  var SwitcherItem = require('./SwitcherItem.js');
@@ -42,7 +43,7 @@ const Switcher = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
42
43
  direction
43
44
  }) => {
44
45
  const enabledIndices = React.Children.toArray(children).reduce((acc, child, i) => {
45
- if (/*#__PURE__*/React.isValidElement(child) && child.type === SwitcherItem.default && Object.keys(child.props).length) {
46
+ if (utils.isComponentElement(child, SwitcherItem.default) && Object.keys(child.props).length) {
46
47
  acc.push(i);
47
48
  }
48
49
  return acc;
@@ -65,12 +66,12 @@ const Switcher = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
65
66
  }
66
67
  })();
67
68
  const switcherItem = switcherRef.current?.children[nextValidIndex]?.children[0];
68
- if (switcherItem) {
69
+ if (switcherItem instanceof HTMLElement) {
69
70
  switcherItem.focus();
70
71
  }
71
72
  };
72
73
  const childrenWithProps = React.Children.toArray(children).map((child, index) => {
73
- if (/*#__PURE__*/React.isValidElement(child) && child.type === SwitcherItem.default) {
74
+ if (utils.isComponentElement(child, SwitcherItem.default)) {
74
75
  return /*#__PURE__*/React.cloneElement(child, {
75
76
  handleSwitcherItemFocus,
76
77
  index,
@@ -78,7 +79,7 @@ const Switcher = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
78
79
  expanded
79
80
  });
80
81
  }
81
- if (/*#__PURE__*/React.isValidElement(child) && child.type === SwitcherDivider.default) {
82
+ if (utils.isComponentElement(child, SwitcherDivider.default)) {
82
83
  return /*#__PURE__*/React.cloneElement(child, {
83
84
  key: index
84
85
  });
@@ -7,28 +7,9 @@
7
7
 
8
8
  'use strict';
9
9
 
10
- var FeatureFlags = require('@carbon/feature-flags');
10
+ var featureFlags = require('@carbon/feature-flags');
11
11
 
12
- function _interopNamespaceDefault(e) {
13
- var n = Object.create(null);
14
- if (e) {
15
- Object.keys(e).forEach(function (k) {
16
- if (k !== 'default') {
17
- var d = Object.getOwnPropertyDescriptor(e, k);
18
- Object.defineProperty(n, k, d.get ? d : {
19
- enumerable: true,
20
- get: function () { return e[k]; }
21
- });
22
- }
23
- });
24
- }
25
- n.default = e;
26
- return Object.freeze(n);
27
- }
28
-
29
- var FeatureFlags__namespace = /*#__PURE__*/_interopNamespaceDefault(FeatureFlags);
30
-
31
- FeatureFlags__namespace.merge({
12
+ featureFlags.merge({
32
13
  'enable-css-custom-properties': true,
33
14
  'enable-css-grid': true,
34
15
  'enable-v11-release': true,
@@ -8,7 +8,7 @@
8
8
  'use strict';
9
9
 
10
10
  var React = require('react');
11
- var FeatureFlags = require('@carbon/feature-flags');
11
+ var featureFlags = require('@carbon/feature-flags');
12
12
  var ReactDOM = require('react-dom');
13
13
  var keys = require('./keyboard/keys.js');
14
14
  var match = require('./keyboard/match.js');
@@ -18,25 +18,6 @@ var usePrefix = require('./usePrefix.js');
18
18
  var warning = require('./warning.js');
19
19
  var wrapFocus = require('./wrapFocus.js');
20
20
 
21
- function _interopNamespaceDefault(e) {
22
- var n = Object.create(null);
23
- if (e) {
24
- Object.keys(e).forEach(function (k) {
25
- if (k !== 'default') {
26
- var d = Object.getOwnPropertyDescriptor(e, k);
27
- Object.defineProperty(n, k, d.get ? d : {
28
- enumerable: true,
29
- get: function () { return e[k]; }
30
- });
31
- }
32
- });
33
- }
34
- n.default = e;
35
- return Object.freeze(n);
36
- }
37
-
38
- var FeatureFlags__namespace = /*#__PURE__*/_interopNamespaceDefault(FeatureFlags);
39
-
40
21
  const DIRECTION_LEFT = 'left';
41
22
  const DIRECTION_TOP = 'top';
42
23
  const DIRECTION_RIGHT = 'right';
@@ -295,8 +276,8 @@ const FloatingMenu = ({
295
276
  });
296
277
  }
297
278
  };
298
- const deprecatedFlag = FeatureFlags__namespace.enabled('enable-experimental-focus-wrap-without-sentinels');
299
- const focusTrapWithoutSentinelsFlag = FeatureFlags__namespace.enabled('enable-focus-wrap-without-sentinels');
279
+ const deprecatedFlag = featureFlags.enabled('enable-experimental-focus-wrap-without-sentinels');
280
+ const focusTrapWithoutSentinelsFlag = featureFlags.enabled('enable-focus-wrap-without-sentinels');
300
281
  const focusTrapWithoutSentinels = deprecatedFlag || focusTrapWithoutSentinelsFlag;
301
282
  if (typeof document !== 'undefined') {
302
283
  const portalTarget = target ? target() : document.body;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright IBM Corp. 2025, 2025
2
+ * Copyright IBM Corp. 2025, 2026
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -18,10 +18,6 @@ type Item = {
18
18
  * @returns Object with `visibleItems` (items to display), `hiddenItems` (items that don't fit), and `itemRefHandler` (function to attach refs to items for width measurement).
19
19
  */
20
20
  declare const useOverflowItems: <T extends Item>(items: T[] | ReactNode, containerRef: RefObject<HTMLDivElement>, offsetRef?: RefObject<HTMLDivElement>, maxItems?: number, onChange?: (hiddenItems: T[]) => void) => {
21
- visibleItems: T[];
22
- hiddenItems: T[];
23
- itemRefHandler: () => void;
24
- } | {
25
21
  visibleItems: T[];
26
22
  itemRefHandler: (id: string, node: HTMLDivElement | null) => () => void;
27
23
  hiddenItems: T[];
@@ -22,17 +22,10 @@ var usePreviousValue = require('./usePreviousValue.js');
22
22
  * @param onChange - Optional callback called when hidden items change. Receives array of currently hidden items.
23
23
  * @returns Object with `visibleItems` (items to display), `hiddenItems` (items that don't fit), and `itemRefHandler` (function to attach refs to items for width measurement).
24
24
  */
25
-
26
25
  const useOverflowItems = (items, containerRef, offsetRef, maxItems, onChange) => {
27
26
  const itemsRef = React.useRef(null);
28
27
  const [maxWidth, setMaxWidth] = React.useState(0);
29
- if (!items || !Array.isArray(items)) {
30
- return {
31
- visibleItems: [],
32
- hiddenItems: [],
33
- itemRefHandler: () => {}
34
- };
35
- }
28
+ const overflowItems = React.useMemo(() => Array.isArray(items) ? items : [], [items]);
36
29
  const handleResize = () => {
37
30
  if (containerRef.current) {
38
31
  const offset = offsetRef?.current?.offsetWidth || 0;
@@ -40,7 +33,6 @@ const useOverflowItems = (items, containerRef, offsetRef, maxItems, onChange) =>
40
33
  setMaxWidth(newMax);
41
34
  }
42
35
  };
43
- // eslint-disable-next-line react-hooks/rules-of-hooks -- https://github.com/carbon-design-system/carbon/issues/20452
44
36
  useResizeObserver.useResizeObserver({
45
37
  ref: containerRef,
46
38
  onResize: handleResize
@@ -63,16 +55,13 @@ const useOverflowItems = (items, containerRef, offsetRef, maxItems, onChange) =>
63
55
  };
64
56
  };
65
57
  const getVisibleItems = () => {
66
- if (!items || Array.isArray(items) === false) {
67
- return [];
68
- }
69
58
  if (!containerRef) {
70
- return items;
59
+ return overflowItems;
71
60
  }
72
61
  const map = getMap();
73
62
  let maxReached = false;
74
63
  let accumulatedWidth = 0;
75
- const visibleItems = items.slice(0, maxItems).reduce((prev, cur) => {
64
+ const visibleItems = overflowItems.slice(0, maxItems).reduce((prev, cur) => {
76
65
  if (maxReached) {
77
66
  return prev;
78
67
  }
@@ -90,30 +79,20 @@ const useOverflowItems = (items, containerRef, offsetRef, maxItems, onChange) =>
90
79
  };
91
80
 
92
81
  // Memoize visible items calculation to avoid recalculating on every render
93
- // eslint-disable-next-line react-hooks/rules-of-hooks -- https://github.com/carbon-design-system/carbon/issues/20452
94
82
  const visibleItems = React.useMemo(() => {
95
- if (!Array.isArray(items)) {
96
- return [];
97
- }
98
83
  return getVisibleItems();
99
84
  // eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/20452
100
- }, [items, maxWidth, maxItems]);
85
+ }, [overflowItems, maxWidth, maxItems]);
101
86
 
102
87
  // Memoize hidden items calculation
103
- // eslint-disable-next-line react-hooks/rules-of-hooks -- https://github.com/carbon-design-system/carbon/issues/20452
104
88
  const hiddenItems = React.useMemo(() => {
105
- if (!Array.isArray(items)) {
106
- return [];
107
- }
108
- return items.slice(visibleItems.length);
109
- }, [items, visibleItems]);
89
+ return overflowItems.slice(visibleItems.length);
90
+ }, [overflowItems, visibleItems]);
110
91
 
111
92
  // Use previous value to compare and only call onChange when needed
112
- // eslint-disable-next-line react-hooks/rules-of-hooks -- https://github.com/carbon-design-system/carbon/issues/20452
113
93
  const previousHiddenItems = usePreviousValue.usePreviousValue(hiddenItems);
114
94
 
115
95
  // Only call onChange if hidden items actually changed
116
- // eslint-disable-next-line react-hooks/rules-of-hooks -- https://github.com/carbon-design-system/carbon/issues/20452
117
96
  React.useEffect(() => {
118
97
  }, [hiddenItems, previousHiddenItems, onChange]);
119
98
  return {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/react",
3
3
  "description": "React components for the Carbon Design System",
4
- "version": "1.101.0",
4
+ "version": "1.102.0",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
@@ -52,10 +52,10 @@
52
52
  },
53
53
  "dependencies": {
54
54
  "@babel/runtime": "^7.27.3",
55
- "@carbon/feature-flags": "1.0.0",
56
- "@carbon/icons-react": "^11.75.0",
57
- "@carbon/layout": "^11.48.0",
58
- "@carbon/styles": "^1.100.0",
55
+ "@carbon/feature-flags": "^1.0.0",
56
+ "@carbon/icons-react": "^11.76.0",
57
+ "@carbon/layout": "^11.49.0",
58
+ "@carbon/styles": "^1.101.0",
59
59
  "@carbon/utilities": "^0.16.0",
60
60
  "@floating-ui/react": "^0.27.4",
61
61
  "@ibm/telemetry-js": "^1.5.0",
@@ -79,8 +79,8 @@
79
79
  "@babel/preset-react": "^7.27.1",
80
80
  "@babel/preset-typescript": "^7.27.1",
81
81
  "@carbon/test-utils": "^10.40.0",
82
- "@carbon/themes": "^11.68.0",
83
- "@figma/code-connect": "^1.3.5",
82
+ "@carbon/themes": "^11.69.0",
83
+ "@figma/code-connect": "^1.3.13",
84
84
  "@rollup/plugin-babel": "^6.0.0",
85
85
  "@rollup/plugin-commonjs": "^28.0.3",
86
86
  "@rollup/plugin-node-resolve": "^16.0.1",
@@ -131,5 +131,5 @@
131
131
  "**/*.scss",
132
132
  "**/*.css"
133
133
  ],
134
- "gitHead": "6dde90f9edfb378e1585f1954c92484a37f22f02"
134
+ "gitHead": "4f48ac426be7302a57460b1c81d74dd5d6071ad6"
135
135
  }
package/telemetry.yml CHANGED
@@ -305,7 +305,6 @@ collect:
305
305
  - onAnimationEnd
306
306
  # DataTableSkeleton
307
307
  - columnCount
308
- - compact
309
308
  - showHeader
310
309
  - showToolbar
311
310
  - zebra