@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
@@ -20,6 +20,7 @@ var checkSelectedHeaderCell = require('./utils/checkSelectedHeaderCell.js');
20
20
  var handleHeaderCellSelection = require('./utils/handleHeaderCellSelection.js');
21
21
  var selectAllCells = require('./utils/selectAllCells.js');
22
22
  var getSpreadsheetWidth = require('./utils/getSpreadsheetWidth.js');
23
+ var checkForHoldingKey = require('./utils/checkForHoldingKey.js');
23
24
  var usePreviousValue = require('../../global/js/hooks/usePreviousValue.js');
24
25
  var useSpreadsheetMouseMove = require('./hooks/useSpreadsheetMouseMove.js');
25
26
 
@@ -70,8 +71,8 @@ var DataSpreadsheetHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
70
71
  }, [cellSize, ref, scrollBarSize, previousState === null || previousState === void 0 ? void 0 : previousState.cellSize]);
71
72
  var handleColumnHeaderClick = function handleColumnHeaderClick(index) {
72
73
  return function (event) {
73
- var isHoldingCommandKey = event.metaKey || event.ctrlKey;
74
- var isHoldingShiftKey = event.shiftKey;
74
+ var isHoldingCommandKey = checkForHoldingKey.checkForHoldingKey(event, 'cmd');
75
+ var isHoldingShiftKey = checkForHoldingKey.checkForHoldingKey(event, 'shiftKey');
75
76
  handleHeaderCellSelection.handleHeaderCellSelection({
76
77
  type: 'column',
77
78
  activeCellCoordinates: activeCellCoordinates,
@@ -0,0 +1 @@
1
+ export function checkForHoldingKey(event: any, key: any): any;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Copyright IBM Corp. 2020, 2024
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
+ 'use strict';
9
+
10
+ Object.defineProperty(exports, '__esModule', { value: true });
11
+
12
+ var checkForHoldingKey = function checkForHoldingKey(event, key) {
13
+ // possible key inputs: altKey,ctrlKey,metaKey,shiftKey
14
+ if (key == 'cmd') {
15
+ return event.metaKey || event.ctrlKey;
16
+ } else {
17
+ return event[key];
18
+ }
19
+ };
20
+
21
+ exports.checkForHoldingKey = checkForHoldingKey;
@@ -24,7 +24,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
24
24
 
25
25
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
26
26
 
27
- var _excluded = ["datagridState", "title"];
27
+ var _excluded = ["datagridState", "title", "ariaToolbarLabel"];
28
28
  var blockClass = "".concat(settings.pkg.prefix, "--datagrid");
29
29
  var componentName = 'Datagrid';
30
30
 
@@ -34,6 +34,7 @@ var componentName = 'Datagrid';
34
34
  exports.Datagrid = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
35
35
  var datagridState = _ref.datagridState,
36
36
  title = _ref.title,
37
+ ariaToolbarLabel = _ref.ariaToolbarLabel,
37
38
  rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
38
39
  if (!datagridState) {
39
40
  pconsole["default"].warn('Datagrid was not passed datagridState which is required to render this component.');
@@ -49,7 +50,8 @@ exports.Datagrid = /*#__PURE__*/React__default["default"].forwardRef(function (_
49
50
  var rows = DatagridPagination && datagridState.page || datagridState.rows;
50
51
  var props = {
51
52
  title: title,
52
- datagridState: datagridState
53
+ datagridState: datagridState,
54
+ ariaToolbarLabel: ariaToolbarLabel
53
55
  };
54
56
  return /*#__PURE__*/React__default["default"].createElement(FilterProvider.FilterProvider, {
55
57
  filters: filters,
@@ -70,6 +72,11 @@ exports.Datagrid = settings.pkg.checkComponentEnabled(exports.Datagrid, componen
70
72
  // is used in preference to relying on function.name.
71
73
  exports.Datagrid.displayName = componentName;
72
74
  exports.Datagrid.propTypes = {
75
+ /**
76
+ * Specify a label to be read by screen readers on the container node
77
+ * 'aria-label' of the TableToolbar component.
78
+ */
79
+ ariaToolbarLabel: index$1["default"].string,
73
80
  /**
74
81
  * The data grid state, much of it being supplied by the useDatagrid hook
75
82
  */
@@ -1,9 +1,11 @@
1
- export function DatagridContent({ datagridState, title }: {
1
+ export function DatagridContent({ datagridState, title, ariaToolbarLabel }: {
2
2
  datagridState: any;
3
3
  title: any;
4
+ ariaToolbarLabel: any;
4
5
  }): import("react/jsx-runtime").JSX.Element;
5
6
  export namespace DatagridContent {
6
7
  namespace propTypes {
8
+ let ariaToolbarLabel: PropTypes.Requireable<string>;
7
9
  let datagridState: PropTypes.Requireable<PropTypes.InferProps<{
8
10
  getTableProps: PropTypes.Requireable<(...args: any[]) => any>;
9
11
  getFilterFlyoutProps: PropTypes.Requireable<(...args: any[]) => any>;
@@ -38,7 +38,8 @@ var blockClass = "".concat(settings.pkg.prefix, "--datagrid");
38
38
  var gcClass = "".concat(blockClass, "__grid-container");
39
39
  var DatagridContent = function DatagridContent(_ref) {
40
40
  var datagridState = _ref.datagridState,
41
- title = _ref.title;
41
+ title = _ref.title,
42
+ ariaToolbarLabel = _ref.ariaToolbarLabel;
42
43
  var _useContext = React.useContext(InlineEditContext.InlineEditContext),
43
44
  inlineEditState = _useContext.state,
44
45
  dispatch = _useContext.dispatch;
@@ -159,7 +160,9 @@ var DatagridContent = function DatagridContent(_ref) {
159
160
  className: index["default"]("".concat(gcClass), _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(gcClass, "-active"), gridActive), "".concat(gcClass, "-active--without-toolbar"), withInlineEdit && !DatagridActions), "".concat(gcClass, "-inline-edit"), withInlineEdit), "".concat(blockClass, "__full-height"), withVirtualScroll || fullHeightDatagrid), "".concat(blockClass, "__with-pagination"), DatagridPagination), "".concat(blockClass, "__dense-header"), useDenseHeader)),
160
161
  title: gridTitle,
161
162
  description: gridDescription
162
- }, /*#__PURE__*/React__default["default"].createElement(DatagridToolbar["default"], datagridState), /*#__PURE__*/React__default["default"].createElement("div", {
163
+ }, /*#__PURE__*/React__default["default"].createElement(DatagridToolbar["default"], _rollupPluginBabelHelpers["extends"]({}, datagridState, {
164
+ ariaToolbarLabel: ariaToolbarLabel
165
+ })), /*#__PURE__*/React__default["default"].createElement("div", {
163
166
  className: index["default"]("".concat(blockClass, "__table-container"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "__table-container--filter-open"), panelOpen)),
164
167
  ref: gridAreaRef
165
168
  }, (filterProps === null || filterProps === void 0 ? void 0 : filterProps.variation) === 'panel' && /*#__PURE__*/React__default["default"].createElement(FilterPanel["default"], _rollupPluginBabelHelpers["extends"]({}, getFilterFlyoutProps(), {
@@ -179,6 +182,7 @@ var DatagridContent = function DatagridContent(_ref) {
179
182
  }));
180
183
  };
181
184
  DatagridContent.propTypes = {
185
+ ariaToolbarLabel: index$1["default"].string,
182
186
  datagridState: index$1["default"].shape({
183
187
  getTableProps: index$1["default"].func,
184
188
  getFilterFlyoutProps: index$1["default"].func,
@@ -18,12 +18,13 @@ var commonColumnIds = require('../common-column-ids.js');
18
18
  var settings = require('../../../settings.js');
19
19
  var stateReducer = require('./addons/stateReducer.js');
20
20
  var getNodeTextContent = require('../../../global/js/utils/getNodeTextContent.js');
21
- var ColumnHeaderSlug = require('./addons/Slug/ColumnHeaderSlug.js');
21
+ var DatagridSlug = require('./addons/Slug/DatagridSlug.js');
22
22
 
23
23
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
24
24
 
25
25
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
26
26
 
27
+ var _th;
27
28
  var _excluded = ["role"],
28
29
  _excluded2 = ["className", "role"],
29
30
  _excluded3 = ["role", "className"];
@@ -49,7 +50,8 @@ var ResizeHeader = function ResizeHeader(_ref) {
49
50
  minWidth = _ref.minWidth,
50
51
  dispatch = _ref.dispatch,
51
52
  onColResizeEnd = _ref.onColResizeEnd,
52
- resizerAriaLabel = _ref.resizerAriaLabel;
53
+ resizerAriaLabel = _ref.resizerAriaLabel,
54
+ isFetching = _ref.isFetching;
53
55
  // eslint-disable-next-line no-unused-vars
54
56
  resizerProps.role;
55
57
  var headerProps = _rollupPluginBabelHelpers.objectWithoutProperties(resizerProps, _excluded);
@@ -87,14 +89,17 @@ var ResizeHeader = function ResizeHeader(_ref) {
87
89
  className: "".concat(blockClass, "__col-resizer-range"),
88
90
  type: "range",
89
91
  defaultValue: originalCol.width,
90
- "aria-label": resizerAriaLabel || 'Resize column'
92
+ "aria-label": resizerAriaLabel || 'Resize column',
93
+ disabled: isFetching
91
94
  })), /*#__PURE__*/React__default["default"].createElement("span", {
92
95
  className: "".concat(blockClass, "__col-resize-indicator")
93
96
  }));
94
97
  };
95
98
  var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
96
99
  var resizerAriaLabel = datagridState.resizerAriaLabel,
97
- isTableSortable = datagridState.isTableSortable;
100
+ isTableSortable = datagridState.isTableSortable,
101
+ rows = datagridState.rows,
102
+ isFetching = datagridState.isFetching;
98
103
  // Used to measure the height of the table and uses that value
99
104
  // to display a vertical line to indicate the column you are resizing
100
105
  React.useEffect(function () {
@@ -140,14 +145,21 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
140
145
  if (isTableSortable) {
141
146
  return;
142
147
  }
143
- return /*#__PURE__*/React__default["default"].createElement(ColumnHeaderSlug.ColumnHeaderSlug, {
148
+ return /*#__PURE__*/React__default["default"].createElement(DatagridSlug.DatagridSlug, {
144
149
  slug: slug
145
150
  });
146
151
  };
152
+ var foundAIRow = rows.some(function (r) {
153
+ var _r$original;
154
+ return /*#__PURE__*/React.isValidElement(r === null || r === void 0 || (_r$original = r.original) === null || _r$original === void 0 ? void 0 : _r$original.slug);
155
+ });
147
156
  return /*#__PURE__*/React__default["default"].createElement(react.TableRow, _rollupPluginBabelHelpers["extends"]({}, headerGroupProps, {
148
157
  className: index["default"]("".concat(blockClass, "__head"), headerGroupClassName),
149
158
  ref: headRef
150
- }), datagridState.headers.filter(function (_ref3) {
159
+ }), foundAIRow ? _th || (_th = /*#__PURE__*/React__default["default"].createElement("th", {
160
+ scope: "col",
161
+ "aria-hidden": "false"
162
+ })) : null, datagridState.headers.filter(function (_ref3) {
151
163
  var isVisible = _ref3.isVisible;
152
164
  return isVisible;
153
165
  }).map(function (header, index$1) {
@@ -188,7 +200,8 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
188
200
  minWidth: minWidth,
189
201
  dispatch: dispatch,
190
202
  onColResizeEnd: onColResizeEnd,
191
- resizerAriaLabel: resizerAriaLabel
203
+ resizerAriaLabel: resizerAriaLabel,
204
+ isFetching: isFetching
192
205
  }));
193
206
  }));
194
207
  };
@@ -16,6 +16,7 @@ var layout = require('@carbon/layout');
16
16
  var commonColumnIds = require('../common-column-ids.js');
17
17
  var index = require('../../../node_modules/classnames/index.js');
18
18
  var settings = require('../../../settings.js');
19
+ var DatagridSlug = require('./addons/Slug/DatagridSlug.js');
19
20
 
20
21
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
22
 
@@ -35,7 +36,9 @@ var rowHeights = {
35
36
 
36
37
  // eslint-disable-next-line react/prop-types
37
38
  var DatagridRow = function DatagridRow(datagridState) {
39
+ var _row$original, _row$original2;
38
40
  var row = datagridState.row,
41
+ rows = datagridState.rows,
39
42
  rowSize = datagridState.rowSize,
40
43
  withNestedRows = datagridState.withNestedRows,
41
44
  prepareRow = datagridState.prepareRow,
@@ -117,6 +120,10 @@ var DatagridRow = function DatagridRow(datagridState) {
117
120
  var _row$getRowProps = row.getRowProps();
118
121
  _row$getRowProps.role;
119
122
  var rowProps = _rollupPluginBabelHelpers.objectWithoutProperties(_row$getRowProps, _excluded);
123
+ var foundAIRow = rows.some(function (r) {
124
+ var _r$original;
125
+ return /*#__PURE__*/React.isValidElement(r === null || r === void 0 || (_r$original = r.original) === null || _r$original === void 0 ? void 0 : _r$original.slug);
126
+ });
120
127
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, {
121
128
  key: key
122
129
  }, /*#__PURE__*/React__default["default"].createElement(react.TableRow, _rollupPluginBabelHelpers["extends"]({
@@ -128,7 +135,13 @@ var DatagridRow = function DatagridRow(datagridState) {
128
135
  onFocus: hoverHandler,
129
136
  onBlur: focusRemover,
130
137
  onKeyUp: handleOnKeyUp
131
- }, setAdditionalRowProps()), row.cells.map(function (cell, index$1) {
138
+ }, setAdditionalRowProps()), foundAIRow ? row !== null && row !== void 0 && (_row$original = row.original) !== null && _row$original !== void 0 && _row$original.slug ? /*#__PURE__*/React__default["default"].createElement("td", {
139
+ className: "".concat(blockClass, "__table-row-ai-enabled")
140
+ }, /*#__PURE__*/React__default["default"].createElement(DatagridSlug.DatagridSlug, {
141
+ slug: row === null || row === void 0 || (_row$original2 = row.original) === null || _row$original2 === void 0 ? void 0 : _row$original2.slug
142
+ })) : /*#__PURE__*/React__default["default"].createElement("td", {
143
+ className: "".concat(blockClass, "__table-row-ai-spacer")
144
+ }) : null, row.cells.map(function (cell, index$1) {
132
145
  var _cell$column, _content$props;
133
146
  var cellProps = cell.getCellProps();
134
147
  // 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';
@@ -11,6 +11,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
11
11
 
12
12
  var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
13
13
  var React = require('react');
14
+ var index$1 = require('../../../node_modules/prop-types/index.js');
14
15
  var react = require('@carbon/react');
15
16
  var useResizeObserver = require('../../../global/js/hooks/useResizeObserver.js');
16
17
  var settings = require('../../../settings.js');
@@ -21,6 +22,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
21
22
 
22
23
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
23
24
 
25
+ var _excluded = ["ariaToolbarLabel"];
24
26
  var blockClass = "".concat(settings.pkg.prefix, "--datagrid__table-toolbar");
25
27
  var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridState, width, ref) {
26
28
  var _useState = React.useState(false),
@@ -115,6 +117,12 @@ var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridS
115
117
  }
116
118
  };
117
119
  var onCancelHandler = function onCancelHandler() {
120
+ stateReducer.handleSelectAllRowData({
121
+ dispatch: dispatch,
122
+ rows: [],
123
+ getRowId: getRowId,
124
+ isChecked: false
125
+ });
118
126
  toggleAllRowsSelected(false);
119
127
  setGlobalFilter(null);
120
128
  };
@@ -152,7 +160,9 @@ var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridS
152
160
  }
153
161
  })), renderBatchActionOverflow());
154
162
  };
155
- var DatagridToolbar = function DatagridToolbar(datagridState) {
163
+ var DatagridToolbar = function DatagridToolbar(_ref2) {
164
+ var ariaToolbarLabel = _ref2.ariaToolbarLabel,
165
+ datagridState = _rollupPluginBabelHelpers.objectWithoutProperties(_ref2, _excluded);
156
166
  var ref = React.useRef(null);
157
167
  var _useResizeObserver = useResizeObserver.useResizeObserver(ref),
158
168
  width = _useResizeObserver.width;
@@ -164,9 +174,16 @@ var DatagridToolbar = function DatagridToolbar(datagridState) {
164
174
  return batchActions && DatagridActions ? /*#__PURE__*/React__default["default"].createElement("div", {
165
175
  ref: ref,
166
176
  className: index["default"]([blockClass, "".concat(blockClass, "--").concat(getRowHeight)])
167
- }, /*#__PURE__*/React__default["default"].createElement(react.TableToolbar, null, DatagridActions && /*#__PURE__*/React__default["default"].createElement(DatagridActions, datagridState), DatagridBatchActionsToolbar && DatagridBatchActionsToolbar(datagridState, width, ref))) : DatagridActions ? /*#__PURE__*/React__default["default"].createElement("div", {
177
+ }, /*#__PURE__*/React__default["default"].createElement(react.TableToolbar, {
178
+ "aria-label": ariaToolbarLabel
179
+ }, DatagridActions && /*#__PURE__*/React__default["default"].createElement(DatagridActions, datagridState), DatagridBatchActionsToolbar && DatagridBatchActionsToolbar(datagridState, width, ref))) : DatagridActions ? /*#__PURE__*/React__default["default"].createElement("div", {
168
180
  className: blockClass
169
- }, /*#__PURE__*/React__default["default"].createElement(react.TableToolbar, null, DatagridActions && /*#__PURE__*/React__default["default"].createElement(DatagridActions, datagridState), DatagridBatchActions && DatagridBatchActions(datagridState))) : null;
181
+ }, /*#__PURE__*/React__default["default"].createElement(react.TableToolbar, {
182
+ "aria-label": ariaToolbarLabel
183
+ }, DatagridActions && /*#__PURE__*/React__default["default"].createElement(DatagridActions, datagridState), DatagridBatchActions && DatagridBatchActions(datagridState))) : null;
184
+ };
185
+ DatagridToolbar.propTypes = {
186
+ ariaToolbarLabel: index$1["default"].string
170
187
  };
171
188
  var DatagridToolbar$1 = DatagridToolbar;
172
189
 
@@ -147,22 +147,45 @@ var prepareFiltersForTags = function prepareFiltersForTags(filters, renderDateLa
147
147
  });
148
148
  return tags;
149
149
  };
150
- var FilterProvider = function FilterProvider(_ref3) {
151
- var children = _ref3.children,
152
- filters = _ref3.filters,
153
- filterProps = _ref3.filterProps;
154
- var _ref4 = filterProps || {},
155
- renderDateLabel = _ref4.renderDateLabel;
150
+ var filteringReducer = function filteringReducer(state, action) {
151
+ switch (action.type) {
152
+ case constants.SAVED_FILTERS:
153
+ {
154
+ var _ref3 = action.payload || {},
155
+ savedFilters = _ref3.savedFilters;
156
+ return _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, state), {}, {
157
+ savedFilters: savedFilters
158
+ });
159
+ }
160
+ default:
161
+ return state;
162
+ }
163
+ };
164
+ var FilterProvider = function FilterProvider(_ref4) {
165
+ var children = _ref4.children,
166
+ filters = _ref4.filters,
167
+ filterProps = _ref4.filterProps;
168
+ var _ref5 = filterProps || {},
169
+ renderDateLabel = _ref5.renderDateLabel;
156
170
  var filterTags = prepareFiltersForTags(filters, renderDateLabel);
157
171
  var _useState = React.useState(false),
158
172
  _useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
159
173
  panelOpen = _useState2[0],
160
174
  setPanelOpen = _useState2[1];
175
+ var initialState = {
176
+ savedFilters: []
177
+ };
178
+ var _useReducer = React.useReducer(filteringReducer, initialState),
179
+ _useReducer2 = _rollupPluginBabelHelpers.slicedToArray(_useReducer, 2),
180
+ state = _useReducer2[0],
181
+ dispatch = _useReducer2[1];
161
182
  var value = {
162
183
  filterTags: filterTags,
163
184
  EventEmitter: EventEmitter,
164
185
  panelOpen: panelOpen,
165
- setPanelOpen: setPanelOpen
186
+ setPanelOpen: setPanelOpen,
187
+ state: state,
188
+ dispatch: dispatch
166
189
  };
167
190
  return /*#__PURE__*/React__default["default"].createElement(FilterContext.Provider, {
168
191
  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";
@@ -32,6 +32,9 @@ var CLEAR_SINGLE_FILTER = 'clearSingleFilter';
32
32
  var PANEL_WIDTH = 320;
33
33
  var ACTION_SET_HEIGHT = 64;
34
34
 
35
+ /** Constants for local reducer */
36
+ var SAVED_FILTERS = 'savedFilters';
37
+
35
38
  exports.ACTION_SET_HEIGHT = ACTION_SET_HEIGHT;
36
39
  exports.BATCH = BATCH;
37
40
  exports.CHECKBOX = CHECKBOX;
@@ -45,3 +48,4 @@ exports.NUMBER = NUMBER;
45
48
  exports.PANEL = PANEL;
46
49
  exports.PANEL_WIDTH = PANEL_WIDTH;
47
50
  exports.RADIO = RADIO;
51
+ exports.SAVED_FILTERS = SAVED_FILTERS;
@@ -15,6 +15,7 @@ var react = require('@carbon/react');
15
15
  var React = require('react');
16
16
  var OverflowCheckboxes = require('../OverflowCheckboxes.js');
17
17
  var utils = require('../utils.js');
18
+ var FilterProvider = require('../FilterProvider.js');
18
19
  var handleCheckboxChange = require('../handleCheckboxChange.js');
19
20
  var usePreviousValue = require('../../../../../../global/js/hooks/usePreviousValue.js');
20
21
 
@@ -33,6 +34,10 @@ var useFilters = function useFilters(_ref) {
33
34
  panelOpen = _ref.panelOpen,
34
35
  autoHideFilters = _ref.autoHideFilters,
35
36
  isFetching = _ref.isFetching;
37
+ var _useContext = React.useContext(FilterProvider.FilterContext),
38
+ state = _useContext.state,
39
+ localDispatch = _useContext.dispatch;
40
+ var savedFilters = state.savedFilters;
36
41
  /** State */
37
42
  var _useState = React.useState(utils.getInitialStateFromFilters(filters, variation, reactTableFiltersState)),
38
43
  _useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
@@ -130,6 +135,16 @@ var useFilters = function useFilters(_ref) {
130
135
  filterCopy.splice(index, 1);
131
136
  }
132
137
  setFiltersObjectArray(filterCopy);
138
+
139
+ // Dispatch action from local filter context to track filters in order
140
+ // to keep history if `isFetching` becomes true. If so, react-table
141
+ // clears all filter history
142
+ localDispatch({
143
+ type: constants.SAVED_FILTERS,
144
+ payload: {
145
+ savedFilters: filterCopy
146
+ }
147
+ });
133
148
  if (updateMethod === constants.INSTANT) {
134
149
  setAllFilters(filterCopy);
135
150
  }
@@ -320,10 +335,27 @@ var useFilters = function useFilters(_ref) {
320
335
  setAllFilters(JSON.parse(prevFiltersObjectArrayRef.current));
321
336
  setFetchingReset(true);
322
337
  }
338
+ if (isFetching && fetchingReset) {
339
+ var cleanFilters = function cleanFilters(originalFilterState) {
340
+ var copy = _rollupPluginBabelHelpers.objectSpread2({}, originalFilterState);
341
+ var updatedFilters = savedFilters.map(function (f) {
342
+ if (Object.hasOwn(copy, f.id)) {
343
+ copy[f.id] = f;
344
+ return copy;
345
+ }
346
+ return copy;
347
+ });
348
+ return updatedFilters[0];
349
+ };
350
+ setFiltersObjectArray(savedFilters);
351
+ var filterStateCopy = cleanFilters(filtersState);
352
+ setFiltersState(filterStateCopy);
353
+ }
323
354
  if (!isFetching) {
324
355
  setFetchingReset(false);
325
356
  }
326
- }, [isFetching, reactTableFiltersState, setAllFilters, fetchingReset]);
357
+ // eslint-disable-next-line react-hooks/exhaustive-deps
358
+ }, [isFetching, reactTableFiltersState, setAllFilters, fetchingReset, savedFilters, filtersObjectArray]);
327
359
  var cancel = function cancel() {
328
360
  // Reverting to previous filters only applies when using batch actions
329
361
  if (updateMethod === constants.BATCH) {
@@ -0,0 +1,2 @@
1
+ export const DatagridSlug: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
2
+ import React from 'react';
@@ -16,7 +16,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
16
16
 
17
17
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
18
18
 
19
- var ColumnHeaderSlug = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
19
+ var DatagridSlug = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
20
20
  var slug = _ref.slug;
21
21
  if (slug && /*#__PURE__*/React.isValidElement(slug)) {
22
22
  var normalizedSlug = /*#__PURE__*/React__default["default"].cloneElement(slug, {
@@ -25,13 +25,13 @@ var ColumnHeaderSlug = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
25
25
  });
26
26
  return normalizedSlug;
27
27
  }
28
- return;
28
+ return null;
29
29
  });
30
- ColumnHeaderSlug.propTypes = {
30
+ DatagridSlug.propTypes = {
31
31
  /**
32
32
  * Specify the AI slug to be displayed
33
33
  */
34
34
  slug: index["default"].node
35
35
  };
36
36
 
37
- exports.ColumnHeaderSlug = ColumnHeaderSlug;
37
+ exports.DatagridSlug = DatagridSlug;
@@ -93,7 +93,7 @@ var stateReducer = function stateReducer(newState, action) {
93
93
  if (rows) {
94
94
  var newSelectedRowData = {};
95
95
  rows.forEach(function (row) {
96
- newSelectedRowData[getRowId(row, row.index)] = row;
96
+ newSelectedRowData[getRowId(row.original, row.index)] = row.original;
97
97
  });
98
98
  return _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, newState), {}, {
99
99
  selectedRowData: indeterminate || !isChecked ? {} : newSelectedRowData
@@ -112,7 +112,7 @@ var stateReducer = function stateReducer(newState, action) {
112
112
  }
113
113
  if (_isChecked) {
114
114
  return _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, newState), {}, {
115
- selectedRowData: _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, newState.selectedRowData), {}, _rollupPluginBabelHelpers.defineProperty({}, _getRowId(rowData, rowData.index), rowData))
115
+ selectedRowData: _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, newState.selectedRowData), {}, _rollupPluginBabelHelpers.defineProperty({}, _getRowId(rowData.original, rowData.index), rowData.original))
116
116
  });
117
117
  }
118
118
  if (rowData && !_isChecked) {
@@ -120,7 +120,7 @@ var stateReducer = function stateReducer(newState, action) {
120
120
  var dataWithRemovedRow = Object.fromEntries(Object.entries(newData).filter(function (_ref5) {
121
121
  var _ref6 = _rollupPluginBabelHelpers.slicedToArray(_ref5, 1),
122
122
  key = _ref6[0];
123
- return parseInt(key) !== parseInt(rowData.index);
123
+ return parseInt(key) !== parseInt(_getRowId(rowData.original, rowData.index));
124
124
  }));
125
125
  return _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, newState), {}, {
126
126
  selectedRowData: dataWithRemovedRow
@@ -15,6 +15,7 @@ var index = require('../../node_modules/classnames/index.js');
15
15
  var commonColumnIds = require('./common-column-ids.js');
16
16
  var DatagridSelectAllWithToggle = require('./Datagrid/DatagridSelectAllWithToggle.js');
17
17
  var settings = require('../../settings.js');
18
+ var useIsomorphicEffect = require('../../global/js/hooks/useIsomorphicEffect.js');
18
19
 
19
20
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
20
21
 
@@ -44,11 +45,12 @@ var useSelectAllWithToggleComponent = function useSelectAllWithToggleComponent(h
44
45
  hooks.useInstance.push(useInstance);
45
46
  };
46
47
  var useAddClassNameToSelectRow = function useAddClassNameToSelectRow(hooks) {
47
- var _useState = React.useState(window.innerWidth),
48
+ var _useState = React.useState(0),
48
49
  _useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
49
50
  windowSize = _useState2[0],
50
51
  setWindowSize = _useState2[1];
51
- React.useLayoutEffect(function () {
52
+ useIsomorphicEffect.useIsomorphicEffect(function () {
53
+ setWindowSize(window.innerWidth);
52
54
  function updateSize() {
53
55
  setWindowSize(window.innerWidth);
54
56
  }
@@ -16,7 +16,7 @@ var settings = require('../../settings.js');
16
16
  var react = require('@carbon/react');
17
17
  var icons = require('@carbon/react/icons');
18
18
  var DatagridSelectAll = require('./Datagrid/DatagridSelectAll.js');
19
- var ColumnHeaderSlug = require('./Datagrid/addons/Slug/ColumnHeaderSlug.js');
19
+ var DatagridSlug = require('./Datagrid/addons/Slug/DatagridSlug.js');
20
20
 
21
21
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
22
22
 
@@ -115,7 +115,7 @@ var useSortableColumns = function useSortableColumns(hooks) {
115
115
  kind: "ghost",
116
116
  renderIcon: function renderIcon(props) {
117
117
  var _headerProp$column;
118
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(ColumnHeaderSlug.ColumnHeaderSlug, {
118
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(DatagridSlug.DatagridSlug, {
119
119
  slug: headerProp === null || headerProp === void 0 || (_headerProp$column = headerProp.column) === null || _headerProp$column === void 0 ? void 0 : _headerProp$column.slug
120
120
  }), icon(headerProp === null || headerProp === void 0 ? void 0 : headerProp.column, props));
121
121
  },
@@ -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;