@carbon/ibm-products 2.17.0 → 2.17.2

Sign up to get free protection for your applications and to get access to all the features.
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(),