@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.
Files changed (111) hide show
  1. package/css/index-full-carbon.css +270 -5656
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +6 -6
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +58 -3432
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +3 -3
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +238 -3922
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +6 -6
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +238 -3923
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +6 -6
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/AddSelect/AddSelect.js +147 -53
  18. package/es/components/AddSelect/AddSelectBreadcrumbs.js +4 -4
  19. package/es/components/AddSelect/AddSelectColumn.js +195 -0
  20. package/es/components/AddSelect/AddSelectList.js +67 -8
  21. package/es/components/AddSelect/AddSelectSidebar.js +8 -15
  22. package/es/components/AddSelect/add-select-utils.js +64 -0
  23. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -1
  24. package/es/components/ButtonMenu/ButtonMenu.js +1 -1
  25. package/es/components/DataSpreadsheet/DataSpreadsheet.js +505 -167
  26. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +244 -17
  27. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +74 -8
  28. package/es/components/DataSpreadsheet/hooks/useMoveActiveCell.js +27 -0
  29. package/es/components/DataSpreadsheet/hooks/useResetSpreadsheetFocus.js +28 -0
  30. package/es/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +41 -0
  31. package/es/components/DataSpreadsheet/utils/checkActiveHeaderCell.js +34 -0
  32. package/es/components/DataSpreadsheet/utils/createActiveCellFn.js +58 -0
  33. package/es/components/DataSpreadsheet/utils/createCellSelectionArea.js +49 -0
  34. package/es/components/DataSpreadsheet/{generateData.js → utils/generateData.js} +6 -0
  35. package/es/components/DataSpreadsheet/{getCellSize.js → utils/getCellSize.js} +0 -0
  36. package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +46 -0
  37. package/es/components/DataSpreadsheet/utils/handleMultipleKeys.js +82 -0
  38. package/es/components/DataSpreadsheet/utils/removeCellSelections.js +30 -0
  39. package/es/components/InlineEdit/InlineEdit.js +80 -39
  40. package/es/components/OptionsTile/OptionsTile.js +31 -21
  41. package/es/components/OptionsTile/index.js +1 -1
  42. package/es/components/PageHeader/PageHeader.js +26 -15
  43. package/es/components/PageHeader/PageHeaderTitle.js +2 -1
  44. package/es/components/PageHeader/PageHeaderUtils.js +24 -29
  45. package/es/components/TagSet/TagSet.js +12 -3
  46. package/es/components/UserProfileImage/UserProfileImage.js +2 -1
  47. package/es/global/js/utils/DisplayBox.js +31 -0
  48. package/es/global/js/utils/deepCloneObject.js +26 -0
  49. package/lib/components/AddSelect/AddSelect.js +150 -54
  50. package/lib/components/AddSelect/AddSelectBreadcrumbs.js +2 -3
  51. package/lib/components/AddSelect/AddSelectColumn.js +219 -0
  52. package/lib/components/AddSelect/AddSelectList.js +65 -8
  53. package/lib/components/AddSelect/AddSelectSidebar.js +14 -15
  54. package/lib/components/AddSelect/add-select-utils.js +78 -0
  55. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -1
  56. package/lib/components/ButtonMenu/ButtonMenu.js +1 -1
  57. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +514 -170
  58. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +251 -18
  59. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +82 -9
  60. package/lib/components/DataSpreadsheet/hooks/useMoveActiveCell.js +37 -0
  61. package/lib/components/DataSpreadsheet/hooks/useResetSpreadsheetFocus.js +39 -0
  62. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +52 -0
  63. package/lib/components/DataSpreadsheet/utils/checkActiveHeaderCell.js +45 -0
  64. package/lib/components/DataSpreadsheet/{createActiveCellFn.js → utils/createActiveCellFn.js} +22 -9
  65. package/lib/components/DataSpreadsheet/utils/createCellSelectionArea.js +60 -0
  66. package/lib/components/DataSpreadsheet/{generateData.js → utils/generateData.js} +6 -0
  67. package/lib/components/DataSpreadsheet/{getCellSize.js → utils/getCellSize.js} +0 -0
  68. package/lib/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +59 -0
  69. package/lib/components/DataSpreadsheet/utils/handleMultipleKeys.js +92 -0
  70. package/lib/components/DataSpreadsheet/utils/removeCellSelections.js +41 -0
  71. package/lib/components/InlineEdit/InlineEdit.js +82 -40
  72. package/lib/components/OptionsTile/OptionsTile.js +30 -20
  73. package/lib/components/PageHeader/PageHeader.js +25 -15
  74. package/lib/components/PageHeader/PageHeaderTitle.js +2 -1
  75. package/lib/components/PageHeader/PageHeaderUtils.js +24 -29
  76. package/lib/components/TagSet/TagSet.js +13 -3
  77. package/lib/components/UserProfileImage/UserProfileImage.js +2 -1
  78. package/lib/global/js/utils/DisplayBox.js +46 -0
  79. package/lib/global/js/utils/deepCloneObject.js +37 -0
  80. package/package.json +17 -17
  81. package/scss/components/ActionBar/_storybook-styles.scss +8 -0
  82. package/scss/components/ActionSet/_storybook-styles.scss +1 -3
  83. package/scss/components/AddSelect/_add-select.scss +99 -14
  84. package/scss/components/BreadcrumbWithOverflow/_breadcrumb-with-overflow.scss +7 -3
  85. package/scss/components/BreadcrumbWithOverflow/_storybook-styles.scss +8 -0
  86. package/scss/components/ButtonSetWithOverflow/_storybook-styles.scss +8 -0
  87. package/scss/components/CreateInfluencer/_create-influencer.scss +2 -0
  88. package/scss/components/CreateModal/_create-modal.scss +1 -0
  89. package/scss/components/CreateSidePanel/_create-side-panel.scss +1 -1
  90. package/scss/components/CreateSidePanel/_storybook-styles.scss +1 -1
  91. package/scss/components/CreateTearsheet/_create-tearsheet.scss +1 -0
  92. package/scss/components/CreateTearsheetNarrow/_create-tearsheet-narrow.scss +1 -0
  93. package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +42 -6
  94. package/scss/components/EditSidePanel/_edit-side-panel.scss +9 -0
  95. package/scss/components/EditSidePanel/_storybook-styles.scss +1 -1
  96. package/scss/components/InlineEdit/_inline-edit.scss +53 -43
  97. package/scss/components/InlineEdit/_storybook-styles.scss +2 -0
  98. package/scss/components/LoadingBar/_loading-bar.scss +13 -0
  99. package/scss/components/NotificationsPanel/_notifications-panel.scss +3 -0
  100. package/scss/components/OptionsTile/_index.scss +1 -1
  101. package/scss/components/OptionsTile/_options-tile.scss +17 -17
  102. package/scss/components/OptionsTile/_storybook-styles.scss +4 -4
  103. package/scss/components/PageHeader/_page-header.scss +5 -2
  104. package/scss/components/SidePanel/_side-panel.scss +19 -12
  105. package/scss/components/StatusIcon/_status-icon.scss +1 -0
  106. package/scss/components/TagSet/_storybook-styles.scss +8 -0
  107. package/scss/components/Tearsheet/_tearsheet.scss +1 -2
  108. package/scss/components/UserProfileImage/_user-profile-image.scss +9 -0
  109. package/scss/components/WebTerminal/_web-terminal.scss +2 -0
  110. package/scss/global/styles/_display-box.scss +62 -0
  111. 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
