@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
@@ -8,7 +8,6 @@ import { useGridApiContext } from '../../utils/useGridApiContext';
8
8
  import { useGridRootProps } from '../../utils/useGridRootProps';
9
9
  import { useGridSelector } from '../../utils/useGridSelector';
10
10
  import { gridVisibleColumnDefinitionsSelector, gridColumnsTotalWidthSelector, gridColumnPositionsSelector } from '../columns/gridColumnsSelector';
11
- import { gridDensityRowHeightSelector } from '../density/densitySelector';
12
11
  import { gridFocusCellSelector, gridTabIndexCellSelector } from '../focus/gridFocusStateSelector';
13
12
  import { gridEditRowsStateSelector } from '../editRows/gridEditRowsSelector';
14
13
  import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
@@ -16,7 +15,8 @@ import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
16
15
  import { clamp } from '../../../utils/utils';
17
16
  import { selectedIdsLookupSelector } from '../selection/gridSelectionSelector';
18
17
  import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
19
- import { getFirstNonSpannedColumnToRender } from '../columns/gridColumnsUtils'; // Uses binary search to avoid looping through all possible positions
18
+ import { getFirstNonSpannedColumnToRender } from '../columns/gridColumnsUtils';
19
+ import { getMinimalContentHeight } from '../rows/gridRowsUtils'; // Uses binary search to avoid looping through all possible positions
20
20
 
21
21
  import { jsx as _jsx } from "react/jsx-runtime";
22
22
  export function binarySearch(offset, positions, sliceStart = 0, sliceEnd = positions.length) {
@@ -67,7 +67,6 @@ export const useGridVirtualScroller = props => {
67
67
  } = props;
68
68
  const columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector);
69
69
  const columnsTotalWidth = useGridSelector(apiRef, gridColumnsTotalWidthSelector);
70
- const rowHeight = useGridSelector(apiRef, gridDensityRowHeightSelector);
71
70
  const cellFocus = useGridSelector(apiRef, gridFocusCellSelector);
72
71
  const cellTabIndex = useGridSelector(apiRef, gridTabIndexCellSelector);
73
72
  const rowsMeta = useGridSelector(apiRef, gridRowsMetaSelector);
