@carbon/ibm-products 1.62.0 → 1.62.1

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 +16 -2
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +2 -2
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +15 -0
  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 +16 -2
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +2 -2
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +16 -2
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +2 -2
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/Carousel/Carousel.js +194 -119
  18. package/es/components/Carousel/CarouselItem.js +8 -21
  19. package/es/components/CoachmarkOverlayElements/CoachmarkOverlayElements.js +6 -7
  20. package/es/components/Datagrid/Datagrid/DatagridExpandedRow.js +3 -1
  21. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +1 -0
  22. package/es/components/Datagrid/Datagrid/DatagridRow.js +19 -10
  23. package/es/components/Datagrid/Datagrid/DatagridSelectAll.js +19 -1
  24. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +15 -1
  25. package/es/components/Datagrid/Datagrid/addons/stateReducer.js +67 -24
  26. package/es/components/Datagrid/useExpandedRow.js +3 -6
  27. package/es/components/Datagrid/useFocusRowExpander.js +40 -0
  28. package/es/components/Datagrid/useNestedRowExpander.js +9 -0
  29. package/es/components/Datagrid/useNestedRows.js +0 -4
  30. package/es/components/Datagrid/useRowExpander.js +9 -0
  31. package/es/components/Datagrid/useSelectRows.js +23 -11
  32. package/es/components/Guidebanner/Guidebanner.js +9 -12
  33. package/es/global/js/package-settings.js +0 -2
  34. package/lib/components/Carousel/Carousel.js +190 -114
  35. package/lib/components/Carousel/CarouselItem.js +9 -25
  36. package/lib/components/CoachmarkOverlayElements/CoachmarkOverlayElements.js +6 -7
  37. package/lib/components/Datagrid/Datagrid/DatagridExpandedRow.js +3 -1
  38. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +1 -0
  39. package/lib/components/Datagrid/Datagrid/DatagridRow.js +13 -3
  40. package/lib/components/Datagrid/Datagrid/DatagridSelectAll.js +19 -1
  41. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +15 -1
  42. package/lib/components/Datagrid/Datagrid/addons/stateReducer.js +70 -26
  43. package/lib/components/Datagrid/useExpandedRow.js +2 -5
  44. package/lib/components/Datagrid/useFocusRowExpander.js +46 -0
  45. package/lib/components/Datagrid/useNestedRowExpander.js +9 -0
  46. package/lib/components/Datagrid/useNestedRows.js +0 -4
  47. package/lib/components/Datagrid/useRowExpander.js +9 -0
  48. package/lib/components/Datagrid/useSelectRows.js +17 -4
  49. package/lib/components/Guidebanner/Guidebanner.js +9 -12
  50. package/lib/global/js/package-settings.js +0 -2
  51. package/package.json +2 -2
  52. package/scss/components/Carousel/_carousel.scss +1 -2
  53. package/scss/components/Datagrid/styles/_useExpandedRow.scss +21 -0
  54. package/scss/components/Datagrid/styles/addons/_RowSizeDropdown.scss +9 -0
  55. package/es/components/Carousel/utils.js +0 -98
  56. package/lib/components/Carousel/utils.js +0 -108
@@ -15,6 +15,7 @@ var _useResizeObserver2 = require("../../../global/js/hooks/useResizeObserver");
15
15
  var _ButtonMenu = require("../../ButtonMenu");
16
16
  var _settings = require("../../../settings");
17
17
  var _classnames = _interopRequireDefault(require("classnames"));
