@carbon/ibm-products 2.15.0 → 2.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/css/index-full-carbon.css +22 -8
  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.css +22 -8
  6. package/css/index-without-carbon.css.map +1 -1
  7. package/css/index-without-carbon.min.css +1 -1
  8. package/css/index-without-carbon.min.css.map +1 -1
  9. package/css/index.css +22 -8
  10. package/css/index.css.map +1 -1
  11. package/css/index.min.css +1 -1
  12. package/css/index.min.css.map +1 -1
  13. package/es/components/Datagrid/Datagrid/DatagridExpandedRow.js +1 -1
  14. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +4 -3
  15. package/es/components/Datagrid/Datagrid/DatagridRefBody.js +4 -1
  16. package/es/components/Datagrid/Datagrid/DatagridRow.js +5 -2
  17. package/es/components/Datagrid/Datagrid/DatagridSimpleBody.js +4 -1
  18. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +18 -19
  19. package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +14 -18
  20. package/es/components/Datagrid/Datagrid.docs-page.js +7 -1
  21. package/es/components/Datagrid/useActionsColumn.js +7 -5
  22. package/es/components/Datagrid/useColumnCenterAlign.js +6 -6
  23. package/es/components/Datagrid/useColumnRightAlign.js +6 -6
  24. package/es/components/Datagrid/useDatagrid.js +8 -0
  25. package/es/components/Datagrid/useInfiniteScroll.js +10 -9
  26. package/es/components/Datagrid/useNestedRowExpander.js +10 -1
  27. package/es/components/Datagrid/useParentDimensions.js +6 -6
  28. package/es/components/Datagrid/useResizeTable.js +7 -7
  29. package/es/components/Datagrid/useRowExpander.js +11 -1
  30. package/es/components/Datagrid/useSelectAllToggle.js +2 -2
  31. package/es/components/Datagrid/useSelectRows.js +27 -21
  32. package/es/components/Datagrid/useSkeletonRows.js +6 -6
  33. package/es/components/Datagrid/useStickyColumn.js +13 -6
  34. package/lib/components/Datagrid/Datagrid/DatagridExpandedRow.js +1 -1
  35. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +4 -3
  36. package/lib/components/Datagrid/Datagrid/DatagridRefBody.js +4 -1
  37. package/lib/components/Datagrid/Datagrid/DatagridRow.js +5 -2
  38. package/lib/components/Datagrid/Datagrid/DatagridSimpleBody.js +4 -1
  39. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +18 -19
  40. package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +13 -18
  41. package/lib/components/Datagrid/Datagrid.docs-page.js +7 -1
  42. package/lib/components/Datagrid/useActionsColumn.js +7 -5
  43. package/lib/components/Datagrid/useColumnCenterAlign.js +5 -6
  44. package/lib/components/Datagrid/useColumnRightAlign.js +5 -6
  45. package/lib/components/Datagrid/useDatagrid.js +8 -0
  46. package/lib/components/Datagrid/useInfiniteScroll.js +9 -9
  47. package/lib/components/Datagrid/useNestedRowExpander.js +15 -9
  48. package/lib/components/Datagrid/useParentDimensions.js +5 -6
  49. package/lib/components/Datagrid/useResizeTable.js +6 -7
  50. package/lib/components/Datagrid/useRowExpander.js +16 -9
  51. package/lib/components/Datagrid/useSelectAllToggle.js +2 -2
  52. package/lib/components/Datagrid/useSelectRows.js +27 -21
  53. package/lib/components/Datagrid/useSkeletonRows.js +6 -6
  54. package/lib/components/Datagrid/useStickyColumn.js +13 -6
  55. package/package.json +2 -2
  56. package/scss/components/Datagrid/styles/_datagrid.scss +26 -5
@@ -2,13 +2,13 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
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; }
4
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; }
5
- /*
6
- * Licensed Materials - Property of IBM
7
- * 5724-Q36
8
- * (c) Copyright IBM Corp. 2020 - 2023
9
- * US Government Users Restricted Rights - Use, duplication or disclosure
10
- * restricted by GSA ADP Schedule Contract with IBM Corp.
5
+ /**
6
+ * Copyright IBM Corp. 2020, 2023
7
+ *
8
+ * This source code is licensed under the Apache-2.0 license found in the
9
+ * LICENSE file in the root directory of this source tree.
11
10
  */
11
+
12
12
  import React, { useEffect } from 'react';
13
13
  import { VariableSizeList } from 'react-window';
14
14
  import { TableBody } from '@carbon/react';
@@ -22,12 +22,7 @@ var rowSizeMap = {
22
22
  sm: 32,
23
23
  md: 40,
24
24
  lg: 48,
25
- xl: 64,
26
- // TODO: deprecate the below values in next major release (v8) on carbon-components-react
27
- short: 32,
28
- compact: 24,
29
- normal: 48,
30
- tall: 64
25
+ xl: 64
31
26
  };
