@carbon/ibm-products 1.31.0 → 1.32.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. package/css/index-full-carbon.css +71 -5
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +1 -1
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon.css +67 -5
  6. package/css/index-without-carbon.css.map +1 -1
  7. package/css/index-without-carbon.min.css +1 -1
  8. package/css/index-without-carbon.min.css.map +1 -1
  9. package/css/index.css +67 -5
  10. package/css/index.css.map +1 -1
  11. package/css/index.min.css +1 -1
  12. package/css/index.min.css.map +1 -1
  13. package/es/components/DataSpreadsheet/DataSpreadsheet.js +1 -0
  14. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +2 -1
  15. package/es/components/DataSpreadsheet/hooks/useMultipleKeyTracking.js +2 -2
  16. package/es/components/Datagrid/Datagrid/DatagridContent.js +43 -18
  17. package/es/components/Datagrid/Datagrid/DatagridExpandedRow.js +9 -1
  18. package/es/components/Datagrid/Datagrid/DatagridRow.js +10 -2
  19. package/es/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +12 -3
  20. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.js +1 -4
  21. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +16 -8
  22. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/returnUpdatedActiveCell.js +9 -1
  23. package/es/components/Datagrid/Datagrid/addons/InlineEdit/handleGridKeyPress.js +153 -87
  24. package/es/components/Datagrid/Datagrid/addons/InlineEdit/handleMultipleKeys.js +66 -0
  25. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +1 -1
  26. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +1 -1
  27. package/es/components/Datagrid/useActionsColumn.js +28 -12
  28. package/es/components/Datagrid/useExpandedRow.js +0 -1
  29. package/es/components/Datagrid/useNestedRowExpander.js +42 -0
  30. package/es/components/Datagrid/useNestedRows.js +2 -2
  31. package/es/components/Datagrid/useSelectAllToggle.js +17 -4
  32. package/es/components/Datagrid/utils/DatagridActions.js +121 -0
  33. package/es/components/Datagrid/utils/DatagridPagination.js +33 -0
  34. package/es/components/Datagrid/utils/Wrapper.js +21 -0
  35. package/es/components/Datagrid/utils/getArgTypes.js +85 -0
  36. package/es/components/Datagrid/utils/makeData.js +25 -5
  37. package/es/components/InlineEdit/InlineEdit.js +7 -7
  38. package/es/components/OptionsTile/OptionsTile.js +4 -2
  39. package/es/global/js/utils/story-helper.js +5 -1
  40. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +1 -0
  41. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +2 -1
  42. package/lib/components/DataSpreadsheet/hooks/useMultipleKeyTracking.js +2 -2
  43. package/lib/components/Datagrid/Datagrid/DatagridContent.js +44 -18
  44. package/lib/components/Datagrid/Datagrid/DatagridExpandedRow.js +9 -1
  45. package/lib/components/Datagrid/Datagrid/DatagridRow.js +19 -2
  46. package/lib/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +14 -3
  47. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.js +1 -4
  48. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +16 -8
  49. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/returnUpdatedActiveCell.js +10 -7
  50. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/handleGridKeyPress.js +155 -87
  51. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/handleMultipleKeys.js +78 -0
  52. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +1 -1
  53. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +1 -1
  54. package/lib/components/Datagrid/useActionsColumn.js +28 -13
  55. package/lib/components/Datagrid/useExpandedRow.js +0 -1
  56. package/lib/components/Datagrid/useNestedRowExpander.js +57 -0
  57. package/lib/components/Datagrid/useNestedRows.js +3 -3
  58. package/lib/components/Datagrid/useSelectAllToggle.js +18 -4
  59. package/lib/components/Datagrid/utils/DatagridActions.js +139 -0
  60. package/lib/components/Datagrid/utils/DatagridPagination.js +46 -0
  61. package/lib/components/Datagrid/utils/Wrapper.js +33 -0
  62. package/lib/components/Datagrid/utils/getArgTypes.js +93 -0
  63. package/lib/components/Datagrid/utils/makeData.js +26 -5
  64. package/lib/components/InlineEdit/InlineEdit.js +7 -7
  65. package/lib/components/OptionsTile/OptionsTile.js +4 -2
  66. package/lib/global/js/utils/story-helper.js +5 -1
  67. package/package.json +12 -12
  68. package/scss/components/Datagrid/styles/_datagrid.scss +0 -4
  69. package/scss/components/Datagrid/styles/_useActionsColumn.scss +12 -0
  70. package/scss/components/Datagrid/styles/_useExpandedRow.scss +30 -0
  71. package/scss/components/Datagrid/styles/_useInlineEdit.scss +6 -0
  72. package/scss/components/Datagrid/styles/_useNestedRows.scss +15 -1
  73. package/scss/components/Datagrid/styles/_useStickyColumn.scss +6 -0
  74. package/scss/components/OptionsTile/_options-tile.scss +4 -0