- disableBreadcrumbScroll = _ref.disableBreadcrumbScroll,
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 null check deprecated_hasBackgroundAlways and default false
77
- (_withoutBackground = withoutBackground) !== null && _withoutBackground !== void 0 ? _withoutBackground : withoutBackground = !(deprecated_hasBackgroundAlways !== null && deprecated_hasBackgroundAlways !== void 0 ? deprecated_hasBackgroundAlways : true); // handle deprecated props - END
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, disableBreadcrumbScroll, hasActionBar, widthIsNarrow, setMetrics);
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, disableBreadcrumbScroll, metrics, metrics.breadcrumbRowHeight, metrics.breadcrumbRowSpaceBelow, metrics.breadcrumbTitleHeight, metrics.breadcrumbRowWidth, metrics.headerHeight, metrics.headerWidth, metrics.headerOffset, metrics.headerTopValue, metrics.navigationRowHeight, navigation, scrollYValue, tags]);
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, disableBreadcrumbScroll]);
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 < 672); // small (below medium) media query
299
- }, [actionBarItems, children, breadcrumbs, disableBreadcrumbScroll, navigation, pageActions, subtitle, tags, title]);
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 disableBreadcrumbScroll && !actionBarItems && scrollYValue + metrics.headerTopValue >= 0;
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 disableBreadcrumbScroll
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 behavior scrolls the breadcrumb off to leave just tabs. This
649
- * option preserves vertical space for both the breadcrumb and tabs if they're supplied.
659
+ * Standard keeps the breadcrumb on the page. This option allows the breadcrumb
660
+ * to scroll off
650
661
  */
651
- disableBreadcrumbScroll: PropTypes.bool,
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} disableBreadcrumbScroll
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, disableBreadcrumbScroll, hasActionBar, widthIsNarrow, setMetrics) {
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
- update.headerOffset = offsetTopMeasuringRef.current.getBoundingClientRect().top - (scrollableContainer === null || scrollableContainer === void 0 ? void 0 : scrollableContainer.getBoundingClientRect().top) || 0;
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 (disableBreadcrumbScroll || !navigation) {
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
- } else {
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
- /* istanbul ignore if */
124
+ var val;
125
+ /* don't know how to test resize */
129
126
 
130
- if (breadcrumbRowEl) {
131
- val = parseFloat(window.getComputedStyle(breadcrumbRowEl).getPropertyValue('margin-bottom'), 10);
132
- update.breadcrumbRowSpaceBelow = isNaN(val) ? 0 : val;
133
- }
134
- /* don't know how to test resize */
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
- /* istanbul ignore if */
135
+ /* istanbul ignore if */
137
136
 
138
137
 
139
- if (titleRowEl) {
140
- val = parseFloat(window.getComputedStyle(titleRowEl).getPropertyValue('margin-top'), 10);
141
- update.titleRowSpaceAbove = isNaN(val) ? 0 : val;
138
+ if (titleRowEl) {
139
+ val = parseFloat(window.getComputedStyle(titleRowEl).getPropertyValue('margin-top'), 10);
140
+ update.titleRowSpaceAbove = isNaN(val) ? 0 : val;
142
141
 
143
- if (pageActionsEl) {
144
- val = parseFloat(window.getComputedStyle(pageActionsEl).getPropertyValue('margin-top'), 10);
145
- update.pageActionsSpaceAbove = titleRowEl.clientHeight - pageActionsEl.clientHeight + update.titleRowSpaceAbove - (isNaN(val) ? 0 : val);
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
+ };