@@ -87,16 +86,16 @@ export const useGridVirtualScroller = props => {
87
86
  const prevTotalWidth = React.useRef(columnsTotalWidth);
88
87
  const getNearestIndexToRender = React.useCallback(offset => {
89
88
  const lastMeasuredIndexRelativeToAllRows = apiRef.current.unstable_getLastMeasuredRowIndex();
90
- const lastMeasuredIndexRelativeToCurrentPage = lastMeasuredIndexRelativeToAllRows - (currentPage.range?.firstRowIndex || 0);
91
- const lastMeasuredIndex = Math.max(0, lastMeasuredIndexRelativeToCurrentPage);
92
- let allRowsMeasured = lastMeasuredIndex === Infinity;
89
+ let allRowsMeasured = lastMeasuredIndexRelativeToAllRows === Infinity;
93
90
 
94
91
  if (currentPage.range?.lastRowIndex && !allRowsMeasured) {
95
92
  // Check if all rows in this page are already measured
96
- allRowsMeasured = lastMeasuredIndex >= currentPage.range.lastRowIndex;
93
+ allRowsMeasured = lastMeasuredIndexRelativeToAllRows >= currentPage.range.lastRowIndex;
97
94
  }
98
95
 
99
- if (allRowsMeasured || rowsMeta.positions[lastMeasuredIndex] >= offset) {
96
+ const lastMeasuredIndexRelativeToCurrentPage = clamp(lastMeasuredIndexRelativeToAllRows - (currentPage.range?.firstRowIndex || 0), 0, rowsMeta.positions.length);
97
+
98
+ if (allRowsMeasured || rowsMeta.positions[lastMeasuredIndexRelativeToCurrentPage] >= offset) {
100
99
  // If all rows were measured (when no row has "auto" as height) or all rows before the offset
101
100
  // were measured, then use a binary search because it's faster.
102
101
  return binarySearch(offset, rowsMeta.positions);
@@ -106,7 +105,7 @@ export const useGridVirtualScroller = props => {
106
105
  // Inspired by https://github.com/bvaughn/react-virtualized/blob/master/source/Grid/utils/CellSizeAndPositionManager.js
107
106
 
108
107
 
109
- return exponentialSearch(offset, rowsMeta.positions, lastMeasuredIndex);
108
+ return exponentialSearch(offset, rowsMeta.positions, lastMeasuredIndexRelativeToCurrentPage);
110
109
  }, [apiRef, currentPage.range?.firstRowIndex, currentPage.range?.lastRowIndex, rowsMeta.positions]);
111
110
  const computeRenderContext = React.useCallback(() => {
112
111
  if (disableVirtualization) {
@@ -414,19 +413,14 @@ export const useGridVirtualScroller = props => {
414
413
  height,
415
414
  minHeight: shouldExtendContent ? '100%' : 'auto'
416
415
  };
417
-
418
- if (rootProps.autoHeight && currentPage.rows.length === 0) {
419
- size.height = 2 * rowHeight; // Give room to show the overlay when there's no row.
420
- }
421
-
422
416
  return size;
423
- }, [rootRef, columnsTotalWidth, rowsMeta.currentPageTotalHeight, currentPage.rows.length, needsHorizontalScrollbar, rootProps.autoHeight, rowHeight]);
417
+ }, [rootRef, columnsTotalWidth, rowsMeta.currentPageTotalHeight, needsHorizontalScrollbar]);
424
418
  React.useEffect(() => {
425
419
  apiRef.current.publishEvent('virtualScrollerContentSizeChange');
426
420
  }, [apiRef, contentSize]);
427
421
 
428
422
  if (rootProps.autoHeight && currentPage.rows.length === 0) {
429
- contentSize.height = 2 * rowHeight; // Give room to show the overlay when there no rows.
423
+ contentSize.height = getMinimalContentHeight(apiRef); // Give room to show the overlay when there no rows.
430
424
  }
431
425
 
432
426
  const rootStyle = {};
package/modern/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v6.0.0-alpha.0
1
+ /** @license MUI v6.0.0-alpha.2
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -26,6 +26,7 @@ export { useGridEditing as useGridEditing_new, editingStateInitializer as editin
26
26
  export { useGridEditing as useGridEditing_old, editingStateInitializer as editingStateInitializer_old } from '../hooks/features/editRows/useGridEditing.old';
27
27
  export { useGridRows, rowsStateInitializer } from '../hooks/features/rows/useGridRows';
28
28
  export { useGridRowsPreProcessors } from '../hooks/features/rows/useGridRowsPreProcessors';
29
+ export { getTreeNodeDescendants, buildRootGroup } from '../hooks/features/rows/gridRowsUtils';
29
30
  export { useGridRowsMeta, rowsMetaStateInitializer } from '../hooks/features/rows/useGridRowsMeta';
30
31
  export { useGridParamsApi } from '../hooks/features/rows/useGridParamsApi';
31
32
  export { getRowIdFromRowModel } from '../hooks/features/rows/gridRowsUtils';
@@ -1,4 +1 @@
1
- export const GridFeatureModeConstant = {
2
- client: 'client',
3
- server: 'server'
4
- };
1
+ export {};
@@ -62,7 +62,7 @@ const DATA_GRID_PROPS_DEFAULT_VALUES = {
62
62
  disableVirtualization: false,
63
63
  disableIgnoreModificationsIfProcessingProps: false,
64
64
  editMode: _models.GridEditModes.Cell,
65
- filterMode: _models.GridFeatureModeConstant.client,
65
+ filterMode: 'client',
66
66
  headerHeight: 56,
67
67
  hideFooter: false,
68
68
  hideFooterPagination: false,
@@ -71,14 +71,14 @@ const DATA_GRID_PROPS_DEFAULT_VALUES = {
71
71
  logger: console,
72
72
  logLevel: process.env.NODE_ENV === 'production' ? 'error' : 'warn',
73
73
  pagination: false,
74
- paginationMode: _models.GridFeatureModeConstant.client,
74
+ paginationMode: 'client',
75
75
  rowHeight: 52,
76
76
  rowsPerPageOptions: [25, 50, 100],
77
77
  rowSpacingType: 'margin',
78
78
  showCellRightBorder: false,
79
79
  showColumnRightBorder: false,
80
80
  sortingOrder: ['asc', 'desc', null],
81
- sortingMode: _models.GridFeatureModeConstant.client,
81
+ sortingMode: 'client',
82
82
  throttleRowsMs: 0,
83
83
  disableColumnReorder: false,
84
84
  disableColumnResize: false,
@@ -21,6 +21,8 @@ var _GridVirtualScrollerRenderZone = require("./virtualization/GridVirtualScroll
21
21
 
22
22
  var _useGridVirtualScroller = require("../hooks/features/virtualization/useGridVirtualScroller");
23
23
 
24
+ var _GridOverlays = require("./base/GridOverlays");
25
+
24
26
  var _jsxRuntime = require("react/jsx-runtime");
25
27
 
26
28
  const _excluded = ["className", "disableVirtualization"];
@@ -44,14 +46,14 @@ const DataGridVirtualScroller = /*#__PURE__*/React.forwardRef(function DataGridV
44
46
  ref,
45
47
  disableVirtualization
46
48
  });
47
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScroller.GridVirtualScroller, (0, _extends2.default)({
49
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridVirtualScroller.GridVirtualScroller, (0, _extends2.default)({
48
50
  className: className
49
51
  }, getRootProps(other), {
50
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollerContent.GridVirtualScrollerContent, (0, _extends2.default)({}, getContentProps(), {
52
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_GridOverlays.GridOverlays, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollerContent.GridVirtualScrollerContent, (0, _extends2.default)({}, getContentProps(), {
51
53
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollerRenderZone.GridVirtualScrollerRenderZone, (0, _extends2.default)({}, getRenderZoneProps(), {
52
54
  children: getRows()
53
55
  }))
54
- }))
56
+ }))]
55
57
  }));
