@mui/x-data-grid 6.0.0-alpha.0 → 6.0.0-alpha.2

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.
Files changed (161) hide show
  1. package/CHANGELOG.md +209 -0
  2. package/DataGrid/useDataGridProps.js +4 -4
  3. package/components/DataGridVirtualScroller.js +5 -3
  4. package/components/GridPagination.d.ts +43 -1
  5. package/components/GridPagination.js +1 -2
  6. package/components/GridRow.d.ts +1 -4
  7. package/components/GridRow.js +9 -8
  8. package/components/base/GridBody.js +1 -2
  9. package/components/base/GridOverlays.js +52 -12
  10. package/components/cell/GridBooleanCell.js +2 -1
  11. package/components/columnSelection/GridCellCheckboxRenderer.d.ts +2 -2
  12. package/components/columnSelection/GridCellCheckboxRenderer.js +1 -6
  13. package/components/containers/GridOverlay.js +0 -5
  14. package/components/panel/filterPanel/GridFilterForm.js +2 -1
  15. package/components/toolbar/GridToolbarFilterButton.js +8 -4
  16. package/constants/gridClasses.d.ts +8 -0
  17. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +1 -1
  18. package/hooks/core/strategyProcessing/gridStrategyProcessingApi.d.ts +1 -1
  19. package/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
  20. package/hooks/features/editRows/useGridCellEditing.new.js +18 -9
  21. package/hooks/features/editRows/useGridEditing.new.js +3 -2
  22. package/hooks/features/editRows/useGridEditing.old.js +2 -1
  23. package/hooks/features/editRows/useGridRowEditing.new.js +18 -9
  24. package/hooks/features/export/useGridPrintExport.js +31 -17
  25. package/hooks/features/export/utils.js +1 -5
  26. package/hooks/features/filter/gridFilterSelector.js +2 -2
  27. package/hooks/features/filter/useGridFilter.js +6 -6
  28. package/hooks/features/pagination/gridPaginationSelector.js +2 -2
  29. package/hooks/features/rows/gridRowsInterfaces.d.ts +106 -0
  30. package/hooks/features/rows/{gridRowsState.js → gridRowsInterfaces.js} +0 -0
  31. package/hooks/features/rows/gridRowsSelector.d.ts +17 -7
  32. package/hooks/features/rows/gridRowsSelector.js +38 -6
  33. package/hooks/features/rows/gridRowsUtils.d.ts +16 -4
  34. package/hooks/features/rows/gridRowsUtils.js +222 -39
  35. package/hooks/features/rows/index.d.ts +3 -3
  36. package/hooks/features/rows/index.js +2 -2
  37. package/hooks/features/rows/useGridRows.js +161 -124
  38. package/hooks/features/rows/useGridRowsPreProcessors.js +78 -26
  39. package/hooks/features/selection/useGridSelection.js +2 -2
  40. package/hooks/features/sorting/gridSortingSelector.js +9 -4
  41. package/hooks/features/sorting/gridSortingState.d.ts +2 -2
  42. package/hooks/features/sorting/useGridSorting.js +9 -33
  43. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +4 -7
  44. package/hooks/features/virtualization/useGridVirtualScroller.js +11 -17
  45. package/index.js +1 -1
  46. package/internals/index.d.ts +2 -1
  47. package/internals/index.js +1 -0
  48. package/legacy/DataGrid/useDataGridProps.js +4 -4
  49. package/legacy/components/DataGridVirtualScroller.js +5 -3
  50. package/legacy/components/GridPagination.js +1 -2
  51. package/legacy/components/GridRow.js +9 -8
  52. package/legacy/components/base/GridBody.js +1 -2
  53. package/legacy/components/base/GridOverlays.js +54 -12
  54. package/legacy/components/cell/GridBooleanCell.js +2 -1
  55. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +1 -6
  56. package/legacy/components/containers/GridOverlay.js +0 -5
  57. package/legacy/components/panel/filterPanel/GridFilterForm.js +2 -1
  58. package/legacy/components/toolbar/GridToolbarFilterButton.js +3 -1
  59. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
  60. package/legacy/hooks/features/editRows/useGridCellEditing.new.js +18 -9
  61. package/legacy/hooks/features/editRows/useGridEditing.new.js +3 -2
  62. package/legacy/hooks/features/editRows/useGridEditing.old.js +2 -1
  63. package/legacy/hooks/features/editRows/useGridRowEditing.new.js +18 -9
  64. package/legacy/hooks/features/export/useGridPrintExport.js +33 -20
  65. package/legacy/hooks/features/export/utils.js +1 -3
  66. package/legacy/hooks/features/filter/gridFilterSelector.js +2 -2
  67. package/legacy/hooks/features/filter/useGridFilter.js +6 -6
  68. package/legacy/hooks/features/pagination/gridPaginationSelector.js +2 -2
  69. package/legacy/hooks/features/rows/{gridRowsState.js → gridRowsInterfaces.js} +0 -0
  70. package/legacy/hooks/features/rows/gridRowsSelector.js +52 -9
  71. package/legacy/hooks/features/rows/gridRowsUtils.js +238 -46
  72. package/legacy/hooks/features/rows/index.js +2 -2
  73. package/legacy/hooks/features/rows/useGridRows.js +163 -134
  74. package/legacy/hooks/features/rows/useGridRowsPreProcessors.js +81 -26
  75. package/legacy/hooks/features/selection/useGridSelection.js +2 -2
  76. package/legacy/hooks/features/sorting/gridSortingSelector.js +5 -2
  77. package/legacy/hooks/features/sorting/useGridSorting.js +11 -33
  78. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +11 -17
  79. package/legacy/index.js +1 -1
  80. package/legacy/internals/index.js +1 -0
  81. package/legacy/models/gridFeatureMode.js +1 -4
  82. package/models/api/gridParamsApi.d.ts +2 -2
  83. package/models/api/gridRowApi.d.ts +7 -5
  84. package/models/events/gridEventLookup.d.ts +3 -3
  85. package/models/gridApiCaches.d.ts +1 -1
  86. package/models/gridFeatureMode.d.ts +0 -4
  87. package/models/gridFeatureMode.js +1 -4
  88. package/models/gridRows.d.ts +100 -30
  89. package/models/gridSortModel.d.ts +2 -2
  90. package/models/params/gridCellParams.d.ts +7 -11
  91. package/modern/DataGrid/useDataGridProps.js +4 -4
  92. package/modern/components/DataGridVirtualScroller.js +5 -3
  93. package/modern/components/GridPagination.js +1 -2
  94. package/modern/components/GridRow.js +9 -8
  95. package/modern/components/base/GridBody.js +1 -2
  96. package/modern/components/base/GridOverlays.js +52 -12
  97. package/modern/components/cell/GridBooleanCell.js +2 -1
  98. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +1 -6
  99. package/modern/components/containers/GridOverlay.js +0 -5
  100. package/modern/components/panel/filterPanel/GridFilterForm.js +2 -1
  101. package/modern/components/toolbar/GridToolbarFilterButton.js +1 -1
  102. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
  103. package/modern/hooks/features/editRows/useGridCellEditing.new.js +18 -9
  104. package/modern/hooks/features/editRows/useGridEditing.new.js +3 -2
  105. package/modern/hooks/features/editRows/useGridEditing.old.js +2 -1
  106. package/modern/hooks/features/editRows/useGridRowEditing.new.js +18 -9
  107. package/modern/hooks/features/export/useGridPrintExport.js +30 -16
  108. package/modern/hooks/features/export/utils.js +1 -1
  109. package/modern/hooks/features/filter/gridFilterSelector.js +2 -2
  110. package/modern/hooks/features/filter/useGridFilter.js +6 -6
  111. package/modern/hooks/features/pagination/gridPaginationSelector.js +2 -2
  112. package/modern/hooks/features/rows/{gridRowsState.js → gridRowsInterfaces.js} +0 -0
  113. package/modern/hooks/features/rows/gridRowsSelector.js +28 -6
  114. package/modern/hooks/features/rows/gridRowsUtils.js +220 -37
  115. package/modern/hooks/features/rows/index.js +2 -2
  116. package/modern/hooks/features/rows/useGridRows.js +158 -121
  117. package/modern/hooks/features/rows/useGridRowsPreProcessors.js +78 -26
  118. package/modern/hooks/features/selection/useGridSelection.js +2 -2
  119. package/modern/hooks/features/sorting/gridSortingSelector.js +3 -2
  120. package/modern/hooks/features/sorting/useGridSorting.js +9 -33
  121. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +10 -16
  122. package/modern/index.js +1 -1
  123. package/modern/internals/index.js +1 -0
  124. package/modern/models/gridFeatureMode.js +1 -4
  125. package/node/DataGrid/useDataGridProps.js +3 -3
  126. package/node/components/DataGridVirtualScroller.js +5 -3
  127. package/node/components/GridPagination.js +1 -2
  128. package/node/components/GridRow.js +9 -7
  129. package/node/components/base/GridBody.js +1 -3
  130. package/node/components/base/GridOverlays.js +57 -12
  131. package/node/components/cell/GridBooleanCell.js +3 -1
  132. package/node/components/columnSelection/GridCellCheckboxRenderer.js +1 -6
  133. package/node/components/containers/GridOverlay.js +0 -5
  134. package/node/components/panel/filterPanel/GridFilterForm.js +2 -1
  135. package/node/components/toolbar/GridToolbarFilterButton.js +8 -4
  136. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
  137. package/node/hooks/features/editRows/useGridCellEditing.new.js +20 -10
  138. package/node/hooks/features/editRows/useGridEditing.new.js +4 -2
  139. package/node/hooks/features/editRows/useGridEditing.old.js +3 -1
  140. package/node/hooks/features/editRows/useGridRowEditing.new.js +20 -10
  141. package/node/hooks/features/export/useGridPrintExport.js +31 -17
  142. package/node/hooks/features/export/utils.js +1 -5
  143. package/node/hooks/features/filter/gridFilterSelector.js +1 -1
  144. package/node/hooks/features/filter/useGridFilter.js +5 -6
  145. package/node/hooks/features/pagination/gridPaginationSelector.js +1 -1
  146. package/node/hooks/features/rows/{gridRowsState.js → gridRowsInterfaces.js} +0 -0
  147. package/node/hooks/features/rows/gridRowsSelector.js +43 -10
  148. package/node/hooks/features/rows/gridRowsUtils.js +239 -40
  149. package/node/hooks/features/rows/index.js +23 -9
  150. package/node/hooks/features/rows/useGridRows.js +161 -122
  151. package/node/hooks/features/rows/useGridRowsPreProcessors.js +81 -26
  152. package/node/hooks/features/selection/useGridSelection.js +2 -2
  153. package/node/hooks/features/sorting/gridSortingSelector.js +9 -4
  154. package/node/hooks/features/sorting/useGridSorting.js +9 -33
  155. package/node/hooks/features/virtualization/useGridVirtualScroller.js +11 -17
  156. package/node/index.js +1 -1
  157. package/node/internals/index.js +14 -2
  158. package/node/models/gridFeatureMode.js +1 -7
  159. package/package.json +1 -1
  160. package/themeAugmentation/props.d.ts +2 -2
  161. package/hooks/features/rows/gridRowsState.d.ts +0 -60