18
+ var _stateReducer = require("./addons/stateReducer");
18
19
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
20
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
20
21
  /**
@@ -45,8 +46,11 @@ var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridS
45
46
  toggleAllRowsSelected = datagridState.toggleAllRowsSelected,
46
47
  toolbarBatchActions = datagridState.toolbarBatchActions,
47
48
  setGlobalFilter = datagridState.setGlobalFilter,
49
+ dispatch = datagridState.dispatch,
50
+ getRowId = datagridState.getRowId,
48
51
  batchActionMenuButtonLabel = datagridState.batchActionMenuButtonLabel,
49
- translateWithIdBatchActions = datagridState.translateWithIdBatchActions;
52
+ translateWithIdBatchActions = datagridState.translateWithIdBatchActions,
53
+ rows = datagridState.rows;
50
54
  var batchActionMenuButtonLabelText = batchActionMenuButtonLabel !== null && batchActionMenuButtonLabel !== void 0 ? batchActionMenuButtonLabel : 'More';
51
55
  var selectedKeys = Object.keys(selectedRowIds || {});
52
56
  var totalSelected = selectedKeys.length;
@@ -94,6 +98,11 @@ var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridS
94
98
  batchAction.onClick();
95
99
  if (batchAction.type === 'select_all') {
96
100
  toggleAllRowsSelected(true);
101
+ (0, _stateReducer.handleSelectAllRowData)({
102
+ dispatch: dispatch,
103
+ rows: rows,
104
+ getRowId: getRowId
105
+ });
97
106
  }
98
107
  }
99
108
  });
@@ -121,6 +130,11 @@ var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridS
121
130
  batchAction.onClick();
122
131
  if (batchAction.type === 'select_all') {
123
132
  toggleAllRowsSelected(true);
133
+ (0, _stateReducer.handleSelectAllRowData)({
134
+ dispatch: dispatch,
135
+ rows: rows,
136
+ getRowId: getRowId
137
+ });
124
138
  }
125
139
  },
126
140
  iconDescription: batchAction.label
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.stateReducer = exports.handleToggleRowSelected = exports.handleColumnResizingEvent = exports.handleColumnResizeEndEvent = void 0;
7
+ exports.stateReducer = exports.handleToggleRowSelected = exports.handleSelectAllRowData = exports.handleColumnResizingEvent = exports.handleColumnResizeEndEvent = void 0;
8
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -16,6 +16,7 @@ var COLUMN_RESIZING = 'columnResizing';
16
16
  var COLUMN_RESIZE_END = 'columnDoneResizing';
17
17
  var INIT = 'init';
18
18
  var TOGGLE_ROW_SELECTED = 'toggleRowSelected';
19
+ var TOGGLE_ALL_ROWS_SELECTED = 'toggleAllRowsSelected';
19
20
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
20
21
  var handleColumnResizeEndEvent = function handleColumnResizeEndEvent(dispatch, onColResizeEnd, headerId, isKeyEvent) {
21
22
  dispatch({
@@ -49,36 +50,79 @@ var handleColumnResizingEvent = function handleColumnResizingEvent(dispatch, hea
49
50
  });
50
51
  };
51
52
  exports.handleColumnResizingEvent = handleColumnResizingEvent;
52
- var handleToggleRowSelected = function handleToggleRowSelected(dispatch, rowData, isChecked) {
53
+ var handleToggleRowSelected = function handleToggleRowSelected(_ref) {
54
+ var dispatch = _ref.dispatch,
55
+ rowData = _ref.rowData,
56
+ isChecked = _ref.isChecked,
57
+ getRowId = _ref.getRowId,
58
+ selectAll = _ref.selectAll;
53
59
  return dispatch({
54
60
  type: TOGGLE_ROW_SELECTED,
55
61
  payload: {
56
62
  rowData: rowData,
57
- isChecked: isChecked
63
+ isChecked: isChecked,
64
+ getRowId: getRowId,
65
+ selectAll: selectAll
58
66
  }
59
67
  });
60
68
  };
61
69
  exports.handleToggleRowSelected = handleToggleRowSelected;
70
+ var handleSelectAllRowData = function handleSelectAllRowData(_ref2) {
71
+ var dispatch = _ref2.dispatch,
72
+ rows = _ref2.rows,
73
+ getRowId = _ref2.getRowId,
74
+ indeterminate = _ref2.indeterminate,
75
+ isChecked = _ref2.isChecked;
76
+ return dispatch({
77
+ type: TOGGLE_ALL_ROWS_SELECTED,
78
+ payload: {
79
+ rows: rows,
80
+ getRowId: getRowId,
81
+ indeterminate: indeterminate,
82
+ isChecked: isChecked
83
+ }
84
+ });
85
+ };
86
+ exports.handleSelectAllRowData = handleSelectAllRowData;
62
87
  var stateReducer = function stateReducer(newState, action) {
63
88
  switch (action.type) {
89
+ case TOGGLE_ALL_ROWS_SELECTED:
90
+ {
91
+ var _ref3 = action.payload || {},
92
+ rows = _ref3.rows,
93
+ getRowId = _ref3.getRowId,
94
+ indeterminate = _ref3.indeterminate,
95
+ isChecked = _ref3.isChecked;
96
+ if (rows) {
97
+ var newSelectedRowData = {};
98
+ rows.forEach(function (row) {
99
+ newSelectedRowData[getRowId(row, row.index)] = row;
100
+ });
101
+ return _objectSpread(_objectSpread({}, newState), {}, {
102
+ selectedRowData: indeterminate || !isChecked ? {} : newSelectedRowData
103
+ });
104
+ }
105
+ return _objectSpread({}, newState);
106
+ }
64
107
  case TOGGLE_ROW_SELECTED:
65
108
  {
66
- var _ref = action.payload || {},
67
- rowData = _ref.rowData,
68
- isChecked = _ref.isChecked;
109
+ var _ref4 = action.payload || {},
110
+ rowData = _ref4.rowData,
111
+ _isChecked = _ref4.isChecked,
112
+ _getRowId = _ref4.getRowId;
69
113
  if (!rowData) {
70
114
  return;
71
115
  }
72
- if (isChecked) {
116
+ if (_isChecked) {
73
117
  return _objectSpread(_objectSpread({}, newState), {}, {
74
- selectedRowData: _objectSpread(_objectSpread({}, newState.selectedRowData), {}, (0, _defineProperty2.default)({}, rowData.index, rowData))
118
+ selectedRowData: _objectSpread(_objectSpread({}, newState.selectedRowData), {}, (0, _defineProperty2.default)({}, _getRowId(rowData, rowData.index), rowData))
75
119
  });
76
120
  }
77
- if (rowData && !isChecked) {
121
+ if (rowData && !_isChecked) {
78
122
  var newData = _objectSpread({}, newState.selectedRowData);
79
- var dataWithRemovedRow = Object.fromEntries(Object.entries(newData).filter(function (_ref2) {
80
- var _ref3 = (0, _slicedToArray2.default)(_ref2, 1),
81
- key = _ref3[0];
123
+ var dataWithRemovedRow = Object.fromEntries(Object.entries(newData).filter(function (_ref5) {
124
+ var _ref6 = (0, _slicedToArray2.default)(_ref5, 1),
125
+ key = _ref6[0];
82
126
  return parseInt(key) !== parseInt(rowData.index);
83
127
  }));
84
128
  return _objectSpread(_objectSpread({}, newState), {}, {
@@ -95,27 +139,27 @@ var stateReducer = function stateReducer(newState, action) {
95
139
  }
96
140
  case COLUMN_RESIZE_START:
97
141
  {
98
- var _ref4 = action.payload || {},
99
- headerId = _ref4.headerId;
142
+ var _ref7 = action.payload || {},
143
+ headerId = _ref7.headerId;
100
144
  return _objectSpread(_objectSpread({}, newState), {}, {
101
145
  isResizing: headerId
102
146
  });
103
147
  }
104
148
  case COLUMN_RESIZING:
105
149
  {
106
- var _ref5 = action.payload || {},
107
- _headerId = _ref5.headerId,
108
- newWidth = _ref5.newWidth,
109
- defaultWidth = _ref5.defaultWidth;
150
+ var _ref8 = action.payload || {},
151
+ _headerId = _ref8.headerId,
152
+ newWidth = _ref8.newWidth,
153
+ defaultWidth = _ref8.defaultWidth;
110
154
  var newColumnWidth = {};
111
155
  if (typeof _headerId === 'undefined') {
112
156
  return _objectSpread({}, newState);
113
157
  }
114
158
  newColumnWidth[_headerId] = newWidth;
115
- var cleanedWidths = Object.fromEntries(Object.entries(newState.columnResizing.columnWidths).filter(function (_ref6) {
116
- var _ref7 = (0, _slicedToArray2.default)(_ref6, 2),
117
- _ = _ref7[0],
118
- value = _ref7[1];
159
+ var cleanedWidths = Object.fromEntries(Object.entries(newState.columnResizing.columnWidths).filter(function (_ref9) {
160
+ var _ref10 = (0, _slicedToArray2.default)(_ref9, 2),
161
+ _ = _ref10[0],
162
+ value = _ref10[1];
119
163
  return !isNaN(value);
120
164
  }));
121
165
  var headerIdArray = newState.columnResizing.headerIdWidths || [];
@@ -130,10 +174,10 @@ var stateReducer = function stateReducer(newState, action) {
130
174
  }
131
175
  case COLUMN_RESIZE_END:
132
176
  {
133
- var _ref8 = action.payload || {},
134
- onColResizeEnd = _ref8.onColResizeEnd,
135
- _headerId2 = _ref8.headerId,
136
- isKeyEvent = _ref8.isKeyEvent;
177
+ var _ref11 = action.payload || {},
178
+ onColResizeEnd = _ref11.onColResizeEnd,
179
+ _headerId2 = _ref11.headerId,
180
+ isKeyEvent = _ref11.isKeyEvent;
137
181
  var currentColumn = {};
138
182
  currentColumn[_headerId2] = newState.columnResizing.columnWidths[_headerId2];
139
183
  var allChangedColumns = newState.columnResizing.columnWidths;
@@ -8,15 +8,11 @@ exports.default = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
10
  var _react = require("react");
11
- var _settings = require("../../settings");
12
11
  var _DatagridExpandedRow = _interopRequireDefault(require("./Datagrid/DatagridExpandedRow"));
13
12
  var _useRowExpander = _interopRequireDefault(require("./useRowExpander"));
14
13
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
14
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
16
15
  var useExpandedRow = function useExpandedRow(hooks) {
17
- (0, _react.useEffect)(function () {
18
- _settings.pkg.checkReportFeatureEnabled('Datagrid.useExpandedRow');
19
- }, []);
20
16
  (0, _useRowExpander.default)(hooks);
21
17
  var useInstance = function useInstance(instance) {
22
18
  var rows = instance.rows,
@@ -38,7 +34,8 @@ var useExpandedRow = function useExpandedRow(hooks) {
38
34
  });
39
35
  Object.assign(instance, {
40
36
  rows: rowsWithExpand,
41
- setExpandedRowHeight: setExpandedRowHeight
37
+ setExpandedRowHeight: setExpandedRowHeight,
38
+ withExpandedRows: true
42
39
  });
43
40
  };
44
41
  hooks.useInstance.push(useInstance);
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useFocusRowExpander = void 0;
7
+ var _react = require("react");
8
+ /**
9
+ * Copyright IBM Corp. 2023, 2023
10
+ *
11
+ * This source code is licensed under the Apache-2.0 license found in the
12
+ * LICENSE file in the root directory of this source tree.
13
+ */
14
+
15
+ // Focuses the row expander after a nested/expandable row state change.
16
+ // We have to add this workaround because react-table is re-rendering the entire row
17
+ // which removes the focus from the expander and interrupts the keyboard navigation
18
+ // flow.
19
+ var useFocusRowExpander = function useFocusRowExpander(_ref) {
20
+ var instance = _ref.instance,
21
+ _ref$lastExpandedRowI = _ref.lastExpandedRowIndex,
22
+ lastExpandedRowIndex = _ref$lastExpandedRowI === void 0 ? 0 : _ref$lastExpandedRowI,
23
+ blockClass = _ref.blockClass,
24
+ activeElement = _ref.activeElement;
25
+ (0, _react.useEffect)(function () {
26
+ // We need to return at this point so that the focus is not stolen from
27
+ // other interactive elements in the Datagrid
28
+ if (!activeElement.classList.contains("".concat(blockClass, "__row-expander"))) {
29
+ return;
30
+ }
31
+ var tableId = instance === null || instance === void 0 ? void 0 : instance.tableId;
32
+ var rowElements = document.querySelectorAll("#".concat(tableId, " tbody tr"));
33
+ var rowElementsArray = Array.from(rowElements);
34
+ var activeRow = rowElementsArray.filter(function (r) {
35
+ if (r.getAttribute('data-nested-row-id') === lastExpandedRowIndex) {
36
+ return r;
37
+ }
38
+ return null;
39
+ });
40
+ if (activeRow.length) {
41
+ var rowExpander = activeRow[0].querySelector(".".concat(blockClass, "__row-expander"));
42
+ rowExpander.focus();
43
+ }
44
+ }, [instance === null || instance === void 0 ? void 0 : instance.tableId, instance === null || instance === void 0 ? void 0 : instance.expandedRows, lastExpandedRowIndex, blockClass, activeElement]);
45
+ };
46
+ exports.useFocusRowExpander = useFocusRowExpander;
@@ -13,6 +13,7 @@ var _react = _interopRequireWildcard(require("react"));
13
13
  var _iconsReact = require("@carbon/icons-react");
