@carbon/ibm-products 1.10.0 → 1.11.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. package/css/index-full-carbon.css +249 -218
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +5 -5
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +21 -4
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +2 -2
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +102 -212
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +4 -4
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +219 -212
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +5 -5
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/AddSelect/AddSelect.js +88 -87
  18. package/es/components/AddSelect/AddSelectColumn.js +193 -19
  19. package/es/components/AddSelect/AddSelectList.js +5 -5
  20. package/es/components/AddSelect/AddSelectSidebar.js +3 -15
  21. package/es/components/AddSelect/add-select-utils.js +64 -0
  22. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -1
  23. package/es/components/ButtonMenu/ButtonMenu.js +11 -3
  24. package/es/components/CreateFullPage/CreateFullPageStep.js +4 -4
  25. package/es/components/CreateTearsheet/CreateTearsheetStep.js +4 -4
  26. package/es/components/DataSpreadsheet/DataSpreadsheet.js +255 -140
  27. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +37 -38
  28. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +55 -6
  29. package/es/components/DataSpreadsheet/hooks/useMoveActiveCell.js +27 -0
  30. package/es/components/DataSpreadsheet/hooks/useResetSpreadsheetFocus.js +28 -0
  31. package/es/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +41 -0
  32. package/es/components/DataSpreadsheet/{checkActiveHeaderCell.js → utils/checkActiveHeaderCell.js} +1 -1
  33. package/es/components/DataSpreadsheet/{createActiveCellFn.js → utils/createActiveCellFn.js} +20 -9
  34. package/es/components/DataSpreadsheet/{createCellSelectionArea.js → utils/createCellSelectionArea.js} +8 -4
  35. package/es/components/DataSpreadsheet/{generateData.js → utils/generateData.js} +6 -0
  36. package/es/components/DataSpreadsheet/{getCellSize.js → utils/getCellSize.js} +0 -0
  37. package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +46 -0
  38. package/es/components/DataSpreadsheet/utils/handleMultipleKeys.js +82 -0
  39. package/es/components/DataSpreadsheet/utils/removeCellSelections.js +30 -0
  40. package/es/components/InlineEdit/InlineEdit.js +49 -8
  41. package/es/components/OptionsTile/OptionsTile.js +20 -20
  42. package/es/components/OptionsTile/index.js +1 -1
  43. package/es/components/PageHeader/PageHeader.js +35 -32
  44. package/es/components/PageHeader/PageHeaderTitle.js +2 -1
  45. package/es/components/PageHeader/PageHeaderUtils.js +21 -22
  46. package/es/components/index.js +0 -1
  47. package/es/global/js/package-settings.js +1 -2
  48. package/lib/components/AddSelect/AddSelect.js +91 -87
  49. package/lib/components/AddSelect/AddSelectColumn.js +193 -16
  50. package/lib/components/AddSelect/AddSelectList.js +5 -5
  51. package/lib/components/AddSelect/AddSelectSidebar.js +9 -15
  52. package/lib/components/AddSelect/add-select-utils.js +78 -0
  53. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -1
  54. package/lib/components/ButtonMenu/ButtonMenu.js +11 -3
  55. package/lib/components/CreateFullPage/CreateFullPageStep.js +4 -4
  56. package/lib/components/CreateTearsheet/CreateTearsheetStep.js +4 -4
  57. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +263 -142
  58. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +39 -36
  59. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +62 -8
  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/{checkActiveHeaderCell.js → utils/checkActiveHeaderCell.js} +1 -1
  64. package/lib/components/DataSpreadsheet/{createActiveCellFn.js → utils/createActiveCellFn.js} +20 -9
  65. package/lib/components/DataSpreadsheet/{createCellSelectionArea.js → utils/createCellSelectionArea.js} +8 -4
  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 +52 -10
  72. package/lib/components/OptionsTile/OptionsTile.js +19 -19
  73. package/lib/components/PageHeader/PageHeader.js +35 -32
  74. package/lib/components/PageHeader/PageHeaderTitle.js +2 -1
  75. package/lib/components/PageHeader/PageHeaderUtils.js +21 -22
  76. package/lib/components/index.js +0 -8
  77. package/lib/global/js/package-settings.js +1 -2
  78. package/package.json +13 -13
  79. package/scss/components/AddSelect/_add-select.scss +20 -0
  80. package/scss/components/BreadcrumbWithOverflow/_breadcrumb-with-overflow.scss +7 -3
  81. package/scss/components/CreateSidePanel/_create-side-panel.scss +1 -1
  82. package/scss/components/CreateSidePanel/_storybook-styles.scss +1 -1
  83. package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +14 -1
  84. package/scss/components/EditSidePanel/_edit-side-panel.scss +9 -0
  85. package/scss/components/EditSidePanel/_storybook-styles.scss +1 -1
  86. package/scss/components/InlineEdit/_inline-edit.scss +35 -37
  87. package/scss/components/ModifiedTabs/_modified-tabs.scss +5 -0
  88. package/scss/components/NotificationsPanel/_notifications-panel.scss +7 -3
  89. package/scss/components/OptionsTile/_index.scss +1 -1
  90. package/scss/components/OptionsTile/_options-tile.scss +17 -17
  91. package/scss/components/OptionsTile/_storybook-styles.scss +4 -4
  92. package/scss/components/PageHeader/_page-header.scss +3 -2
  93. package/scss/components/SidePanel/_side-panel.scss +8 -8
  94. package/scss/components/Tearsheet/_tearsheet.scss +4 -0
  95. package/scss/components/_index.scss +0 -1
  96. package/es/components/LoadingBar/LoadingBar.js +0 -156
  97. package/es/components/LoadingBar/index.js +0 -7
  98. package/lib/components/LoadingBar/LoadingBar.js +0 -170
  99. package/lib/components/LoadingBar/index.js +0 -13
  100. package/scss/components/LoadingBar/_index.scss +0 -8
  101. package/scss/components/LoadingBar/_loading-bar.scss +0 -224
  102. package/scss/components/LoadingBar/_storybook-styles.scss +0 -14
