@carbon/ibm-products 1.8.0 → 1.11.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -35,7 +35,7 @@ var _iconsReact = require("@carbon/icons-react");
35
35
 
36
36
  var carbonMotion = _interopRequireWildcard(require("@carbon/motion"));
37
37
 
38
- var _excluded = ["children", "className", "enabled", "heading", "headingId", "invalid", "invalidText", "locked", "lockedText", "onToggle", "open", "size", "summary", "warn", "warnText"];
38
+ var _excluded = ["children", "className", "enabled", "invalid", "invalidText", "locked", "lockedText", "onToggle", "open", "size", "summary", "title", "titleId", "warn", "warnText"];
39
39
 
40
40
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
41
41
 
@@ -57,8 +57,6 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
57
57
  var children = _ref.children,
58
58
  className = _ref.className,
59
59
  enabled = _ref.enabled,
60
- heading = _ref.heading,
61
- userDefinedHeadingId = _ref.headingId,
62
60
  invalid = _ref.invalid,
63
61
  invalidText = _ref.invalidText,
64
62
  locked = _ref.locked,
@@ -68,6 +66,8 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
68
66
  _ref$size = _ref.size,
69
67
  size = _ref$size === void 0 ? defaults.size : _ref$size,
70
68
  summary = _ref.summary,
69
+ title = _ref.title,
70
+ userDefinedTitleId = _ref.titleId,
71
71
  warn = _ref.warn,
72
72
  warnText = _ref.warnText,
73
73
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
@@ -90,7 +90,7 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
90
90
  var detailsRef = (0, _react.useRef)(null);
91
91
  var contentRef = (0, _react.useRef)(null);
92
92
  var id = (0, _uuidv.default)();
93
- var headingId = userDefinedHeadingId !== null && userDefinedHeadingId !== void 0 ? userDefinedHeadingId : "".concat(id, "-heading");
93
+ var titleId = userDefinedTitleId !== null && userDefinedTitleId !== void 0 ? userDefinedTitleId : "".concat(id, "-title");
94
94
  var isExpandable = children !== undefined;
95
95
  var isInvalid = invalid;
96
96
  var isWarn = !isInvalid && warn;
@@ -204,15 +204,25 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
204
204
  } else if (locked) {
205
205
  Icon = _iconsReact.Locked16;
206
206
  summaryClasses.push("".concat(blockClass, "__summary--locked"));
207
+
208
+ if (!text) {
209
+ text = lockedText;
210
+ }
211
+ }
212
+
213
+ var hasValidationState = invalid || warn || locked;
214
+ var summaryHidden = !hasValidationState && enabled === false;
215
+
216
+ if (summaryHidden) {
217
+ summaryClasses.push("".concat(blockClass, "__summary--hidden"));
207
218
  }
208
219
 