14
14
  var _classnames = _interopRequireDefault(require("classnames"));
15
15
  var _settings = require("../../settings");
16
+ var _useFocusRowExpander = require("./useFocusRowExpander");
16
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
19
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -20,9 +21,16 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
20
21
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
21
22
  var useNestedRowExpander = function useNestedRowExpander(hooks) {
22
23
  var tempState = (0, _react.useRef)();
24
+ var lastExpandedRowIndex = (0, _react.useRef)();
23
25
  var useInstance = function useInstance(instance) {
24
26
  tempState.current = instance;
25
27
  };
28
+ (0, _useFocusRowExpander.useFocusRowExpander)({
29
+ instance: tempState === null || tempState === void 0 ? void 0 : tempState.current,
30
+ lastExpandedRowIndex: lastExpandedRowIndex === null || lastExpandedRowIndex === void 0 ? void 0 : lastExpandedRowIndex.current,
31
+ blockClass: blockClass,
32
+ activeElement: document.activeElement
33
+ });
26
34
  var visibleColumns = function visibleColumns(columns) {
27
35
  var expanderColumn = {
28
36
  id: 'expander',
@@ -34,6 +42,7 @@ var useNestedRowExpander = function useNestedRowExpander(hooks) {
34
42
  // Prevents `onRowClick` from being called if `useOnRowClick` is included
35
43
  event.stopPropagation();
36
44
  row.toggleRowExpanded();
45
+ lastExpandedRowIndex.current = row.id;
37
46
  }
38
47
  });
39
48
  var _ref2 = (tempState === null || tempState === void 0 ? void 0 : tempState.current) || {},
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _react = require("react");
10
9
  var _settings = require("../../settings");
11
10
  var _classnames = _interopRequireDefault(require("classnames"));
12
11
  var _useNestedRowExpander = _interopRequireDefault(require("./useNestedRowExpander"));
@@ -19,9 +18,6 @@ var _useNestedRowExpander = _interopRequireDefault(require("./useNestedRowExpand
19
18
 
20
19
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
21
20
  var useNestedRows = function useNestedRows(hooks) {
22
- (0, _react.useEffect)(function () {
23
- _settings.pkg.checkReportFeatureEnabled('Datagrid.useNestedRows');
24
- }, []);
25
21
  (0, _useNestedRowExpander.default)(hooks);
26
22
  var marginLeft = 24;
27
23
  var getRowProps = function getRowProps(props, _ref) {
@@ -13,6 +13,7 @@ var _react = _interopRequireWildcard(require("react"));
13
13
  var _iconsReact = require("@carbon/icons-react");
14
14
  var _classnames = _interopRequireDefault(require("classnames"));
15
15
  var _settings = require("../../settings");
16
+ var _useFocusRowExpander = require("./useFocusRowExpander");
16
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
19
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -20,9 +21,16 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
20
21
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
21
22
  var useRowExpander = function useRowExpander(hooks) {
22
23
  var tempState = (0, _react.useRef)();
24
+ var lastExpandedRowIndex = (0, _react.useRef)();
23
25
  var useInstance = function useInstance(instance) {
24
26
  tempState.current = instance;
25
27
  };
28
+ (0, _useFocusRowExpander.useFocusRowExpander)({
29
+ instance: tempState === null || tempState === void 0 ? void 0 : tempState.current,
30
+ lastExpandedRowIndex: lastExpandedRowIndex === null || lastExpandedRowIndex === void 0 ? void 0 : lastExpandedRowIndex.current,
31
+ blockClass: blockClass,
32
+ activeElement: document.activeElement
33
+ });
26
34
  var visibleColumns = function visibleColumns(columns) {
27
35
  var expanderColumn = {
28
36
  id: 'expander',
@@ -33,6 +41,7 @@ var useRowExpander = function useRowExpander(hooks) {
33
41
  // Prevents `onRowClick` from being called if `useOnRowClick` is included
34
42
  event.stopPropagation();
35
43
  row.toggleRowExpanded();
44
+ lastExpandedRowIndex.current = row.id;
36
45
  }
37
46
  });
38
47
  var _ref2 = (tempState === null || tempState === void 0 ? void 0 : tempState.current) || {},
@@ -45,7 +45,14 @@ var useSelectRows = function useSelectRows(hooks) {
45
45
  });
46
46
  });
47
47
  hooks.visibleColumns.push(function (columns) {
48
- return [{
48
+ // Ensures that the first column is the row expander in the
49
+ // case of selected rows and expandable rows being used together
50
+ var newColOrder = (0, _toConsumableArray2.default)(columns);
51
+ var expanderColumnIndex = newColOrder.findIndex(function (col) {
52
+ return col.id === 'expander';
53
+ });
54
+ var expanderCol = expanderColumnIndex > -1 ? newColOrder.splice(expanderColumnIndex, 1) : [];
55
+ return [].concat((0, _toConsumableArray2.default)(expanderColumnIndex > -1 && expanderCol && expanderCol.length ? expanderCol : []), [{
49
56
  id: _commonColumnIds.selectionColumnId,
50
57
  Header: function Header(gridState) {
51
58
  return /*#__PURE__*/_react.default.createElement(_DatagridSelectAll.SelectAll, gridState);
@@ -53,7 +60,7 @@ var useSelectRows = function useSelectRows(hooks) {
53
60
  Cell: function Cell(gridState) {
54
61
  return /*#__PURE__*/_react.default.createElement(SelectRow, gridState);
55
62
  }
56
- }].concat((0, _toConsumableArray2.default)(columns));
63
+ }], (0, _toConsumableArray2.default)(newColOrder));
57
64
  });
58
65
  };
59
66
  var useHighlightSelection = function useHighlightSelection(hooks) {
@@ -81,7 +88,8 @@ var SelectRow = function SelectRow(datagridState) {
81
88
  onRowSelect = datagridState.onRowSelect,
82
89
  columns = datagridState.columns,
83
90
  withStickyColumn = datagridState.withStickyColumn,
84
- dispatch = datagridState.dispatch;
91
+ dispatch = datagridState.dispatch,
92
+ getRowId = datagridState.getRowId;
85
93
  var _useState = (0, _react.useState)(window.innerWidth),
86
94
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
87
95
  windowSize = _useState2[0],
@@ -112,7 +120,12 @@ var SelectRow = function SelectRow(datagridState) {
112
120
  }
113
121
  onChange(event);
114
122
  onRowSelect === null || onRowSelect === void 0 ? void 0 : onRowSelect(row, event);
115
- (0, _stateReducer.handleToggleRowSelected)(dispatch, row, event.target.checked);
123
+ (0, _stateReducer.handleToggleRowSelected)({
124
+ dispatch: dispatch,
125
+ rowData: row,
126
+ isChecked: event.target.checked,
127
+ getRowId: getRowId
128
+ });
116
129
  };
117
130
  var rowId = "".concat(tableId, "-").concat(row.index);
118
131
  return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TableSelectRow, (0, _extends2.default)({}, cellProps, selectProps, {
@@ -73,9 +73,6 @@ var Guidebanner = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
73
73
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
74
74
  isCollapsed = _useState6[0],
75
75
  setIsCollapsed = _useState6[1];
76
- var handleScrollableChange = function handleScrollableChange(value) {
77
- setShowNavigation(value);
78
- };
79
76
  var handleClickToggle = function handleClickToggle() {
80
77
  setScrollPosition(0);
81
78
  scrollRef.current.scrollToView(0);
@@ -100,9 +97,13 @@ var Guidebanner = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
100
97
  left: _colors.blue90,
101
98
  right: _colors.purple70
102
99
  },
103
- ref: scrollRef,
104
- scrollableChange: handleScrollableChange,
105
- scrollTune: -450
100
+ onChangeIsScrollable: function onChangeIsScrollable(value) {
101
+ setShowNavigation(value);
102
+ },
103
+ onScroll: function onScroll(scrollPercent) {
104
+ setScrollPosition(scrollPercent);
105
+ },
106
+ ref: scrollRef
106
107
  }, children), /*#__PURE__*/_react.default.createElement("div", {
107
108
  className: (0, _classnames.default)([collapsible || showNavigation ? "".concat(blockClass, "__navigation") : null])
108
109
  }, collapsible && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
@@ -121,9 +122,7 @@ var Guidebanner = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
121
122
  tooltipPosition: "top",
122
123
  iconDescription: previousIconDescription,
123
124
  onClick: function onClick() {
124
- scrollRef.current.scrollPrev().then(function (scrollPercentage) {
125
- return setScrollPosition(scrollPercentage);
126
- });
125
+ scrollRef.current.scrollPrev();
127
126
  }
128
127
  }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
129
128
  kind: "ghost",
@@ -136,9 +135,7 @@ var Guidebanner = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
136
135
  tooltipAlignment: "end",
137
136
  iconDescription: nextIconDescription,
138
137
  onClick: function onClick() {
139
- scrollRef.current.scrollNext().then(function (scrollPercentage) {
140
- return setScrollPosition(scrollPercentage);
141
- });
138
+ scrollRef.current.scrollNext();
142
139
  }
143
140
  }))), onClose && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
144
141
  className: "".concat(blockClass, "__close-button"),
@@ -95,8 +95,6 @@ var defaults = {
95
95
  feature: {
96
96
  'a-new-feature': false,
97
97
  'default-portal-target-body': true,
98
- 'Datagrid.useExpandedRow': false,
99
- 'Datagrid.useNestedRows': false,
100
98
  'Datagrid.useInlineEdit': false,
101
99
  'Datagrid.useFiltering': false,
102
100
  'Datagrid.useCustomizeColumns': false,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/ibm-products",
3
3
  "description": "Carbon for IBM Products",
4
- "version": "1.62.0",
4
+ "version": "1.62.1",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -97,5 +97,5 @@
97
97
  "react": "^16.8.6 || ^17.0.1",
98
98
  "react-dom": "^16.8.6 || ^17.0.1"
99
99
  },
100
- "gitHead": "89c6e18fc0a426f7a6835947561210242824fb07"
100
+ "gitHead": "9de0589dad65ac5c559578d5f53c6ee31432717a"
101
101
  }
@@ -59,9 +59,8 @@
59
59
  }
