@carbon/ibm-products 1.27.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 +570 -80
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +3 -3
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon-released-only.css +942 -23
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +3 -3
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +569 -79
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +3 -3
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +570 -80
- package/css/index.css.map +1 -1
- package/css/index.min.css +3 -3
- package/css/index.min.css.map +1 -1
- package/es/components/AddSelect/AddSelect.js +0 -3
- package/es/components/AddSelect/AddSelectBody.js +20 -3
- package/es/components/AddSelect/AddSelectBreadcrumbs.js +11 -3
- package/es/components/AddSelect/AddSelectColumn.js +4 -3
- package/es/components/AddSelect/AddSelectFilter.js +4 -3
- package/es/components/AddSelect/AddSelectList.js +40 -14
- package/es/components/Card/Card.js +16 -6
- package/es/components/Card/CardFooter.js +3 -1
- package/es/components/Card/CardHeader.js +20 -1
- package/es/components/DataSpreadsheet/DataSpreadsheet.js +63 -11
- package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +2 -1
- package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +7 -0
- package/es/components/DataSpreadsheet/utils/handleCellDeletion.js +31 -0
- package/es/components/DataSpreadsheet/utils/handleMultipleKeys.js +1 -1
- package/es/components/Datagrid/Datagrid/Datagrid.js +10 -38
- package/es/components/Datagrid/Datagrid/DatagridContent.js +127 -0
- package/es/components/Datagrid/Datagrid/DatagridExpandedRow.js +9 -1
- package/es/components/Datagrid/Datagrid/DatagridSelectAll.js +10 -3
- package/es/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +12 -3
- package/es/components/Datagrid/Datagrid/DraggableElement.js +5 -1
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Actions.js +5 -40
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +35 -10
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsModal.js +61 -24
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ModalWrapper.js +3 -2
- package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.js +60 -0
- package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/index.js +1 -0
- package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +467 -0
- package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/index.js +1 -0
- package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/InlineEditContext.js +112 -0
- package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/getCellIdAsObject.js +27 -0
- package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/index.js +1 -0
- package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/returnUpdatedActiveCell.js +39 -0
- package/es/components/Datagrid/Datagrid/addons/InlineEdit/handleGridFocus.js +19 -0
- package/es/components/Datagrid/Datagrid/addons/InlineEdit/handleGridKeyPress.js +263 -0
- package/es/components/Datagrid/Datagrid/addons/InlineEdit/handleMultipleKeys.js +66 -0
- package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +6 -5
- package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +1 -2
- package/es/components/Datagrid/index.js +3 -1
- package/es/components/Datagrid/useActionsColumn.js +28 -12
- package/es/components/Datagrid/useColumnOrder.js +8 -0
- package/es/components/Datagrid/useCustomizeColumns.js +5 -0
- package/es/components/Datagrid/useDisableSelectRows.js +6 -2
- package/es/components/Datagrid/useExpandedRow.js +0 -1
- package/es/components/Datagrid/useInlineEdit.js +71 -0
- package/es/components/Datagrid/useNestedRowExpander.js +42 -0
- package/es/components/Datagrid/useNestedRows.js +2 -2
- package/es/components/Datagrid/useRowSize.js +17 -6
- package/es/components/Datagrid/useSelectAllToggle.js +17 -4
- package/es/components/Datagrid/useSelectRows.js +12 -2
- package/es/components/Datagrid/useStickyColumn.js +11 -0
- 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/components/Datagrid/utils/getInlineEditColumns.js +121 -0
- package/es/components/Datagrid/utils/makeData.js +17 -1
- package/es/components/ImportModal/ImportModal.js +2 -2
- package/es/components/InlineEdit/InlineEdit.js +4 -2
- package/es/components/ProductiveCard/ProductiveCard.js +5 -0
- package/es/components/index.js +1 -1
- package/es/global/js/hooks/useClickOutside.js +1 -1
- package/es/global/js/package-settings.js +3 -3
- package/es/global/js/utils/rangeWithCallback.js +13 -0
- package/es/global/js/utils/story-helper.js +5 -1
- package/es/global/js/utils/uuidv4.spec.js +4 -0
- package/lib/components/AddSelect/AddSelect.js +0 -4
- package/lib/components/AddSelect/AddSelectBody.js +20 -3
- package/lib/components/AddSelect/AddSelectBreadcrumbs.js +14 -3
- package/lib/components/AddSelect/AddSelectColumn.js +3 -2
- package/lib/components/AddSelect/AddSelectFilter.js +3 -2
- package/lib/components/AddSelect/AddSelectList.js +39 -13
- package/lib/components/Card/Card.js +16 -6
- package/lib/components/Card/CardFooter.js +3 -1
- package/lib/components/Card/CardHeader.js +21 -1
- package/lib/components/DataSpreadsheet/DataSpreadsheet.js +63 -10
- package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +2 -1
- package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +7 -0
- package/lib/components/DataSpreadsheet/utils/handleCellDeletion.js +42 -0
- package/lib/components/DataSpreadsheet/utils/handleMultipleKeys.js +1 -1
- package/lib/components/Datagrid/Datagrid/Datagrid.js +12 -45
- package/lib/components/Datagrid/Datagrid/DatagridContent.js +160 -0
- package/lib/components/Datagrid/Datagrid/DatagridExpandedRow.js +9 -1
- package/lib/components/Datagrid/Datagrid/DatagridSelectAll.js +12 -3
- package/lib/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +14 -3
- package/lib/components/Datagrid/Datagrid/DraggableElement.js +5 -1
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Actions.js +12 -41
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +47 -25
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsModal.js +59 -23
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/ModalWrapper.js +3 -2
- package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.js +76 -0
- package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/index.js +13 -0
- package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +491 -0
- package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/index.js +13 -0
- package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/InlineEditContext.js +129 -0
- package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/getCellIdAsObject.js +36 -0
- package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/index.js +19 -0
- package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/returnUpdatedActiveCell.js +45 -0
- package/lib/components/Datagrid/Datagrid/addons/InlineEdit/handleGridFocus.js +28 -0
- package/lib/components/Datagrid/Datagrid/addons/InlineEdit/handleGridKeyPress.js +272 -0
- package/lib/components/Datagrid/Datagrid/addons/InlineEdit/handleMultipleKeys.js +78 -0
- package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +6 -5
- package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +1 -2
- package/lib/components/Datagrid/index.js +17 -1
- package/lib/components/Datagrid/useActionsColumn.js +28 -13
- package/lib/components/Datagrid/useColumnOrder.js +17 -0
- package/lib/components/Datagrid/useCustomizeColumns.js +5 -0
- package/lib/components/Datagrid/useDisableSelectRows.js +6 -2
- package/lib/components/Datagrid/useExpandedRow.js +0 -1
- package/lib/components/Datagrid/useInlineEdit.js +85 -0
- package/lib/components/Datagrid/useNestedRowExpander.js +57 -0
- package/lib/components/Datagrid/useNestedRows.js +3 -3
- package/lib/components/Datagrid/useRowSize.js +18 -13
- package/lib/components/Datagrid/useSelectAllToggle.js +18 -4
- package/lib/components/Datagrid/useSelectRows.js +12 -2
- package/lib/components/Datagrid/useStickyColumn.js +11 -0
- 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/components/Datagrid/utils/getInlineEditColumns.js +133 -0
- package/lib/components/Datagrid/utils/makeData.js +17 -1
- package/lib/components/ImportModal/ImportModal.js +2 -2
- package/lib/components/InlineEdit/InlineEdit.js +4 -2
- package/lib/components/ProductiveCard/ProductiveCard.js +5 -0
- package/lib/components/index.js +12 -0
- package/lib/global/js/hooks/useClickOutside.js +1 -1
- package/lib/global/js/package-settings.js +3 -3
- package/lib/global/js/utils/rangeWithCallback.js +22 -0
- package/lib/global/js/utils/story-helper.js +5 -1
- package/lib/global/js/utils/uuidv4.spec.js +4 -0
- package/package.json +13 -13
- package/scss/components/AddSelect/_add-select.scss +126 -28
- package/scss/components/Card/_card.scss +1 -0
- package/scss/components/Cascade/_cascade.scss +1 -1
- package/scss/components/CreateTearsheet/_create-tearsheet.scss +1 -0
- package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +18 -1
- package/scss/components/Datagrid/_storybook-styles.scss +1 -1
- package/scss/components/Datagrid/styles/_datagrid.scss +27 -4
- package/scss/components/Datagrid/styles/_draggableElement.scss +26 -9
- package/scss/components/Datagrid/styles/_index.scss +1 -0
- package/scss/components/Datagrid/styles/_useActionsColumn.scss +12 -0
- package/scss/components/Datagrid/styles/_useExpandedRow.scss +30 -0
- package/scss/components/Datagrid/styles/_useInlineEdit.scss +211 -0
- package/scss/components/Datagrid/styles/_useNestedRows.scss +15 -1
- package/scss/components/Datagrid/styles/_useStickyColumn.scss +30 -2
- package/scss/components/Datagrid/styles/addons/_CustomizeColumnsModal.scss +44 -6
- package/scss/components/NotificationsPanel/_notifications-panel.scss +5 -6
- package/scss/components/ProductiveCard/_productive-card.scss +39 -0
- package/scss/components/RemoveModal/_remove-modal.scss +0 -4
- package/scss/components/SidePanel/_side-panel.scss +4 -6
- package/scss/components/_index-released-only.scss +1 -0
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
|
|
3
|
+
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; }
|
|
4
|
+
|
|
5
|
+
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) { _defineProperty(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; }
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Copyright IBM Corp. 2022, 2022
|
|
9
|
+
*
|
|
10
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
11
|
+
* LICENSE file in the root directory of this source tree.
|
|
12
|
+
*/
|
|
13
|
+
import { carbon, pkg } from '../../../../../settings';
|
|
14
|
+
import { handleMultipleKeys } from './handleMultipleKeys';
|
|
15
|
+
import { getCellIdAsObject } from './InlineEditContext/getCellIdAsObject';
|
|
16
|
+
var blockClass = "".concat(pkg.prefix, "--datagrid");
|
|
17
|
+
export var handleGridKeyPress = function handleGridKeyPress(_ref) {
|
|
18
|
+
var event = _ref.event,
|
|
19
|
+
dispatch = _ref.dispatch,
|
|
20
|
+
state = _ref.state,
|
|
21
|
+
instance = _ref.instance,
|
|
22
|
+
keysPressedList = _ref.keysPressedList,
|
|
23
|
+
usingMac = _ref.usingMac;
|
|
24
|
+
var key = event.key;
|
|
25
|
+
var gridActive = state.gridActive,
|
|
26
|
+
activeCellId = state.activeCellId,
|
|
27
|
+
editId = state.editId;
|
|
28
|
+
var focusedCell = document.querySelector("#".concat(instance.tableId, " .").concat(blockClass, "__table-with-inline-edit [data-cell-id=\"").concat(activeCellId, "\"]")); // If we reach this it means that tab was pressed while in
|
|
29
|
+
// edit mode which should not remove the focus from the grid
|
|
30
|
+
|
|
31
|
+
if (activeCellId === editId && key === 'Tab') {
|
|
32
|
+
// Attempting to exit date picker
|
|
33
|
+
if (focusedCell.getAttribute('data-inline-type') === 'date') {
|
|
34
|
+
dispatch({
|
|
35
|
+
type: 'EXIT_EDIT_MODE',
|
|
36
|
+
payload: activeCellId
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
event.preventDefault();
|
|
41
|
+
var inlineEditArea = document.querySelector("#".concat(instance.tableId, " .").concat(blockClass, "__table-with-inline-edit"));
|
|
42
|
+
inlineEditArea.focus();
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (activeCellId === editId && key === 'Escape') {
|
|
47
|
+
if (focusedCell.getAttribute('data-inline-type') === 'date') {
|
|
48
|
+
dispatch({
|
|
49
|
+
type: 'EXIT_EDIT_MODE',
|
|
50
|
+
payload: activeCellId
|
|
51
|
+
});
|
|
52
|
+
event.preventDefault();
|
|
53
|
+
|
|
54
|
+
var _inlineEditArea = document.querySelector("#".concat(instance.tableId, " .").concat(blockClass, "__table-with-inline-edit"));
|
|
55
|
+
|
|
56
|
+
_inlineEditArea.focus();
|
|
57
|
+
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
} // Checks if the dropdown menu is open
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
var dropdownIsActive = function dropdownIsActive() {
|
|
64
|
+
var focusedElementRole = document.activeElement.getAttribute('role');
|
|
65
|
+
|
|
66
|
+
if (focusedElementRole === 'listbox' && document.activeElement.classList.contains("".concat(carbon.prefix, "--list-box__menu"))) {
|
|
67
|
+
// Prevents arrow keys from scrolling any other content when dropdown menu is open
|
|
68
|
+
event.preventDefault();
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return false;
|
|
73
|
+
}; // Checks if the date picker is open
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
var datePickerIsActive = function datePickerIsActive() {
|
|
77
|
+
var focusedCalendarElement = document.querySelector(".".concat(carbon.prefix, "--date-picker__input.flatpickr-input.active"));
|
|
78
|
+
|
|
79
|
+
if (focusedCalendarElement || document.activeElement.classList.contains("flatpickr-day")) {
|
|
80
|
+
event.preventDefault();
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return false;
|
|
85
|
+
}; // Stop grid key listener when in edit mode
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
var isEditing = document.activeElement.id === activeCellId && document.activeElement.id === editId || dropdownIsActive() || datePickerIsActive();
|
|
89
|
+
|
|
90
|
+
if (isEditing || !gridActive) {
|
|
91
|
+
return;
|
|
92
|
+
} // Command keys need to be returned as there is default browser behavior with these keys
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
if (key === 'Meta' || key === 'Control') {
|
|
96
|
+
return;
|
|
97
|
+
} // Prevent arrow keys, home key, and end key from scrolling the page when the data spreadsheet container has focus
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
if (['End', 'Home', 'ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown'].indexOf(key) > -1 && !isEditing && keysPressedList.length < 2) {
|
|
101
|
+
event.preventDefault();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
var isDisabledCell = !!focusedCell.getAttribute('data-disabled');
|
|
105
|
+
var sharedUpdateParams = {
|
|
106
|
+
oldId: activeCellId,
|
|
107
|
+
instance: instance
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
if (keysPressedList.length > 1) {
|
|
111
|
+
handleMultipleKeys({
|
|
112
|
+
usingMac: usingMac,
|
|
113
|
+
keysPressedList: keysPressedList,
|
|
114
|
+
dispatch: dispatch,
|
|
115
|
+
activeCellId: activeCellId,
|
|
116
|
+
instance: instance
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (keysPressedList.length < 2) {
|
|
121
|
+
switch (key) {
|
|
122
|
+
case 'Tab':
|
|
123
|
+
{
|
|
124
|
+
if (!editId) {
|
|
125
|
+
dispatch({
|
|
126
|
+
type: 'REMOVE_GRID_ACTIVE_FOCUS',
|
|
127
|
+
payload: activeCellId
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
case 'ArrowRight':
|
|
135
|
+
{
|
|
136
|
+
dispatch({
|
|
137
|
+
type: 'UPDATE_ACTIVE_CELL_ID',
|
|
138
|
+
payload: _objectSpread({
|
|
139
|
+
direction: 'right'
|
|
140
|
+
}, sharedUpdateParams)
|
|
141
|
+
});
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
case 'ArrowLeft':
|
|
146
|
+
{
|
|
147
|
+
dispatch({
|
|
148
|
+
type: 'UPDATE_ACTIVE_CELL_ID',
|
|
149
|
+
payload: _objectSpread({
|
|
150
|
+
direction: 'left'
|
|
151
|
+
}, sharedUpdateParams)
|
|
152
|
+
});
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
case 'ArrowUp':
|
|
157
|
+
{
|
|
158
|
+
dispatch({
|
|
159
|
+
type: 'UPDATE_ACTIVE_CELL_ID',
|
|
160
|
+
payload: _objectSpread({
|
|
161
|
+
direction: 'up'
|
|
162
|
+
}, sharedUpdateParams)
|
|
163
|
+
});
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
case 'ArrowDown':
|
|
168
|
+
{
|
|
169
|
+
dispatch({
|
|
170
|
+
type: 'UPDATE_ACTIVE_CELL_ID',
|
|
171
|
+
payload: _objectSpread({
|
|
172
|
+
direction: 'down'
|
|
173
|
+
}, sharedUpdateParams)
|
|
174
|
+
});
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
// Move active cell to first column in current row
|
|
178
|
+
|
|
179
|
+
case 'Home':
|
|
180
|
+
{
|
|
181
|
+
var activeCellObject = getCellIdAsObject(activeCellId);
|
|
182
|
+
|
|
183
|
+
var newActiveCellCoords = _objectSpread(_objectSpread({}, activeCellObject), {}, {
|
|
184
|
+
column: 0
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
var newActiveCellId = "column-".concat(newActiveCellCoords.column, "-row-").concat(newActiveCellCoords.row);
|
|
188
|
+
var scrollElement = document.querySelector("#".concat(instance.tableId, " .").concat(pkg.prefix, "--datagrid__table-container")); // Scroll table container to the furthest left position
|
|
189
|
+
|
|
190
|
+
scrollElement.scrollLeft = 0;
|
|
191
|
+
dispatch({
|
|
192
|
+
type: 'UPDATE_ACTIVE_CELL_ID',
|
|
193
|
+
payload: newActiveCellId
|
|
194
|
+
});
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
// Move active cell to last column in current row
|
|
198
|
+
|
|
199
|
+
case 'End':
|
|
200
|
+
{
|
|
201
|
+
var _activeCellObject = getCellIdAsObject(activeCellId);
|
|
202
|
+
|
|
203
|
+
var totalVisibleColumns = instance.visibleColumns.filter(function (item) {
|
|
204
|
+
return item.id !== 'spacer';
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
var _newActiveCellCoords = _objectSpread(_objectSpread({}, _activeCellObject), {}, {
|
|
208
|
+
column: totalVisibleColumns.length - 1
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
var _newActiveCellId = "column-".concat(_newActiveCellCoords.column, "-row-").concat(_newActiveCellCoords.row);
|
|
212
|
+
|
|
213
|
+
var _scrollElement = document.querySelector("#".concat(instance.tableId, " .").concat(pkg.prefix, "--datagrid__table-container")); // Scroll table container to the furthest right position
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
_scrollElement.scrollLeft = _scrollElement.scrollWidth;
|
|
217
|
+
dispatch({
|
|
218
|
+
type: 'UPDATE_ACTIVE_CELL_ID',
|
|
219
|
+
payload: _newActiveCellId
|
|
220
|
+
});
|
|
221
|
+
break;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
case ' ':
|
|
225
|
+
case 'F2':
|
|
226
|
+
case 'Enter':
|
|
227
|
+
{
|
|
228
|
+
// Disabled cells are not allowed to go into edit mode
|
|
229
|
+
if (isDisabledCell) {
|
|
230
|
+
return;
|
|
231
|
+
} // Only go into edit mode if there is no editId, meaning that we're not already in edit mode
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
if (!editId) {
|
|
235
|
+
var focusedType = focusedCell.getAttribute('data-inline-type'); // Open dropdown immediately after entering edit mode for selection type
|
|
236
|
+
|
|
237
|
+
if (focusedType === 'selection') {
|
|
238
|
+
setTimeout(function () {
|
|
239
|
+
var dropdownTrigger = focusedCell.querySelector('button');
|
|
240
|
+
dropdownTrigger === null || dropdownTrigger === void 0 ? void 0 : dropdownTrigger.click();
|
|
241
|
+
}, 1);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
if (focusedType === 'date') {
|
|
245
|
+
setTimeout(function () {
|
|
246
|
+
var dateInputTrigger = focusedCell.querySelector('input');
|
|
247
|
+
dateInputTrigger === null || dateInputTrigger === void 0 ? void 0 : dateInputTrigger.click();
|
|
248
|
+
dateInputTrigger === null || dateInputTrigger === void 0 ? void 0 : dateInputTrigger.focus();
|
|
249
|
+
}, 1);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
dispatch({
|
|
253
|
+
type: 'ENTER_EDIT_MODE',
|
|
254
|
+
payload: {
|
|
255
|
+
activeCellId: activeCellId,
|
|
256
|
+
editId: activeCellId
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2022, 2022
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { includesResourceKey } from '../../../../DataSpreadsheet/utils/handleMultipleKeys';
|
|
8
|
+
import { pkg } from '../../../../../settings';
|
|
9
|
+
var blockClass = "".concat(pkg.prefix, "--datagrid");
|
|
10
|
+
export var handleMultipleKeys = function handleMultipleKeys(_ref) {
|
|
11
|
+
var usingMac = _ref.usingMac,
|
|
12
|
+
keysPressedList = _ref.keysPressedList,
|
|
13
|
+
dispatch = _ref.dispatch,
|
|
14
|
+
activeCellId = _ref.activeCellId,
|
|
15
|
+
instance = _ref.instance;
|
|
16
|
+
|
|
17
|
+
// Resource key and Home
|
|
18
|
+
// Move active cell to first cell in first row and column
|
|
19
|
+
if (includesResourceKey(keysPressedList, usingMac) && keysPressedList.includes('Home')) {
|
|
20
|
+
var scrollElement = document.querySelector("#".concat(instance.tableId, " .").concat(pkg.prefix, "--datagrid__table-container")); // Scroll table container to the furthest top left position
|
|
21
|
+
|
|
22
|
+
scrollElement.scrollTop = 0;
|
|
23
|
+
scrollElement.scrollLeft = 0;
|
|
24
|
+
dispatch({
|
|
25
|
+
type: 'UPDATE_ACTIVE_CELL_ID',
|
|
26
|
+
payload: 'column-0-row-0'
|
|
27
|
+
});
|
|
28
|
+
} // Resource key and End
|
|
29
|
+
// Move active cell to last cell in in the last row and column
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
if (includesResourceKey(keysPressedList, usingMac) && keysPressedList.includes('End')) {
|
|
33
|
+
var _instance$rows;
|
|
34
|
+
|
|
35
|
+
var totalVisibleColumns = instance.visibleColumns.filter(function (item) {
|
|
36
|
+
return item.id !== 'spacer';
|
|
37
|
+
}).length;
|
|
38
|
+
var totalRows = (_instance$rows = instance.rows) === null || _instance$rows === void 0 ? void 0 : _instance$rows.length;
|
|
39
|
+
var lastCellDataId = "column-".concat(totalVisibleColumns - 1, "-row-").concat(totalRows - 1);
|
|
40
|
+
var lastCellElement = document.querySelector("#".concat(instance.tableId, " .").concat(blockClass, "__table-with-inline-edit [data-cell-id=\"").concat(activeCellId, "\"]"));
|
|
41
|
+
|
|
42
|
+
var _scrollElement = document.querySelector("#".concat(instance.tableId, " .").concat(pkg.prefix, "--datagrid__table-container")); // Scroll table container to the furthest bottom right position
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
_scrollElement.scrollTop = _scrollElement.scrollHeight;
|
|
46
|
+
_scrollElement.scrollLeft = _scrollElement.scrollWidth;
|
|
47
|
+
|
|
48
|
+
if (lastCellElement) {
|
|
49
|
+
dispatch({
|
|
50
|
+
type: 'UPDATE_ACTIVE_CELL_ID',
|
|
51
|
+
payload: lastCellDataId
|
|
52
|
+
});
|
|
53
|
+
} else {
|
|
54
|
+
// If a Datagrid component is using virtualized data, it's possible that the last cell
|
|
55
|
+
// has not yet been rendered. In this case, we simply need to wait until the scrollable
|
|
56
|
+
// container has scrolled to the bottom/right most position, then we can dispatch the
|
|
57
|
+
// update active cell id action
|
|
58
|
+
setTimeout(function () {
|
|
59
|
+
dispatch({
|
|
60
|
+
type: 'UPDATE_ACTIVE_CELL_ID',
|
|
61
|
+
payload: lastCellDataId
|
|
62
|
+
});
|
|
63
|
+
}, 250);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
};
|
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
3
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
4
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
5
|
-
var _excluded = ["
|
|
5
|
+
var _excluded = ["legendText"];
|
|
6
6
|
// @flow
|
|
7
7
|
|
|
8
8
|
/*
|
|
@@ -22,8 +22,8 @@ import { pkg } from '../../../../../settings';
|
|
|
22
22
|
var blockClass = "".concat(pkg.prefix, "--datagrid");
|
|
23
23
|
|
|
24
24
|
var RowSizeDropdown = function RowSizeDropdown(_ref) {
|
|
25
|
-
var _ref$
|
|
26
|
-
|
|
25
|
+
var _ref$legendText = _ref.legendText,
|
|
26
|
+
legendText = _ref$legendText === void 0 ? 'Row height' : _ref$legendText,
|
|
27
27
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
28
28
|
|
|
29
29
|
var buttonRef = React.useRef({});
|
|
@@ -42,9 +42,10 @@ var RowSizeDropdown = function RowSizeDropdown(_ref) {
|
|
|
42
42
|
onClick: function onClick() {
|
|
43
43
|
return setIsOpen(!isOpen);
|
|
44
44
|
},
|
|
45
|
-
iconDescription:
|
|
45
|
+
iconDescription: legendText,
|
|
46
46
|
className: cx(_defineProperty({}, "".concat(blockClass, "__row-size-button--open"), isOpen))
|
|
47
47
|
}), isOpen && /*#__PURE__*/React.createElement(RowSizeRadioGroup, _extends({}, props, {
|
|
48
|
+
legendText: legendText,
|
|
48
49
|
buttonRef: buttonRef,
|
|
49
50
|
hideRadioGroup: function hideRadioGroup() {
|
|
50
51
|
setIsOpen(false);
|
|
@@ -53,8 +54,8 @@ var RowSizeDropdown = function RowSizeDropdown(_ref) {
|
|
|
53
54
|
};
|
|
54
55
|
|
|
55
56
|
RowSizeDropdown.propTypes = {
|
|
56
|
-
buttonLabel: PropTypes.string,
|
|
57
57
|
datagridName: PropTypes.string,
|
|
58
|
+
legendText: PropTypes.string,
|
|
58
59
|
light: PropTypes.bool,
|
|
59
60
|
onChange: PropTypes.func.isRequired,
|
|
60
61
|
selectedOption: PropTypes.string
|
|
@@ -22,8 +22,7 @@ var RowSizeRadioGroup = function RowSizeRadioGroup(_ref) {
|
|
|
22
22
|
buttonRef = _ref.buttonRef,
|
|
23
23
|
onChange = _ref.onChange,
|
|
24
24
|
hideRadioGroup = _ref.hideRadioGroup,
|
|
25
|
-
|
|
26
|
-
legendText = _ref$legendText === void 0 ? 'Row height' : _ref$legendText,
|
|
25
|
+
legendText = _ref.legendText,
|
|
27
26
|
_ref$rowSizeLabels = _ref.rowSizeLabels,
|
|
28
27
|
rowSizeLabels = _ref$rowSizeLabels === void 0 ? {
|
|
29
28
|
xl: 'Extra large',
|
|
@@ -20,4 +20,6 @@ export { default as useStickyColumn } from './useStickyColumn';
|
|
|
20
20
|
export { default as useActionsColumn } from './useActionsColumn';
|
|
21
21
|
export { default as useCustomizeColumns } from './useCustomizeColumns';
|
|
22
22
|
export { default as useSelectAllWithToggle } from './useSelectAllToggle';
|
|
23
|
-
export { default as useColumnCenterAlign } from './useColumnCenterAlign';
|
|
23
|
+
export { default as useColumnCenterAlign } from './useColumnCenterAlign';
|
|
24
|
+
export { default as useColumnOrder } from './useColumnOrder';
|
|
25
|
+
export { default as useInlineEdit } from './useInlineEdit';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
3
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
4
|
-
var _excluded = ["id", "
|
|
4
|
+
var _excluded = ["id", "itemText", "onClick", "icon"],
|
|
5
|
+
_excluded2 = ["id", "onClick", "shouldHideMenuItem", "shouldDisableMenuItem", "disabled"];
|
|
5
6
|
|
|
6
7
|
/*
|
|
7
8
|
* Licensed Materials - Property of IBM
|
|
@@ -19,7 +20,8 @@ var blockClass = "".concat(pkg.prefix, "--datagrid");
|
|
|
19
20
|
var useActionsColumn = function useActionsColumn(hooks) {
|
|
20
21
|
var useAttachActionsOnInstance = function useAttachActionsOnInstance(instance) {
|
|
21
22
|
var rowActions = instance.rowActions,
|
|
22
|
-
isFetching = instance.isFetching
|
|
23
|
+
isFetching = instance.isFetching,
|
|
24
|
+
selectedFlatRows = instance.selectedFlatRows;
|
|
23
25
|
|
|
24
26
|
if (rowActions && Array.isArray(rowActions)) {
|
|
25
27
|
var addActionsMenu = function addActionsMenu(props, cellData) {
|
|
@@ -28,7 +30,7 @@ var useActionsColumn = function useActionsColumn(hooks) {
|
|
|
28
30
|
column = cell.column;
|
|
29
31
|
|
|
30
32
|
if (column.isAction) {
|
|
31
|
-
var
|
|
33
|
+
var _cx3;
|
|
32
34
|
|
|
33
35
|
return [props, {
|
|
34
36
|
children: /*#__PURE__*/React.createElement("div", {
|
|
@@ -40,26 +42,37 @@ var useActionsColumn = function useActionsColumn(hooks) {
|
|
|
40
42
|
style: {
|
|
41
43
|
display: 'flex'
|
|
42
44
|
}
|
|
43
|
-
}, rowActions.map(function (action) {
|
|
45
|
+
}, rowActions.map(function (action, index) {
|
|
44
46
|
var id = action.id,
|
|
45
47
|
itemText = action.itemText,
|
|
46
48
|
_onClick = action.onClick,
|
|
47
|
-
icon = action.icon
|
|
49
|
+
icon = action.icon,
|
|
50
|
+
rest = _objectWithoutProperties(action, _excluded);
|
|
51
|
+
|
|
52
|
+
var selectedRowId = selectedFlatRows === null || selectedFlatRows === void 0 ? void 0 : selectedFlatRows.filter(function (item) {
|
|
53
|
+
return item.id === row.id ? item.id : null;
|
|
54
|
+
});
|
|
48
55
|
return /*#__PURE__*/React.createElement("div", {
|
|
49
|
-
className: "".concat(blockClass, "__actions-column-button"),
|
|
50
|
-
key: ""
|
|
51
|
-
}, /*#__PURE__*/React.createElement(OverflowMenu, {
|
|
56
|
+
className: cx("".concat(blockClass, "__actions-column-button"), _defineProperty({}, "".concat(blockClass, "__disabled-row-action-button"), selectedFlatRows && selectedFlatRows.length && selectedRowId && selectedRowId.length)),
|
|
57
|
+
key: "".concat(itemText, "__").concat(index)
|
|
58
|
+
}, /*#__PURE__*/React.createElement(OverflowMenu, _extends({}, rest, {
|
|
52
59
|
renderIcon: icon,
|
|
53
60
|
hasIconOnly: true,
|
|
54
61
|
light: true,
|
|
55
62
|
iconDescription: itemText,
|
|
56
63
|
kind: "ghost",
|
|
64
|
+
className: cx(_defineProperty({}, "".concat(blockClass, "__disabled-row-action"), selectedFlatRows && selectedFlatRows.length && selectedRowId && selectedRowId.length)),
|
|
57
65
|
onClick: function onClick(e) {
|
|
66
|
+
if (selectedFlatRows && selectedFlatRows.length && selectedRowId && selectedRowId.length) {
|
|
67
|
+
// Row actions should be disabled if row is selected and batchActions toolbar is active
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
|
|
58
71
|
e.stopPropagation();
|
|
59
72
|
|
|
60
73
|
_onClick(id, row, e);
|
|
61
74
|
}
|
|
62
|
-
}));
|
|
75
|
+
})));
|
|
63
76
|
})), !isFetching && rowActions.length > 2 && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(OverflowMenu, {
|
|
64
77
|
size: "sm",
|
|
65
78
|
light: true,
|
|
@@ -73,7 +86,7 @@ var useActionsColumn = function useActionsColumn(hooks) {
|
|
|
73
86
|
shouldHideMenuItem = action.shouldHideMenuItem,
|
|
74
87
|
shouldDisableMenuItem = action.shouldDisableMenuItem,
|
|
75
88
|
disabled = action.disabled,
|
|
76
|
-
rest = _objectWithoutProperties(action,
|
|
89
|
+
rest = _objectWithoutProperties(action, _excluded2);
|
|
77
90
|
|
|
78
91
|
var hidden = typeof shouldHideMenuItem === 'function' && shouldHideMenuItem(row); // shouldDisableMenuItem will override disabled because it's more specific
|
|
79
92
|
// if shouldDisableMenuItem doesn't exists, fall back to disabled
|
|
@@ -94,7 +107,10 @@ var useActionsColumn = function useActionsColumn(hooks) {
|
|
|
94
107
|
key: id
|
|
95
108
|
}));
|
|
96
109
|
})))),
|
|
97
|
-
className: cx((
|
|
110
|
+
className: cx((_cx3 = {}, _defineProperty(_cx3, "".concat(blockClass, "__actions-column-cell"), true), _defineProperty(_cx3, "".concat(blockClass, "__cell"), true), _cx3)),
|
|
111
|
+
style: {
|
|
112
|
+
width: 96
|
|
113
|
+
}
|
|
98
114
|
}];
|
|
99
115
|
}
|
|
100
116
|
|
|
@@ -26,6 +26,10 @@ var useCustomizeColumns = function useCustomizeColumns(hooks) {
|
|
|
26
26
|
|
|
27
27
|
hooks.useInstance.push(function (instance) {
|
|
28
28
|
var customizeColumnsProps = instance.customizeColumnsProps;
|
|
29
|
+
|
|
30
|
+
var _ref = customizeColumnsProps || {},
|
|
31
|
+
labels = _ref.labels;
|
|
32
|
+
|
|
29
33
|
Object.assign(instance, {
|
|
30
34
|
customizeColumnsProps: _objectSpread(_objectSpread({}, customizeColumnsProps), {}, {
|
|
31
35
|
isModalOpen: isModalOpen,
|
|
@@ -33,6 +37,7 @@ var useCustomizeColumns = function useCustomizeColumns(hooks) {
|
|
|
33
37
|
}),
|
|
34
38
|
CustomizeColumnsButton: function CustomizeColumnsButton(props) {
|
|
35
39
|
return /*#__PURE__*/React.createElement(ToggleButtonWrapper, _extends({
|
|
40
|
+
iconTooltipLabel: labels === null || labels === void 0 ? void 0 : labels.iconTooltipLabel,
|
|
36
41
|
isModalOpen: isModalOpen,
|
|
37
42
|
setIsModalOpen: setIsModalOpen
|
|
38
43
|
}, props));
|
|
@@ -22,6 +22,8 @@ var useDisableSelectRows = function useDisableSelectRows(hooks) {
|
|
|
22
22
|
|
|
23
23
|
var updateSelectAll = function updateSelectAll(hooks) {
|
|
24
24
|
var getToggleAllRowsSelectedProps = function getToggleAllRowsSelectedProps(props, _ref2) {
|
|
25
|
+
var _instance$disableSele, _instance$disableSele2;
|
|
26
|
+
|
|
25
27
|
var instance = _ref2.instance;
|
|
26
28
|
var selectableRows = instance.rows.filter(function (row) {
|
|
27
29
|
return !(instance.shouldDisableSelectRow && instance.shouldDisableSelectRow(row));
|
|
@@ -41,7 +43,7 @@ var updateSelectAll = function updateSelectAll(hooks) {
|
|
|
41
43
|
},
|
|
42
44
|
checked: isAllRowsSelected,
|
|
43
45
|
disabled: instance.disableSelectAll,
|
|
44
|
-
title: 'Toggle All Rows Selected',
|
|
46
|
+
title: (instance === null || instance === void 0 ? void 0 : (_instance$disableSele = instance.disableSelectRowsProps) === null || _instance$disableSele === void 0 ? void 0 : (_instance$disableSele2 = _instance$disableSele.labels) === null || _instance$disableSele2 === void 0 ? void 0 : _instance$disableSele2.toggleAllRowsLabel) || 'Toggle All Rows Selected',
|
|
45
47
|
indeterminate: Boolean(!isAllRowsSelected && Object.keys(instance.state.selectedRowIds).length)
|
|
46
48
|
}];
|
|
47
49
|
};
|
|
@@ -51,6 +53,8 @@ var updateSelectAll = function updateSelectAll(hooks) {
|
|
|
51
53
|
|
|
52
54
|
var updatePageSelectAll = function updatePageSelectAll(hooks) {
|
|
53
55
|
var getToggleAllPageRowsSelectedProps = function getToggleAllPageRowsSelectedProps(props, _ref4) {
|
|
56
|
+
var _instance$disableSele3, _instance$disableSele4;
|
|
57
|
+
|
|
54
58
|
var instance = _ref4.instance;
|
|
55
59
|
var selectableRows = instance.page.filter(function (row) {
|
|
56
60
|
return !(instance.shouldDisableSelectRow && instance.shouldDisableSelectRow(row));
|
|
@@ -70,7 +74,7 @@ var updatePageSelectAll = function updatePageSelectAll(hooks) {
|
|
|
70
74
|
},
|
|
71
75
|
checked: isAllRowsSelected,
|
|
72
76
|
disabled: instance.disableSelectAll,
|
|
73
|
-
title: 'Toggle All Rows Selected',
|
|
77
|
+
title: (instance === null || instance === void 0 ? void 0 : (_instance$disableSele3 = instance.disableSelectRowsProps) === null || _instance$disableSele3 === void 0 ? void 0 : (_instance$disableSele4 = _instance$disableSele3.labels) === null || _instance$disableSele4 === void 0 ? void 0 : _instance$disableSele4.toggleAllRowsLabel) || 'Toggle All Rows Selected',
|
|
74
78
|
indeterminate: Boolean(!isAllRowsSelected && instance.page.some(function (_ref6) {
|
|
75
79
|
var id = _ref6.id;
|
|
76
80
|
return instance.state.selectedRowIds[id];
|
|
@@ -37,7 +37,6 @@ var useExpandedRow = function useExpandedRow(hooks) {
|
|
|
37
37
|
return _objectSpread(_objectSpread({}, row), {}, {
|
|
38
38
|
canExpand: row.original && !row.original.notExpandable,
|
|
39
39
|
expandedContentHeight: expandedRowsHeight[row.index] || expandedContentHeight,
|
|
40
|
-
// RowRenderer: DatagridExpandedRow(row.RowRenderer, expansionRenderer),
|
|
41
40
|
RowRenderer: DatagridExpandedRow(row.RowRenderer, ExpandedRowContentComponent)
|
|
42
41
|
});
|
|
43
42
|
});
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Licensed Materials - Property of IBM
|
|
5
|
+
* 5724-Q36
|
|
6
|
+
* (c) Copyright IBM Corp. 2022
|
|
7
|
+
* US Government Users Restricted Rights - Use, duplication or disclosure
|
|
8
|
+
* restricted by GSA ADP Schedule Contract with IBM Corp.
|
|
9
|
+
*/
|
|
10
|
+
import React from 'react';
|
|
11
|
+
import { pkg } from '../../settings';
|
|
12
|
+
import cx from 'classnames';
|
|
13
|
+
import { InlineEditCell } from './Datagrid/addons/InlineEdit/InlineEditCell';
|
|
14
|
+
var blockClass = "".concat(pkg.prefix, "--datagrid");
|
|
15
|
+
|
|
16
|
+
var useInlineEdit = function useInlineEdit(hooks) {
|
|
17
|
+
var addInlineEdit = function addInlineEdit(props, _ref) {
|
|
18
|
+
var _cell$column, _cell$column$inlineEd, _instance$columns$fil;
|
|
19
|
+
|
|
20
|
+
var cell = _ref.cell,
|
|
21
|
+
instance = _ref.instance;
|
|
22
|
+
var columnInlineEditConfig = cell.column.inlineEdit;
|
|
23
|
+
var inlineEditType = (_cell$column = cell.column) === null || _cell$column === void 0 ? void 0 : (_cell$column$inlineEd = _cell$column.inlineEdit) === null || _cell$column$inlineEd === void 0 ? void 0 : _cell$column$inlineEd.type;
|
|
24
|
+
var totalInlineEditColumns = (_instance$columns$fil = instance.columns.filter(function (item) {
|
|
25
|
+
return item.inlineEdit;
|
|
26
|
+
})) === null || _instance$columns$fil === void 0 ? void 0 : _instance$columns$fil.length;
|
|
27
|
+
|
|
28
|
+
var renderInlineEditComponent = function renderInlineEditComponent(type) {
|
|
29
|
+
return /*#__PURE__*/React.createElement(InlineEditCell, {
|
|
30
|
+
config: columnInlineEditConfig,
|
|
31
|
+
tabIndex: -1,
|
|
32
|
+
value: cell.value,
|
|
33
|
+
cell: cell,
|
|
34
|
+
instance: instance,
|
|
35
|
+
totalInlineEditColumns: totalInlineEditColumns,
|
|
36
|
+
type: type
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
if (cell.column.id === 'spacer') {
|
|
41
|
+
return [props, {
|
|
42
|
+
className: cx("".concat(blockClass, "__cell"), "".concat(blockClass, "__cell--spacer"))
|
|
43
|
+
}];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return [props, {
|
|
47
|
+
className: cx("".concat(blockClass, "__cell"), _defineProperty({}, "".concat(blockClass, "__cell-inline-edit"), true)),
|
|
48
|
+
role: 'gridcell',
|
|
49
|
+
children: /*#__PURE__*/React.createElement(React.Fragment, null, inlineEditType === 'text' && renderInlineEditComponent(inlineEditType), inlineEditType === 'number' && renderInlineEditComponent(inlineEditType), inlineEditType === 'selection' && renderInlineEditComponent(inlineEditType), inlineEditType === 'date' && renderInlineEditComponent(inlineEditType), !inlineEditType && /*#__PURE__*/React.createElement(InlineEditCell, {
|
|
50
|
+
config: columnInlineEditConfig,
|
|
51
|
+
tabIndex: -1,
|
|
52
|
+
value: cell.value,
|
|
53
|
+
cell: cell,
|
|
54
|
+
instance: instance,
|
|
55
|
+
disabled: true,
|
|
56
|
+
nonEditCell: true,
|
|
57
|
+
totalInlineEditColumns: totalInlineEditColumns,
|
|
58
|
+
type: "text"
|
|
59
|
+
}))
|
|
60
|
+
}];
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
hooks.getCellProps.push(addInlineEdit);
|
|
64
|
+
hooks.useInstance.push(function (instance) {
|
|
65
|
+
Object.assign(instance, {
|
|
66
|
+
withInlineEdit: true
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
export default useInlineEdit;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
+
|
|
4
|
+
/* eslint-disable react/prop-types */
|
|
5
|
+
|
|
6
|
+
/*
|
|
7
|
+
* Licensed Materials - Property of IBM
|
|
8
|
+
* 5724-Q36
|
|
9
|
+
* (c) Copyright IBM Corp. 2020
|
|
10
|
+
* US Government Users Restricted Rights - Use, duplication or disclosure
|
|
11
|
+
* restricted by GSA ADP Schedule Contract with IBM Corp.
|
|
12
|
+
*/
|
|
13
|
+
import React from 'react';
|
|
14
|
+
import { ChevronRight16 } from '@carbon/icons-react';
|
|
15
|
+
import cx from 'classnames';
|
|
16
|
+
import { pkg } from '../../settings';
|
|
17
|
+
var blockClass = "".concat(pkg.prefix, "--datagrid");
|
|
18
|
+
|
|
19
|
+
var useNestedRowExpander = function useNestedRowExpander(hooks) {
|
|
20
|
+
var visibleColumns = function visibleColumns(columns) {
|
|
21
|
+
var expanderColumn = {
|
|
22
|
+
id: 'expander',
|
|
23
|
+
Cell: function Cell(_ref) {
|
|
24
|
+
var _cx;
|
|
25
|
+
|
|
26
|
+
var row = _ref.row;
|
|
27
|
+
return row.canExpand && /*#__PURE__*/React.createElement("span", row.getToggleRowExpandedProps(), /*#__PURE__*/React.createElement(ChevronRight16, {
|
|
28
|
+
className: cx("".concat(blockClass, "__expander-icon"), (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__expander-icon--not-open"), !row.isExpanded), _defineProperty(_cx, "".concat(blockClass, "__expander-icon--open"), row.isExpanded), _cx))
|
|
29
|
+
}));
|
|
30
|
+
},
|
|
31
|
+
width: 48,
|
|
32
|
+
disableResizing: true,
|
|
33
|
+
disableSortBy: true,
|
|
34
|
+
Header: ''
|
|
35
|
+
};
|
|
36
|
+
return [expanderColumn].concat(_toConsumableArray(columns));
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
hooks.visibleColumns.push(visibleColumns);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export default useNestedRowExpander;
|