209
- var summaryHidden = enabled === false;
210
220
  return /*#__PURE__*/_react.default.createElement("div", {
211
- className: "".concat(blockClass, "__title")
212
- }, /*#__PURE__*/_react.default.createElement("h6", {
213
- id: headingId,
214
221
  className: "".concat(blockClass, "__heading")
215
- }, heading), text && /*#__PURE__*/_react.default.createElement("span", {
222
+ }, /*#__PURE__*/_react.default.createElement("h6", {
223
+ id: titleId,
224
+ className: "".concat(blockClass, "__title")
225
+ }, title), text && /*#__PURE__*/_react.default.createElement("span", {
216
226
  className: (0, _classnames.default)(summaryClasses),
217
227
  "aria-hidden": summaryHidden
218
228
  }, Icon && /*#__PURE__*/_react.default.createElement(Icon, null), /*#__PURE__*/_react.default.createElement("span", {
@@ -233,7 +243,7 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
233
243
  toggled: enabled,
234
244
  labelA: "",
235
245
  labelB: "",
236
- "aria-labelledby": headingId,
246
+ "aria-labelledby": titleId,
237
247
  onToggle: onToggle,
238
248
  size: "sm",
239
249
  disabled: isLocked
@@ -282,16 +292,6 @@ OptionsTile.propTypes = {
282
292
  */
283
293
  enabled: _propTypes.default.bool,
284
294
 
285
- /**
286
- * Provide the heading for this OptionsTile.
287
- */
288
- heading: _propTypes.default.string.isRequired,
289
-
290
- /**
291
- * Optionally provide an id which should be used for the heading.
292
- */
293
- headingId: _propTypes.default.string,
294
-
295
295
  /**
296
296
  * Whether the OptionsTile is in invalid validation state.
297
297
  */
@@ -333,6 +333,16 @@ OptionsTile.propTypes = {
333
333
  */
334
334
  summary: _propTypes.default.string,
335
335
 
336
+ /**
337
+ * Provide the title for this OptionsTile.
338
+ */
339
+ title: _propTypes.default.string.isRequired,
340
+
341
+ /**
342
+ * Optionally provide an id which should be used for the title.
343
+ */
344
+ titleId: _propTypes.default.string,
345
+
336
346
  /**
337
347
  * Whether the OptionsTile is in warning validation state.
338
348
  */
@@ -51,7 +51,7 @@ var _PageHeaderUtils = require("./PageHeaderUtils");
51
51
 
52
52
  var _PageHeaderTitle = require("./PageHeaderTitle");
53
53
 
54
- 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"];
54
+ 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"];
55
55
 
56
56
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
57
57
 
@@ -69,7 +69,7 @@ var defaults = {
69
69
  };
70
70
 
71
71
  var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
72
- var _withoutBackground, _ref6, _cx2, _ref7, _cx4, _cx7;
72
+ var _withoutBackground, _enableBreadcrumbScro, _ref6, _cx2, _ref7, _cx4, _cx7;
73
73
 
74
74
  var actionBarItems = _ref.actionBarItems,
75
75
  actionBarMenuOptionsClass = _ref.actionBarMenuOptionsClass,
@@ -85,7 +85,8 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
85
85
  collapseHeader = _ref.collapseHeader,
86
86
  collapseHeaderIconDescription = _ref.collapseHeaderIconDescription,
87
87
  collapseTitle = _ref.collapseTitle,
88
- disableBreadcrumbScroll = _ref.disableBreadcrumbScroll,
88
+ deprecated_disableBreadcrumbScroll = _ref.disableBreadcrumbScroll,
89
+ enableBreadcrumbScroll = _ref.enableBreadcrumbScroll,
89
90
  expandHeaderIconDescription = _ref.expandHeaderIconDescription,
90
91
  _ref$fullWidthGrid = _ref.fullWidthGrid,
91
92
  fullWidthGrid = _ref$fullWidthGrid === void 0 ? defaults.fullWidthGrid : _ref$fullWidthGrid,
@@ -103,8 +104,10 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
103
104
  withoutBackground = _ref.withoutBackground,
104
105
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
105
106
  // handle deprecated props - START
106
- // if withoutBackground is null check deprecated_hasBackgroundAlways and default false
107
- (_withoutBackground = withoutBackground) !== null && _withoutBackground !== void 0 ? _withoutBackground : withoutBackground = !(deprecated_hasBackgroundAlways !== null && deprecated_hasBackgroundAlways !== void 0 ? deprecated_hasBackgroundAlways : true); // handle deprecated props - END
107
+ // if withoutBackground is nullish check deprecated_hasBackgroundAlways and default false
108
+ (_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
109
+
110
+ (_enableBreadcrumbScro = enableBreadcrumbScroll) !== null && _enableBreadcrumbScro !== void 0 ? _enableBreadcrumbScro : enableBreadcrumbScroll = !(deprecated_disableBreadcrumbScroll !== null && deprecated_disableBreadcrumbScroll !== void 0 ? deprecated_disableBreadcrumbScroll : true); // handle deprecated props - END
108
111
 
109
112
  var _useState = (0, _react.useState)({}),
110
113
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -126,7 +129,7 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
126
129
  var hasBreadcrumbRow = !!breadcrumbs || !!actionBarItems; // utility functions
127
130
 
128
131
  var checkUpdateVerticalSpace = function checkUpdateVerticalSpace() {
129
- return (0, _PageHeaderUtils.utilCheckUpdateVerticalSpace)(headerRef, offsetTopMeasuringRef, navigation, disableBreadcrumbScroll, hasActionBar, widthIsNarrow, setMetrics);
132
+ return (0, _PageHeaderUtils.utilCheckUpdateVerticalSpace)(headerRef, offsetTopMeasuringRef, navigation, enableBreadcrumbScroll, hasActionBar, widthIsNarrow, setMetrics);
130
133
  }; // NOTE: The buffer is used to add space between the bottom of the header and the last content
131
134
  // Not pre-collapsed and (subtitle or children)
132
135
 
@@ -245,6 +248,7 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
245
248
 
246
249
 
247
250
  (0, _react.useEffect)(function () {
251
+ /* istanbul ignore else */
248
252
  if (pageActions !== null && pageActions !== void 0 && pageActions.content) {
249
253
  var minWidth = pageActions.minWidth,
250
254
  maxWidth = pageActions.maxWidth;
@@ -302,8 +306,9 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
302
306
  return _objectSpread(_objectSpread({}, prev), {}, (_objectSpread3 = {}, (0, _defineProperty2.default)(_objectSpread3, "--".concat(_PageHeaderUtils.blockClass, "--height-px"), "".concat(metrics.headerHeight, "px")), (0, _defineProperty2.default)(_objectSpread3, "--".concat(_PageHeaderUtils.blockClass, "--width-px"), "".concat(metrics.headerWidth, "px")), (0, _defineProperty2.default)(_objectSpread3, "--".concat(_PageHeaderUtils.blockClass, "--header-top"), "".concat(metrics.headerTopValue + metrics.headerOffset, "px")), (0, _defineProperty2.default)(_objectSpread3, "--".concat(_PageHeaderUtils.blockClass, "--breadcrumb-title-visibility"), scrollYValue > 0 ? 'visible' : 'hidden'), (0, _defineProperty2.default)(_objectSpread3, "--".concat(_PageHeaderUtils.blockClass, "--scroll"), "".concat(scrollYValue)), (0, _defineProperty2.default)(_objectSpread3, "--".concat(_PageHeaderUtils.blockClass, "--breadcrumb-title-top"), "".concat(Math.max(0, metrics.breadcrumbTitleHeight + metrics.titleRowSpaceAbove - scrollYValue), "px")), (0, _defineProperty2.default)(_objectSpread3, "--".concat(_PageHeaderUtils.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
303
307
  )))), (0, _defineProperty2.default)(_objectSpread3, "--".concat(_PageHeaderUtils.blockClass, "--breadcrumb-row-width-px"), "".concat(metrics.breadcrumbRowWidth, "px")), _objectSpread3));
304
308
  });
305
- }, [headerRef, disableBreadcrumbScroll, metrics, metrics.breadcrumbRowHeight, metrics.breadcrumbRowSpaceBelow, metrics.breadcrumbTitleHeight, metrics.breadcrumbRowWidth, metrics.headerHeight, metrics.headerWidth, metrics.headerOffset, metrics.headerTopValue, metrics.navigationRowHeight, navigation, scrollYValue, tags]);
309
+ }, [headerRef, enableBreadcrumbScroll, metrics, metrics.breadcrumbRowHeight, metrics.breadcrumbRowSpaceBelow, metrics.breadcrumbTitleHeight, metrics.breadcrumbRowWidth, metrics.headerHeight, metrics.headerWidth, metrics.headerOffset, metrics.headerTopValue, metrics.navigationRowHeight, navigation, scrollYValue, tags]);
306
310
  (0, _hooks.useNearestScroll)(headerRef, // on scroll or various layout changes check updates if needed
311
+ // istanbul ignore next
307
312
  function (_ref4) {
308
313
  var current = _ref4.current;
309
314
  setPageHeaderStyles(function (prev) {
@@ -320,13 +325,13 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
320
325
  document.documentElement.style.setProperty("--".concat(_PageHeaderUtils.blockClass, "--tagset-tooltip-position"), fullyCollapsed ? 'fixed' : 'absolute');
321
326
  document.documentElement.style.setProperty("--".concat(_PageHeaderUtils.blockClass, "--tagset-tooltip-offset"), "".concat(tagsetTooltipOffset, "px"));
322
327
  setScrollYValue(current.scrollY);
323
- }, [metrics.headerHeight, metrics.headerTopValue, metrics.headerOffset, disableBreadcrumbScroll]);
328
+ }, [metrics.headerHeight, metrics.headerTopValue, metrics.headerOffset, enableBreadcrumbScroll]);
324
329
  (0, _hooks.useWindowResize)(function (_ref5) {
325
330
  var current = _ref5.current;
326
331
  // on window resize and other updates some values may have changed
327
332
  checkUpdateVerticalSpace();
328
- setWidthIsNarrow(current.innerWidth < 672); // small (below medium) media query
329
- }, [actionBarItems, children, breadcrumbs, disableBreadcrumbScroll, navigation, pageActions, subtitle, tags, title]);
333
+ setWidthIsNarrow(current.innerWidth < _layout.breakpoints.md.width); // small (below medium) media query
334
+ }, [actionBarItems, children, breadcrumbs, enableBreadcrumbScroll, navigation, pageActions, subtitle, tags, title]);
330
335
  (0, _react.useEffect)(function () {
331
336
  checkUpdateVerticalSpace(); // eslint-disable-next-line react-hooks/exhaustive-deps
332
337
  }, [fullWidthGrid, narrowGrid]);
@@ -364,7 +369,7 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
364
369
 
365
370
  var nextToTabsCheck = function nextToTabsCheck() {
366
371
  /* istanbul ignore next */
367
- return disableBreadcrumbScroll && !actionBarItems && scrollYValue + metrics.headerTopValue >= 0;
372
+ return enableBreadcrumbScroll && !actionBarItems && scrollYValue + metrics.headerTopValue >= 0;
368
373
  };
369
374
 
370
375
  (0, _react.useEffect)(function () {
@@ -455,7 +460,7 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
455
460
  showAllTagsLabel: showAllTagsLabel,
456
461
  tags: tags,
457
462
  overflowClassName: "".concat(_PageHeaderUtils.blockClass, "__navigation-tags-overflow")
458
- }))) : null), // this navigation pushes the breadcrumb off or settles underneath it depending on disableBreadcrumbScroll
463
+ }))) : null), // this navigation pushes the breadcrumb off or settles underneath it depending on enableBreadcrumbScroll
459
464
  navigation ? /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Row, {
460
465
  className: (0, _classnames.default)("".concat(_PageHeaderUtils.blockClass, "__navigation-row"), (_cx7 = {}, (0, _defineProperty2.default)(_cx7, "".concat(_PageHeaderUtils.blockClass, "__navigation-row--spacing-above-06"), !!navigation), (0, _defineProperty2.default)(_cx7, "".concat(_PageHeaderUtils.blockClass, "__navigation-row--has-tags"), tags), _cx7))
461
466
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Column, {
@@ -529,6 +534,11 @@ var TYPES = {
529
534
  };
530
535
  var tagTypes = Object.keys(TYPES);
531
536
  var deprecatedProps = {
537
+ /**
538
+ * **Deprecated** see property `enableBreadcrumbScroll`
539
+ */
540
+ disableBreadcrumbScroll: (0, _propsHelper.deprecateProp)(_propTypes.default.bool, 'Property replaced by `enableBreadcrumbScroll`'),
541
+
532
542
  /**
533
543
  * **Deprecated** see property `withoutBackground`
534
544
  */
@@ -678,10 +688,10 @@ PageHeader.propTypes = _objectSpread({
678
688
  collapseTitle: _propTypes.default.bool,
679
689
 
680
690
  /**
681
- * Standard behavior scrolls the breadcrumb off to leave just tabs. This
682
- * option preserves vertical space for both the breadcrumb and tabs if they're supplied.
691
+ * Standard keeps the breadcrumb on the page. This option allows the breadcrumb
692
+ * to scroll off
683
693
  */
684
- disableBreadcrumbScroll: _propTypes.default.bool,
694
+ enableBreadcrumbScroll: _propTypes.default.bool,
685
695
 
686
696
  /**
687
697
  * If `hasCollapseHeaderToggle` is set and `withoutBackground` is unset/falsy then assistive text is
@@ -71,7 +71,8 @@ var PageHeaderTitle = function PageHeaderTitle(_ref) {
71
71
  onSave: onSave,
72
72
  labelText: editableLabel,
73
73
  revertDescription: revertDescription,
74
- saveDescription: saveDescription
74
+ saveDescription: saveDescription,
75
+ buttonTooltipPosition: "bottom"
75
76
  }, rest)) : /*#__PURE__*/_react.default.createElement("span", {
76
77
  title: !loading ? asText : null
77
78
  }, text));
@@ -29,7 +29,7 @@ var blockClass = "".concat(_settings.pkg.prefix, "--page-header");
29
29
  * @param {{}} headerRef
30
30
  * @param {{}} offsetTopMeasuringRef
31
31
  * @param {{}} navigation
32
- * @param {boolean} disableBreadcrumbScroll
32
+ * @param {boolean} enableBreadcrumbScroll
33
33
  * @param {boolean} hasActionBar
34
34
  * @param {boolean} widthIsNarrow
35
35
  * @param {()} setMetrics
@@ -37,7 +37,7 @@ var blockClass = "".concat(_settings.pkg.prefix, "--page-header");
37
37
 
38
38
  exports.blockClass = blockClass;
39
39
 
40
- var utilCheckUpdateVerticalSpace = function utilCheckUpdateVerticalSpace(headerRef, offsetTopMeasuringRef, navigation, disableBreadcrumbScroll, hasActionBar, widthIsNarrow, setMetrics) {
40
+ var utilCheckUpdateVerticalSpace = function utilCheckUpdateVerticalSpace(headerRef, offsetTopMeasuringRef, navigation, enableBreadcrumbScroll, hasActionBar, widthIsNarrow, setMetrics) {
41
41
  var dynamicRefs = {};
42
42
 
43
43
  var getDynamicRef = function getDynamicRef(selector) {
@@ -85,7 +85,10 @@ var utilCheckUpdateVerticalSpace = function utilCheckUpdateVerticalSpace(headerR
85
85
  var scrollableContainer = (0, _scrollableAncestor.scrollableAncestor)(headerRef.current);
86
86
  /* istanbul ignore next */
87
87
 
88
- update.headerOffset = offsetTopMeasuringRef.current.getBoundingClientRect().top - (scrollableContainer === null || scrollableContainer === void 0 ? void 0 : scrollableContainer.getBoundingClientRect().top) || 0;
88
+ 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
89
+ // top and the measuring ref top, or the difference between. It does not change on scroll or resize.
90
+
91
+ update.headerOffset = scrollableContainerTop + offsetTopMeasuringRef.current.getBoundingClientRect().top;
89
92
  /* istanbul ignore next */
90
93
 
91
94
  update.breadcrumbRowHeight = breadcrumbRowEl ? breadcrumbRowEl.clientHeight : 0;
@@ -122,42 +125,34 @@ var utilCheckUpdateVerticalSpace = function utilCheckUpdateVerticalSpace(headerR
122
125
  update.headerTopValue += 8;
123
126
  }
124
127
 
125
- if (disableBreadcrumbScroll || !navigation) {
128
+ if (!enableBreadcrumbScroll || !navigation) {
126
129
  // adjust sticky top if no navigation or breadcrumb is to stay on screen
127
130
  update.headerTopValue += update.breadcrumbRowHeight;
128
- } else {
129
- if (navigation && !widthIsNarrow) {
130
- update.headerTopValue -= 8;
131
- }
132
- }
131
+ } // if (window) {
133
132
 
134
- if (window) {
135
- var val;
136
- /* don't know how to test resize */
137
133
 
138
- /* istanbul ignore if */
134
+ var val;
135
+ /* don't know how to test resize */
139
136
 
140
- if (breadcrumbRowEl) {
141
- val = parseFloat(window.getComputedStyle(breadcrumbRowEl).getPropertyValue('margin-bottom'), 10);
142
- update.breadcrumbRowSpaceBelow = isNaN(val) ? 0 : val;
143
- }
144
- /* don't know how to test resize */
137
+ /* istanbul ignore if */
138
+
139
+ if (breadcrumbRowEl) {
140
+ val = parseFloat(window.getComputedStyle(breadcrumbRowEl).getPropertyValue('margin-bottom'), 10);
141
+ update.breadcrumbRowSpaceBelow = isNaN(val) ? 0 : val;
142
+ }
143
+ /* don't know how to test resize */
145
144
 
146
- /* istanbul ignore if */
145
+ /* istanbul ignore if */
147
146
 
148
147
 
149
- if (titleRowEl) {
150
- val = parseFloat(window.getComputedStyle(titleRowEl).getPropertyValue('margin-top'), 10);
151
- update.titleRowSpaceAbove = isNaN(val) ? 0 : val;
148
+ if (titleRowEl) {
149
+ val = parseFloat(window.getComputedStyle(titleRowEl).getPropertyValue('margin-top'), 10);
150
+ update.titleRowSpaceAbove = isNaN(val) ? 0 : val;
152
151
 
153
- if (pageActionsEl) {
154
- val = parseFloat(window.getComputedStyle(pageActionsEl).getPropertyValue('margin-top'), 10);
155
- update.pageActionsSpaceAbove = titleRowEl.clientHeight - pageActionsEl.clientHeight + update.titleRowSpaceAbove - (isNaN(val) ? 0 : val);
156
- }
152
+ if (pageActionsEl) {
153
+ val = parseFloat(window.getComputedStyle(pageActionsEl).getPropertyValue('margin-top'), 10);
154
+ update.pageActionsSpaceAbove = titleRowEl.clientHeight - pageActionsEl.clientHeight + update.titleRowSpaceAbove - (isNaN(val) ? 0 : val);
157
155
  }
158
- } else {
159
- update.breadcrumbRowSpaceBelow = 0;
160
- update.titleRowSpaceAbove = 0;
161
156
  }
162
157
 
163
158
  return _objectSpread(_objectSpread({}, previous), update);
@@ -19,6 +19,8 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
19
19
 
20
20
  var _react = _interopRequireWildcard(require("react"));
21
21
 
22
+ var _reactDom = require("react-dom");
23
+
22
24
  var _propTypes = _interopRequireDefault(require("prop-types"));
23
25
 
24
26
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -37,7 +39,7 @@ var _propsHelper = require("../../global/js/utils/props-helper");
37
39
 
38
40
  var _settings = require("../../settings");
39
41
 
40
- var _excluded = ["align", "className", "maxVisible", "overflowAlign", "overflowClassName", "overflowDirection", "allTagsModalTitle", "allTagsModalSearchLabel", "allTagsModalSearchPlaceholderText", "showAllTagsLabel", "tags"],
42
+ var _excluded = ["align", "allTagsModalTarget", "className", "maxVisible", "overflowAlign", "overflowClassName", "overflowDirection", "allTagsModalTitle", "allTagsModalSearchLabel", "allTagsModalSearchPlaceholderText", "showAllTagsLabel", "tags"],
41
43
  _excluded2 = ["label", "id"],
42
44
  _excluded3 = ["label"];
43
45
 
@@ -55,6 +57,7 @@ var allTagsModalSearchThreshold = 10; // Default values for props
55
57
 
56
58
  var defaults = {
57
59
  align: 'start',
60
+ allTagsModalTarget: document.body,
58
61
  overflowAlign: 'center',
59
62
  overflowDirection: 'bottom'
60
63
  };
@@ -62,6 +65,8 @@ var defaults = {
62
65
  var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
63
66
  var _ref$align = _ref.align,
64
67
  align = _ref$align === void 0 ? defaults.align : _ref$align,
68
+ _ref$allTagsModalTarg = _ref.allTagsModalTarget,
69
+ allTagsModalTarget = _ref$allTagsModalTarg === void 0 ? defaults.allTagsModalTarget : _ref$allTagsModalTarg,
65
70
  className = _ref.className,
66
71
  maxVisible = _ref.maxVisible,
67
72
  _ref$overflowAlign = _ref.overflowAlign,
@@ -246,14 +251,14 @@ var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
246
251
  }, hiddenSizingTags), /*#__PURE__*/_react.default.createElement("div", {
247
252
  className: "".concat(blockClass, "__tag-container"),
248
253
  ref: displayedArea
249
- }, displayedTags)), tags && displayCount < tags.length ? /*#__PURE__*/_react.default.createElement(_TagSetModal.TagSetModal, {
254
+ }, displayedTags)), allTagsModalTarget && tags && displayCount < tags.length ? /*#__PURE__*/(0, _reactDom.createPortal)( /*#__PURE__*/_react.default.createElement(_TagSetModal.TagSetModal, {
250
255
  allTags: tags,
251
256
  open: showAllModalOpen,
252
257
  title: allTagsModalTitle,
253
258
  onClose: handleModalClose,
254
259
  searchLabel: allTagsModalSearchLabel,
255
260
  searchPlaceholder: allTagsModalSearchPlaceholderText
256
- }) : null);
261
+ }), allTagsModalTarget) : null);
257
262
  }); // Return a placeholder if not released and not enabled by feature flag
258
263
 
259
264
 
@@ -301,6 +306,11 @@ TagSet.propTypes = {
301
306
  */
302
307
  allTagsModalSearchPlaceholderText: string_required_if_more_than_10_tags,
303
308
 
309
+ /**
310
+ * portal target for the all tags modal
311
+ */
312
+ allTagsModalTarget: _propTypes.default.node,
313
+
304
314
  /**
305
315
  * title for the show all modal. **Note: Required if more than 10 tags**
306
316
  */
@@ -86,7 +86,8 @@ var UserProfileImage = /*#__PURE__*/_react.default.forwardRef(function (_ref, re
86
86
  };
87
87
 
88
88
  return FillItem && (tooltipText ? /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TooltipIcon, {
89
- tooltipText: tooltipText
89
+ tooltipText: tooltipText,
90
+ className: "".concat(blockClass, "__tooltip")
90
91
  }, renderUserProfileImage()) : renderUserProfileImage());
91
92
  }); // Return a placeholder if not released and not enabled by feature flag
