@carbon/ibm-products 2.17.0 → 2.17.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 (59) hide show
  1. package/css/index-full-carbon.css +584 -187
  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 +84 -8
  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 +90 -8
  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 +138 -8
  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/CreateSidePanel/CreateSidePanel.js +7 -1
  18. package/es/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +6 -4
  19. package/es/components/Datagrid/Datagrid/DatagridExpandedRow.js +3 -1
  20. package/es/components/Datagrid/Datagrid/DatagridRow.js +13 -3
  21. package/es/components/Datagrid/Datagrid/DatagridSelectAll.js +19 -1
  22. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +8 -0
  23. package/es/components/Datagrid/Datagrid/addons/stateReducer.js +67 -24
  24. package/es/components/Datagrid/useExpandedRow.js +3 -6
  25. package/es/components/Datagrid/useFocusRowExpander.js +40 -0
  26. package/es/components/Datagrid/useNestedRowExpander.js +9 -0
  27. package/es/components/Datagrid/useNestedRows.js +1 -5
  28. package/es/components/Datagrid/useRowExpander.js +9 -0
  29. package/es/components/Datagrid/useSelectRows.js +23 -11
  30. package/es/components/EditSidePanel/EditSidePanel.js +8 -2
  31. package/es/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +1 -0
  32. package/es/components/SidePanel/SidePanel.js +39 -19
  33. package/es/global/js/hooks/useCreateComponentStepChange.js +1 -1
  34. package/es/global/js/package-settings.js +0 -2
  35. package/lib/components/CreateSidePanel/CreateSidePanel.js +7 -1
  36. package/lib/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +6 -4
  37. package/lib/components/Datagrid/Datagrid/DatagridExpandedRow.js +3 -1
  38. package/lib/components/Datagrid/Datagrid/DatagridRow.js +13 -3
  39. package/lib/components/Datagrid/Datagrid/DatagridSelectAll.js +19 -1
  40. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +8 -0
  41. package/lib/components/Datagrid/Datagrid/addons/stateReducer.js +68 -25
  42. package/lib/components/Datagrid/useExpandedRow.js +2 -5
  43. package/lib/components/Datagrid/useFocusRowExpander.js +45 -0
  44. package/lib/components/Datagrid/useNestedRowExpander.js +9 -0
  45. package/lib/components/Datagrid/useNestedRows.js +1 -5
  46. package/lib/components/Datagrid/useRowExpander.js +9 -0
  47. package/lib/components/Datagrid/useSelectRows.js +23 -11
  48. package/lib/components/EditSidePanel/EditSidePanel.js +8 -2
  49. package/lib/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +1 -0
  50. package/lib/components/SidePanel/SidePanel.js +38 -18
  51. package/lib/global/js/hooks/useCreateComponentStepChange.js +1 -1
  52. package/lib/global/js/package-settings.js +0 -2
  53. package/package.json +5 -5
  54. package/scss/components/CreateTearsheet/_create-tearsheet.scss +6 -0
  55. package/scss/components/Datagrid/styles/_useExpandedRow.scss +21 -0
  56. package/scss/components/Datagrid/styles/_useNestedRows.scss +1 -1
  57. package/scss/components/Datagrid/styles/addons/_RowSizeDropdown.scss +9 -0
  58. package/scss/components/SidePanel/_side-panel.scss +22 -6
  59. package/scss/components/WebTerminal/_web-terminal.scss +5 -0