@@ -1,8 +1,9 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ import _typeof from "@babel/runtime/helpers/typeof";
3
4
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
5
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
5
- var _excluded = ["cancelDescription", "className", "disabled", "editAlwaysVisible", "editDescription", "id", "invalid", "invalidText", "labelText", "light", "onCancel", "onSave", "onChange", "placeholder", "saveDescription", "size", "value"];
6
+ var _excluded = ["buttonTooltipAlignment", "buttonTooltipPosition", "cancelDescription", "className", "disabled", "editAlwaysVisible", "editDescription", "id", "invalid", "invalidText", "labelText", "light", "onCancel", "onSave", "onChange", "placeholder", "saveDescription", "size", "value"];
6
7
 
7
8
  /**
8
9
  * Copyright IBM Corp. 2022, 2022
@@ -27,10 +28,13 @@ var blockClass = "".concat(pkg.prefix, "--inline-edit");
27
28
  var componentName = 'InlineEdit'; // NOTE: the component SCSS is not imported here: it is rolled up separately.
28
29
 
29
30
  var defaults = {
31
+ buttonTooltipAlignment: 'center',
32
+ buttonTooltipPosition: 'top',
30
33
  light: true,
31
34
  // defaults to true to reflect design
32
35
  size: 'md'
33
36
  };
37
+ var buttons = ['cancel', 'edit', 'save'];
34
38
  /**
35
39
  * TODO: A description of the component.
36
40
  */
