@carbon/ibm-products 2.11.3 → 2.12.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. package/css/index-full-carbon.css +43 -12
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +3 -3
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +36 -7
  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 +43 -12
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +3 -3
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +43 -12
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +3 -3
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/Card/Card.js +9 -1
  18. package/es/components/Card/CardFooter.js +8 -2
  19. package/es/components/Card/CardHeader.js +8 -2
  20. package/es/components/CreateFullPage/CreateFullPage.docs-page.js +6 -0
  21. package/es/components/CreateFullPage/CreateFullPage.js +66 -8
  22. package/es/components/Datagrid/Datagrid/Datagrid.js +2 -1
  23. package/es/components/Datagrid/Datagrid/DatagridContent.js +7 -1
  24. package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +1 -3
  25. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +3 -5
  26. package/es/components/Datagrid/Datagrid/DatagridRefBody.js +1 -3
  27. package/es/components/Datagrid/Datagrid/DatagridRow.js +2 -6
  28. package/es/components/Datagrid/Datagrid/DatagridSelectAll.js +13 -1
  29. package/es/components/Datagrid/Datagrid/DatagridSimpleBody.js +1 -3
  30. package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +1 -3
  31. package/es/components/Datagrid/Datagrid/DraggableElement.js +1 -0
  32. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +37 -15
  33. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +18 -17
  34. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +104 -18
  35. package/es/components/Datagrid/Datagrid/addons/Filtering/OverflowCheckboxes.js +68 -0
  36. package/es/components/Datagrid/Datagrid/addons/Filtering/constants.js +1 -0
  37. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +120 -54
  38. package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +9 -3
  39. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.js +6 -12
  40. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +0 -5
  41. package/es/components/Datagrid/Datagrid.docs-page.js +1 -1
  42. package/es/components/Datagrid/useActionsColumn.js +0 -2
  43. package/es/components/Datagrid/useDisableSelectRows.js +1 -1
  44. package/es/components/Datagrid/useFiltering.js +4 -1
  45. package/es/components/Datagrid/useInlineEdit.js +1 -6
  46. package/es/components/Datagrid/useSelectRows.js +1 -1
  47. package/es/components/Datagrid/useSortableColumns.js +14 -25
  48. package/es/components/Datagrid/utils/DatagridActions.js +2 -3
  49. package/es/components/SimpleHeader/SimpleHeader.docs-page.js +17 -0
  50. package/es/components/SimpleHeader/SimpleHeader.js +92 -0
  51. package/es/components/SimpleHeader/index.js +8 -0
  52. package/es/components/StatusIcon/StatusIcon.js +13 -13
  53. package/es/global/js/hooks/useCreateComponentStepChange.js +14 -20
  54. package/es/global/js/utils/StoryDocsPage.js +3 -3
  55. package/es/global/js/utils/getNodeTextContent.js +4 -0
  56. package/lib/components/Card/Card.js +9 -1
  57. package/lib/components/Card/CardFooter.js +8 -2
  58. package/lib/components/Card/CardHeader.js +8 -2
  59. package/lib/components/CreateFullPage/CreateFullPage.docs-page.js +6 -0
  60. package/lib/components/CreateFullPage/CreateFullPage.js +65 -7
  61. package/lib/components/Datagrid/Datagrid/Datagrid.js +2 -1
  62. package/lib/components/Datagrid/Datagrid/DatagridContent.js +6 -0
  63. package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +1 -3
  64. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +3 -5
  65. package/lib/components/Datagrid/Datagrid/DatagridRefBody.js +1 -3
  66. package/lib/components/Datagrid/Datagrid/DatagridRow.js +2 -6
  67. package/lib/components/Datagrid/Datagrid/DatagridSelectAll.js +13 -1
  68. package/lib/components/Datagrid/Datagrid/DatagridSimpleBody.js +1 -3
  69. package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +1 -3
  70. package/lib/components/Datagrid/Datagrid/DraggableElement.js +1 -0
  71. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +37 -15
  72. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +40 -38
  73. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +109 -24
  74. package/lib/components/Datagrid/Datagrid/addons/Filtering/OverflowCheckboxes.js +79 -0
  75. package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.js +4 -2
  76. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +136 -70
  77. package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +10 -4
  78. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.js +6 -12
  79. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +0 -5
  80. package/lib/components/Datagrid/Datagrid.docs-page.js +1 -1
  81. package/lib/components/Datagrid/useActionsColumn.js +0 -2
  82. package/lib/components/Datagrid/useDisableSelectRows.js +1 -1
  83. package/lib/components/Datagrid/useFiltering.js +4 -1
  84. package/lib/components/Datagrid/useInlineEdit.js +1 -6
  85. package/lib/components/Datagrid/useSelectRows.js +1 -1
  86. package/lib/components/Datagrid/useSortableColumns.js +14 -25
  87. package/lib/components/Datagrid/utils/DatagridActions.js +2 -3
  88. package/lib/components/SimpleHeader/SimpleHeader.docs-page.js +28 -0
  89. package/lib/components/SimpleHeader/SimpleHeader.js +102 -0
  90. package/lib/components/SimpleHeader/index.js +12 -0
  91. package/lib/components/StatusIcon/StatusIcon.js +12 -12
  92. package/lib/global/js/hooks/useCreateComponentStepChange.js +14 -20
  93. package/lib/global/js/utils/StoryDocsPage.js +3 -3
  94. package/lib/global/js/utils/getNodeTextContent.js +4 -0
  95. package/package.json +2 -2
  96. package/scss/components/Card/_card.scss +1 -1
  97. package/scss/components/CreateFullPage/_create-full-page.scss +11 -2
  98. package/scss/components/Datagrid/styles/_useInlineEdit.scss +8 -11
  99. package/scss/components/Datagrid/styles/addons/_FilterPanel.scss +4 -0
  100. package/scss/components/ProductiveCard/_productive-card.scss +0 -1
  101. package/scss/components/SimpleHeader/_carbon-imports.scss +11 -0
  102. package/scss/components/SimpleHeader/_index-with-carbon.scss +9 -0
  103. package/scss/components/SimpleHeader/_index.scss +10 -0
  104. package/scss/components/SimpleHeader/_simple-header.scss +37 -0
  105. package/scss/components/StatusIcon/_status-icon.scss +0 -1
  106. package/scss/components/_index-with-carbon.scss +1 -0
  107. package/es/components/Datagrid/utils/getColTitle.js +0 -25
  108. package/lib/components/Datagrid/utils/getColTitle.js +0 -32
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- var _excluded = ["backButtonText", "cancelButtonText", "children", "className", "initialStep", "modalDangerButtonText", "modalDescription", "modalSecondaryButtonText", "modalTitle", "nextButtonText", "onClose", "onRequestSubmit", "firstFocusElement", "submitButtonText", "title"];
4
+ var _excluded = ["breadcrumbsOverflowAriaLabel", "breadcrumbs", "backButtonText", "cancelButtonText", "children", "className", "initialStep", "maxVisibleBreadcrumbs", "modalDangerButtonText", "modalDescription", "modalSecondaryButtonText", "modalTitle", "nextButtonText", "onClose", "onRequestSubmit", "firstFocusElement", "submitButtonText", "noTrailingSlash", "title", "secondaryTitle"];
5
5
  /**
6
6
  * Copyright IBM Corp. 2021, 2023
7
7
  *
@@ -10,7 +10,7 @@ var _excluded = ["backButtonText", "cancelButtonText", "children", "className",
10
10
  */
