@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
@@ -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 {