32
27
  var defaultRowHeight = rowSizeMap.lg;
33
28
  var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
@@ -51,8 +46,8 @@ var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
51
46
  gridRefElement.style.width = gridRefElement === null || gridRefElement === void 0 ? void 0 : gridRefElement.clientWidth;
52
47
  };
53
48
  useResizeObserver(gridRef, handleVirtualGridResize);
54
- var syncScroll = function syncScroll(e) {
55
- var virtualBody = e.target;
49
+ var syncScroll = function syncScroll(event) {
50
+ var virtualBody = event.target;
56
51
  document.querySelector(".".concat(blockClass, "__head-wrap")).scrollLeft = virtualBody.scrollLeft;
57
52
  var spacerColumn = document.querySelector(".".concat(blockClass, "__head-wrap thead th:last-child"));
58
53
  spacerColumn.style.width = px(32 + (virtualBody.offsetWidth - virtualBody.clientWidth)); // scrollbar width to header column to fix header alignment
@@ -73,9 +68,7 @@ var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
73
68
  overflow: 'hidden'
74
69
  }
75
70
  }, /*#__PURE__*/React.createElement(DatagridHead, datagridState)), /*#__PURE__*/React.createElement(TableBody, _extends({}, getTableBodyProps(), {
76
- onScroll: function onScroll(e) {
77
- return syncScroll(e);
78
- }
71
+ onScroll: syncScroll
79
72
  }), /*#__PURE__*/React.createElement(VariableSizeList, {
80
73
  height: virtualHeight || tableHeight,
81
74
  itemCount: visibleRows.length,
@@ -95,10 +88,13 @@ var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
95
88
  style = _ref.style;
96
89
  var row = visibleRows[index];
97
90
  prepareRow(row);
91
+ var _row$getRowProps = row.getRowProps(),
92
+ key = _row$getRowProps.key;
98
93
  return /*#__PURE__*/React.createElement("div", {
99
94
  style: _objectSpread({}, style)
100
95
  }, row.RowRenderer(_objectSpread(_objectSpread({}, datagridState), {}, {
101
- row: row
96
+ row: row,
97
+ key: key
102
98
  })));
103
99
  })));
104
100
  };
@@ -47,6 +47,12 @@ export var DocsPage = function DocsPage() {
47
47
  language: 'jsx',
48
48
  code: "\nuseDatagrid({\n columns,\n data,\n onColResizeEnd: (currentColumn, allColumns) =>\n console.log(currentColumn, allColumns),\n});\n "
49
49
  }
50
+ }, {
51
+ description: 'Disabling the resizable columns is possible by specifying `disableResizing: true` within the `useDatagrid` hook.',
52
+ source: {
53
+ language: 'jsx',
54
+ code: "\nuseDatagrid({\n columns,\n data,\n disableResizing: true,\n});\n "
55
+ }
50
56
  }, {
51
57
  title: 'Rendering the table toolbar',
52
58
  image: /*#__PURE__*/React.createElement("img", {
@@ -80,7 +86,7 @@ export var DocsPage = function DocsPage() {
80
86
  }, {
81
87
  description: "Infinite scroll:\n- Include `useInfiniteScroll` hook\n- Add `fetchMoreData` property to `useDatagrid`, this will be a function that is called when the scroll threshold is met. Optionally change the height of the grid with the `virtualHeight` property.",
82
88
  source: {
83
- code: "\nconst datagridState = useDatagrid(\n {\n columns,\n data,\n isFetching,\n fetchMoreData: fetchData,\n virtualHeight: 540,\n emptyStateTitle: 'Empty state title',\n emptyStateDescription: 'Description explaining why the table is empty',\n },\n useInfiniteScroll\n);"
89
+ code: "\nconst datagridState = useDatagrid(\n {\n columns,\n data,\n isFetching,\n fetchMoreData: fetchData,\n virtualHeight: 540,\n loadMoreThreshold: 200,\n emptyStateTitle: 'Empty state title',\n emptyStateDescription: 'Description explaining why the table is empty',\n },\n useInfiniteScroll\n);"
84
90
  }
85
91
  }, {
86
92
  description: "Virtualized data:\n- Include `useInfiniteScroll` hook\n- The Datagrid will know to use virtualized data just by providing the `useInfiniteScroll` hook\n ",
@@ -41,12 +41,13 @@ var useActionsColumn = function useActionsColumn(hooks) {
41
41
  column = cell.column;
42
42
  if (column.isAction) {
43
43
  var _cx3;
44
+ var isColumnSticky = !!column.sticky;
44
45
  return [props, {
45
46
  children: /*#__PURE__*/React.createElement("div", {
46
47
  className: "".concat(blockClass, "__actions-column-contents")
47
48
  }, isFetching && /*#__PURE__*/React.createElement(IconSkeleton, {
48
49
  className: "".concat(blockClass, "__actions-column-loading")
49
- }), !isFetching && rowActions.length <= 2 && /*#__PURE__*/React.createElement("div", {
50
+ }), !isFetching && rowActions.length <= 2 && !isColumnSticky && /*#__PURE__*/React.createElement("div", {
50
51
  className: "".concat(blockClass, "_actions-column"),
51
52
  style: {
52
53
  display: 'flex'
@@ -81,7 +82,7 @@ var useActionsColumn = function useActionsColumn(hooks) {
81
82
  _onClick(id, row, e);
82
83
  }
83
84
  })));
84
- })), !isFetching && rowActions.length > 2 && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(OverflowMenu, {
85
+ })), !isFetching && (rowActions.length > 2 || isColumnSticky) && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(OverflowMenu, {
85
86
  align: "left",
86
87
  size: "sm",
87
88
  flipped: true,
@@ -111,9 +112,9 @@ var useActionsColumn = function useActionsColumn(hooks) {
111
112
  key: id
112
113
  }));
113
114
  })))),