11
11
 
12
12
  // Import portions of React that are needed.
13
- import React, { useEffect, useState, createContext } from 'react';
13
+ import React, { useEffect, useState, createContext, useRef } from 'react';
14
14
 
15
15
  // Other standard imports.
16
16
  import PropTypes from 'prop-types';
@@ -25,6 +25,7 @@ import { ActionSet } from '../ActionSet';
25
25
  import { usePreviousValue, useValidCreateStepCount, useResetCreateComponent, useCreateComponentFocus, useCreateComponentStepChange } from '../../global/js/hooks';
26
26
  import { lastIndexInArray } from '../../global/js/utils/lastIndexInArray';
27
27
  import { getNumberOfHiddenSteps } from '../../global/js/utils/getNumberOfHiddenSteps';
28
+ import { SimpleHeader, overflowAriaLabel_required_if_breadcrumbs_exist } from '../SimpleHeader/SimpleHeader';
28
29
  var blockClass = "".concat(pkg.prefix, "--create-full-page");
29
30
  var componentName = 'CreateFullPage';
30
31
 
@@ -50,11 +51,14 @@ include `<Row>` and `<Column>` components inside of each `CreateFullPageStep`
50
51
  component to get the desired affect.
51
52
  */
52
53
  export var CreateFullPage = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
53
- var backButtonText = _ref.backButtonText,
54
+ var breadcrumbsOverflowAriaLabel = _ref.breadcrumbsOverflowAriaLabel,
55
+ breadcrumbs = _ref.breadcrumbs,
56
+ backButtonText = _ref.backButtonText,
54
57
  cancelButtonText = _ref.cancelButtonText,
55
58
  children = _ref.children,
56
59
  className = _ref.className,
57
60
  initialStep = _ref.initialStep,
61
+ maxVisibleBreadcrumbs = _ref.maxVisibleBreadcrumbs,
58
62
  modalDangerButtonText = _ref.modalDangerButtonText,
59
63
  modalDescription = _ref.modalDescription,
60
64
  modalSecondaryButtonText = _ref.modalSecondaryButtonText,