56
58
  });
57
59
  exports.DataGridVirtualScroller = DataGridVirtualScroller;
@@ -75,8 +75,7 @@ const GridPagination = /*#__PURE__*/React.forwardRef(function GridPagination(pro
75
75
  }
76
76
 
77
77
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridPaginationRoot, (0, _extends2.default)({
78
- ref: ref // @ts-ignore
79
- ,
78
+ ref: ref,
80
79
  component: "div",
81
80
  count: paginationState.rowCount,
82
81
  page: paginationState.page <= lastPage ? paginationState.page : lastPage,
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.GridRow = GridRow;
8
+ exports.GridRow = void 0;
9
9
 
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
 
@@ -89,7 +89,7 @@ const EmptyCell = ({
89
89
  }); // TODO change to .MuiDataGrid-emptyCell or .MuiDataGrid-rowFiller
90
90
  };
91
91
 
92
- function GridRow(props) {
92
+ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
93
93
  var _apiRef$current$getRo;
94
94
 
95
95
  const {
@@ -121,8 +121,9 @@ function GridRow(props) {
121
121
  const currentPage = (0, _useGridVisibleRows.useGridVisibleRows)(apiRef, rootProps);
122
122
  const columnsTotalWidth = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridColumnsTotalWidthSelector);
123
123
  const sortModel = (0, _useGridSelector.useGridSelector)(apiRef, _gridSortingSelector.gridSortModelSelector);
124
- const treeDepth = (0, _useGridSelector.useGridSelector)(apiRef, _gridRowsSelector.gridRowTreeDepthSelector);
124
+ const treeDepth = (0, _useGridSelector.useGridSelector)(apiRef, _gridRowsSelector.gridRowMaximumTreeDepthSelector);
125
125
  const headerGroupingMaxDepth = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityHeaderGroupingMaxDepthSelector);
126
+ const handleRef = (0, _material.useForkRef)(ref, refProp);
126
127
  const ariaRowIndex = index + headerGroupingMaxDepth + 2; // 1 for the header row and 1 as it's 1-based
127
128
 
128
129
  const {
@@ -361,6 +362,7 @@ function GridRow(props) {
361
362
  }
362
363
 
363
364
  const randomNumber = (0, _utils.randomNumberBetween)(10000, 20, 80);
365
+ const rowType = apiRef.current.getRowNode(rowId).type;
364
366
  const cells = [];
365
367
 
366
368
  for (let i = 0; i < renderedColumns.length; i += 1) {
@@ -372,7 +374,7 @@ function GridRow(props) {
372
374
  const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, indexRelativeToAllColumns);
373
375
 
374
376
  if (cellColSpanInfo && !cellColSpanInfo.spannedByColSpan) {
375
- if (row) {
377
+ if (rowType !== 'skeletonRow') {
376
378
  const {
377
379
  colSpan,
378
380
  width
@@ -407,7 +409,7 @@ function GridRow(props) {
407
409
  onMouseLeave: publish('rowMouseLeave', onMouseLeave)
408
410
  } : null;
409
411
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", (0, _extends2.default)({
410
- ref: ref,
412
+ ref: handleRef,
411
413
  "data-id": rowId,
412
414
  "data-rowindex": index,
413
415
  role: "row",
@@ -420,8 +422,8 @@ function GridRow(props) {
420
422
  width: emptyCellWidth
421
423
  })]
422
424
  }));
423
- }
424
-
425
+ });
426
+ exports.GridRow = GridRow;
425
427
  process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
426
428
  // ----------------------------- Warning --------------------------------
427
429
  // | These PropTypes are generated from the TypeScript type definitions |
@@ -17,8 +17,6 @@ var _GridMainContainer = require("../containers/GridMainContainer");
17
17
 
18
18
  var _GridAutoSizer = require("../GridAutoSizer");
19
19
 
20
- var _GridOverlays = require("./GridOverlays");
21
-
22
20
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
23
21
 
24
22
  var _useGridSelector = require("../../hooks/utils/useGridSelector");
@@ -72,7 +70,7 @@ function GridBody(props) {
72
70
  apiRef.current.publishEvent('resize', size);
73
71
  }, [apiRef]);
