@carbon/ibm-products 2.25.0 → 2.27.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (162) hide show
  1. package/css/index-full-carbon.css +556 -63
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +1 -1
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +50 -16
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +1 -1
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +556 -63
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +1 -1
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +527 -55
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +1 -1
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/BigNumbers/BigNumbers.d.ts +11 -0
  18. package/es/components/BigNumbers/BigNumbers.js +238 -0
  19. package/es/components/BigNumbers/constants.d.ts +13 -0
  20. package/es/components/BigNumbers/constants.js +67 -0
  21. package/es/components/BigNumbers/index.d.ts +1 -0
  22. package/es/components/Cascade/Cascade.d.ts +19 -2
  23. package/es/components/Cascade/Cascade.js +12 -9
  24. package/es/components/Coachmark/CoachmarkTagline.js +1 -2
  25. package/es/components/CoachmarkStack/CoachmarkStackHome.js +1 -1
  26. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +4 -3
  27. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +3 -2
  28. package/es/components/DataSpreadsheet/utils/checkForHoldingKey.d.ts +1 -0
  29. package/es/components/DataSpreadsheet/utils/checkForHoldingKey.js +17 -0
  30. package/es/components/Datagrid/Datagrid/Datagrid.js +9 -2
  31. package/es/components/Datagrid/Datagrid/DatagridContent.d.ts +3 -1
  32. package/es/components/Datagrid/Datagrid/DatagridContent.js +6 -2
  33. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +21 -8
  34. package/es/components/Datagrid/Datagrid/DatagridRow.js +15 -2
  35. package/es/components/Datagrid/Datagrid/DatagridToolbar.d.ts +10 -1
  36. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +21 -4
  37. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +32 -9
  38. package/es/components/Datagrid/Datagrid/addons/Filtering/constants.d.ts +3 -1
  39. package/es/components/Datagrid/Datagrid/addons/Filtering/constants.js +4 -1
  40. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +35 -3
  41. package/es/components/Datagrid/Datagrid/addons/Slug/DatagridSlug.d.ts +2 -0
  42. package/es/components/Datagrid/Datagrid/addons/Slug/{ColumnHeaderSlug.js → DatagridSlug.js} +4 -4
  43. package/es/components/Datagrid/Datagrid/addons/stateReducer.js +3 -3
  44. package/es/components/Datagrid/useSelectAllToggle.js +5 -3
  45. package/es/components/Datagrid/useSortableColumns.js +2 -2
  46. package/es/components/EmptyStates/EmptyStateContent.d.ts +1 -1
  47. package/es/components/FullPageError/FullPageError.js +41 -15
  48. package/es/components/FullPageError/assets/Error403SVG.d.ts +9 -0
  49. package/es/components/FullPageError/assets/Error403SVG.js +714 -0
  50. package/es/components/FullPageError/assets/Error404SVG.d.ts +9 -0
  51. package/es/components/FullPageError/assets/Error404SVG.js +623 -0
  52. package/es/components/HTTPErrors/HTTPErrorContent.d.ts +1 -1
  53. package/es/components/InterstitialScreen/InterstitialScreen.js +1 -1
  54. package/es/components/SidePanel/SidePanel.js +13 -6
  55. package/es/components/SidePanel/motion/variants.d.ts +39 -12
  56. package/es/components/SidePanel/motion/variants.js +42 -11
  57. package/es/components/StringFormatter/StringFormatter.d.ts +6 -0
  58. package/es/components/StringFormatter/StringFormatter.js +79 -0
  59. package/es/components/StringFormatter/index.d.ts +1 -0
  60. package/es/components/StringFormatter/utils/enums.d.ts +14 -0
  61. package/es/components/StringFormatter/utils/enums.js +23 -0
  62. package/es/components/Tearsheet/TearsheetShell.js +26 -8
  63. package/es/components/UserAvatar/UserAvatar.js +59 -44
  64. package/es/components/index.d.ts +2 -0
  65. package/es/global/js/hooks/index.d.ts +2 -0
  66. package/es/global/js/hooks/useFocus.d.ts +11 -0
  67. package/es/global/js/hooks/useFocus.js +76 -0
  68. package/es/global/js/hooks/useIsomorphicEffect.d.ts +2 -0
  69. package/es/global/js/hooks/useIsomorphicEffect.js +14 -0
  70. package/es/global/js/package-settings.d.ts +2 -0
  71. package/es/global/js/package-settings.js +2 -0
  72. package/es/index.js +2 -0
  73. package/es/settings.d.ts +2 -0
  74. package/lib/components/BigNumbers/BigNumbers.d.ts +11 -0
  75. package/lib/components/BigNumbers/BigNumbers.js +244 -0
  76. package/lib/components/BigNumbers/constants.d.ts +13 -0
  77. package/lib/components/BigNumbers/constants.js +76 -0
  78. package/lib/components/BigNumbers/index.d.ts +1 -0
  79. package/lib/components/Cascade/Cascade.d.ts +19 -2
  80. package/lib/components/Cascade/Cascade.js +12 -9
  81. package/lib/components/Coachmark/CoachmarkTagline.js +3 -4
  82. package/lib/components/CoachmarkStack/CoachmarkStackHome.js +2 -2
  83. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +4 -3
  84. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +3 -2
  85. package/lib/components/DataSpreadsheet/utils/checkForHoldingKey.d.ts +1 -0
  86. package/lib/components/DataSpreadsheet/utils/checkForHoldingKey.js +21 -0
  87. package/lib/components/Datagrid/Datagrid/Datagrid.js +9 -2
  88. package/lib/components/Datagrid/Datagrid/DatagridContent.d.ts +3 -1
  89. package/lib/components/Datagrid/Datagrid/DatagridContent.js +6 -2
  90. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +20 -7
  91. package/lib/components/Datagrid/Datagrid/DatagridRow.js +14 -1
  92. package/lib/components/Datagrid/Datagrid/DatagridToolbar.d.ts +10 -1
  93. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +20 -3
  94. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +30 -7
  95. package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.d.ts +3 -1
  96. package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.js +4 -0
  97. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +33 -1
  98. package/lib/components/Datagrid/Datagrid/addons/Slug/DatagridSlug.d.ts +2 -0
  99. package/lib/components/Datagrid/Datagrid/addons/Slug/{ColumnHeaderSlug.js → DatagridSlug.js} +4 -4
  100. package/lib/components/Datagrid/Datagrid/addons/stateReducer.js +3 -3
  101. package/lib/components/Datagrid/useSelectAllToggle.js +4 -2
  102. package/lib/components/Datagrid/useSortableColumns.js +2 -2
  103. package/lib/components/EmptyStates/EmptyStateContent.d.ts +1 -1
  104. package/lib/components/FullPageError/FullPageError.js +41 -15
  105. package/lib/components/FullPageError/assets/Error403SVG.d.ts +9 -0
  106. package/lib/components/FullPageError/assets/Error403SVG.js +722 -0
  107. package/lib/components/FullPageError/assets/Error404SVG.d.ts +9 -0
  108. package/lib/components/FullPageError/assets/Error404SVG.js +631 -0
  109. package/lib/components/HTTPErrors/HTTPErrorContent.d.ts +1 -1
  110. package/lib/components/InterstitialScreen/InterstitialScreen.js +3 -3
  111. package/lib/components/SidePanel/SidePanel.js +11 -4
  112. package/lib/components/SidePanel/motion/variants.d.ts +39 -12
  113. package/lib/components/SidePanel/motion/variants.js +42 -10
  114. package/lib/components/StringFormatter/StringFormatter.d.ts +6 -0
  115. package/lib/components/StringFormatter/StringFormatter.js +85 -0
  116. package/lib/components/StringFormatter/index.d.ts +1 -0
  117. package/lib/components/StringFormatter/utils/enums.d.ts +14 -0
  118. package/lib/components/StringFormatter/utils/enums.js +27 -0
  119. package/lib/components/Tearsheet/TearsheetShell.js +26 -8
  120. package/lib/components/UserAvatar/UserAvatar.js +59 -44
  121. package/lib/components/index.d.ts +2 -0
  122. package/lib/global/js/hooks/index.d.ts +2 -0
  123. package/lib/global/js/hooks/useFocus.d.ts +11 -0
  124. package/lib/global/js/hooks/useFocus.js +80 -0
  125. package/lib/global/js/hooks/useIsomorphicEffect.d.ts +2 -0
  126. package/lib/global/js/hooks/useIsomorphicEffect.js +18 -0
  127. package/lib/global/js/package-settings.d.ts +2 -0
  128. package/lib/global/js/package-settings.js +2 -0
  129. package/lib/index.js +10 -0
  130. package/lib/settings.d.ts +2 -0
  131. package/package.json +7 -7
  132. package/scss/components/BigNumbers/_big-numbers.scss +151 -0
  133. package/scss/components/BigNumbers/_carbon-imports.scss +11 -0
  134. package/scss/components/BigNumbers/_index-with-carbon.scss +9 -0
  135. package/scss/components/BigNumbers/_index.scss +8 -0
  136. package/scss/components/Datagrid/styles/_datagrid.scss +19 -0
  137. package/scss/components/FilterSummary/_filter-summary.scss +1 -1
  138. package/scss/components/FullPageError/_full-page-error.scss +20 -2
  139. package/scss/components/ProductiveCard/_productive-card.scss +1 -1
  140. package/scss/components/SidePanel/_side-panel.scss +1 -1
  141. package/scss/components/StringFormatter/_carbon-imports.scss +10 -0
  142. package/scss/components/StringFormatter/_index-with-carbon.scss +9 -0
  143. package/scss/components/StringFormatter/_index.scss +8 -0
  144. package/scss/components/StringFormatter/_string-formatter.scss +97 -0
  145. package/scss/components/Tearsheet/_tearsheet.scss +34 -2
  146. package/scss/components/UserAvatar/_user-avatar.scss +47 -4
  147. package/scss/components/_index-with-carbon.scss +2 -0
  148. package/scss/components/_index.scss +2 -0
  149. package/es/components/Datagrid/Datagrid/addons/Slug/ColumnHeaderSlug.d.ts +0 -2
  150. package/es/node_modules/@carbon/icon-helpers/es/index.js +0 -140
  151. package/es/node_modules/@carbon/icons-react/es/Icon.js +0 -73
  152. package/es/node_modules/@carbon/icons-react/es/generated/bucket-0.js +0 -2985
  153. package/es/node_modules/@carbon/icons-react/es/generated/bucket-3.js +0 -2900
  154. package/es/node_modules/@carbon/icons-react/es/generated/bucket-8.js +0 -3004
  155. package/es/node_modules/@carbon/icons-react/es/iconPropTypes-4cbeb95d.js +0 -14
  156. package/lib/components/Datagrid/Datagrid/addons/Slug/ColumnHeaderSlug.d.ts +0 -2
  157. package/lib/node_modules/@carbon/icon-helpers/es/index.js +0 -145
  158. package/lib/node_modules/@carbon/icons-react/es/Icon.js +0 -81
  159. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-0.js +0 -3117
  160. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-3.js +0 -3032
  161. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-8.js +0 -3136
  162. package/lib/node_modules/@carbon/icons-react/es/iconPropTypes-4cbeb95d.js +0 -18
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import { slicedToArray as _slicedToArray, objectWithoutProperties as _objectWithoutProperties, extends as _extends, defineProperty as _defineProperty, objectSpread2 as _objectSpread2 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
9
- import React__default, { useEffect, useState } from 'react';
9
+ import React__default, { useEffect, useState, isValidElement } from 'react';
10
10
  import cx from '../../../node_modules/classnames/index.js';
11
11
  import { TableRow, TableHeader } from '@carbon/react';
12
12
  import { px } from '@carbon/layout';
@@ -14,8 +14,9 @@ import { selectionColumnId } from '../common-column-ids.js';
14
14
  import { pkg } from '../../../settings.js';
15
15
  import { handleColumnResizeEndEvent, handleColumnResizingEvent } from './addons/stateReducer.js';
16
16
  import { getNodeTextContent } from '../../../global/js/utils/getNodeTextContent.js';
17
- import { ColumnHeaderSlug } from './addons/Slug/ColumnHeaderSlug.js';
17
+ import { DatagridSlug } from './addons/Slug/DatagridSlug.js';
18
18
 
19
+ var _th;
19
20
  var _excluded = ["role"],
20
21
  _excluded2 = ["className", "role"],
21
22
  _excluded3 = ["role", "className"];
@@ -41,7 +42,8 @@ var ResizeHeader = function ResizeHeader(_ref) {
41
42
  minWidth = _ref.minWidth,
42
43
  dispatch = _ref.dispatch,
43
44
  onColResizeEnd = _ref.onColResizeEnd,
44
- resizerAriaLabel = _ref.resizerAriaLabel;
45
+ resizerAriaLabel = _ref.resizerAriaLabel,
46
+ isFetching = _ref.isFetching;
45
47
  // eslint-disable-next-line no-unused-vars
46
48
  resizerProps.role;
47
49
  var headerProps = _objectWithoutProperties(resizerProps, _excluded);
@@ -79,14 +81,17 @@ var ResizeHeader = function ResizeHeader(_ref) {
79
81
  className: "".concat(blockClass, "__col-resizer-range"),
80
82
  type: "range",
81
83
  defaultValue: originalCol.width,
82
- "aria-label": resizerAriaLabel || 'Resize column'
84
+ "aria-label": resizerAriaLabel || 'Resize column',
85
+ disabled: isFetching
83
86
  })), /*#__PURE__*/React__default.createElement("span", {
84
87
  className: "".concat(blockClass, "__col-resize-indicator")
85
88
  }));