92
93
 
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.DisplayBox = void 0;
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _classnames = _interopRequireDefault(require("classnames"));
15
+
16
+ /**
17
+ * Copyright IBM Corp. 2022, 2022
18
+ *
19
+ * This source code is licensed under the Apache-2.0 license found in the
20
+ * LICENSE file in the root directory of this source tree.
21
+ */
22
+ var blockClass = 'ccs-sb--display-box';
23
+
24
+ var DisplayBox = function DisplayBox(_ref) {
25
+ var children = _ref.children,
26
+ className = _ref.className,
27
+ msg = _ref.msg;
28
+ return /*#__PURE__*/_react.default.createElement("div", {
29
+ className: (0, _classnames.default)(blockClass, className)
30
+ }, /*#__PURE__*/_react.default.createElement("div", {
31
+ className: "".concat(blockClass, "__indicator")
32
+ }, /*#__PURE__*/_react.default.createElement("div", {
33
+ className: "".concat(blockClass, "__message")
34
+ }, msg || /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "width available to component", /*#__PURE__*/_react.default.createElement("br", null), "(use containerWidth control to adjust)")), /*#__PURE__*/_react.default.createElement("div", {
35
+ className: "".concat(blockClass, "__indicator--left")
36
+ }), /*#__PURE__*/_react.default.createElement("div", {
37
+ className: "".concat(blockClass, "__indicator--right")
38
+ })), children);
39
+ };
40
+
41
+ exports.DisplayBox = DisplayBox;
42
+ DisplayBox.propTypes = {
43
+ children: _propTypes.default.node,
44
+ className: _propTypes.default.string,
45
+ msg: _propTypes.default.node
46
+ };
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.deepCloneObject = void 0;
9
+
10
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
+
12
+ /**
13
+ * Copyright IBM Corp. 2022, 2022
14
+ *
15
+ * This source code is licensed under the Apache-2.0 license found in the
16
+ * LICENSE file in the root directory of this source tree.
17
+ */
18
+ // Utility to return a deep clone of a nested object or array.
19
+ var deepCloneObject = function deepCloneObject(objectToClone) {
20
+ // Return the value if objectToClone is not an object
21
+ if ((0, _typeof2.default)(objectToClone) !== 'object' || objectToClone === null) {
22
+ return objectToClone;
23
+ } // Create a new array/object to hold the values
24
+
25
+
26
+ var clonedObject = Array.isArray(objectToClone) ? [] : {};
27
+
28
+ for (var key in objectToClone) {
29
+ var value = objectToClone[key]; // Recursively check for nested objects/arrays
30
+
31
+ clonedObject[key] = deepCloneObject(value);
32
+ }
33
+
34
+ return clonedObject;
35
+ };
36
+
37
+ exports.deepCloneObject = deepCloneObject;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/ibm-products",
3
3
  "description": "Carbon for IBM Products",