@@ -64,7 +68,9 @@ export var CreateFullPage = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
64
68
  onRequestSubmit = _ref.onRequestSubmit,
65
69
  firstFocusElement = _ref.firstFocusElement,
66
70
  submitButtonText = _ref.submitButtonText,
71
+ noTrailingSlash = _ref.noTrailingSlash,
67
72
  title = _ref.title,
73
+ secondaryTitle = _ref.secondaryTitle,
68
74
  rest = _objectWithoutProperties(_ref, _excluded);
69
75
  var _useState = useState([]),
70
76
  _useState2 = _slicedToArray(_useState, 2),
@@ -114,6 +120,11 @@ export var CreateFullPage = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
114
120
  _useState22 = _slicedToArray(_useState21, 2),
115
121
  lastIncludedStep = _useState22[0],
116
122
  setLastIncludedStep = _useState22[1];
123
+ var _useState23 = useState(0),
124
+ _useState24 = _slicedToArray(_useState23, 2),
125
+ headerHeight = _useState24[0],
126
+ setHeaderHeight = _useState24[1];
127
+ var headerRef = useRef(null);
117
128
  useEffect(function () {
118
129
  var firstItem = stepData.findIndex(function (item) {
119
130
  return item === null || item === void 0 ? void 0 : item.shouldIncludeStep;
@@ -130,6 +141,13 @@ export var CreateFullPage = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
130
141
  setCurrentStep(Number(initialStep + numberOfHiddenSteps));
131
142
  }
132
143
  }, [stepData, firstIncludedStep, lastIncludedStep, initialStep]);
144
+ useEffect(function () {
145
+ var headerHeight = 0;
146
+ if (title || (breadcrumbs === null || breadcrumbs === void 0 ? void 0 : breadcrumbs.length) > 0) {
147
+ headerHeight = headerRef.current.getBoundingClientRect().height;
148
+ }
149
+ setHeaderHeight(headerHeight);
150
+ }, [title, breadcrumbs]);
133
151
  useCreateComponentFocus({
134
152
  previousState: previousState,
135
153
  currentStep: currentStep,
@@ -171,18 +189,31 @@ export var CreateFullPage = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
171
189
  setCreateComponentActions: setCreateFullPageActions,
172
190
  setModalIsOpen: setModalIsOpen
173
191
  });
174
-
175
192
  // currently, we are not supporting the use of 'view all' toggle state
176
193
  /* istanbul ignore next */
177
194
  return /*#__PURE__*/React.createElement("div", _extends({}, rest, {
178
195
  ref: ref,
179
196
  className: cx(blockClass, className)
180
- }, getDevtoolsProps(componentName)), /*#__PURE__*/React.createElement("div", {
197
+ }, getDevtoolsProps(componentName)), (title || (breadcrumbs === null || breadcrumbs === void 0 ? void 0 : breadcrumbs.length) > 0) && /*#__PURE__*/React.createElement("div", {
198
+ className: "".concat(blockClass, "__header"),
199
+ ref: headerRef
200
+ }, /*#__PURE__*/React.createElement(SimpleHeader, {
201
+ title: title,
202
+ breadcrumbs: breadcrumbs,
203
+ noTrailingSlash: noTrailingSlash,
204
+ overflowAriaLabel: breadcrumbsOverflowAriaLabel,
205
+ maxVisible: maxVisibleBreadcrumbs
206
+ })), /*#__PURE__*/React.createElement("div", {
207
+ className: "".concat(blockClass, "__influencer-and-body-container"),
208
+ style: {
209
+ height: "calc(100vh - ".concat(headerHeight, "px)")
210
+ }
211
+ }, /*#__PURE__*/React.createElement("div", {
181
212
  className: "".concat(blockClass, "__influencer")
182
213
  }, /*#__PURE__*/React.createElement(CreateInfluencer, {
183
214
  stepData: stepData,
184
215
  currentStep: currentStep,
185
- title: title
216
+ title: secondaryTitle
186
217
  })), /*#__PURE__*/React.createElement("div", {
187
218
  className: "".concat(blockClass, "__body")
188
219
  }, /*#__PURE__*/React.createElement("div", {
@@ -239,7 +270,7 @@ export var CreateFullPage = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
239
270
  type: "button",
240
271
  kind: "danger",
241
272
  onClick: onClose
242
- }, modalDangerButtonText))));
273
+ }, modalDangerButtonText)))));
243
274
  });
244
275
 
245
276
  // Return a placeholder if not released and not enabled by feature flag.