@@ -15,6 +15,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
15
15
 
16
16
  var React = _interopRequireWildcard(require("react"));
17
17
 
18
+ var _utils = require("@mui/utils");
19
+
18
20
  var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
19
21
 
20
22
  var _gridEditRowModel = require("../../../models/gridEditRowModel");
@@ -31,7 +33,7 @@ var _warning = require("../../../utils/warning");
31
33
 
32
34
  var _gridRowsSelector = require("../rows/gridRowsSelector");
33
35
 
34
- var _utils = require("../../../utils/utils");
36
+ var _utils2 = require("../../../utils/utils");
35
37
 
36
38
  var _gridRowParams = require("../../../models/params/gridRowParams");
37
39
 
@@ -183,6 +185,10 @@ const useGridRowEditing = (apiRef, props) => {
183
185
  } else if (params.isEditable) {
184
186
  let reason;
185
187
 
188
+ if (event.key === ' ' && event.shiftKey) {
189
+ return; // Shift + Space is used to select the row
190
+ }
191
+
186
192
  if ((0, _keyboardUtils.isPrintableKey)(event)) {
187
193
  reason = _gridRowParams.GridRowEditStartReasons.printableKeyDown;
188
194
  } else if ((event.ctrlKey || event.metaKey) && event.key === 'v') {
@@ -273,7 +279,7 @@ const useGridRowEditing = (apiRef, props) => {
273
279
  const isEditing = editingState[id] && Object.keys(editingState[id]).length > 0;
274
280
  return isEditing ? _gridEditRowModel.GridRowModes.Edit : _gridEditRowModel.GridRowModes.View;
275
281
  }, [apiRef, props.editMode]);
276
- const updateRowModesModel = React.useCallback(newModel => {
282
+ const updateRowModesModel = (0, _utils.unstable_useEventCallback)(newModel => {
277
283
  const isNewModelDifferentFromProp = newModel !== props.rowModesModel;
278
284
 
279
285
  if (onRowModesModelChange && isNewModelDifferentFromProp) {
@@ -290,7 +296,7 @@ const useGridRowEditing = (apiRef, props) => {
290
296
  setRowModesModel(newModel);
291
297
  rowModesModelRef.current = newModel;
292
298
  apiRef.current.publishEvent('rowModesModelChange', newModel);
293
- }, [apiRef, onRowModesModelChange, props.rowModesModel, signature]);
299
+ });
294
300
  const updateRowInRowModesModel = React.useCallback((id, newProps) => {
295
301
  const newModel = (0, _extends2.default)({}, rowModesModelRef.current);
296
302
 
@@ -350,7 +356,7 @@ const useGridRowEditing = (apiRef, props) => {
350
356
  mode: _gridEditRowModel.GridRowModes.Edit
351
357
  }, other));
352
358
  }, [throwIfNotInMode, updateRowInRowModesModel]);
353
- const updateStateToStartRowEditMode = React.useCallback(params => {
359
+ const updateStateToStartRowEditMode = (0, _utils.unstable_useEventCallback)(params => {
354
360
  const {
355
361
  id,
356
362
  fieldToFocus,
@@ -377,7 +383,7 @@ const useGridRowEditing = (apiRef, props) => {
377
383
  if (fieldToFocus) {
378
384
  apiRef.current.setCellFocus(id, fieldToFocus);
379
385
  }
380
- }, [apiRef, updateOrDeleteRowState]);
386
+ });
381
387
  const stopRowEditMode = React.useCallback(params => {
382
388
  const {
383
389
  id
@@ -388,7 +394,7 @@ const useGridRowEditing = (apiRef, props) => {
388
394
  mode: _gridEditRowModel.GridRowModes.View
389
395
  }, other));
390
396
  }, [throwIfNotInMode, updateRowInRowModesModel]);
391
- const updateStateToStopRowEditMode = React.useCallback(params => {
397
+ const updateStateToStopRowEditMode = (0, _utils.unstable_useEventCallback)(params => {
392
398
  const {
393
399
  id,
394
400
  ignoreModifications,
@@ -435,7 +441,11 @@ const useGridRowEditing = (apiRef, props) => {
435
441
 
436
442
  if (processRowUpdate) {
437
443
  const handleError = errorThrown => {
438
- prevRowModesModel.current[id].mode = _gridEditRowModel.GridRowModes.Edit;
444
+ prevRowModesModel.current[id].mode = _gridEditRowModel.GridRowModes.Edit; // Revert the mode in the rowModesModel prop back to "edit"
445
+
446
+ updateRowInRowModesModel(id, {
447
+ mode: _gridEditRowModel.GridRowModes.Edit
448
+ });
439
449
 
440
450
  if (onProcessRowUpdateError) {
441
451
  onProcessRowUpdateError(errorThrown);
@@ -456,7 +466,7 @@ const useGridRowEditing = (apiRef, props) => {
456
466
  apiRef.current.updateRows([rowUpdate]);
457
467
  finishRowEditMode();
458
468
  }
459
- }, [apiRef, onProcessRowUpdateError, processRowUpdate, updateOrDeleteRowState, updateRowInRowModesModel]);
469
+ });
460
470
  const setRowEditingEditCellValue = React.useCallback(params => {
461
471
  const {
462
472
  id,
@@ -603,10 +613,10 @@ const useGridRowEditing = (apiRef, props) => {
603
613
  }
604
614
  }, [rowModesModelProp, updateRowModesModel]);
605
615
  React.useEffect(() => {
606
- const idToIdLookup = (0, _gridRowsSelector.gridRowsIdToIdLookupSelector)(apiRef); // Update the ref here because updateStateToStopRowEditMode may change it later
616
+ const idToIdLookup = (0, _gridRowsSelector.gridRowsDataRowIdToIdLookupSelector)(apiRef); // Update the ref here because updateStateToStopRowEditMode may change it later
607
617
 
608
618
  const copyOfPrevRowModesModel = prevRowModesModel.current;
609
- prevRowModesModel.current = (0, _utils.deepClone)(rowModesModel); // Do a deep-clone because the attributes might be changed later
619
+ prevRowModesModel.current = (0, _utils2.deepClone)(rowModesModel); // Do a deep-clone because the attributes might be changed later
610
620
 
611
621
  Object.entries(rowModesModel).forEach(([id, params]) => {
612
622
  var _copyOfPrevRowModesMo, _idToIdLookup$id;
@@ -39,6 +39,14 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
39
39
 
40
40
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
41
41
 
42
+ function raf() {
43
+ return new Promise(resolve => {
44
+ requestAnimationFrame(() => {
45
+ resolve();
46
+ });
47
+ });
48
+ }
49
+
42
50
  /**
43
51
  * @requires useGridColumns (state)
44
52
  * @requires useGridFilter (state)
@@ -56,6 +64,7 @@ const useGridPrintExport = (apiRef, props) => {
56
64
  // the new state needs to be in place before the grid can be sized correctly
57
65
 
58
66
  const updateGridColumnsForPrint = React.useCallback((fields, allColumns) => new Promise(resolve => {
67
+ // TODO remove unused Promise
59
68
  if (!fields && !allColumns) {
60
69
  resolve();
61
70
  return;
@@ -75,12 +84,10 @@ const useGridPrintExport = (apiRef, props) => {
75
84
  });
76
85
  apiRef.current.setColumnVisibilityModel(newColumnVisibilityModel);
77
86
  resolve();
78
- }), [apiRef]);
87
+ }), [apiRef]); // TODO move outside of this scope and remove React.useCallback
88
+
79
89
  const buildPrintWindow = React.useCallback(title => {
80
90
  const iframeEl = document.createElement('iframe');
81
- iframeEl.id = 'grid-print-window'; // Without this 'onload' event won't fire in some browsers
82
-
83
- iframeEl.src = window.location.href;
84
91
  iframeEl.style.position = 'absolute';
85
92
  iframeEl.style.width = '0px';
86
93
  iframeEl.style.height = '0px';
@@ -88,17 +95,14 @@ const useGridPrintExport = (apiRef, props) => {
88
95
  return iframeEl;
89
96
  }, []);
90
97
  const handlePrintWindowLoad = React.useCallback((printWindow, options) => {
91
- var _printWindow$contentW, _querySelector, _querySelector2;
98
+ var _querySelector, _querySelector2;
92
99
 
93
100
  const normalizeOptions = (0, _extends2.default)({
94
101
  copyStyles: true,
95
102
  hideToolbar: false,
96
103
  hideFooter: false
97
- }, options); // Some agents, such as IE11 and Enzyme (as of 2 Jun 2020) continuously call the
98
- // `onload` callback. This ensures that it is only called once.
99
-
100
- printWindow.onload = null;
101
- const printDoc = printWindow.contentDocument || ((_printWindow$contentW = printWindow.contentWindow) == null ? void 0 : _printWindow$contentW.document);
104
+ }, options);
105
+ const printDoc = printWindow.contentDocument;
102
106
 
103
107
  if (!printDoc) {
104
108
  return;
@@ -138,10 +142,12 @@ const useGridPrintExport = (apiRef, props) => {
138
142
  } // Expand container height to accommodate all rows
139
143
 
140
144
 
141
- gridClone.style.height = `${rowsMeta.currentPageTotalHeight + totalHeaderHeight + gridToolbarElementHeight + gridFooterElementHeight}px`; // Remove all loaded elements from the current host
145
+ gridClone.style.height = `${rowsMeta.currentPageTotalHeight + totalHeaderHeight + gridToolbarElementHeight + gridFooterElementHeight}px`; // printDoc.body.appendChild(gridClone); should be enough but a clone isolation bug in Safari
146
+ // prevents us to do it
142
147
 
143
- printDoc.body.innerHTML = '';
144
- printDoc.body.appendChild(gridClone);
148
+ const container = document.createElement('div');
149
+ container.appendChild(gridClone);
150
+ printDoc.body.innerHTML = container.innerHTML;
145
151
  const defaultPageStyle = typeof normalizeOptions.pageStyle === 'function' ? normalizeOptions.pageStyle() : normalizeOptions.pageStyle;
146
152
 
147
153
  if (typeof defaultPageStyle === 'string') {
@@ -235,17 +241,25 @@ const useGridPrintExport = (apiRef, props) => {
235
241
 
236
242
  await updateGridColumnsForPrint(options == null ? void 0 : options.fields, options == null ? void 0 : options.allColumns);
237
243
  apiRef.current.unstable_disableVirtualization();
244
+ await raf(); // wait for the state changes to take action
245
+
238
246
  const printWindow = buildPrintWindow(options == null ? void 0 : options.fileName);
239
- doc.current.body.appendChild(printWindow);
240
247
 
241
248
  if (process.env.NODE_ENV === 'test') {
242
- // In test env, run the all pipeline without waiting for loading
249
+ doc.current.body.appendChild(printWindow); // In test env, run the all pipeline without waiting for loading
250
+
243
251
  handlePrintWindowLoad(printWindow, options);
244
252
  handlePrintWindowAfterPrint(printWindow);
245
253
  } else {
246
- printWindow.onload = () => handlePrintWindowLoad(printWindow, options);
254
+ printWindow.onload = () => {
255
+ handlePrintWindowLoad(printWindow, options);
256
+
257
+ printWindow.contentWindow.onafterprint = () => {
258
+ handlePrintWindowAfterPrint(printWindow);
259
+ };
260
+ };
247
261
 
248
- printWindow.contentWindow.onafterprint = () => handlePrintWindowAfterPrint(printWindow);
262
+ doc.current.body.appendChild(printWindow);
249
263
  }
250
264
  }, [props, logger, apiRef, buildPrintWindow, handlePrintWindowLoad, handlePrintWindowAfterPrint, updateGridColumnsForPrint]);
251
265
  const printExportApi = {
@@ -35,11 +35,7 @@ const defaultGetRowsToExport = ({
35
35
  const filteredSortedRowIds = (0, _filter.gridFilteredSortedRowIdsSelector)(apiRef);
36
36
  const rowTree = (0, _gridRowsSelector.gridRowTreeSelector)(apiRef);
37
37
  const selectedRows = apiRef.current.getSelectedRows();
38
- const bodyRows = filteredSortedRowIds.filter(id => {
39
- var _rowTree$id$position;
40
-
41
- return ((_rowTree$id$position = rowTree[id].position) != null ? _rowTree$id$position : 'body') === 'body';
42
- });
38
+ const bodyRows = filteredSortedRowIds.filter(id => rowTree[id].type !== 'footer');
43
39
  const pinnedRows = (0, _gridRowsSelector.gridPinnedRowsSelector)(apiRef);
44
40
  const topPinnedRowsIds = (pinnedRows == null ? void 0 : (_pinnedRows$top = pinnedRows.top) == null ? void 0 : _pinnedRows$top.map(row => row.id)) || [];
45
41
  const bottomPinnedRowsIds = (pinnedRows == null ? void 0 : (_pinnedRows$bottom = pinnedRows.bottom) == null ? void 0 : _pinnedRows$bottom.map(row => row.id)) || [];
@@ -100,7 +100,7 @@ const gridVisibleRowsSelector = gridVisibleSortedRowIdsSelector;
100
100
  */
101
101
 
102
102
  exports.gridVisibleRowsSelector = gridVisibleRowsSelector;
103
- const gridVisibleSortedTopLevelRowEntriesSelector = (0, _createSelector.createSelector)(gridVisibleSortedRowEntriesSelector, _gridRowsSelector.gridRowTreeSelector, _gridRowsSelector.gridRowTreeDepthSelector, (visibleSortedRows, rowTree, rowTreeDepth) => {
103
+ const gridVisibleSortedTopLevelRowEntriesSelector = (0, _createSelector.createSelector)(gridVisibleSortedRowEntriesSelector, _gridRowsSelector.gridRowTreeSelector, _gridRowsSelector.gridRowMaximumTreeDepthSelector, (visibleSortedRows, rowTree, rowTreeDepth) => {
104
104
  if (rowTreeDepth < 2) {
105
105
  return visibleSortedRows;
106
106
  }
@@ -11,8 +11,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
11
 
12
12
  var React = _interopRequireWildcard(require("react"));
13
13
 
14
- var _gridFeatureMode = require("../../../models/gridFeatureMode");
15
-
16
14
  var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
17
15
 
18
16
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
@@ -80,7 +78,7 @@ const useGridFilter = (apiRef, props) => {
80
78
  const updateFilteredRows = React.useCallback(() => {
81
79
  apiRef.current.setState(state => {
82
80
  const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(state, apiRef.current.instanceId);
83
- const isRowMatchingFilters = props.filterMode === _gridFeatureMode.GridFeatureModeConstant.client ? (0, _gridFilterUtils.buildAggregatedFilterApplier)(filterModel, apiRef) : null;
81
+ const isRowMatchingFilters = props.filterMode === 'client' ? (0, _gridFilterUtils.buildAggregatedFilterApplier)(filterModel, apiRef) : null;
84
82
  const filteringResult = apiRef.current.unstable_applyStrategyProcessor('filtering', {
85
83
  isRowMatchingFilters,
86
84
  filterModel: filterModel != null ? filterModel : (0, _gridFilterState.getDefaultGridFilterModel)()
@@ -289,8 +287,9 @@ const useGridFilter = (apiRef, props) => {
289
287
  return initialValue;
290
288
  }, [props.components.FilterPanel, (_props$componentsProp2 = props.componentsProps) == null ? void 0 : _props$componentsProp2.filterPanel]);
291
289
  const flatFilteringMethod = React.useCallback(params => {
292
- if (props.filterMode === _gridFeatureMode.GridFeatureModeConstant.client && params.isRowMatchingFilters) {
293
- const rowIds = (0, _rows.gridRowIdsSelector)(apiRef);
290
+ if (props.filterMode === 'client' && params.isRowMatchingFilters) {
291
+ const tree = (0, _rows.gridRowTreeSelector)(apiRef);
292
+ const rowIds = tree[_rows.GRID_ROOT_GROUP_ID].children;
294
293
  const filteredRowsLookup = {};
295
294
 
296
295
  for (let i = 0; i < rowIds.length; i += 1) {
@@ -312,7 +311,7 @@ const useGridFilter = (apiRef, props) => {
312
311
 
313
312
  return {
314
313
  filteredRowsLookup,
315
- // For flat tree, the `visibleRowsLookup` and the `filteredRowsLookup` since no row is collapsed.
314
+ // For flat tree, the `visibleRowsLookup` and the `filteredRowsLookup` are equals since no row is collapsed.
316
315
  visibleRowsLookup: filteredRowsLookup,
317
316
  filteredDescendantCountLookup: {}
318
317
  };
@@ -44,7 +44,7 @@ const gridPageCountSelector = (0, _createSelector.createSelector)(gridPagination
44
44
  */
45
45
 
46
46
  exports.gridPageCountSelector = gridPageCountSelector;
47
- const gridPaginationRowRangeSelector = (0, _createSelector.createSelector)(gridPaginationSelector, _gridRowsSelector.gridRowTreeSelector, _gridRowsSelector.gridRowTreeDepthSelector, _gridFilterSelector.gridVisibleSortedRowEntriesSelector, _gridFilterSelector.gridVisibleSortedTopLevelRowEntriesSelector, (pagination, rowTree, rowTreeDepth, visibleSortedRowEntries, visibleSortedTopLevelRowEntries) => {
47
+ const gridPaginationRowRangeSelector = (0, _createSelector.createSelector)(gridPaginationSelector, _gridRowsSelector.gridRowTreeSelector, _gridRowsSelector.gridRowMaximumTreeDepthSelector, _gridFilterSelector.gridVisibleSortedRowEntriesSelector, _gridFilterSelector.gridVisibleSortedTopLevelRowEntriesSelector, (pagination, rowTree, rowTreeDepth, visibleSortedRowEntries, visibleSortedTopLevelRowEntries) => {
48
48
  const visibleTopLevelRowCount = visibleSortedTopLevelRowEntries.length;
49
49
  const topLevelFirstRowIndex = Math.min(pagination.pageSize * pagination.page, visibleTopLevelRowCount - 1);
50
50
  const topLevelLastRowIndex = Math.min(topLevelFirstRowIndex + pagination.pageSize - 1, visibleTopLevelRowCount - 1); // The range contains no element
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.gridTopLevelRowCountSelector = exports.gridRowsStateSelector = exports.gridRowsLookupSelector = exports.gridRowsLoadingSelector = exports.gridRowsIdToIdLookupSelector = exports.gridRowTreeSelector = exports.gridRowTreeDepthSelector = exports.gridRowIdsSelector = exports.gridRowGroupingNameSelector = exports.gridRowCountSelector = exports.gridPinnedRowsSelector = exports.gridPinnedRowsCountSelector = exports.gridAdditionalRowGroupsSelector = void 0;
6
+ exports.gridTopLevelRowCountSelector = exports.gridRowsStateSelector = exports.gridRowsLookupSelector = exports.gridRowsLoadingSelector = exports.gridRowsDataRowIdToIdLookupSelector = exports.gridRowTreeSelector = exports.gridRowTreeDepthsSelector = exports.gridRowMaximumTreeDepthSelector = exports.gridRowGroupingNameSelector = exports.gridRowCountSelector = exports.gridPinnedRowsSelector = exports.gridPinnedRowsCountSelector = exports.gridDataRowIdsSelector = exports.gridAdditionalRowGroupsSelector = void 0;
7
7
 
8
8
  var _createSelector = require("../../../utils/createSelector");
9
9
 
@@ -14,31 +14,64 @@ const gridRowCountSelector = (0, _createSelector.createSelector)(gridRowsStateSe
14
14
  exports.gridRowCountSelector = gridRowCountSelector;
15
15
  const gridRowsLoadingSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.loading);
16
16
  exports.gridRowsLoadingSelector = gridRowsLoadingSelector;
17
- const gridTopLevelRowCountSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.totalTopLevelRowCount);
17
+ const gridTopLevelRowCountSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.totalTopLevelRowCount); // TODO rows v6: Rename
18
+
18
19
  exports.gridTopLevelRowCountSelector = gridTopLevelRowCountSelector;
19
- const gridRowsLookupSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.idRowsLookup);
20
+ const gridRowsLookupSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.dataRowIdToModelLookup);
20
21
  exports.gridRowsLookupSelector = gridRowsLookupSelector;
21
- const gridRowsIdToIdLookupSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.idToIdLookup);
22
- exports.gridRowsIdToIdLookupSelector = gridRowsIdToIdLookupSelector;
22
+ const gridRowsDataRowIdToIdLookupSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.dataRowIdToIdLookup);
23
+ exports.gridRowsDataRowIdToIdLookupSelector = gridRowsDataRowIdToIdLookupSelector;
23
24
  const gridRowTreeSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.tree);
24
25
  exports.gridRowTreeSelector = gridRowTreeSelector;
25
26
  const gridRowGroupingNameSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.groupingName);
26
27
  exports.gridRowGroupingNameSelector = gridRowGroupingNameSelector;
27
- const gridRowTreeDepthSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.treeDepth);
28
- exports.gridRowTreeDepthSelector = gridRowTreeDepthSelector;
29
- const gridRowIdsSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.ids);
28
+ const gridRowTreeDepthsSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.treeDepths);
29
+ exports.gridRowTreeDepthsSelector = gridRowTreeDepthsSelector;
30
+ const gridRowMaximumTreeDepthSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => {
31
+ const entries = Object.entries(rows.treeDepths);
32
+
33
+ if (entries.length === 0) {
34
+ return 1;
35
+ }
36
+
37
+ return entries.filter(([, nodeCount]) => nodeCount > 0).map(([depth]) => Number(depth)).sort((a, b) => b - a)[0] + 1;
38
+ });
39
+ exports.gridRowMaximumTreeDepthSelector = gridRowMaximumTreeDepthSelector;
40
+ const gridDataRowIdsSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.dataRowIds);
30
41
  /**
31
42
  * @ignore - do not document.
32
43
  */
33
44
 
34
- exports.gridRowIdsSelector = gridRowIdsSelector;
45
+ exports.gridDataRowIdsSelector = gridDataRowIdsSelector;
35
46
  const gridAdditionalRowGroupsSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows == null ? void 0 : rows.additionalRowGroups);
36
47
  /**
37
48
  * @ignore - do not document.
38
49
  */
39
50
 
40
51
  exports.gridAdditionalRowGroupsSelector = gridAdditionalRowGroupsSelector;
41
- const gridPinnedRowsSelector = (0, _createSelector.createSelector)(gridAdditionalRowGroupsSelector, additionalRowGroups => additionalRowGroups == null ? void 0 : additionalRowGroups.pinnedRows);
52
+ const gridPinnedRowsSelector = (0, _createSelector.createSelector)(gridAdditionalRowGroupsSelector, additionalRowGroups => {
53
+ var _rawPinnedRows$bottom, _rawPinnedRows$top;
54
+
55
+ const rawPinnedRows = additionalRowGroups == null ? void 0 : additionalRowGroups.pinnedRows;
56
+ return {
57
+ bottom: rawPinnedRows == null ? void 0 : (_rawPinnedRows$bottom = rawPinnedRows.bottom) == null ? void 0 : _rawPinnedRows$bottom.map(rowEntry => {
58
+ var _rowEntry$model;
59
+
60
+ return {
61
+ id: rowEntry.id,
62
+ model: (_rowEntry$model = rowEntry.model) != null ? _rowEntry$model : {}
63
+ };
64
+ }),
65
+ top: rawPinnedRows == null ? void 0 : (_rawPinnedRows$top = rawPinnedRows.top) == null ? void 0 : _rawPinnedRows$top.map(rowEntry => {
66
+ var _rowEntry$model2;
67
+
68
+ return {
69
+ id: rowEntry.id,
70
+ model: (_rowEntry$model2 = rowEntry.model) != null ? _rowEntry$model2 : {}
71
+ };
72
+ })
73
+ };
74
+ });
42
75
  /**
43
76
  * @ignore - do not document.
44
77
  */