74
72
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridMainContainer.GridMainContainer, {
75
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_GridOverlays.GridOverlays, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(ColumnHeadersComponent, {
73
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(ColumnHeadersComponent, {
76
74
  ref: columnsContainerRef,
77
75
  innerRef: columnHeadersRef
78
76
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridAutoSizer.GridAutoSizer, {
@@ -13,6 +13,12 @@ var React = _interopRequireWildcard(require("react"));
13
13
 
14
14
  var _utils = require("@mui/material/utils");
15
15
 
16
+ var _styles = require("@mui/material/styles");
17
+
18
+ var _material = require("@mui/material");
19
+
20
+ var _clsx = _interopRequireDefault(require("clsx"));
21
+
16
22
  var _useGridSelector = require("../../hooks/utils/useGridSelector");
17
23
 
18
24
  var _gridFilterSelector = require("../../hooks/features/filter/gridFilterSelector");
@@ -23,7 +29,9 @@ var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
23
29
 
24
30
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
25
31
 
26
- var _densitySelector = require("../../hooks/features/density/densitySelector");
32
+ var _gridRowsUtils = require("../../hooks/features/rows/gridRowsUtils");
33
+
34
+ var _gridClasses = require("../../constants/gridClasses");
27
35
 
28
36
  var _jsxRuntime = require("react/jsx-runtime");
29
37
 
@@ -31,12 +39,44 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
31
39
 
32
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; }
33
41
 
42
+ const GridOverlayWrapperRoot = (0, _styles.styled)('div', {
43
+ name: 'MuiDataGrid',
44
+ slot: 'OverlayWrapper',
45
+ overridesResolver: (props, styles) => styles.overlayWrapper
46
+ })({
47
+ position: 'sticky',
48
+ // To stay in place while scrolling
49
+ top: 0,
50
+ left: 0,
51
+ width: 0,
52
+ // To stay above the content instead of shifting it down
53
+ height: 0,
54
+ // To stay above the content instead of shifting it down
55
+ zIndex: 4 // Should be above pinned columns, pinned rows and detail panel
56
+
57
+ });
58
+ const GridOverlayWrapperInner = (0, _styles.styled)('div', {
59
+ name: 'MuiDataGrid',
60
+ slot: 'OverlayWrapperInner',
61
+ overridesResolver: (props, styles) => styles.overlayWrapperInner
62
+ })({});
63
+
64
+ const useUtilityClasses = ownerState => {
65
+ const {
66
+ classes
67
+ } = ownerState;
68
+ const slots = {
69
+ root: ['overlayWrapper'],
70
+ inner: ['overlayWrapperInner']
71
+ };
72
+ return (0, _material.unstable_composeClasses)(slots, _gridClasses.getDataGridUtilityClass, classes);
73
+ };
74
+
34
75
  function GridOverlayWrapper(props) {
35
76
  var _viewportInnerSize$he, _viewportInnerSize$wi;
36
77
 
37
78
  const apiRef = (0, _useGridApiContext.useGridApiContext)();
38
79
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
39
- const totalHeaderHeight = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityTotalHeaderHeightSelector);
40
80
  const [viewportInnerSize, setViewportInnerSize] = React.useState(() => {
41
81
  var _apiRef$current$getRo, _apiRef$current$getRo2;
42
82
 
@@ -53,22 +93,27 @@ function GridOverlayWrapper(props) {
53
93
  let height = (_viewportInnerSize$he = viewportInnerSize == null ? void 0 : viewportInnerSize.height) != null ? _viewportInnerSize$he : 0;
54
94
 
55
95
  if (rootProps.autoHeight && height === 0) {
56
- height = 'auto';
96
+ height = (0, _gridRowsUtils.getMinimalContentHeight)(apiRef); // Give room to show the overlay when there no rows.
57
97
  }
58
98
 
99
+ const classes = useUtilityClasses((0, _extends2.default)({}, props, {
100
+ classes: rootProps.classes
101
+ }));
102
+
59
103
  if (!viewportInnerSize) {
60
104
  return null;
61
105
  }
62
106
 
63
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", (0, _extends2.default)({
64
- style: {
65
- height,
66
- width: (_viewportInnerSize$wi = viewportInnerSize == null ? void 0 : viewportInnerSize.width) != null ? _viewportInnerSize$wi : 0,
67
- position: 'absolute',
68
- top: totalHeaderHeight,
69
- bottom: height === 'auto' ? 0 : undefined
70
- }
71
- }, props));
107
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridOverlayWrapperRoot, {
108
+ className: (0, _clsx.default)(classes.root),
109
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(GridOverlayWrapperInner, (0, _extends2.default)({
110
+ className: (0, _clsx.default)(classes.inner),
111
+ style: {
112
+ height,
113
+ width: (_viewportInnerSize$wi = viewportInnerSize == null ? void 0 : viewportInnerSize.width) != null ? _viewportInnerSize$wi : 0
114
+ }
115
+ }, props))
116
+ });
72
117
  }
73
118
 
74
119
  function GridOverlays() {
@@ -23,6 +23,8 @@ var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
23
23
 
24
24
  var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
25
25
 
26
+ var _gridRowsUtils = require("../../hooks/features/rows/gridRowsUtils");
27
+
26
28
  var _jsxRuntime = require("react/jsx-runtime");
27
29
 
28
30
  const _excluded = ["id", "value", "formattedValue", "api", "field", "row", "rowNode", "colDef", "cellMode", "isEditable", "hasFocus", "tabIndex", "getValue"];
@@ -153,7 +155,7 @@ const GridBooleanCell = /*#__PURE__*/React.memo(GridBooleanCellRaw);
153
155
  exports.GridBooleanCell = GridBooleanCell;
154
156
 
155
157
  const renderBooleanCell = params => {
156
- if (params.rowNode.isAutoGenerated) {
158
+ if ((0, _gridRowsUtils.isAutoGeneratedRow)(params.rowNode)) {
157
159
  return '';
158
160
  }
159
161
 
@@ -102,17 +102,12 @@ const GridCellCheckboxForwardRef = /*#__PURE__*/React.forwardRef(function GridCe
102
102
  }
103
103
  }, [apiRef, props]);
104
104
 
105
- if (rowNode.position === 'footer') {
105
+ if (rowNode.type === 'footer' || rowNode.type === 'pinnedRow') {
106
106
  return null;
107
107
  }
108
108
 
109
109
  const isSelectable = apiRef.current.isRowSelectable(id);
110
110
  const label = apiRef.current.getLocaleText(isChecked ? 'checkboxSelectionUnselectRow' : 'checkboxSelectionSelectRow');
111
-
112
- if (rowNode.isPinned) {
113
- return null;
114
- }
115
-
116
111
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.components.BaseCheckbox, (0, _extends2.default)({
117
112
  ref: handleRef,
118
113
  tabIndex: tabIndex,
@@ -50,13 +50,8 @@ const GridOverlayRoot = (0, _styles.styled)('div', {
50
50
  })(({
51
51
  theme
52
52
  }) => ({
53
- position: 'absolute',
54
- top: 0,
55
- zIndex: 4,
56
- // should be above pinned columns, pinned rows and detail panel
57
53
  width: '100%',
58
54
  height: '100%',
59
- pointerEvents: 'none',
60
55
  display: 'flex',
61
56
  alignSelf: 'center',
62
57
  alignItems: 'center',
@@ -263,7 +263,8 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
263
263
  }), [currentOperator]);
264
264
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(GridFilterFormRoot, (0, _extends2.default)({
265
265
  ref: ref,
266
- className: classes.root
266
+ className: classes.root,
267
+ "data-id": item.id
267
268
  }, other, {
268
269
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(FilterFormDeleteIcon, (0, _extends2.default)({
269
270
  variant: "standard",
@@ -98,11 +98,15 @@ const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolb
98
98
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
99
99
  children: [apiRef.current.getLocaleText('toolbarFiltersTooltipActive')(activeFilters.length), /*#__PURE__*/(0, _jsxRuntime.jsx)(GridToolbarFilterListRoot, {
100
100
  className: classes.root,
101
- children: activeFilters.map((item, index) => (0, _extends2.default)({}, lookup[item.columnField] && /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
102
- children: `${lookup[item.columnField].headerName || item.columnField}
101
+ children: activeFilters.map((item, index) => {
102
+ var _item$value;
103
+
104
+ return (0, _extends2.default)({}, lookup[item.columnField] && /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
105
+ children: `${lookup[item.columnField].headerName || item.columnField}
103
106
  ${getOperatorLabel(item)}
104
- ${item.value}`
105
- }, index)))
107
+ ${(_item$value = item.value) != null ? _item$value : ''}`
108
+ }, index));
109
+ })
106
110
  })]
107
111
  });
108
112
  }, [apiRef, preferencePanel.open, activeFilters, lookup, classes]);
@@ -274,7 +274,7 @@ const useGridColumnHeaders = props => {
274
274
 
275
275
  const columnsToRender = getColumnsToRender(params);
276
276
 
277
- if (columnsToRender == null) {
277
+ if (columnsToRender == null || columnsToRender.renderedColumns.length === 0) {
278
278
  return null;
279
279
  }
280
280
 
@@ -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");
@@ -29,7 +31,7 @@ var _warning = require("../../../utils/warning");
29
31
 
30
32
  var _gridRowsSelector = require("../rows/gridRowsSelector");
31
33
 
32
- var _utils = require("../../../utils/utils");
34
+ var _utils2 = require("../../../utils/utils");
33
35
 
34
36
  var _gridEditCellParams = require("../../../models/params/gridEditCellParams");
35
37
 
@@ -128,6 +130,10 @@ const useGridCellEditing = (apiRef, props) => {
128
130
  } else if (params.isEditable) {
129
131
  let reason;
130
132
 
133
+ if (event.key === ' ' && event.shiftKey) {
134
+ return; // Shift + Space is used to select the row
135
+ }
136
+
131
137
  if ((0, _keyboardUtils.isPrintableKey)(event)) {
132
138
  reason = _gridEditCellParams.GridCellEditStartReasons.printableKeyDown;
133
139
  } else if ((event.ctrlKey || event.metaKey) && event.key === 'v') {
@@ -209,7 +215,7 @@ const useGridCellEditing = (apiRef, props) => {
209
215
  const isEditing = editingState[id] && editingState[id][field];
210
216
  return isEditing ? _gridEditRowModel.GridCellModes.Edit : _gridEditRowModel.GridCellModes.View;
211
217
  }, [apiRef]);
212
- const updateCellModesModel = React.useCallback(newModel => {
218
+ const updateCellModesModel = (0, _utils.unstable_useEventCallback)(newModel => {
213
219
  const isNewModelDifferentFromProp = newModel !== props.cellModesModel;
214
220
 
215
221
  if (onCellModesModelChange && isNewModelDifferentFromProp) {
@@ -226,7 +232,7 @@ const useGridCellEditing = (apiRef, props) => {
226
232
  setCellModesModel(newModel);
227
233
  cellModesModelRef.current = newModel;
228
234
  apiRef.current.publishEvent('cellModesModelChange', newModel);
229
- }, [apiRef, onCellModesModelChange, props.cellModesModel, signature]);
235
+ });
230
236
  const updateFieldInCellModesModel = React.useCallback((id, field, newProps) => {
231
237
  // We use the ref because it always contain the up-to-date value, different from the state
232
238
  // that needs a rerender to reflect the new value
@@ -283,7 +289,7 @@ const useGridCellEditing = (apiRef, props) => {
283
289
  mode: _gridEditRowModel.GridCellModes.Edit
284
290
  }, other));
285
291
  }, [throwIfNotEditable, throwIfNotInMode, updateFieldInCellModesModel]);
286
- const updateStateToStartCellEditMode = React.useCallback(params => {
292
+ const updateStateToStartCellEditMode = (0, _utils.unstable_useEventCallback)(params => {
287
293
  const {
288
294
  id,
289
295
  field,
@@ -296,7 +302,7 @@ const useGridCellEditing = (apiRef, props) => {
296
302
  };
297
303
  updateOrDeleteFieldState(id, field, newProps);
298
304
  apiRef.current.setCellFocus(id, field);
299
- }, [apiRef, updateOrDeleteFieldState]);
305
+ });
300
306
  const stopCellEditMode = React.useCallback(params => {
301
307
  const {
302
308
  id,
@@ -308,7 +314,7 @@ const useGridCellEditing = (apiRef, props) => {
308
314
  mode: _gridEditRowModel.GridCellModes.View
309
315
  }, other));
310
316
  }, [throwIfNotInMode, updateFieldInCellModesModel]);
311
- const updateStateToStopCellEditMode = React.useCallback(async params => {
317
+ const updateStateToStopCellEditMode = (0, _utils.unstable_useEventCallback)(async params => {
312
318
  const {
313
319
  id,
314
320
  field,
@@ -353,7 +359,11 @@ const useGridCellEditing = (apiRef, props) => {
353
359
 
354
360
  if (processRowUpdate) {
355
361
  const handleError = errorThrown => {
356
- prevCellModesModel.current[id][field].mode = _gridEditRowModel.GridCellModes.Edit;
362
+ prevCellModesModel.current[id][field].mode = _gridEditRowModel.GridCellModes.Edit; // Revert the mode in the cellModesModel prop back to "edit"
363
+
364
+ updateFieldInCellModesModel(id, field, {
365
+ mode: _gridEditRowModel.GridCellModes.Edit
366
+ });
357
367
 
358
368
  if (onProcessRowUpdateError) {
359
369
  onProcessRowUpdateError(errorThrown);
@@ -375,7 +385,7 @@ const useGridCellEditing = (apiRef, props) => {
375
385
  apiRef.current.updateRows([rowUpdate]);
376
386
  finishCellEditMode();
377
387
  }
378
- }, [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateFieldInCellModesModel, updateOrDeleteFieldState]);
388
+ });
379
389
  const setCellEditingEditCellValue = React.useCallback(async params => {
380
390
  var _editingState$id, _editingState$id$fiel;
381
391
 
@@ -462,10 +472,10 @@ const useGridCellEditing = (apiRef, props) => {
462
472
  }
463
473
  }, [cellModesModelProp, updateCellModesModel]);
464
474
  React.useEffect(() => {
465
- const idToIdLookup = (0, _gridRowsSelector.gridRowsIdToIdLookupSelector)(apiRef); // Update the ref here because updateStateToStopCellEditMode may change it later
475
+ const idToIdLookup = (0, _gridRowsSelector.gridRowsDataRowIdToIdLookupSelector)(apiRef); // Update the ref here because updateStateToStopCellEditMode may change it later
466
476
 
467
477
  const copyOfPrevCellModes = prevCellModesModel.current;
468
- prevCellModesModel.current = (0, _utils.deepClone)(cellModesModel); // Do a deep-clone because the attributes might be changed later
478
+ prevCellModesModel.current = (0, _utils2.deepClone)(cellModesModel); // Do a deep-clone because the attributes might be changed later
469
479
 
470
480
  Object.entries(cellModesModel).forEach(([id, fields]) => {
471
481
  Object.entries(fields).forEach(([field, params]) => {
@@ -21,6 +21,8 @@ var _useGridRowEditing = require("./useGridRowEditing.new");
21
21
 
22
22
  var _gridEditRowsSelector = require("./gridEditRowsSelector");
23
23
 
24
+ var _gridRowsUtils = require("../rows/gridRowsUtils");
25
+
24
26
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
27
 
26
28
  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; }
@@ -39,7 +41,7 @@ const useGridEditing = (apiRef, props) => {
39
41
  isCellEditable: isCellEditableProp
40
42
  } = props;
41
43
  const isCellEditable = React.useCallback(params => {
42
- if (params.rowNode.isAutoGenerated) {
44
+ if ((0, _gridRowsUtils.isAutoGeneratedRow)(params.rowNode)) {
43
45
  return false;
44
46
  }
45
47
 
@@ -55,7 +57,7 @@ const useGridEditing = (apiRef, props) => {
55
57
  return isCellEditableProp(params);
56
58
  }
57
59
 
58
- if (params.rowNode.isPinned) {
60
+ if (params.rowNode.type === 'pinnedRow') {
59
61
  return false;
60
62
  }
61
63
 
@@ -26,6 +26,8 @@ var _useGridCellEditing = require("./useGridCellEditing.old");
26
26
 
27
27
  var _useGridRowEditing = require("./useGridRowEditing.old");
28
28
 
29
+ var _gridRowsUtils = require("../rows/gridRowsUtils");
30
+
29
31
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
30
32
 
31
33
  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; }
@@ -56,7 +58,7 @@ function useGridEditing(apiRef, props) {
56
58
  stateSelector: _gridEditRowsSelector.gridEditRowsStateSelector,
57
59
  changeEvent: 'editRowsModelChange'
58
60
  });
59
- const isCellEditable = React.useCallback(params => !params.rowNode.isAutoGenerated && !params.rowNode.isPinned && !!params.colDef.editable && !!params.colDef.renderEditCell && (!props.isCellEditable || props.isCellEditable(params)), // eslint-disable-next-line react-hooks/exhaustive-deps
61
+ const isCellEditable = React.useCallback(params => !(0, _gridRowsUtils.isAutoGeneratedRow)(params.rowNode) && params.rowNode.type !== 'pinnedRow' && !!params.colDef.editable && !!params.colDef.renderEditCell && (!props.isCellEditable || props.isCellEditable(params)), // eslint-disable-next-line react-hooks/exhaustive-deps
60
62
  [props.isCellEditable]);
61
63
 
62
64
  const maybeDebounce = (id, field, debounceMs, callback) => {