114
- className: cx((_cx3 = {}, _defineProperty(_cx3, "".concat(blockClass, "__actions-column-cell"), true), _defineProperty(_cx3, "".concat(blockClass, "__cell"), true), _cx3)),
115
+ className: cx((_cx3 = {}, _defineProperty(_cx3, "".concat(blockClass, "__actions-column-cell"), true), _defineProperty(_cx3, "".concat(blockClass, "__cell"), true), _defineProperty(_cx3, "".concat(blockClass, "__actions-column-cell-non-sticky"), !isColumnSticky), _cx3)),
115
116
  style: {
116
- width: rowActions.length > 2 ? 48 : 96
117
+ width: rowActions.length > 2 || isColumnSticky ? 48 : 96
117
118
  }
118
119
  }];
119
120
  }
@@ -128,9 +129,10 @@ var useActionsColumn = function useActionsColumn(hooks) {
128
129
  var addHeaderWidth = function addHeaderWidth(props, cellData) {
129
130
  var column = cellData.column;
130
131
  if (column.isAction) {
132
+ var isColumnSticky = !!column.sticky;
131
133
  return [props, {
132
134
  style: _objectSpread(_objectSpread({}, props.style), {}, {
133
- width: rowActions.length > 2 ? 48 : 96 // set header width based on action length
135
+ width: rowActions.length > 2 || isColumnSticky ? 48 : 96 // set header width based on action length
134
136
  })
135
137
  }];
136
138
  }
@@ -2,13 +2,13 @@ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
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; }
4
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; }
5
- /*
6
- * Licensed Materials - Property of IBM
7
- * 5724-Q36
8
- * (c) Copyright IBM Corp. 2020
9
- * US Government Users Restricted Rights - Use, duplication or disclosure
10
- * restricted by GSA ADP Schedule Contract with IBM Corp.
5
+ /**
6
+ * Copyright IBM Corp. 2020, 2023
7
+ *
8
+ * This source code is licensed under the Apache-2.0 license found in the
9
+ * LICENSE file in the root directory of this source tree.
11
10
  */
11
+
12
12
  import React from 'react';
13
13
  import cx from 'classnames';
14
14
  import { pkg } from '../../settings';
@@ -2,13 +2,13 @@ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
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; }
4
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; }
5
- /*
6
- * Licensed Materials - Property of IBM
7
- * 5724-Q36
8
- * (c) Copyright IBM Corp. 2020
9
- * US Government Users Restricted Rights - Use, duplication or disclosure
10
- * restricted by GSA ADP Schedule Contract with IBM Corp.
5
+ /**
6
+ * Copyright IBM Corp. 2020, 2023
7
+ *
8
+ * This source code is licensed under the Apache-2.0 license found in the
9
+ * LICENSE file in the root directory of this source tree.
11
10
  */
11
+
12
12
  import React from 'react';
13
13
  import cx from 'classnames';
14
14
  import { pkg } from '../../settings';
@@ -22,6 +22,14 @@ import useFloatingScroll from './useFloatingScroll';
22
22
  import { stateReducer } from './Datagrid/addons/stateReducer';