86
89
  };
87
90
  var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
88
91
  var resizerAriaLabel = datagridState.resizerAriaLabel,
89
- isTableSortable = datagridState.isTableSortable;
92
+ isTableSortable = datagridState.isTableSortable,
93
+ rows = datagridState.rows,
94
+ isFetching = datagridState.isFetching;
90
95
  // Used to measure the height of the table and uses that value
91
96
  // to display a vertical line to indicate the column you are resizing
92
97
  useEffect(function () {
@@ -132,14 +137,21 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
132
137
  if (isTableSortable) {
133
138
  return;
134
139
  }
135
- return /*#__PURE__*/React__default.createElement(ColumnHeaderSlug, {
140
+ return /*#__PURE__*/React__default.createElement(DatagridSlug, {
136
141
  slug: slug
137
142
  });
138
143
  };
144
+ var foundAIRow = rows.some(function (r) {
145
+ var _r$original;
146
+ return /*#__PURE__*/isValidElement(r === null || r === void 0 || (_r$original = r.original) === null || _r$original === void 0 ? void 0 : _r$original.slug);
147
+ });
139
148
  return /*#__PURE__*/React__default.createElement(TableRow, _extends({}, headerGroupProps, {
140
149
  className: cx("".concat(blockClass, "__head"), headerGroupClassName),
141
150
  ref: headRef
142
- }), datagridState.headers.filter(function (_ref3) {
151
+ }), foundAIRow ? _th || (_th = /*#__PURE__*/React__default.createElement("th", {
152
+ scope: "col",
153
+ "aria-hidden": "false"
154
+ })) : null, datagridState.headers.filter(function (_ref3) {
143
155
  var isVisible = _ref3.isVisible;
144
156
  return isVisible;
145
157
  }).map(function (header, index) {
@@ -180,7 +192,8 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
180
192
  minWidth: minWidth,
181
193
  dispatch: dispatch,
182
194
  onColResizeEnd: onColResizeEnd,
183
- resizerAriaLabel: resizerAriaLabel
195
+ resizerAriaLabel: resizerAriaLabel,
196
+ isFetching: isFetching
184
197
  }));
185
198
  }));
