@carbon/ibm-products 1.51.0 → 1.52.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +10 -5
- package/css/index-full-carbon.css +89 -64
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +1 -1
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon.css +89 -64
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +1 -1
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +89 -64
- package/css/index.css.map +1 -1
- package/css/index.min.css +1 -1
- package/css/index.min.css.map +1 -1
- package/es/components/AboutModal/AboutModal.js +3 -4
- package/es/components/ActionBar/ActionBar.js +9 -18
- package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +8 -13
- package/es/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +7 -11
- package/es/components/Datagrid/Datagrid/DatagridToolbar.js +5 -5
- package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +3 -4
- package/es/components/Datagrid/index.js +1 -0
- package/es/components/Datagrid/useActionsColumn.js +10 -7
- package/es/components/Datagrid/useCustomizeColumns.js +5 -1
- package/es/components/Datagrid/useEditableCell.js +12 -0
- package/es/components/Datagrid/useExpandedRow.js +11 -7
- package/es/components/Datagrid/useFiltering.js +11 -8
- package/es/components/Datagrid/useInlineEdit.js +17 -8
- package/es/components/Datagrid/useNestedRows.js +10 -6
- package/es/components/ExampleComponent/ExampleComponent.js +32 -4
- package/es/components/ExampleComponent/useExample.js +49 -0
- package/es/components/InlineEditV1/InlineEditV1.js +3 -1
- package/es/components/NonLinearReading/NonLinearReading.js +7 -7
- package/es/components/PageHeader/PageHeader.js +28 -31
- package/es/components/SidePanel/SidePanel.js +25 -26
- package/es/components/TagSet/TagSet.js +5 -7
- package/es/components/Tearsheet/TearsheetShell.js +4 -6
- package/es/components/index.js +1 -1
- package/es/global/js/hooks/useResizeObserver.js +74 -0
- package/es/global/js/package-settings.js +34 -4
- package/es/global/js/utils/test-helper.js +34 -3
- package/es/settings.js +26 -30
- package/lib/components/AboutModal/AboutModal.js +3 -4
- package/lib/components/ActionBar/ActionBar.js +9 -18
- package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +8 -13
- package/lib/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +7 -11
- package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +4 -4
- package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +3 -4
- package/lib/components/Datagrid/index.js +7 -0
- package/lib/components/Datagrid/useActionsColumn.js +7 -1
- package/lib/components/Datagrid/useCustomizeColumns.js +4 -0
- package/lib/components/Datagrid/useEditableCell.js +20 -0
- package/lib/components/Datagrid/useExpandedRow.js +4 -0
- package/lib/components/Datagrid/useFiltering.js +4 -0
- package/lib/components/Datagrid/useInlineEdit.js +19 -8
- package/lib/components/Datagrid/useNestedRows.js +9 -6
- package/lib/components/ExampleComponent/ExampleComponent.js +35 -4
- package/lib/components/ExampleComponent/useExample.js +58 -0
- package/lib/components/InlineEditV1/InlineEditV1.js +3 -1
- package/lib/components/NonLinearReading/NonLinearReading.js +6 -6
- package/lib/components/PageHeader/PageHeader.js +28 -31
- package/lib/components/SidePanel/SidePanel.js +25 -26
- package/lib/components/TagSet/TagSet.js +5 -7
- package/lib/components/Tearsheet/TearsheetShell.js +4 -6
- package/lib/components/index.js +6 -0
- package/lib/global/js/hooks/useResizeObserver.js +83 -0
- package/lib/global/js/package-settings.js +33 -3
- package/lib/global/js/utils/test-helper.js +37 -5
- package/lib/settings.js +26 -30
- package/package.json +2 -3
- package/scss/components/NonLinearReading/_non-linear-reading.scss +76 -67
- package/scss/components/NonLinearReading/_storybook-styles.scss +16 -0
@@ -14,7 +14,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
14
14
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
15
15
|
var _layout = require("@carbon/layout");
|
16
16
|
var _classnames = _interopRequireDefault(require("classnames"));
|
17
|
-
var
|
17
|
+
var _useResizeObserver = require("../../global/js/hooks/useResizeObserver");
|
18
18
|
var _carbonComponentsReact = require("carbon-components-react");
|
19
19
|
var _hooks = require("../../global/js/hooks");
|
20
20
|
var _devtools = require("../../global/js/utils/devtools");
|
@@ -39,7 +39,7 @@ var defaults = {
|
|
39
39
|
narrowGrid: false
|
40
40
|
};
|
41
41
|
var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
42
|
-
var _withoutBackground, _enableBreadcrumbScro,
|
42
|
+
var _withoutBackground, _enableBreadcrumbScro, _ref7, _cx2, _ref8, _cx4, _cx7;
|
43
43
|
var actionBarItems = _ref.actionBarItems,
|
44
44
|
actionBarMenuOptionsClass = _ref.actionBarMenuOptionsClass,
|
45
45
|
actionBarOverflowAriaLabel = _ref.actionBarOverflowAriaLabel,
|
@@ -176,7 +176,8 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
176
176
|
};
|
177
177
|
|
178
178
|
/* istanbul ignore next */
|
179
|
-
var handleResizeActionBarColumn = function handleResizeActionBarColumn(
|
179
|
+
var handleResizeActionBarColumn = function handleResizeActionBarColumn(_ref4) {
|
180
|
+
var width = _ref4.width;
|
180
181
|
/* don't know how to test resize */
|
181
182
|
/* istanbul ignore next */
|
182
183
|
setActionBarColumnWidth(width);
|
@@ -250,8 +251,8 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
250
251
|
(0, _hooks.useNearestScroll)(headerRef,
|
251
252
|
// on scroll or various layout changes check updates if needed
|
252
253
|
// istanbul ignore next
|
253
|
-
function (
|
254
|
-
var current =
|
254
|
+
function (_ref5) {
|
255
|
+
var current = _ref5.current;
|
255
256
|
setPageHeaderStyles(function (prev) {
|
256
257
|
return _objectSpread(_objectSpread({}, prev), {}, (0, _defineProperty2.default)({}, "--".concat(_PageHeaderUtils.blockClass, "--breadcrumb-top"), "".concat(metrics.headerOffset, "px")));
|
257
258
|
});
|
@@ -267,8 +268,8 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
267
268
|
document.documentElement.style.setProperty("--".concat(_PageHeaderUtils.blockClass, "--tagset-tooltip-offset"), "".concat(tagsetTooltipOffset, "px"));
|
268
269
|
setScrollYValue(current.scrollY);
|
269
270
|
}, [metrics.headerHeight, metrics.headerTopValue, metrics.headerOffset, enableBreadcrumbScroll]);
|
270
|
-
(0, _hooks.useWindowResize)(function (
|
271
|
-
var current =
|
271
|
+
(0, _hooks.useWindowResize)(function (_ref6) {
|
272
|
+
var current = _ref6.current;
|
272
273
|
// on window resize and other updates some values may have changed
|
273
274
|
checkUpdateVerticalSpace();
|
274
275
|
setWidthIsNarrow(current.innerWidth / 16 < parseInt(_layout.breakpoints.md.width)); // small (below medium) media query
|
@@ -314,15 +315,11 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
314
315
|
(0, _PageHeaderUtils.utilSetCollapsed)(collapseHeader, metrics.headerOffset, metrics.headerTopValue);
|
315
316
|
}
|
316
317
|
}, [collapseHeader, metrics.headerOffset, metrics.headerTopValue]);
|
317
|
-
(0,
|
318
|
-
|
319
|
-
targetRef: sizingContainerRef,
|
320
|
-
handleWidth: true
|
318
|
+
(0, _useResizeObserver.useResizeObserver)(sizingContainerRef, {
|
319
|
+
callback: handleResizeActionBarColumn
|
321
320
|
});
|
322
|
-
(0,
|
323
|
-
|
324
|
-
targetRef: headerRef,
|
325
|
-
handleHeight: true
|
321
|
+
(0, _useResizeObserver.useResizeObserver)(headerRef, {
|
322
|
+
callback: handleResize
|
326
323
|
});
|
327
324
|
|
328
325
|
// Determine what form of title to display in the breadcrumb
|
@@ -331,7 +328,7 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
331
328
|
className: "".concat(_PageHeaderUtils.blockClass, "--offset-top-measuring-element"),
|
332
329
|
ref: offsetTopMeasuringRef
|
333
330
|
}), /*#__PURE__*/_react.default.createElement("section", (0, _extends2.default)({}, rest, {
|
334
|
-
className: (0, _classnames.default)([_PageHeaderUtils.blockClass, "".concat(_PageHeaderUtils.blockClass, "--no-margins-below-row"), className, (
|
331
|
+
className: (0, _classnames.default)([_PageHeaderUtils.blockClass, "".concat(_PageHeaderUtils.blockClass, "--no-margins-below-row"), className, (_ref7 = {}, (0, _defineProperty2.default)(_ref7, "".concat(_PageHeaderUtils.blockClass, "--has-navigation"), navigation || tags), (0, _defineProperty2.default)(_ref7, "".concat(_PageHeaderUtils.blockClass, "--has-navigation-tags-only"), !navigation && tags), _ref7)]),
|
335
332
|
style: pageHeaderStyles,
|
336
333
|
ref: headerRef
|
337
334
|
}, (0, _devtools.getDevtoolsProps)(componentName)), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Grid, {
|
@@ -352,7 +349,7 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
352
349
|
overflowAriaLabel: breadcrumbOverflowAriaLabel,
|
353
350
|
breadcrumbs: breadcrumbs && breadcrumbItemForTitle ? breadcrumbs.concat(breadcrumbItemForTitle) : breadcrumbItemForTitle ? [breadcrumbItemForTitle] : breadcrumbs // breadcrumbs may be null or undefined
|
354
351
|
}) : null), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Column, {
|
355
|
-
className: (0, _classnames.default)(["".concat(_PageHeaderUtils.blockClass, "__action-bar-column ").concat(_PageHeaderUtils.blockClass, "__action-bar-column--background"), (
|
352
|
+
className: (0, _classnames.default)(["".concat(_PageHeaderUtils.blockClass, "__action-bar-column ").concat(_PageHeaderUtils.blockClass, "__action-bar-column--background"), (_ref8 = {}, (0, _defineProperty2.default)(_ref8, "".concat(_PageHeaderUtils.blockClass, "__action-bar-column--has-page-actions"), pageActions), (0, _defineProperty2.default)(_ref8, "".concat(_PageHeaderUtils.blockClass, "__action-bar-column--influenced-by-collapse-button"), spaceForCollapseButton), _ref8)])
|
356
353
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
357
354
|
className: "".concat(_PageHeaderUtils.blockClass, "__action-bar-column-content"),
|
358
355
|
ref: sizingContainerRef
|
@@ -503,8 +500,8 @@ PageHeader.propTypes = _objectSpread({
|
|
503
500
|
*
|
504
501
|
* NOTE: This prop is required if actionBarItems are supplied
|
505
502
|
*/
|
506
|
-
actionBarOverflowAriaLabel: _propTypes.default.string.isRequired.if(function (
|
507
|
-
var actionBarItems =
|
503
|
+
actionBarOverflowAriaLabel: _propTypes.default.string.isRequired.if(function (_ref10) {
|
504
|
+
var actionBarItems = _ref10.actionBarItems;
|
508
505
|
return actionBarItems && actionBarItems.length > 0;
|
509
506
|
}),
|
510
507
|
/**
|
@@ -535,8 +532,8 @@ PageHeader.propTypes = _objectSpread({
|
|
535
532
|
* If the user supplies breadcrumbs then this property is required.
|
536
533
|
* It is used in an overflow menu when there is insufficient space to display all breadcrumbs inline.
|
537
534
|
*/
|
538
|
-
breadcrumbOverflowAriaLabel: _propTypes.default.string.isRequired.if(function (
|
539
|
-
var breadcrumbs =
|
535
|
+
breadcrumbOverflowAriaLabel: _propTypes.default.string.isRequired.if(function (_ref11) {
|
536
|
+
var breadcrumbs = _ref11.breadcrumbs;
|
540
537
|
return breadcrumbs && breadcrumbs.length > 0;
|
541
538
|
}),
|
542
539
|
/**
|
@@ -570,8 +567,8 @@ PageHeader.propTypes = _objectSpread({
|
|
570
567
|
/**
|
571
568
|
* A text version of the `label` for display, required if `label` is not a string.
|
572
569
|
*/
|
573
|
-
title: _propTypes.default.string.isRequired.if(function (
|
574
|
-
var label =
|
570
|
+
title: _propTypes.default.string.isRequired.if(function (_ref12) {
|
571
|
+
var label = _ref12.label;
|
575
572
|
return typeof label !== 'string';
|
576
573
|
})
|
577
574
|
})),
|
@@ -597,9 +594,9 @@ PageHeader.propTypes = _objectSpread({
|
|
597
594
|
* If `hasCollapseHeaderToggle` is set and `withoutBackground` is unset/falsy then assistive text is
|
598
595
|
* required for both the expend and collapse states of the button component used.
|
599
596
|
*/
|
600
|
-
collapseHeaderIconDescription: _propTypes.default.string.isRequired.if(function (
|
601
|
-
var withoutBackground =
|
602
|
-
hasCollapseHeaderToggle =
|
597
|
+
collapseHeaderIconDescription: _propTypes.default.string.isRequired.if(function (_ref13) {
|
598
|
+
var withoutBackground = _ref13.withoutBackground,
|
599
|
+
hasCollapseHeaderToggle = _ref13.hasCollapseHeaderToggle;
|
603
600
|
return !withoutBackground && hasCollapseHeaderToggle;
|
604
601
|
}),
|
605
602
|
/**
|
@@ -616,9 +613,9 @@ PageHeader.propTypes = _objectSpread({
|
|
616
613
|
* If `hasCollapseHeaderToggle` is set and `withoutBackground` is unset/falsy then assistive text is
|
617
614
|
* required for both the expend and collapse states of the button component used.
|
618
615
|
*/
|
619
|
-
expandHeaderIconDescription: _propTypes.default.string.isRequired.if(function (
|
620
|
-
var withoutBackground =
|
621
|
-
hasCollapseHeaderToggle =
|
616
|
+
expandHeaderIconDescription: _propTypes.default.string.isRequired.if(function (_ref14) {
|
617
|
+
var withoutBackground = _ref14.withoutBackground,
|
618
|
+
hasCollapseHeaderToggle = _ref14.hasCollapseHeaderToggle;
|
622
619
|
return !withoutBackground && hasCollapseHeaderToggle;
|
623
620
|
}),
|
624
621
|
/**
|
@@ -682,8 +679,8 @@ PageHeader.propTypes = _objectSpread({
|
|
682
679
|
*
|
683
680
|
* NOTE: This prop is required if pageActions are supplied
|
684
681
|
*/
|
685
|
-
pageActionsOverflowLabel: _propTypes.default.node.isRequired.if(function (
|
686
|
-
var pageActions =
|
682
|
+
pageActionsOverflowLabel: _propTypes.default.node.isRequired.if(function (_ref15) {
|
683
|
+
var pageActions = _ref15.pageActions;
|
687
684
|
return pageActions && pageActions.length > 0 && !pageActions.content;
|
688
685
|
}),
|
689
686
|
/**
|
@@ -14,7 +14,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
14
14
|
var _framerMotion = require("framer-motion");
|
15
15
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
16
16
|
var _classnames = _interopRequireDefault(require("classnames"));
|
17
|
-
var
|
17
|
+
var _useResizeObserver = require("../../global/js/hooks/useResizeObserver");
|
18
18
|
var _motion = require("@carbon/motion");
|
19
19
|
var _devtools = require("../../global/js/utils/devtools");
|
20
20
|
var _propsHelper = require("../../global/js/utils/props-helper");
|
@@ -51,7 +51,7 @@ var defaults = {
|
|
51
51
|
* Side panels keep users in-context of a page while performing tasks like navigating, editing, viewing details, or configuring something new.
|
52
52
|
*/
|
53
53
|
var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
54
|
-
var _window,
|
54
|
+
var _window, _ref5, _cx4;
|
55
55
|
var actionToolbarButtons = _ref.actionToolbarButtons,
|
56
56
|
actions = _ref.actions,
|
57
57
|
_ref$animateTitle = _ref.animateTitle,
|
@@ -163,8 +163,9 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
163
163
|
}, [labelText, title]);
|
164
164
|
|
165
165
|
/* istanbul ignore next */
|
166
|
-
var handleResize = function handleResize(
|
166
|
+
var handleResize = function handleResize(_ref2) {
|
167
167
|
var _sidePanelOuter$style3;
|
168
|
+
var height = _ref2.height;
|
168
169
|
setPanelHeight(height);
|
169
170
|
var sidePanelOuter = document.querySelector("#".concat(blockClass, "-outer"));
|
170
171
|
var actionsContainer = getActionsContainerElement();
|
@@ -351,9 +352,9 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
351
352
|
|
352
353
|
// adds focus trap functionality
|
353
354
|
/* istanbul ignore next */
|
354
|
-
var handleBlur = function handleBlur(
|
355
|
-
var oldActiveNode =
|
356
|
-
currentActiveNode =
|
355
|
+
var handleBlur = function handleBlur(_ref3) {
|
356
|
+
var oldActiveNode = _ref3.target,
|
357
|
+
currentActiveNode = _ref3.relatedTarget;
|
357
358
|
// focus trap should only be set if the side panel is a `slideOver` type
|
358
359
|
if (open && sidePanelInnerRef && !slideIn) {
|
359
360
|
(0, _wrapFocus.default)({
|
@@ -366,7 +367,7 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
366
367
|
}
|
367
368
|
};
|
368
369
|
var primaryActionContainerClassNames = (0, _classnames.default)(["".concat(blockClass, "__actions-container"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__actions-container-condensed"), condensedActions)]);
|
369
|
-
var mainPanelClassNames = (0, _classnames.default)([blockClass, className, "".concat(blockClass, "__container"), "".concat(blockClass, "__container--").concat(size), (
|
370
|
+
var mainPanelClassNames = (0, _classnames.default)([blockClass, className, "".concat(blockClass, "__container"), "".concat(blockClass, "__container--").concat(size), (_ref5 = {}, (0, _defineProperty2.default)(_ref5, "".concat(blockClass, "__container-right-placement"), placement === 'right'), (0, _defineProperty2.default)(_ref5, "".concat(blockClass, "__container-left-placement"), placement === 'left'), (0, _defineProperty2.default)(_ref5, "".concat(blockClass, "__container-with-action-toolbar"), actionToolbarButtons && actionToolbarButtons.length), (0, _defineProperty2.default)(_ref5, "".concat(blockClass, "__container-without-overlay"), !includeOverlay && !slideIn), (0, _defineProperty2.default)(_ref5, "".concat(blockClass, "__container-is-animating"), !animationComplete || !open), _ref5)]);
|
370
371
|
var renderHeader = function renderHeader() {
|
371
372
|
var _cx, _cx2;
|
372
373
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
@@ -395,17 +396,17 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
395
396
|
className: (0, _classnames.default)("".concat(blockClass, "__subtitle-text"), (_cx2 = {}, (0, _defineProperty2.default)(_cx2, "".concat(blockClass, "__subtitle-text-no-animation"), !animateTitle), (0, _defineProperty2.default)(_cx2, "".concat(blockClass, "__subtitle-text-no-animation-no-action-toolbar"), !animateTitle && (!actionToolbarButtons || !actionToolbarButtons.length)), (0, _defineProperty2.default)(_cx2, "".concat(blockClass, "__subtitle-text-is-animating"), !animationComplete && animateTitle), (0, _defineProperty2.default)(_cx2, "".concat(blockClass, "__subtitle-without-title"), !title), _cx2))
|
396
397
|
}, subtitle), actionToolbarButtons && actionToolbarButtons.length && /*#__PURE__*/_react.default.createElement("div", {
|
397
398
|
className: (0, _classnames.default)("".concat(blockClass, "__action-toolbar"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__action-toolbar-no-animation"), !animateTitle))
|
398
|
-
}, actionToolbarButtons.map(function (
|
399
|
-
var label =
|
400
|
-
kind =
|
401
|
-
icon =
|
402
|
-
tooltipPosition =
|
403
|
-
tooltipAlignment =
|
404
|
-
leading =
|
405
|
-
disabled =
|
406
|
-
className =
|
407
|
-
onClick =
|
408
|
-
rest = (0, _objectWithoutProperties2.default)(
|
399
|
+
}, actionToolbarButtons.map(function (_ref6) {
|
400
|
+
var label = _ref6.label,
|
401
|
+
kind = _ref6.kind,
|
402
|
+
icon = _ref6.icon,
|
403
|
+
tooltipPosition = _ref6.tooltipPosition,
|
404
|
+
tooltipAlignment = _ref6.tooltipAlignment,
|
405
|
+
leading = _ref6.leading,
|
406
|
+
disabled = _ref6.disabled,
|
407
|
+
className = _ref6.className,
|
408
|
+
onClick = _ref6.onClick,
|
409
|
+
rest = (0, _objectWithoutProperties2.default)(_ref6, _excluded2);
|
409
410
|
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, (0, _extends2.default)({}, rest, {
|
410
411
|
key: label,
|
411
412
|
kind: kind || 'ghost',
|
@@ -433,10 +434,8 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
433
434
|
}, title));
|
434
435
|
};
|
435
436
|
var contentRef = ref || sidePanelRef;
|
436
|
-
(0,
|
437
|
-
|
438
|
-
onResize: handleResize,
|
439
|
-
targetRef: contentRef
|
437
|
+
(0, _useResizeObserver.useResizeObserver)(contentRef, {
|
438
|
+
callback: handleResize
|
440
439
|
});
|
441
440
|
return /*#__PURE__*/_react.default.createElement(_framerMotion.AnimatePresence, null, open && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_framerMotion.motion.div, (0, _extends2.default)({}, (0, _devtools.getDevtoolsProps)(componentName), rest, {
|
442
441
|
id: "".concat(blockClass, "-outer"),
|
@@ -590,8 +589,8 @@ SidePanel.propTypes = {
|
|
590
589
|
* This is the selector to the element that contains all of the page content that will shrink if the panel is a slide in.
|
591
590
|
* This prop is required when using the `slideIn` variant of the side panel.
|
592
591
|
*/
|
593
|
-
selectorPageContent: _propTypes.default.string.isRequired.if(function (
|
594
|
-
var slideIn =
|
592
|
+
selectorPageContent: _propTypes.default.string.isRequired.if(function (_ref8) {
|
593
|
+
var slideIn = _ref8.slideIn;
|
595
594
|
return slideIn;
|
596
595
|
}),
|
597
596
|
/**
|
@@ -614,8 +613,8 @@ SidePanel.propTypes = {
|
|
614
613
|
/**
|
615
614
|
* Sets the title text
|
616
615
|
*/
|
617
|
-
title: _propTypes.default.string.isRequired.if(function (
|
618
|
-
var labelText =
|
616
|
+
title: _propTypes.default.string.isRequired.if(function (_ref9) {
|
617
|
+
var labelText = _ref9.labelText;
|
619
618
|
return labelText;
|
620
619
|
})
|
621
620
|
};
|
@@ -17,7 +17,7 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
17
17
|
var _TagSetOverflow = require("./TagSetOverflow");
|
18
18
|
var _TagSetModal = require("./TagSetModal");
|
19
19
|
var _carbonComponentsReact = require("carbon-components-react");
|
20
|
-
var
|
20
|
+
var _useResizeObserver = require("../../global/js/hooks/useResizeObserver");
|
21
21
|
var _devtools = require("../../global/js/utils/devtools");
|
22
22
|
var _propsHelper = require("../../global/js/utils/props-helper");
|
23
23
|
var _settings = require("../../settings");
|
@@ -205,13 +205,11 @@ var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
205
205
|
var handleModalClose = function handleModalClose() {
|
206
206
|
setShowAllModalOpen(false);
|
207
207
|
};
|
208
|
-
(0,
|
209
|
-
|
210
|
-
targetRef: sizingContainerRef
|
208
|
+
(0, _useResizeObserver.useResizeObserver)(sizingContainerRef, {
|
209
|
+
callback: handleSizerTagsResize
|
211
210
|
});
|
212
|
-
(0,
|
213
|
-
|
214
|
-
targetRef: tagSetRef
|
211
|
+
(0, _useResizeObserver.useResizeObserver)(tagSetRef, {
|
212
|
+
callback: handleResize
|
215
213
|
});
|
216
214
|
return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {
|
217
215
|
className: (0, _classnames.default)([blockClass, className]),
|
@@ -12,7 +12,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
12
12
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
13
13
|
var _react = _interopRequireWildcard(require("react"));
|
14
14
|
var _reactDom = require("react-dom");
|
15
|
-
var
|
15
|
+
var _useResizeObserver2 = require("../../global/js/hooks/useResizeObserver");
|
16
16
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
17
17
|
var _classnames = _interopRequireDefault(require("classnames"));
|
18
18
|
var _settings = require("../../settings");
|
@@ -93,12 +93,10 @@ var TearsheetShell = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
|
|
93
93
|
}
|
94
94
|
}, [portalTargetIn]);
|
95
95
|
var localRef = (0, _react.useRef)();
|
96
|
+
var resizer = (0, _react.useRef)(null);
|
96
97
|
var modalRef = ref || localRef;
|
97
|
-
var
|
98
|
-
|
99
|
-
}),
|
100
|
-
width = _useResizeDetector.width,
|
101
|
-
resizer = _useResizeDetector.ref;
|
98
|
+
var _useResizeObserver = (0, _useResizeObserver2.useResizeObserver)(resizer),
|
99
|
+
width = _useResizeObserver.width;
|
102
100
|
|
103
101
|
// Keep track of the stack depth and our position in it (1-based, 0=closed)
|
104
102
|
var _useState3 = (0, _react.useState)(0),
|
package/lib/components/index.js
CHANGED
@@ -393,6 +393,12 @@ Object.defineProperty(exports, "useDisableSelectRows", {
|
|
393
393
|
return _Datagrid.useDisableSelectRows;
|
394
394
|
}
|
395
395
|
});
|
396
|
+
Object.defineProperty(exports, "useEditableCell", {
|
397
|
+
enumerable: true,
|
398
|
+
get: function get() {
|
399
|
+
return _Datagrid.useEditableCell;
|
400
|
+
}
|
401
|
+
});
|
396
402
|
Object.defineProperty(exports, "useExpandedRow", {
|
397
403
|
enumerable: true,
|
398
404
|
get: function get() {
|
@@ -0,0 +1,83 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.useResizeObserver = void 0;
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
9
|
+
var _react = require("react");
|
10
|
+
/**
|
11
|
+
* Copyright IBM Corp. 2023, 2023
|
12
|
+
*
|
13
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
14
|
+
* LICENSE file in the root directory of this source tree.
|
15
|
+
*/
|
16
|
+
|
17
|
+
var useResizeObserver = function useResizeObserver(ref) {
|
18
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
19
|
+
callback: null,
|
20
|
+
throttleInterval: 0
|
21
|
+
};
|
22
|
+
var callback = options.callback,
|
23
|
+
throttleInterval = options.throttleInterval;
|
24
|
+
var _useState = (0, _react.useState)(0),
|
25
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
26
|
+
width = _useState2[0],
|
27
|
+
setWidth = _useState2[1];
|
28
|
+
var _useState3 = (0, _react.useState)(0),
|
29
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
30
|
+
height = _useState4[0],
|
31
|
+
setHeight = _useState4[1];
|
32
|
+
var throttleTimeout = (0, _react.useRef)(null);
|
33
|
+
var entriesToHandle = (0, _react.useRef)(null);
|
34
|
+
(0, _react.useLayoutEffect)(function () {
|
35
|
+
if (!(ref !== null && ref !== void 0 && ref.current)) {
|
36
|
+
return;
|
37
|
+
}
|
38
|
+
var doCallbacks = function doCallbacks() {
|
39
|
+
if (!(ref !== null && ref !== void 0 && ref.current) || !Array.isArray(entriesToHandle === null || entriesToHandle === void 0 ? void 0 : entriesToHandle.current)) {
|
40
|
+
return;
|
41
|
+
}
|
42
|
+
var entry = entriesToHandle.current[0];
|
43
|
+
setWidth(entry.contentRect.width);
|
44
|
+
setHeight(entry.contentRect.height);
|
45
|
+
throttleTimeout.current = null;
|
46
|
+
callback && callback(entry.contentRect);
|
47
|
+
};
|
48
|
+
var observer = new ResizeObserver(function (entries) {
|
49
|
+
// always update entriesToHandle
|
50
|
+
entriesToHandle.current = entries;
|
51
|
+
if (throttleInterval) {
|
52
|
+
// if a throttleInterval check for running timeout
|
53
|
+
if (throttleTimeout.current === null) {
|
54
|
+
// no live timeout set entries to handle and move on
|
55
|
+
|
56
|
+
// set up throttle
|
57
|
+
throttleTimeout.current = setTimeout(function () {
|
58
|
+
// do callbacks
|
59
|
+
doCallbacks();
|
60
|
+
// reset throttle
|
61
|
+
throttleTimeout.current = null;
|
62
|
+
}, throttleInterval);
|
63
|
+
}
|
64
|
+
} else {
|
65
|
+
// no throttle do callbacks every time
|
66
|
+
doCallbacks();
|
67
|
+
}
|
68
|
+
});
|
69
|
+
|
70
|
+
// observe all refs passed
|
71
|
+
observer.observe(ref.current);
|
72
|
+
return function () {
|
73
|
+
observer.disconnect();
|
74
|
+
observer = null;
|
75
|
+
};
|
76
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
77
|
+
}, [ref, options]);
|
78
|
+
return {
|
79
|
+
width: width,
|
80
|
+
height: height
|
81
|
+
};
|
82
|
+
};
|
83
|
+
exports.useResizeObserver = useResizeObserver;
|
@@ -79,7 +79,15 @@ var defaults = {
|
|
79
79
|
// feature level flags
|
80
80
|
feature: {
|
81
81
|
'a-new-feature': false,
|
82
|
-
'default-portal-target-body': true
|
82
|
+
'default-portal-target-body': true,
|
83
|
+
'Datagrid.useExpandedRow': false,
|
84
|
+
'Datagrid.useNestedRows': false,
|
85
|
+
'Datagrid.useInlineEdit': false,
|
86
|
+
'Datagrid.useActionsColumn': false,
|
87
|
+
'Datagrid.useFiltering': false,
|
88
|
+
'Datagrid.useCustomizeColumns': false,
|
89
|
+
'ExampleComponent.secondaryIcon': false,
|
90
|
+
'ExampleComponent.useExample': false
|
83
91
|
}
|
84
92
|
};
|
85
93
|
var warningMessageComponent = function warningMessageComponent(property) {
|
@@ -88,6 +96,9 @@ var warningMessageComponent = function warningMessageComponent(property) {
|
|
88
96
|
var warningMessageFeature = function warningMessageFeature(property) {
|
89
97
|
return "Carbon for IBM Products (WARNING): Feature \"".concat(property, "\" enabled via feature flags.");
|
90
98
|
};
|
99
|
+
var errorMessageFeature = function errorMessageFeature(property) {
|
100
|
+
return "Carbon for IBM Products (Error): Feature \"".concat(property, "\" not enabled. To enable see the notes on feature flags in the README.");
|
101
|
+
};
|
91
102
|
var warningMessageAllComponents = 'Carbon for IBM Products (WARNING): All components enabled through use of setAllComponents. This includes components that have not yet completed their review process.';
|
92
103
|
var warningMessageAllFeatures = 'Carbon for IBM Products (WARNING): All features enabled through use of setAllFeatures';
|
93
104
|
|
@@ -109,7 +120,10 @@ var allFeatures = all.INITIAL;
|
|
109
120
|
var silent = false;
|
110
121
|
var component = new Proxy(_objectSpread({}, defaults.component), {
|
111
122
|
set: function set(target, property, value) {
|
112
|
-
|
123
|
+
if (target[property] !== true && !silent && value) {
|
124
|
+
// not already true, not silent, and now true
|
125
|
+
console.warn(warningMessageComponent(property));
|
126
|
+
}
|
113
127
|
target[property] = value;
|
114
128
|
return true; // value set
|
115
129
|
},
|
@@ -120,7 +134,15 @@ var component = new Proxy(_objectSpread({}, defaults.component), {
|
|
120
134
|
});
|
121
135
|
var feature = new Proxy(_objectSpread({}, defaults.feature), {
|
122
136
|
set: function set(target, property, value) {
|
123
|
-
|
137
|
+
// If we receive a feature flag that doesn't exist in our defaults we should not log
|
138
|
+
// a warning message and instead just return
|
139
|
+
if (!Object.getOwnPropertyDescriptor(defaults.feature, property)) {
|
140
|
+
return true;
|
141
|
+
}
|
142
|
+
if (target[property] !== true && !silent && value) {
|
143
|
+
// not already true, not silent, and now true
|
144
|
+
console.warn(warningMessageFeature(property));
|
145
|
+
}
|
124
146
|
target[property] = value;
|
125
147
|
return true; // value set
|
126
148
|
},
|
@@ -149,6 +171,14 @@ var _default = {
|
|
149
171
|
var byDefault = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
150
172
|
return byDefault ? defaults.feature[featureName] : feature[featureName];
|
151
173
|
},
|
174
|
+
checkReportFeatureEnabled: function checkReportFeatureEnabled(featureName) {
|
175
|
+
if (feature[featureName]) {
|
176
|
+
// NOTE: Warning emitted if feature flag is enabled (see Proxy above)
|
177
|
+
return true;
|
178
|
+
} else {
|
179
|
+
console.error(errorMessageFeature(featureName));
|
180
|
+
}
|
181
|
+
},
|
152
182
|
isFeaturePublic: function isFeaturePublic(featureName) {
|
153
183
|
var byDefault = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
154
184
|
return Object.prototype.hasOwnProperty.call(byDefault ? defaults.feature : feature, featureName);
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
5
5
|
value: true
|
6
6
|
});
|
7
|
-
exports.scssCompile = exports.scssCheck = exports.required = exports.mockHTMLElement = exports.invalid = exports.expectWarnAsync = exports.expectWarn = exports.expectMultipleWarn = exports.expectMultipleError = exports.expectError = exports.deprecatedUsage = exports.deprecated = void 0;
|
7
|
+
exports.scssCompile = exports.scssCheck = exports.required = exports.mockHTMLElement = exports.invalid = exports.expectWarnAsync = exports.expectWarn = exports.expectMultipleWarn = exports.expectMultipleError = exports.expectLogging = exports.expectError = exports.deprecatedUsage = exports.deprecated = void 0;
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
9
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
10
10
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
@@ -194,6 +194,40 @@ var expectMultipleWarn = function expectMultipleWarn(messages, test) {
|
|
194
194
|
warn.mockRestore();
|
195
195
|
return result;
|
196
196
|
};
|
197
|
+
exports.expectMultipleWarn = expectMultipleWarn;
|
198
|
+
var checkLogging = function checkLogging(mock, message) {
|
199
|
+
if (message) {
|
200
|
+
var _expect4;
|
201
|
+
expect(mock).toBeCalled();
|
202
|
+
(_expect4 = expect(mock)).toHaveBeenCalledWith.apply(_expect4, (0, _toConsumableArray2.default)(makeMatcherArray(message)));
|
203
|
+
}
|
204
|
+
};
|
205
|
+
|
206
|
+
/**
|
207
|
+
* A helper function to enable a test to expect a single call to
|
208
|
+
* console.error, for example when intentionally omitting a required prop
|
209
|
+
* or supplying an invalid prop type or value for the purposes of the test.
|
210
|
+
* @param {errors: {string|regex|function|[]}, warnings: {string|regex|function|[]}} messages the expected parameters for the call to
|
211
|
+
* console.error or console.warn, which must be called exactly once. A single string or regex or an
|
212
|
+
* expect matcher can be used to match a single-argument call to console.error (most common),
|
213
|
+
* while an array of strings and/or regex and/or expect matchers can be used to match a
|
214
|
+
* multiple-argument call. Strings can be full or substring matches to the corresponding
|
215
|
+
* argument.
|
216
|
+
* @param {Function} test the test function to call, during which the call to
|
217
|
+
* console.error will be expected.
|
218
|
+
*/
|
219
|
+
var expectLogging = function expectLogging(_ref2, test) {
|
220
|
+
var errors = _ref2.errors,
|
221
|
+
warnings = _ref2.warnings;
|
222
|
+
var error = jest.spyOn(console, 'error').mockImplementation(jest.fn());
|
223
|
+
var warn = jest.spyOn(console, 'warn').mockImplementation(jest.fn());
|
224
|
+
var result = test();
|
225
|
+
checkLogging(error, errors);
|
226
|
+
checkLogging(warn, warnings);
|
227
|
+
error.mockRestore();
|
228
|
+
warn.mockRestore();
|
229
|
+
return result;
|
230
|
+
};
|
197
231
|
|
198
232
|
/**
|
199
233
|
* A helper function to enable a test to expect a single call to
|
@@ -208,13 +242,11 @@ var expectMultipleWarn = function expectMultipleWarn(messages, test) {
|
|
208
242
|
* @param {Function} test the test function to call, during which the call to
|
209
243
|
* console.error will be expected.
|
210
244
|
*/
|
211
|
-
exports.
|
245
|
+
exports.expectLogging = expectLogging;
|
212
246
|
var expectError = function expectError(message, test) {
|
213
|
-
var _expect4;
|
214
247
|
var error = jest.spyOn(console, 'error').mockImplementation(jest.fn());
|
215
248
|
var result = test();
|
216
|
-
|
217
|
-
(_expect4 = expect(error)).toHaveBeenCalledWith.apply(_expect4, (0, _toConsumableArray2.default)(makeMatcherArray(message)));
|
249
|
+
checkLogging(error, message);
|
218
250
|
error.mockRestore();
|
219
251
|
return result;
|
220
252
|
};
|
package/lib/settings.js
CHANGED
@@ -43,24 +43,22 @@ _packageSettings.default.logDeprecated = function (component, name) {
|
|
43
43
|
// Note that the returned stub carries any other properties which had already
|
44
44
|
// been assigned (eg propTypes, displayName, etc).
|
45
45
|
_packageSettings.default.checkComponentEnabled = function (component, name) {
|
46
|
-
_packageSettings.default.logDeprecated(component, name);
|
47
46
|
if (component.render) {
|
48
47
|
// The component is a forward-ref, so make a stub forward-ref.
|
49
48
|
var forward = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
);
|
49
|
+
_packageSettings.default.logDeprecated(component, name); // may log don't care about result
|
50
|
+
// Replace the stub's render fn so this test only happens once.
|
51
|
+
return (forward.render = _packageSettings.default.isComponentEnabled(name) || !_packageSettings.default.isComponentPublic(name) ?
|
52
|
+
// If the component is enabled, or if it's not a public component,
|
53
|
+
// replace the stub's render fn with the component's render fn.
|
54
|
+
component.render :
|
55
|
+
// Note that Canary is a direct render fn (not a forward-ref) and
|
56
|
+
// will ignore the passed props and ref (if any)
|
57
|
+
_Canary.Canary.bind(undefined, {
|
58
|
+
componentName: name
|
59
|
+
}))(
|
60
|
+
// Call it now (after this it will be directly called).
|
61
|
+
props, ref);
|
64
62
|
});
|
65
63
|
|
66
64
|
// Transfer object properties already assigned (eg propTypes, displayName)
|
@@ -70,22 +68,20 @@ _packageSettings.default.checkComponentEnabled = function (component, name) {
|
|
70
68
|
} else {
|
71
69
|
// The component is a direct render fn, so make a stub render fn.
|
72
70
|
var _render = function render(props) {
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
);
|
71
|
+
_packageSettings.default.logDeprecated(component, name); // may log don't care about result
|
72
|
+
// Replace the stub render fn so this test only happens once.
|
73
|
+
return (_render = _packageSettings.default.isComponentEnabled(name) || !_packageSettings.default.isComponentPublic(name) ?
|
74
|
+
// If the component is enabled, or if it's not a public component,
|
75
|
+
// replace the stub render fn with the component render fn.
|
76
|
+
component :
|
77
|
+
// Replace the stub render fn with the Canary render fn, which will
|
78
|
+
// ignore the passed props.
|
79
|
+
_Canary.Canary.bind(undefined, {
|
80
|
+
componentName: name
|
81
|
+
}))(
|
82
|
+
// Call it now (after this it will be directly called).
|
83
|
+
props);
|
87
84
|
};
|
88
|
-
|
89
85
|
// Transfer object properties already assigned (eg propTypes, displayName)
|
90
86
|
// to a function which calls the stub render fn which checks the component
|
91
87
|
// status when first used.
|