23
23
  var useDatagrid = function useDatagrid(params) {
24
24
  var defaultPlugins = [useFlexLayout, useHeaderRow, useSkeletonRows, useResizeColumns, useRowRenderer, useDefaultStringRenderer, useRowSize, useFilters, useGlobalFilter, useSortBy, useExpanded];
25
+
26
+ // Disable resizing
27
+ if (params.disableResizing) {
28
+ var resizeIndex = defaultPlugins.findIndex(function (p) {
29
+ return p.pluginName === 'useResizeColumns';
30
+ });
31
+ defaultPlugins.splice(resizeIndex, 1);
32
+ }
25
33
  var defaultEndPlugins = [usePagination, useRowSelect, useFlexResize, useFloatingScroll];
26
34
  var clientEndPlugins = params.endPlugins || [];
27
35
  var tableId = useMemo(function () {
@@ -1,10 +1,10 @@
1
- /*
2
- * Licensed Materials - Property of IBM
3
- * 5724-Q36
4
- * (c) Copyright IBM Corp. 2020
5
- * US Government Users Restricted Rights - Use, duplication or disclosure
6
- * restricted by GSA ADP Schedule Contract with IBM Corp.
1
+ /**
2
+ * Copyright IBM Corp. 2020, 2023
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.
7
6
  */
7
+
8
8
  import { useCallback, useEffect } from 'react';
9
9
  import debounce from 'lodash/debounce';
10
10
  import useParentDimensions from './useParentDimensions';
@@ -21,10 +21,11 @@ var useInfiniteScroll = function useInfiniteScroll(hooks) {
21
21
  tableHeight = instance.tableHeight,
22
22
  innerListRef = instance.innerListRef,
23
23
  fetchMoreData = instance.fetchMoreData,
24
- tableId = instance.tableId;
24
+ tableId = instance.tableId,
25
+ loadMoreThreshold = instance.loadMoreThreshold;
25
26
  var tableElement = document.querySelector("#".concat(tableId));
26
27
  var totalTableHeight = tableHeight || (tableElement === null || tableElement === void 0 ? void 0 : tableElement.clientHeight);
27
- var loadMoreThreshold = 200;
28
+ var loadMoreThresholdValue = typeof loadMoreThreshold === 'number' ? loadMoreThreshold : 200;
28
29
  var emptyFetchData = function emptyFetchData() {};
29
30
  // eslint-disable-next-line react-hooks/exhaustive-deps
30
31
  var fetchMore = useCallback(debounce(fetchMoreData || emptyFetchData, 3000, {
@@ -35,7 +36,7 @@ var useInfiniteScroll = function useInfiniteScroll(hooks) {
35
36
  var scrollDirection = _ref.scrollDirection,
36
37
  scrollOffset = _ref.scrollOffset;
37
38
  if (innerListRef && innerListRef.current) {
38
- if (!isFetching && scrollDirection === 'forward' && scrollOffset + totalTableHeight >= innerListRef.current.clientHeight - loadMoreThreshold) {
39
+ if (!isFetching && scrollDirection === 'forward' && scrollOffset + totalTableHeight >= innerListRef.current.clientHeight - loadMoreThresholdValue) {
39
40
  if (fetchMoreData) {
40
41
  fetchMore();
41
42
  }
@@ -1,6 +1,8 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
3
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
+ 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; }
5
+ 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
6
  /* eslint-disable react/prop-types */
5
7
  /**
6
8
  * Copyright IBM Corp. 2020, 2023
@@ -25,6 +27,13 @@ var useNestedRowExpander = function useNestedRowExpander(hooks) {
25
27
  Cell: function Cell(_ref) {
26
28
  var _cx;
27
29
  var row = _ref.row;
30
+ var expanderButtonProps = _objectSpread(_objectSpread({}, row.getToggleRowExpandedProps()), {}, {
31
+ onClick: function onClick(event) {
32
+ // Prevents `onRowClick` from being called if `useOnRowClick` is included
33
+ event.stopPropagation();
34
+ row.toggleRowExpanded();
35
+ }
36
+ });
28
37
  var _ref2 = (tempState === null || tempState === void 0 ? void 0 : tempState.current) || {},
29
38
  _ref2$expanderButtonT = _ref2.expanderButtonTitleExpanded,
30
39
  expanderButtonTitleExpanded = _ref2$expanderButtonT === void 0 ? 'Collapse row' : _ref2$expanderButtonT,
@@ -35,7 +44,7 @@ var useNestedRowExpander = function useNestedRowExpander(hooks) {
35
44
  type: "button",
36
45
  "aria-label": expanderTitle,
37
46
  className: cx("".concat(blockClass, "__row-expander"), "".concat(carbon.prefix, "--btn"), "".concat(carbon.prefix, "--btn--ghost"))
38
- }, row.getToggleRowExpandedProps(), {
47
+ }, expanderButtonProps, {
39
48
  title: expanderTitle
40
49
  }), /*#__PURE__*/React.createElement(ChevronRight, {
41
50
  className: cx("".concat(blockClass, "__expander-icon"), (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__expander-icon--not-open"), !row.isExpanded), _defineProperty(_cx, "".concat(blockClass, "__expander-icon--open"), row.isExpanded), _cx))
@@ -1,11 +1,11 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
- /*
3
- * Licensed Materials - Property of IBM
4
- * 5724-Q36
5
- * (c) Copyright IBM Corp. 2020
6
- * US Government Users Restricted Rights - Use, duplication or disclosure
7
- * restricted by GSA ADP Schedule Contract with IBM Corp.
2
+ /**
3
+ * Copyright IBM Corp. 2020, 2023
4
+ *
5
+ * This source code is licensed under the Apache-2.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
8
7
  */
8
+
9
9
  import { useRef, useState } from 'react';
10
10
  var useParentDimensions = function useParentDimensions(hooks) {
11
11
  var rootRef = useRef();
@@ -1,10 +1,10 @@
1
- /*
2
- * Licensed Materials - Property of IBM
3
- * 5724-Q36
4
- * (c) Copyright IBM Corp. 2020
5
- * US Government Users Restricted Rights - Use, duplication or disclosure
6
- * restricted by GSA ADP Schedule Contract with IBM Corp.
1
+ /**
2
+ * Copyright IBM Corp. 2020, 2023
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.
7
6
  */
7
+
8
8
  import { useLayoutEffect } from 'react';
9
9
  var useResizeTable = function useResizeTable(hooks) {
10
10
  var useInstanceBeforeDimensions = function useInstanceBeforeDimensions(instance) {
@@ -26,7 +26,7 @@ var useResizeTable = function useResizeTable(hooks) {
26
26
  resizeObserver = null;
27
27
  };
28
28
  }
29
- return console.error(' Could not resize table, no support for ResizeObserver');
29
+ return console.error('Could not resize table, no support for ResizeObserver');
30
30
  }, [handleResize, parent]);
31
31
  };
32
32
  hooks.useInstanceBeforeDimensions.push(useInstanceBeforeDimensions);
@@ -1,5 +1,8 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
+ 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; }
5
+ 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; }
3
6
  /* eslint-disable react/prop-types */
4
7
  /**
5
8
  * Copyright IBM Corp. 2020, 2023
@@ -23,6 +26,13 @@ var useRowExpander = function useRowExpander(hooks) {
23
26
  id: 'expander',
24
27
  Cell: function Cell(_ref) {
25
28
  var row = _ref.row;
29
+ var expanderButtonProps = _objectSpread(_objectSpread({}, row.getToggleRowExpandedProps()), {}, {
30
+ onClick: function onClick(event) {
31
+ // Prevents `onRowClick` from being called if `useOnRowClick` is included
32
+ event.stopPropagation();
33
+ row.toggleRowExpanded();
34
+ }
35
+ });
26
36
  var _ref2 = (tempState === null || tempState === void 0 ? void 0 : tempState.current) || {},
27
37
  _ref2$expanderButtonT = _ref2.expanderButtonTitleExpanded,
28
38
  expanderButtonTitleExpanded = _ref2$expanderButtonT === void 0 ? 'Collapse row' : _ref2$expanderButtonT,
@@ -33,7 +43,7 @@ var useRowExpander = function useRowExpander(hooks) {
33
43
  type: "button",
34
44
  "aria-label": expanderTitle,
35
45
  className: cx("".concat(blockClass, "__row-expander"), "".concat(carbon.prefix, "--btn"), "".concat(carbon.prefix, "--btn--ghost"))
36
- }, row.getToggleRowExpandedProps(), {
46
+ }, expanderButtonProps, {
37
47
  title: expanderTitle
38
48
  }), row.isExpanded ? /*#__PURE__*/React.createElement(ChevronUp, {
39
49
  className: "".concat(blockClass, "__row-expander--icon")
@@ -13,7 +13,7 @@ import cx from 'classnames';
13
13
  import { selectionColumnId } from './common-column-ids';
14
14
  import SelectAllWithToggle from './Datagrid/DatagridSelectAllWithToggle';
15
15
  import { pkg } from '../../settings';
16
- var blockClass = "".concat(pkg.prefix, "--datagrid");
16
+ var blockClass = "".concat(pkg.prefix, "--datagrid__select-all");
17
17
  var useSelectAllToggle = function useSelectAllToggle(hooks) {
18
18
  useSelectAllWithToggleComponent(hooks);
19
19
  useAddClassNameToSelectRow(hooks);
@@ -60,7 +60,7 @@ var useAddClassNameToSelectRow = function useAddClassNameToSelectRow(hooks) {
60
60
  var isFirstColumnStickyLeft = ((_columns$ = columns[0]) === null || _columns$ === void 0 ? void 0 : _columns$.sticky) === 'left' && withStickyColumn;
61
61
  if (column.id === selectionColumnId && DatagridPagination) {
62
62
  return [props, {
63
- className: cx("".concat(blockClass, "__select-all-toggle-on"), _defineProperty({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft && windowSize > 671))
63
+ className: cx("".concat(blockClass, "-toggle-on"), _defineProperty({}, "".concat(blockClass, "-sticky-left"), isFirstColumnStickyLeft && windowSize > 671))
64
64
  }];
65
65
  }
66
66
  return [props];
@@ -3,7 +3,7 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
3
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
4
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
5
5
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
6
- var _excluded = ["onChange"];
6
+ var _excluded = ["onChange", "title"];
7
7
  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; }
8
8
  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; }
9
9
  /*
@@ -21,6 +21,7 @@ import { SelectAll } from './Datagrid/DatagridSelectAll';
21
21
  import { selectionColumnId } from './common-column-ids';
22
22
  import { pkg, carbon } from '../../settings';
23
23
  var blockClass = "".concat(pkg.prefix, "--datagrid");
24
+ var checkboxClass = "".concat(pkg.prefix, "--datagrid__checkbox-cell");
24
25
  var useSelectRows = function useSelectRows(hooks) {
25
26
  useHighlightSelection(hooks);
26
27
  var useInstance = function useInstance(instance) {
@@ -54,9 +55,12 @@ var useSelectRows = function useSelectRows(hooks) {
54
55
  };
55
56
  var useHighlightSelection = function useHighlightSelection(hooks) {
56
57
  var getRowProps = function getRowProps(props, _ref) {
58
+ var _ref2;
57
59
  var row = _ref.row;
60
+ var _row$getToggleRowSele = row.getToggleRowSelectedProps(),
61
+ checked = _row$getToggleRowSele.checked;
58
62
  return [props, {
59
- className: cx("".concat(blockClass, "__carbon-row"), row.getToggleRowSelectedProps().checked ? "".concat(carbon.prefix, "--data-table--selected ").concat(blockClass, "__active-row") : '')
63
+ className: cx(["".concat(blockClass, "__carbon-row"), (_ref2 = {}, _defineProperty(_ref2, "".concat(carbon.prefix, "--data-table--selected"), checked), _defineProperty(_ref2, "".concat(blockClass, "__active-row"), checked), _ref2)])
60
64
  }];
61
65
  };
62
66
  hooks.getRowProps.push(getRowProps);
@@ -87,30 +91,32 @@ var SelectRow = function SelectRow(datagridState) {
87
91
  return window.removeEventListener('resize', updateSize);
88
92
  };
89
93
  }, []);
94
+ var onSelectHandler = function onSelectHandler(e) {
95
+ e.stopPropagation(); // avoid triggering onRowClick
96
+ if (radio) {
97
+ toggleAllRowsSelected(false);
98
+ if (onRadioSelect) {
99
+ onRadioSelect(row);
100
+ }
101
+ }
102
+ onChange(e);
103
+ onRowSelect === null || onRowSelect === void 0 || onRowSelect(row, e);
104
+ };
90
105
  var selectDisabled = isFetching || row.getRowProps().disabled;
91
- var _row$getToggleRowSele = row.getToggleRowSelectedProps(),
92
- onChange = _row$getToggleRowSele.onChange,
93
- selectProps = _objectWithoutProperties(_row$getToggleRowSele, _excluded);
106
+ var _row$getToggleRowSele2 = row.getToggleRowSelectedProps(),
107
+ onChange = _row$getToggleRowSele2.onChange,
108
+ title = _row$getToggleRowSele2.title,
109
+ selectProps = _objectWithoutProperties(_row$getToggleRowSele2, _excluded);
94
110
  var cellProps = cell.getCellProps();
95
111
  var isFirstColumnStickyLeft = ((_columns$ = columns[0]) === null || _columns$ === void 0 ? void 0 : _columns$.sticky) === 'left' && withStickyColumn;
112
+ var rowId = "".concat(tableId, "-").concat(row.index);
96
113
  return /*#__PURE__*/React.createElement(TableSelectRow, _extends({}, cellProps, selectProps, {
97
114
  radio: radio,
98
- onSelect: function onSelect(e) {
99
- e.stopPropagation(); // avoid triggering onRowClick
100
- if (radio) {
101
- toggleAllRowsSelected(false);
102
- if (onRadioSelect) {
103
- onRadioSelect(row);
104
- }
105
- }
106
- onChange(e);
107
- onRowSelect === null || onRowSelect === void 0 || onRowSelect(row, e);
108
- },
109
- id: "".concat(tableId, "-").concat(row.index),
110
- name: "".concat(tableId, "-").concat(row.index, "-name"),
111
- className: cx("".concat(blockClass, "__checkbox-cell"), cellProps.className, _defineProperty({}, "".concat(blockClass, "__checkbox-cell-sticky-left"), isFirstColumnStickyLeft && windowSize > 671)),
112
- ariaLabel: "".concat(tableId, "-row-").concat(row.index) // TODO: aria label should be i18n'ed
113
- ,
115
+ onSelect: onSelectHandler,
116
+ id: rowId,
117
+ name: "".concat(rowId, "-name"),
118
+ className: cx([checkboxClass, cellProps.className, _defineProperty({}, "".concat(checkboxClass, "-sticky-left"), isFirstColumnStickyLeft && windowSize > 671)]),
119
+ ariaLabel: title,
114
120
  disabled: selectDisabled
115
121
  }));
116
122
  };
@@ -1,11 +1,11 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- /*
3
- * Licensed Materials - Property of IBM
4
- * 5724-Q36
5
- * (c) Copyright IBM Corp. 2020
6
- * US Government Users Restricted Rights - Use, duplication or disclosure
7
- * restricted by GSA ADP Schedule Contract with IBM Corp.
2
+ /**
3
+ * Copyright IBM Corp. 2020, 2023
4
+ *
5
+ * This source code is licensed under the Apache-2.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
8
7
  */
8
+
9
9
  var useSkeletons = function useSkeletons(hooks) {
10
10
  var useInstance = function useInstance(instance) {
11
11
  var isFetching = instance.isFetching,
@@ -2,12 +2,11 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
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; }
4
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; }
5
- /*
6
- * Licensed Materials - Property of IBM
7
- * 5724-Q36
8
- * (c) Copyright IBM Corp. 2021
9
- * US Government Users Restricted Rights - Use, duplication or disclosure
10
- * restricted by GSA ADP Schedule Contract with IBM Corp.
5
+ /**
6
+ * Copyright IBM Corp. 2021, 2023
7
+ *
8
+ * This source code is licensed under the Apache-2.0 license found in the
9
+ * LICENSE file in the root directory of this source tree.
11
10
  */
12
11
 
13
12
  import { useEffect, useRef, useLayoutEffect, useState } from 'react';
@@ -29,9 +28,11 @@ var useStickyColumn = function useStickyColumn(hooks) {
29
28
  setWindowSize(window.innerWidth);
30
29
  }, []);
31
30
  useLayoutEffect(function () {
31
+ /* istanbul ignore next */
32
32
  function updateSize() {
33
33
  setWindowSize(window.innerWidth);
34
34
  }
35
+ /* istanbul ignore next */
35
36
  window.addEventListener('resize', updateSize);
36
37
  return function () {
37
38
  return window.removeEventListener('resize', updateSize);
@@ -52,14 +53,17 @@ var useStickyColumn = function useStickyColumn(hooks) {
52
53
  useEffect(function () {
53
54
  var tableBodyElement = tableBodyRef.current;
54
55
  var headerCellElement = stickyHeaderCellRef.current;
56
+ /* istanbul ignore next */
55
57
  if (hasVertScroll(tableBodyElement) && headerCellElement) {
56
58
  headerCellElement.classList.add(OFFSET_SCROLL_CLASS);
57
59
  }
58
60
  var boundListener = debounce(onBodyResize.bind(null, tableBodyElement, headerCellElement), 250);
61
+ /* istanbul ignore next */
59
62
  if (typeof window !== 'undefined') {
60
63
  window.addEventListener('resize', boundListener);
61
64
  }
62
65
  return function () {
66
+ /* istanbul ignore next */
63
67
  if (typeof window !== 'undefined') {
64
68
  window.removeEventListener('resize', boundListener);
65
69
  }
@@ -158,6 +162,7 @@ var changeProps = function changeProps(elementName, headerCellRef, windowSize, p
158
162
  };
159
163
  var onBodyResize = function onBodyResize(tableBodyEle, headerCellEle) {
160
164
  if (headerCellEle) {
165
+ /* istanbul ignore next */
161
166
  if (hasVertScroll(tableBodyEle)) {
162
167
  headerCellEle.classList.add(OFFSET_SCROLL_CLASS);
163
168
  } else {
@@ -167,6 +172,7 @@ var onBodyResize = function onBodyResize(tableBodyEle, headerCellEle) {
167
172
  }
168
173
  };
169
174
  var toggleStickyShadow = function toggleStickyShadow(tableBodyEle, headerCellEle) {
175
+ /* istanbul ignore next */
170
176
  if (tableBodyEle && headerCellEle) {
171
177
  var isScrolledToRight = tableBodyEle.scrollLeft + tableBodyEle.clientWidth === tableBodyEle.scrollWidth;
172
178
  if (isScrolledToRight) {
@@ -179,6 +185,7 @@ var toggleStickyShadow = function toggleStickyShadow(tableBodyEle, headerCellEle
179
185
  }
180
186
  };
181
187
  var hasVertScroll = function hasVertScroll(element) {
188
+ /* istanbul ignore next */
182
189
  if (!element) {
183
190
  return false;
184
191
  }
@@ -46,7 +46,7 @@ var DatagridExpandedRow = function DatagridExpandedRow(ExpandedRowContentCompone
46
46
  style: {
47
47
  height: expandedContentHeight ? expandedContentHeight : null
48
48
  }
49
- }, ExpandedRowContentComponent(datagridState)));
49
+ }, /*#__PURE__*/_react.default.createElement(ExpandedRowContentComponent, datagridState)));
50
50
  };
51
51
  };
52
52
  var _default = exports.default = DatagridExpandedRow;
@@ -88,13 +88,14 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
88
88
  dispatch = datagridState.dispatch,
89
89
  onColResizeEnd = datagridState.onColResizeEnd;
90
90
  var columnResizing = state.columnResizing;
91
- var columnWidths = columnResizing.columnWidths;
91
+ var _ref4 = columnResizing || {},
92
+ columnWidths = _ref4.columnWidths;
92
93
  var originalCol = visibleColumns[index];
93
94
  return /*#__PURE__*/_react.default.createElement(_react2.TableHeader, (0, _extends2.default)({}, header.getHeaderProps(), {
94
- className: (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__resizableColumn"), header.getResizerProps), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__isResizing"), header.isResizing), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__sortableColumn"), datagridState.isTableSortable && header.id !== 'spacer'), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__isSorted"), header.isSorted), _cx), header.getHeaderProps().className),
95
+ className: (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__resizableColumn"), header.getResizerProps), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__isResizing"), header.isResizing), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__sortableColumn"), datagridState.isTableSortable && header.id !== 'spacer'), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__isSorted"), header.isSorted), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__header-actions-column"), header.isAction), _cx), header.getHeaderProps().className),
95
96
  key: header.id,
96
97
  "aria-hidden": header.id === 'spacer' && 'true'
97
- }, getAccessibilityProps(header)), header.render('Header'), header.getResizerProps && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("input", (0, _extends2.default)({}, header.getResizerProps(), {
98
+ }, getAccessibilityProps(header)), header.render('Header'), header.getResizerProps && !header.isAction && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("input", (0, _extends2.default)({}, header.getResizerProps(), {
98
99
  onKeyDown: function onKeyDown(event) {
99
100
  var key = event.key;
100
101
  if (key === 'ArrowLeft' || key === 'ArrowRight') {
@@ -32,8 +32,11 @@ var DatagridRefBody = function DatagridRefBody(datagridState) {
32
32
  className: (0, _classnames.default)("".concat(blockClass, "__simple-body"), getTableBodyProps().className)
33
33
  }), rows.map(function (row) {
34
34
  prepareRow(row);
35
+ var _row$getRowProps = row.getRowProps(),
36
+ key = _row$getRowProps.key;
35
37
  return row.RowRenderer(_objectSpread(_objectSpread({}, datagridState), {}, {
36
- row: row
38
+ row: row,
39
+ key: key
37
40
  }));
38
41
  }));
39
42
  };
@@ -37,7 +37,8 @@ var DatagridRow = function DatagridRow(datagridState) {
37
37
  var row = datagridState.row,
38
38
  rowSize = datagridState.rowSize,
39
39
  withNestedRows = datagridState.withNestedRows,
40
- prepareRow = datagridState.prepareRow;
40
+ prepareRow = datagridState.prepareRow,
41
+ key = datagridState.key;
41
42
  var getVisibleNestedRowCount = function getVisibleNestedRowCount(_ref) {
42
43
  var isExpanded = _ref.isExpanded,
43
44
  subRows = _ref.subRows;
@@ -95,7 +96,9 @@ var DatagridRow = function DatagridRow(datagridState) {
95
96
  }
96
97
  };
97
98
  var rowClassNames = (0, _classnames.default)("".concat(blockClass, "__carbon-row"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-expandable"), row.canExpand), (0, _defineProperty2.default)(_cx, "".concat(_settings.carbon.prefix, "--data-table--selected"), row.isSelected), _cx));
98
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_react2.TableRow, (0, _extends2.default)({
99
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
100
+ key: key
101
+ }, /*#__PURE__*/_react.default.createElement(_react2.TableRow, (0, _extends2.default)({
99
102
  className: rowClassNames
100
103
  }, row.getRowProps(), {
101
104
  key: row.id,
@@ -28,8 +28,11 @@ var DatagridSimpleBody = function DatagridSimpleBody(datagridState) {
28
28
  className: (0, _classnames.default)("".concat(blockClass, "__simple-body"), getTableBodyProps().className)
29
29
  }), rows.map(function (row) {
30
30
  prepareRow(row);
31
+ var _row$getRowProps = row.getRowProps(),
32
+ key = _row$getRowProps.key;
31
33
  return row.RowRenderer(_objectSpread(_objectSpread({}, datagridState), {}, {
32
- row: row
34
+ row: row,
35
+ key: key
33
36
  }));
34
37
  }));
35
38
  };