60
60
 
61
61
  display: flex;
62
+ overflow: scroll;
62
63
  -ms-overflow-style: none;
63
- overflow-x: scroll;
64
- overflow-y: hidden;
65
64
  scroll-behavior: smooth;
66
65
  scroll-snap-type: x mandatory;
67
66
  scrollbar-width: none;
@@ -63,3 +63,24 @@
63
63
  .#{$block-class} .#{$block-class}__expandable-row--hover td {
64
64
  background: $layer-hover;
65
65
  }
66
+
67
+ .#{$block-class}
68
+ .#{$carbon-prefix}--data-table
69
+ tbody
70
+ tr:hover
71
+ td.#{$block-class}__expanded-row-cell-wrapper,
72
+ .#{$block-class}
73
+ .#{$carbon-prefix}--data-table
74
+ td.#{$block-class}__expanded-row-cell-wrapper,
75
+ .#{$block-class}
76
+ .#{$carbon-prefix}--data-table
77
+ .#{$block-class}__carbon-row-expanded
78
+ td.#{$block-class}__expandable-row-cell {
79
+ border: none;
80
+ }
81
+
82
+ .#{$block-class}
83
+ .#{$carbon-prefix}--data-table
84
+ td.#{$block-class}__expanded-row-cell-wrapper {
85
+ padding: 0;
86
+ }
@@ -67,3 +67,12 @@
67
67
  .#{$block-class}__row-size__row-settings-trigger--open.#{$carbon-prefix}--btn--ghost {
