@mui/x-data-grid 8.0.0-alpha.10 → 8.0.0-alpha.11

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 (148) hide show
  1. package/CHANGELOG.md +107 -2
  2. package/DataGrid/useDataGridComponent.js +2 -2
  3. package/components/GridRow.js +6 -2
  4. package/components/GridScrollArea.d.ts +5 -2
  5. package/components/GridScrollArea.js +31 -24
  6. package/components/GridSkeletonLoadingOverlay.js +2 -1
  7. package/components/containers/GridRoot.js +11 -9
  8. package/components/containers/GridRootStyles.js +3 -3
  9. package/components/menu/columnMenu/GridColumnMenuContainer.js +5 -2
  10. package/components/virtualization/GridMainContainer.d.ts +2 -2
  11. package/components/virtualization/GridMainContainer.js +1 -1
  12. package/components/virtualization/GridVirtualScroller.js +21 -14
  13. package/constants/index.d.ts +1 -0
  14. package/constants/index.js +2 -1
  15. package/constants/signature.d.ts +9 -0
  16. package/constants/signature.js +10 -0
  17. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +1 -1
  18. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +6 -4
  19. package/hooks/core/useGridApiInitialization.js +1 -1
  20. package/hooks/core/useGridStateInitialization.js +3 -2
  21. package/hooks/features/columnHeaders/useGridColumnHeaders.js +10 -14
  22. package/hooks/features/columns/gridColumnsSelector.d.ts +0 -5
  23. package/hooks/features/columns/gridColumnsSelector.js +0 -12
  24. package/hooks/features/columns/useGridColumns.js +2 -1
  25. package/hooks/features/dimensions/gridDimensionsSelectors.d.ts +16 -0
  26. package/hooks/features/dimensions/gridDimensionsSelectors.js +26 -1
  27. package/hooks/features/dimensions/index.d.ts +1 -1
  28. package/hooks/features/dimensions/index.js +1 -2
  29. package/hooks/features/dimensions/useGridDimensions.js +97 -70
  30. package/hooks/features/editing/gridEditingSelectors.d.ts +5 -1
  31. package/hooks/features/editing/gridEditingSelectors.js +6 -1
  32. package/hooks/features/editing/useGridRowEditing.js +4 -4
  33. package/hooks/features/filter/gridFilterSelector.d.ts +2 -2
  34. package/hooks/features/filter/gridFilterSelector.js +4 -3
  35. package/hooks/features/filter/gridFilterState.d.ts +8 -3
  36. package/hooks/features/filter/gridFilterState.js +5 -0
  37. package/hooks/features/filter/useGridFilter.js +9 -14
  38. package/hooks/features/overlays/useGridOverlays.js +1 -1
  39. package/hooks/features/pagination/gridPaginationUtils.js +1 -1
  40. package/hooks/features/pagination/useGridPagination.js +1 -1
  41. package/hooks/features/rowSelection/useGridRowSelection.js +3 -2
  42. package/hooks/features/rowSelection/utils.js +2 -2
  43. package/hooks/features/rows/gridRowsMetaState.d.ts +8 -0
  44. package/hooks/features/rows/gridRowsUtils.d.ts +0 -4
  45. package/hooks/features/rows/gridRowsUtils.js +0 -16
  46. package/hooks/features/rows/useGridRows.js +4 -2
  47. package/hooks/features/rows/useGridRowsMeta.js +33 -17
  48. package/hooks/features/sorting/gridSortingSelector.js +10 -9
  49. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +6 -0
  50. package/hooks/features/virtualization/useGridVirtualScroller.js +43 -27
  51. package/hooks/utils/index.d.ts +1 -1
  52. package/hooks/utils/index.js +1 -1
  53. package/hooks/utils/useGridApiEventHandler.d.ts +7 -17
  54. package/hooks/utils/useGridApiEventHandler.js +68 -75
  55. package/hooks/utils/useGridSelector.js +23 -5
  56. package/hooks/utils/useIsSSR.d.ts +1 -0
  57. package/hooks/utils/useIsSSR.js +5 -0
  58. package/index.js +1 -1
  59. package/internals/index.d.ts +3 -1
  60. package/internals/index.js +3 -1
  61. package/internals/utils/propValidation.js +1 -1
  62. package/models/api/gridStateApi.d.ts +1 -0
  63. package/models/events/gridEventLookup.d.ts +6 -0
  64. package/modern/DataGrid/useDataGridComponent.js +2 -2
  65. package/modern/components/GridRow.js +6 -2
  66. package/modern/components/GridScrollArea.js +31 -24
  67. package/modern/components/GridSkeletonLoadingOverlay.js +2 -1
  68. package/modern/components/containers/GridRoot.js +11 -9
  69. package/modern/components/containers/GridRootStyles.js +3 -3
  70. package/modern/components/menu/columnMenu/GridColumnMenuContainer.js +5 -2
  71. package/modern/components/virtualization/GridMainContainer.js +1 -1
  72. package/modern/components/virtualization/GridVirtualScroller.js +21 -14
  73. package/modern/constants/index.js +2 -1
  74. package/modern/constants/signature.js +10 -0
  75. package/modern/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +6 -4
  76. package/modern/hooks/core/useGridApiInitialization.js +1 -1
  77. package/modern/hooks/core/useGridStateInitialization.js +3 -2
  78. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +10 -14
  79. package/modern/hooks/features/columns/gridColumnsSelector.js +0 -12
  80. package/modern/hooks/features/columns/useGridColumns.js +2 -1
  81. package/modern/hooks/features/dimensions/gridDimensionsSelectors.js +26 -1
  82. package/modern/hooks/features/dimensions/index.js +1 -2
  83. package/modern/hooks/features/dimensions/useGridDimensions.js +97 -70
  84. package/modern/hooks/features/editing/gridEditingSelectors.js +6 -1
  85. package/modern/hooks/features/editing/useGridRowEditing.js +4 -4
  86. package/modern/hooks/features/filter/gridFilterSelector.js +4 -3
  87. package/modern/hooks/features/filter/gridFilterState.js +5 -0
  88. package/modern/hooks/features/filter/useGridFilter.js +9 -14
  89. package/modern/hooks/features/overlays/useGridOverlays.js +1 -1
  90. package/modern/hooks/features/pagination/gridPaginationUtils.js +1 -1
  91. package/modern/hooks/features/pagination/useGridPagination.js +1 -1
  92. package/modern/hooks/features/rowSelection/useGridRowSelection.js +3 -2
  93. package/modern/hooks/features/rowSelection/utils.js +2 -2
  94. package/modern/hooks/features/rows/gridRowsUtils.js +0 -16
  95. package/modern/hooks/features/rows/useGridRows.js +4 -2
  96. package/modern/hooks/features/rows/useGridRowsMeta.js +33 -17
  97. package/modern/hooks/features/sorting/gridSortingSelector.js +10 -9
  98. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +43 -27
  99. package/modern/hooks/utils/index.js +1 -1
  100. package/modern/hooks/utils/useGridApiEventHandler.js +68 -75
  101. package/modern/hooks/utils/useGridSelector.js +23 -5
  102. package/modern/hooks/utils/useIsSSR.js +5 -0
  103. package/modern/index.js +1 -1
  104. package/modern/internals/index.js +3 -1
  105. package/modern/internals/utils/propValidation.js +1 -1
  106. package/node/DataGrid/useDataGridComponent.js +2 -2
  107. package/node/components/GridRow.js +6 -2
  108. package/node/components/GridScrollArea.js +31 -24
  109. package/node/components/GridSkeletonLoadingOverlay.js +2 -1
  110. package/node/components/containers/GridRoot.js +10 -8
  111. package/node/components/containers/GridRootStyles.js +3 -3
  112. package/node/components/menu/columnMenu/GridColumnMenuContainer.js +5 -2
  113. package/node/components/virtualization/GridMainContainer.js +1 -1
  114. package/node/components/virtualization/GridVirtualScroller.js +21 -14
  115. package/node/constants/index.js +11 -0
  116. package/node/constants/signature.js +16 -0
  117. package/node/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +6 -4
  118. package/node/hooks/core/useGridApiInitialization.js +2 -2
  119. package/node/hooks/core/useGridStateInitialization.js +3 -2
  120. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +10 -14
  121. package/node/hooks/features/columns/gridColumnsSelector.js +1 -13
  122. package/node/hooks/features/columns/useGridColumns.js +2 -1
  123. package/node/hooks/features/dimensions/gridDimensionsSelectors.js +38 -2
  124. package/node/hooks/features/dimensions/index.js +13 -11
  125. package/node/hooks/features/dimensions/useGridDimensions.js +94 -67
  126. package/node/hooks/features/editing/gridEditingSelectors.js +5 -1
  127. package/node/hooks/features/editing/useGridRowEditing.js +4 -4
  128. package/node/hooks/features/filter/gridFilterSelector.js +4 -3
  129. package/node/hooks/features/filter/gridFilterState.js +6 -1
  130. package/node/hooks/features/filter/useGridFilter.js +8 -13
  131. package/node/hooks/features/overlays/useGridOverlays.js +1 -1
  132. package/node/hooks/features/pagination/gridPaginationUtils.js +2 -2
  133. package/node/hooks/features/pagination/useGridPagination.js +1 -1
  134. package/node/hooks/features/rowSelection/useGridRowSelection.js +5 -4
  135. package/node/hooks/features/rowSelection/utils.js +3 -3
  136. package/node/hooks/features/rows/gridRowsUtils.js +0 -17
  137. package/node/hooks/features/rows/useGridRows.js +6 -4
  138. package/node/hooks/features/rows/useGridRowsMeta.js +31 -15
  139. package/node/hooks/features/sorting/gridSortingSelector.js +10 -9
  140. package/node/hooks/features/virtualization/useGridVirtualScroller.js +42 -26
  141. package/node/hooks/utils/index.js +21 -11
  142. package/node/hooks/utils/useGridApiEventHandler.js +71 -78
  143. package/node/hooks/utils/useGridSelector.js +23 -5
  144. package/node/hooks/utils/useIsSSR.js +12 -0
  145. package/node/index.js +1 -1
  146. package/node/internals/index.js +32 -7
  147. package/node/internals/utils/propValidation.js +2 -2
  148. package/package.json +3 -2