@@ -80,8 +80,6 @@ var defaults = {
80
80
  'default-portal-target-body': true,
81
81
  'Datagrid.useInlineEdit': false,
82
82
  'Datagrid.useEditableCell': false,
83
- 'Datagrid.useExpandedRow': false,
84
- 'Datagrid.useNestedRows': false,
85
83
  'Datagrid.useFiltering': false,
86
84
  'Datagrid.useCustomizeColumns': false,
87
85
  'ExampleComponent.secondaryIcon': false,
@@ -16,7 +16,7 @@ var _devtools = require("../../global/js/utils/devtools");
16
16
  var _react2 = require("@carbon/react");
17
17
  var _SidePanel = require("../SidePanel");
18
18
  var _uuidv = _interopRequireDefault(require("../../global/js/utils/uuidv4"));
19
- var _excluded = ["className", "children", "disableSubmit", "formTitle", "formDescription", "onRequestClose", "onRequestSubmit", "open", "primaryButtonText", "secondaryButtonText", "selectorPageContent", "selectorPrimaryFocus", "subtitle", "title"];
19
+ var _excluded = ["className", "children", "disableSubmit", "formTitle", "formDescription", "id", "onRequestClose", "onRequestSubmit", "open", "primaryButtonText", "secondaryButtonText", "selectorPageContent", "selectorPrimaryFocus", "subtitle", "title"];
20
20
  /**
21
21
  * Copyright IBM Corp. 2021, 2021
22
22
  *
@@ -43,6 +43,7 @@ var CreateSidePanel = exports.CreateSidePanel = /*#__PURE__*/_react.default.forw
43
43
  disableSubmit = _ref.disableSubmit,
44
44
  formTitle = _ref.formTitle,
45
45
  formDescription = _ref.formDescription,
46
+ id = _ref.id,
46
47
  onRequestClose = _ref.onRequestClose,
47
48
  onRequestSubmit = _ref.onRequestSubmit,
48
49
  open = _ref.open,
@@ -69,6 +70,7 @@ var CreateSidePanel = exports.CreateSidePanel = /*#__PURE__*/_react.default.forw
69
70
  }];
70
71
  var formTitleId = (0, _uuidv.default)();