@@ -38,7 +42,9 @@ var defaults = {
38
42
  export var InlineEdit = /*#__PURE__*/React.forwardRef(function (_ref, refIn) {
39
43
  var _cx, _refInput$current, _refInput$current$inn, _cx3;
40
44
 
41
- var cancelDescription = _ref.cancelDescription,
45
+ var buttonTooltipAlignment = _ref.buttonTooltipAlignment,
46
+ buttonTooltipPosition = _ref.buttonTooltipPosition,
47
+ cancelDescription = _ref.cancelDescription,
42
48
  className = _ref.className,
43
49
  disabled = _ref.disabled,
44
50
  editAlwaysVisible = _ref.editAlwaysVisible,
@@ -77,7 +83,21 @@ export var InlineEdit = /*#__PURE__*/React.forwardRef(function (_ref, refIn) {
77
83
 
78
84
  var validationText = invalidText; // || warnText;
79
85
 
80
- var validationIcon = showValidation ? /*#__PURE__*/React.createElement(WarningFilled16, null) : null;
86
+ var validationIcon = showValidation ? /*#__PURE__*/React.createElement(WarningFilled16, null) : null; // sanitize the tooltip values
87
+
88
+ var alignIsObject = _typeof(buttonTooltipAlignment) === 'object';
89
+ var directionIsObject = _typeof(buttonTooltipPosition) === 'object';
90
+ var tipPositions = buttons.reduce(function (acc, button) {
91
+ var _ref2, _ref3;
92
+
93
+ var tooltipAlignment = (_ref2 = alignIsObject ? buttonTooltipAlignment[button] : buttonTooltipAlignment) !== null && _ref2 !== void 0 ? _ref2 : defaults.buttonTooltipAlignment;
94
+ var tooltipPosition = (_ref3 = directionIsObject ? buttonTooltipPosition[button] : buttonTooltipPosition) !== null && _ref3 !== void 0 ? _ref3 : defaults.buttonTooltipPosition;
95
+ acc[button] = {
96
+ tooltipAlignment: tooltipAlignment,
97
+ tooltipPosition: tooltipPosition
98
+ };
99
+ return acc;
100
+ }, {});
81
101
 
82
102
  var doSetEditing = function doSetEditing(value) {
83
103
  if (value === false) {
@@ -260,14 +280,14 @@ export var InlineEdit = /*#__PURE__*/React.forwardRef(function (_ref, refIn) {
260
280
  className: cx("".concat(blockClass, "__toolbar"), (_cx3 = {}, _defineProperty(_cx3, "".concat(blockClass, "__toolbar--animation"), toolbarAnimation), _defineProperty(_cx3, "".concat(blockClass, "__toolbar--saveable"), refInput.current && value !== internalValue), _cx3))
261
281
  }, showValidation && /*#__PURE__*/React.createElement("div", {
262
282
  className: "".concat(blockClass, "__validation-icon")
263
- }, validationIcon), editing ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {
283
+ }, validationIcon), editing ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, _extends({
264
284
  className: "".concat(blockClass, "__cancel"),
265
285
  kind: "ghost",
266
286
  hasIconOnly: true,
267
287
  iconDescription: cancelDescription,
268
288
  onClick: handleCancel,
269
289
  renderIcon: Close16
270
- }), /*#__PURE__*/React.createElement(Button, {
290
+ }, tipPositions.cancel)), /*#__PURE__*/React.createElement(Button, _extends({
271
291
  className: "".concat(blockClass, "__save"),
272
292
  kind: "ghost",
273
293
  hasIconOnly: true,
@@ -275,8 +295,7 @@ export var InlineEdit = /*#__PURE__*/React.forwardRef(function (_ref, refIn) {
275
295
  onClick: handleSave,
276
296
  renderIcon: Checkmark16,
277
297
  disabled: value === internalValue
278
- })) : /*#__PURE__*/React.createElement(Button, {
279
- "aria-hidden": "true",
298
+ }, tipPositions.save))) : /*#__PURE__*/React.createElement(Button, _extends({
280
299
  className: cx("".concat(blockClass, "__edit"), _defineProperty({}, "".concat(blockClass, "__edit--always-visible"), editAlwaysVisible)),
281
300
  kind: "ghost",
282
301
  hasIconOnly: true,
@@ -285,7 +304,7 @@ export var InlineEdit = /*#__PURE__*/React.forwardRef(function (_ref, refIn) {
285
304
  renderIcon: disabled ? EditOff16 : Edit16,
286
305
  disabled: disabled,
287
306
  tabIndex: -1
288
- }))), /*#__PURE__*/React.createElement("div", {
307
+ }, tipPositions.edit)))), /*#__PURE__*/React.createElement("div", {
289
308
  className: cx("".concat(blockClass, "__disabled-cover"))
290
309
  }), showValidation && validationText && validationText.length > 0 && /*#__PURE__*/React.createElement("div", {
291
310
  className: "".concat(blockClass, "__validation-text ").concat(carbon.prefix, "--form-requirement")
@@ -301,6 +320,28 @@ InlineEdit.displayName = componentName; // The types and DocGen commentary for t
301
320
  // See https://www.npmjs.com/package/prop-types#usage.
302
321
 
303
322
  InlineEdit.propTypes = {
323
+ /**
324
+ * buttonTooltipAlignment from the standard tooltip. Default center.
325
+ *
326
+ * Can be passed either as one of tooltip options or as an object specifying cancel, edit and save separately
327
+ */
328
+ buttonTooltipAlignment: PropTypes.oneOfType([PropTypes.oneOf(['start', 'center', 'end']), PropTypes.shape({
329
+ cancel: PropTypes.oneOf(['start', 'center', 'end']),
330
+ edit: PropTypes.oneOf(['start', 'center', 'end']),
331
+ save: PropTypes.oneOf(['start', 'center', 'end'])
332
+ })]),
333
+
334
+ /**
335
+ * buttonTooltipPosition from the standard tooltip
336
+ *
337
+ * Can be passed either as one of tooltip options or as an object specifying cancel, edit and save separately
338
+ */
339
+ buttonTooltipPosition: PropTypes.oneOfType([PropTypes.oneOf(['top', 'right', 'bottom', 'left']), PropTypes.shape({
340
+ cancel: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
341
+ edit: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
342
+ save: PropTypes.oneOf(['top', 'right', 'bottom', 'left'])
343
+ })]),
344
+
304
345
  /**
305
346
  * label for cancel button
306
347
  */
@@ -2,10 +2,10 @@ 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 = ["children", "className", "enabled", "heading", "headingId", "invalid", "invalidText", "locked", "lockedText", "onToggle", "open", "size", "summary", "warn", "warnText"];
5
+ var _excluded = ["children", "className", "enabled", "invalid", "invalidText", "locked", "lockedText", "onToggle", "open", "size", "summary", "title", "titleId", "warn", "warnText"];
6
6
 
7
7
  /**
8
- * Copyright IBM Corp. 2021, 2021
8
+ * Copyright IBM Corp. 2021, 2022
9
9
  *
10
10
  * This source code is licensed under the Apache-2.0 license found in the
11
11
  * LICENSE file in the root directory of this source tree.
@@ -38,8 +38,6 @@ export var OptionsTile = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
38
38
  var children = _ref.children,
39
39
  className = _ref.className,
40
40
  enabled = _ref.enabled,
41
- heading = _ref.heading,
42
- userDefinedHeadingId = _ref.headingId,
43
41
  invalid = _ref.invalid,
44
42
  invalidText = _ref.invalidText,
45
43
  locked = _ref.locked,
@@ -49,6 +47,8 @@ export var OptionsTile = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
49
47
  _ref$size = _ref.size,
50
48
  size = _ref$size === void 0 ? defaults.size : _ref$size,
51
49
  summary = _ref.summary,
50
+ title = _ref.title,
51
+ userDefinedTitleId = _ref.titleId,
52
52
  warn = _ref.warn,
53
53
  warnText = _ref.warnText,
54
54
  rest = _objectWithoutProperties(_ref, _excluded);
@@ -71,7 +71,7 @@ export var OptionsTile = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
71
71
  var detailsRef = useRef(null);
72
72
  var contentRef = useRef(null);
73
73
  var id = uuidv4();
74
- var headingId = userDefinedHeadingId !== null && userDefinedHeadingId !== void 0 ? userDefinedHeadingId : "".concat(id, "-heading");
74
+ var titleId = userDefinedTitleId !== null && userDefinedTitleId !== void 0 ? userDefinedTitleId : "".concat(id, "-title");
75
75
  var isExpandable = children !== undefined;
76
76
  var isInvalid = invalid;
77
77
  var isWarn = !isInvalid && warn;
@@ -199,11 +199,11 @@ export var OptionsTile = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
199
199
  }
200
200
 
201
201
  return /*#__PURE__*/React.createElement("div", {
202
- className: "".concat(blockClass, "__title")
203
- }, /*#__PURE__*/React.createElement("h6", {
204
- id: headingId,
205
202
  className: "".concat(blockClass, "__heading")
206
- }, heading), text && /*#__PURE__*/React.createElement("span", {
203
+ }, /*#__PURE__*/React.createElement("h6", {
204
+ id: titleId,
205
+ className: "".concat(blockClass, "__title")
206
+ }, title), text && /*#__PURE__*/React.createElement("span", {
207
207
  className: cx(summaryClasses),
208
208
  "aria-hidden": summaryHidden
209
209
  }, Icon && /*#__PURE__*/React.createElement(Icon, null), /*#__PURE__*/React.createElement("span", {
@@ -224,7 +224,7 @@ export var OptionsTile = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
224
224
  toggled: enabled,
225
225
  labelA: "",
226
226
  labelB: "",
227
- "aria-labelledby": headingId,
227
+ "aria-labelledby": titleId,
228
228
  onToggle: onToggle,
229
229
  size: "sm",
230
230
  disabled: isLocked
@@ -271,16 +271,6 @@ OptionsTile.propTypes = {
271
271
  */
272
272
  enabled: PropTypes.bool,
273
273
 
274
- /**
275
- * Provide the heading for this OptionsTile.
276
- */
277
- heading: PropTypes.string.isRequired,
278
-
279
- /**
280
- * Optionally provide an id which should be used for the heading.
281
- */
282
- headingId: PropTypes.string,
283
-
284
274
  /**
285
275
  * Whether the OptionsTile is in invalid validation state.
286
276
  */
@@ -322,6 +312,16 @@ OptionsTile.propTypes = {
322
312
  */
323
313
  summary: PropTypes.string,
324
314
 
315
+ /**
316
+ * Provide the title for this OptionsTile.
317
+ */
318
+ title: PropTypes.string.isRequired,
319
+
320
+ /**
321
+ * Optionally provide an id which should be used for the title.
322
+ */
323
+ titleId: PropTypes.string,
324
+
325
325
  /**
326
326
  * Whether the OptionsTile is in warning validation state.
327
327
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright IBM Corp. 2021, 2021
2
+ * Copyright IBM Corp. 2021, 2022
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -39,7 +39,7 @@ var defaults = {
39
39
  narrowGrid: false
40
40
  };
41
41
  export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
42
- var _withoutBackground, _ref2, _ref7, _cx2, _ref8, _cx4, _cx7;
42
+ var _withoutBackground, _enableBreadcrumbScro, _ref6, _cx2, _ref7, _cx4, _cx7;
43
43
 
44
44
  var actionBarItems = _ref.actionBarItems,
45
45
  actionBarMenuOptionsClass = _ref.actionBarMenuOptionsClass,
@@ -56,7 +56,7 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
56
56
  collapseHeaderIconDescription = _ref.collapseHeaderIconDescription,
57
57
  collapseTitle = _ref.collapseTitle,
58
58
  deprecated_disableBreadcrumbScroll = _ref.disableBreadcrumbScroll,
59
- in_enableBreadcrumbScroll = _ref.enableBreadcrumbScroll,
59
+ enableBreadcrumbScroll = _ref.enableBreadcrumbScroll,
60
60
  expandHeaderIconDescription = _ref.expandHeaderIconDescription,
61
61
  _ref$fullWidthGrid = _ref.fullWidthGrid,
62
62
  fullWidthGrid = _ref$fullWidthGrid === void 0 ? defaults.fullWidthGrid : _ref$fullWidthGrid,
@@ -75,8 +75,10 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
75
75
  rest = _objectWithoutProperties(_ref, _excluded);
76
76
 
77
77
  // handle deprecated props - START
78
- // if withoutBackground is null 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); // 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
80
82
 
81
83
  var _useState = useState({}),
82
84
  _useState2 = _slicedToArray(_useState, 2),
@@ -95,8 +97,7 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
95
97
  var offsetTopMeasuringRef = useRef(null); // state based on props only
96
98
 
97
99
  var hasActionBar = actionBarItems && actionBarItems.length > 0;
98
- var hasBreadcrumbRow = !!breadcrumbs || !!actionBarItems;
99
- var enableBreadcrumbScroll = (_ref2 = in_enableBreadcrumbScroll !== null && in_enableBreadcrumbScroll !== void 0 ? in_enableBreadcrumbScroll : !deprecated_disableBreadcrumbScroll) !== null && _ref2 !== void 0 ? _ref2 : false; // utility functions
100
+ var hasBreadcrumbRow = !!breadcrumbs || !!actionBarItems; // utility functions
100
101
 
101
102
  var checkUpdateVerticalSpace = function checkUpdateVerticalSpace() {
102
103
  return utilCheckUpdateVerticalSpace(headerRef, offsetTopMeasuringRef, navigation, enableBreadcrumbScroll, hasActionBar, widthIsNarrow, setMetrics);
@@ -162,9 +163,9 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
162
163
  setWidthIsNarrow = _useState26[1]; // handlers
163
164
 
164
165
 
165
- var handleActionBarWidthChange = function handleActionBarWidthChange(_ref3) {
166
- var minWidth = _ref3.minWidth,
167
- maxWidth = _ref3.maxWidth;
166
+ var handleActionBarWidthChange = function handleActionBarWidthChange(_ref2) {
167
+ var minWidth = _ref2.minWidth,
168
+ maxWidth = _ref2.maxWidth;
168
169
 
169
170
  /* don't know how to test resize */
170
171
 
@@ -177,9 +178,9 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
177
178
  setActionBarMinWidth(minWidth);
178
179
  };
179
180
 
180
- var handlePageActionWidthChange = function handlePageActionWidthChange(_ref4) {
181
- var minWidth = _ref4.minWidth,
182
- maxWidth = _ref4.maxWidth;
181
+ var handlePageActionWidthChange = function handlePageActionWidthChange(_ref3) {
182
+ var minWidth = _ref3.minWidth,
183
+ maxWidth = _ref3.maxWidth;
183
184
 
184
185
  /* don't know how to test resize */
185
186
 
@@ -218,6 +219,7 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
218
219
 
219
220
 
220
221
  useEffect(function () {
222
+ /* istanbul ignore else */
221
223
  if (pageActions !== null && pageActions !== void 0 && pageActions.content) {
222
224
  var minWidth = pageActions.minWidth,
223
225
  maxWidth = pageActions.maxWidth;
@@ -277,8 +279,9 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
277
279
  });
278
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]);
279
281
  useNearestScroll(headerRef, // on scroll or various layout changes check updates if needed
280
- function (_ref5) {
281
- var current = _ref5.current;
282
+ // istanbul ignore next
283
+ function (_ref4) {
284
+ var current = _ref4.current;
282
285
  setPageHeaderStyles(function (prev) {
283
286
  return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, "--".concat(blockClass, "--breadcrumb-top"), "".concat(metrics.headerOffset, "px")));
284
287
  });
@@ -294,8 +297,8 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
294
297
  document.documentElement.style.setProperty("--".concat(blockClass, "--tagset-tooltip-offset"), "".concat(tagsetTooltipOffset, "px"));
295
298
  setScrollYValue(current.scrollY);
296
299
  }, [metrics.headerHeight, metrics.headerTopValue, metrics.headerOffset, enableBreadcrumbScroll]);
297
- useWindowResize(function (_ref6) {
298
- var current = _ref6.current;
300
+ useWindowResize(function (_ref5) {
301
+ var current = _ref5.current;
299
302
  // on window resize and other updates some values may have changed
300
303
  checkUpdateVerticalSpace();
301
304
  setWidthIsNarrow(current.innerWidth < breakpoints.md.width); // small (below medium) media query
@@ -361,7 +364,7 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
361
364
  className: "".concat(blockClass, "--offset-top-measuring-element"),
362
365
  ref: offsetTopMeasuringRef
363
366
  }), /*#__PURE__*/React.createElement("section", _extends({}, rest, {
364
- className: cx([blockClass, "".concat(blockClass, "--no-margins-below-row"), className, (_ref7 = {}, _defineProperty(_ref7, "".concat(blockClass, "--has-navigation"), navigation || tags), _defineProperty(_ref7, "".concat(blockClass, "--has-navigation-tags-only"), !navigation && tags), _ref7)]),
367
+ className: cx([blockClass, "".concat(blockClass, "--no-margins-below-row"), className, (_ref6 = {}, _defineProperty(_ref6, "".concat(blockClass, "--has-navigation"), navigation || tags), _defineProperty(_ref6, "".concat(blockClass, "--has-navigation-tags-only"), !navigation && tags), _ref6)]),
365
368
  style: pageHeaderStyles,
366
369
  ref: headerRef
367
370
  }, getDevtoolsProps(componentName)), /*#__PURE__*/React.createElement(Grid, {
@@ -383,7 +386,7 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
383
386
  breadcrumbs: breadcrumbs && breadcrumbItemForTitle ? breadcrumbs.concat(breadcrumbItemForTitle) : breadcrumbItemForTitle ? [breadcrumbItemForTitle] : breadcrumbs // breadcrumbs may be null or undefined
384
387
 
385
388
  }) : null), /*#__PURE__*/React.createElement(Column, {
386
- className: cx(["".concat(blockClass, "__action-bar-column ").concat(blockClass, "__action-bar-column--background"), (_ref8 = {}, _defineProperty(_ref8, "".concat(blockClass, "__action-bar-column--has-page-actions"), pageActions), _defineProperty(_ref8, "".concat(blockClass, "__action-bar-column--influenced-by-collapse-button"), spaceForCollapseButton), _ref8)])
389
+ className: cx(["".concat(blockClass, "__action-bar-column ").concat(blockClass, "__action-bar-column--background"), (_ref7 = {}, _defineProperty(_ref7, "".concat(blockClass, "__action-bar-column--has-page-actions"), pageActions), _defineProperty(_ref7, "".concat(blockClass, "__action-bar-column--influenced-by-collapse-button"), spaceForCollapseButton), _ref7)])
387
390
  }, /*#__PURE__*/React.createElement("div", {
388
391
  className: "".concat(blockClass, "__action-bar-column-content"),
389
392
  ref: sizingContainerRef
@@ -533,8 +536,8 @@ PageHeader.propTypes = _objectSpread({
533
536
  *
534
537
  * NOTE: This prop is required if actionBarItems are supplied
535
538
  */
536
- actionBarOverflowAriaLabel: PropTypes.string.isRequired.if(function (_ref10) {
537
- var actionBarItems = _ref10.actionBarItems;
539
+ actionBarOverflowAriaLabel: PropTypes.string.isRequired.if(function (_ref9) {
540
+ var actionBarItems = _ref9.actionBarItems;
538
541
  return actionBarItems && actionBarItems.length > 0;
539
542
  }),
540
543
 
@@ -569,8 +572,8 @@ PageHeader.propTypes = _objectSpread({
569
572
  * If the user supplies breadcrumbs then this property is required.
570
573
  * It is used in an overflow menu when there is insufficient space to display all breadcrumbs inline.
571
574
  */
572
- breadcrumbOverflowAriaLabel: PropTypes.string.isRequired.if(function (_ref11) {
573
- var breadcrumbs = _ref11.breadcrumbs;
575
+ breadcrumbOverflowAriaLabel: PropTypes.string.isRequired.if(function (_ref10) {
576
+ var breadcrumbs = _ref10.breadcrumbs;
574
577
  return breadcrumbs && breadcrumbs.length > 0;
575
578
  }),
576
579
 
@@ -609,8 +612,8 @@ PageHeader.propTypes = _objectSpread({
609
612
  /**
610
613
  * A text version of the `label` for display, required if `label` is not a string.
611
614
  */
612
- title: PropTypes.string.isRequired.if(function (_ref12) {
613
- var label = _ref12.label;
615
+ title: PropTypes.string.isRequired.if(function (_ref11) {
616
+ var label = _ref11.label;
614
617
  return typeof label !== 'string';
615
618
  })
616
619
  })),
@@ -640,9 +643,9 @@ PageHeader.propTypes = _objectSpread({
640
643
  * If `hasCollapseHeaderToggle` is set and `withoutBackground` is unset/falsy then assistive text is
641
644
  * required for both the expend and collapse states of the button component used.
642
645
  */
643
- collapseHeaderIconDescription: PropTypes.string.isRequired.if(function (_ref13) {
644
- var withoutBackground = _ref13.withoutBackground,
645
- hasCollapseHeaderToggle = _ref13.hasCollapseHeaderToggle;
646
+ collapseHeaderIconDescription: PropTypes.string.isRequired.if(function (_ref12) {
647
+ var withoutBackground = _ref12.withoutBackground,
648
+ hasCollapseHeaderToggle = _ref12.hasCollapseHeaderToggle;
646
649
  return !withoutBackground && hasCollapseHeaderToggle;
647
650
  }),
648
651
 
@@ -662,9 +665,9 @@ PageHeader.propTypes = _objectSpread({
662
665
  * If `hasCollapseHeaderToggle` is set and `withoutBackground` is unset/falsy then assistive text is
663
666
  * required for both the expend and collapse states of the button component used.
664
667
  */
665
- expandHeaderIconDescription: PropTypes.string.isRequired.if(function (_ref14) {
666
- var withoutBackground = _ref14.withoutBackground,
667
- hasCollapseHeaderToggle = _ref14.hasCollapseHeaderToggle;
668
+ expandHeaderIconDescription: PropTypes.string.isRequired.if(function (_ref13) {
669
+ var withoutBackground = _ref13.withoutBackground,
670
+ hasCollapseHeaderToggle = _ref13.hasCollapseHeaderToggle;
668
671
  return !withoutBackground && hasCollapseHeaderToggle;
669
672
  }),
670
673
 
@@ -735,8 +738,8 @@ PageHeader.propTypes = _objectSpread({
735
738
  *
736
739
  * NOTE: This prop is required if pageActions are supplied
737
740
  */
738
- pageActionsOverflowLabel: PropTypes.node.isRequired.if(function (_ref15) {
739
- var pageActions = _ref15.pageActions;
741
+ pageActionsOverflowLabel: PropTypes.node.isRequired.if(function (_ref14) {
742
+ var pageActions = _ref14.pageActions;
740
743
  return pageActions && pageActions.length > 0 && !pageActions.content;
741
744
  }),
742
745
 
@@ -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));
@@ -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;
@@ -115,35 +118,31 @@ export var utilCheckUpdateVerticalSpace = function utilCheckUpdateVerticalSpace(
115
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
- }
121
+ } // if (window) {
119
122
 
120
- if (window) {
121
- var val;
122
- /* don't know how to test resize */
123
123
 
124
- /* istanbul ignore if */
124
+ var val;
125
+ /* don't know how to test resize */
125
126
 
126
- if (breadcrumbRowEl) {
127
- val = parseFloat(window.getComputedStyle(breadcrumbRowEl).getPropertyValue('margin-bottom'), 10);
128
- update.breadcrumbRowSpaceBelow = isNaN(val) ? 0 : val;
129
- }
130
- /* don't know how to test resize */
127
+ /* istanbul ignore if */
131
128
 
132
- /* istanbul ignore if */
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 */
133
134
 
135
+ /* istanbul ignore if */
134
136
 
135
- if (titleRowEl) {
136
- val = parseFloat(window.getComputedStyle(titleRowEl).getPropertyValue('margin-top'), 10);
137
- update.titleRowSpaceAbove = isNaN(val) ? 0 : val;
138
137
 
139
- if (pageActionsEl) {
140
- val = parseFloat(window.getComputedStyle(pageActionsEl).getPropertyValue('margin-top'), 10);
141
- update.pageActionsSpaceAbove = titleRowEl.clientHeight - pageActionsEl.clientHeight + update.titleRowSpaceAbove - (isNaN(val) ? 0 : val);
142
- }
138
+ if (titleRowEl) {
139
+ val = parseFloat(window.getComputedStyle(titleRowEl).getPropertyValue('margin-top'), 10);
140
+ update.titleRowSpaceAbove = isNaN(val) ? 0 : val;
141
+
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);
143
145
  }
144
- } else {
145
- update.breadcrumbRowSpaceBelow = 0;
146
- update.titleRowSpaceAbove = 0;
147
146
  }
148
147
 
149
148
  return _objectSpread(_objectSpread({}, previous), update);
@@ -18,7 +18,6 @@ export { ExportModal } from './ExportModal';
18
18
  export { ExpressiveCard } from './ExpressiveCard';
19
19
  export { HTTPError403, HTTPError404, HTTPErrorOther } from './HTTPErrors';
20
20
  export { ImportModal } from './ImportModal';
21
- export { LoadingBar } from './LoadingBar';
22
21
  export { ModifiedTabs } from './ModifiedTabs';
23
22
  export { MultiAddSelect } from './MultiAddSelect';
24
23
  export { NotificationsPanel } from './NotificationsPanel';
@@ -40,6 +40,7 @@ var defaults = {
40
40
  NoTagsEmptyState: true,
41
41
  NotFoundEmptyState: true,
42
42
  NotificationsEmptyState: true,
43
+ OptionsTile: true,
43
44
  PageHeader: true,
44
45
  ProductiveCard: true,
45
46
  RemoveModal: true,
@@ -54,14 +55,12 @@ var defaults = {
54
55
  // other public components not yet reviewed and released:
55
56
  MultiAddSelect: false,
56
57
  SingleAddSelect: false,
57
- LoadingBar: false,
58
58
  ModifiedTabs: false,
59
59
  Toolbar: false,
60
60
  ToolbarButton: false,
61
61
  ToolbarGroup: false,
62
62
  WebTerminal: false,
63
63
  EditSidePanel: false,
64
- OptionsTile: false,
65
64
  CancelableTextEdit: false,
66
65
  InlineEdit: false,
67
66
  DataSpreadsheet: false