@@ -13,6 +13,7 @@ var _utils = require("@mui/utils");
13
13
  var _throttle = require("@mui/x-internals/throttle");
14
14
  var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
15
15
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
16
+ var _createSelector = require("../../../utils/createSelector");
16
17
  var _useGridLogger = require("../../utils/useGridLogger");
17
18
  var _columns = require("../columns");
18
19
  var _gridDimensionsSelectors = require("./gridDimensionsSelectors");
@@ -26,6 +27,7 @@ var _gridColumnsUtils = require("../columns/gridColumnsUtils");
26
27
  var _dataGridPropsDefaultValues = require("../../../constants/dataGridPropsDefaultValues");
27
28
  var _roundToDecimalPlaces = require("../../../utils/roundToDecimalPlaces");
28
29
  var _isJSDOM = require("../../../utils/isJSDOM");
30
+ var _utils3 = require("../../../utils/utils");
29
31
  const EMPTY_SIZE = {
30
32
  width: 0,
31
33
  height: 0
@@ -52,48 +54,53 @@ const EMPTY_DIMENSIONS = {
52
54
  topContainerHeight: 0,
53
55
  bottomContainerHeight: 0
54
56
  };
55
- const dimensionsStateInitializer = state => {
57
+ const dimensionsStateInitializer = (state, props, apiRef) => {
56
58
  const dimensions = EMPTY_DIMENSIONS;
59
+ const density = (0, _density.gridDensityFactorSelector)(apiRef);
57
60
  return (0, _extends2.default)({}, state, {
58
- dimensions
61
+ dimensions: (0, _extends2.default)({}, dimensions, getStaticDimensions(props, apiRef, density, (0, _columns.gridVisiblePinnedColumnDefinitionsSelector)(apiRef)))
59
62
  });
60
63
  };
61
64
  exports.dimensionsStateInitializer = dimensionsStateInitializer;
65
+ const columnsTotalWidthSelector = (0, _createSelector.createSelector)(_columns.gridVisibleColumnDefinitionsSelector, _columns.gridColumnPositionsSelector, (visibleColumns, positions) => {
66
+ const colCount = visibleColumns.length;
67
+ if (colCount === 0) {
68
+ return 0;
69
+ }
70
+ return (0, _roundToDecimalPlaces.roundToDecimalPlaces)(positions[colCount - 1] + visibleColumns[colCount - 1].computedWidth, 1);
71
+ });
62
72
  function useGridDimensions(apiRef, props) {
63
73
  const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useResizeContainer');
64
74
  const errorShown = React.useRef(false);
65
75
  const rootDimensionsRef = React.useRef(EMPTY_SIZE);
66
- const dimensionsState = (0, _utils2.useGridSelector)(apiRef, _gridDimensionsSelectors.gridDimensionsSelector);
67
- const rowsMeta = (0, _utils2.useGridSelector)(apiRef, _gridRowsMetaSelector.gridRowsMetaSelector);
68
76
  const pinnedColumns = (0, _utils2.useGridSelector)(apiRef, _columns.gridVisiblePinnedColumnDefinitionsSelector);
69
77
  const densityFactor = (0, _utils2.useGridSelector)(apiRef, _density.gridDensityFactorSelector);
70
- const validRowHeight = React.useMemo(() => (0, _gridRowsUtils.getValidRowHeight)(props.rowHeight, _dataGridPropsDefaultValues.DATA_GRID_PROPS_DEFAULT_VALUES.rowHeight, _gridRowsUtils.rowHeightWarning), [props.rowHeight]);
71
- const rowHeight = Math.floor(validRowHeight * densityFactor);
72
- const headerHeight = Math.floor(props.columnHeaderHeight * densityFactor);
73
- const groupHeaderHeight = Math.floor((props.columnGroupHeaderHeight ?? props.columnHeaderHeight) * densityFactor);
74
- const headerFilterHeight = Math.floor((props.headerFilterHeight ?? props.columnHeaderHeight) * densityFactor);
75
- const columnsTotalWidth = (0, _roundToDecimalPlaces.roundToDecimalPlaces)((0, _columns.gridColumnsTotalWidthSelector)(apiRef), 1);
76
- const headersTotalHeight = (0, _gridColumnsUtils.getTotalHeaderHeight)(apiRef, props);
77
- const leftPinnedWidth = pinnedColumns.left.reduce((w, col) => w + col.computedWidth, 0);
78
- const rightPinnedWidth = pinnedColumns.right.reduce((w, col) => w + col.computedWidth, 0);
79
- const [savedSize, setSavedSize] = React.useState();
80
- const debouncedSetSavedSize = React.useMemo(() => (0, _throttle.throttle)(setSavedSize, props.resizeThrottleMs), [props.resizeThrottleMs]);
81
- React.useEffect(() => debouncedSetSavedSize.clear, [debouncedSetSavedSize]);
82
- const getRootDimensions = () => apiRef.current.state.dimensions;
83
- const setDimensions = (0, _utils.unstable_useEventCallback)(dimensions => {
78
+ const columnsTotalWidth = (0, _utils2.useGridSelector)(apiRef, columnsTotalWidthSelector);
79
+ const isFirstSizing = React.useRef(true);
80
+ const {
81
+ rowHeight,
82
+ headerHeight,
83
+ groupHeaderHeight,
84
+ headerFilterHeight,
85
+ headersTotalHeight,
86
+ leftPinnedWidth,
87
+ rightPinnedWidth
88
+ } = getStaticDimensions(props, apiRef, densityFactor, pinnedColumns);
89
+ const getRootDimensions = React.useCallback(() => (0, _gridDimensionsSelectors.gridDimensionsSelector)(apiRef.current.state), [apiRef]);
90
+ const setDimensions = React.useCallback(dimensions => {
84
91
  apiRef.current.setState(state => (0, _extends2.default)({}, state, {
85
92
  dimensions
86
93
  }));
87
- });
94
+ if (apiRef.current.rootElementRef.current) {
95
+ setCSSVariables(apiRef.current.rootElementRef.current, (0, _gridDimensionsSelectors.gridDimensionsSelector)(apiRef.current.state));
96
+ }
97
+ }, [apiRef]);
88
98
  const getViewportPageSize = React.useCallback(() => {
89
99
  const dimensions = (0, _gridDimensionsSelectors.gridDimensionsSelector)(apiRef.current.state);
90
100
  if (!dimensions.isReady) {
91
101
  return 0;
92
102
  }
93
- const currentPage = (0, _useGridVisibleRows.getVisibleRows)(apiRef, {
94
- pagination: props.pagination,
95
- paginationMode: props.paginationMode
96
- });
103
+ const currentPage = (0, _useGridVisibleRows.getVisibleRows)(apiRef);
97
104
 
98
105
  // TODO: Use a combination of scrollTop, dimensions.viewportInnerSize.height and rowsMeta.possitions
99
106
  // to find out the maximum number of rows that can fit in the visible part of the grid
@@ -104,16 +111,19 @@ function useGridDimensions(apiRef, props) {
104
111
  }
105
112
  const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
106
113
  return Math.min(maximumPageSizeWithoutScrollBar, currentPage.rows.length);
107
- }, [apiRef, props.pagination, props.paginationMode, props.getRowHeight, rowHeight]);
114
+ }, [apiRef, props.getRowHeight, rowHeight]);
108
115
  const updateDimensions = React.useCallback(() => {
116
+ if (isFirstSizing.current) {
117
+ return;
118
+ }
109
119
  // All the floating point dimensions should be rounded to .1 decimal places to avoid subpixel rendering issues
110
120
  // https://github.com/mui/mui-x/issues/9550#issuecomment-1619020477
111
121
  // https://github.com/mui/mui-x/issues/15721
112
122
  const rootElement = apiRef.current.rootElementRef.current;
113
- const pinnedRowsHeight = (0, _gridRowsUtils.calculatePinnedRowsHeight)(apiRef);
114
- const scrollbarSize = measureScrollbarSize(rootElement, columnsTotalWidth, props.scrollbarSize);
115
- const topContainerHeight = headersTotalHeight + pinnedRowsHeight.top;
116
- const bottomContainerHeight = pinnedRowsHeight.bottom;
123
+ const scrollbarSize = measureScrollbarSize(rootElement, props.scrollbarSize);
124
+ const rowsMeta = (0, _gridRowsMetaSelector.gridRowsMetaSelector)(apiRef.current.state);
125
+ const topContainerHeight = headersTotalHeight + rowsMeta.pinnedTopRowsTotalHeight;
126
+ const bottomContainerHeight = rowsMeta.pinnedBottomRowsTotalHeight;
117
127
  const contentSize = {
118
128
  width: columnsTotalWidth,
119
129
  height: (0, _roundToDecimalPlaces.roundToDecimalPlaces)(rowsMeta.currentPageTotalHeight, 1)
@@ -190,12 +200,21 @@ function useGridDimensions(apiRef, props) {
190
200
  bottomContainerHeight
191
201
  };
192
202
  const prevDimensions = apiRef.current.state.dimensions;
203
+ if ((0, _utils3.isDeepEqual)(prevDimensions, newDimensions)) {
204
+ return;
205
+ }
193
206
  setDimensions(newDimensions);
194
207
  if (!areElementSizesEqual(newDimensions.viewportInnerSize, prevDimensions.viewportInnerSize)) {
195
208
  apiRef.current.publishEvent('viewportInnerSizeChange', newDimensions.viewportInnerSize);
196
209
  }
197
210
  apiRef.current.updateRenderContext?.();
198
- }, [apiRef, setDimensions, props.scrollbarSize, props.autoHeight, rowsMeta.currentPageTotalHeight, rowHeight, headerHeight, groupHeaderHeight, headerFilterHeight, columnsTotalWidth, headersTotalHeight, leftPinnedWidth, rightPinnedWidth]);
211
+ }, [apiRef, setDimensions, props.scrollbarSize, props.autoHeight, rowHeight, headerHeight, groupHeaderHeight, headerFilterHeight, columnsTotalWidth, headersTotalHeight, leftPinnedWidth, rightPinnedWidth]);
212
+ const updateDimensionCallback = (0, _utils.unstable_useEventCallback)(updateDimensions);
213
+ const debouncedUpdateDimensions = React.useMemo(() => props.resizeThrottleMs > 0 ? (0, _throttle.throttle)(() => {
214
+ updateDimensionCallback();
215
+ apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
216
+ }, props.resizeThrottleMs) : undefined, [apiRef, props.resizeThrottleMs, updateDimensionCallback]);
217
+ React.useEffect(() => debouncedUpdateDimensions?.clear, [debouncedUpdateDimensions]);
199
218
  const apiPublic = {
200
219
  getRootDimensions
201
220
  };