186
199
  };
@@ -6,12 +6,13 @@
6
6
  */
7
7
 
8
8
  import { defineProperty as _defineProperty, objectWithoutProperties as _objectWithoutProperties, extends as _extends, objectSpread2 as _objectSpread2 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
9
- import React__default from 'react';
9
+ import React__default, { isValidElement } from 'react';
10
10
  import { TableRow, SkeletonText, TableCell } from '@carbon/react';
11
11
  import { px } from '@carbon/layout';
12
12
  import { selectionColumnId } from '../common-column-ids.js';
13
13
  import cx from '../../../node_modules/classnames/index.js';
14
14
  import { pkg, carbon } from '../../../settings.js';
15
+ import { DatagridSlug } from './addons/Slug/DatagridSlug.js';
15
16
 
16
17
  var _SkeletonText;
17
18
  var _excluded = ["role"],
@@ -27,7 +28,9 @@ var rowHeights = {
27
28
 
28
29
  // eslint-disable-next-line react/prop-types
29
30
  var DatagridRow = function DatagridRow(datagridState) {
31
+ var _row$original, _row$original2;
30
32
  var row = datagridState.row,
33
+ rows = datagridState.rows,
31
34
  rowSize = datagridState.rowSize,
32
35
  withNestedRows = datagridState.withNestedRows,
33
36
  prepareRow = datagridState.prepareRow,
@@ -109,6 +112,10 @@ var DatagridRow = function DatagridRow(datagridState) {
109
112
  var _row$getRowProps = row.getRowProps();
110
113
  _row$getRowProps.role;
111
114
  var rowProps = _objectWithoutProperties(_row$getRowProps, _excluded);
115
+ var foundAIRow = rows.some(function (r) {
116
+ var _r$original;
117
+ return /*#__PURE__*/isValidElement(r === null || r === void 0 || (_r$original = r.original) === null || _r$original === void 0 ? void 0 : _r$original.slug);
118
+ });
112
119
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
113
120
  key: key
114
121
  }, /*#__PURE__*/React__default.createElement(TableRow, _extends({
@@ -120,7 +127,13 @@ var DatagridRow = function DatagridRow(datagridState) {
120
127
  onFocus: hoverHandler,
121
128
  onBlur: focusRemover,
122
129
  onKeyUp: handleOnKeyUp
123
- }, setAdditionalRowProps()), row.cells.map(function (cell, index) {
130
+ }, setAdditionalRowProps()), foundAIRow ? row !== null && row !== void 0 && (_row$original = row.original) !== null && _row$original !== void 0 && _row$original.slug ? /*#__PURE__*/React__default.createElement("td", {
131
+ className: "".concat(blockClass, "__table-row-ai-enabled")
132
+ }, /*#__PURE__*/React__default.createElement(DatagridSlug, {
133
+ slug: row === null || row === void 0 || (_row$original2 = row.original) === null || _row$original2 === void 0 ? void 0 : _row$original2.slug
134
+ })) : /*#__PURE__*/React__default.createElement("td", {
135
+ className: "".concat(blockClass, "__table-row-ai-spacer")
136
+ }) : null, row.cells.map(function (cell, index) {
124
137
  var _cell$column, _content$props;
125
138
  var cellProps = cell.getCellProps();
126
139
  // eslint-disable-next-line no-unused-vars
@@ -1,2 +1,11 @@
1
1
  export default DatagridToolbar;
2
- declare function DatagridToolbar(datagridState: any): import("react/jsx-runtime").JSX.Element | null;
2
+ declare function DatagridToolbar({ ariaToolbarLabel, ...datagridState }: {
3
+ [x: string]: any;
4
+ ariaToolbarLabel: any;
5
+ }): import("react/jsx-runtime").JSX.Element | null;
6
+ declare namespace DatagridToolbar {
7
+ namespace propTypes {
8
+ let ariaToolbarLabel: PropTypes.Requireable<string>;
9
+ }
10
+ }
11
+ import PropTypes from 'prop-types';
@@ -5,14 +5,16 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import { slicedToArray as _slicedToArray, defineProperty as _defineProperty } from '../../../_virtual/_rollupPluginBabelHelpers.js';
8
+ import { objectWithoutProperties as _objectWithoutProperties, slicedToArray as _slicedToArray, defineProperty as _defineProperty } from '../../../_virtual/_rollupPluginBabelHelpers.js';
9
9
  import React__default, { useRef, useState, useEffect } from 'react';
10
+ import PropTypes from '../../../node_modules/prop-types/index.js';
10
11
  import { TableToolbar, TableBatchActions, TableBatchAction, MenuButton, MenuItem } from '@carbon/react';
11
12
  import { useResizeObserver } from '../../../global/js/hooks/useResizeObserver.js';
12
13
  import { pkg, carbon } from '../../../settings.js';
13
14
  import cx from '../../../node_modules/classnames/index.js';
14
15
  import { handleSelectAllRowData } from './addons/stateReducer.js';
15
16
 
17
+ var _excluded = ["ariaToolbarLabel"];
16
18
  var blockClass = "".concat(pkg.prefix, "--datagrid__table-toolbar");
17
19
  var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridState, width, ref) {
18
20
  var _useState = useState(false),
@@ -107,6 +109,12 @@ var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridS
107
109
  }
108
110
  };
109
111
  var onCancelHandler = function onCancelHandler() {
112
+ handleSelectAllRowData({
113
+ dispatch: dispatch,
114
+ rows: [],
115
+ getRowId: getRowId,
116
+ isChecked: false
117
+ });
110
118
  toggleAllRowsSelected(false);
111
119
  setGlobalFilter(null);
112
120
  };
@@ -144,7 +152,9 @@ var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridS
144
152
  }
145
153
  })), renderBatchActionOverflow());
