@carbon/ibm-products 2.15.1 → 2.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. package/css/index-full-carbon.css +217 -9
  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 +1 -1
  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 +217 -9
  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 +27 -9
  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/Datagrid/Datagrid/DatagridContent.js +12 -9
  18. package/es/components/Datagrid/Datagrid/DatagridExpandedRow.js +4 -4
  19. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +40 -25
  20. package/es/components/Datagrid/Datagrid/DatagridRefBody.js +4 -1
  21. package/es/components/Datagrid/Datagrid/DatagridRow.js +5 -2
  22. package/es/components/Datagrid/Datagrid/DatagridSelectAll.js +12 -11
  23. package/es/components/Datagrid/Datagrid/DatagridSimpleBody.js +4 -1
  24. package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +35 -28
  25. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +2 -2
  26. package/es/components/Datagrid/Datagrid/addons/stateReducer.js +50 -14
  27. package/es/components/Datagrid/Datagrid.docs-page.js +8 -2
  28. package/es/components/Datagrid/useActionsColumn.js +7 -5
  29. package/es/components/Datagrid/useDatagrid.js +13 -1
  30. package/es/components/Datagrid/useInfiniteScroll.js +10 -9
  31. package/es/components/Datagrid/useOnRowClick.js +6 -7
  32. package/es/components/Datagrid/useParentDimensions.js +6 -6
  33. package/es/components/Datagrid/useResizeTable.js +7 -7
  34. package/es/components/Datagrid/useSelectRows.js +8 -5
  35. package/es/components/Datagrid/useSkeletonRows.js +6 -6
  36. package/es/components/Datagrid/useSortableColumns.js +5 -7
  37. package/es/components/Datagrid/useStickyColumn.js +13 -6
  38. package/es/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +2 -1
  39. package/es/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +2 -1
  40. package/es/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +2 -1
  41. package/es/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +2 -1
  42. package/es/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +2 -1
  43. package/es/components/EmptyStates/assets/ErrorIllustration.js +5 -3
  44. package/es/components/EmptyStates/assets/NoDataIllustration.js +5 -3
  45. package/es/components/EmptyStates/assets/NoTagsIllustration.js +5 -3
  46. package/es/components/EmptyStates/assets/NotFoundIllustration.js +5 -3
  47. package/es/components/EmptyStates/assets/NotificationsIllustration.js +5 -3
  48. package/es/components/EmptyStates/assets/UnauthorizedIllustration.js +5 -3
  49. package/es/components/InlineTip/InlineTip.docs-page.js +13 -0
  50. package/es/components/InlineTip/InlineTip.js +217 -0
  51. package/es/components/InlineTip/InlineTipButton.js +53 -0
  52. package/es/components/InlineTip/InlineTipLink.js +57 -0
  53. package/es/components/InlineTip/index.js +10 -0
  54. package/es/components/InlineTip/utils.js +36 -0
  55. package/es/components/SteppedAnimatedMedia/SteppedAnimatedMedia.docs-page.js +11 -0
  56. package/es/components/SteppedAnimatedMedia/SteppedAnimatedMedia.js +140 -0
  57. package/es/components/SteppedAnimatedMedia/assets/index.js +4 -0
  58. package/es/components/SteppedAnimatedMedia/index.js +8 -0
  59. package/es/global/js/package-settings.js +2 -1
  60. package/lib/components/Datagrid/Datagrid/DatagridContent.js +12 -9
  61. package/lib/components/Datagrid/Datagrid/DatagridExpandedRow.js +4 -4
  62. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +45 -32
  63. package/lib/components/Datagrid/Datagrid/DatagridRefBody.js +4 -1
  64. package/lib/components/Datagrid/Datagrid/DatagridRow.js +5 -2
  65. package/lib/components/Datagrid/Datagrid/DatagridSelectAll.js +11 -11
  66. package/lib/components/Datagrid/Datagrid/DatagridSimpleBody.js +4 -1
  67. package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +33 -27
  68. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +2 -2
  69. package/lib/components/Datagrid/Datagrid/addons/stateReducer.js +51 -15
  70. package/lib/components/Datagrid/Datagrid.docs-page.js +8 -2
  71. package/lib/components/Datagrid/useActionsColumn.js +7 -5
  72. package/lib/components/Datagrid/useDatagrid.js +13 -1
  73. package/lib/components/Datagrid/useInfiniteScroll.js +9 -9
  74. package/lib/components/Datagrid/useOnRowClick.js +6 -7
  75. package/lib/components/Datagrid/useParentDimensions.js +5 -6
  76. package/lib/components/Datagrid/useResizeTable.js +6 -7
  77. package/lib/components/Datagrid/useSelectRows.js +8 -5
  78. package/lib/components/Datagrid/useSkeletonRows.js +6 -6
  79. package/lib/components/Datagrid/useSortableColumns.js +5 -7
  80. package/lib/components/Datagrid/useStickyColumn.js +13 -6
  81. package/lib/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +2 -1
  82. package/lib/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +2 -1
  83. package/lib/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +2 -1
  84. package/lib/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +2 -1
  85. package/lib/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +2 -1
  86. package/lib/components/EmptyStates/assets/ErrorIllustration.js +5 -3
  87. package/lib/components/EmptyStates/assets/NoDataIllustration.js +5 -3
  88. package/lib/components/EmptyStates/assets/NoTagsIllustration.js +5 -3
  89. package/lib/components/EmptyStates/assets/NotFoundIllustration.js +5 -3
  90. package/lib/components/EmptyStates/assets/NotificationsIllustration.js +5 -3
  91. package/lib/components/EmptyStates/assets/UnauthorizedIllustration.js +5 -3
  92. package/lib/components/InlineTip/InlineTip.docs-page.js +23 -0
  93. package/lib/components/InlineTip/InlineTip.js +224 -0
  94. package/lib/components/InlineTip/InlineTipButton.js +57 -0
  95. package/lib/components/InlineTip/InlineTipLink.js +61 -0
  96. package/lib/components/InlineTip/index.js +26 -0
  97. package/lib/components/InlineTip/utils.js +43 -0
  98. package/lib/components/SteppedAnimatedMedia/SteppedAnimatedMedia.docs-page.js +21 -0
  99. package/lib/components/SteppedAnimatedMedia/SteppedAnimatedMedia.js +148 -0
  100. package/lib/components/SteppedAnimatedMedia/assets/index.js +9 -0
  101. package/lib/components/SteppedAnimatedMedia/index.js +12 -0
  102. package/lib/global/js/package-settings.js +2 -1
  103. package/package.json +2 -2
  104. package/scss/components/Datagrid/styles/_datagrid.scss +31 -5
  105. package/scss/components/InlineTip/_index.scss +8 -0
  106. package/scss/components/InlineTip/_inline-tip.scss +229 -0
  107. package/scss/components/InlineTip/_storybook-styles.scss +20 -0
  108. package/scss/components/SidePanel/_side-panel.scss +1 -4
  109. package/scss/components/SteppedAnimatedMedia/_index.scss +8 -0
  110. package/scss/components/SteppedAnimatedMedia/_stepped-animated-media.scss +6 -0
  111. package/scss/components/SteppedAnimatedMedia/_storybook-styles.scss +13 -0
  112. package/scss/components/_index.scss +1 -0