4
- "version": "1.8.0",
4
+ "version": "1.11.0",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -50,21 +50,21 @@
50
50
  "upgrade-dependencies": "npm-check-updates -u --dep dev,peer,prod --color --reject '/(carbon|^react$|^react-dom$|^chalk$)/'"
51
51
  },
52
52
  "devDependencies": {
53
- "@babel/cli": "^7.17.3",
53
+ "@babel/cli": "^7.17.6",
54
54
  "@babel/core": "^7.17.5",
55
- "babel-preset-ibm-cloud-cognitive": "^0.14.8",
55
+ "babel-preset-ibm-cloud-cognitive": "^0.14.10",
56
56
  "chalk": "^4.1.2",
57
57
  "change-case": "^4.1.2",
58
58
  "copyfiles": "^2.4.1",
59
59
  "cross-env": "^7.0.3",
60
- "fs-extra": "^10.0.0",
60
+ "fs-extra": "^10.0.1",
61
61
  "glob": "^7.2.0",
62
62
  "jest": "^27.5.1",
63
- "jest-config-ibm-cloud-cognitive": "^0.23.9",
64
- "npm-check-updates": "^12.3.1",
63
+ "jest-config-ibm-cloud-cognitive": "^0.23.11",
64
+ "npm-check-updates": "^12.5.2",
65
65
  "npm-run-all": "^4.1.5",
66
66
  "rimraf": "^3.0.2",
67
- "sass": "^1.49.8",
67
+ "sass": "^1.49.9",
68
68
  "yargs": "^17.3.1"
69
69
  },