68
68
  background-color: $ui-02;
69
69
  }
70
+
71
+ .#{$block-class}
72
+ table.#{$carbon-prefix}--data-table--xl.#{$block-class}__vertical-align-center
73
+ td.#{$block-class}__expandable-row-cell,
74
+ .#{$block-class}
75
+ table.#{$carbon-prefix}--data-table--xl.#{$block-class}__vertical-align-top
76
+ td.#{$block-class}__expandable-row-cell {
77
+ padding-top: $spacing-03;
78
+ }
@@ -1,98 +0,0 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
- /**
3
- * Copyright IBM Corp. 2023, 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.
7
- */
8
-
9
- import { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
10
- export var useIntersection = function useIntersection(element, threshold) {
11
- var _useState = useState(false),
12
- _useState2 = _slicedToArray(_useState, 2),
13
- isVisible = _useState2[0],
14
- setState = _useState2[1];
15
- useEffect(function () {
16
- var el = element.current;
17
- var observer = new IntersectionObserver(function (_ref) {
18
- var _ref2 = _slicedToArray(_ref, 1),
19
- entry = _ref2[0];
20
- setState(entry.isIntersecting);
21
- }, {
22
- threshold: threshold
23
- });
24
- el && observer.observe(el);
25
- return function () {
26
- return observer.unobserve(el);
27
- };
28
- }, [element, threshold]);
29
- return isVisible;
30
- };
31
- export var useIsOverflow = function useIsOverflow(ref) {
32
- var _useState3 = useState(),
33
- _useState4 = _slicedToArray(_useState3, 2),
34
- isScrollable = _useState4[0],
35
- setIsScrollable = _useState4[1];
36
- var _useState5 = useState(),
37
- _useState6 = _slicedToArray(_useState5, 2),
38
- mutationObserver = _useState6[0],
39
- setMutationObserver = _useState6[1];
40
- var _useState7 = useState(),
41
- _useState8 = _slicedToArray(_useState7, 2),
42
- resizeObserver = _useState8[0],
43
- setResizeObserver = _useState8[1];
44
- var checkOverflow = useCallback(function () {
45
- if (!ref.current) {
46
- return;
47
- }
48
- var hasOverflow = ref.current.scrollWidth > ref.current.clientWidth;
49
- setIsScrollable(hasOverflow);
50
- }, [ref]);
51
- useEffect(function () {
52
- if (!mutationObserver) {
53
- return;
54
- }
55
- return function () {
56
- if (mutationObserver) {
57
- mutationObserver.disconnect();
58
- }
59
- if (resizeObserver) {
60
- resizeObserver.disconnect();
61
- }
62
- };
63
- });
64
- useLayoutEffect(function () {
65
- var current = ref.current;
66
- if (current) {
67
- if ('ResizeObserver' in window && !resizeObserver) {
68
- setResizeObserver(new ResizeObserver(checkOverflow).observe(current));
69
- }
70
- if ('MutationObserver' in window && !mutationObserver) {
71
- setMutationObserver(new MutationObserver(checkOverflow).observe(current, {
72
- attributes: false,
73
- childList: true,
74
- subtree: false
75
- }));
76
- }
77
- checkOverflow();
78
- }
79
- }, [ref, checkOverflow, mutationObserver, resizeObserver]);
80
- return isScrollable;
81
- };
82
- export var useWindowEvent = function useWindowEvent(eventName, callback) {
83
- var savedCallback = useRef(null);
84
- useEffect(function () {
85
- savedCallback.current = callback;
86
- });
87
- useEffect(function () {
88
- function handler(event) {
89
- if (savedCallback.current) {
90
- savedCallback.current(event);
91
- }
92
- }
93
- window.addEventListener(eventName, handler);
94
- return function () {
95
- window.removeEventListener(eventName, handler);
96
- };
97
- }, [eventName]);
98
- };