@@ -203,35 +222,12 @@ function useGridDimensions(apiRef, props) {
203
222
  updateDimensions,
204
223
  getViewportPageSize
205
224
  };
225
+ (0, _utils.unstable_useEnhancedEffect)(updateDimensions, [updateDimensions]);
206
226
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, apiPublic, 'public');
207
227
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, apiPrivate, 'private');
208
- (0, _utils.unstable_useEnhancedEffect)(() => {
209
- if (savedSize) {
210
- updateDimensions();
211
- apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
212
- }
213
- }, [apiRef, savedSize, updateDimensions]);
214
- const root = apiRef.current.rootElementRef.current;
215
- (0, _utils.unstable_useEnhancedEffect)(() => {
216
- if (!root) {
217
- return;
218
- }
219
- const set = (k, v) => root.style.setProperty(k, v);
220
- set('--DataGrid-width', `${dimensionsState.viewportOuterSize.width}px`);
221
- set('--DataGrid-hasScrollX', `${Number(dimensionsState.hasScrollX)}`);
222
- set('--DataGrid-hasScrollY', `${Number(dimensionsState.hasScrollY)}`);
223
- set('--DataGrid-scrollbarSize', `${dimensionsState.scrollbarSize}px`);
224
- set('--DataGrid-rowWidth', `${dimensionsState.rowWidth}px`);
225
- set('--DataGrid-columnsTotalWidth', `${dimensionsState.columnsTotalWidth}px`);
226
- set('--DataGrid-leftPinnedWidth', `${dimensionsState.leftPinnedWidth}px`);
227
- set('--DataGrid-rightPinnedWidth', `${dimensionsState.rightPinnedWidth}px`);
228
- set('--DataGrid-headerHeight', `${dimensionsState.headerHeight}px`);
229
- set('--DataGrid-headersTotalHeight', `${dimensionsState.headersTotalHeight}px`);
230
- set('--DataGrid-topContainerHeight', `${dimensionsState.topContainerHeight}px`);
231
- set('--DataGrid-bottomContainerHeight', `${dimensionsState.bottomContainerHeight}px`);
232
- set('--height', `${dimensionsState.rowHeight}px`);
233
- }, [root, dimensionsState]);
234
- const isFirstSizing = React.useRef(true);
228
+ const handleRootMount = React.useCallback(root => {
229
+ setCSSVariables(root, (0, _gridDimensionsSelectors.gridDimensionsSelector)(apiRef.current.state));
230
+ }, [apiRef]);
235
231
  const handleResize = React.useCallback(size => {
236
232
  rootDimensionsRef.current = size;
237
233
  if (size.height === 0 && !errorShown.current && !props.autoHeight && !_isJSDOM.isJSDOM) {
@@ -242,28 +238,58 @@ function useGridDimensions(apiRef, props) {
242
238
  logger.error(['The parent DOM element of the Data Grid has an empty width.', 'Please make sure that this element has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'More details: https://mui.com/r/x-data-grid-no-dimensions.'].join('\n'));
243
239
  errorShown.current = true;
244
240
  }
245
- if (isFirstSizing.current) {
241
+ if (isFirstSizing.current || !debouncedUpdateDimensions) {
246
242
  // We want to initialize the grid dimensions as soon as possible to avoid flickering
247
- setSavedSize(size);
248
243
  isFirstSizing.current = false;
244
+ updateDimensions();
249
245
  return;
250
246
  }
251
- debouncedSetSavedSize(size);
252
- }, [props.autoHeight, debouncedSetSavedSize, logger]);
253
- (0, _utils.unstable_useEnhancedEffect)(updateDimensions, [updateDimensions]);
254
- (0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'sortedRowsSet', updateDimensions);
255
- (0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'paginationModelChange', updateDimensions);
256
- (0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'columnsChange', updateDimensions);
257
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'resize', handleResize);
247
+ debouncedUpdateDimensions();
248
+ }, [updateDimensions, props.autoHeight, debouncedUpdateDimensions, logger]);
249
+ (0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'rootMount', handleRootMount);
250
+ (0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'resize', handleResize);
258
251
  (0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'debouncedResize', props.onResize);
259
252
  }