@@ -11,13 +11,23 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
11
11
 
12
12
  var _settings = require("../../../../../settings");
13
13
 
14
+ var _handleMultipleKeys = require("./handleMultipleKeys");
15
+
16
+ var _getCellIdAsObject = require("./InlineEditContext/getCellIdAsObject");
17
+
14
18
  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
19
 
16
20
  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; }
17
21
 
18
22
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
19
23
 
20
- var handleGridKeyPress = function handleGridKeyPress(event, dispatch, state, instance) {
24
+ var handleGridKeyPress = function handleGridKeyPress(_ref) {
25
+ var event = _ref.event,
26
+ dispatch = _ref.dispatch,
27
+ state = _ref.state,
28
+ instance = _ref.instance,
29
+ keysPressedList = _ref.keysPressedList,
30
+ usingMac = _ref.usingMac;
21
31
  var key = event.key;
22
32
  var gridActive = state.gridActive,
23
33
  activeCellId = state.activeCellId,
@@ -94,7 +104,7 @@ var handleGridKeyPress = function handleGridKeyPress(event, dispatch, state, ins
94
104
  } // Prevent arrow keys, home key, and end key from scrolling the page when the data spreadsheet container has focus
95
105
 
96
106
 
97
- if (['End', 'Home', 'ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown'].indexOf(key) > -1 && !isEditing) {
107
+ if (['End', 'Home', 'ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown'].indexOf(key) > -1 && !isEditing && keysPressedList.length < 2) {
98
108
  event.preventDefault();
99
109
  }
100
110
 
@@ -104,100 +114,158 @@ var handleGridKeyPress = function handleGridKeyPress(event, dispatch, state, ins
104
114
  instance: instance
105
115
  };
106
116
 
107
- switch (key) {
108
- case 'Tab':
109
- {
110
- if (!editId) {
117
+ if (keysPressedList.length > 1) {
118
+ (0, _handleMultipleKeys.handleMultipleKeys)({
119
+ usingMac: usingMac,
120
+ keysPressedList: keysPressedList,
121
+ dispatch: dispatch,
122
+ activeCellId: activeCellId,
123
+ instance: instance
124
+ });
125
+ }
126
+
127
+ if (keysPressedList.length < 2) {
128
+ switch (key) {
129
+ case 'Tab':
130
+ {
131
+ if (!editId) {
132
+ dispatch({
133
+ type: 'REMOVE_GRID_ACTIVE_FOCUS',
134
+ payload: activeCellId
135
+ });
136
+ }
137
+
138
+ break;
139
+ }
140
+
141
+ case 'ArrowRight':
142
+ {
111
143
  dispatch({
112
- type: 'REMOVE_GRID_ACTIVE_FOCUS',
113
- payload: activeCellId
144
+ type: 'UPDATE_ACTIVE_CELL_ID',
145
+ payload: _objectSpread({
146
+ direction: 'right'
147
+ }, sharedUpdateParams)
114
148
  });
149
+ break;
115
150
  }
116
151
 
117
- break;
118
- }
119
-
120
- case 'ArrowRight':
121
- {
122
- dispatch({
123
- type: 'UPDATE_ACTIVE_CELL_ID',
124
- payload: _objectSpread({
125
- direction: 'right'
126
- }, sharedUpdateParams)
127
- });
128
- break;
129
- }
130
-
131
- case 'ArrowLeft':
132
- {
133
- dispatch({
134
- type: 'UPDATE_ACTIVE_CELL_ID',
135
- payload: _objectSpread({
136
- direction: 'left'
137
- }, sharedUpdateParams)
138
- });
139
- break;
140
- }
141
-
142
- case 'ArrowUp':
143
- {
144
- dispatch({
145
- type: 'UPDATE_ACTIVE_CELL_ID',
146
- payload: _objectSpread({
147
- direction: 'up'
148
- }, sharedUpdateParams)
149
- });
150
- break;
151
- }
152
-
153
- case 'ArrowDown':
154
- {
155
- dispatch({
156
- type: 'UPDATE_ACTIVE_CELL_ID',
157
- payload: _objectSpread({
158
- direction: 'down'
159
- }, sharedUpdateParams)
160
- });
161
- break;
162
- }
163
-
164
- case ' ':
165
- case 'F2':
166
- case 'Enter':
167
- {
168
- // Disabled cells are not allowed to go into edit mode
169
- if (isDisabledCell) {
170
- return;
171
- } // Only go into edit mode if there is no editId, meaning that we're not already in edit mode
172
-
173
-
174
- if (!editId) {
175
- var focusedType = focusedCell.getAttribute('data-inline-type'); // Open dropdown immediately after entering edit mode for selection type
176
-
177
- if (focusedType === 'selection') {
178
- setTimeout(function () {
179
- var dropdownTrigger = focusedCell.querySelector('button');
180
- dropdownTrigger === null || dropdownTrigger === void 0 ? void 0 : dropdownTrigger.click();
181
- }, 1);
182
- }
152
+ case 'ArrowLeft':
153
+ {
154
+ dispatch({
155
+ type: 'UPDATE_ACTIVE_CELL_ID',
156
+ payload: _objectSpread({
157
+ direction: 'left'
158
+ }, sharedUpdateParams)
159
+ });
160
+ break;
161
+ }
183
162
 
184
- if (focusedType === 'date') {
185
- setTimeout(function () {
186
- var dateInputTrigger = focusedCell.querySelector('input');
187
- dateInputTrigger === null || dateInputTrigger === void 0 ? void 0 : dateInputTrigger.click();
188
- dateInputTrigger === null || dateInputTrigger === void 0 ? void 0 : dateInputTrigger.focus();
189
- }, 1);
190
- }
163
+ case 'ArrowUp':
164
+ {
165
+ dispatch({
166
+ type: 'UPDATE_ACTIVE_CELL_ID',
167
+ payload: _objectSpread({
168
+ direction: 'up'
169
+ }, sharedUpdateParams)
170
+ });
171
+ break;
172
+ }
191
173
 
174
+ case 'ArrowDown':
175
+ {
192
176
  dispatch({
193
- type: 'ENTER_EDIT_MODE',
194
- payload: {
195
- activeCellId: activeCellId,
196
- editId: activeCellId
197
- }
177
+ type: 'UPDATE_ACTIVE_CELL_ID',
178
+ payload: _objectSpread({
179
+ direction: 'down'
180
+ }, sharedUpdateParams)
181
+ });
182
+ break;
183
+ }
184
+ // Move active cell to first column in current row
185
+
186
+ case 'Home':
187
+ {
188
+ var activeCellObject = (0, _getCellIdAsObject.getCellIdAsObject)(activeCellId);
189
+
190
+ var newActiveCellCoords = _objectSpread(_objectSpread({}, activeCellObject), {}, {
191
+ column: 0
192
+ });
193
+
194
+ var newActiveCellId = "column-".concat(newActiveCellCoords.column, "-row-").concat(newActiveCellCoords.row);
195
+ var scrollElement = document.querySelector("#".concat(instance.tableId, " .").concat(_settings.pkg.prefix, "--datagrid__table-container")); // Scroll table container to the furthest left position
196
+
197
+ scrollElement.scrollLeft = 0;
198
+ dispatch({
199
+ type: 'UPDATE_ACTIVE_CELL_ID',
200
+ payload: newActiveCellId
201
+ });
202
+ break;
203
+ }
204
+ // Move active cell to last column in current row
205
+
206
+ case 'End':
207
+ {
208
+ var _activeCellObject = (0, _getCellIdAsObject.getCellIdAsObject)(activeCellId);
209
+
210
+ var totalVisibleColumns = instance.visibleColumns.filter(function (item) {
211
+ return item.id !== 'spacer';
212
+ });
213
+
214
+ var _newActiveCellCoords = _objectSpread(_objectSpread({}, _activeCellObject), {}, {
215
+ column: totalVisibleColumns.length - 1
216
+ });
217
+
218
+ var _newActiveCellId = "column-".concat(_newActiveCellCoords.column, "-row-").concat(_newActiveCellCoords.row);
219
+
220
+ var _scrollElement = document.querySelector("#".concat(instance.tableId, " .").concat(_settings.pkg.prefix, "--datagrid__table-container")); // Scroll table container to the furthest right position
221
+
222
+
223
+ _scrollElement.scrollLeft = _scrollElement.scrollWidth;
224
+ dispatch({
225
+ type: 'UPDATE_ACTIVE_CELL_ID',
226
+ payload: _newActiveCellId
198
227
  });
228
+ break;
229
+ }
230
+
231
+ case ' ':
232
+ case 'F2':
233
+ case 'Enter':
234
+ {
235
+ // Disabled cells are not allowed to go into edit mode
236
+ if (isDisabledCell) {
237
+ return;
238
+ } // Only go into edit mode if there is no editId, meaning that we're not already in edit mode
239
+
240
+
241
+ if (!editId) {
242
+ var focusedType = focusedCell.getAttribute('data-inline-type'); // Open dropdown immediately after entering edit mode for selection type
243
+
244
+ if (focusedType === 'selection') {
245
+ setTimeout(function () {
246
+ var dropdownTrigger = focusedCell.querySelector('button');
247
+ dropdownTrigger === null || dropdownTrigger === void 0 ? void 0 : dropdownTrigger.click();
248
+ }, 1);
249
+ }
250
+
251
+ if (focusedType === 'date') {
252
+ setTimeout(function () {
253
+ var dateInputTrigger = focusedCell.querySelector('input');
254
+ dateInputTrigger === null || dateInputTrigger === void 0 ? void 0 : dateInputTrigger.click();
255
+ dateInputTrigger === null || dateInputTrigger === void 0 ? void 0 : dateInputTrigger.focus();
256
+ }, 1);
257
+ }
258
+
259
+ dispatch({
260
+ type: 'ENTER_EDIT_MODE',
261
+ payload: {
262
+ activeCellId: activeCellId,
263
+ editId: activeCellId
264
+ }
265
+ });
266
+ }
199
267
  }
200
- }
268
+ }
201
269
  }
202
270
  };
203
271
 
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.handleMultipleKeys = void 0;
7
+
8
+ var _handleMultipleKeys = require("../../../../DataSpreadsheet/utils/handleMultipleKeys");
9
+
10
+ var _settings = require("../../../../../settings");
11
+
12
+ /**
13
+ * Copyright IBM Corp. 2022, 2022
14
+ *
15
+ * This source code is licensed under the Apache-2.0 license found in the
16
+ * LICENSE file in the root directory of this source tree.
17
+ */
18
+ var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
19
+
20
+ var handleMultipleKeys = function handleMultipleKeys(_ref) {
21
+ var usingMac = _ref.usingMac,
22
+ keysPressedList = _ref.keysPressedList,
23
+ dispatch = _ref.dispatch,
24
+ activeCellId = _ref.activeCellId,
25
+ instance = _ref.instance;
26
+
27
+ // Resource key and Home
28
+ // Move active cell to first cell in first row and column
29
+ if ((0, _handleMultipleKeys.includesResourceKey)(keysPressedList, usingMac) && keysPressedList.includes('Home')) {
30
+ var scrollElement = document.querySelector("#".concat(instance.tableId, " .").concat(_settings.pkg.prefix, "--datagrid__table-container")); // Scroll table container to the furthest top left position
31
+
32
+ scrollElement.scrollTop = 0;
33
+ scrollElement.scrollLeft = 0;
34
+ dispatch({
35
+ type: 'UPDATE_ACTIVE_CELL_ID',
36
+ payload: 'column-0-row-0'
37
+ });
38
+ } // Resource key and End
39
+ // Move active cell to last cell in in the last row and column
40
+
41
+
42
+ if ((0, _handleMultipleKeys.includesResourceKey)(keysPressedList, usingMac) && keysPressedList.includes('End')) {
43
+ var _instance$rows;
44
+
45
+ var totalVisibleColumns = instance.visibleColumns.filter(function (item) {
46
+ return item.id !== 'spacer';
47
+ }).length;
48
+ var totalRows = (_instance$rows = instance.rows) === null || _instance$rows === void 0 ? void 0 : _instance$rows.length;
49
+ var lastCellDataId = "column-".concat(totalVisibleColumns - 1, "-row-").concat(totalRows - 1);
50
+ var lastCellElement = document.querySelector("#".concat(instance.tableId, " .").concat(blockClass, "__table-with-inline-edit [data-cell-id=\"").concat(activeCellId, "\"]"));
51
+
52
+ var _scrollElement = document.querySelector("#".concat(instance.tableId, " .").concat(_settings.pkg.prefix, "--datagrid__table-container")); // Scroll table container to the furthest bottom right position
53
+
54
+
55
+ _scrollElement.scrollTop = _scrollElement.scrollHeight;
56
+ _scrollElement.scrollLeft = _scrollElement.scrollWidth;
57
+
58
+ if (lastCellElement) {
59
+ dispatch({
60
+ type: 'UPDATE_ACTIVE_CELL_ID',
61
+ payload: lastCellDataId
62
+ });
63
+ } else {
64
+ // If a Datagrid component is using virtualized data, it's possible that the last cell
65
+ // has not yet been rendered. In this case, we simply need to wait until the scrollable
66
+ // container has scrolled to the bottom/right most position, then we can dispatch the
67
+ // update active cell id action
68
+ setTimeout(function () {
69
+ dispatch({
70
+ type: 'UPDATE_ACTIVE_CELL_ID',
71
+ payload: lastCellDataId
72
+ });
73
+ }, 250);
74
+ }
75
+ }
76
+ };
77
+
78
+ exports.handleMultipleKeys = handleMultipleKeys;
@@ -60,7 +60,7 @@ var RowSizeDropdown = function RowSizeDropdown(_ref) {
60
60
  return setIsOpen(!isOpen);
61
61
  },
62
62
  iconDescription: legendText,
63
- className: (0, _classnames.default)((0, _defineProperty2.default)({}, "".concat(blockClass, "__row-size-button--open"), isOpen))
63
+ className: (0, _classnames.default)("".concat(blockClass, "__row-size-button"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__row-size-button--open"), isOpen))
64
64
  }), isOpen && /*#__PURE__*/React.createElement(_RowSizeRadioGroup.default, (0, _extends2.default)({}, props, {
65
65
  legendText: legendText,
66
66
  buttonRef: buttonRef,
@@ -113,7 +113,7 @@ var getDropdownPosition = function getDropdownPosition(buttonEle) {
113
113
 
114
114
  if (parent instanceof HTMLElement) {
115
115
  var top = buttonEle.offsetTop + buttonEle.offsetHeight;
116
- var right = parent.offsetWidth - parent.offsetLeft - (buttonEle.offsetLeft + buttonEle.offsetWidth);
116
+ var right = parent.offsetWidth - parent.offsetLeft - buttonEle.offsetLeft;
117
117
  return {
118
118
  top: top,
119
119
  right: right
@@ -7,10 +7,10 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
11
 
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
14
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
15
 
16
16
  var _react = _interopRequireDefault(require("react"));
@@ -21,13 +21,15 @@ var _carbonComponentsReact = require("carbon-components-react");
21
21
 
22
22
  var _settings = require("../../settings");
23
23
 
24
- var _excluded = ["id", "onClick", "shouldHideMenuItem", "shouldDisableMenuItem", "disabled"];
24
+ var _excluded = ["id", "itemText", "onClick", "icon"],
25
+ _excluded2 = ["id", "onClick", "shouldHideMenuItem", "shouldDisableMenuItem", "disabled"];
25
26
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
26
27
 
27
28
  var useActionsColumn = function useActionsColumn(hooks) {
28
29
  var useAttachActionsOnInstance = function useAttachActionsOnInstance(instance) {
29
30
  var rowActions = instance.rowActions,
30
- isFetching = instance.isFetching;
31
+ isFetching = instance.isFetching,
32
+ selectedFlatRows = instance.selectedFlatRows;
31
33
 
32
34
  if (rowActions && Array.isArray(rowActions)) {
33
35
  var addActionsMenu = function addActionsMenu(props, cellData) {
@@ -36,7 +38,7 @@ var useActionsColumn = function useActionsColumn(hooks) {
36
38
  column = cell.column;
37
39
 
38
40
  if (column.isAction) {
39
- var _cx;
41
+ var _cx3;
40
42
 
41
43
  return [props, {
42
44
  children: /*#__PURE__*/_react.default.createElement("div", {
@@ -48,26 +50,36 @@ var useActionsColumn = function useActionsColumn(hooks) {
48
50
  style: {
49
51
  display: 'flex'
50
52
  }
51
- }, rowActions.map(function (action) {
53
+ }, rowActions.map(function (action, index) {
52
54
  var id = action.id,
53
55
  itemText = action.itemText,
54
56
  _onClick = action.onClick,
55
- icon = action.icon;
57
+ icon = action.icon,
58
+ rest = (0, _objectWithoutProperties2.default)(action, _excluded);
59
+ var selectedRowId = selectedFlatRows === null || selectedFlatRows === void 0 ? void 0 : selectedFlatRows.filter(function (item) {
60
+ return item.id === row.id ? item.id : null;
61
+ });
56
62
  return /*#__PURE__*/_react.default.createElement("div", {
57
- className: "".concat(blockClass, "__actions-column-button"),
58
- key: ""
59
- }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenu, {
63
+ className: (0, _classnames.default)("".concat(blockClass, "__actions-column-button"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__disabled-row-action-button"), selectedFlatRows && selectedFlatRows.length && selectedRowId && selectedRowId.length)),
64
+ key: "".concat(itemText, "__").concat(index)
65
+ }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenu, (0, _extends2.default)({}, rest, {
60
66
  renderIcon: icon,
61
67
  hasIconOnly: true,
62
68
  light: true,
63
69
  iconDescription: itemText,
64
70
  kind: "ghost",
71
+ className: (0, _classnames.default)((0, _defineProperty2.default)({}, "".concat(blockClass, "__disabled-row-action"), selectedFlatRows && selectedFlatRows.length && selectedRowId && selectedRowId.length)),
65
72
  onClick: function onClick(e) {
73
+ if (selectedFlatRows && selectedFlatRows.length && selectedRowId && selectedRowId.length) {
74
+ // Row actions should be disabled if row is selected and batchActions toolbar is active
75
+ return;
76
+ }
77
+
66
78
  e.stopPropagation();
67
79
 
68
80
  _onClick(id, row, e);
69
81
  }
70
- }));
82
+ })));
71
83
  })), !isFetching && rowActions.length > 2 && /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenu, {
72
84
  size: "sm",
73
85
  light: true,
@@ -81,7 +93,7 @@ var useActionsColumn = function useActionsColumn(hooks) {
81
93
  shouldHideMenuItem = action.shouldHideMenuItem,
82
94
  shouldDisableMenuItem = action.shouldDisableMenuItem,
83
95
  disabled = action.disabled,
84
- rest = (0, _objectWithoutProperties2.default)(action, _excluded);
96
+ rest = (0, _objectWithoutProperties2.default)(action, _excluded2);
85
97
  var hidden = typeof shouldHideMenuItem === 'function' && shouldHideMenuItem(row); // shouldDisableMenuItem will override disabled because it's more specific
86
98
  // if shouldDisableMenuItem doesn't exists, fall back to disabled
87
99
 
@@ -101,7 +113,10 @@ var useActionsColumn = function useActionsColumn(hooks) {
101
113
  key: id
102
114
  }));
103
115
  })))),
104
- className: (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__actions-column-cell"), true), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__cell"), true), _cx))
116
+ className: (0, _classnames.default)((_cx3 = {}, (0, _defineProperty2.default)(_cx3, "".concat(blockClass, "__actions-column-cell"), true), (0, _defineProperty2.default)(_cx3, "".concat(blockClass, "__cell"), true), _cx3)),
117
+ style: {
118
+ width: 96
119
+ }
105
120
  }];
106
121
  }
107
122
 
@@ -42,7 +42,6 @@ var useExpandedRow = function useExpandedRow(hooks) {
42
42
  return _objectSpread(_objectSpread({}, row), {}, {
43
43
  canExpand: row.original && !row.original.notExpandable,
44
44
  expandedContentHeight: expandedRowsHeight[row.index] || expandedContentHeight,
45
- // RowRenderer: DatagridExpandedRow(row.RowRenderer, expansionRenderer),
46
45
  RowRenderer: (0, _DatagridExpandedRow.default)(row.RowRenderer, ExpandedRowContentComponent)
47
46
  });
48
47
  });
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _react = _interopRequireDefault(require("react"));
15
+
16
+ var _iconsReact = require("@carbon/icons-react");
17
+
18
+ var _classnames = _interopRequireDefault(require("classnames"));
19
+
20
+ var _settings = require("../../settings");
21
+
22
+ /* eslint-disable react/prop-types */
23
+
24
+ /*
25
+ * Licensed Materials - Property of IBM
26
+ * 5724-Q36
27
+ * (c) Copyright IBM Corp. 2020
28
+ * US Government Users Restricted Rights - Use, duplication or disclosure
29
+ * restricted by GSA ADP Schedule Contract with IBM Corp.
30
+ */
31
+ var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
32
+
33
+ var useNestedRowExpander = function useNestedRowExpander(hooks) {
34
+ var visibleColumns = function visibleColumns(columns) {
35
+ var expanderColumn = {
36
+ id: 'expander',
37
+ Cell: function Cell(_ref) {
38
+ var _cx;
39
+
40
+ var row = _ref.row;
41
+ return row.canExpand && /*#__PURE__*/_react.default.createElement("span", row.getToggleRowExpandedProps(), /*#__PURE__*/_react.default.createElement(_iconsReact.ChevronRight16, {
42
+ className: (0, _classnames.default)("".concat(blockClass, "__expander-icon"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__expander-icon--not-open"), !row.isExpanded), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__expander-icon--open"), row.isExpanded), _cx))
43
+ }));
44
+ },
45
+ width: 48,
46
+ disableResizing: true,
47
+ disableSortBy: true,
48
+ Header: ''
49
+ };
50
+ return [expanderColumn].concat((0, _toConsumableArray2.default)(columns));
51
+ };
52
+
53
+ hooks.visibleColumns.push(visibleColumns);
54
+ };
55
+
56
+ var _default = useNestedRowExpander;
57
+ exports.default = _default;
@@ -7,10 +7,10 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _useRowExpander = _interopRequireDefault(require("./useRowExpander"));
11
-
12
10
  var _settings = require("../../settings");
13
11
 
12
+ var _useNestedRowExpander = _interopRequireDefault(require("./useNestedRowExpander"));
13
+
14
14
  /*
15
15
  * Licensed Materials - Property of IBM
16
16
  * 5724-Q36
@@ -21,7 +21,7 @@ var _settings = require("../../settings");
21
21
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
22
22
 
23
23
  var useNestedRows = function useNestedRows(hooks) {
24
- (0, _useRowExpander.default)(hooks);
24
+ (0, _useNestedRowExpander.default)(hooks);
25
25
  var marginLeft = 24;
26
26
 
27
27
  var getRowProps = function getRowProps(props, _ref) {
@@ -7,8 +7,12 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
10
12
  var _react = _interopRequireDefault(require("react"));
11
13
 
14
+ var _classnames = _interopRequireDefault(require("classnames"));
15
+
12
16
  var _commonColumnIds = require("./common-column-ids");
13
17
 
14
18
  var _DatagridSelectAllWithToggle = _interopRequireDefault(require("./Datagrid/DatagridSelectAllWithToggle"));
@@ -53,12 +57,18 @@ var useSelectAllWithToggleComponent = function useSelectAllWithToggleComponent(h
53
57
 
54
58
  var useAddClassNameToSelectRow = function useAddClassNameToSelectRow(hooks) {
55
59
  hooks.getCellProps.push(function (props, data) {
60
+ var _columns$;
61
+
56
62
  var column = data.cell.column;
57
- var DatagridPagination = data.instance.DatagridPagination;
63
+ var _data$instance = data.instance,
64
+ DatagridPagination = _data$instance.DatagridPagination,
65
+ columns = _data$instance.columns,
66
+ withStickyColumn = _data$instance.withStickyColumn;
67
+ var isFirstColumnStickyLeft = ((_columns$ = columns[0]) === null || _columns$ === void 0 ? void 0 : _columns$.sticky) === 'left' && withStickyColumn;
58
68
 
59
69
  if (column.id === _commonColumnIds.selectionColumnId && DatagridPagination) {
60
70
  return [props, {
61
- className: "".concat(blockClass, "__select-all-toggle-on")
71
+ className: (0, _classnames.default)("".concat(blockClass, "__select-all-toggle-on"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft))
62
72
  }];
63
73
  }
64
74
 
@@ -72,14 +82,18 @@ var Header = function Header(gridState) {
72
82
  selectAllToggle = gridState.selectAllToggle,
73
83
  getToggleAllPageRowsSelectedProps = gridState.getToggleAllPageRowsSelectedProps,
74
84
  getToggleAllRowsSelectedProps = gridState.getToggleAllRowsSelectedProps,
75
- isAllRowsSelected = gridState.isAllRowsSelected;
85
+ isAllRowsSelected = gridState.isAllRowsSelected,
86
+ withStickyColumn = gridState.withStickyColumn,
87
+ columns = gridState.columns;
76
88
  var props = {
77
89
  tableId: tableId,
78
90
  isFetching: isFetching,
79
91
  selectAllToggle: selectAllToggle,
80
92
  getToggleAllPageRowsSelectedProps: getToggleAllPageRowsSelectedProps,
81
93
  getToggleAllRowsSelectedProps: getToggleAllRowsSelectedProps,
82
- isAllRowsSelected: isAllRowsSelected
94
+ isAllRowsSelected: isAllRowsSelected,
95
+ withStickyColumn: withStickyColumn,
96
+ columns: columns
83
97
  };
84
98
  return /*#__PURE__*/_react.default.createElement(_DatagridSelectAllWithToggle.default, props);
85
99
  };