@@ -257,6 +288,23 @@ CreateFullPage.propTypes = {
257
288
  * The back button text
258
289
  */
259
290
  backButtonText: PropTypes.string.isRequired,
291
+ /** The header breadcrumbs */
292
+ breadcrumbs: PropTypes.arrayOf(PropTypes.shape({
293
+ /** breadcrumb item key */
294
+ key: PropTypes.string.isRequired,
295
+ /** breadcrumb item label */
296
+ label: PropTypes.string.isRequired,
297
+ /** breadcrumb item link */
298
+ href: PropTypes.string,
299
+ /** breadcrumb item title tooltip */
300
+ title: PropTypes.string,
301
+ /** Provide if this breadcrumb item represents the current page */
302
+ isCurrentPage: PropTypes.bool
303
+ })),
304
+ /**
305
+ * Label for open/close overflow button used for breadcrumb items that do not fit
306
+ */
307
+ breadcrumbsOverflowAriaLabel: overflowAriaLabel_required_if_breadcrumbs_exist,
260
308
  /**
261
309
  * The cancel button text
262
310
  */
@@ -279,6 +327,8 @@ CreateFullPage.propTypes = {
279
327
  * is now being completed.
280
328
  */
281
329
  initialStep: PropTypes.number,
330
+ /** Maximum visible breadcrumb-items before overflow is used (values less than 1 are treated as 1) */
331
+ maxVisibleBreadcrumbs: PropTypes.number,
282
332
  /**
283
333
  * The primary 'danger' button text in the modal
284
334
  */
@@ -299,6 +349,10 @@ CreateFullPage.propTypes = {
299
349
  * The next button text
300
350
  */
301
351
  nextButtonText: PropTypes.string.isRequired,
352
+ /**
353
+ * A prop to omit the trailing slash for the breadcrumbs
354
+ */
355
+ noTrailingSlash: PropTypes.bool,
302
356
  /**
303
357
  * An optional handler that is called when the user closes the full page (by
304
358
  * clicking the secondary button, located in the modal, which triggers after
@@ -310,6 +364,10 @@ CreateFullPage.propTypes = {
310
364
  * This function can _optionally_ return a promise that is either resolved or rejected and the CreateFullPage will handle the submitting state of the create button.
311
365
  */
312
366
  onRequestSubmit: PropTypes.func.isRequired,
367
+ /**
368
+ * A secondary title of the full page, displayed in the influencer area
369
+ */
370
+ secondaryTitle: PropTypes.string,
313
371
  /**
314
372
  * @ignore
315
373
  * The aria label to be used for the UI Shell SideNav Carbon component
@@ -320,7 +378,7 @@ CreateFullPage.propTypes = {
320
378
  */
321
379
  submitButtonText: PropTypes.string.isRequired,
322
380
  /**
323
- * The main title of the full page, displayed in the influencer area.
381
+ * The main title of the full page, displayed in the header area
324
382
  */
325
383
  title: PropTypes.string
326
384
  };
@@ -44,7 +44,8 @@ export var Datagrid = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
44
44
  datagridState: datagridState
45
45
  };
46
46
  return /*#__PURE__*/React.createElement(FilterProvider, {
47
- filters: filters
47
+ filters: filters,
48
+ filterProps: filterProps
48
49
  }, /*#__PURE__*/React.createElement(InlineEditProvider, null, /*#__PURE__*/React.createElement("div", _extends({}, rest, {
49
50
  id: tableId,
50
51
  ref: ref,
@@ -11,7 +11,7 @@ import { FilterContext, FilterPanel } from './addons/Filtering';
11
11
  import React, { useContext, useEffect, useRef } from 'react';
12
12
  import { Table, TableContainer } from '@carbon/react';
13
13
  import { carbon, pkg } from '../../../settings';
14
- import { CLEAR_FILTERS } from './addons/Filtering/constants';
14
+ import { CLEAR_FILTERS, CLEAR_SINGLE_FILTER } from './addons/Filtering/constants';
15
15
  import DatagridBody from './DatagridBody';
16
16
  import DatagridHead from './DatagridHead';
17
17
  import DatagridToolbar from './DatagridToolbar';
@@ -24,6 +24,8 @@ import { handleGridKeyPress } from './addons/InlineEdit/handleGridKeyPress';
24
24
  import { px } from '@carbon/layout';
25
25
  import { useClickOutside } from '../../../global/js/hooks';
26
26
  import { useMultipleKeyTracking } from '../../DataSpreadsheet/hooks';
27
+ import { useSubscribeToEventEmitter } from './addons/Filtering/hooks';
28
+ import { clearSingleFilter } from './addons/Filtering/FilterProvider';
27
29
  var blockClass = "".concat(pkg.prefix, "--datagrid");
28
30
  export var DatagridContent = function DatagridContent(_ref) {
29
31
  var _cx4;
@@ -59,6 +61,7 @@ export var DatagridContent = function DatagridContent(_ref) {
59
61
  DatagridActions = datagridState.DatagridActions,
60
62
  totalColumnsWidth = datagridState.totalColumnsWidth,
61
63
  gridRef = datagridState.gridRef,
64
+ setAllFilters = datagridState.setAllFilters,
62
65
  state = datagridState.state,
63
66
  page = datagridState.page,
64
67
  rows = datagridState.rows;
@@ -124,6 +127,9 @@ export var DatagridContent = function DatagridContent(_ref) {
124
127
  gridElement.style.setProperty("--".concat(blockClass, "--grid-header-height"), px((tableHeader === null || tableHeader === void 0 ? void 0 : tableHeader.clientHeight) || 0));
125
128
  }
126
129
  }, [withInlineEdit, tableId, totalColumnsWidth, datagridState, gridActive]);
130
+ useSubscribeToEventEmitter(CLEAR_SINGLE_FILTER, function (id) {
131
+ return clearSingleFilter(id, setAllFilters, state);
132
+ });
127
133
  var renderFilterSummary = function renderFilterSummary() {
128
134
  return state.filters.length > 0 && /*#__PURE__*/React.createElement(FilterSummary, {
129
135
  className: "".concat(blockClass, "__filter-summary"),
@@ -31,9 +31,7 @@ var DatagridEmptyBody = function DatagridEmptyBody(datagridState) {
31
31
  link: emptyStateLink
32
32
  };
33
33
  var validEmptyStates = ['error', 'noData', 'notFound'];
34
- return /*#__PURE__*/React.createElement(TableBody, _extends({}, getTableBodyProps({
35
- role: false
36
- }), {
34
+ return /*#__PURE__*/React.createElement(TableBody, _extends({}, getTableBodyProps(), {
37
35
  className: "".concat(blockClass, "__empty-state-body")
38
36
  }), /*#__PURE__*/React.createElement(TableRow, null, /*#__PURE__*/React.createElement(TableCell, {
39
37
  colSpan: headers.length,
@@ -15,12 +15,12 @@ import { TableHeader, TableRow } from '@carbon/react';
15
15
  import { px } from '@carbon/layout';
16
16
  import { selectionColumnId } from '../common-column-ids';
17
17
  import { pkg } from '../../../settings';
18
- import getColTitle from '../utils/getColTitle';
19
18
  import { handleColumnResizeEndEvent, handleColumnResizeStartEvent, handleColumnResizingEvent } from './addons/stateReducer';
19
+ import { getNodeTextContent } from '../../../global/js/utils/getNodeTextContent';
20
20
  var blockClass = "".concat(pkg.prefix, "--datagrid");
21
21
  var getAccessibilityProps = function getAccessibilityProps(header) {
22
22
  var props = {};
23
- var title = getColTitle(header);
23
+ var title = getNodeTextContent(header.Header);
24
24
  if (title) {
25
25
  props.title = title;
26
26
  } else {
@@ -90,9 +90,7 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
90
90
  };
91
91
  // eslint-disable-next-line react-hooks/exhaustive-deps
92
92
  }, [datagridState.state.isResizing]);
93
- return /*#__PURE__*/React.createElement(TableRow, _extends({}, headerGroup.getHeaderGroupProps({
94
- role: false
95
- }), {
93
+ return /*#__PURE__*/React.createElement(TableRow, _extends({}, headerGroup.getHeaderGroupProps(), {
96
94
  className: cx("".concat(blockClass, "__head"), headerGroup.getHeaderGroupProps().className),
97
95
  ref: headRef
98
96
  }), datagridState.headers.filter(function (_ref2) {
@@ -22,9 +22,7 @@ var DatagridRefBody = function DatagridRefBody(datagridState) {
22
22
  var getTableBodyProps = datagridState.getTableBodyProps,
23
23
  rows = datagridState.rows,
24
24
  prepareRow = datagridState.prepareRow;
25
- return /*#__PURE__*/React.createElement("tbody", _extends({}, getTableBodyProps({
26
- role: false
27
- }), {
25
+ return /*#__PURE__*/React.createElement("tbody", _extends({}, getTableBodyProps(), {
28
26
  className: cx("".concat(blockClass, "__simple-body"), getTableBodyProps().className)
29
27
  }), rows.map(function (row) {
30
28
  prepareRow(row);
@@ -92,9 +92,7 @@ var DatagridRow = function DatagridRow(datagridState) {
92
92
  var rowClassNames = cx("".concat(blockClass, "__carbon-row"), (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), _defineProperty(_cx, "".concat(blockClass, "__carbon-row-expandable"), row.canExpand), _defineProperty(_cx, "".concat(carbon.prefix, "--data-table--selected"), row.isSelected), _cx));
93
93
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TableRow, _extends({
94
94
  className: rowClassNames
95
- }, row.getRowProps({
96
- role: false
97
- }), {
95
+ }, row.getRowProps(), {
98
96
  key: row.id,
99
97
  onMouseEnter: hoverHandler,
100
98
  onMouseLeave: handleMouseLeave,
@@ -103,9 +101,7 @@ var DatagridRow = function DatagridRow(datagridState) {
103
101
  onKeyUp: handleOnKeyUp
104
102
  }), row.cells.map(function (cell, index) {
105
103
  var _cell$column;
106
- var cellProps = cell.getCellProps({
107
- role: false
108
- });
104
+ var cellProps = cell.getCellProps();
109
105
  var children = cellProps.children,
110
106
  restProps = _objectWithoutProperties(cellProps, _excluded);
111
107
  var content = children || /*#__PURE__*/React.createElement(React.Fragment, null, !row.isSkeleton && cell.render('Cell'), row.isSkeleton && /*#__PURE__*/React.createElement(SkeletonText, null));
@@ -50,11 +50,23 @@ var SelectAll = function SelectAll(datagridState) {
50
50
  var _getProps = getProps(),
51
51
  onChange = _getProps.onChange,
52
52
  selectProps = _objectWithoutProperties(_getProps, _excluded);
53
+ var _ref = selectProps || {},
54
+ indeterminate = _ref.indeterminate;
55
+ var handleSelectAllChange = function handleSelectAllChange(event) {
56
+ if (indeterminate) {
57
+ return onChange === null || onChange === void 0 ? void 0 : onChange({
58
+ target: {
59
+ checked: false
60
+ }
61
+ });
62
+ }
63
+ return onChange === null || onChange === void 0 ? void 0 : onChange(event);
64
+ };
53
65
  return /*#__PURE__*/React.createElement("div", {
54
66
  className: cx("".concat(blockClass, "__head-select-all"), "".concat(blockClass, "__checkbox-cell"), _defineProperty({}, "".concat(blockClass, "__checkbox-cell-sticky-left"), isFirstColumnStickyLeft && windowSize > 671))
55
67
  }, /*#__PURE__*/React.createElement(TableSelectAll, _extends({}, selectProps, {
56
68
  name: "".concat(tableId, "-select-all-checkbox-name"),
57
- onSelect: onChange,
69
+ onSelect: handleSelectAllChange,
58
70
  disabled: isFetching || selectProps.disabled,
59
71
  id: "".concat(tableId, "-select-all-checkbox-id")
60
72
  })));
@@ -18,9 +18,7 @@ var DatagridSimpleBody = function DatagridSimpleBody(datagridState) {
18
18
  var getTableBodyProps = datagridState.getTableBodyProps,
19
19
  rows = datagridState.rows,
20
20
  prepareRow = datagridState.prepareRow;
21
- return /*#__PURE__*/React.createElement(TableBody, _extends({}, getTableBodyProps({
22
- role: false
23
- }), {
21
+ return /*#__PURE__*/React.createElement(TableBody, _extends({}, getTableBodyProps(), {
24
22
  className: cx("".concat(blockClass, "__simple-body"), getTableBodyProps().className)
25
23
  }), rows.map(function (row) {
26
24
  prepareRow(row);
@@ -72,9 +72,7 @@ var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
72
72
  width: (_gridRef$current = gridRef.current) === null || _gridRef$current === void 0 ? void 0 : _gridRef$current.clientWidth,
73
73
  overflow: 'hidden'
74
74
  }
75
- }, /*#__PURE__*/React.createElement(DatagridHead, datagridState)), /*#__PURE__*/React.createElement(TableBody, _extends({}, getTableBodyProps({
76
- role: false
77
- }), {
75
+ }, /*#__PURE__*/React.createElement(DatagridHead, datagridState)), /*#__PURE__*/React.createElement(TableBody, _extends({}, getTableBodyProps(), {
78
76
  onScroll: function onScroll(e) {
79
77
  return syncScroll(e);
80
78
  }
@@ -26,6 +26,7 @@ var DraggableElement = function DraggableElement(_ref) {
26
26
  isSticky = _ref.isSticky,
27
27
  selected = _ref.selected;
28
28
  var _useSortable = useSortable({
29
+ disabled: disabled,
29
30
  id: id
30
31
  }),
31
32
  attributes = _useSortable.attributes,
@@ -1,4 +1,5 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
3
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
4
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
5
  /**
@@ -14,9 +15,9 @@ import { Checkbox } from '@carbon/react';
14
15
  import { isColumnVisible } from './common';
15
16
  import DraggableElement from '../../DraggableElement';
16
17
  import { pkg } from '../../../../../settings';
17
- import getColTitle from '../../../utils/getColTitle';
18
18
  import { DndContext, KeyboardSensor, PointerSensor, closestCenter, useSensor, useSensors } from '@dnd-kit/core';
19
19
  import { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';
20
+ import { getNodeTextContent } from '../../../../../global/js/utils/getNodeTextContent';
20
21
  var blockClass = "".concat(pkg.prefix, "--datagrid");
21
22
  var matchedColsById = function matchedColsById(col1, col2) {
22
23
  return col1 && col2 && col1.id === col2.id;
@@ -32,26 +33,47 @@ export var DraggableItemsList = function DraggableItemsList(_ref) {
32
33
  var visibleCols = columns
33
34
  // hide the columns without Header, e.g the sticky actions, spacer
34
35
  .filter(function (colDef) {
35
- return !!getColTitle(colDef);
36
+ return getNodeTextContent(colDef.Header).trim().length !== 0;
36
37
  }).filter(Boolean).filter(function (colDef) {
37
38
  return !colDef.isAction;
38
39
  }).filter(function (colDef) {
39
- var _getColTitle;
40
- return filterString.length === 0 || ((_getColTitle = getColTitle(colDef)) === null || _getColTitle === void 0 ? void 0 : _getColTitle.toLowerCase().includes(filterString)) && colDef.id !== 'spacer';
40
+ return colDef.id !== 'spacer';
41
+ }).filter(function (colDef) {
42
+ return filterString.length === 0 || getNodeTextContent(colDef.Header).toLowerCase().includes(filterString);
41
43
  });
44
+ var getUpdatedDragCols = function getUpdatedDragCols() {
45
+ var tempCols = _toConsumableArray(visibleCols);
46
+ tempCols.forEach(function (col) {
47
+ if (col.sticky) {
48
+ col.disabled = true;
49
+ }
50
+ });
51
+ return tempCols;
52
+ };
53
+ var updatedDragCols = getUpdatedDragCols();
42
54
 
43
55
  // let localRefCopy;
44
56
  var handleDragEnd = function handleDragEnd(event) {
57
+ var _destOverCol$;
45
58
  var active = event.active,
46
59
  over = event.over;
60
+
61
+ // Stop any re-ordering updates if the destination column is disabled
62
+ // ie: it is a frozen column.
63
+ var destOverCol = updatedDragCols.filter(function (item) {
64
+ return item.id === over.id;
65
+ });
66
+ if (destOverCol !== null && destOverCol !== void 0 && destOverCol.length && (_destOverCol$ = destOverCol[0]) !== null && _destOverCol$ !== void 0 && _destOverCol$.disabled) {
67
+ return;
68
+ }
47
69
  var fromVisibleIndex = columns.findIndex(function (col) {
48
70
  return matchedColsById(col, active);
49
71
  });
50
72
  var toVisibleIndex = columns.findIndex(function (col) {
51
73
  return matchedColsById(col, over);
52
74
  });
53
- var colTitle = getColTitle(visibleCols[fromVisibleIndex]);
54
- setAriaRegionText("".concat(colTitle, " dropped. New position ").concat(toVisibleIndex + 1, " of ").concat(visibleCols.length, "."));
75
+ var colTitle = getNodeTextContent(updatedDragCols[fromVisibleIndex].Header);
76
+ setAriaRegionText("".concat(colTitle, " dropped. New position ").concat(toVisibleIndex + 1, " of ").concat(updatedDragCols.length, "."));
55
77
  var fromIndex = columns.findIndex(function (col) {
56
78
  return matchedColsById(col, active);
57
79
  });
@@ -62,23 +84,23 @@ export var DraggableItemsList = function DraggableItemsList(_ref) {
62
84
  };
63
85
  var handleDragStart = function handleDragStart(event) {
64
86
  var active = event.active;
65
- var fromIndex = visibleCols.findIndex(function (col) {
87
+ var fromIndex = updatedDragCols.findIndex(function (col) {
66
88
  return matchedColsById(col, active);
67
89
  });
68
- var colTitle = getColTitle(visibleCols[fromIndex]);
69
- setAriaRegionText("".concat(colTitle, " grabbed. Current position ").concat(fromIndex + 1, " of ").concat(visibleCols.length, "."));
90
+ var colTitle = getNodeTextContent(updatedDragCols[fromIndex].Header);
91
+ setAriaRegionText("".concat(colTitle, " grabbed. Current position ").concat(fromIndex + 1, " of ").concat(updatedDragCols.length, "."));
70
92
  };
71
93
  var handleDragUpdate = function handleDragUpdate(event) {
72
94
  var active = event.active,
73
95
  over = event.over;
74
- var fromIndex = visibleCols.findIndex(function (col) {
96
+ var fromIndex = updatedDragCols.findIndex(function (col) {
75
97
  return matchedColsById(col, active);
76
98
  });
77
- var toIndex = visibleCols.findIndex(function (col) {
99
+ var toIndex = updatedDragCols.findIndex(function (col) {
78
100
  return matchedColsById(col, over);
79
101
  });
80
- var colTitle = getColTitle(visibleCols[fromIndex]);
81
- setAriaRegionText("".concat(colTitle, " grabbed. Original position ").concat(fromIndex + 1, ", new position ").concat(toIndex + 1, " of ").concat(visibleCols.length, "."));
102
+ var colTitle = getNodeTextContent(updatedDragCols[fromIndex].Header);
103
+ setAriaRegionText("".concat(colTitle, " grabbed. Original position ").concat(fromIndex + 1, ", new position ").concat(toIndex + 1, " of ").concat(updatedDragCols.length, "."));
82
104
  };
83
105
  var pointerSensor = useSensor(PointerSensor, {
84
106
  // Require the mouse to move by 10 pixels before activating
@@ -137,10 +159,10 @@ export var DraggableItemsList = function DraggableItemsList(_ref) {
137
159
  key: colDef.id
138
160
  });
139
161
  })), /*#__PURE__*/React.createElement(SortableContext, {
140
- items: visibleCols,
162
+ items: updatedDragCols,
141
163
  strategy: verticalListSortingStrategy
142
164
  }, visibleCols.map(function (colDef) {
143
- var colHeaderTitle = getColTitle(colDef);
165
+ var colHeaderTitle = getNodeTextContent(colDef.Header);
144
166
  var searchString = new RegExp('(' + filterString + ')');
145
167
  var res = filterString.length ? colHeaderTitle.toLowerCase().split(searchString) : null;
146
168
  var firstWord = res !== null ? res[0] === '' ? res[1].charAt(0).toUpperCase() + res[1].substring(1) : res[0].charAt(0).toUpperCase() + res[0].substring(1) : null;
@@ -10,21 +10,21 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
10
10
 
11
11
  /* eslint-disable react/jsx-key */
12
12
 
13
- import React, { useRef, useMemo, useContext, useState, useEffect } from 'react';
14
- import PropTypes from 'prop-types';
15
- import { Accordion, AccordionItem, Button, Search, Layer } from '@carbon/react';
16
- import { rem } from '@carbon/layout';
17
- import { pkg } from '../../../../../settings';
13
+ import { Accordion, AccordionItem, Button, Layer, Search } from '@carbon/react';
18
14
  import { BATCH, CLEAR_FILTERS, INSTANT, PANEL } from './constants';
19
- import cx from 'classnames';
20
- import { motion } from 'framer-motion';
21
- import { panelVariants, innerContainerVariants, actionSetVariants } from './motion/variants';
22
- import { Close } from '@carbon/react/icons';
15
+ import React, { useContext, useEffect, useMemo, useRef, useState } from 'react';
16
+ import { actionSetVariants, innerContainerVariants, panelVariants } from './motion/variants';
17
+ import { useFilters, useShouldDisableButtons, useSubscribeToEventEmitter } from './hooks';
23
18
  import { ActionSet } from '../../../../ActionSet';
19
+ import { Close } from '@carbon/react/icons';
24
20
  import { FilterContext } from '.';
25
- import { useFilters, useSubscribeToEventEmitter, useShouldDisableButtons } from './hooks';
21
+ import PropTypes from 'prop-types';
22
+ import cx from 'classnames';
23
+ import { motion } from 'framer-motion';
24
+ import { pkg } from '../../../../../settings';
25
+ import { rem } from '@carbon/layout';
26
26
  var blockClass = "".concat(pkg.prefix, "--datagrid");
27
- var componentClass = "".concat(blockClass, "-filter-panel");
27
+ export var componentClass = "".concat(blockClass, "-filter-panel");
28
28
  var MotionActionSet = motion(ActionSet);
29
29
  var FilterPanel = function FilterPanel(_ref) {
30
30
  var _cx;
@@ -63,13 +63,19 @@ var FilterPanel = function FilterPanel(_ref) {
63
63
  _useState2 = _slicedToArray(_useState, 2),
64
64
  showDividerLine = _useState2[0],
65
65
  setShowDividerLine = _useState2[1];
66
+
67
+ /** Context */
68
+ var _useContext = useContext(FilterContext),
69
+ panelOpen = _useContext.panelOpen,
70
+ setPanelOpen = _useContext.setPanelOpen;
66
71
  var _useFilters = useFilters({
67
72
  updateMethod: updateMethod,
68
73
  filters: filterSections,
69
74
  setAllFilters: setAllFilters,
70
75
  variation: PANEL,
71
76
  reactTableFiltersState: reactTableFiltersState,
72
- onCancel: onCancel
77
+ onCancel: onCancel,
78
+ panelOpen: panelOpen
73
79
  }),
74
80
  filtersState = _useFilters.filtersState,
75
81
  prevFiltersObjectArrayRef = _useFilters.prevFiltersObjectArrayRef,
@@ -101,11 +107,6 @@ var FilterPanel = function FilterPanel(_ref) {
101
107
  return updateMethod === BATCH;
102
108
  }, [updateMethod]);
103
109
 
104
- /** Context */
105
- var _useContext = useContext(FilterContext),
106
- panelOpen = _useContext.panelOpen,
107
- setPanelOpen = _useContext.setPanelOpen;
108
-
109
110
  /** Methods */
110
111
  var closePanel = function closePanel() {
111
112
  cancel();