@carbon/react 1.78.0-rc.0 → 1.78.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 +877 -842
- package/es/components/ComboBox/ComboBox.js +6 -6
- package/es/components/ComboButton/index.js +0 -1
- package/es/components/ContextMenu/useContextMenu.d.ts +0 -1
- package/es/components/ContextMenu/useContextMenu.js +1 -2
- package/es/components/Menu/Menu.d.ts +1 -0
- package/es/components/Menu/Menu.js +5 -7
- package/es/components/Menu/MenuContext.d.ts +4 -4
- package/es/components/Menu/MenuContext.js +6 -1
- package/es/components/Menu/MenuItem.d.ts +1 -1
- package/es/components/Menu/MenuItem.js +14 -22
- package/es/components/MenuButton/index.js +14 -2
- package/es/components/Notification/Notification.js +4 -5
- package/lib/components/ComboBox/ComboBox.js +6 -6
- package/lib/components/ComboButton/index.js +0 -1
- package/lib/components/ContextMenu/useContextMenu.d.ts +0 -1
- package/lib/components/ContextMenu/useContextMenu.js +1 -2
- package/lib/components/Menu/Menu.d.ts +1 -0
- package/lib/components/Menu/Menu.js +5 -7
- package/lib/components/Menu/MenuContext.d.ts +4 -4
- package/lib/components/Menu/MenuContext.js +6 -1
- package/lib/components/Menu/MenuItem.d.ts +1 -1
- package/lib/components/Menu/MenuItem.js +13 -21
- package/lib/components/MenuButton/index.js +14 -2
- package/lib/components/Notification/Notification.js +4 -5
- package/package.json +5 -5
|
@@ -18,7 +18,6 @@ var iconsReact = require('@carbon/icons-react');
|
|
|
18
18
|
var useControllableState = require('../../internal/useControllableState.js');
|
|
19
19
|
var useMergedRefs = require('../../internal/useMergedRefs.js');
|
|
20
20
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
21
|
-
var warning = require('../../internal/warning.js');
|
|
22
21
|
var Menu = require('./Menu.js');
|
|
23
22
|
var MenuContext = require('./MenuContext.js');
|
|
24
23
|
require('../Text/index.js');
|
|
@@ -33,7 +32,7 @@ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
|
|
|
33
32
|
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
34
33
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
35
34
|
|
|
36
|
-
var _CaretLeft, _CaretRight;
|
|
35
|
+
var _Checkmark, _CaretLeft, _CaretRight;
|
|
37
36
|
const MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(_ref, forwardRef) {
|
|
38
37
|
let {
|
|
39
38
|
children,
|
|
@@ -144,15 +143,14 @@ const MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(_ref, forwardRe
|
|
|
144
143
|
setRtl(false);
|
|
145
144
|
}
|
|
146
145
|
}, [direction]);
|
|
147
|
-
const iconsAllowed = context.state.mode === 'basic' || rest.role === 'menuitemcheckbox' || rest.role === 'menuitemradio';
|
|
148
146
|
React.useEffect(() => {
|
|
149
|
-
if (
|
|
147
|
+
if (IconElement && !context.state.hasIcons) {
|
|
150
148
|
// @ts-ignore - TODO: Should we be passing payload?
|
|
151
149
|
context.dispatch({
|
|
152
150
|
type: 'enableIcons'
|
|
153
151
|
});
|
|
154
152
|
}
|
|
155
|
-
}, [
|
|
153
|
+
}, [IconElement, context.state.hasIcons, context]);
|
|
156
154
|
React.useEffect(() => {
|
|
157
155
|
Object.keys(floatingStyles).forEach(style => {
|
|
158
156
|
if (refs.floating.current && style !== 'position') {
|
|
@@ -176,8 +174,10 @@ const MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(_ref, forwardRe
|
|
|
176
174
|
onClick: handleClick,
|
|
177
175
|
onKeyDown: handleKeyDown
|
|
178
176
|
}, getReferenceProps()), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
177
|
+
className: `${prefix}--menu-item__selection-icon`
|
|
178
|
+
}, rest['aria-checked'] && (_Checkmark || (_Checkmark = /*#__PURE__*/React__default["default"].createElement(iconsReact.Checkmark, null)))), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
179
179
|
className: `${prefix}--menu-item__icon`
|
|
180
|
-
},
|
|
180
|
+
}, IconElement && /*#__PURE__*/React__default["default"].createElement(IconElement, null)), /*#__PURE__*/React__default["default"].createElement(Text.Text, {
|
|
181
181
|
as: "div",
|
|
182
182
|
className: `${prefix}--menu-item__label`,
|
|
183
183
|
title: label
|
|
@@ -222,7 +222,7 @@ MenuItem.propTypes = {
|
|
|
222
222
|
// @ts-ignore-next-line -- avoid spurious (?) TS2322 error
|
|
223
223
|
onClick: PropTypes__default["default"].func,
|
|
224
224
|
/**
|
|
225
|
-
*
|
|
225
|
+
* Sets the menu item's icon.
|
|
226
226
|
*/
|
|
227
227
|
// @ts-ignore-next-line -- avoid spurious (?) TS2322 error
|
|
228
228
|
renderIcon: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].object]),
|
|
@@ -243,9 +243,6 @@ const MenuItemSelectable = /*#__PURE__*/React.forwardRef(function MenuItemSelect
|
|
|
243
243
|
} = _ref2;
|
|
244
244
|
const prefix = usePrefix.usePrefix();
|
|
245
245
|
const context = React.useContext(MenuContext.MenuContext);
|
|
246
|
-
if (context.state.mode === 'basic') {
|
|
247
|
-
process.env.NODE_ENV !== "production" ? warning.warning(false, 'MenuItemSelectable is not supported when the menu is in "basic" mode.') : void 0;
|
|
248
|
-
}
|
|
249
246
|
const [checked, setChecked] = useControllableState.useControllableState({
|
|
250
247
|
value: selected,
|
|
251
248
|
onChange,
|
|
@@ -255,13 +252,13 @@ const MenuItemSelectable = /*#__PURE__*/React.forwardRef(function MenuItemSelect
|
|
|
255
252
|
setChecked(!checked);
|
|
256
253
|
}
|
|
257
254
|
React.useEffect(() => {
|
|
258
|
-
if (!context.state.
|
|
255
|
+
if (!context.state.hasSelectableItems) {
|
|
259
256
|
// @ts-ignore - TODO: Should we be passing payload?
|
|
260
257
|
context.dispatch({
|
|
261
|
-
type: '
|
|
258
|
+
type: 'enableSelectableItems'
|
|
262
259
|
});
|
|
263
260
|
}
|
|
264
|
-
}, [context.state.
|
|
261
|
+
}, [context.state.hasSelectableItems, context]);
|
|
265
262
|
const classNames = cx__default["default"](className, `${prefix}--menu-item-selectable--selected`);
|
|
266
263
|
return /*#__PURE__*/React__default["default"].createElement(MenuItem, _rollupPluginBabelHelpers["extends"]({}, rest, {
|
|
267
264
|
ref: forwardRef,
|
|
@@ -269,7 +266,6 @@ const MenuItemSelectable = /*#__PURE__*/React.forwardRef(function MenuItemSelect
|
|
|
269
266
|
className: classNames,
|
|
270
267
|
role: "menuitemcheckbox",
|
|
271
268
|
"aria-checked": checked,
|
|
272
|
-
renderIcon: checked ? iconsReact.Checkmark : undefined,
|
|
273
269
|
onClick: handleClick
|
|
274
270
|
}));
|
|
275
271
|
});
|
|
@@ -344,9 +340,6 @@ const MenuItemRadioGroup = /*#__PURE__*/React.forwardRef(function MenuItemRadioG
|
|
|
344
340
|
} = _ref4;
|
|
345
341
|
const prefix = usePrefix.usePrefix();
|
|
346
342
|
const context = React.useContext(MenuContext.MenuContext);
|
|
347
|
-
if (context.state.mode === 'basic') {
|
|
348
|
-
process.env.NODE_ENV !== "production" ? warning.warning(false, 'MenuItemRadioGroup is not supported when the menu is in "basic" mode.') : void 0;
|
|
349
|
-
}
|
|
350
343
|
const [selection, setSelection] = useControllableState.useControllableState({
|
|
351
344
|
value: selectedItem,
|
|
352
345
|
onChange,
|
|
@@ -356,13 +349,13 @@ const MenuItemRadioGroup = /*#__PURE__*/React.forwardRef(function MenuItemRadioG
|
|
|
356
349
|
setSelection(item);
|
|
357
350
|
}
|
|
358
351
|
React.useEffect(() => {
|
|
359
|
-
if (!context.state.
|
|
352
|
+
if (!context.state.hasSelectableItems) {
|
|
360
353
|
// @ts-ignore - TODO: Should we be passing payload?
|
|
361
354
|
context.dispatch({
|
|
362
|
-
type: '
|
|
355
|
+
type: 'enableSelectableItems'
|
|
363
356
|
});
|
|
364
357
|
}
|
|
365
|
-
}, [context.state.
|
|
358
|
+
}, [context.state.hasSelectableItems, context]);
|
|
366
359
|
const classNames = cx__default["default"](className, `${prefix}--menu-item-radio-group`);
|
|
367
360
|
return /*#__PURE__*/React__default["default"].createElement("li", {
|
|
368
361
|
className: classNames,
|
|
@@ -376,7 +369,6 @@ const MenuItemRadioGroup = /*#__PURE__*/React.forwardRef(function MenuItemRadioG
|
|
|
376
369
|
label: itemToString(item),
|
|
377
370
|
role: "menuitemradio",
|
|
378
371
|
"aria-checked": item === selection,
|
|
379
|
-
renderIcon: item === selection ? iconsReact.Checkmark : undefined,
|
|
380
372
|
onClick: e => {
|
|
381
373
|
handleClick(item);
|
|
382
374
|
}
|
|
@@ -83,6 +83,15 @@ const MenuButton = /*#__PURE__*/React.forwardRef(function MenuButton(_ref, forwa
|
|
|
83
83
|
// “break” the floating element out of a clipping ancestor.
|
|
84
84
|
// https://floating-ui.com/docs/misc#clipping
|
|
85
85
|
strategy: 'fixed',
|
|
86
|
+
// Submenus are using a fixed position to break out of the parent menu's
|
|
87
|
+
// box avoiding clipping while allowing for vertical scroll. When an
|
|
88
|
+
// element is using transform it establishes a new containing block
|
|
89
|
+
// block for all of its descendants. Therefore, its padding box will be
|
|
90
|
+
// used for fixed-positioned descendants. This would cause the submenu
|
|
91
|
+
// to be clipped by its parent menu.
|
|
92
|
+
// Reference: https://www.w3.org/TR/2019/CR-css-transforms-1-20190214/#current-transformation-matrix-computation
|
|
93
|
+
// Reference: https://github.com/carbon-design-system/carbon/pull/18153#issuecomment-2498548835
|
|
94
|
+
transform: false,
|
|
86
95
|
// Middleware order matters, arrow should be last
|
|
87
96
|
middleware: middlewares,
|
|
88
97
|
whileElementsMounted: react.autoUpdate
|
|
@@ -97,7 +106,11 @@ const MenuButton = /*#__PURE__*/React.forwardRef(function MenuButton(_ref, forwa
|
|
|
97
106
|
React.useLayoutEffect(() => {
|
|
98
107
|
Object.keys(floatingStyles).forEach(style => {
|
|
99
108
|
if (refs.floating.current) {
|
|
100
|
-
|
|
109
|
+
let value = floatingStyles[style];
|
|
110
|
+
if (['top', 'right', 'bottom', 'left'].includes(style) && Number(value)) {
|
|
111
|
+
value += 'px';
|
|
112
|
+
}
|
|
113
|
+
refs.floating.current.style[style] = value;
|
|
101
114
|
}
|
|
102
115
|
});
|
|
103
116
|
}, [floatingStyles, refs.floating, middlewareData, placement, open]);
|
|
@@ -136,7 +149,6 @@ const MenuButton = /*#__PURE__*/React.forwardRef(function MenuButton(_ref, forwa
|
|
|
136
149
|
id: id,
|
|
137
150
|
legacyAutoalign: false,
|
|
138
151
|
label: label,
|
|
139
|
-
mode: "basic",
|
|
140
152
|
size: size,
|
|
141
153
|
open: open,
|
|
142
154
|
onClose: handleClose,
|
|
@@ -740,11 +740,9 @@ function Callout(_ref8) {
|
|
|
740
740
|
[`${prefix}--actionable-notification--${kind}`]: kind,
|
|
741
741
|
[`${prefix}--actionable-notification--hide-close-button`]: true
|
|
742
742
|
});
|
|
743
|
-
const
|
|
744
|
-
useNoInteractiveChildren.useInteractiveChildrenNeedDescription(
|
|
745
|
-
return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
|
|
746
|
-
ref: ref
|
|
747
|
-
}, rest, {
|
|
743
|
+
const childrenContainer = React.useRef(null);
|
|
744
|
+
useNoInteractiveChildren.useInteractiveChildrenNeedDescription(childrenContainer, `interactive child node(s) should have an \`aria-describedby\` property with a value matching the value of \`titleId\``);
|
|
745
|
+
return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({}, rest, {
|
|
748
746
|
className: containerClassName
|
|
749
747
|
}), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
750
748
|
className: `${prefix}--actionable-notification__details`
|
|
@@ -753,6 +751,7 @@ function Callout(_ref8) {
|
|
|
753
751
|
kind: kind,
|
|
754
752
|
iconDescription: statusIconDescription || `${kind} icon`
|
|
755
753
|
}), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
754
|
+
ref: childrenContainer,
|
|
756
755
|
className: `${prefix}--actionable-notification__text-wrapper`
|
|
757
756
|
}, title && /*#__PURE__*/React__default["default"].createElement(Text.Text, {
|
|
758
757
|
as: "div",
|
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.78.0
|
|
4
|
+
"version": "1.78.0",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"types": "lib/index.d.ts",
|
|
@@ -52,9 +52,9 @@
|
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@babel/runtime": "^7.24.7",
|
|
54
54
|
"@carbon/feature-flags": "^0.24.0",
|
|
55
|
-
"@carbon/icons-react": "^11.57.0
|
|
55
|
+
"@carbon/icons-react": "^11.57.0",
|
|
56
56
|
"@carbon/layout": "^11.30.0",
|
|
57
|
-
"@carbon/styles": "^1.77.0
|
|
57
|
+
"@carbon/styles": "^1.77.0",
|
|
58
58
|
"@floating-ui/react": "^0.27.4",
|
|
59
59
|
"@ibm/telemetry-js": "^1.5.0",
|
|
60
60
|
"classnames": "2.5.1",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"@babel/preset-react": "^7.24.7",
|
|
80
80
|
"@babel/preset-typescript": "^7.24.7",
|
|
81
81
|
"@carbon/test-utils": "^10.35.0",
|
|
82
|
-
"@carbon/themes": "^11.48.0
|
|
82
|
+
"@carbon/themes": "^11.48.0",
|
|
83
83
|
"@figma/code-connect": "^1.2.4",
|
|
84
84
|
"@rollup/plugin-babel": "^6.0.0",
|
|
85
85
|
"@rollup/plugin-commonjs": "^28.0.0",
|
|
@@ -146,5 +146,5 @@
|
|
|
146
146
|
"**/*.scss",
|
|
147
147
|
"**/*.css"
|
|
148
148
|
],
|
|
149
|
-
"gitHead": "
|
|
149
|
+
"gitHead": "7ffd4731509c6e3d768cfb9029478b27db8f807d"
|
|
150
150
|
}
|