260
- function measureScrollbarSize(rootElement, columnsTotalWidth, scrollbarSize) {
253
+ function setCSSVariables(root, dimensions) {
254
+ const set = (k, v) => root.style.setProperty(k, v);
255
+ set('--DataGrid-hasScrollX', `${Number(dimensions.hasScrollX)}`);
256
+ set('--DataGrid-hasScrollY', `${Number(dimensions.hasScrollY)}`);
257
+ set('--DataGrid-scrollbarSize', `${dimensions.scrollbarSize}px`);
258
+ set('--DataGrid-rowWidth', `${dimensions.rowWidth}px`);
259
+ set('--DataGrid-columnsTotalWidth', `${dimensions.columnsTotalWidth}px`);
260
+ set('--DataGrid-leftPinnedWidth', `${dimensions.leftPinnedWidth}px`);
261
+ set('--DataGrid-rightPinnedWidth', `${dimensions.rightPinnedWidth}px`);
262
+ set('--DataGrid-headerHeight', `${dimensions.headerHeight}px`);
263
+ set('--DataGrid-headersTotalHeight', `${dimensions.headersTotalHeight}px`);
264
+ set('--DataGrid-topContainerHeight', `${dimensions.topContainerHeight}px`);
265
+ set('--DataGrid-bottomContainerHeight', `${dimensions.bottomContainerHeight}px`);
266
+ set('--height', `${dimensions.rowHeight}px`);
267
+ }
268
+ function getStaticDimensions(props, apiRef, density, pinnedColumnns) {
269
+ const validRowHeight = (0, _gridRowsUtils.getValidRowHeight)(props.rowHeight, _dataGridPropsDefaultValues.DATA_GRID_PROPS_DEFAULT_VALUES.rowHeight, _gridRowsUtils.rowHeightWarning);
270
+ return {
271
+ rowHeight: Math.floor(validRowHeight * density),
272
+ headerHeight: Math.floor(props.columnHeaderHeight * density),
273
+ groupHeaderHeight: Math.floor((props.columnGroupHeaderHeight ?? props.columnHeaderHeight) * density),
274
+ headerFilterHeight: Math.floor((props.headerFilterHeight ?? props.columnHeaderHeight) * density),
275
+ columnsTotalWidth: columnsTotalWidthSelector(apiRef),
276
+ headersTotalHeight: (0, _gridColumnsUtils.getTotalHeaderHeight)(apiRef, props),
277
+ leftPinnedWidth: pinnedColumnns.left.reduce((w, col) => w + col.computedWidth, 0),
278
+ rightPinnedWidth: pinnedColumnns.right.reduce((w, col) => w + col.computedWidth, 0)
279
+ };
280
+ }
281
+ const scrollbarSizeCache = new WeakMap();
282
+ function measureScrollbarSize(rootElement, scrollbarSize) {
261
283
  if (scrollbarSize !== undefined) {
262
284
  return scrollbarSize;
263
285
  }
264
- if (rootElement === null || columnsTotalWidth === 0) {
286
+ if (rootElement === null) {
265
287
  return 0;
266
288
  }
289
+ const cachedSize = scrollbarSizeCache.get(rootElement);
290
+ if (cachedSize !== undefined) {
291
+ return cachedSize;
292
+ }
267
293
  const doc = (0, _utils.unstable_ownerDocument)(rootElement);
268
294
  const scrollDiv = doc.createElement('div');
269
295
  scrollDiv.style.width = '99px';
@@ -274,6 +300,7 @@ function measureScrollbarSize(rootElement, columnsTotalWidth, scrollbarSize) {
274
300
  rootElement.appendChild(scrollDiv);
275
301
  const size = scrollDiv.offsetWidth - scrollDiv.clientWidth;
276
302
  rootElement.removeChild(scrollDiv);
303
+ scrollbarSizeCache.set(rootElement, size);
277
304
  return size;
278
305
  }
279
306
  function areElementSizesEqual(a, b) {
@@ -5,12 +5,16 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.gridRowIsEditingSelector = exports.gridEditRowsStateSelector = exports.gridEditCellStateSelector = void 0;
7
7
  var _createSelector = require("../../../utils/createSelector");
8
+ var _gridEditRowModel = require("../../../models/gridEditRowModel");
8
9
  /**
9
10
  * Select the row editing state.
10
11
  */
11
12
  const gridEditRowsStateSelector = state => state.editRows;
12
13
  exports.gridEditRowsStateSelector = gridEditRowsStateSelector;
13
- const gridRowIsEditingSelector = exports.gridRowIsEditingSelector = (0, _createSelector.createSelector)(gridEditRowsStateSelector, (editRows, rowId) => Boolean(editRows[rowId]));
14
+ const gridRowIsEditingSelector = exports.gridRowIsEditingSelector = (0, _createSelector.createSelector)(gridEditRowsStateSelector, (editRows, {
15
+ rowId,
16
+ editMode
17
+ }) => editMode === _gridEditRowModel.GridEditModes.Row && Boolean(editRows[rowId]));
14
18
  const gridEditCellStateSelector = exports.gridEditCellStateSelector = (0, _createSelector.createSelector)(gridEditRowsStateSelector, (editRows, {
15
19
  rowId,
16
20
  field
@@ -240,10 +240,10 @@ const useGridRowEditing = (apiRef, props) => {
240
240
  (0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'rowEditStart', props.onRowEditStart);
241
241
  (0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'rowEditStop', props.onRowEditStop);
242
242
  const getRowMode = React.useCallback(id => {
243
- if (props.editMode === _gridEditRowModel.GridEditModes.Cell) {
244
- return _gridEditRowModel.GridRowModes.View;
245
- }
246
- const isEditing = (0, _gridEditingSelectors.gridRowIsEditingSelector)(apiRef.current.state, id);
243
+ const isEditing = (0, _gridEditingSelectors.gridRowIsEditingSelector)(apiRef.current.state, {
244
+ rowId: id,
245
+ editMode: props.editMode
246
+ });
247
247
  return isEditing ? _gridEditRowModel.GridRowModes.Edit : _gridEditRowModel.GridRowModes.View;
248
248
  }, [apiRef, props.editMode]);
249
249
  const updateRowModesModel = (0, _utils.unstable_useEventCallback)(newModel => {
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.gridVisibleRowsLookupSelector = exports.gridQuickFilterValuesSelector = exports.gridFilteredTopLevelRowCountSelector = exports.gridFilteredSortedTopLevelRowEntriesSelector = exports.gridFilteredSortedRowIdsSelector = exports.gridFilteredSortedRowEntriesSelector = exports.gridFilteredRowsLookupSelector = exports.gridFilteredRowCountSelector = exports.gridFilteredDescendantRowCountSelector = exports.gridFilteredDescendantCountLookupSelector = exports.gridFilteredChildrenCountLookupSelector = exports.gridFilterModelSelector = exports.gridFilterActiveItemsSelector = exports.gridFilterActiveItemsLookupSelector = exports.gridExpandedSortedRowTreeLevelPositionLookupSelector = exports.gridExpandedSortedRowIdsSelector = exports.gridExpandedSortedRowEntriesSelector = exports.gridExpandedRowCountSelector = void 0;
7
+ var _isObjectEmpty = require("@mui/x-internals/isObjectEmpty");
7
8
  var _createSelector = require("../../../utils/createSelector");
8
9
  var _gridSortingSelector = require("../sorting/gridSortingSelector");
9
10
  var _gridColumnsSelector = require("../columns/gridColumnsSelector");
@@ -55,8 +56,8 @@ const gridFilteredDescendantCountLookupSelector = exports.gridFilteredDescendant
55
56
  * Does not contain the collapsed children.
56
57
  * @category Filtering
57
58
  */
58
- const gridExpandedSortedRowEntriesSelector = exports.gridExpandedSortedRowEntriesSelector = (0, _createSelector.createSelectorMemoized)(gridVisibleRowsLookupSelector, _gridSortingSelector.gridSortedRowEntriesSelector, _gridRowsSelector.gridRowMaximumTreeDepthSelector, gridFilterModelSelector, gridQuickFilterValuesSelector, (visibleRowsLookup, sortedRows, maxDepth, filterModel, quickFilterValues) => {
59
- if (maxDepth < 2 && !filterModel.items.length && !quickFilterValues?.length) {
59
+ const gridExpandedSortedRowEntriesSelector = exports.gridExpandedSortedRowEntriesSelector = (0, _createSelector.createSelectorMemoized)(gridVisibleRowsLookupSelector, _gridSortingSelector.gridSortedRowEntriesSelector, (visibleRowsLookup, sortedRows) => {
60
+ if ((0, _isObjectEmpty.isObjectEmpty)(visibleRowsLookup)) {
60
61
  return sortedRows;
61
62
  }
62
63
  return sortedRows.filter(row => visibleRowsLookup[row.id] !== false);
@@ -74,7 +75,7 @@ const gridExpandedSortedRowIdsSelector = exports.gridExpandedSortedRowIdsSelecto
74
75
  * Contains the collapsed children.
75
76
  * @category Filtering
76
77
  */
77
- const gridFilteredSortedRowEntriesSelector = exports.gridFilteredSortedRowEntriesSelector = (0, _createSelector.createSelectorMemoized)(gridFilteredRowsLookupSelector, _gridSortingSelector.gridSortedRowEntriesSelector, (filteredRowsLookup, sortedRows) => sortedRows.filter(row => filteredRowsLookup[row.id] !== false));
78
+ const gridFilteredSortedRowEntriesSelector = exports.gridFilteredSortedRowEntriesSelector = (0, _createSelector.createSelectorMemoized)(gridFilteredRowsLookupSelector, _gridSortingSelector.gridSortedRowEntriesSelector, (filteredRowsLookup, sortedRows) => (0, _isObjectEmpty.isObjectEmpty)(filteredRowsLookup) ? sortedRows : sortedRows.filter(row => filteredRowsLookup[row.id] !== false));
78
79
 
79
80
  /**
80
81
  * Get the id of the rows accessible after the filtering process.
@@ -3,8 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getDefaultGridFilterModel = void 0;
6
+ exports.getDefaultGridFilterModel = exports.defaultGridFilterLookup = void 0;
7
7
  var _gridFilterItem = require("../../../models/gridFilterItem");
8
+ const defaultGridFilterLookup = exports.defaultGridFilterLookup = {
9
+ filteredRowsLookup: {},
10
+ filteredChildrenCountLookup: {},
11
+ filteredDescendantCountLookup: {}
12
+ };
8
13
  const getDefaultGridFilterModel = () => ({
9
14
  items: [],
10
15
  logicOperator: _gridFilterItem.GridLogicOperator.And,
@@ -28,12 +28,9 @@ var _jsxRuntime = require("react/jsx-runtime");
28
28
  const filterStateInitializer = (state, props, apiRef) => {
29
29
  const filterModel = props.filterModel ?? props.initialState?.filter?.filterModel ?? (0, _gridFilterState.getDefaultGridFilterModel)();
30
30
  return (0, _extends2.default)({}, state, {
31
- filter: {
32
- filterModel: (0, _gridFilterUtils.sanitizeFilterModel)(filterModel, props.disableMultipleColumnsFiltering, apiRef),
33
- filteredRowsLookup: {},
34
- filteredChildrenCountLookup: {},
35
- filteredDescendantCountLookup: {}
36
- },
31
+ filter: (0, _extends2.default)({
32
+ filterModel: (0, _gridFilterUtils.sanitizeFilterModel)(filterModel, props.disableMultipleColumnsFiltering, apiRef)
33
+ }, _gridFilterState.defaultGridFilterLookup),
37
34
  visibleRowsLookup: {}
38
35
  });
39
36
  };
@@ -280,12 +277,8 @@ const useGridFilter = (apiRef, props) => {
280
277
  } = props;
281
278
  const getRowsRef = (0, _useLazyRef.useLazyRef)(createMemoizedValues);
282
279
  const flatFilteringMethod = React.useCallback(params => {
283
- if (props.filterMode !== 'client' || !params.isRowMatchingFilters) {
284
- return {
285
- filteredRowsLookup: {},
286
- filteredChildrenCountLookup: {},
287
- filteredDescendantCountLookup: {}
288
- };
280
+ if (props.filterMode !== 'client' || !params.isRowMatchingFilters || !params.filterModel.items.length && !params.filterModel.quickFilterValues?.length) {
281
+ return _gridFilterState.defaultGridFilterLookup;
289
282
  }
290
283
  const dataRowIdToModelLookup = (0, _rows.gridRowsLookupSelector)(apiRef);
291
284
  const filteredRowsLookup = {};
@@ -303,7 +296,9 @@ const useGridFilter = (apiRef, props) => {
303
296
  const id = getRowId ? getRowId(row) : row.id;
304
297
  isRowMatchingFilters(row, undefined, result);
305
298
  const isRowPassing = (0, _gridFilterUtils.passFilterLogic)([result.passingFilterItems], [result.passingQuickFilterValues], params.filterModel, apiRef, filterCache);
306
- filteredRowsLookup[id] = isRowPassing;
299
+ if (!isRowPassing) {
300
+ filteredRowsLookup[id] = isRowPassing;
301
+ }
307
302
  }
308
303
  const footerId = 'auto-generated-group-footer-root';
309
304
  const footer = dataRowIdToModelLookup[footerId];
@@ -40,7 +40,7 @@ const useGridOverlays = () => {
40
40
  }
41
41
  if (loading) {
42
42
  overlayType = 'loadingOverlay';
43
- loadingOverlayVariant = rootProps.slotProps?.loadingOverlay?.[noRows ? 'noRowsVariant' : 'variant'] || null;
43
+ loadingOverlayVariant = rootProps.slotProps?.loadingOverlay?.[noRows ? 'noRowsVariant' : 'variant'] ?? (noRows ? 'skeleton' : 'linear-progress');
44
44
  }
45
45
  const overlaysProps = {
46
46
  overlayType,
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.throwIfPageSizeExceedsTheLimit = exports.getValidPage = exports.getPageCount = exports.getDefaultGridPaginationModel = exports.defaultPageSize = void 0;
7
- var _utils = require("../../utils");
7
+ var _signature = require("../../../constants/signature");
8
8
  const MAX_PAGE_SIZE = 100;
9
9
  const defaultPageSize = autoPageSize => autoPageSize ? 0 : 100;
10
10
  exports.defaultPageSize = defaultPageSize;
@@ -32,7 +32,7 @@ const getValidPage = (page, pageCount = 0) => {
32
32
  };
33
33
  exports.getValidPage = getValidPage;
34
34
  const throwIfPageSizeExceedsTheLimit = (pageSize, signatureProp) => {
35
- if (signatureProp === _utils.GridSignature.DataGrid && pageSize > MAX_PAGE_SIZE) {
35
+ if (signatureProp === _signature.GridSignature.DataGrid && pageSize > MAX_PAGE_SIZE) {
36
36
  throw new Error(['MUI X: `pageSize` cannot exceed 100 in the MIT version of the DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
37
37
  }
38
38
  };
@@ -13,7 +13,7 @@ var _useGridPaginationMeta = require("./useGridPaginationMeta");
13
13
  const paginationStateInitializer = (state, props) => {
14
14
  const paginationModel = (0, _extends2.default)({}, (0, _gridPaginationUtils.getDefaultGridPaginationModel)(props.autoPageSize), props.paginationModel ?? props.initialState?.pagination?.paginationModel);
15
15
  (0, _gridPaginationUtils.throwIfPageSizeExceedsTheLimit)(paginationModel.pageSize, props.signature);
16
- const rowCount = props.rowCount ?? props.initialState?.pagination?.rowCount;
16
+ const rowCount = props.rowCount ?? props.initialState?.pagination?.rowCount ?? (props.paginationMode === 'client' ? state.rows?.totalRowCount : undefined);
17
17
  const meta = props.paginationMeta ?? props.initialState?.pagination?.meta ?? {};
18
18
  return (0, _extends2.default)({}, state, {
19
19
  pagination: (0, _extends2.default)({}, state.pagination, {
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.useGridRowSelection = exports.rowSelectionStateInitializer = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
+ var _signature = require("../../../constants/signature");
11
12
  var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
12
13
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
13
14
  var _useGridLogger = require("../../utils/useGridLogger");
@@ -55,7 +56,7 @@ const useGridRowSelection = (apiRef, props) => {
55
56
  callback(...args);
56
57
  }
57
58
  }, [props.rowSelection]);
58
- const applyAutoSelection = props.signature !== _useGridApiEventHandler.GridSignature.DataGrid && (props.rowSelectionPropagation?.parents || props.rowSelectionPropagation?.descendants);
59
+ const applyAutoSelection = props.signature !== _signature.GridSignature.DataGrid && (props.rowSelectionPropagation?.parents || props.rowSelectionPropagation?.descendants);
59
60
  const propRowSelectionModel = React.useMemo(() => {
60
61
  return getSelectionModelPropValue(props.rowSelectionModel, (0, _gridRowSelectionSelector.gridRowSelectionStateSelector)(apiRef.current.state));
61
62
  }, [apiRef, props.rowSelectionModel]);
@@ -103,7 +104,7 @@ const useGridRowSelection = (apiRef, props) => {
103
104
  * API METHODS
104
105
  */
105
106
  const setRowSelectionModel = React.useCallback(model => {
106
- if (props.signature === _useGridApiEventHandler.GridSignature.DataGrid && !canHaveMultipleSelection && Array.isArray(model) && model.length > 1) {
107
+ if (props.signature === _signature.GridSignature.DataGrid && !canHaveMultipleSelection && Array.isArray(model) && model.length > 1) {
107
108
  throw new Error(['MUI X: `rowSelectionModel` can only contain 1 item in DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock multiple selection.'].join('\n'));
108
109
  }
109
110
  const currentModel = (0, _gridRowSelectionSelector.gridRowSelectionStateSelector)(apiRef.current.state);
@@ -251,7 +252,7 @@ const useGridRowSelection = (apiRef, props) => {
251
252
  selectRowRange
252
253
  };
253
254
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, selectionPublicApi, 'public');
254
- (0, _useGridApiMethod.useGridApiMethod)(apiRef, selectionPrivateApi, props.signature === _useGridApiEventHandler.GridSignature.DataGrid ? 'private' : 'public');
255
+ (0, _useGridApiMethod.useGridApiMethod)(apiRef, selectionPrivateApi, props.signature === _signature.GridSignature.DataGrid ? 'private' : 'public');
255
256
 
256
257
  /*
257
258
  * EVENTS
@@ -267,7 +268,7 @@ const useGridRowSelection = (apiRef, props) => {
267
268
  if (props.filterMode === 'server') {
268
269
  return !rowsLookup[id];
269
270
  }
270
- return filteredRowsLookup[id] !== true;
271
+ return !rowsLookup[id] || filteredRowsLookup[id] === false;
271
272
  };
272
273
  let hasChanged = false;
273
274
  currentSelection.forEach(id => {
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.findRowsToSelect = exports.findRowsToDeselect = exports.ROW_SELECTION_PROPAGATION_DEFAULT = void 0;
7
7
  exports.getCheckboxPropsSelector = getCheckboxPropsSelector;
8
8
  exports.isMultipleRowSelectionEnabled = isMultipleRowSelectionEnabled;
9
- var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
9
+ var _signature = require("../../../constants/signature");
10
10
  var _gridRowsUtils = require("../rows/gridRowsUtils");
11
11
  var _gridFilterSelector = require("../filter/gridFilterSelector");
12
12
  var _gridSortingSelector = require("../sorting/gridSortingSelector");
@@ -71,7 +71,7 @@ function getCheckboxPropsSelector(groupId, autoSelectParents) {
71
71
  });
72
72
  }
73
73
  function isMultipleRowSelectionEnabled(props) {
74
- if (props.signature === _useGridApiEventHandler.GridSignature.DataGrid) {
74
+ if (props.signature === _signature.GridSignature.DataGrid) {
75
75
  // DataGrid Community has multiple row selection enabled only if checkbox selection is enabled.
76
76
  return props.checkboxSelection && props.disableMultipleRowSelection !== true;
77
77
  }
@@ -100,7 +100,7 @@ const getFilteredRowNodeSiblings = (tree, filteredRows, id) => {
100
100
  return [];
101
101
  }
102
102
  const parentNode = tree[parent];
103
- return parentNode.children.filter(childId => childId !== id && filteredRows[childId]);
103
+ return parentNode.children.filter(childId => childId !== id && filteredRows[childId] !== false);
104
104
  };
105
105
  const findRowsToSelect = (apiRef, tree, selectedRow, autoSelectDescendants, autoSelectParents, addRow) => {
106
106
  const filteredRows = (0, _gridFilterSelector.gridFilteredRowsLookupSelector)(apiRef);
@@ -5,12 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.buildRootGroup = exports.GRID_ROOT_GROUP_ID = exports.GRID_ID_AUTOGENERATED = void 0;
8
- exports.calculatePinnedRowsHeight = calculatePinnedRowsHeight;
9
8
  exports.checkGridRowIdIsValid = checkGridRowIdIsValid;
10
9
  exports.computeRowsUpdates = computeRowsUpdates;
11
10
  exports.updateCacheWithNewRows = exports.rowHeightWarning = exports.minimalContentHeight = exports.isAutogeneratedRowNode = exports.isAutogeneratedRow = exports.getValidRowHeight = exports.getTreeNodeDescendants = exports.getTopLevelRowCount = exports.getRowsStateFromCache = exports.getRowIdFromRowModel = exports.getRowHeightWarning = exports.createRowsInternalCache = void 0;
12
11
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
- var _gridRowsSelector = require("./gridRowsSelector");
14
12
  const GRID_ROOT_GROUP_ID = exports.GRID_ROOT_GROUP_ID = `auto-generated-group-node-root`;
15
13
  const GRID_ID_AUTOGENERATED = exports.GRID_ID_AUTOGENERATED = Symbol('mui.id_autogenerated');
16
14
  const buildRootGroup = () => ({
@@ -280,21 +278,6 @@ const updateCacheWithNewRows = ({
280
278
  };
281
279
  };
282
280
  exports.updateCacheWithNewRows = updateCacheWithNewRows;
283
- function calculatePinnedRowsHeight(apiRef) {
284
- const pinnedRows = (0, _gridRowsSelector.gridPinnedRowsSelector)(apiRef);
285
- const topPinnedRowsHeight = pinnedRows?.top?.reduce((acc, value) => {
286
- acc += apiRef.current.unstable_getRowHeight(value.id);
287
- return acc;
288
- }, 0) || 0;
289
- const bottomPinnedRowsHeight = pinnedRows?.bottom?.reduce((acc, value) => {
290
- acc += apiRef.current.unstable_getRowHeight(value.id);
291
- return acc;
292
- }, 0) || 0;
293
- return {
294
- top: topPinnedRowsHeight,
295
- bottom: bottomPinnedRowsHeight
296
- };
297
- }
298
281
  const minimalContentHeight = exports.minimalContentHeight = 'var(--DataGrid-overlayHeight, calc(var(--height) * 2))';
299
282
  function computeRowsUpdates(apiRef, updates, getRowId) {
300
283
  const nonPinnedRowsUpdates = [];
@@ -9,10 +9,12 @@ exports.useGridRows = exports.rowsStateInitializer = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _useLazyRef = _interopRequireDefault(require("@mui/utils/useLazyRef"));
12
+ var _isObjectEmpty = require("@mui/x-internals/isObjectEmpty");
12
13
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
13
14
  var _useGridLogger = require("../../utils/useGridLogger");
14
15
  var _gridRowsSelector = require("./gridRowsSelector");
15
16
  var _useTimeout = require("../../utils/useTimeout");
17
+ var _signature = require("../../../constants/signature");
16
18
  var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
17
19
  var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
18
20
  var _gridSortingSelector = require("../sorting/gridSortingSelector");
@@ -127,7 +129,7 @@ const useGridRows = (apiRef, props) => {
127
129
  });
128
130
  }, [logger, props.getRowId, props.loading, props.rowCount, throttledRowsChange, apiRef]);
129
131
  const updateRows = React.useCallback(updates => {
130
- if (props.signature === _useGridApiEventHandler.GridSignature.DataGrid && updates.length > 1) {
132
+ if (props.signature === _signature.GridSignature.DataGrid && updates.length > 1) {
131
133
  throw new Error(['MUI X: You cannot update several rows at once in `apiRef.current.updateRows` on the DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
132
134
  }
133
135
  const nonPinnedRowsUpdates = (0, _gridRowsUtils.computeRowsUpdates)(apiRef, updates, props.getRowId);
@@ -230,7 +232,7 @@ const useGridRows = (apiRef, props) => {
230
232
  }
231
233
  if (applyFiltering) {
232
234
  const filteredRowsLookup = (0, _gridFilterSelector.gridFilteredRowsLookupSelector)(apiRef);
233
- children = children.filter(childId => filteredRowsLookup[childId] !== false);
235
+ children = (0, _isObjectEmpty.isObjectEmpty)(filteredRowsLookup) ? children : children.filter(childId => filteredRowsLookup[childId] !== false);
234
236
  }
235
237
  return children;
236
238
  }, [apiRef]);
@@ -268,7 +270,7 @@ const useGridRows = (apiRef, props) => {
268
270
  apiRef.current.publishEvent('rowsSet');
269
271
  }, [apiRef, logger]);
270
272
  const replaceRows = React.useCallback((firstRowToRender, newRows) => {
271
- if (props.signature === _useGridApiEventHandler.GridSignature.DataGrid && newRows.length > 1) {
273
+ if (props.signature === _signature.GridSignature.DataGrid && newRows.length > 1) {
272
274
  throw new Error(['MUI X: You cannot replace rows using `apiRef.current.unstable_replaceRows` on the DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
273
275
  }
274
276
  if (newRows.length === 0) {
@@ -418,7 +420,7 @@ const useGridRows = (apiRef, props) => {
418
420
  }, [apiRef, props.rowCount]);
419
421
  (0, _pipeProcessing.useGridRegisterPipeApplier)(apiRef, 'hydrateRows', applyHydrateRowsProcessor);
420
422
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, rowApi, 'public');
421
- (0, _useGridApiMethod.useGridApiMethod)(apiRef, rowProApi, props.signature === _useGridApiEventHandler.GridSignature.DataGrid ? 'private' : 'public');
423
+ (0, _useGridApiMethod.useGridApiMethod)(apiRef, rowProApi, props.signature === _signature.GridSignature.DataGrid ? 'private' : 'public');
422
424
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, rowProPrivateApi, 'private');
423
425
 
424
426
  // The effect do not track any value defined synchronously during the 1st render by hooks called after `useGridRows`