146
154
  };
147
- var DatagridToolbar = function DatagridToolbar(datagridState) {
155
+ var DatagridToolbar = function DatagridToolbar(_ref2) {
156
+ var ariaToolbarLabel = _ref2.ariaToolbarLabel,
157
+ datagridState = _objectWithoutProperties(_ref2, _excluded);
148
158
  var ref = useRef(null);
149
159
  var _useResizeObserver = useResizeObserver(ref),
150
160
  width = _useResizeObserver.width;
@@ -156,9 +166,16 @@ var DatagridToolbar = function DatagridToolbar(datagridState) {
156
166
  return batchActions && DatagridActions ? /*#__PURE__*/React__default.createElement("div", {
157
167
  ref: ref,
158
168
  className: cx([blockClass, "".concat(blockClass, "--").concat(getRowHeight)])
159
- }, /*#__PURE__*/React__default.createElement(TableToolbar, null, DatagridActions && /*#__PURE__*/React__default.createElement(DatagridActions, datagridState), DatagridBatchActionsToolbar && DatagridBatchActionsToolbar(datagridState, width, ref))) : DatagridActions ? /*#__PURE__*/React__default.createElement("div", {
169
+ }, /*#__PURE__*/React__default.createElement(TableToolbar, {
170
+ "aria-label": ariaToolbarLabel
171
+ }, DatagridActions && /*#__PURE__*/React__default.createElement(DatagridActions, datagridState), DatagridBatchActionsToolbar && DatagridBatchActionsToolbar(datagridState, width, ref))) : DatagridActions ? /*#__PURE__*/React__default.createElement("div", {
160
172
  className: blockClass
161
- }, /*#__PURE__*/React__default.createElement(TableToolbar, null, DatagridActions && /*#__PURE__*/React__default.createElement(DatagridActions, datagridState), DatagridBatchActions && DatagridBatchActions(datagridState))) : null;
173
+ }, /*#__PURE__*/React__default.createElement(TableToolbar, {
174
+ "aria-label": ariaToolbarLabel
175
+ }, DatagridActions && /*#__PURE__*/React__default.createElement(DatagridActions, datagridState), DatagridBatchActions && DatagridBatchActions(datagridState))) : null;
176
+ };
177
+ DatagridToolbar.propTypes = {
178
+ ariaToolbarLabel: PropTypes.string
162
179
  };