71
72
  return selectorPageContent && /*#__PURE__*/_react.default.createElement(_SidePanel.SidePanel, (0, _extends2.default)({}, rest, _objectSpread({
73
+ id: id,
72
74
  open: open,
73
75
  ref: ref,
74
76
  selectorPageContent: selectorPageContent,
@@ -121,6 +123,10 @@ CreateSidePanel.propTypes = {
121
123
  * Specifies a required field that provides a title for a form
122
124
  */
123
125
  formTitle: _propTypes.default.node.isRequired,
126
+ /**
127
+ * Unique identifier
128
+ */
129
+ id: _propTypes.default.string,
124
130
  /**
125
131
  * Specifies an optional handler which is called when the CreateSidePanel
126
132
  * is closed.
@@ -15,7 +15,8 @@ var _classnames = _interopRequireDefault(require("classnames"));
15
15
  var _settings = require("../../../settings");
16
16
  var _CreateTearsheet = require("../CreateTearsheet");
17
17
  var _CreateTearsheetStep = require("../CreateTearsheetStep");
18
- var _excluded = ["value1", "setValue1"];
18
+ var _excluded = ["value1", "setValue1"],
19
+ _excluded2 = ["backButtonText", "cancelButtonText", "className", "description", "firstFocusElement", "influencerWidth", "label", "nextButtonText", "submitButtonText", "title"];
19
20
  /* eslint-disable react/prop-types */
20
21
  /**
21
22
  * Copyright IBM Corp. 2021, 2023
@@ -57,7 +58,8 @@ var MultiStepTearsheet = exports.MultiStepTearsheet = function MultiStepTearshee
57
58
  label = _ref2.label,
58
59
  nextButtonText = _ref2.nextButtonText,
59
60
  submitButtonText = _ref2.submitButtonText,
60
- title = _ref2.title;
61
+ title = _ref2.title,
62
+ rest = (0, _objectWithoutProperties2.default)(_ref2, _excluded2);
61
63
  var _useState = (0, _react.useState)(750),
62
64
  _useState2 = (0, _slicedToArray2.default)(_useState, 1),
63
65
  simulatedDelay = _useState2[0];
@@ -121,7 +123,7 @@ var MultiStepTearsheet = exports.MultiStepTearsheet = function MultiStepTearshee
121
123
  onClick: function onClick() {
122
124
  return setOpen(!open);
123
125
  }
124
- }, open ? 'Close CreateTearsheet' : 'Open CreateTearsheet'), /*#__PURE__*/_react.default.createElement(_CreateTearsheet.CreateTearsheet, {
126
+ }, open ? 'Close CreateTearsheet' : 'Open CreateTearsheet'), /*#__PURE__*/_react.default.createElement(_CreateTearsheet.CreateTearsheet, (0, _extends2.default)({
125
127
  influencerWidth: influencerWidth,
126
128
  label: label,
127
129
  className: (0, _classnames.default)(blockClass, className),
@@ -142,7 +144,7 @@ var MultiStepTearsheet = exports.MultiStepTearsheet = function MultiStepTearshee
142
144
  });
143
145
  },
144
146
  firstFocusElement: firstFocusElement
145
- }, /*#__PURE__*/_react.default.createElement(_CreateTearsheetStep.CreateTearsheetStep, {
147
+ }, rest), /*#__PURE__*/_react.default.createElement(_CreateTearsheetStep.CreateTearsheetStep, {
146
148
  onNext: function onNext() {
147
149
  return new Promise(function (resolve, reject) {
148
150
  setTimeout(function () {
@@ -41,12 +41,14 @@ var DatagridExpandedRow = function DatagridExpandedRow(ExpandedRowContentCompone
41
41
  onMouseLeave: function onMouseLeave(event) {
42
42
  return toggleParentHoverClass(event);
43
43
  }
44
+ }, /*#__PURE__*/_react.default.createElement("td", {
45
+ className: "".concat(blockClass, "__expanded-row-cell-wrapper")
44
46
  }, /*#__PURE__*/_react.default.createElement("div", {
45
47
  className: "".concat(blockClass, "__expanded-row-content"),
46
48
  style: {
47
49
  height: expandedContentHeight && expandedContentHeight
48
50
  }
49
- }, /*#__PURE__*/_react.default.createElement(ExpandedRowContentComponent, datagridState)));
51
+ }, /*#__PURE__*/_react.default.createElement(ExpandedRowContentComponent, datagridState))));
50
52
  };
51
53
  };
52
54
  var _default = exports.default = DatagridExpandedRow;
@@ -38,7 +38,9 @@ var DatagridRow = function DatagridRow(datagridState) {
38
38
  rowSize = datagridState.rowSize,
39
39
  withNestedRows = datagridState.withNestedRows,
40
40
  prepareRow = datagridState.prepareRow,
41
- key = datagridState.key;
41
+ key = datagridState.key,
42
+ tableId = datagridState.tableId,
43
+ withExpandedRows = datagridState.withExpandedRows;
42
44
  var getVisibleNestedRowCount = function getVisibleNestedRowCount(_ref) {
43
45
  var isExpanded = _ref.isExpanded,
44
46
  subRows = _ref.subRows;
@@ -67,7 +69,7 @@ var DatagridRow = function DatagridRow(datagridState) {
67
69
  hoverRow === null || hoverRow === void 0 || (_hoverRow$style3 = hoverRow.style) === null || _hoverRow$style3 === void 0 || _hoverRow$style3.setProperty("--".concat(blockClass, "--indicator-offset-amount"), (0, _layout.px)((rowExpanderButton === null || rowExpanderButton === void 0 ? void 0 : rowExpanderButton.offsetLeft) || 0));
68
70
  };
69
71
  var focusRemover = function focusRemover() {
70
- var elements = document.querySelectorAll(".".concat(blockClass, "__carbon-row-expanded"));
72
+ var elements = document.querySelectorAll("#".concat(tableId, " .").concat(blockClass, "__carbon-row-expanded"));
71
73
  elements.forEach(function (el) {
72
74
  el.classList.remove("".concat(blockClass, "__carbon-row-expanded-hover-active"));
73
75
  });
@@ -96,6 +98,14 @@ var DatagridRow = function DatagridRow(datagridState) {
96
98
  }
97
99
  };
98
100
  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));
101
+ var setAdditionalRowProps = function setAdditionalRowProps() {
102
+ if (withNestedRows || withExpandedRows) {
103
+ return {
104
+ 'data-nested-row-id': row.id
105
+ };
106
+ }
107
+ return {};
108
+ };
99
109
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
100
110
  key: key
101
111
  }, /*#__PURE__*/_react.default.createElement(_react2.TableRow, (0, _extends2.default)({
@@ -107,7 +117,7 @@ var DatagridRow = function DatagridRow(datagridState) {
107
117
  onFocus: hoverHandler,
108
118
  onBlur: focusRemover,
109
119
  onKeyUp: handleOnKeyUp
110
- }), row.cells.map(function (cell, index) {
120
+ }, setAdditionalRowProps()), row.cells.map(function (cell, index) {
111
121
  var _cell$column;
112
122
  var cellProps = cell.getCellProps();
113
123
  var children = cellProps.children,
@@ -14,6 +14,7 @@ var _react = _interopRequireWildcard(require("react"));
14
14
  var _react2 = require("@carbon/react");
15
15
  var _classnames = _interopRequireDefault(require("classnames"));
16
16
  var _settings = require("../../../settings");
17
+ var _stateReducer = require("./addons/stateReducer");
17
18
  var _excluded = ["onChange"];
18
19
  /**
19
20
  * Copyright IBM Corp. 2020, 2023
@@ -48,7 +49,11 @@ var SelectAll = exports.SelectAll = function SelectAll(datagridState) {
48
49
  DatagridPagination = datagridState.DatagridPagination,
49
50
  radio = datagridState.radio,
50
51
  columns = datagridState.columns,
51
- withStickyColumn = datagridState.withStickyColumn;
52
+ withStickyColumn = datagridState.withStickyColumn,
53
+ dispatch = datagridState.dispatch,
54
+ rows = datagridState.rows,
55
+ getRowId = datagridState.getRowId,
56
+ toggleAllRowsSelected = datagridState.toggleAllRowsSelected;
52
57
  var isFirstColumnStickyLeft = ((_columns$ = columns[0]) === null || _columns$ === void 0 ? void 0 : _columns$.sticky) === 'left' && withStickyColumn;
53
58
  if (hideSelectAll || radio) {
54
59
  return /*#__PURE__*/_react.default.createElement("div", {
@@ -63,12 +68,25 @@ var SelectAll = exports.SelectAll = function SelectAll(datagridState) {
63
68
  var indeterminate = selectProps.indeterminate;
64
69
  var handleSelectAllChange = function handleSelectAllChange(event) {
65
70
  if (indeterminate) {
71
+ (0, _stateReducer.handleSelectAllRowData)({
72
+ dispatch: dispatch,
73
+ rows: rows,
74
+ getRowId: getRowId,
75
+ indeterminate: true
76
+ });
77
+ toggleAllRowsSelected(false);
66
78
  return onChange === null || onChange === void 0 ? void 0 : onChange({
67
79
  target: {
68
80
  checked: false
69
81
  }
70
82
  });
71
83
  }
84
+ (0, _stateReducer.handleSelectAllRowData)({
85
+ dispatch: dispatch,
86
+ rows: rows,
87
+ getRowId: getRowId,
88
+ isChecked: event.target.checked
89
+ });
72
90
  return onChange === null || onChange === void 0 ? void 0 : onChange(event);
73
91
  };
74
92
  return /*#__PURE__*/_react.default.createElement("div", {
@@ -13,6 +13,7 @@ var _react2 = require("@carbon/react");
13
13
  var _useResizeObserver2 = require("../../../global/js/hooks/useResizeObserver");
14
14
  var _settings = require("../../../settings");
15
15
  var _classnames = _interopRequireDefault(require("classnames"));
16
+ var _stateReducer = require("./addons/stateReducer");
16
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
18
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
19
  /**
@@ -42,6 +43,8 @@ var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridS
42
43
  toolbarBatchActions = datagridState.toolbarBatchActions,
43
44
  setGlobalFilter = datagridState.setGlobalFilter,
44
45
  rows = datagridState.rows,
46
+ dispatch = datagridState.dispatch,
47
+ getRowId = datagridState.getRowId,
45
48
  batchActionMenuButtonLabel = datagridState.batchActionMenuButtonLabel,
46
49
  translateWithIdBatchActions = datagridState.translateWithIdBatchActions;
47
50
  var batchActionMenuButtonLabelText = batchActionMenuButtonLabel !== null && batchActionMenuButtonLabel !== void 0 ? batchActionMenuButtonLabel : 'More';
@@ -119,6 +122,11 @@ var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridS
119
122
  var onSelectAllHandler = function onSelectAllHandler() {
120
123
  toggleAllRowsSelected(true);
121
124
  onSelectAllRows === null || onSelectAllRows === void 0 || onSelectAllRows(true);
125
+ (0, _stateReducer.handleSelectAllRowData)({
126
+ dispatch: dispatch,
127
+ rows: rows,
128
+ getRowId: getRowId
129
+ });
122
130
  };
123
131
 
124
132
  // Only display the first two batch actions, the rest are
@@ -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"));
@@ -21,6 +21,7 @@ var COLUMN_RESIZING = 'columnResizing';
21
21
  var COLUMN_RESIZE_END = 'columnDoneResizing';
22
22
  var INIT = 'init';
23
23
  var TOGGLE_ROW_SELECTED = 'toggleRowSelected';
24
+ var TOGGLE_ALL_ROWS_SELECTED = 'toggleAllRowsSelected';
24
25
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
25
26
  var handleColumnResizeEndEvent = exports.handleColumnResizeEndEvent = function handleColumnResizeEndEvent(dispatch, onColResizeEnd, headerId, isKeyEvent) {
26
27
  dispatch({
@@ -52,35 +53,77 @@ var handleColumnResizingEvent = exports.handleColumnResizingEvent = function han
52
53
  }
53
54
  });
54
55
  };
55
- var handleToggleRowSelected = exports.handleToggleRowSelected = function handleToggleRowSelected(dispatch, rowData, isChecked) {
56
+ var handleToggleRowSelected = exports.handleToggleRowSelected = function handleToggleRowSelected(_ref) {
57
+ var dispatch = _ref.dispatch,
58
+ rowData = _ref.rowData,
59
+ isChecked = _ref.isChecked,
60
+ getRowId = _ref.getRowId,
61
+ selectAll = _ref.selectAll;
56
62
  return dispatch({
57
63
  type: TOGGLE_ROW_SELECTED,
58
64
  payload: {
59
65
  rowData: rowData,
66
+ isChecked: isChecked,
67
+ getRowId: getRowId,
68
+ selectAll: selectAll
69
+ }
70
+ });
71
+ };
72
+ var handleSelectAllRowData = exports.handleSelectAllRowData = function handleSelectAllRowData(_ref2) {
73
+ var dispatch = _ref2.dispatch,
74
+ rows = _ref2.rows,
75
+ getRowId = _ref2.getRowId,
76
+ indeterminate = _ref2.indeterminate,
77
+ isChecked = _ref2.isChecked;
78
+ return dispatch({
79
+ type: TOGGLE_ALL_ROWS_SELECTED,
80
+ payload: {
81
+ rows: rows,
82
+ getRowId: getRowId,
83
+ indeterminate: indeterminate,
60
84
  isChecked: isChecked
61
85
  }
62
86
  });
63
87
  };
64
88
  var stateReducer = exports.stateReducer = function stateReducer(newState, action) {
65
89
  switch (action.type) {
90
+ case TOGGLE_ALL_ROWS_SELECTED:
91
+ {
92
+ var _ref3 = action.payload || {},
93
+ rows = _ref3.rows,
94
+ getRowId = _ref3.getRowId,
95
+ indeterminate = _ref3.indeterminate,
96
+ isChecked = _ref3.isChecked;
97
+ if (rows) {
98
+ var newSelectedRowData = {};
99
+ rows.forEach(function (row) {
100
+ newSelectedRowData[getRowId(row, row.index)] = row;
101
+ });
102
+ return _objectSpread(_objectSpread({}, newState), {}, {
103
+ selectedRowData: indeterminate || !isChecked ? {} : newSelectedRowData
104
+ });
105
+ }
106
+ return _objectSpread({}, newState);
107
+ }
66
108
  case TOGGLE_ROW_SELECTED:
67
109
  {
68
- var _ref = action.payload || {},
69
- rowData = _ref.rowData,
70
- isChecked = _ref.isChecked;
110
+ var _ref4 = action.payload || {},
111
+ rowData = _ref4.rowData,
112
+ _isChecked = _ref4.isChecked,
113
+ _getRowId = _ref4.getRowId;
71
114
  if (!rowData) {
72
115
  return;
73
116
  }
74
- if (isChecked) {
117
+ if (_isChecked) {
75
118
  return _objectSpread(_objectSpread({}, newState), {}, {
76
- selectedRowData: _objectSpread(_objectSpread({}, newState.selectedRowData), {}, (0, _defineProperty2.default)({}, rowData.index, rowData))
119
+ selectedRowData: _objectSpread(_objectSpread({}, newState.selectedRowData), {}, (0, _defineProperty2.default)({}, _getRowId(rowData, rowData.index), rowData))
77
120
  });
78
121
  }
79
- if (rowData && !isChecked) {
122
+ if (rowData && !_isChecked) {
80
123
  var newData = _objectSpread({}, newState.selectedRowData);
81
- var dataWithRemovedRow = Object.fromEntries(Object.entries(newData).filter(function (_ref2) {
82
- var _ref3 = (0, _slicedToArray2.default)(_ref2, 1),
83
- key = _ref3[0];
124
+ var dataWithRemovedRow = Object.fromEntries(Object.entries(newData).filter(function (_ref5) {
125
+ var _ref6 = (0, _slicedToArray2.default)(_ref5, 1),
126
+ key = _ref6[0];
84
127
  return parseInt(key) !== parseInt(rowData.index);
85
128
  }));
86
129
  return _objectSpread(_objectSpread({}, newState), {}, {
@@ -97,27 +140,27 @@ var stateReducer = exports.stateReducer = function stateReducer(newState, action
97
140
  }
98
141
  case COLUMN_RESIZE_START:
99
142
  {
100
- var _ref4 = action.payload || {},
101
- headerId = _ref4.headerId;
143
+ var _ref7 = action.payload || {},
144
+ headerId = _ref7.headerId;
102
145
  return _objectSpread(_objectSpread({}, newState), {}, {
103
146
  isResizing: headerId
104
147
  });
105
148
  }
106
149
  case COLUMN_RESIZING:
107
150
  {
108
- var _ref5 = action.payload || {},
109
- _headerId = _ref5.headerId,
110
- newWidth = _ref5.newWidth,
111
- defaultWidth = _ref5.defaultWidth;
151
+ var _ref8 = action.payload || {},
152
+ _headerId = _ref8.headerId,
153
+ newWidth = _ref8.newWidth,
154
+ defaultWidth = _ref8.defaultWidth;
112
155
  var newColumnWidth = {};
113
156
  if (typeof _headerId === 'undefined') {
114
157
  return _objectSpread({}, newState);
115
158
  }
116
159
  newColumnWidth[_headerId] = newWidth;
117
- var cleanedWidths = Object.fromEntries(Object.entries(newState.columnResizing.columnWidths).filter(function (_ref6) {
118
- var _ref7 = (0, _slicedToArray2.default)(_ref6, 2),
119
- _ = _ref7[0],
120
- value = _ref7[1];
160
+ var cleanedWidths = Object.fromEntries(Object.entries(newState.columnResizing.columnWidths).filter(function (_ref9) {
161
+ var _ref10 = (0, _slicedToArray2.default)(_ref9, 2),
162
+ _ = _ref10[0],
163
+ value = _ref10[1];
121
164
  return !isNaN(value);
122
165
  }));
123
166
  var headerIdArray = newState.columnResizing.headerIdWidths || [];
@@ -132,10 +175,10 @@ var stateReducer = exports.stateReducer = function stateReducer(newState, action
132
175
  }
133
176
  case COLUMN_RESIZE_END:
134
177
  {
135
- var _ref8 = action.payload || {},
136
- onColResizeEnd = _ref8.onColResizeEnd,
137
- _headerId2 = _ref8.headerId,
138
- isKeyEvent = _ref8.isKeyEvent;
178
+ var _ref11 = action.payload || {},
179
+ onColResizeEnd = _ref11.onColResizeEnd,
180
+ _headerId2 = _ref11.headerId,
181
+ isKeyEvent = _ref11.isKeyEvent;
139
182
  var currentColumn = {};
140
183
  currentColumn[_headerId2] = newState.columnResizing.columnWidths[_headerId2];
141
184
  var allChangedColumns = newState.columnResizing.columnWidths;
@@ -8,7 +8,6 @@ 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(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; }
@@ -19,9 +18,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
19
18
  * LICENSE file in the root directory of this source tree.
20
19
  */
21
20
  var useExpandedRow = function useExpandedRow(hooks) {
22
- (0, _react.useEffect)(function () {
23
- _settings.pkg.checkReportFeatureEnabled('Datagrid.useExpandedRow');
24
- }, []);
25
21
  (0, _useRowExpander.default)(hooks);
26
22
  var useInstance = function useInstance(instance) {
27
23
  var rows = instance.rows,
@@ -43,7 +39,8 @@ var useExpandedRow = function useExpandedRow(hooks) {
43
39
  });
44
40
  Object.assign(instance, {
45
41
  rows: rowsWithExpand,
46
- setExpandedRowHeight: setExpandedRowHeight
42
+ setExpandedRowHeight: setExpandedRowHeight,
43
+ withExpandedRows: true
47
44
  });
48
45
  };
49
46
  hooks.useInstance.push(useInstance);
@@ -0,0 +1,45 @@
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 = exports.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
+ };
@@ -13,6 +13,7 @@ var _react = _interopRequireWildcard(require("react"));
13
13
  var _icons = require("@carbon/react/icons");
14
14
  var _classnames = _interopRequireDefault(require("classnames"));
15
15
  var _settings = require("../../settings");
16
+ var _useFocusRowExpander = require("./useFocusRowExpander");
16
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
18
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
19
  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; }
@@ -25,9 +26,16 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
25
26
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
26
27
  var useNestedRowExpander = function useNestedRowExpander(hooks) {
27
28
  var tempState = (0, _react.useRef)();
29
+ var lastExpandedRowIndex = (0, _react.useRef)();
28
30
  var useInstance = function useInstance(instance) {
29
31
  tempState.current = instance;
30
32
  };
33
+ (0, _useFocusRowExpander.useFocusRowExpander)({
34
+ instance: tempState === null || tempState === void 0 ? void 0 : tempState.current,
35
+ lastExpandedRowIndex: lastExpandedRowIndex === null || lastExpandedRowIndex === void 0 ? void 0 : lastExpandedRowIndex.current,
36
+ blockClass: blockClass,
37
+ activeElement: document.activeElement
38
+ });
31
39
  var visibleColumns = function visibleColumns(columns) {
32
40
  var expanderColumn = {
33
41
  id: 'expander',
@@ -39,6 +47,7 @@ var useNestedRowExpander = function useNestedRowExpander(hooks) {
39
47
  // Prevents `onRowClick` from being called if `useOnRowClick` is included
40
48
  event.stopPropagation();
41
49
  row.toggleRowExpanded();
50
+ lastExpandedRowIndex.current = row.id;
42
51
  }
43
52
  });
44
53
  var _ref2 = (tempState === null || tempState === void 0 ? void 0 : tempState.current) || {},
@@ -6,9 +6,8 @@ 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
- var _settings = require("../../settings");
11
9
  var _classnames = _interopRequireDefault(require("classnames"));
10
+ var _settings = require("../../settings");
12
11
  var _useNestedRowExpander = _interopRequireDefault(require("./useNestedRowExpander"));
13
12
  /**
14
13
  * Copyright IBM Corp. 2020, 2023
@@ -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 _icons = require("@carbon/react/icons");
14
14
  var _settings = require("../../settings");
15
15
  var _classnames = _interopRequireDefault(require("classnames"));
16
+ var _useFocusRowExpander = require("./useFocusRowExpander");
16
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
18
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
19
  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; }
@@ -25,9 +26,16 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
25
26
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
26
27
  var useRowExpander = function useRowExpander(hooks) {
27
28
  var tempState = (0, _react.useRef)();
29
+ var lastExpandedRowIndex = (0, _react.useRef)();
28
30
  var useInstance = function useInstance(instance) {
29
31
  tempState.current = instance;
30
32
  };
33
+ (0, _useFocusRowExpander.useFocusRowExpander)({
34
+ instance: tempState === null || tempState === void 0 ? void 0 : tempState.current,
35
+ lastExpandedRowIndex: lastExpandedRowIndex === null || lastExpandedRowIndex === void 0 ? void 0 : lastExpandedRowIndex.current,
36
+ blockClass: blockClass,
37
+ activeElement: document.activeElement
38
+ });
31
39
  var visibleColumns = function visibleColumns(columns) {
32
40
  var expanderColumn = {
33
41
  id: 'expander',
@@ -38,6 +46,7 @@ var useRowExpander = function useRowExpander(hooks) {
38
46
  // Prevents `onRowClick` from being called if `useOnRowClick` is included
39
47
  event.stopPropagation();
40
48
  row.toggleRowExpanded();
49
+ lastExpandedRowIndex.current = row.id;
41
50
  }
42
51
  });
43
52
  var _ref2 = (tempState === null || tempState === void 0 ? void 0 : tempState.current) || {},
@@ -22,13 +22,12 @@ var _excluded = ["onChange", "title"];
22
22
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
23
23
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
24
24
  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; }
25
- 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) { (0, _defineProperty2.default)(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; } /*
26
- * Licensed Materials - Property of IBM
27
- * 5724-Q36
28
- * (c) Copyright IBM Corp. 2020
29
- * US Government Users Restricted Rights - Use, duplication or disclosure
30
- * restricted by GSA ADP Schedule Contract with IBM Corp.
31
- */ // @flow
25
+ 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) { (0, _defineProperty2.default)(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; } /**
26
+ * Copyright IBM Corp. 2020, 2023
27
+ *
28
+ * This source code is licensed under the Apache-2.0 license found in the
29
+ * LICENSE file in the root directory of this source tree.
30
+ */
32
31
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
33
32
  var checkboxClass = "".concat(_settings.pkg.prefix, "--datagrid__checkbox-cell");
34
33
  var useSelectRows = function useSelectRows(hooks) {
@@ -51,7 +50,14 @@ var useSelectRows = function useSelectRows(hooks) {
51
50
  });
52
51
  });
53
52
  hooks.visibleColumns.push(function (columns) {
54
- return [{
53
+ // Ensures that the first column is the row expander in the
54
+ // case of selected rows and expandable rows being used together
55
+ var newColOrder = (0, _toConsumableArray2.default)(columns);
56
+ var expanderColumnIndex = newColOrder.findIndex(function (col) {
57
+ return col.id === 'expander';
58
+ });
59
+ var expanderCol = expanderColumnIndex > -1 ? newColOrder.splice(expanderColumnIndex, 1) : [];
60
+ return [].concat((0, _toConsumableArray2.default)(expanderColumnIndex > -1 && expanderCol && expanderCol.length ? expanderCol : []), [{
55
61
  id: _commonColumnIds.selectionColumnId,
56
62
  Header: function Header(gridState) {
57
63
  return /*#__PURE__*/_react.default.createElement(_DatagridSelectAll.SelectAll, gridState);
@@ -59,7 +65,7 @@ var useSelectRows = function useSelectRows(hooks) {
59
65
  Cell: function Cell(gridState) {
60
66
  return /*#__PURE__*/_react.default.createElement(SelectRow, gridState);
61
67
  }
62
- }].concat((0, _toConsumableArray2.default)(columns));
68
+ }], (0, _toConsumableArray2.default)(newColOrder));
63
69
  });
64
70
  };
65
71
  var useHighlightSelection = function useHighlightSelection(hooks) {
@@ -87,7 +93,8 @@ var SelectRow = function SelectRow(datagridState) {
87
93
  onRowSelect = datagridState.onRowSelect,
88
94
  columns = datagridState.columns,
89
95
  withStickyColumn = datagridState.withStickyColumn,
90
- dispatch = datagridState.dispatch;
96
+ dispatch = datagridState.dispatch,
97
+ getRowId = datagridState.getRowId;
91
98
  var _useState = (0, _react.useState)(window.innerWidth),
92
99
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
93
100
  windowSize = _useState2[0],
@@ -111,7 +118,12 @@ var SelectRow = function SelectRow(datagridState) {
111
118
  }
112
119
  onChange(event);
113
120
  onRowSelect === null || onRowSelect === void 0 || onRowSelect(row, event);
114
- (0, _stateReducer.handleToggleRowSelected)(dispatch, row, event.target.checked);
121
+ (0, _stateReducer.handleToggleRowSelected)({
122
+ dispatch: dispatch,
123
+ rowData: row,
124
+ isChecked: event.target.checked,
125
+ getRowId: getRowId
126
+ });
115
127
  };
116
128
  var selectDisabled = isFetching || row.getRowProps().disabled;
117
129
  var _row$getToggleRowSele2 = row.getToggleRowSelectedProps(),