@carbon/ibm-products 1.31.0 → 1.32.0
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.
- package/css/index-full-carbon.css +57 -5
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +1 -1
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon.css +57 -5
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +1 -1
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +57 -5
- package/css/index.css.map +1 -1
- package/css/index.min.css +1 -1
- package/css/index.min.css.map +1 -1
- package/es/components/DataSpreadsheet/DataSpreadsheet.js +1 -0
- package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +2 -1
- package/es/components/Datagrid/Datagrid/DatagridContent.js +26 -5
- package/es/components/Datagrid/Datagrid/DatagridExpandedRow.js +9 -1
- package/es/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +12 -3
- package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.js +1 -4
- package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +16 -8
- package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/returnUpdatedActiveCell.js +9 -1
- package/es/components/Datagrid/Datagrid/addons/InlineEdit/handleGridKeyPress.js +153 -87
- package/es/components/Datagrid/Datagrid/addons/InlineEdit/handleMultipleKeys.js +66 -0
- package/es/components/Datagrid/useActionsColumn.js +28 -12
- package/es/components/Datagrid/useExpandedRow.js +0 -1
- package/es/components/Datagrid/useNestedRowExpander.js +42 -0
- package/es/components/Datagrid/useNestedRows.js +2 -2
- package/es/components/Datagrid/useSelectAllToggle.js +17 -4
- package/es/components/Datagrid/utils/DatagridActions.js +121 -0
- package/es/components/Datagrid/utils/DatagridPagination.js +33 -0
- package/es/components/Datagrid/utils/Wrapper.js +21 -0
- package/es/components/Datagrid/utils/getArgTypes.js +85 -0
- package/es/global/js/utils/story-helper.js +5 -1
- package/lib/components/DataSpreadsheet/DataSpreadsheet.js +1 -0
- package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +2 -1
- package/lib/components/Datagrid/Datagrid/DatagridContent.js +27 -5
- package/lib/components/Datagrid/Datagrid/DatagridExpandedRow.js +9 -1
- package/lib/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +14 -3
- package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.js +1 -4
- package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +16 -8
- package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/returnUpdatedActiveCell.js +10 -7
- package/lib/components/Datagrid/Datagrid/addons/InlineEdit/handleGridKeyPress.js +155 -87
- package/lib/components/Datagrid/Datagrid/addons/InlineEdit/handleMultipleKeys.js +78 -0
- package/lib/components/Datagrid/useActionsColumn.js +28 -13
- package/lib/components/Datagrid/useExpandedRow.js +0 -1
- package/lib/components/Datagrid/useNestedRowExpander.js +57 -0
- package/lib/components/Datagrid/useNestedRows.js +3 -3
- package/lib/components/Datagrid/useSelectAllToggle.js +18 -4
- package/lib/components/Datagrid/utils/DatagridActions.js +139 -0
- package/lib/components/Datagrid/utils/DatagridPagination.js +46 -0
- package/lib/components/Datagrid/utils/Wrapper.js +33 -0
- package/lib/components/Datagrid/utils/getArgTypes.js +93 -0
- package/lib/global/js/utils/story-helper.js +5 -1
- package/package.json +2 -2
- package/scss/components/Datagrid/styles/_datagrid.scss +0 -4
- package/scss/components/Datagrid/styles/_useActionsColumn.scss +12 -0
- package/scss/components/Datagrid/styles/_useExpandedRow.scss +30 -0
- package/scss/components/Datagrid/styles/_useNestedRows.scss +15 -1
- package/scss/components/Datagrid/styles/_useStickyColumn.scss +6 -0
|
@@ -55,8 +55,6 @@ var InlineEditCell = function InlineEditCell(_ref) {
|
|
|
55
55
|
placeholder = _ref$placeholder === void 0 ? '' : _ref$placeholder,
|
|
56
56
|
tabIndex = _ref.tabIndex,
|
|
57
57
|
value = _ref.value,
|
|
58
|
-
_ref$label = _ref.label,
|
|
59
|
-
label = _ref$label === void 0 ? 'Inline edit type text label' : _ref$label,
|
|
60
58
|
nonEditCell = _ref.nonEditCell,
|
|
61
59
|
totalInlineEditColumns = _ref.totalInlineEditColumns,
|
|
62
60
|
type = _ref.type;
|
|
@@ -86,6 +84,11 @@ var InlineEditCell = function InlineEditCell(_ref) {
|
|
|
86
84
|
initialValue = _useState6[0],
|
|
87
85
|
setInitialValue = _useState6[1];
|
|
88
86
|
|
|
87
|
+
var _useState7 = (0, _react.useState)(),
|
|
88
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
89
|
+
cellLabel = _useState8[0],
|
|
90
|
+
setCellLabel = _useState8[1];
|
|
91
|
+
|
|
89
92
|
var activeCellId = state.activeCellId,
|
|
90
93
|
editId = state.editId;
|
|
91
94
|
var previousState = (0, _hooks.usePreviousValue)({
|
|
@@ -102,7 +105,12 @@ var InlineEditCell = function InlineEditCell(_ref) {
|
|
|
102
105
|
var datePickerRef = (0, _react.useRef)();
|
|
103
106
|
var outerButtonElement = (0, _react.useRef)();
|
|
104
107
|
(0, _react.useEffect)(function () {
|
|
105
|
-
setInitialValue(value);
|
|
108
|
+
setInitialValue(value);
|
|
109
|
+
var columnId = cell.column.id;
|
|
110
|
+
var columnLabel = instance.columns.find(function (item) {
|
|
111
|
+
return item.id === columnId;
|
|
112
|
+
});
|
|
113
|
+
setCellLabel(typeof columnLabel.Header === 'string' ? columnLabel.Header : 'Inline edit cell label'); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
106
114
|
}, []); // If you are in edit mode and click outside of the cell,
|
|
107
115
|
// this changes the cell back to the InlineEditButton
|
|
108
116
|
|
|
@@ -270,7 +278,8 @@ var InlineEditCell = function InlineEditCell(_ref) {
|
|
|
270
278
|
|
|
271
279
|
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Dropdown, (0, _extends2.default)({
|
|
272
280
|
id: cellId,
|
|
273
|
-
label:
|
|
281
|
+
label: cellLabel || 'Dropdown menu options',
|
|
282
|
+
ariaLabel: cellLabel || 'Dropdown menu options'
|
|
274
283
|
}, inputProps, {
|
|
275
284
|
hideLabel: true,
|
|
276
285
|
style: {
|
|
@@ -372,7 +381,7 @@ var InlineEditCell = function InlineEditCell(_ref) {
|
|
|
372
381
|
position: 'static'
|
|
373
382
|
},
|
|
374
383
|
placeholder: (datePickerInputProps === null || datePickerInputProps === void 0 ? void 0 : datePickerInputProps.placeholder) || 'mm/dd/yyyy',
|
|
375
|
-
labelText: (datePickerInputProps === null || datePickerInputProps === void 0 ? void 0 : datePickerInputProps.labelText) || 'Set date',
|
|
384
|
+
labelText: (datePickerInputProps === null || datePickerInputProps === void 0 ? void 0 : datePickerInputProps.labelText) || cellLabel || 'Set date',
|
|
376
385
|
id: datePickerInputProps.id || "".concat(blockClass, "__inline-edit--date-picker--").concat(cell.row.index),
|
|
377
386
|
hideLabel: true
|
|
378
387
|
})));
|
|
@@ -429,7 +438,7 @@ var InlineEditCell = function InlineEditCell(_ref) {
|
|
|
429
438
|
totalColumns: totalColumns,
|
|
430
439
|
type: type
|
|
431
440
|
}), !nonEditCell && inEditMode && cellId === activeCellId && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, type === 'text' && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TextInput, (0, _extends2.default)({
|
|
432
|
-
labelText:
|
|
441
|
+
labelText: cellLabel,
|
|
433
442
|
placeholder: placeholder
|
|
434
443
|
}, inputProps, {
|
|
435
444
|
id: cellId,
|
|
@@ -445,7 +454,7 @@ var InlineEditCell = function InlineEditCell(_ref) {
|
|
|
445
454
|
ref: textInputRef
|
|
446
455
|
})), type === 'number' && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.NumberInput, (0, _extends2.default)({
|
|
447
456
|
placeholder: placeholder,
|
|
448
|
-
label:
|
|
457
|
+
label: cellLabel
|
|
449
458
|
}, inputProps, {
|
|
450
459
|
id: cellId,
|
|
451
460
|
hideLabel: true,
|
|
@@ -473,7 +482,6 @@ InlineEditCell.propTypes = {
|
|
|
473
482
|
rowSize: _propTypes.default.string,
|
|
474
483
|
tableId: _propTypes.default.string
|
|
475
484
|
}),
|
|
476
|
-
label: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
|
|
477
485
|
nonEditCell: _propTypes.default.bool,
|
|
478
486
|
placeholder: _propTypes.default.string,
|
|
479
487
|
tabIndex: _propTypes.default.number,
|
|
@@ -9,18 +9,15 @@ exports.returnUpdatedActiveCell = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
11
|
|
|
12
|
+
var _settings = require("../../../../../../settings");
|
|
13
|
+
|
|
12
14
|
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; }
|
|
13
15
|
|
|
14
16
|
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; }
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
* Copyright IBM Corp. 2022, 2022
|
|
18
|
-
*
|
|
19
|
-
* This source code is licensed under the Apache-2.0 license found in the
|
|
20
|
-
* LICENSE file in the root directory of this source tree.
|
|
21
|
-
*/
|
|
22
|
-
// This function returns the state back to the reducer after
|
|
18
|
+
var blockClass = "".concat(_settings.pkg.prefix, "--datagrid"); // This function returns the state back to the reducer after
|
|
23
19
|
// determining the new active cell value
|
|
20
|
+
|
|
24
21
|
var returnUpdatedActiveCell = function returnUpdatedActiveCell(_ref) {
|
|
25
22
|
var activeCellCoords = _ref.activeCellCoords,
|
|
26
23
|
direction = _ref.direction,
|
|
@@ -34,6 +31,12 @@ var returnUpdatedActiveCell = function returnUpdatedActiveCell(_ref) {
|
|
|
34
31
|
});
|
|
35
32
|
|
|
36
33
|
var newActiveCellId = "column-".concat(newActiveCoords.column, "-row-").concat(newActiveCoords.row);
|
|
34
|
+
var newCellIdButton = document.querySelector("#".concat(instance.tableId, " .").concat(blockClass, "__table-with-inline-edit [data-cell-id=\"").concat(newActiveCellId, "\"] .").concat(blockClass, "__inline-edit-button")); // Allows scrollable area to keep focused/active cell id visible
|
|
35
|
+
|
|
36
|
+
if (newCellIdButton) {
|
|
37
|
+
newCellIdButton === null || newCellIdButton === void 0 ? void 0 : newCellIdButton.focus();
|
|
38
|
+
}
|
|
39
|
+
|
|
37
40
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
38
41
|
activeCellId: newActiveCellId
|
|
39
42
|
});
|
|
@@ -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(
|
|
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
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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: '
|
|
113
|
-
payload:
|
|
144
|
+
type: 'UPDATE_ACTIVE_CELL_ID',
|
|
145
|
+
payload: _objectSpread({
|
|
146
|
+
direction: 'right'
|
|
147
|
+
}, sharedUpdateParams)
|
|
114
148
|
});
|
|
149
|
+
break;
|
|
115
150
|
}
|
|
116
151
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
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: '
|
|
194
|
-
payload: {
|
|
195
|
-
|
|
196
|
-
|
|
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;
|
|
@@ -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", "
|
|
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
|
|
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,
|
|
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)((
|
|
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,
|
|
24
|
+
(0, _useNestedRowExpander.default)(hooks);
|
|
25
25
|
var marginLeft = 24;
|
|
26
26
|
|
|
27
27
|
var getRowProps = function getRowProps(props, _ref) {
|