@@ -1,6 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
+ 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
  /**
5
7
  * Copyright IBM Corp. 2020, 2023
6
8
  *
@@ -28,35 +30,44 @@ var getAccessibilityProps = function getAccessibilityProps(header) {
28
30
  return props;
29
31
  };
30
32
  var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
33
+ var resizerAriaLabel = datagridState.resizerAriaLabel;
31
34
  // Used to measure the height of the table and uses that value
32
35
  // to display a vertical line to indicate the column you are resizing
33
36
  useEffect(function () {
34
37
  var tableId = datagridState.tableId;
35
- if (tableId) {
36
- var gridElement = document.querySelector("#".concat(tableId));
37
- var tableElement = gridElement.querySelector('table');
38
- var headerRowElement = document.querySelector("#".concat(tableId, " .").concat(blockClass, "__head"));
39
- var hasHorizontalScrollbar = tableElement.scrollWidth > tableElement.clientWidth;
40
- var scrollBuffer = hasHorizontalScrollbar ? 18 : 2;
41
- var tableToolbar = gridElement.querySelector(".".concat(blockClass, "__table-toolbar"));
42
- var tableToolbarHeight = (tableToolbar === null || tableToolbar === void 0 ? void 0 : tableToolbar.offsetHeight) || 0;
43
- var setCustomValues = function setCustomValues(_ref) {
44
- var _ref$rowHeight = _ref.rowHeight,
45
- rowHeight = _ref$rowHeight === void 0 ? 48 : _ref$rowHeight,
46
- gridHeight = _ref.gridHeight;
47
- headerRowElement.style.setProperty("--".concat(blockClass, "--row-height"), px(rowHeight));
48
- headerRowElement.style.setProperty("--".concat(blockClass, "--grid-height"), px(gridHeight - scrollBuffer - tableToolbarHeight));
49
- headerRowElement.style.setProperty("--".concat(blockClass, "--header-height"), px(headerRowElement.offsetHeight));
50
- };
51
- setCustomValues({
52
- gridHeight: gridElement.offsetHeight,
53
- rowHeight: headerRowElement.clientHeight
54
- });
55
- }
38
+ var gridElement = document.querySelector("#".concat(tableId));
39
+ var tableElement = gridElement.querySelector('table');
40
+ var headerRowElement = document.querySelector("#".concat(tableId, " .").concat(blockClass, "__head"));
41
+ var hasHorizontalScrollbar = tableElement.scrollWidth > tableElement.clientWidth;
42
+ var scrollBuffer = hasHorizontalScrollbar ? 18 : 2;
43
+ var tableToolbar = gridElement.querySelector(".".concat(blockClass, "__table-toolbar"));
44
+ var tableToolbarHeight = (tableToolbar === null || tableToolbar === void 0 ? void 0 : tableToolbar.offsetHeight) || 0;
45
+ var setCustomValues = function setCustomValues(_ref) {
46
+ var rowHeight = _ref.rowHeight,
47
+ gridHeight = _ref.gridHeight;
48
+ headerRowElement.style.setProperty("--".concat(blockClass, "--row-height"), px(rowHeight));
49
+ headerRowElement.style.setProperty("--".concat(blockClass, "--grid-height"), px(gridHeight - scrollBuffer - tableToolbarHeight));
50
+ headerRowElement.style.setProperty("--".concat(blockClass, "--header-height"), px(headerRowElement.offsetHeight));
51
+ };
52
+ setCustomValues({
53
+ gridHeight: gridElement.offsetHeight,
54
+ rowHeight: headerRowElement.clientHeight
55
+ });
56
56
  }, [datagridState.rowSize, datagridState.tableId, datagridState]);
57
57
  var _useState = useState(2),
58
58
  _useState2 = _slicedToArray(_useState, 1),
59
59
  incrementAmount = _useState2[0];
60
+ var handleOnMouseDownResize = function handleOnMouseDownResize(event, resizeProps) {
61
+ var _resizeProps = _objectSpread({}, resizeProps()),
62
+ onMouseDown = _resizeProps.onMouseDown;
63
+ // When event.button is 2, that is a right click
64
+ // and we do not want to resize
65
+ if (event.button === 2 || event.ctrlKey) {
66
+ event.target.blur();
67
+ return;
68
+ }
69
+ onMouseDown === null || onMouseDown === void 0 || onMouseDown(event);
70
+ };
60
71
  return /*#__PURE__*/React.createElement(TableRow, _extends({}, headerGroup.getHeaderGroupProps(), {
61
72
  className: cx("".concat(blockClass, "__head"), headerGroup.getHeaderGroupProps().className),
62
73
  ref: headRef
@@ -78,13 +89,17 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
78
89
  dispatch = datagridState.dispatch,
79
90
  onColResizeEnd = datagridState.onColResizeEnd;
80
91
  var columnResizing = state.columnResizing;
81
- var columnWidths = columnResizing.columnWidths;
92
+ var _ref4 = columnResizing || {},
93
+ columnWidths = _ref4.columnWidths;
82
94
  var originalCol = visibleColumns[index];
83
95
  return /*#__PURE__*/React.createElement(TableHeader, _extends({}, header.getHeaderProps(), {
84
- className: cx((_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__resizableColumn"), header.getResizerProps), _defineProperty(_cx, "".concat(blockClass, "__isResizing"), header.isResizing), _defineProperty(_cx, "".concat(blockClass, "__sortableColumn"), datagridState.isTableSortable && header.id !== 'spacer'), _defineProperty(_cx, "".concat(blockClass, "__isSorted"), header.isSorted), _cx), header.getHeaderProps().className),
96
+ className: cx((_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__resizableColumn"), header.getResizerProps), _defineProperty(_cx, "".concat(blockClass, "__isResizing"), header.isResizing), _defineProperty(_cx, "".concat(blockClass, "__sortableColumn"), datagridState.isTableSortable && header.id !== 'spacer'), _defineProperty(_cx, "".concat(blockClass, "__isSorted"), header.isSorted), _defineProperty(_cx, "".concat(blockClass, "__header-actions-column"), header.isAction), _cx), header.getHeaderProps().className),
85
97
  key: header.id,
86
98
  "aria-hidden": header.id === 'spacer' && 'true'
87
- }, getAccessibilityProps(header)), header.render('Header'), header.getResizerProps && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("input", _extends({}, header.getResizerProps(), {
99
+ }, getAccessibilityProps(header)), header.render('Header'), header.getResizerProps && !header.isAction && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("input", _extends({}, header.getResizerProps(), {
100
+ onMouseDown: function onMouseDown(event) {
101
+ return handleOnMouseDownResize(event, header.getResizerProps);
102
+ },
88
103
  onKeyDown: function onKeyDown(event) {
89
104
  var key = event.key;
90
105
  if (key === 'ArrowLeft' || key === 'ArrowRight') {
@@ -108,7 +123,7 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
108
123
  className: cx("".concat(blockClass, "__col-resizer-range")),
109
124
  type: "range",
110
125
  defaultValue: originalCol.width,
111
- "aria-label": "Resize column"
126
+ "aria-label": resizerAriaLabel || 'Resize column'
112
127
  })), /*#__PURE__*/React.createElement("span", {
113
128
  className: "".concat(blockClass, "__col-resize-indicator")
114
129
  })));
@@ -26,8 +26,11 @@ var DatagridRefBody = function DatagridRefBody(datagridState) {
26
26
  className: cx("".concat(blockClass, "__simple-body"), getTableBodyProps().className)
27
27
  }), rows.map(function (row) {
28
28
  prepareRow(row);
29
+ var _row$getRowProps = row.getRowProps(),
30
+ key = _row$getRowProps.key;
29
31
  return row.RowRenderer(_objectSpread(_objectSpread({}, datagridState), {}, {
30
- row: row
32
+ row: row,
33
+ key: key
31
34
  }));
32
35
  }));
33
36
  };
@@ -32,7 +32,8 @@ var DatagridRow = function DatagridRow(datagridState) {
32
32
  var row = datagridState.row,
33
33
  rowSize = datagridState.rowSize,
34
34
  withNestedRows = datagridState.withNestedRows,
35
- prepareRow = datagridState.prepareRow;
35
+ prepareRow = datagridState.prepareRow,
36
+ key = datagridState.key;
36
37
  var getVisibleNestedRowCount = function getVisibleNestedRowCount(_ref) {
37
38
  var isExpanded = _ref.isExpanded,
38
39
  subRows = _ref.subRows;
@@ -90,7 +91,9 @@ var DatagridRow = function DatagridRow(datagridState) {
90
91
  }
91
92
  };
92
93
  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
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TableRow, _extends({
94
+ return /*#__PURE__*/React.createElement(React.Fragment, {
95
+ key: key
96
+ }, /*#__PURE__*/React.createElement(TableRow, _extends({
94
97
  className: rowClassNames
95
98
  }, row.getRowProps(), {
96
99
  key: row.id,
@@ -3,14 +3,13 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
3
3
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
4
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
5
5
  var _excluded = ["onChange"];
6
- /*
7
- * Licensed Materials - Property of IBM
8
- * 5724-Q36
9
- * (c) Copyright IBM Corp. 2023
10
- * US Government Users Restricted Rights - Use, duplication or disclosure
11
- * restricted by GSA ADP Schedule Contract with IBM Corp.
6
+ /**
7
+ * Copyright IBM Corp. 2020, 2023
8
+ *
9
+ * This source code is licensed under the Apache-2.0 license found in the
10
+ * LICENSE file in the root directory of this source tree.
12
11
  */
13
- // @flow
12
+
14
13
  import React, { useLayoutEffect, useState } from 'react';
15
14
  import { TableSelectAll } from '@carbon/react';
16
15
  import cx from 'classnames';
@@ -23,6 +22,7 @@ var SelectAll = function SelectAll(datagridState) {
23
22
  windowSize = _useState2[0],
24
23
  setWindowSize = _useState2[1];
25
24
  useLayoutEffect(function () {
25
+ /* istanbul ignore next */
26
26
  function updateSize() {
27
27
  setWindowSize(window.innerWidth);
28
28
  }
@@ -43,15 +43,15 @@ var SelectAll = function SelectAll(datagridState) {
43
43
  var isFirstColumnStickyLeft = ((_columns$ = columns[0]) === null || _columns$ === void 0 ? void 0 : _columns$.sticky) === 'left' && withStickyColumn;
44
44
  if (hideSelectAll || radio) {
45
45
  return /*#__PURE__*/React.createElement("div", {
46
- className: cx("".concat(blockClass, "__head-hidden-select-all"), _defineProperty({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft && windowSize > 671))
46
+ className: cx("".concat(blockClass, "__head-hidden-select-all"), _defineProperty({}, "".concat(blockClass, "__select-all-sticky-left"), /* istanbul ignore next */
47
+ isFirstColumnStickyLeft && windowSize > 671))
47
48
  });
48
49
  }
49
50
  var getProps = DatagridPagination ? getToggleAllPageRowsSelectedProps : getToggleAllRowsSelectedProps;
50
51
  var _getProps = getProps(),
51
52
  onChange = _getProps.onChange,
52
53
  selectProps = _objectWithoutProperties(_getProps, _excluded);
53
- var _ref = selectProps || {},
54
- indeterminate = _ref.indeterminate;
54
+ var indeterminate = selectProps.indeterminate;
55
55
  var handleSelectAllChange = function handleSelectAllChange(event) {
56
56
  if (indeterminate) {
57
57
  return onChange === null || onChange === void 0 ? void 0 : onChange({
@@ -63,7 +63,8 @@ var SelectAll = function SelectAll(datagridState) {
63
63
  return onChange === null || onChange === void 0 ? void 0 : onChange(event);
64
64
  };
65
65
  return /*#__PURE__*/React.createElement("div", {
66
- className: cx("".concat(blockClass, "__head-select-all"), "".concat(blockClass, "__checkbox-cell"), _defineProperty({}, "".concat(blockClass, "__checkbox-cell-sticky-left"), isFirstColumnStickyLeft && windowSize > 671))
66
+ className: cx("".concat(blockClass, "__head-select-all"), "".concat(blockClass, "__checkbox-cell"), _defineProperty({}, "".concat(blockClass, "__checkbox-cell-sticky-left"), /* istanbul ignore next */
67
+ isFirstColumnStickyLeft && windowSize > 671))
67
68
  }, /*#__PURE__*/React.createElement(TableSelectAll, _extends({}, selectProps, {
68
69
  name: "".concat(tableId, "-select-all-checkbox-name"),
69
70
  onSelect: handleSelectAllChange,
@@ -22,8 +22,11 @@ var DatagridSimpleBody = function DatagridSimpleBody(datagridState) {
22
22
  className: cx("".concat(blockClass, "__simple-body"), getTableBodyProps().className)
23
23
  }), rows.map(function (row) {
24
24
  prepareRow(row);
25
+ var _row$getRowProps = row.getRowProps(),
26
+ key = _row$getRowProps.key;
25
27
  return row.RowRenderer(_objectSpread(_objectSpread({}, datagridState), {}, {
26
- row: row
28
+ row: row,
29
+ key: key
27
30
  }));
28
31
  }));
29
32
  };
@@ -1,15 +1,14 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
2
  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
3
  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.
4
+ /**
5
+ * Copyright IBM Corp. 2020, 2023
6
+ *
7
+ * This source code is licensed under the Apache-2.0 license found in the
8
+ * LICENSE file in the root directory of this source tree.
11
9
  */
12
- import React, { useEffect } from 'react';
10
+
11
+ import React, { useEffect, useRef } from 'react';
13
12
  import { VariableSizeList } from 'react-window';
14
13
  import { TableBody } from '@carbon/react';
15
14
  import { pkg } from '../../../settings';
@@ -22,12 +21,7 @@ var rowSizeMap = {
22
21
  sm: 32,
23
22
  md: 40,
24
23
  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
24
+ xl: 64
31
25
  };
32
26
  var defaultRowHeight = rowSizeMap.lg;
33
27
  var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
@@ -45,19 +39,15 @@ var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
45
39
  DatagridPagination = datagridState.DatagridPagination,
46
40
  page = datagridState.page,
47
41
  handleResize = datagridState.handleResize,
48
- gridRef = datagridState.gridRef;
42
+ gridRef = datagridState.gridRef,
43
+ tableId = datagridState.tableId;
44
+
45
+ /* istanbul ignore next */
49
46
  var handleVirtualGridResize = function handleVirtualGridResize() {
50
47
  var gridRefElement = gridRef === null || gridRef === void 0 ? void 0 : gridRef.current;
51
48
  gridRefElement.style.width = gridRefElement === null || gridRefElement === void 0 ? void 0 : gridRefElement.clientWidth;
52
49
  };
53
50
  useResizeObserver(gridRef, handleVirtualGridResize);
54
- var syncScroll = function syncScroll(e) {
55
- var virtualBody = e.target;
56
- document.querySelector(".".concat(blockClass, "__head-wrap")).scrollLeft = virtualBody.scrollLeft;
57
- var spacerColumn = document.querySelector(".".concat(blockClass, "__head-wrap thead th:last-child"));
58
- spacerColumn.style.width = px(32 + (virtualBody.offsetWidth - virtualBody.clientWidth)); // scrollbar width to header column to fix header alignment
59
- };
60
-
61
51
  useEffect(function () {
62
52
  handleResize();
63
53
  }, [handleResize]);
@@ -66,17 +56,30 @@ var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
66
56
  listRef.current.resetAfterIndex(0);
67
57
  }
68
58
  var visibleRows = DatagridPagination && page || rows;
59
+ var testRef = useRef();
60
+
61
+ // Sync the scrollLeft position of the virtual body to the table header
62
+ useEffect(function () {
63
+ function handleScroll(event) {
64
+ var virtualBody = event.target;
65
+ document.querySelector("#".concat(tableId, " .").concat(blockClass, "__head-wrap")).scrollLeft = virtualBody.scrollLeft;
66
+ var spacerColumn = document.querySelector("#".concat(tableId, " .").concat(blockClass, "__head-wrap thead th:last-child"));
67
+ spacerColumn.style.width = px(32 + (virtualBody.offsetWidth - virtualBody.clientWidth)); // scrollbar width to header column to fix header alignment
68
+ }
69
+
70
+ var testRefValue = testRef.current;
71
+ testRefValue.addEventListener('scroll', handleScroll);
72
+ return function () {
73
+ testRefValue.removeEventListener('scroll', handleScroll);
74
+ };
75
+ });
69
76
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
70
77
  className: "".concat(blockClass, "__head-wrap"),
71
78
  style: {
72
79
  width: (_gridRef$current = gridRef.current) === null || _gridRef$current === void 0 ? void 0 : _gridRef$current.clientWidth,
73
80
  overflow: 'hidden'
74
81
  }
75
- }, /*#__PURE__*/React.createElement(DatagridHead, datagridState)), /*#__PURE__*/React.createElement(TableBody, _extends({}, getTableBodyProps(), {
76
- onScroll: function onScroll(e) {
77
- return syncScroll(e);
78
- }
79
- }), /*#__PURE__*/React.createElement(VariableSizeList, {
82
+ }, /*#__PURE__*/React.createElement(DatagridHead, datagridState)), /*#__PURE__*/React.createElement(TableBody, getTableBodyProps(), /*#__PURE__*/React.createElement(VariableSizeList, {
80
83
  height: virtualHeight || tableHeight,
81
84
  itemCount: visibleRows.length,
82
85
  itemSize: function itemSize(index) {
@@ -85,6 +88,7 @@ var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
85
88
  estimatedItemSize: rowHeight,
86
89
  onScroll: onScroll,
87
90
  innerRef: innerListRef,
91
+ outerRef: testRef,
88
92
  ref: listRef,
89
93
  className: "".concat(blockClass, "__virtual-scrollbar"),
90
94
  style: {
@@ -95,10 +99,13 @@ var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
95
99
  style = _ref.style;
96
100
  var row = visibleRows[index];
97
101
  prepareRow(row);
102
+ var _row$getRowProps = row.getRowProps(),
103
+ key = _row$getRowProps.key;
98
104
  return /*#__PURE__*/React.createElement("div", {
99
105
  style: _objectSpread({}, style)
100
106
  }, row.RowRenderer(_objectSpread(_objectSpread({}, datagridState), {}, {
101
- row: row
107
+ row: row,
108
+ key: key
102
109
  })));
103
110
  })));
104
111
  };
@@ -66,10 +66,10 @@ export var DraggableItemsList = function DraggableItemsList(_ref) {
66
66
  if (destOverCol !== null && destOverCol !== void 0 && destOverCol.length && (_destOverCol$ = destOverCol[0]) !== null && _destOverCol$ !== void 0 && _destOverCol$.disabled) {
67
67
  return;
68
68
  }
69
- var fromVisibleIndex = columns.findIndex(function (col) {
69
+ var fromVisibleIndex = updatedDragCols.findIndex(function (col) {
70
70
  return matchedColsById(col, active);
71
71
  });
72
- var toVisibleIndex = columns.findIndex(function (col) {
72
+ var toVisibleIndex = updatedDragCols.findIndex(function (col) {
73
73
  return matchedColsById(col, over);
74
74
  });
75
75
  var colTitle = getNodeTextContent(updatedDragCols[fromVisibleIndex].Header);
@@ -15,6 +15,7 @@ var COLUMN_RESIZE_START = 'columnStartResizing';
15
15
  var COLUMN_RESIZING = 'columnResizing';
16
16
  var COLUMN_RESIZE_END = 'columnDoneResizing';
17
17
  var INIT = 'init';
18
+ var TOGGLE_ROW_SELECTED = 'toggleRowSelected';
18
19
  var blockClass = "".concat(pkg.prefix, "--datagrid");
19
20
  export var handleColumnResizeEndEvent = function handleColumnResizeEndEvent(dispatch, onColResizeEnd, headerId, isKeyEvent) {
20
21
  dispatch({
@@ -46,8 +47,43 @@ export var handleColumnResizingEvent = function handleColumnResizingEvent(dispat
46
47
  }
47
48
  });
48
49
  };
50
+ export var handleToggleRowSelected = function handleToggleRowSelected(dispatch, rowData, isChecked) {
51
+ return dispatch({
52
+ type: TOGGLE_ROW_SELECTED,
53
+ payload: {
54
+ rowData: rowData,
55
+ isChecked: isChecked
56
+ }
57
+ });
58
+ };
49
59
  export var stateReducer = function stateReducer(newState, action) {
50
60
  switch (action.type) {
61
+ case TOGGLE_ROW_SELECTED:
62
+ {
63
+ var _ref = action.payload || {},
64
+ rowData = _ref.rowData,
65
+ isChecked = _ref.isChecked;
66
+ if (!rowData) {
67
+ return;
68
+ }
69
+ if (isChecked) {
70
+ return _objectSpread(_objectSpread({}, newState), {}, {
71
+ selectedRowData: _objectSpread(_objectSpread({}, newState.selectedRowData), {}, _defineProperty({}, rowData.index, rowData))
72
+ });
73
+ }
74
+ if (rowData && !isChecked) {
75
+ var newData = _objectSpread({}, newState.selectedRowData);
76
+ var dataWithRemovedRow = Object.fromEntries(Object.entries(newData).filter(function (_ref2) {
77
+ var _ref3 = _slicedToArray(_ref2, 1),
78
+ key = _ref3[0];
79
+ return parseInt(key) !== parseInt(rowData.index);
80
+ }));
81
+ return _objectSpread(_objectSpread({}, newState), {}, {
82
+ selectedRowData: dataWithRemovedRow
83
+ });
84
+ }
85
+ return _objectSpread({}, newState);
86
+ }
51
87
  case INIT:
52
88
  {
53
89
  return _objectSpread(_objectSpread({}, newState), {}, {
@@ -56,27 +92,27 @@ export var stateReducer = function stateReducer(newState, action) {
56
92
  }
57
93
  case COLUMN_RESIZE_START:
58
94
  {
59
- var _ref = action.payload || {},
60
- headerId = _ref.headerId;
95
+ var _ref4 = action.payload || {},
96
+ headerId = _ref4.headerId;
61
97
  return _objectSpread(_objectSpread({}, newState), {}, {
62
98
  isResizing: headerId
63
99
  });
64
100
  }
65
101
  case COLUMN_RESIZING:
66
102
  {
67
- var _ref2 = action.payload || {},
68
- _headerId = _ref2.headerId,
69
- newWidth = _ref2.newWidth,
70
- defaultWidth = _ref2.defaultWidth;
103
+ var _ref5 = action.payload || {},
104
+ _headerId = _ref5.headerId,
105
+ newWidth = _ref5.newWidth,
106
+ defaultWidth = _ref5.defaultWidth;
71
107
  var newColumnWidth = {};
72
108
  if (typeof _headerId === 'undefined') {
73
109
  return _objectSpread({}, newState);
74
110
  }
75
111
  newColumnWidth[_headerId] = newWidth;
76
- var cleanedWidths = Object.fromEntries(Object.entries(newState.columnResizing.columnWidths).filter(function (_ref3) {
77
- var _ref4 = _slicedToArray(_ref3, 2),
78
- _ = _ref4[0],
79
- value = _ref4[1];
112
+ var cleanedWidths = Object.fromEntries(Object.entries(newState.columnResizing.columnWidths).filter(function (_ref6) {
113
+ var _ref7 = _slicedToArray(_ref6, 2),
114
+ _ = _ref7[0],
115
+ value = _ref7[1];
80
116
  return !isNaN(value);
81
117
  }));
82
118
  var headerIdArray = newState.columnResizing.headerIdWidths || [];
@@ -91,10 +127,10 @@ export var stateReducer = function stateReducer(newState, action) {
91
127
  }
92
128
  case COLUMN_RESIZE_END:
93
129
  {
94
- var _ref5 = action.payload || {},
95
- onColResizeEnd = _ref5.onColResizeEnd,
96
- _headerId2 = _ref5.headerId,
97
- isKeyEvent = _ref5.isKeyEvent;
130
+ var _ref8 = action.payload || {},
131
+ onColResizeEnd = _ref8.onColResizeEnd,
132
+ _headerId2 = _ref8.headerId,
133
+ isKeyEvent = _ref8.isKeyEvent;
98
134
  var currentColumn = {};
99
135
  currentColumn[_headerId2] = newState.columnResizing.columnWidths[_headerId2];
100
136
  var allChangedColumns = newState.columnResizing.columnWidths;
@@ -45,7 +45,13 @@ export var DocsPage = function DocsPage() {
45
45
  description: "There is also an optional resize callback when resizing columns, allowing you to save the widths of columns that have been resized. The resize callback returns the column that was just resized and it's width, in addition to all of the columns that have been resized and their widths.",
46
46
  source: {
47
47
  language: 'jsx',
48
- code: "\nuseDatagrid({\n columns,\n data,\n onColResizeEnd: (currentColumn, allColumns) =>\n console.log(currentColumn, allColumns),\n});\n "
48
+ code: "\nuseDatagrid({\n columns,\n data,\n onColResizeEnd: (currentColumn, allColumns) =>\n console.log(currentColumn, allColumns),\n resizerAriaLabel: 'Resize column',\n});\n "
49
+ }
50
+ }, {
51
+ description: 'Disabling the resizable columns is possible by specifying `disableResizing: true` within the `useDatagrid` hook. To pass in your own translated label for the column resizer, add the `resizerAriaLabel` property',
52
+ source: {
53
+ language: 'jsx',
54
+ code: "\nuseDatagrid({\n columns,\n data,\n disableResizing: true,\n resizerAriaLabel: 'Resize column',\n});\n "
49
55
  }
50
56
  }, {
51
57
  title: 'Rendering the table toolbar',
@@ -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
  }
@@ -22,8 +22,19 @@ 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 || [];
35
+ var defaultColumn = {
36
+ minWidth: 50
37
+ };
27
38
  var tableId = useMemo(function () {
28
39
  return uniqueId('datagrid-table-id');
29
40
  }, []);
@@ -33,7 +44,8 @@ var useDatagrid = function useDatagrid(params) {
33
44
  var tableState = useTable.apply(void 0, [_objectSpread(_objectSpread({
34
45
  tableId: tableId
35
46
  }, params), {}, {
36
- stateReducer: stateReducer
47
+ stateReducer: stateReducer,
48
+ defaultColumn: defaultColumn
37
49
  })].concat(defaultPlugins, plugins, defaultEndPlugins, _toConsumableArray(clientEndPlugins)));
38
50
  return tableState;
39
51
  };
@@ -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,9 +1,8 @@
1
- /*
2
- * Licensed Materials - Property of IBM
3
- * 5724-Q36
4
- * (c) Copyright IBM Corp. 2020, 2023
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
  */
8
7
 
9
8
  import { pkg, carbon } from '../../settings';
@@ -43,7 +42,7 @@ var useOnRowClick = function useOnRowClick(hooks) {
43
42
  var onKeyDown = function onKeyDown(event) {
44
43
  var key = event.key;
45
44
  if (key === 'Enter') {
46
- onClick();
45
+ onClick(event);
47
46
  }
48
47
  };
49
48
  return [props, {
@@ -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();