@carbon/ibm-products 1.8.0 → 1.11.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/css/index-full-carbon.css +270 -5656
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +6 -6
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon-released-only.css +58 -3432
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +3 -3
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +238 -3922
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +6 -6
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +238 -3923
- package/css/index.css.map +1 -1
- package/css/index.min.css +6 -6
- package/css/index.min.css.map +1 -1
- package/es/components/AddSelect/AddSelect.js +147 -53
- package/es/components/AddSelect/AddSelectBreadcrumbs.js +4 -4
- package/es/components/AddSelect/AddSelectColumn.js +195 -0
- package/es/components/AddSelect/AddSelectList.js +67 -8
- package/es/components/AddSelect/AddSelectSidebar.js +8 -15
- package/es/components/AddSelect/add-select-utils.js +64 -0
- package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -1
- package/es/components/ButtonMenu/ButtonMenu.js +1 -1
- package/es/components/DataSpreadsheet/DataSpreadsheet.js +505 -167
- package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +244 -17
- package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +74 -8
- package/es/components/DataSpreadsheet/hooks/useMoveActiveCell.js +27 -0
- package/es/components/DataSpreadsheet/hooks/useResetSpreadsheetFocus.js +28 -0
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +41 -0
- package/es/components/DataSpreadsheet/utils/checkActiveHeaderCell.js +34 -0
- package/es/components/DataSpreadsheet/utils/createActiveCellFn.js +58 -0
- package/es/components/DataSpreadsheet/utils/createCellSelectionArea.js +49 -0
- package/es/components/DataSpreadsheet/{generateData.js → utils/generateData.js} +6 -0
- package/es/components/DataSpreadsheet/{getCellSize.js → utils/getCellSize.js} +0 -0
- package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +46 -0
- package/es/components/DataSpreadsheet/utils/handleMultipleKeys.js +82 -0
- package/es/components/DataSpreadsheet/utils/removeCellSelections.js +30 -0
- package/es/components/InlineEdit/InlineEdit.js +80 -39
- package/es/components/OptionsTile/OptionsTile.js +31 -21
- package/es/components/OptionsTile/index.js +1 -1
- package/es/components/PageHeader/PageHeader.js +26 -15
- package/es/components/PageHeader/PageHeaderTitle.js +2 -1
- package/es/components/PageHeader/PageHeaderUtils.js +24 -29
- package/es/components/TagSet/TagSet.js +12 -3
- package/es/components/UserProfileImage/UserProfileImage.js +2 -1
- package/es/global/js/utils/DisplayBox.js +31 -0
- package/es/global/js/utils/deepCloneObject.js +26 -0
- package/lib/components/AddSelect/AddSelect.js +150 -54
- package/lib/components/AddSelect/AddSelectBreadcrumbs.js +2 -3
- package/lib/components/AddSelect/AddSelectColumn.js +219 -0
- package/lib/components/AddSelect/AddSelectList.js +65 -8
- package/lib/components/AddSelect/AddSelectSidebar.js +14 -15
- package/lib/components/AddSelect/add-select-utils.js +78 -0
- package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -1
- package/lib/components/ButtonMenu/ButtonMenu.js +1 -1
- package/lib/components/DataSpreadsheet/DataSpreadsheet.js +514 -170
- package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +251 -18
- package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +82 -9
- package/lib/components/DataSpreadsheet/hooks/useMoveActiveCell.js +37 -0
- package/lib/components/DataSpreadsheet/hooks/useResetSpreadsheetFocus.js +39 -0
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +52 -0
- package/lib/components/DataSpreadsheet/utils/checkActiveHeaderCell.js +45 -0
- package/lib/components/DataSpreadsheet/{createActiveCellFn.js → utils/createActiveCellFn.js} +22 -9
- package/lib/components/DataSpreadsheet/utils/createCellSelectionArea.js +60 -0
- package/lib/components/DataSpreadsheet/{generateData.js → utils/generateData.js} +6 -0
- package/lib/components/DataSpreadsheet/{getCellSize.js → utils/getCellSize.js} +0 -0
- package/lib/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +59 -0
- package/lib/components/DataSpreadsheet/utils/handleMultipleKeys.js +92 -0
- package/lib/components/DataSpreadsheet/utils/removeCellSelections.js +41 -0
- package/lib/components/InlineEdit/InlineEdit.js +82 -40
- package/lib/components/OptionsTile/OptionsTile.js +30 -20
- package/lib/components/PageHeader/PageHeader.js +25 -15
- package/lib/components/PageHeader/PageHeaderTitle.js +2 -1
- package/lib/components/PageHeader/PageHeaderUtils.js +24 -29
- package/lib/components/TagSet/TagSet.js +13 -3
- package/lib/components/UserProfileImage/UserProfileImage.js +2 -1
- package/lib/global/js/utils/DisplayBox.js +46 -0
- package/lib/global/js/utils/deepCloneObject.js +37 -0
- package/package.json +17 -17
- package/scss/components/ActionBar/_storybook-styles.scss +8 -0
- package/scss/components/ActionSet/_storybook-styles.scss +1 -3
- package/scss/components/AddSelect/_add-select.scss +99 -14
- package/scss/components/BreadcrumbWithOverflow/_breadcrumb-with-overflow.scss +7 -3
- package/scss/components/BreadcrumbWithOverflow/_storybook-styles.scss +8 -0
- package/scss/components/ButtonSetWithOverflow/_storybook-styles.scss +8 -0
- package/scss/components/CreateInfluencer/_create-influencer.scss +2 -0
- package/scss/components/CreateModal/_create-modal.scss +1 -0
- package/scss/components/CreateSidePanel/_create-side-panel.scss +1 -1
- package/scss/components/CreateSidePanel/_storybook-styles.scss +1 -1
- package/scss/components/CreateTearsheet/_create-tearsheet.scss +1 -0
- package/scss/components/CreateTearsheetNarrow/_create-tearsheet-narrow.scss +1 -0
- package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +42 -6
- package/scss/components/EditSidePanel/_edit-side-panel.scss +9 -0
- package/scss/components/EditSidePanel/_storybook-styles.scss +1 -1
- package/scss/components/InlineEdit/_inline-edit.scss +53 -43
- package/scss/components/InlineEdit/_storybook-styles.scss +2 -0
- package/scss/components/LoadingBar/_loading-bar.scss +13 -0
- package/scss/components/NotificationsPanel/_notifications-panel.scss +3 -0
- package/scss/components/OptionsTile/_index.scss +1 -1
- package/scss/components/OptionsTile/_options-tile.scss +17 -17
- package/scss/components/OptionsTile/_storybook-styles.scss +4 -4
- package/scss/components/PageHeader/_page-header.scss +5 -2
- package/scss/components/SidePanel/_side-panel.scss +19 -12
- package/scss/components/StatusIcon/_status-icon.scss +1 -0
- package/scss/components/TagSet/_storybook-styles.scss +8 -0
- package/scss/components/Tearsheet/_tearsheet.scss +1 -2
- package/scss/components/UserProfileImage/_user-profile-image.scss +9 -0
- package/scss/components/WebTerminal/_web-terminal.scss +2 -0
- package/scss/global/styles/_display-box.scss +62 -0
- package/es/components/DataSpreadsheet/createActiveCellFn.js +0 -45
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
3
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
4
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
5
|
-
var _excluded = ["actionBarItems", "actionBarMenuOptionsClass", "actionBarOverflowAriaLabel", "allTagsModalSearchLabel", "allTagsModalSearchPlaceholderText", "allTagsModalTitle", "hasBackgroundAlways", "breadcrumbOverflowAriaLabel", "breadcrumbs", "children", "className", "collapseHeader", "collapseHeaderIconDescription", "collapseTitle", "disableBreadcrumbScroll", "expandHeaderIconDescription", "fullWidthGrid", "hasCollapseHeaderToggle", "narrowGrid", "navigation", "pageActions", "pageActionsOverflowLabel", "pageActionsMenuOptionsClass", "showAllTagsLabel", "subtitle", "tags", "title", "withoutBackground"];
|
|
5
|
+
var _excluded = ["actionBarItems", "actionBarMenuOptionsClass", "actionBarOverflowAriaLabel", "allTagsModalSearchLabel", "allTagsModalSearchPlaceholderText", "allTagsModalTitle", "hasBackgroundAlways", "breadcrumbOverflowAriaLabel", "breadcrumbs", "children", "className", "collapseHeader", "collapseHeaderIconDescription", "collapseTitle", "disableBreadcrumbScroll", "enableBreadcrumbScroll", "expandHeaderIconDescription", "fullWidthGrid", "hasCollapseHeaderToggle", "narrowGrid", "navigation", "pageActions", "pageActionsOverflowLabel", "pageActionsMenuOptionsClass", "showAllTagsLabel", "subtitle", "tags", "title", "withoutBackground"];
|
|
6
6
|
|
|
7
7
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
8
8
|
|
|
@@ -20,6 +20,7 @@ import { layout05, baseFontSize } from '@carbon/layout';
|
|
|
20
20
|
import cx from 'classnames';
|
|
21
21
|
import { useResizeDetector } from 'react-resize-detector';
|
|
22
22
|
import { Grid, Column, Row, Button, Tag } from 'carbon-components-react';
|
|
23
|
+
import { breakpoints } from '@carbon/layout';
|
|
23
24
|
import { useWindowResize, useNearestScroll } from '../../global/js/hooks';
|
|
24
25
|
import { getDevtoolsProps } from '../../global/js/utils/devtools';
|
|
25
26
|
import { deprecateProp, prepareProps } from '../../global/js/utils/props-helper';
|
|
@@ -38,7 +39,7 @@ var defaults = {
|
|
|
38
39
|
narrowGrid: false
|
|
39
40
|
};
|
|
40
41
|
export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
41
|
-
var _withoutBackground, _ref6, _cx2, _ref7, _cx4, _cx7;
|
|
42
|
+
var _withoutBackground, _enableBreadcrumbScro, _ref6, _cx2, _ref7, _cx4, _cx7;
|
|
42
43
|
|
|
43
44
|
var actionBarItems = _ref.actionBarItems,
|
|
44
45
|
actionBarMenuOptionsClass = _ref.actionBarMenuOptionsClass,
|
|
@@ -54,7 +55,8 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
54
55
|
collapseHeader = _ref.collapseHeader,
|
|
55
56
|
collapseHeaderIconDescription = _ref.collapseHeaderIconDescription,
|
|
56
57
|
collapseTitle = _ref.collapseTitle,
|
|
57
|
-
|
|
58
|
+
deprecated_disableBreadcrumbScroll = _ref.disableBreadcrumbScroll,
|
|
59
|
+
enableBreadcrumbScroll = _ref.enableBreadcrumbScroll,
|
|
58
60
|
expandHeaderIconDescription = _ref.expandHeaderIconDescription,
|
|
59
61
|
_ref$fullWidthGrid = _ref.fullWidthGrid,
|
|
60
62
|
fullWidthGrid = _ref$fullWidthGrid === void 0 ? defaults.fullWidthGrid : _ref$fullWidthGrid,
|
|
@@ -73,8 +75,10 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
73
75
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
74
76
|
|
|
75
77
|
// handle deprecated props - START
|
|
76
|
-
// if withoutBackground is
|
|
77
|
-
(_withoutBackground = withoutBackground) !== null && _withoutBackground !== void 0 ? _withoutBackground : withoutBackground = !(deprecated_hasBackgroundAlways !== null && deprecated_hasBackgroundAlways !== void 0 ? deprecated_hasBackgroundAlways : true); //
|
|
78
|
+
// if withoutBackground is nullish check deprecated_hasBackgroundAlways and default false
|
|
79
|
+
(_withoutBackground = withoutBackground) !== null && _withoutBackground !== void 0 ? _withoutBackground : withoutBackground = !(deprecated_hasBackgroundAlways !== null && deprecated_hasBackgroundAlways !== void 0 ? deprecated_hasBackgroundAlways : true); // prefer enabled if nullish check deprecated_disableBreadcrumbScroll and default false
|
|
80
|
+
|
|
81
|
+
(_enableBreadcrumbScro = enableBreadcrumbScroll) !== null && _enableBreadcrumbScro !== void 0 ? _enableBreadcrumbScro : enableBreadcrumbScroll = !(deprecated_disableBreadcrumbScroll !== null && deprecated_disableBreadcrumbScroll !== void 0 ? deprecated_disableBreadcrumbScroll : true); // handle deprecated props - END
|
|
78
82
|
|
|
79
83
|
var _useState = useState({}),
|
|
80
84
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -96,7 +100,7 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
96
100
|
var hasBreadcrumbRow = !!breadcrumbs || !!actionBarItems; // utility functions
|
|
97
101
|
|
|
98
102
|
var checkUpdateVerticalSpace = function checkUpdateVerticalSpace() {
|
|
99
|
-
return utilCheckUpdateVerticalSpace(headerRef, offsetTopMeasuringRef, navigation,
|
|
103
|
+
return utilCheckUpdateVerticalSpace(headerRef, offsetTopMeasuringRef, navigation, enableBreadcrumbScroll, hasActionBar, widthIsNarrow, setMetrics);
|
|
100
104
|
}; // NOTE: The buffer is used to add space between the bottom of the header and the last content
|
|
101
105
|
// Not pre-collapsed and (subtitle or children)
|
|
102
106
|
|
|
@@ -215,6 +219,7 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
215
219
|
|
|
216
220
|
|
|
217
221
|
useEffect(function () {
|
|
222
|
+
/* istanbul ignore else */
|
|
218
223
|
if (pageActions !== null && pageActions !== void 0 && pageActions.content) {
|
|
219
224
|
var minWidth = pageActions.minWidth,
|
|
220
225
|
maxWidth = pageActions.maxWidth;
|
|
@@ -272,8 +277,9 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
272
277
|
return _objectSpread(_objectSpread({}, prev), {}, (_objectSpread3 = {}, _defineProperty(_objectSpread3, "--".concat(blockClass, "--height-px"), "".concat(metrics.headerHeight, "px")), _defineProperty(_objectSpread3, "--".concat(blockClass, "--width-px"), "".concat(metrics.headerWidth, "px")), _defineProperty(_objectSpread3, "--".concat(blockClass, "--header-top"), "".concat(metrics.headerTopValue + metrics.headerOffset, "px")), _defineProperty(_objectSpread3, "--".concat(blockClass, "--breadcrumb-title-visibility"), scrollYValue > 0 ? 'visible' : 'hidden'), _defineProperty(_objectSpread3, "--".concat(blockClass, "--scroll"), "".concat(scrollYValue)), _defineProperty(_objectSpread3, "--".concat(blockClass, "--breadcrumb-title-top"), "".concat(Math.max(0, metrics.breadcrumbTitleHeight + metrics.titleRowSpaceAbove - scrollYValue), "px")), _defineProperty(_objectSpread3, "--".concat(blockClass, "--breadcrumb-title-opacity"), "".concat(Math.min(1, Math.max(0, (scrollYValue - (metrics.titleRowSpaceAbove || 0)) / (metrics.breadcrumbTitleHeight || 1) // don't want to divide by zero
|
|
273
278
|
)))), _defineProperty(_objectSpread3, "--".concat(blockClass, "--breadcrumb-row-width-px"), "".concat(metrics.breadcrumbRowWidth, "px")), _objectSpread3));
|
|
274
279
|
});
|
|
275
|
-
}, [headerRef,
|
|
280
|
+
}, [headerRef, enableBreadcrumbScroll, metrics, metrics.breadcrumbRowHeight, metrics.breadcrumbRowSpaceBelow, metrics.breadcrumbTitleHeight, metrics.breadcrumbRowWidth, metrics.headerHeight, metrics.headerWidth, metrics.headerOffset, metrics.headerTopValue, metrics.navigationRowHeight, navigation, scrollYValue, tags]);
|
|
276
281
|
useNearestScroll(headerRef, // on scroll or various layout changes check updates if needed
|
|
282
|
+
// istanbul ignore next
|
|
277
283
|
function (_ref4) {
|
|
278
284
|
var current = _ref4.current;
|
|
279
285
|
setPageHeaderStyles(function (prev) {
|
|
@@ -290,13 +296,13 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
290
296
|
document.documentElement.style.setProperty("--".concat(blockClass, "--tagset-tooltip-position"), fullyCollapsed ? 'fixed' : 'absolute');
|
|
291
297
|
document.documentElement.style.setProperty("--".concat(blockClass, "--tagset-tooltip-offset"), "".concat(tagsetTooltipOffset, "px"));
|
|
292
298
|
setScrollYValue(current.scrollY);
|
|
293
|
-
}, [metrics.headerHeight, metrics.headerTopValue, metrics.headerOffset,
|
|
299
|
+
}, [metrics.headerHeight, metrics.headerTopValue, metrics.headerOffset, enableBreadcrumbScroll]);
|
|
294
300
|
useWindowResize(function (_ref5) {
|
|
295
301
|
var current = _ref5.current;
|
|
296
302
|
// on window resize and other updates some values may have changed
|
|
297
303
|
checkUpdateVerticalSpace();
|
|
298
|
-
setWidthIsNarrow(current.innerWidth <
|
|
299
|
-
}, [actionBarItems, children, breadcrumbs,
|
|
304
|
+
setWidthIsNarrow(current.innerWidth < breakpoints.md.width); // small (below medium) media query
|
|
305
|
+
}, [actionBarItems, children, breadcrumbs, enableBreadcrumbScroll, navigation, pageActions, subtitle, tags, title]);
|
|
300
306
|
useEffect(function () {
|
|
301
307
|
checkUpdateVerticalSpace(); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
302
308
|
}, [fullWidthGrid, narrowGrid]);
|
|
@@ -334,7 +340,7 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
334
340
|
|
|
335
341
|
var nextToTabsCheck = function nextToTabsCheck() {
|
|
336
342
|
/* istanbul ignore next */
|
|
337
|
-
return
|
|
343
|
+
return enableBreadcrumbScroll && !actionBarItems && scrollYValue + metrics.headerTopValue >= 0;
|
|
338
344
|
};
|
|
339
345
|
|
|
340
346
|
useEffect(function () {
|
|
@@ -425,7 +431,7 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
425
431
|
showAllTagsLabel: showAllTagsLabel,
|
|
426
432
|
tags: tags,
|
|
427
433
|
overflowClassName: "".concat(blockClass, "__navigation-tags-overflow")
|
|
428
|
-
}))) : null), // this navigation pushes the breadcrumb off or settles underneath it depending on
|
|
434
|
+
}))) : null), // this navigation pushes the breadcrumb off or settles underneath it depending on enableBreadcrumbScroll
|
|
429
435
|
navigation ? /*#__PURE__*/React.createElement(Row, {
|
|
430
436
|
className: cx("".concat(blockClass, "__navigation-row"), (_cx7 = {}, _defineProperty(_cx7, "".concat(blockClass, "__navigation-row--spacing-above-06"), !!navigation), _defineProperty(_cx7, "".concat(blockClass, "__navigation-row--has-tags"), tags), _cx7))
|
|
431
437
|
}, /*#__PURE__*/React.createElement(Column, {
|
|
@@ -497,6 +503,11 @@ var TYPES = {
|
|
|
497
503
|
};
|
|
498
504
|
var tagTypes = Object.keys(TYPES);
|
|
499
505
|
export var deprecatedProps = {
|
|
506
|
+
/**
|
|
507
|
+
* **Deprecated** see property `enableBreadcrumbScroll`
|
|
508
|
+
*/
|
|
509
|
+
disableBreadcrumbScroll: deprecateProp(PropTypes.bool, 'Property replaced by `enableBreadcrumbScroll`'),
|
|
510
|
+
|
|
500
511
|
/**
|
|
501
512
|
* **Deprecated** see property `withoutBackground`
|
|
502
513
|
*/
|
|
@@ -645,10 +656,10 @@ PageHeader.propTypes = _objectSpread({
|
|
|
645
656
|
collapseTitle: PropTypes.bool,
|
|
646
657
|
|
|
647
658
|
/**
|
|
648
|
-
* Standard
|
|
649
|
-
*
|
|
659
|
+
* Standard keeps the breadcrumb on the page. This option allows the breadcrumb
|
|
660
|
+
* to scroll off
|
|
650
661
|
*/
|
|
651
|
-
|
|
662
|
+
enableBreadcrumbScroll: PropTypes.bool,
|
|
652
663
|
|
|
653
664
|
/**
|
|
654
665
|
* If `hasCollapseHeaderToggle` is set and `withoutBackground` is unset/falsy then assistive text is
|
|
@@ -55,7 +55,8 @@ export var PageHeaderTitle = function PageHeaderTitle(_ref) {
|
|
|
55
55
|
onSave: onSave,
|
|
56
56
|
labelText: editableLabel,
|
|
57
57
|
revertDescription: revertDescription,
|
|
58
|
-
saveDescription: saveDescription
|
|
58
|
+
saveDescription: saveDescription,
|
|
59
|
+
buttonTooltipPosition: "bottom"
|
|
59
60
|
}, rest)) : /*#__PURE__*/React.createElement("span", {
|
|
60
61
|
title: !loading ? asText : null
|
|
61
62
|
}, text));
|
|
@@ -21,13 +21,13 @@ export var blockClass = "".concat(pkg.prefix, "--page-header");
|
|
|
21
21
|
* @param {{}} headerRef
|
|
22
22
|
* @param {{}} offsetTopMeasuringRef
|
|
23
23
|
* @param {{}} navigation
|
|
24
|
-
* @param {boolean}
|
|
24
|
+
* @param {boolean} enableBreadcrumbScroll
|
|
25
25
|
* @param {boolean} hasActionBar
|
|
26
26
|
* @param {boolean} widthIsNarrow
|
|
27
27
|
* @param {()} setMetrics
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
|
-
export var utilCheckUpdateVerticalSpace = function utilCheckUpdateVerticalSpace(headerRef, offsetTopMeasuringRef, navigation,
|
|
30
|
+
export var utilCheckUpdateVerticalSpace = function utilCheckUpdateVerticalSpace(headerRef, offsetTopMeasuringRef, navigation, enableBreadcrumbScroll, hasActionBar, widthIsNarrow, setMetrics) {
|
|
31
31
|
var dynamicRefs = {};
|
|
32
32
|
|
|
33
33
|
var getDynamicRef = function getDynamicRef(selector) {
|
|
@@ -75,7 +75,10 @@ export var utilCheckUpdateVerticalSpace = function utilCheckUpdateVerticalSpace(
|
|
|
75
75
|
var scrollableContainer = scrollableAncestor(headerRef.current);
|
|
76
76
|
/* istanbul ignore next */
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
var scrollableContainerTop = scrollableContainer ? scrollableContainer.scrollTop - scrollableContainer.offsetTop : 0; // The header offset calculation is either going to work out at 0 if we have no gap between scrolling container
|
|
79
|
+
// top and the measuring ref top, or the difference between. It does not change on scroll or resize.
|
|
80
|
+
|
|
81
|
+
update.headerOffset = scrollableContainerTop + offsetTopMeasuringRef.current.getBoundingClientRect().top;
|
|
79
82
|
/* istanbul ignore next */
|
|
80
83
|
|
|
81
84
|
update.breadcrumbRowHeight = breadcrumbRowEl ? breadcrumbRowEl.clientHeight : 0;
|
|
@@ -112,42 +115,34 @@ export var utilCheckUpdateVerticalSpace = function utilCheckUpdateVerticalSpace(
|
|
|
112
115
|
update.headerTopValue += 8;
|
|
113
116
|
}
|
|
114
117
|
|
|
115
|
-
if (
|
|
118
|
+
if (!enableBreadcrumbScroll || !navigation) {
|
|
116
119
|
// adjust sticky top if no navigation or breadcrumb is to stay on screen
|
|
117
120
|
update.headerTopValue += update.breadcrumbRowHeight;
|
|
118
|
-
}
|
|
119
|
-
if (navigation && !widthIsNarrow) {
|
|
120
|
-
update.headerTopValue -= 8;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
121
|
+
} // if (window) {
|
|
123
122
|
|
|
124
|
-
if (window) {
|
|
125
|
-
var val;
|
|
126
|
-
/* don't know how to test resize */
|
|
127
123
|
|
|
128
|
-
|
|
124
|
+
var val;
|
|
125
|
+
/* don't know how to test resize */
|
|
129
126
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
127
|
+
/* istanbul ignore if */
|
|
128
|
+
|
|
129
|
+
if (breadcrumbRowEl) {
|
|
130
|
+
val = parseFloat(window.getComputedStyle(breadcrumbRowEl).getPropertyValue('margin-bottom'), 10);
|
|
131
|
+
update.breadcrumbRowSpaceBelow = isNaN(val) ? 0 : val;
|
|
132
|
+
}
|
|
133
|
+
/* don't know how to test resize */
|
|
135
134
|
|
|
136
|
-
|
|
135
|
+
/* istanbul ignore if */
|
|
137
136
|
|
|
138
137
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
138
|
+
if (titleRowEl) {
|
|
139
|
+
val = parseFloat(window.getComputedStyle(titleRowEl).getPropertyValue('margin-top'), 10);
|
|
140
|
+
update.titleRowSpaceAbove = isNaN(val) ? 0 : val;
|
|
142
141
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
142
|
+
if (pageActionsEl) {
|
|
143
|
+
val = parseFloat(window.getComputedStyle(pageActionsEl).getPropertyValue('margin-top'), 10);
|
|
144
|
+
update.pageActionsSpaceAbove = titleRowEl.clientHeight - pageActionsEl.clientHeight + update.titleRowSpaceAbove - (isNaN(val) ? 0 : val);
|
|
147
145
|
}
|
|
148
|
-
} else {
|
|
149
|
-
update.breadcrumbRowSpaceBelow = 0;
|
|
150
|
-
update.titleRowSpaceAbove = 0;
|
|
151
146
|
}
|
|
152
147
|
|
|
153
148
|
return _objectSpread(_objectSpread({}, previous), update);
|
|
@@ -2,7 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
2
2
|
import _extends from "@babel/runtime/helpers/extends";
|
|
3
3
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
4
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
5
|
-
var _excluded = ["align", "className", "maxVisible", "overflowAlign", "overflowClassName", "overflowDirection", "allTagsModalTitle", "allTagsModalSearchLabel", "allTagsModalSearchPlaceholderText", "showAllTagsLabel", "tags"],
|
|
5
|
+
var _excluded = ["align", "allTagsModalTarget", "className", "maxVisible", "overflowAlign", "overflowClassName", "overflowDirection", "allTagsModalTitle", "allTagsModalSearchLabel", "allTagsModalSearchPlaceholderText", "showAllTagsLabel", "tags"],
|
|
6
6
|
_excluded2 = ["label", "id"],
|
|
7
7
|
_excluded3 = ["label"];
|
|
8
8
|
|
|
@@ -17,6 +17,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
17
17
|
// LICENSE file in the root directory of this source tree.
|
|
18
18
|
//
|
|
19
19
|
import React, { useState, useEffect, useRef, useCallback } from 'react';
|
|
20
|
+
import { createPortal } from 'react-dom';
|
|
20
21
|
import PropTypes from 'prop-types';
|
|
21
22
|
import cx from 'classnames';
|
|
22
23
|
import { TagSetOverflow } from './TagSetOverflow';
|
|
@@ -32,12 +33,15 @@ var allTagsModalSearchThreshold = 10; // Default values for props
|
|
|
32
33
|
|
|
33
34
|
var defaults = {
|
|
34
35
|
align: 'start',
|
|
36
|
+
allTagsModalTarget: document.body,
|
|
35
37
|
overflowAlign: 'center',
|
|
36
38
|
overflowDirection: 'bottom'
|
|
37
39
|
};
|
|
38
40
|
export var TagSet = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
39
41
|
var _ref$align = _ref.align,
|
|
40
42
|
align = _ref$align === void 0 ? defaults.align : _ref$align,
|
|
43
|
+
_ref$allTagsModalTarg = _ref.allTagsModalTarget,
|
|
44
|
+
allTagsModalTarget = _ref$allTagsModalTarg === void 0 ? defaults.allTagsModalTarget : _ref$allTagsModalTarg,
|
|
41
45
|
className = _ref.className,
|
|
42
46
|
maxVisible = _ref.maxVisible,
|
|
43
47
|
_ref$overflowAlign = _ref.overflowAlign,
|
|
@@ -224,14 +228,14 @@ export var TagSet = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
224
228
|
}, hiddenSizingTags), /*#__PURE__*/React.createElement("div", {
|
|
225
229
|
className: "".concat(blockClass, "__tag-container"),
|
|
226
230
|
ref: displayedArea
|
|
227
|
-
}, displayedTags)), tags && displayCount < tags.length ? /*#__PURE__*/React.createElement(TagSetModal, {
|
|
231
|
+
}, displayedTags)), allTagsModalTarget && tags && displayCount < tags.length ? /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(TagSetModal, {
|
|
228
232
|
allTags: tags,
|
|
229
233
|
open: showAllModalOpen,
|
|
230
234
|
title: allTagsModalTitle,
|
|
231
235
|
onClose: handleModalClose,
|
|
232
236
|
searchLabel: allTagsModalSearchLabel,
|
|
233
237
|
searchPlaceholder: allTagsModalSearchPlaceholderText
|
|
234
|
-
}) : null);
|
|
238
|
+
}), allTagsModalTarget) : null);
|
|
235
239
|
}); // Return a placeholder if not released and not enabled by feature flag
|
|
236
240
|
|
|
237
241
|
TagSet = pkg.checkComponentEnabled(TagSet, componentName);
|
|
@@ -276,6 +280,11 @@ TagSet.propTypes = {
|
|
|
276
280
|
*/
|
|
277
281
|
allTagsModalSearchPlaceholderText: string_required_if_more_than_10_tags,
|
|
278
282
|
|
|
283
|
+
/**
|
|
284
|
+
* portal target for the all tags modal
|
|
285
|
+
*/
|
|
286
|
+
allTagsModalTarget: PropTypes.node,
|
|
287
|
+
|
|
279
288
|
/**
|
|
280
289
|
* title for the show all modal. **Note: Required if more than 10 tags**
|
|
281
290
|
*/
|
|
@@ -78,7 +78,8 @@ export var UserProfileImage = /*#__PURE__*/React.forwardRef(function (_ref, ref)
|
|
|
78
78
|
};
|
|
79
79
|
|
|
80
80
|
return FillItem && (tooltipText ? /*#__PURE__*/React.createElement(TooltipIcon, {
|
|
81
|
-
tooltipText: tooltipText
|
|
81
|
+
tooltipText: tooltipText,
|
|
82
|
+
className: "".concat(blockClass, "__tooltip")
|
|
82
83
|
}, renderUserProfileImage()) : renderUserProfileImage());
|
|
83
84
|
}); // Return a placeholder if not released and not enabled by feature flag
|
|
84
85
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2022, 2022
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import PropTypes from 'prop-types';
|
|
8
|
+
import React from 'react';
|
|
9
|
+
import cx from 'classnames';
|
|
10
|
+
var blockClass = 'ccs-sb--display-box';
|
|
11
|
+
export var DisplayBox = function DisplayBox(_ref) {
|
|
12
|
+
var children = _ref.children,
|
|
13
|
+
className = _ref.className,
|
|
14
|
+
msg = _ref.msg;
|
|
15
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
16
|
+
className: cx(blockClass, className)
|
|
17
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
18
|
+
className: "".concat(blockClass, "__indicator")
|
|
19
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
20
|
+
className: "".concat(blockClass, "__message")
|
|
21
|
+
}, msg || /*#__PURE__*/React.createElement(React.Fragment, null, "width available to component", /*#__PURE__*/React.createElement("br", null), "(use containerWidth control to adjust)")), /*#__PURE__*/React.createElement("div", {
|
|
22
|
+
className: "".concat(blockClass, "__indicator--left")
|
|
23
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
24
|
+
className: "".concat(blockClass, "__indicator--right")
|
|
25
|
+
})), children);
|
|
26
|
+
};
|
|
27
|
+
DisplayBox.propTypes = {
|
|
28
|
+
children: PropTypes.node,
|
|
29
|
+
className: PropTypes.string,
|
|
30
|
+
msg: PropTypes.node
|
|
31
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import _typeof from "@babel/runtime/helpers/typeof";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Copyright IBM Corp. 2022, 2022
|
|
5
|
+
*
|
|
6
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
7
|
+
* LICENSE file in the root directory of this source tree.
|
|
8
|
+
*/
|
|
9
|
+
// Utility to return a deep clone of a nested object or array.
|
|
10
|
+
export var deepCloneObject = function deepCloneObject(objectToClone) {
|
|
11
|
+
// Return the value if objectToClone is not an object
|
|
12
|
+
if (_typeof(objectToClone) !== 'object' || objectToClone === null) {
|
|
13
|
+
return objectToClone;
|
|
14
|
+
} // Create a new array/object to hold the values
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
var clonedObject = Array.isArray(objectToClone) ? [] : {};
|
|
18
|
+
|
|
19
|
+
for (var key in objectToClone) {
|
|
20
|
+
var value = objectToClone[key]; // Recursively check for nested objects/arrays
|
|
21
|
+
|
|
22
|
+
clonedObject[key] = deepCloneObject(value);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return clonedObject;
|
|
26
|
+
};
|