70
70
  "dependencies": {
@@ -75,18 +75,18 @@
75
75
  "react-window": "^1.8.6"
76
76
  },
77
77
  "peerDependencies": {
78
- "@carbon/colors": "^10.36.0",
79
- "@carbon/icons-react": "^10.46.0",
80
- "@carbon/import-once": "^10.5.0",
81
- "@carbon/layout": "^10.36.0",
82
- "@carbon/motion": "^10.28.0",
83
- "@carbon/themes": "^10.50.0",
84
- "@carbon/type": "^10.40.0",
85
- "carbon-components": "^10.53.0",
86
- "carbon-components-react": "^7.53.0",
78
+ "@carbon/colors": "^10.37.0",
79
+ "@carbon/icons-react": "^10.47.0",
80
+ "@carbon/import-once": "^10.7.0",
81
+ "@carbon/layout": "^10.37.0",
82
+ "@carbon/motion": "^10.29.0",
83
+ "@carbon/themes": "^10.52.0",
84
+ "@carbon/type": "^10.42.0",
85
+ "carbon-components": "^10.54.0",
86
+ "carbon-components-react": "^7.54.2",
87
87
  "carbon-icons": "^7.0.7",
88
88
  "react": "^16.8.6 || ^17.0.1",
89
89
  "react-dom": "^16.8.6 || ^17.0.1"
90
90
  },
91
- "gitHead": "b2c8e5a32233fac65bb3eeb18df919efc0dcd3af"
91
+ "gitHead": "684e0bceb27d3f1376651a624db23bcedeab5c59"
92
92
  }
@@ -0,0 +1,8 @@
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
+
8
+ @import '../../global/styles/display-box';
@@ -6,15 +6,13 @@
6
6
  //
7
7
 
8
8
  @import '../../global/styles/project-settings';
9
+ @import '../../global/styles/display-box';
9
10
 
10
11
  $block-class: #{$pkg-prefix}--action-set;
11
12
 
12
13
  .#{$block-class}__story-container {
13
14
  width: 96vw;
14
15
  min-height: 3rem;
15
- border: 1px solid $decorative-01;
16
- margin: $spacing-04 auto 0;
17
- box-shadow: 0 0 10px 5px $ui-04;
18
16
  }
19
17
 
20
18
  .#{$block-class}__story-container--xlg {