@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.
- package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +987 -952
- package/es/components/Accordion/AccordionItem.js +8 -6
- package/es/components/CheckboxGroup/CheckboxGroup.d.ts +1 -1
- package/es/components/CheckboxGroup/CheckboxGroup.js +2 -2
- package/es/components/ComboBox/ComboBox.js +3 -4
- package/es/components/ComposedModal/ComposedModal.js +0 -1
- package/es/components/ContainedList/ContainedList.d.ts +1 -1
- package/es/components/ContainedList/ContainedList.js +9 -34
- package/es/components/ContentSwitcher/ContentSwitcher.d.ts +3 -3
- package/es/components/ContentSwitcher/ContentSwitcher.js +4 -4
- package/es/components/DataTable/DataTable.d.ts +6 -2
- package/es/components/DataTable/DataTable.js +3 -1
- package/es/components/DataTable/Table.js +1 -1
- package/es/components/DataTable/TableExpandRow.js +2 -2
- package/es/components/DataTable/TableToolbarSearch.d.ts +11 -2
- package/es/components/DataTable/TableToolbarSearch.js +10 -3
- package/es/components/DataTable/stories/examples/TableToolbarFilter.d.ts +3 -0
- package/es/components/DataTable/tools/normalize.js +2 -1
- package/es/components/DataTableSkeleton/DataTableSkeleton.d.ts +2 -12
- package/es/components/DataTableSkeleton/DataTableSkeleton.js +1 -8
- package/es/components/DatePicker/DatePicker.js +7 -3
- package/es/components/DatePickerInput/DatePickerInput.d.ts +2 -5
- package/es/components/DatePickerInput/DatePickerInput.js +2 -13
- package/es/components/Dropdown/Dropdown.js +2 -3
- package/es/components/ExpandableSearch/ExpandableSearch.js +2 -1
- package/es/components/ExpandableSearch/index.js +12 -0
- package/es/components/FluidSelect/FluidSelect.d.ts +3 -3
- package/es/components/FluidTextArea/FluidTextArea.d.ts +2 -4
- package/es/components/FluidTextArea/FluidTextArea.js +1 -2
- package/es/components/FluidTimePickerSelect/FluidTimePickerSelect.d.ts +3 -3
- package/es/components/Grid/Column.d.ts +1 -1
- package/es/components/Grid/Column.js +2 -2
- package/es/components/Loading/Loading.d.ts +1 -1
- package/es/components/Loading/Loading.js +3 -1
- package/es/components/Menu/Menu.d.ts +1 -1
- package/es/components/Menu/Menu.js +6 -2
- package/es/components/Menu/MenuItem.js +2 -2
- package/es/components/Modal/Modal.js +0 -1
- package/es/components/MultiSelect/FilterableMultiSelect.js +4 -3
- package/es/components/MultiSelect/MultiSelect.js +5 -8
- package/es/components/MultiSelect/MultiSelectPropTypes.d.ts +6 -8
- package/es/components/MultiSelect/tools/sorting.d.ts +16 -9
- package/es/components/MultiSelect/tools/sorting.js +10 -14
- package/es/components/OverflowMenu/OverflowMenu.js +1 -0
- package/es/components/OverflowMenuItem/OverflowMenuItem.d.ts +5 -1
- package/es/components/OverflowMenuItem/OverflowMenuItem.js +12 -2
- package/es/components/Popover/index.js +3 -3
- package/es/components/ProgressIndicator/ProgressIndicator.js +3 -3
- package/es/components/RadioButtonGroup/RadioButtonGroup.d.ts +1 -1
- package/es/components/RadioButtonGroup/RadioButtonGroup.js +8 -11
- package/es/components/Search/Search.js +3 -2
- package/es/components/Search/utils.d.ts +7 -0
- package/es/components/Search/utils.js +10 -0
- package/es/components/Select/Select.d.ts +2 -2
- package/es/components/Select/Select.js +1 -1
- package/es/components/SelectItem/SelectItem.d.ts +3 -3
- package/es/components/Slider/Slider.d.ts +1 -1
- package/es/components/Slider/Slider.js +2 -8
- package/es/components/StructuredList/StructuredList.js +2 -2
- package/es/components/Tabs/Tabs.js +9 -4
- package/es/components/Tag/DismissibleTag.d.ts +1 -1
- package/es/components/Tag/DismissibleTag.js +2 -2
- package/es/components/Tag/OperationalTag.d.ts +1 -1
- package/es/components/Tag/OperationalTag.js +2 -2
- package/es/components/Tag/SelectableTag.d.ts +1 -1
- package/es/components/Tag/SelectableTag.js +2 -2
- package/es/components/Tag/Tag.d.ts +1 -1
- package/es/components/Tag/Tag.js +2 -2
- package/es/components/TextArea/TextArea.d.ts +1 -2
- package/es/components/TextArea/TextArea.js +4 -5
- package/es/components/TextInput/ControlledPasswordInput.js +1 -1
- package/es/components/TileGroup/TileGroup.d.ts +1 -1
- package/es/components/TileGroup/TileGroup.js +2 -1
- package/es/components/TimePickerSelect/TimePickerSelect.d.ts +4 -4
- package/es/components/Toggletip/index.js +1 -2
- package/es/components/TreeView/TreeNode.js +2 -2
- package/es/components/TreeView/TreeView.d.ts +1 -1
- package/es/components/UIShell/HeaderPanel.d.ts +1 -1
- package/es/components/UIShell/HeaderPanel.js +7 -4
- package/es/components/UIShell/SideNav.js +3 -3
- package/es/components/UIShell/Switcher.d.ts +1 -1
- package/es/components/UIShell/Switcher.js +6 -5
- package/es/feature-flags.js +2 -2
- package/es/internal/FloatingMenu.js +3 -3
- package/es/internal/useOverflowItems.d.ts +1 -5
- package/es/internal/useOverflowItems.js +6 -27
- package/lib/components/Accordion/AccordionItem.js +7 -5
- package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +1 -1
- package/lib/components/CheckboxGroup/CheckboxGroup.js +1 -1
- package/lib/components/ComboBox/ComboBox.js +3 -4
- package/lib/components/ComposedModal/ComposedModal.js +0 -1
- package/lib/components/ContainedList/ContainedList.d.ts +1 -1
- package/lib/components/ContainedList/ContainedList.js +9 -34
- package/lib/components/ContentSwitcher/ContentSwitcher.d.ts +3 -3
- package/lib/components/ContentSwitcher/ContentSwitcher.js +3 -3
- package/lib/components/DataTable/DataTable.d.ts +6 -2
- package/lib/components/DataTable/DataTable.js +3 -1
- package/lib/components/DataTable/Table.js +1 -1
- package/lib/components/DataTable/TableExpandRow.js +1 -1
- package/lib/components/DataTable/TableToolbarSearch.d.ts +11 -2
- package/lib/components/DataTable/TableToolbarSearch.js +10 -3
- package/lib/components/DataTable/stories/examples/TableToolbarFilter.d.ts +3 -0
- package/lib/components/DataTable/tools/normalize.js +2 -1
- package/lib/components/DataTableSkeleton/DataTableSkeleton.d.ts +2 -12
- package/lib/components/DataTableSkeleton/DataTableSkeleton.js +1 -8
- package/lib/components/DatePicker/DatePicker.js +7 -3
- package/lib/components/DatePickerInput/DatePickerInput.d.ts +2 -5
- package/lib/components/DatePickerInput/DatePickerInput.js +2 -13
- package/lib/components/Dropdown/Dropdown.js +2 -3
- package/lib/components/ExpandableSearch/ExpandableSearch.js +2 -1
- package/lib/components/ExpandableSearch/index.js +17 -0
- package/lib/components/FeatureFlags/index.js +5 -5
- package/lib/components/FluidSelect/FluidSelect.d.ts +3 -3
- package/lib/components/FluidTextArea/FluidTextArea.d.ts +2 -4
- package/lib/components/FluidTextArea/FluidTextArea.js +1 -2
- package/lib/components/FluidTimePickerSelect/FluidTimePickerSelect.d.ts +3 -3
- package/lib/components/Grid/Column.d.ts +1 -1
- package/lib/components/Grid/Column.js +2 -21
- package/lib/components/Loading/Loading.d.ts +1 -1
- package/lib/components/Loading/Loading.js +3 -1
- package/lib/components/Menu/Menu.d.ts +1 -1
- package/lib/components/Menu/Menu.js +6 -2
- package/lib/components/Menu/MenuItem.js +2 -2
- package/lib/components/Modal/Modal.js +0 -1
- package/lib/components/MultiSelect/FilterableMultiSelect.js +4 -3
- package/lib/components/MultiSelect/MultiSelect.js +5 -8
- package/lib/components/MultiSelect/MultiSelectPropTypes.d.ts +6 -8
- package/lib/components/MultiSelect/tools/sorting.d.ts +16 -9
- package/lib/components/MultiSelect/tools/sorting.js +10 -14
- package/lib/components/OverflowMenu/OverflowMenu.js +1 -0
- package/lib/components/OverflowMenuItem/OverflowMenuItem.d.ts +5 -1
- package/lib/components/OverflowMenuItem/OverflowMenuItem.js +12 -2
- package/lib/components/Popover/index.js +3 -3
- package/lib/components/ProgressIndicator/ProgressIndicator.js +3 -3
- package/lib/components/RadioButtonGroup/RadioButtonGroup.d.ts +1 -1
- package/lib/components/RadioButtonGroup/RadioButtonGroup.js +7 -10
- package/lib/components/Search/Search.js +3 -2
- package/lib/components/Search/utils.d.ts +7 -0
- package/lib/components/Search/utils.js +12 -0
- package/lib/components/Select/Select.d.ts +2 -2
- package/lib/components/Select/Select.js +1 -1
- package/lib/components/SelectItem/SelectItem.d.ts +3 -3
- package/lib/components/Slider/Slider.d.ts +1 -1
- package/lib/components/Slider/Slider.js +2 -8
- package/lib/components/StructuredList/StructuredList.js +2 -2
- package/lib/components/Tabs/Tabs.js +9 -4
- package/lib/components/Tag/DismissibleTag.d.ts +1 -1
- package/lib/components/Tag/DismissibleTag.js +2 -2
- package/lib/components/Tag/OperationalTag.d.ts +1 -1
- package/lib/components/Tag/OperationalTag.js +2 -2
- package/lib/components/Tag/SelectableTag.d.ts +1 -1
- package/lib/components/Tag/SelectableTag.js +2 -2
- package/lib/components/Tag/Tag.d.ts +1 -1
- package/lib/components/Tag/Tag.js +2 -2
- package/lib/components/TextArea/TextArea.d.ts +1 -2
- package/lib/components/TextArea/TextArea.js +4 -5
- package/lib/components/TextInput/ControlledPasswordInput.js +1 -1
- package/lib/components/TileGroup/TileGroup.d.ts +1 -1
- package/lib/components/TileGroup/TileGroup.js +2 -1
- package/lib/components/TimePickerSelect/TimePickerSelect.d.ts +4 -4
- package/lib/components/Toggletip/index.js +1 -2
- package/lib/components/TreeView/TreeNode.js +2 -2
- package/lib/components/TreeView/TreeView.d.ts +1 -1
- package/lib/components/UIShell/HeaderPanel.d.ts +1 -1
- package/lib/components/UIShell/HeaderPanel.js +6 -3
- package/lib/components/UIShell/SideNav.js +3 -3
- package/lib/components/UIShell/Switcher.d.ts +1 -1
- package/lib/components/UIShell/Switcher.js +5 -4
- package/lib/feature-flags.js +2 -21
- package/lib/internal/FloatingMenu.js +3 -22
- package/lib/internal/useOverflowItems.d.ts +1 -5
- package/lib/internal/useOverflowItems.js +6 -27
- package/package.json +8 -8
- package/telemetry.yml +0 -1
|
@@ -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 (
|
|
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,
|
|
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?:
|
|
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?:
|
|
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
|
-
|
|
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.
|
|
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
|
}
|
|
@@ -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
|
|
67
|
-
|
|
67
|
+
const {
|
|
68
|
+
target
|
|
69
|
+
} = event;
|
|
70
|
+
if (!(target instanceof Element)) return;
|
|
68
71
|
setLastClickedElement(target);
|
|
69
|
-
const isChildASwitcher =
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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');
|
|
@@ -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 (
|
|
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 (
|
|
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 (
|
|
82
|
+
if (utils.isComponentElement(child, SwitcherDivider.default)) {
|
|
82
83
|
return /*#__PURE__*/React.cloneElement(child, {
|
|
83
84
|
key: index
|
|
84
85
|
});
|
package/lib/feature-flags.js
CHANGED
|
@@ -7,28 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
'use strict';
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var featureFlags = require('@carbon/feature-flags');
|
|
11
11
|
|
|
12
|
-
|
|
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
|
|
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 =
|
|
299
|
-
const focusTrapWithoutSentinelsFlag =
|
|
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,
|
|
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
|
-
|
|
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
|
|
59
|
+
return overflowItems;
|
|
71
60
|
}
|
|
72
61
|
const map = getMap();
|
|
73
62
|
let maxReached = false;
|
|
74
63
|
let accumulatedWidth = 0;
|
|
75
|
-
const visibleItems =
|
|
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
|
-
}, [
|
|
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
|
-
|
|
106
|
-
|
|
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.
|
|
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.
|
|
57
|
-
"@carbon/layout": "^11.
|
|
58
|
-
"@carbon/styles": "^1.
|
|
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.
|
|
83
|
-
"@figma/code-connect": "^1.3.
|
|
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": "
|
|
134
|
+
"gitHead": "4f48ac426be7302a57460b1c81d74dd5d6071ad6"
|
|
135
135
|
}
|