@mui/x-data-grid-pro 5.15.3 → 5.17.1
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/CHANGELOG.md +150 -1
- package/DataGridPro/DataGridPro.js +19 -0
- package/DataGridPro/useDataGridProComponent.js +8 -1
- package/DataGridPro/useDataGridProProps.js +2 -1
- package/components/DataGridProColumnHeaders.js +25 -13
- package/components/DataGridProVirtualScroller.js +18 -15
- package/components/GridDetailPanelToggleCell.js +2 -1
- package/components/GridTreeDataGroupingCell.js +2 -1
- package/hooks/features/columnReorder/useGridColumnReorder.js +95 -3
- package/hooks/features/columnResize/useGridColumnResize.js +10 -7
- package/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +15 -0
- package/hooks/features/infiniteLoader/useGridInfiniteLoader.d.ts +1 -1
- package/hooks/features/infiniteLoader/useGridInfiniteLoader.js +4 -4
- package/hooks/features/lazyLoader/useGridLazyLoader.d.ts +10 -0
- package/hooks/features/lazyLoader/useGridLazyLoader.js +178 -0
- package/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +5 -0
- package/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.js +32 -0
- package/hooks/features/rowPinning/useGridRowPinningPreProcessors.d.ts +4 -4
- package/hooks/features/treeData/gridTreeDataUtils.d.ts +3 -1
- package/hooks/features/treeData/gridTreeDataUtils.js +1 -1
- package/hooks/features/treeData/useGridTreeDataPreProcessors.js +2 -1
- package/index.js +1 -1
- package/legacy/DataGridPro/DataGridPro.js +19 -0
- package/legacy/DataGridPro/useDataGridProComponent.js +8 -1
- package/legacy/DataGridPro/useDataGridProProps.js +2 -1
- package/legacy/components/DataGridProColumnHeaders.js +25 -13
- package/legacy/components/DataGridProVirtualScroller.js +18 -15
- package/legacy/components/GridDetailPanelToggleCell.js +2 -1
- package/legacy/components/GridTreeDataGroupingCell.js +2 -1
- package/legacy/hooks/features/columnReorder/useGridColumnReorder.js +99 -3
- package/legacy/hooks/features/columnResize/useGridColumnResize.js +11 -7
- package/legacy/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +15 -0
- package/legacy/hooks/features/infiniteLoader/useGridInfiniteLoader.js +4 -4
- package/legacy/hooks/features/lazyLoader/useGridLazyLoader.js +185 -0
- package/legacy/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.js +35 -0
- package/legacy/hooks/features/treeData/gridTreeDataUtils.js +1 -1
- package/legacy/hooks/features/treeData/useGridTreeDataPreProcessors.js +2 -1
- package/legacy/index.js +1 -1
- package/legacy/models/gridFetchRowsParams.js +1 -0
- package/legacy/models/index.js +2 -1
- package/legacy/utils/domUtils.js +5 -0
- package/legacy/utils/releaseInfo.js +1 -1
- package/models/dataGridProProps.d.ts +22 -1
- package/models/gridFetchRowsParams.d.ts +22 -0
- package/models/gridFetchRowsParams.js +1 -0
- package/models/index.d.ts +1 -0
- package/models/index.js +2 -1
- package/modern/DataGridPro/DataGridPro.js +19 -0
- package/modern/DataGridPro/useDataGridProComponent.js +8 -1
- package/modern/DataGridPro/useDataGridProProps.js +2 -1
- package/modern/components/DataGridProColumnHeaders.js +25 -13
- package/modern/components/DataGridProVirtualScroller.js +18 -15
- package/modern/components/GridDetailPanelToggleCell.js +2 -1
- package/modern/components/GridTreeDataGroupingCell.js +2 -1
- package/modern/hooks/features/columnReorder/useGridColumnReorder.js +83 -3
- package/modern/hooks/features/columnResize/useGridColumnResize.js +5 -2
- package/modern/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +15 -0
- package/modern/hooks/features/infiniteLoader/useGridInfiniteLoader.js +4 -4
- package/modern/hooks/features/lazyLoader/useGridLazyLoader.js +176 -0
- package/modern/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.js +30 -0
- package/modern/hooks/features/treeData/gridTreeDataUtils.js +1 -1
- package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.js +2 -1
- package/modern/index.js +1 -1
- package/modern/models/gridFetchRowsParams.js +1 -0
- package/modern/models/index.js +2 -1
- package/modern/utils/domUtils.js +3 -0
- package/modern/utils/releaseInfo.js +1 -1
- package/node/DataGridPro/DataGridPro.js +19 -0
- package/node/DataGridPro/useDataGridProComponent.js +9 -0
- package/node/DataGridPro/useDataGridProProps.js +1 -0
- package/node/components/DataGridProColumnHeaders.js +25 -12
- package/node/components/DataGridProVirtualScroller.js +18 -15
- package/node/components/GridDetailPanelToggleCell.js +2 -1
- package/node/components/GridTreeDataGroupingCell.js +2 -1
- package/node/hooks/features/columnReorder/useGridColumnReorder.js +95 -3
- package/node/hooks/features/columnResize/useGridColumnResize.js +9 -6
- package/node/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +16 -0
- package/node/hooks/features/infiniteLoader/useGridInfiniteLoader.js +3 -3
- package/node/hooks/features/lazyLoader/useGridLazyLoader.js +193 -0
- package/node/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.js +52 -0
- package/node/hooks/features/treeData/gridTreeDataUtils.js +1 -1
- package/node/hooks/features/treeData/useGridTreeDataPreProcessors.js +2 -1
- package/node/index.js +1 -1
- package/node/models/gridFetchRowsParams.js +5 -0
- package/node/models/index.js +13 -0
- package/node/utils/domUtils.js +7 -0
- package/node/utils/releaseInfo.js +1 -1
- package/package.json +5 -5
- package/typeOverloads/modules.d.ts +7 -1
- package/utils/domUtils.d.ts +1 -0
- package/utils/domUtils.js +5 -0
- package/utils/releaseInfo.js +1 -1
|
@@ -287,17 +287,20 @@ var DataGridProVirtualScroller = /*#__PURE__*/React.forwardRef(function DataGrid
|
|
|
287
287
|
var detailPanels = getDetailPanels();
|
|
288
288
|
var topPinnedRows = getRows({
|
|
289
289
|
renderContext: renderContext,
|
|
290
|
-
rows: topPinnedRowsData
|
|
290
|
+
rows: topPinnedRowsData,
|
|
291
|
+
position: 'center'
|
|
291
292
|
});
|
|
292
293
|
var pinnedRowsHeight = calculatePinnedRowsHeight(apiRef);
|
|
293
294
|
var mainRows = getRows({
|
|
294
295
|
renderContext: renderContext,
|
|
295
|
-
rowIndexOffset: topPinnedRowsData.length
|
|
296
|
+
rowIndexOffset: topPinnedRowsData.length,
|
|
297
|
+
position: 'center'
|
|
296
298
|
});
|
|
297
299
|
var bottomPinnedRows = getRows({
|
|
298
300
|
renderContext: renderContext,
|
|
299
301
|
rows: bottomPinnedRowsData,
|
|
300
|
-
rowIndexOffset: topPinnedRowsData.length + (mainRows ? mainRows.length : 0)
|
|
302
|
+
rowIndexOffset: topPinnedRowsData.length + (mainRows ? mainRows.length : 0),
|
|
303
|
+
position: 'center'
|
|
301
304
|
});
|
|
302
305
|
var contentProps = getContentProps();
|
|
303
306
|
var pinnedColumnsStyle = {
|
|
@@ -329,8 +332,8 @@ var DataGridProVirtualScroller = /*#__PURE__*/React.forwardRef(function DataGrid
|
|
|
329
332
|
minFirstColumn: leftRenderContext.firstColumnIndex,
|
|
330
333
|
maxLastColumn: leftRenderContext.lastColumnIndex,
|
|
331
334
|
availableSpace: 0,
|
|
332
|
-
|
|
333
|
-
|
|
335
|
+
rows: topPinnedRowsData,
|
|
336
|
+
position: 'left'
|
|
334
337
|
})
|
|
335
338
|
}), /*#__PURE__*/_jsx(VirtualScrollerPinnedRowsRenderZone, {
|
|
336
339
|
className: classes.pinnedRowsRenderZone,
|
|
@@ -346,9 +349,9 @@ var DataGridProVirtualScroller = /*#__PURE__*/React.forwardRef(function DataGrid
|
|
|
346
349
|
renderContext: rightRenderContext,
|
|
347
350
|
minFirstColumn: rightRenderContext.firstColumnIndex,
|
|
348
351
|
maxLastColumn: rightRenderContext.lastColumnIndex,
|
|
349
|
-
ignoreAutoHeight: true,
|
|
350
352
|
availableSpace: 0,
|
|
351
|
-
rows: topPinnedRowsData
|
|
353
|
+
rows: topPinnedRowsData,
|
|
354
|
+
position: 'right'
|
|
352
355
|
})
|
|
353
356
|
})]
|
|
354
357
|
}) : null, /*#__PURE__*/_jsxs(GridVirtualScrollerContent, _extends({}, contentProps, {
|
|
@@ -364,8 +367,8 @@ var DataGridProVirtualScroller = /*#__PURE__*/React.forwardRef(function DataGrid
|
|
|
364
367
|
minFirstColumn: leftRenderContext.firstColumnIndex,
|
|
365
368
|
maxLastColumn: leftRenderContext.lastColumnIndex,
|
|
366
369
|
availableSpace: 0,
|
|
367
|
-
|
|
368
|
-
|
|
370
|
+
rowIndexOffset: topPinnedRowsData.length,
|
|
371
|
+
position: 'left'
|
|
369
372
|
})
|
|
370
373
|
}), /*#__PURE__*/_jsx(GridVirtualScrollerRenderZone, _extends({}, getRenderZoneProps(), {
|
|
371
374
|
children: mainRows
|
|
@@ -381,8 +384,8 @@ var DataGridProVirtualScroller = /*#__PURE__*/React.forwardRef(function DataGrid
|
|
|
381
384
|
minFirstColumn: rightRenderContext.firstColumnIndex,
|
|
382
385
|
maxLastColumn: rightRenderContext.lastColumnIndex,
|
|
383
386
|
availableSpace: 0,
|
|
384
|
-
|
|
385
|
-
|
|
387
|
+
rowIndexOffset: topPinnedRowsData.length,
|
|
388
|
+
position: 'right'
|
|
386
389
|
})
|
|
387
390
|
}), detailPanels.length > 0 && /*#__PURE__*/_jsx(VirtualScrollerDetailPanels, {
|
|
388
391
|
className: classes.detailPanels,
|
|
@@ -408,9 +411,9 @@ var DataGridProVirtualScroller = /*#__PURE__*/React.forwardRef(function DataGrid
|
|
|
408
411
|
minFirstColumn: leftRenderContext.firstColumnIndex,
|
|
409
412
|
maxLastColumn: leftRenderContext.lastColumnIndex,
|
|
410
413
|
availableSpace: 0,
|
|
411
|
-
ignoreAutoHeight: true,
|
|
412
414
|
rows: bottomPinnedRowsData,
|
|
413
|
-
rowIndexOffset: topPinnedRowsData.length + (mainRows ? mainRows.length : 0)
|
|
415
|
+
rowIndexOffset: topPinnedRowsData.length + (mainRows ? mainRows.length : 0),
|
|
416
|
+
position: 'left'
|
|
414
417
|
})
|
|
415
418
|
}), /*#__PURE__*/_jsx(VirtualScrollerPinnedRowsRenderZone, {
|
|
416
419
|
className: classes.pinnedRowsRenderZone,
|
|
@@ -427,9 +430,9 @@ var DataGridProVirtualScroller = /*#__PURE__*/React.forwardRef(function DataGrid
|
|
|
427
430
|
minFirstColumn: rightRenderContext.firstColumnIndex,
|
|
428
431
|
maxLastColumn: rightRenderContext.lastColumnIndex,
|
|
429
432
|
availableSpace: 0,
|
|
430
|
-
ignoreAutoHeight: true,
|
|
431
433
|
rows: bottomPinnedRowsData,
|
|
432
|
-
rowIndexOffset: topPinnedRowsData.length + (mainRows ? mainRows.length : 0)
|
|
434
|
+
rowIndexOffset: topPinnedRowsData.length + (mainRows ? mainRows.length : 0),
|
|
435
|
+
position: 'right'
|
|
433
436
|
})
|
|
434
437
|
})]
|
|
435
438
|
}) : null]
|
|
@@ -125,7 +125,8 @@ process.env.NODE_ENV !== "production" ? GridDetailPanelToggleCell.propTypes = {
|
|
|
125
125
|
tabIndex: PropTypes.oneOf([-1, 0]).isRequired,
|
|
126
126
|
|
|
127
127
|
/**
|
|
128
|
-
* The cell value
|
|
128
|
+
* The cell value.
|
|
129
|
+
* If the column has `valueGetter`, use `params.row` to directly access the fields.
|
|
129
130
|
*/
|
|
130
131
|
value: PropTypes.any
|
|
131
132
|
} : void 0;
|
|
@@ -160,7 +160,8 @@ process.env.NODE_ENV !== "production" ? GridTreeDataGroupingCell.propTypes = {
|
|
|
160
160
|
tabIndex: PropTypes.oneOf([-1, 0]).isRequired,
|
|
161
161
|
|
|
162
162
|
/**
|
|
163
|
-
* The cell value
|
|
163
|
+
* The cell value.
|
|
164
|
+
* If the column has `valueGetter`, use `params.row` to directly access the fields.
|
|
164
165
|
*/
|
|
165
166
|
value: PropTypes.any
|
|
166
167
|
} : void 0;
|
|
@@ -41,6 +41,7 @@ export var useGridColumnReorder = function useGridColumnReorder(apiRef, props) {
|
|
|
41
41
|
y: 0
|
|
42
42
|
});
|
|
43
43
|
var originColumnIndex = React.useRef(null);
|
|
44
|
+
var forbiddenIndexes = React.useRef({});
|
|
44
45
|
var removeDnDStylesTimeout = React.useRef();
|
|
45
46
|
var ownerState = {
|
|
46
47
|
classes: props.classes
|
|
@@ -74,6 +75,73 @@ export var useGridColumnReorder = function useGridColumnReorder(apiRef, props) {
|
|
|
74
75
|
dragColNode.current.classList.remove(classes.columnHeaderDragging);
|
|
75
76
|
});
|
|
76
77
|
originColumnIndex.current = apiRef.current.getColumnIndex(params.field, false);
|
|
78
|
+
var draggingColumnGroupPath = apiRef.current.unstable_getColumnGroupPath(params.field);
|
|
79
|
+
var columnIndex = originColumnIndex.current;
|
|
80
|
+
var allColumns = apiRef.current.getAllColumns();
|
|
81
|
+
var groupsLookup = apiRef.current.unstable_getAllGroupDetails(); // The limitingGroupId is the id of the group from which the dragged column should not escape
|
|
82
|
+
|
|
83
|
+
var limitingGroupId = null;
|
|
84
|
+
draggingColumnGroupPath.forEach(function (groupId) {
|
|
85
|
+
var _groupsLookup$groupId;
|
|
86
|
+
|
|
87
|
+
if (!((_groupsLookup$groupId = groupsLookup[groupId]) != null && _groupsLookup$groupId.freeReordering)) {
|
|
88
|
+
var _allColumns$groupPath, _allColumns$groupPath2;
|
|
89
|
+
|
|
90
|
+
// Only consider group that are made of more than one column
|
|
91
|
+
if (columnIndex > 0 && (_allColumns$groupPath = allColumns[columnIndex - 1].groupPath) != null && _allColumns$groupPath.includes(groupId)) {
|
|
92
|
+
limitingGroupId = groupId;
|
|
93
|
+
} else if (columnIndex + 1 < allColumns.length && (_allColumns$groupPath2 = allColumns[columnIndex + 1].groupPath) != null && _allColumns$groupPath2.includes(groupId)) {
|
|
94
|
+
limitingGroupId = groupId;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
forbiddenIndexes.current = {};
|
|
99
|
+
|
|
100
|
+
var _loop = function _loop(indexToForbid) {
|
|
101
|
+
var leftIndex = indexToForbid <= columnIndex ? indexToForbid - 1 : indexToForbid;
|
|
102
|
+
var rightIndex = indexToForbid < columnIndex ? indexToForbid : indexToForbid + 1;
|
|
103
|
+
|
|
104
|
+
if (limitingGroupId !== null) {
|
|
105
|
+
var _allColumns$leftIndex, _allColumns$rightInde;
|
|
106
|
+
|
|
107
|
+
// verify this indexToForbid will be linked to the limiting group. Otherwise forbid it
|
|
108
|
+
var allowIndex = false;
|
|
109
|
+
|
|
110
|
+
if (leftIndex >= 0 && (_allColumns$leftIndex = allColumns[leftIndex].groupPath) != null && _allColumns$leftIndex.includes(limitingGroupId)) {
|
|
111
|
+
allowIndex = true;
|
|
112
|
+
} else if (rightIndex < allColumns.length && (_allColumns$rightInde = allColumns[rightIndex].groupPath) != null && _allColumns$rightInde.includes(limitingGroupId)) {
|
|
113
|
+
allowIndex = true;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (!allowIndex) {
|
|
117
|
+
forbiddenIndexes.current[indexToForbid] = true;
|
|
118
|
+
}
|
|
119
|
+
} // Verify we are not splitting another group
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
if (leftIndex >= 0 && rightIndex < allColumns.length) {
|
|
123
|
+
var _allColumns$rightInde2, _allColumns$rightInde3;
|
|
124
|
+
|
|
125
|
+
(_allColumns$rightInde2 = allColumns[rightIndex]) == null ? void 0 : (_allColumns$rightInde3 = _allColumns$rightInde2.groupPath) == null ? void 0 : _allColumns$rightInde3.forEach(function (groupId) {
|
|
126
|
+
var _allColumns$leftIndex2;
|
|
127
|
+
|
|
128
|
+
if ((_allColumns$leftIndex2 = allColumns[leftIndex].groupPath) != null && _allColumns$leftIndex2.includes(groupId)) {
|
|
129
|
+
if (!draggingColumnGroupPath.includes(groupId)) {
|
|
130
|
+
var _groupsLookup$groupId2;
|
|
131
|
+
|
|
132
|
+
// moving here split the group groupId in two distincts chunks
|
|
133
|
+
if (!((_groupsLookup$groupId2 = groupsLookup[groupId]) != null && _groupsLookup$groupId2.freeReordering)) {
|
|
134
|
+
forbiddenIndexes.current[indexToForbid] = true;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
for (var indexToForbid = 0; indexToForbid < allColumns.length; indexToForbid += 1) {
|
|
143
|
+
_loop(indexToForbid);
|
|
144
|
+
}
|
|
77
145
|
}, [props.disableColumnReorder, classes.columnHeaderDragging, logger, apiRef]);
|
|
78
146
|
var handleDragEnter = React.useCallback(function (params, event) {
|
|
79
147
|
event.preventDefault(); // Prevent drag events propagation.
|
|
@@ -104,19 +172,47 @@ export var useGridColumnReorder = function useGridColumnReorder(apiRef, props) {
|
|
|
104
172
|
var targetCol = apiRef.current.getColumn(params.field);
|
|
105
173
|
var dragColIndex = apiRef.current.getColumnIndex(dragColField, false);
|
|
106
174
|
var visibleColumns = apiRef.current.getVisibleColumns();
|
|
175
|
+
var allColumns = apiRef.current.getAllColumns();
|
|
107
176
|
var cursorMoveDirectionX = getCursorMoveDirectionX(cursorPosition.current, coordinates);
|
|
108
177
|
var hasMovedLeft = cursorMoveDirectionX === CURSOR_MOVE_DIRECTION_LEFT && targetColIndex < dragColIndex;
|
|
109
178
|
var hasMovedRight = cursorMoveDirectionX === CURSOR_MOVE_DIRECTION_RIGHT && dragColIndex < targetColIndex;
|
|
110
179
|
|
|
111
180
|
if (hasMovedLeft || hasMovedRight) {
|
|
112
181
|
var canBeReordered;
|
|
182
|
+
var indexOffsetInHiddenColumns = 0;
|
|
113
183
|
|
|
114
184
|
if (!targetCol.disableReorder) {
|
|
115
185
|
canBeReordered = true;
|
|
116
186
|
} else if (hasMovedLeft) {
|
|
117
|
-
canBeReordered =
|
|
187
|
+
canBeReordered = targetColVisibleIndex > 0 && !visibleColumns[targetColVisibleIndex - 1].disableReorder;
|
|
118
188
|
} else {
|
|
119
|
-
canBeReordered =
|
|
189
|
+
canBeReordered = targetColVisibleIndex < visibleColumns.length - 1 && !visibleColumns[targetColVisibleIndex + 1].disableReorder;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
if (forbiddenIndexes.current[targetColIndex]) {
|
|
193
|
+
var nextVisibleColumnField;
|
|
194
|
+
var indexWithOffset = targetColIndex + indexOffsetInHiddenColumns;
|
|
195
|
+
|
|
196
|
+
if (hasMovedLeft) {
|
|
197
|
+
nextVisibleColumnField = targetColVisibleIndex > 0 ? visibleColumns[targetColVisibleIndex - 1].field : null;
|
|
198
|
+
|
|
199
|
+
while (indexWithOffset > 0 && allColumns[indexWithOffset].field !== nextVisibleColumnField && forbiddenIndexes.current[indexWithOffset]) {
|
|
200
|
+
indexOffsetInHiddenColumns -= 1;
|
|
201
|
+
indexWithOffset = targetColIndex + indexOffsetInHiddenColumns;
|
|
202
|
+
}
|
|
203
|
+
} else {
|
|
204
|
+
nextVisibleColumnField = targetColVisibleIndex + 1 < visibleColumns.length ? visibleColumns[targetColVisibleIndex + 1].field : null;
|
|
205
|
+
|
|
206
|
+
while (indexWithOffset < allColumns.length - 1 && allColumns[indexWithOffset].field !== nextVisibleColumnField && forbiddenIndexes.current[indexWithOffset]) {
|
|
207
|
+
indexOffsetInHiddenColumns += 1;
|
|
208
|
+
indexWithOffset = targetColIndex + indexOffsetInHiddenColumns;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
if (forbiddenIndexes.current[indexWithOffset] || allColumns[indexWithOffset].field === nextVisibleColumnField) {
|
|
213
|
+
// If we ended up on a visible column, or a forbidden one, we can not do the reorder
|
|
214
|
+
canBeReordered = false;
|
|
215
|
+
}
|
|
120
216
|
}
|
|
121
217
|
|
|
122
218
|
var canBeReorderedProcessed = apiRef.current.unstable_applyPipeProcessors('canBeReordered', canBeReordered, {
|
|
@@ -124,7 +220,7 @@ export var useGridColumnReorder = function useGridColumnReorder(apiRef, props) {
|
|
|
124
220
|
});
|
|
125
221
|
|
|
126
222
|
if (canBeReorderedProcessed) {
|
|
127
|
-
apiRef.current.setColumnIndex(dragColField, targetColIndex);
|
|
223
|
+
apiRef.current.setColumnIndex(dragColField, targetColIndex + indexOffsetInHiddenColumns);
|
|
128
224
|
}
|
|
129
225
|
}
|
|
130
226
|
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
1
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
3
|
import * as React from 'react';
|
|
3
4
|
import { ownerDocument, useEventCallback } from '@mui/material/utils';
|
|
4
5
|
import { gridClasses, useGridApiEventHandler, useGridApiOptionHandler, useGridNativeEventListener, useGridLogger } from '@mui/x-data-grid';
|
|
5
6
|
import { clamp, findParentElementFromClassName } from '@mui/x-data-grid/internals';
|
|
6
7
|
import { useTheme } from '@mui/material/styles';
|
|
7
|
-
import { findGridCellElementsFromCol, getFieldFromHeaderElem, findHeaderElementFromField } from '../../../utils/domUtils';
|
|
8
|
+
import { findGridCellElementsFromCol, getFieldFromHeaderElem, findHeaderElementFromField, findGroupHeaderElementsFromField } from '../../../utils/domUtils';
|
|
8
9
|
// TODO: remove support for Safari < 13.
|
|
9
10
|
// https://caniuse.com/#search=touch-action
|
|
10
11
|
//
|
|
@@ -106,6 +107,7 @@ export var useGridColumnResize = function useGridColumnResize(apiRef, props) {
|
|
|
106
107
|
var logger = useGridLogger(apiRef, 'useGridColumnResize');
|
|
107
108
|
var colDefRef = React.useRef();
|
|
108
109
|
var colElementRef = React.useRef();
|
|
110
|
+
var colGroupingElementRef = React.useRef();
|
|
109
111
|
var colCellElementsRef = React.useRef();
|
|
110
112
|
var theme = useTheme(); // To improve accessibility, the separator has padding on both sides.
|
|
111
113
|
// Clicking inside the padding area should be treated as a click in the separator.
|
|
@@ -126,7 +128,7 @@ export var useGridColumnResize = function useGridColumnResize(apiRef, props) {
|
|
|
126
128
|
colElementRef.current.style.width = "".concat(newWidth, "px");
|
|
127
129
|
colElementRef.current.style.minWidth = "".concat(newWidth, "px");
|
|
128
130
|
colElementRef.current.style.maxWidth = "".concat(newWidth, "px");
|
|
129
|
-
colCellElementsRef.current.forEach(function (element) {
|
|
131
|
+
[].concat(_toConsumableArray(colCellElementsRef.current), _toConsumableArray(colGroupingElementRef.current)).forEach(function (element) {
|
|
130
132
|
var div = element;
|
|
131
133
|
var finalWidth;
|
|
132
134
|
|
|
@@ -182,7 +184,7 @@ export var useGridColumnResize = function useGridColumnResize(apiRef, props) {
|
|
|
182
184
|
apiRef.current.publishEvent('columnResize', params, nativeEvent);
|
|
183
185
|
});
|
|
184
186
|
var handleColumnResizeMouseDown = useEventCallback(function (_ref, event) {
|
|
185
|
-
var _apiRef$current$colum;
|
|
187
|
+
var _apiRef$current$colum, _apiRef$current$colum2;
|
|
186
188
|
|
|
187
189
|
var colDef = _ref.colDef;
|
|
188
190
|
|
|
@@ -204,6 +206,7 @@ export var useGridColumnResize = function useGridColumnResize(apiRef, props) {
|
|
|
204
206
|
}, event);
|
|
205
207
|
colDefRef.current = colDef;
|
|
206
208
|
colElementRef.current = (_apiRef$current$colum = apiRef.current.columnHeadersContainerElementRef) == null ? void 0 : _apiRef$current$colum.current.querySelector("[data-field=\"".concat(colDef.field, "\"]"));
|
|
209
|
+
colGroupingElementRef.current = findGroupHeaderElementsFromField((_apiRef$current$colum2 = apiRef.current.columnHeadersContainerElementRef) == null ? void 0 : _apiRef$current$colum2.current, colDef.field);
|
|
207
210
|
colCellElementsRef.current = findGridCellElementsFromCol(colElementRef.current, apiRef.current);
|
|
208
211
|
var doc = ownerDocument(apiRef.current.rootElementRef.current);
|
|
209
212
|
doc.body.style.cursor = 'col-resize';
|
|
@@ -252,7 +255,7 @@ export var useGridColumnResize = function useGridColumnResize(apiRef, props) {
|
|
|
252
255
|
apiRef.current.publishEvent('columnResize', params, nativeEvent);
|
|
253
256
|
});
|
|
254
257
|
var handleTouchStart = useEventCallback(function (event) {
|
|
255
|
-
var _apiRef$current$
|
|
258
|
+
var _apiRef$current$colum3, _apiRef$current$colum4;
|
|
256
259
|
|
|
257
260
|
var cellSeparator = findParentElementFromClassName(event.target, gridClasses['columnSeparator--resizable']); // Let the event bubble if the target is not a col separator
|
|
258
261
|
|
|
@@ -275,12 +278,13 @@ export var useGridColumnResize = function useGridColumnResize(apiRef, props) {
|
|
|
275
278
|
colElementRef.current = findParentElementFromClassName(event.target, gridClasses.columnHeader);
|
|
276
279
|
var field = getFieldFromHeaderElem(colElementRef.current);
|
|
277
280
|
var colDef = apiRef.current.getColumn(field);
|
|
281
|
+
colGroupingElementRef.current = findGroupHeaderElementsFromField((_apiRef$current$colum3 = apiRef.current.columnHeadersContainerElementRef) == null ? void 0 : _apiRef$current$colum3.current, field);
|
|
278
282
|
logger.debug("Start Resize on col ".concat(colDef.field));
|
|
279
283
|
apiRef.current.publishEvent('columnResizeStart', {
|
|
280
284
|
field: field
|
|
281
285
|
}, event);
|
|
282
286
|
colDefRef.current = colDef;
|
|
283
|
-
colElementRef.current = findHeaderElementFromField((_apiRef$current$
|
|
287
|
+
colElementRef.current = findHeaderElementFromField((_apiRef$current$colum4 = apiRef.current.columnHeadersElementRef) == null ? void 0 : _apiRef$current$colum4.current, colDef.field);
|
|
284
288
|
colCellElementsRef.current = findGridCellElementsFromCol(colElementRef.current, apiRef.current);
|
|
285
289
|
resizeDirection.current = getResizeDirection(event.target, theme.direction);
|
|
286
290
|
initialOffsetToSeparator.current = computeOffsetToSeparator(touch.clientX, colElementRef.current.getBoundingClientRect(), resizeDirection.current);
|
|
@@ -324,9 +328,9 @@ export var useGridColumnResize = function useGridColumnResize(apiRef, props) {
|
|
|
324
328
|
};
|
|
325
329
|
}, [apiRef, handleTouchStart, stopListening]);
|
|
326
330
|
useGridNativeEventListener(apiRef, function () {
|
|
327
|
-
var _apiRef$current$
|
|
331
|
+
var _apiRef$current$colum5;
|
|
328
332
|
|
|
329
|
-
return (_apiRef$current$
|
|
333
|
+
return (_apiRef$current$colum5 = apiRef.current.columnHeadersElementRef) == null ? void 0 : _apiRef$current$colum5.current;
|
|
330
334
|
}, 'touchstart', handleTouchStart, {
|
|
331
335
|
passive: doesSupportTouchActionNone()
|
|
332
336
|
});
|
|
@@ -3,6 +3,7 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { useGridRegisterPipeProcessor } from '@mui/x-data-grid/internals';
|
|
5
5
|
import { GRID_DETAIL_PANEL_TOGGLE_FIELD, GRID_DETAIL_PANEL_TOGGLE_COL_DEF } from './gridDetailPanelToggleColDef';
|
|
6
|
+
import { gridDetailPanelExpandedRowIdsSelector } from './gridDetailPanelSelector';
|
|
6
7
|
export var useGridDetailPanelPreProcessors = function useGridDetailPanelPreProcessors(apiRef, props) {
|
|
7
8
|
var addToggleColumn = React.useCallback(function (columnsState) {
|
|
8
9
|
if (props.getDetailPanelContent == null) {
|
|
@@ -30,5 +31,19 @@ export var useGridDetailPanelPreProcessors = function useGridDetailPanelPreProce
|
|
|
30
31
|
});
|
|
31
32
|
return columnsState;
|
|
32
33
|
}, [apiRef, props.getDetailPanelContent]);
|
|
34
|
+
var addExpandedClassToRow = React.useCallback(function (classes, id) {
|
|
35
|
+
if (props.getDetailPanelContent == null) {
|
|
36
|
+
return classes;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
var expandedRowIds = gridDetailPanelExpandedRowIdsSelector(apiRef.current.state);
|
|
40
|
+
|
|
41
|
+
if (!expandedRowIds.includes(id)) {
|
|
42
|
+
return classes;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return [].concat(_toConsumableArray(classes), ['MuiDataGrid-row--detailPanelExpanded']);
|
|
46
|
+
}, [apiRef, props.getDetailPanelContent]);
|
|
33
47
|
useGridRegisterPipeProcessor(apiRef, 'hydrateColumns', addToggleColumn);
|
|
48
|
+
useGridRegisterPipeProcessor(apiRef, 'rowClassName', addExpandedClassToRow);
|
|
34
49
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { useGridSelector, useGridApiEventHandler, useGridApiOptionHandler, gridVisibleColumnDefinitionsSelector, gridRowsMetaSelector } from '@mui/x-data-grid';
|
|
2
|
+
import { useGridSelector, useGridApiEventHandler, useGridApiOptionHandler, gridVisibleColumnDefinitionsSelector, gridRowsMetaSelector, GridFeatureModeConstant } from '@mui/x-data-grid';
|
|
3
3
|
import { useGridVisibleRows } from '@mui/x-data-grid/internals';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -14,9 +14,9 @@ export var useGridInfiniteLoader = function useGridInfiniteLoader(apiRef, props)
|
|
|
14
14
|
var contentHeight = Math.max(rowsMeta.currentPageTotalHeight, 1);
|
|
15
15
|
var isInScrollBottomArea = React.useRef(false);
|
|
16
16
|
var handleRowsScrollEnd = React.useCallback(function (scrollPosition) {
|
|
17
|
-
var dimensions = apiRef.current.getRootDimensions();
|
|
17
|
+
var dimensions = apiRef.current.getRootDimensions(); // Prevent the infite loading working in combination with lazy loading
|
|
18
18
|
|
|
19
|
-
if (!dimensions) {
|
|
19
|
+
if (!dimensions || props.rowsLoadingMode !== GridFeatureModeConstant.client) {
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
22
|
|
|
@@ -36,7 +36,7 @@ export var useGridInfiniteLoader = function useGridInfiniteLoader(apiRef, props)
|
|
|
36
36
|
apiRef.current.publishEvent('rowsScrollEnd', rowScrollEndParam);
|
|
37
37
|
isInScrollBottomArea.current = true;
|
|
38
38
|
}
|
|
39
|
-
}, [contentHeight, props.scrollEndThreshold, visibleColumns, apiRef, currentPage.rows.length]);
|
|
39
|
+
}, [contentHeight, props.scrollEndThreshold, props.rowsLoadingMode, visibleColumns, apiRef, currentPage.rows.length]);
|
|
40
40
|
var handleGridScroll = React.useCallback(function (_ref) {
|
|
41
41
|
var left = _ref.left,
|
|
42
42
|
top = _ref.top;
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { useGridApiEventHandler, GridFeatureModeConstant, useGridSelector, gridSortModelSelector, gridFilterModelSelector, useGridApiOptionHandler } from '@mui/x-data-grid';
|
|
4
|
+
import { useGridVisibleRows, getRenderableIndexes } from '@mui/x-data-grid/internals';
|
|
5
|
+
|
|
6
|
+
function findSkeletonRowsSection(visibleRows, range) {
|
|
7
|
+
var firstRowIndex = range.firstRowIndex,
|
|
8
|
+
lastRowIndex = range.lastRowIndex;
|
|
9
|
+
var visibleRowsSection = visibleRows.slice(range.firstRowIndex, range.lastRowIndex);
|
|
10
|
+
var startIndex = 0;
|
|
11
|
+
var endIndex = visibleRowsSection.length - 1;
|
|
12
|
+
var isSkeletonSectionFound = false;
|
|
13
|
+
|
|
14
|
+
while (!isSkeletonSectionFound && firstRowIndex < lastRowIndex) {
|
|
15
|
+
if (!visibleRowsSection[startIndex].model && !visibleRowsSection[endIndex].model) {
|
|
16
|
+
isSkeletonSectionFound = true;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (visibleRowsSection[startIndex].model) {
|
|
20
|
+
startIndex += 1;
|
|
21
|
+
firstRowIndex += 1;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (visibleRowsSection[endIndex].model) {
|
|
25
|
+
endIndex -= 1;
|
|
26
|
+
lastRowIndex -= 1;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return isSkeletonSectionFound ? {
|
|
31
|
+
firstRowIndex: firstRowIndex,
|
|
32
|
+
lastRowIndex: lastRowIndex
|
|
33
|
+
} : undefined;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function isLazyLoadingDisabled(_ref) {
|
|
37
|
+
var lazyLoadingFeatureFlag = _ref.lazyLoadingFeatureFlag,
|
|
38
|
+
rowsLoadingMode = _ref.rowsLoadingMode,
|
|
39
|
+
gridDimensions = _ref.gridDimensions;
|
|
40
|
+
|
|
41
|
+
if (!lazyLoadingFeatureFlag || !gridDimensions) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (rowsLoadingMode !== GridFeatureModeConstant.server) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* @requires useGridRows (state)
|
|
53
|
+
* @requires useGridPagination (state)
|
|
54
|
+
* @requires useGridDimensions (method) - can be after
|
|
55
|
+
* @requires useGridScroll (method
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
export var useGridLazyLoader = function useGridLazyLoader(apiRef, props) {
|
|
60
|
+
var _props$experimentalFe;
|
|
61
|
+
|
|
62
|
+
var visibleRows = useGridVisibleRows(apiRef, props);
|
|
63
|
+
var sortModel = useGridSelector(apiRef, gridSortModelSelector);
|
|
64
|
+
var filterModel = useGridSelector(apiRef, gridFilterModelSelector);
|
|
65
|
+
var renderedRowsIntervalCache = React.useRef({
|
|
66
|
+
firstRowToRender: 0,
|
|
67
|
+
lastRowToRender: 0
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
var _ref2 = (_props$experimentalFe = props.experimentalFeatures) != null ? _props$experimentalFe : {},
|
|
71
|
+
lazyLoading = _ref2.lazyLoading;
|
|
72
|
+
|
|
73
|
+
var getCurrentIntervalToRender = React.useCallback(function () {
|
|
74
|
+
var currentRenderContext = apiRef.current.unstable_getRenderContext();
|
|
75
|
+
|
|
76
|
+
var _getRenderableIndexes = getRenderableIndexes({
|
|
77
|
+
firstIndex: currentRenderContext.firstRowIndex,
|
|
78
|
+
lastIndex: currentRenderContext.lastRowIndex,
|
|
79
|
+
minFirstIndex: 0,
|
|
80
|
+
maxLastIndex: visibleRows.rows.length,
|
|
81
|
+
buffer: props.rowBuffer
|
|
82
|
+
}),
|
|
83
|
+
_getRenderableIndexes2 = _slicedToArray(_getRenderableIndexes, 2),
|
|
84
|
+
firstRowToRender = _getRenderableIndexes2[0],
|
|
85
|
+
lastRowToRender = _getRenderableIndexes2[1];
|
|
86
|
+
|
|
87
|
+
return {
|
|
88
|
+
firstRowToRender: firstRowToRender,
|
|
89
|
+
lastRowToRender: lastRowToRender
|
|
90
|
+
};
|
|
91
|
+
}, [apiRef, props.rowBuffer, visibleRows.rows.length]);
|
|
92
|
+
var handleRenderedRowsIntervalChange = React.useCallback(function (params) {
|
|
93
|
+
var dimensions = apiRef.current.getRootDimensions();
|
|
94
|
+
|
|
95
|
+
if (isLazyLoadingDisabled({
|
|
96
|
+
lazyLoadingFeatureFlag: lazyLoading,
|
|
97
|
+
rowsLoadingMode: props.rowsLoadingMode,
|
|
98
|
+
gridDimensions: dimensions
|
|
99
|
+
})) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
var fetchRowsParams = {
|
|
104
|
+
firstRowToRender: params.firstRowToRender,
|
|
105
|
+
lastRowToRender: params.lastRowToRender,
|
|
106
|
+
sortModel: sortModel,
|
|
107
|
+
filterModel: filterModel
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
if (renderedRowsIntervalCache.current.firstRowToRender === params.firstRowToRender && renderedRowsIntervalCache.current.lastRowToRender === params.lastRowToRender) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (sortModel.length === 0 && filterModel.items.length === 0) {
|
|
115
|
+
var skeletonRowsSection = findSkeletonRowsSection(visibleRows.rows, {
|
|
116
|
+
firstRowIndex: params.firstRowToRender,
|
|
117
|
+
lastRowIndex: params.lastRowToRender
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
if (!skeletonRowsSection) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
fetchRowsParams.firstRowToRender = skeletonRowsSection.firstRowIndex;
|
|
125
|
+
fetchRowsParams.lastRowToRender = skeletonRowsSection.lastRowIndex;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
renderedRowsIntervalCache.current = params;
|
|
129
|
+
apiRef.current.publishEvent('fetchRows', fetchRowsParams);
|
|
130
|
+
}, [apiRef, props.rowsLoadingMode, sortModel, filterModel, visibleRows.rows, lazyLoading]);
|
|
131
|
+
var handleGridSortModelChange = React.useCallback(function (newSortModel) {
|
|
132
|
+
var dimensions = apiRef.current.getRootDimensions();
|
|
133
|
+
|
|
134
|
+
if (isLazyLoadingDisabled({
|
|
135
|
+
lazyLoadingFeatureFlag: lazyLoading,
|
|
136
|
+
rowsLoadingMode: props.rowsLoadingMode,
|
|
137
|
+
gridDimensions: dimensions
|
|
138
|
+
})) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
apiRef.current.unstable_requestPipeProcessorsApplication('hydrateRows');
|
|
143
|
+
|
|
144
|
+
var _getCurrentIntervalTo = getCurrentIntervalToRender(),
|
|
145
|
+
firstRowToRender = _getCurrentIntervalTo.firstRowToRender,
|
|
146
|
+
lastRowToRender = _getCurrentIntervalTo.lastRowToRender;
|
|
147
|
+
|
|
148
|
+
var fetchRowsParams = {
|
|
149
|
+
firstRowToRender: firstRowToRender,
|
|
150
|
+
lastRowToRender: lastRowToRender,
|
|
151
|
+
sortModel: newSortModel,
|
|
152
|
+
filterModel: filterModel
|
|
153
|
+
};
|
|
154
|
+
apiRef.current.publishEvent('fetchRows', fetchRowsParams);
|
|
155
|
+
}, [apiRef, props.rowsLoadingMode, filterModel, lazyLoading, getCurrentIntervalToRender]);
|
|
156
|
+
var handleGridFilterModelChange = React.useCallback(function (newFilterModel) {
|
|
157
|
+
var dimensions = apiRef.current.getRootDimensions();
|
|
158
|
+
|
|
159
|
+
if (isLazyLoadingDisabled({
|
|
160
|
+
lazyLoadingFeatureFlag: lazyLoading,
|
|
161
|
+
rowsLoadingMode: props.rowsLoadingMode,
|
|
162
|
+
gridDimensions: dimensions
|
|
163
|
+
})) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
apiRef.current.unstable_requestPipeProcessorsApplication('hydrateRows');
|
|
168
|
+
|
|
169
|
+
var _getCurrentIntervalTo2 = getCurrentIntervalToRender(),
|
|
170
|
+
firstRowToRender = _getCurrentIntervalTo2.firstRowToRender,
|
|
171
|
+
lastRowToRender = _getCurrentIntervalTo2.lastRowToRender;
|
|
172
|
+
|
|
173
|
+
var fetchRowsParams = {
|
|
174
|
+
firstRowToRender: firstRowToRender,
|
|
175
|
+
lastRowToRender: lastRowToRender,
|
|
176
|
+
sortModel: sortModel,
|
|
177
|
+
filterModel: newFilterModel
|
|
178
|
+
};
|
|
179
|
+
apiRef.current.publishEvent('fetchRows', fetchRowsParams);
|
|
180
|
+
}, [apiRef, props.rowsLoadingMode, sortModel, lazyLoading, getCurrentIntervalToRender]);
|
|
181
|
+
useGridApiEventHandler(apiRef, 'renderedRowsIntervalChange', handleRenderedRowsIntervalChange);
|
|
182
|
+
useGridApiEventHandler(apiRef, 'sortModelChange', handleGridSortModelChange);
|
|
183
|
+
useGridApiEventHandler(apiRef, 'filterModelChange', handleGridFilterModelChange);
|
|
184
|
+
useGridApiOptionHandler(apiRef, 'fetchRows', props.onFetchRows);
|
|
185
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { useGridRegisterPipeProcessor } from '@mui/x-data-grid/internals';
|
|
5
|
+
import { GridFeatureModeConstant } from '@mui/x-data-grid';
|
|
6
|
+
export var GRID_SKELETON_ROW_ROOT_ID = 'auto-generated-skeleton-row-root';
|
|
7
|
+
|
|
8
|
+
var getSkeletonRowId = function getSkeletonRowId(index) {
|
|
9
|
+
return "".concat(GRID_SKELETON_ROW_ROOT_ID, "-").concat(index);
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export var useGridLazyLoaderPreProcessors = function useGridLazyLoaderPreProcessors(apiRef, props) {
|
|
13
|
+
var _props$experimentalFe;
|
|
14
|
+
|
|
15
|
+
var _ref = (_props$experimentalFe = props.experimentalFeatures) != null ? _props$experimentalFe : {},
|
|
16
|
+
lazyLoading = _ref.lazyLoading;
|
|
17
|
+
|
|
18
|
+
var addSkeletonRows = React.useCallback(function (groupingParams) {
|
|
19
|
+
if (!lazyLoading || props.rowsLoadingMode !== GridFeatureModeConstant.server || !props.rowCount || groupingParams.ids.length >= props.rowCount) {
|
|
20
|
+
return groupingParams;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
var newRowsIds = _toConsumableArray(groupingParams.ids);
|
|
24
|
+
|
|
25
|
+
for (var i = 0; i < props.rowCount - groupingParams.ids.length; i += 1) {
|
|
26
|
+
var skeletonId = getSkeletonRowId(i);
|
|
27
|
+
newRowsIds.push(skeletonId);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return _extends({}, groupingParams, {
|
|
31
|
+
ids: newRowsIds
|
|
32
|
+
});
|
|
33
|
+
}, [props.rowCount, props.rowsLoadingMode, lazyLoading]);
|
|
34
|
+
useGridRegisterPipeProcessor(apiRef, 'hydrateRows', addSkeletonRows);
|
|
35
|
+
};
|
|
@@ -29,7 +29,7 @@ export var filterRowTreeFromTreeData = function filterRowTreeFromTreeData(params
|
|
|
29
29
|
passingFilterItems = _isRowMatchingFilters.passingFilterItems,
|
|
30
30
|
passingQuickFilterValues = _isRowMatchingFilters.passingQuickFilterValues;
|
|
31
31
|
|
|
32
|
-
isMatchingFilters = passFilterLogic([passingFilterItems], [passingQuickFilterValues], params.filterModel);
|
|
32
|
+
isMatchingFilters = passFilterLogic([passingFilterItems], [passingQuickFilterValues], params.filterModel, params.apiRef);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
var filteredDescendantCount = 0;
|
|
@@ -115,7 +115,8 @@ export var useGridTreeDataPreProcessors = function useGridTreeDataPreProcessors(
|
|
|
115
115
|
rowTree: rowTree,
|
|
116
116
|
isRowMatchingFilters: params.isRowMatchingFilters,
|
|
117
117
|
disableChildrenFiltering: props.disableChildrenFiltering,
|
|
118
|
-
filterModel: params.filterModel
|
|
118
|
+
filterModel: params.filterModel,
|
|
119
|
+
apiRef: apiRef
|
|
119
120
|
});
|
|
120
121
|
}, [apiRef, props.disableChildrenFiltering]);
|
|
121
122
|
var sortRows = React.useCallback(function (params) {
|
package/legacy/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/legacy/models/index.js
CHANGED
package/legacy/utils/domUtils.js
CHANGED
|
@@ -6,6 +6,11 @@ export function getFieldFromHeaderElem(colCellEl) {
|
|
|
6
6
|
export function findHeaderElementFromField(elem, field) {
|
|
7
7
|
return elem.querySelector("[data-field=\"".concat(field, "\"]"));
|
|
8
8
|
}
|
|
9
|
+
export function findGroupHeaderElementsFromField(elem, field) {
|
|
10
|
+
var _elem$querySelectorAl;
|
|
11
|
+
|
|
12
|
+
return Array.from((_elem$querySelectorAl = elem.querySelectorAll("[data-fields*=\"|-".concat(field, "-|\"]"))) != null ? _elem$querySelectorAl : []);
|
|
13
|
+
}
|
|
9
14
|
export function findGridCellElementsFromCol(col, api) {
|
|
10
15
|
var root = findParentElementFromClassName(col, 'MuiDataGrid-root');
|
|
11
16
|
|