163
180
  var DatagridToolbar$1 = DatagridToolbar;
164
181
 
@@ -6,9 +6,9 @@
6
6
  */
7
7
 
8
8
  import { slicedToArray as _slicedToArray, objectSpread2 as _objectSpread2, toConsumableArray as _toConsumableArray } from '../../../../../_virtual/_rollupPluginBabelHelpers.js';
9
- import React__default, { createContext, useState } from 'react';
9
+ import React__default, { createContext, useState, useReducer } from 'react';
10
10
  import PropTypes from '../../../../../node_modules/prop-types/index.js';
11
- import { DROPDOWN, RADIO, NUMBER, DATE, CHECKBOX, CLEAR_SINGLE_FILTER } from './constants.js';
11
+ import { DROPDOWN, RADIO, NUMBER, DATE, CHECKBOX, SAVED_FILTERS, CLEAR_SINGLE_FILTER } from './constants.js';
12
12
 
13
13
  var FilterContext = /*#__PURE__*/createContext();
14
14
  var EventEmitter = {
@@ -139,22 +139,45 @@ var prepareFiltersForTags = function prepareFiltersForTags(filters, renderDateLa
139
139
  });
140
140
  return tags;
141
141
  };
142
- var FilterProvider = function FilterProvider(_ref3) {
143
- var children = _ref3.children,
144
- filters = _ref3.filters,
145
- filterProps = _ref3.filterProps;
146
- var _ref4 = filterProps || {},
147
- renderDateLabel = _ref4.renderDateLabel;
142
+ var filteringReducer = function filteringReducer(state, action) {
143
+ switch (action.type) {
144
+ case SAVED_FILTERS:
145
+ {
146
+ var _ref3 = action.payload || {},
147
+ savedFilters = _ref3.savedFilters;
148
+ return _objectSpread2(_objectSpread2({}, state), {}, {
149
+ savedFilters: savedFilters
150
+ });
151
+ }
152
+ default:
153
+ return state;
154
+ }
155
+ };
156
+ var FilterProvider = function FilterProvider(_ref4) {
157
+ var children = _ref4.children,
158
+ filters = _ref4.filters,
159
+ filterProps = _ref4.filterProps;
160
+ var _ref5 = filterProps || {},
161
+ renderDateLabel = _ref5.renderDateLabel;
148
162
  var filterTags = prepareFiltersForTags(filters, renderDateLabel);
149
163
  var _useState = useState(false),
150
164
  _useState2 = _slicedToArray(_useState, 2),
151
165
  panelOpen = _useState2[0],
152
166
  setPanelOpen = _useState2[1];
167
+ var initialState = {
168
+ savedFilters: []
169
+ };
170
+ var _useReducer = useReducer(filteringReducer, initialState),
171
+ _useReducer2 = _slicedToArray(_useReducer, 2),
172
+ state = _useReducer2[0],
173
+ dispatch = _useReducer2[1];
153
174
  var value = {
154
175
  filterTags: filterTags,
155
176
  EventEmitter: EventEmitter,
156
177
  panelOpen: panelOpen,
157
- setPanelOpen: setPanelOpen
178
+ setPanelOpen: setPanelOpen,
179
+ state: state,
180
+ dispatch: dispatch
158
181
  };
159
182
  return /*#__PURE__*/React__default.createElement(FilterContext.Provider, {
160
183
  value: value
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright IBM Corp. 2022, 2022
2
+ * Copyright IBM Corp. 2022, 2024
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.
@@ -22,3 +22,5 @@ export const CLEAR_SINGLE_FILTER: "clearSingleFilter";
22
22
  /** Constants for panel dimensions */
23
23
  export const PANEL_WIDTH: 320;
24
24
  export const ACTION_SET_HEIGHT: 64;
25
+ /** Constants for local reducer */
26
+ export const SAVED_FILTERS: "savedFilters";
@@ -28,4 +28,7 @@ var CLEAR_SINGLE_FILTER = 'clearSingleFilter';
28
28
  var PANEL_WIDTH = 320;
29
29
  var ACTION_SET_HEIGHT = 64;
30
30
 
31
- export { ACTION_SET_HEIGHT, BATCH, CHECKBOX, CLEAR_FILTERS, CLEAR_SINGLE_FILTER, DATE, DROPDOWN, FLYOUT, INSTANT, NUMBER, PANEL, PANEL_WIDTH, RADIO };
31
+ /** Constants for local reducer */
32
+ var SAVED_FILTERS = 'savedFilters';
33
+
34
+ export { ACTION_SET_HEIGHT, BATCH, CHECKBOX, CLEAR_FILTERS, CLEAR_SINGLE_FILTER, DATE, DROPDOWN, FLYOUT, INSTANT, NUMBER, PANEL, PANEL_WIDTH, RADIO, SAVED_FILTERS };
@@ -6,11 +6,12 @@
6
6
  */
7
7
 
8
8
  import { slicedToArray as _slicedToArray, extends as _extends, toConsumableArray as _toConsumableArray, objectSpread2 as _objectSpread2, defineProperty as _defineProperty } from '../../../../../../_virtual/_rollupPluginBabelHelpers.js';
9
- import { DROPDOWN, RADIO, CHECKBOX, NUMBER, DATE, BATCH, INSTANT, PANEL } from '../constants.js';
9
+ import { DROPDOWN, RADIO, CHECKBOX, NUMBER, DATE, BATCH, SAVED_FILTERS, INSTANT, PANEL } from '../constants.js';
10
10
  import { Dropdown, FormGroup, RadioButtonGroup, RadioButton, NumberInput, DatePicker, DatePickerInput, Layer, Checkbox } from '@carbon/react';
11
- import React__default, { useState, useRef, useCallback, useEffect } from 'react';
11
+ import React__default, { useContext, useState, useRef, useCallback, useEffect } from 'react';
12
12
  import OverflowCheckboxes from '../OverflowCheckboxes.js';
13
13
  import { getInitialStateFromFilters } from '../utils.js';
14
+ import { FilterContext } from '../FilterProvider.js';
14
15
  import { handleCheckboxChange } from '../handleCheckboxChange.js';
15
16
  import { usePreviousValue } from '../../../../../../global/js/hooks/usePreviousValue.js';
16
17
 
@@ -25,6 +26,10 @@ var useFilters = function useFilters(_ref) {
25
26
  panelOpen = _ref.panelOpen,
26
27
  autoHideFilters = _ref.autoHideFilters,
27
28
  isFetching = _ref.isFetching;
29
+ var _useContext = useContext(FilterContext),
30
+ state = _useContext.state,
31
+ localDispatch = _useContext.dispatch;
32
+ var savedFilters = state.savedFilters;
28
33
  /** State */
29
34
  var _useState = useState(getInitialStateFromFilters(filters, variation, reactTableFiltersState)),
30
35
  _useState2 = _slicedToArray(_useState, 2),
@@ -122,6 +127,16 @@ var useFilters = function useFilters(_ref) {
122
127
  filterCopy.splice(index, 1);
123
128
  }
124
129
  setFiltersObjectArray(filterCopy);
130
+
131
+ // Dispatch action from local filter context to track filters in order
132
+ // to keep history if `isFetching` becomes true. If so, react-table
133
+ // clears all filter history
134
+ localDispatch({
135
+ type: SAVED_FILTERS,
136
+ payload: {
137
+ savedFilters: filterCopy
138
+ }
139
+ });
125
140
  if (updateMethod === INSTANT) {
126
141
  setAllFilters(filterCopy);
127
142
  }
@@ -312,10 +327,27 @@ var useFilters = function useFilters(_ref) {
312
327
  setAllFilters(JSON.parse(prevFiltersObjectArrayRef.current));
313
328
  setFetchingReset(true);
314
329
  }
330
+ if (isFetching && fetchingReset) {
331
+ var cleanFilters = function cleanFilters(originalFilterState) {
332
+ var copy = _objectSpread2({}, originalFilterState);
333
+ var updatedFilters = savedFilters.map(function (f) {
334
+ if (Object.hasOwn(copy, f.id)) {
335
+ copy[f.id] = f;
336
+ return copy;
337
+ }
338
+ return copy;
339
+ });
340
+ return updatedFilters[0];
341
+ };
342
+ setFiltersObjectArray(savedFilters);
343
+ var filterStateCopy = cleanFilters(filtersState);
344
+ setFiltersState(filterStateCopy);
345
+ }
315
346
  if (!isFetching) {
316
347
  setFetchingReset(false);
317
348
  }
318
- }, [isFetching, reactTableFiltersState, setAllFilters, fetchingReset]);
349
+ // eslint-disable-next-line react-hooks/exhaustive-deps
350
+ }, [isFetching, reactTableFiltersState, setAllFilters, fetchingReset, savedFilters, filtersObjectArray]);
319
351
  var cancel = function cancel() {
320
352
  // Reverting to previous filters only applies when using batch actions
321
353
  if (updateMethod === BATCH) {
@@ -0,0 +1,2 @@
1
+ export const DatagridSlug: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
2
+ import React from 'react';
@@ -8,7 +8,7 @@
8
8
  import React__default, { forwardRef, isValidElement } from 'react';
9
9
  import PropTypes from '../../../../../node_modules/prop-types/index.js';
10
10
 
11
- var ColumnHeaderSlug = /*#__PURE__*/forwardRef(function (_ref, ref) {
11
+ var DatagridSlug = /*#__PURE__*/forwardRef(function (_ref, ref) {
12
12
  var slug = _ref.slug;
13
13
  if (slug && /*#__PURE__*/isValidElement(slug)) {
14
14
  var normalizedSlug = /*#__PURE__*/React__default.cloneElement(slug, {
@@ -17,13 +17,13 @@ var ColumnHeaderSlug = /*#__PURE__*/forwardRef(function (_ref, ref) {
17
17
  });
18
18
  return normalizedSlug;
19
19
  }
20
- return;
20
+ return null;
21
21
  });
22
- ColumnHeaderSlug.propTypes = {
22
+ DatagridSlug.propTypes = {
23
23
  /**
24
24
  * Specify the AI slug to be displayed
25
25
  */
26
26
  slug: PropTypes.node
27
27
  };
28
28
 
29
- export { ColumnHeaderSlug };
29
+ export { DatagridSlug };
@@ -89,7 +89,7 @@ var stateReducer = function stateReducer(newState, action) {
89
89
  if (rows) {
90
90
  var newSelectedRowData = {};
91
91
  rows.forEach(function (row) {
92
- newSelectedRowData[getRowId(row, row.index)] = row;
92
+ newSelectedRowData[getRowId(row.original, row.index)] = row.original;
93
93
  });
94
94
  return _objectSpread2(_objectSpread2({}, newState), {}, {
95
95
  selectedRowData: indeterminate || !isChecked ? {} : newSelectedRowData
@@ -108,7 +108,7 @@ var stateReducer = function stateReducer(newState, action) {
108
108
  }
109
109
  if (_isChecked) {
110
110
  return _objectSpread2(_objectSpread2({}, newState), {}, {
111
- selectedRowData: _objectSpread2(_objectSpread2({}, newState.selectedRowData), {}, _defineProperty({}, _getRowId(rowData, rowData.index), rowData))
111
+ selectedRowData: _objectSpread2(_objectSpread2({}, newState.selectedRowData), {}, _defineProperty({}, _getRowId(rowData.original, rowData.index), rowData.original))
112
112
  });
113
113
  }
114
114
  if (rowData && !_isChecked) {
@@ -116,7 +116,7 @@ var stateReducer = function stateReducer(newState, action) {
116
116
  var dataWithRemovedRow = Object.fromEntries(Object.entries(newData).filter(function (_ref5) {
117
117
  var _ref6 = _slicedToArray(_ref5, 1),
118
118
  key = _ref6[0];
119
- return parseInt(key) !== parseInt(rowData.index);
119
+ return parseInt(key) !== parseInt(_getRowId(rowData.original, rowData.index));
120
120
  }));
121
121
  return _objectSpread2(_objectSpread2({}, newState), {}, {
122
122
  selectedRowData: dataWithRemovedRow
@@ -6,11 +6,12 @@
6
6
  */
7
7
 
8
8
  import { slicedToArray as _slicedToArray, defineProperty as _defineProperty } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
- import React__default, { useState, useLayoutEffect } from 'react';
9
+ import React__default, { useState } from 'react';
10
10
  import cx from '../../node_modules/classnames/index.js';
11
11
  import { selectionColumnId } from './common-column-ids.js';
12
12
  import SelectAllWithToggle from './Datagrid/DatagridSelectAllWithToggle.js';
13
13
  import { pkg } from '../../settings.js';
14
+ import { useIsomorphicEffect } from '../../global/js/hooks/useIsomorphicEffect.js';
14
15
 
15
16
  var blockClass = "".concat(pkg.prefix, "--datagrid__select-all");
16
17
  var useSelectAllToggle = function useSelectAllToggle(hooks) {
@@ -36,11 +37,12 @@ var useSelectAllWithToggleComponent = function useSelectAllWithToggleComponent(h
36
37
  hooks.useInstance.push(useInstance);
37
38
  };
38
39
  var useAddClassNameToSelectRow = function useAddClassNameToSelectRow(hooks) {
39
- var _useState = useState(window.innerWidth),
40
+ var _useState = useState(0),
40
41
  _useState2 = _slicedToArray(_useState, 2),
41
42
  windowSize = _useState2[0],
42
43
  setWindowSize = _useState2[1];
43
- useLayoutEffect(function () {
44
+ useIsomorphicEffect(function () {
45
+ setWindowSize(window.innerWidth);
44
46
  function updateSize() {
45
47
  setWindowSize(window.innerWidth);
46
48
  }
@@ -12,7 +12,7 @@ import { pkg, carbon } from '../../settings.js';
12
12
  import { Button } from '@carbon/react';
13
13
  import { ArrowsVertical, ArrowDown, ArrowUp } from '@carbon/react/icons';
14
14
  import { SelectAll } from './Datagrid/DatagridSelectAll.js';
15
- import { ColumnHeaderSlug } from './Datagrid/addons/Slug/ColumnHeaderSlug.js';
15
+ import { DatagridSlug } from './Datagrid/addons/Slug/DatagridSlug.js';
16
16
 
17
17
  var blockClass = "".concat(pkg.prefix, "--datagrid");
18
18
  var ordering = {
@@ -107,7 +107,7 @@ var useSortableColumns = function useSortableColumns(hooks) {
107
107
  kind: "ghost",
108
108
  renderIcon: function renderIcon(props) {
109
109
  var _headerProp$column;
110
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ColumnHeaderSlug, {
110
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(DatagridSlug, {
111
111
  slug: headerProp === null || headerProp === void 0 || (_headerProp$column = headerProp.column) === null || _headerProp$column === void 0 ? void 0 : _headerProp$column.slug
112
112
  }), icon(headerProp === null || headerProp === void 0 ? void 0 : headerProp.column, props));
113
113
  },
@@ -112,7 +112,7 @@ export namespace EmptyStateContent {
112
112
  "aria-posinset"?: React.Validator<number | null | undefined> | undefined;
113
113
  "aria-pressed"?: React.Validator<boolean | "true" | "false" | "mixed" | null | undefined> | undefined;
114
114
  "aria-readonly"?: React.Validator<(boolean | "true" | "false") | null | undefined> | undefined;
115
- "aria-relevant"?: React.Validator<"text" | "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | null | undefined> | undefined;
115
+ "aria-relevant"?: React.Validator<"all" | "text" | "additions" | "additions removals" | "additions text" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | null | undefined> | undefined;
116
116
  "aria-required"?: React.Validator<(boolean | "true" | "false") | null | undefined> | undefined;
117
117
  "aria-roledescription"?: React.Validator<string | null | undefined> | undefined;
118
118
  "aria-rowcount"?: React.Validator<number | null | undefined> | undefined;
@@ -13,9 +13,10 @@ import { Grid, Column } from '@carbon/react';
13
13
  import { ErrorGenericSVG } from './assets/ErrorGenericSVG.js';
14
14
  import { getDevtoolsProps } from '../../global/js/utils/devtools.js';
15
15
  import { pkg } from '../../settings.js';
16
+ import { Error404SVG } from './assets/Error404SVG.js';
17
+ import { Error403SVG } from './assets/Error403SVG.js';
16
18
 
17
- var _br;
18
- var _excluded = ["children", "className", "description", "errorLabel", "title"];
19
+ var _excluded = ["children", "className", "description", "errorLabel", "kind", "title"];
19
20
 
20
21
  // Carbon and package components we use.
21
22
  /* TODO: @import(s) of carbon components and other package components. */
@@ -36,9 +37,9 @@ var componentName = 'FullPageError';
36
37
  // or assumption when a prop is not supplied.
37
38
 
38
39
  // Default values for props
39
- // const defaults = {
40
- // /* TODO: add defaults for relevant props if needed */
41
- // };
40
+ var defaults = {
41
+ kind: 'custom'
42
+ };
42
43
 
43
44
  /**
44
45
  * TODO: A description of the component.
@@ -48,8 +49,33 @@ var FullPageError = /*#__PURE__*/React__default.forwardRef(function (_ref, ref)
48
49
  className = _ref.className,
49
50
  description = _ref.description,
50
51
  errorLabel = _ref.errorLabel,
52
+ _ref$kind = _ref.kind,
53
+ kind = _ref$kind === void 0 ? defaults.kind : _ref$kind,
51
54
  title = _ref.title,
52
55
  rest = _objectWithoutProperties(_ref, _excluded);
56
+ var errorData = {
57
+ 403: {
58
+ title: 'Access denied',
59
+ description: 'You are not authorized to access the requested page. Please verify that you are logged in to the hosting environment and your access permissions are correct.',
60
+ svg: /*#__PURE__*/React__default.createElement(Error403SVG, {
61
+ className: cx("".concat(blockClass, "__error-svg"), "".concat(blockClass, "__error-403"))
62
+ })
63
+ },
64
+ 404: {
65
+ title: 'Page not found',
66
+ description: 'The page you requested has moved or is unavailable, or the specified URL is not valid. Please check the URL or search the site for the requested content.',
67
+ svg: /*#__PURE__*/React__default.createElement(Error404SVG, {
68
+ className: cx("".concat(blockClass, "__error-svg"), "".concat(blockClass, "__error-404"))
69
+ })
70
+ },
71
+ custom: {
72
+ title: title,
73
+ description: description,
74
+ svg: /*#__PURE__*/React__default.createElement(ErrorGenericSVG, {
75
+ className: cx("".concat(blockClass, "__error-svg"), "".concat(blockClass, "__error-custom"))
76
+ })
77
+ }
78
+ };
53
79
  return /*#__PURE__*/React__default.createElement("div", _extends({}, rest, {
54
80
  className: cx(blockClass,
55
81
  // Apply the block class to the main HTML element
@@ -75,20 +101,15 @@ var FullPageError = /*#__PURE__*/React__default.forwardRef(function (_ref, ref)
75
101
  className: "".concat(blockClass, "__error-title")
76
102
  }, /*#__PURE__*/React__default.createElement("span", {
77
103
  className: "".concat(blockClass, "__error-label")
78
- }, "\u21B3 ", errorLabel), _br || (_br = /*#__PURE__*/React__default.createElement("br", null)), /*#__PURE__*/React__default.createElement("span", null, title)), /*#__PURE__*/React__default.createElement("p", {
104
+ }, "\u21B3 ", kind === 'custom' ? errorLabel : "Error ".concat(kind)), /*#__PURE__*/React__default.createElement("span", null, errorData[kind].title)), /*#__PURE__*/React__default.createElement("p", {
79
105
  className: "".concat(blockClass, "__description")
80
- }, description), children), /*#__PURE__*/React__default.createElement(Column, {
106
+ }, description || errorData[kind].description), children), /*#__PURE__*/React__default.createElement(Column, {
81
107
  sm: 4,
82
108
  md: 5,
83
109
  lg: 10
84
110
  }, /*#__PURE__*/React__default.createElement("div", {
85
- style: {
86
- display: 'flex',
87
- height: '100%'
88
- }
89
- }, /*#__PURE__*/React__default.createElement(ErrorGenericSVG, {
90
- className: "".concat(blockClass, "__error-svg")
91
- }))))));
111
+ className: "".concat(blockClass, "__error-svg-container")
112
+ }, errorData[kind].svg)))));
92
113
  });
93
114
 
94
115
  // Return a placeholder if not released and not enabled by feature flag
@@ -111,13 +132,18 @@ FullPageError.propTypes = {
111
132
  */
112
133
  className: PropTypes.string,
113
134
  /**
114
- * String that will provide the description for the error code
135
+ * String that will provide the description for the error code. <br/>
136
+ * This is optional for 403 and 404 kinds, and passing this would override their default descriptions.
115
137
  */
116
138
  description: PropTypes.string.isRequired,
117
139
  /**
118
140
  * String that will describe the error that occurred
119
141
  */
120
142
  errorLabel: PropTypes.string.isRequired,
143
+ /**
144
+ * The kind of error page to be displayed, default is custom
145
+ */
146
+ kind: PropTypes.oneOf(['custom', '403', '404']),
121
147
  /**
122
148
  * This will be for the main title of the FullPageError component
123
149
  */
@@ -0,0 +1,9 @@
1
+ export function Error403SVG({ className }: {
2
+ className: any;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ export namespace Error403SVG {
5
+ namespace propTypes {
6
+ export { string as className };
7
+ }
8
+ }
9
+ import { string } from 'prop-types';