@mui/x-data-grid 8.0.0-alpha.1 → 8.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 (192) hide show
  1. package/CHANGELOG.md +228 -7
  2. package/DataGrid/DataGrid.js +9 -9
  3. package/components/GridPagination.js +2 -1
  4. package/components/base/GridOverlays.d.ts +4 -3
  5. package/components/base/GridOverlays.js +2 -24
  6. package/components/base/index.d.ts +0 -1
  7. package/components/base/index.js +1 -2
  8. package/components/cell/GridCell.js +7 -10
  9. package/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
  10. package/components/columnSelection/GridHeaderCheckbox.js +2 -3
  11. package/components/toolbar/GridToolbarColumnsButton.js +3 -4
  12. package/components/toolbar/GridToolbarDensitySelector.js +3 -4
  13. package/components/toolbar/GridToolbarExportContainer.js +3 -4
  14. package/components/toolbar/GridToolbarFilterButton.d.ts +2 -0
  15. package/components/toolbar/GridToolbarFilterButton.js +7 -6
  16. package/components/toolbar/GridToolbarQuickFilter.js +1 -0
  17. package/components/virtualization/GridVirtualScroller.js +5 -3
  18. package/constants/dataGridPropsDefaultValues.js +2 -3
  19. package/constants/localeTextConstants.js +0 -1
  20. package/hooks/features/dimensions/gridDimensionsApi.d.ts +0 -4
  21. package/hooks/features/dimensions/useGridDimensions.js +3 -19
  22. package/hooks/features/index.d.ts +1 -0
  23. package/hooks/features/index.js +1 -0
  24. package/hooks/features/listView/gridListViewSelectors.d.ts +3 -1
  25. package/hooks/features/listView/gridListViewSelectors.js +3 -1
  26. package/hooks/features/listView/index.d.ts +1 -0
  27. package/hooks/features/listView/index.js +1 -0
  28. package/hooks/features/overlays/useGridOverlays.d.ts +7 -4
  29. package/hooks/features/overlays/useGridOverlays.js +19 -1
  30. package/hooks/features/rowSelection/useGridRowSelection.js +0 -9
  31. package/hooks/features/rowSelection/utils.js +2 -2
  32. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -1
  33. package/hooks/features/virtualization/useGridVirtualScroller.js +55 -15
  34. package/index.js +1 -1
  35. package/locales/arSD.js +0 -1
  36. package/locales/beBY.js +0 -1
  37. package/locales/bgBG.js +0 -1
  38. package/locales/csCZ.js +0 -1
  39. package/locales/daDK.js +0 -1
  40. package/locales/deDE.js +10 -13
  41. package/locales/elGR.js +0 -1
  42. package/locales/esES.js +10 -13
  43. package/locales/faIR.js +0 -1
  44. package/locales/fiFI.js +0 -1
  45. package/locales/frFR.js +0 -1
  46. package/locales/heIL.js +0 -1
  47. package/locales/hrHR.js +0 -1
  48. package/locales/huHU.js +0 -1
  49. package/locales/isIS.js +0 -1
  50. package/locales/itIT.js +0 -1
  51. package/locales/jaJP.js +0 -1
  52. package/locales/koKR.js +0 -1
  53. package/locales/nbNO.js +0 -1
  54. package/locales/nlNL.js +0 -1
  55. package/locales/nnNO.js +0 -1
  56. package/locales/plPL.js +0 -1
  57. package/locales/ptBR.js +10 -13
  58. package/locales/ptPT.js +10 -13
  59. package/locales/roRO.js +0 -1
  60. package/locales/ruRU.js +0 -1
  61. package/locales/skSK.js +0 -1
  62. package/locales/svSE.js +0 -1
  63. package/locales/trTR.js +0 -1
  64. package/locales/ukUA.js +0 -1
  65. package/locales/urPK.js +0 -1
  66. package/locales/viVN.js +0 -1
  67. package/locales/zhCN.js +10 -13
  68. package/locales/zhHK.js +0 -1
  69. package/locales/zhTW.js +0 -1
  70. package/models/api/gridCoreApi.d.ts +1 -1
  71. package/models/api/gridLocaleTextApi.d.ts +0 -1
  72. package/models/colDef/gridColDef.d.ts +24 -24
  73. package/models/props/DataGridProps.d.ts +9 -9
  74. package/modern/DataGrid/DataGrid.js +9 -9
  75. package/modern/components/GridPagination.js +2 -1
  76. package/modern/components/base/GridOverlays.js +2 -24
  77. package/modern/components/base/index.js +1 -2
  78. package/modern/components/cell/GridCell.js +7 -10
  79. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
  80. package/modern/components/columnSelection/GridHeaderCheckbox.js +2 -3
  81. package/modern/components/toolbar/GridToolbarColumnsButton.js +3 -4
  82. package/modern/components/toolbar/GridToolbarDensitySelector.js +3 -4
  83. package/modern/components/toolbar/GridToolbarExportContainer.js +3 -4
  84. package/modern/components/toolbar/GridToolbarFilterButton.js +7 -6
  85. package/modern/components/toolbar/GridToolbarQuickFilter.js +1 -0
  86. package/modern/components/virtualization/GridVirtualScroller.js +5 -3
  87. package/modern/constants/dataGridPropsDefaultValues.js +2 -3
  88. package/modern/constants/localeTextConstants.js +0 -1
  89. package/modern/hooks/features/dimensions/useGridDimensions.js +3 -19
  90. package/modern/hooks/features/index.js +1 -0
  91. package/modern/hooks/features/listView/gridListViewSelectors.js +3 -1
  92. package/modern/hooks/features/listView/index.js +1 -0
  93. package/modern/hooks/features/overlays/useGridOverlays.js +19 -1
  94. package/modern/hooks/features/rowSelection/useGridRowSelection.js +0 -9
  95. package/modern/hooks/features/rowSelection/utils.js +2 -2
  96. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +55 -15
  97. package/modern/index.js +1 -1
  98. package/modern/locales/arSD.js +0 -1
  99. package/modern/locales/beBY.js +0 -1
  100. package/modern/locales/bgBG.js +0 -1
  101. package/modern/locales/csCZ.js +0 -1
  102. package/modern/locales/daDK.js +0 -1
  103. package/modern/locales/deDE.js +10 -13
  104. package/modern/locales/elGR.js +0 -1
  105. package/modern/locales/esES.js +10 -13
  106. package/modern/locales/faIR.js +0 -1
  107. package/modern/locales/fiFI.js +0 -1
  108. package/modern/locales/frFR.js +0 -1
  109. package/modern/locales/heIL.js +0 -1
  110. package/modern/locales/hrHR.js +0 -1
  111. package/modern/locales/huHU.js +0 -1
  112. package/modern/locales/isIS.js +0 -1
  113. package/modern/locales/itIT.js +0 -1
  114. package/modern/locales/jaJP.js +0 -1
  115. package/modern/locales/koKR.js +0 -1
  116. package/modern/locales/nbNO.js +0 -1
  117. package/modern/locales/nlNL.js +0 -1
  118. package/modern/locales/nnNO.js +0 -1
  119. package/modern/locales/plPL.js +0 -1
  120. package/modern/locales/ptBR.js +10 -13
  121. package/modern/locales/ptPT.js +10 -13
  122. package/modern/locales/roRO.js +0 -1
  123. package/modern/locales/ruRU.js +0 -1
  124. package/modern/locales/skSK.js +0 -1
  125. package/modern/locales/svSE.js +0 -1
  126. package/modern/locales/trTR.js +0 -1
  127. package/modern/locales/ukUA.js +0 -1
  128. package/modern/locales/urPK.js +0 -1
  129. package/modern/locales/viVN.js +0 -1
  130. package/modern/locales/zhCN.js +10 -13
  131. package/modern/locales/zhHK.js +0 -1
  132. package/modern/locales/zhTW.js +0 -1
  133. package/node/DataGrid/DataGrid.js +9 -9
  134. package/node/components/GridPagination.js +2 -1
  135. package/node/components/base/GridOverlays.js +2 -24
  136. package/node/components/base/index.js +0 -11
  137. package/node/components/cell/GridCell.js +7 -10
  138. package/node/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
  139. package/node/components/columnSelection/GridHeaderCheckbox.js +2 -3
  140. package/node/components/toolbar/GridToolbarColumnsButton.js +3 -4
  141. package/node/components/toolbar/GridToolbarDensitySelector.js +3 -4
  142. package/node/components/toolbar/GridToolbarExportContainer.js +3 -4
  143. package/node/components/toolbar/GridToolbarFilterButton.js +7 -6
  144. package/node/components/toolbar/GridToolbarQuickFilter.js +1 -0
  145. package/node/components/virtualization/GridVirtualScroller.js +5 -3
  146. package/node/constants/dataGridPropsDefaultValues.js +2 -3
  147. package/node/constants/localeTextConstants.js +0 -1
  148. package/node/hooks/features/dimensions/useGridDimensions.js +2 -18
  149. package/node/hooks/features/index.js +11 -0
  150. package/node/hooks/features/listView/gridListViewSelectors.js +3 -1
  151. package/node/hooks/features/listView/index.js +16 -0
  152. package/node/hooks/features/overlays/useGridOverlays.js +21 -1
  153. package/node/hooks/features/rowSelection/useGridRowSelection.js +0 -9
  154. package/node/hooks/features/rowSelection/utils.js +2 -2
  155. package/node/hooks/features/virtualization/useGridVirtualScroller.js +55 -15
  156. package/node/index.js +1 -1
  157. package/node/locales/arSD.js +0 -1
  158. package/node/locales/beBY.js +0 -1
  159. package/node/locales/bgBG.js +0 -1
  160. package/node/locales/csCZ.js +0 -1
  161. package/node/locales/daDK.js +0 -1
  162. package/node/locales/deDE.js +10 -13
  163. package/node/locales/elGR.js +0 -1
  164. package/node/locales/esES.js +10 -13
  165. package/node/locales/faIR.js +0 -1
  166. package/node/locales/fiFI.js +0 -1
  167. package/node/locales/frFR.js +0 -1
  168. package/node/locales/heIL.js +0 -1
  169. package/node/locales/hrHR.js +0 -1
  170. package/node/locales/huHU.js +0 -1
  171. package/node/locales/isIS.js +0 -1
  172. package/node/locales/itIT.js +0 -1
  173. package/node/locales/jaJP.js +0 -1
  174. package/node/locales/koKR.js +0 -1
  175. package/node/locales/nbNO.js +0 -1
  176. package/node/locales/nlNL.js +0 -1
  177. package/node/locales/nnNO.js +0 -1
  178. package/node/locales/plPL.js +0 -1
  179. package/node/locales/ptBR.js +10 -13
  180. package/node/locales/ptPT.js +10 -13
  181. package/node/locales/roRO.js +0 -1
  182. package/node/locales/ruRU.js +0 -1
  183. package/node/locales/skSK.js +0 -1
  184. package/node/locales/svSE.js +0 -1
  185. package/node/locales/trTR.js +0 -1
  186. package/node/locales/ukUA.js +0 -1
  187. package/node/locales/urPK.js +0 -1
  188. package/node/locales/viVN.js +0 -1
  189. package/node/locales/zhCN.js +10 -13
  190. package/node/locales/zhHK.js +0 -1
  191. package/node/locales/zhTW.js +0 -1
  192. package/package.json +2 -2
@@ -76,28 +76,13 @@ function useGridDimensions(apiRef, props) {
76
76
  const rightPinnedWidth = pinnedColumns.right.reduce((w, col) => w + col.computedWidth, 0);
77
77
  const [savedSize, setSavedSize] = React.useState();
78
78
  const debouncedSetSavedSize = React.useMemo(() => (0, _throttle.throttle)(setSavedSize, props.resizeThrottleMs), [props.resizeThrottleMs]);
79
- const previousSize = React.useRef();
79
+ React.useEffect(() => debouncedSetSavedSize.clear, [debouncedSetSavedSize]);
80
80
  const getRootDimensions = () => apiRef.current.state.dimensions;
81
81
  const setDimensions = (0, _utils.unstable_useEventCallback)(dimensions => {
82
82
  apiRef.current.setState(state => (0, _extends2.default)({}, state, {
83
83
  dimensions
84
84
  }));
85
85
  });
86
- const resize = React.useCallback(() => {
87
- const element = apiRef.current.mainElementRef.current;
88
- if (!element) {
89
- return;
90
- }
91
- const computedStyle = (0, _utils.unstable_ownerWindow)(element).getComputedStyle(element);
92
- const newSize = {
93
- width: parseFloat(computedStyle.width) || 0,
94
- height: parseFloat(computedStyle.height) || 0
95
- };
96
- if (!previousSize.current || !areElementSizesEqual(previousSize.current, newSize)) {
97
- apiRef.current.publishEvent('resize', newSize);
98
- previousSize.current = newSize;
99
- }
100
- }, [apiRef]);
101
86
  const getViewportPageSize = React.useCallback(() => {
102
87
  const dimensions = (0, _gridDimensionsSelectors.gridDimensionsSelector)(apiRef.current.state);
103
88
  if (!dimensions.isReady) {
@@ -208,7 +193,6 @@ function useGridDimensions(apiRef, props) {
208
193
  apiRef.current.updateRenderContext?.();
209
194
  }, [apiRef, setDimensions, props.scrollbarSize, props.autoHeight, rowsMeta.currentPageTotalHeight, rowHeight, headerHeight, groupHeaderHeight, headerFilterHeight, columnsTotalWidth, headersTotalHeight, leftPinnedWidth, rightPinnedWidth]);
210
195
  const apiPublic = {
211
- resize,
212
196
  getRootDimensions
213
197
  };
214
198
  const apiPrivate = {
@@ -248,7 +232,7 @@ function useGridDimensions(apiRef, props) {
248
232
  rootDimensionsRef.current = size;
249
233
 
250
234
  // jsdom has no layout capabilities
251
- const isJSDOM = /jsdom/.test(window.navigator.userAgent);
235
+ const isJSDOM = /jsdom|HappyDOM/.test(window.navigator.userAgent);
252
236
  if (size.height === 0 && !errorShown.current && !props.autoHeight && !isJSDOM) {
253
237
  logger.error(['The parent DOM element of the Data Grid has an empty height.', 'Please make sure that this element has an intrinsic height.', 'The grid displays with a height of 0px.', '', 'More details: https://mui.com/r/x-data-grid-no-dimensions.'].join('\n'));
254
238
  errorShown.current = true;
@@ -91,6 +91,17 @@ Object.keys(_focus).forEach(function (key) {
91
91
  }
92
92
  });
93
93
  });
94
+ var _listView = require("./listView");
95
+ Object.keys(_listView).forEach(function (key) {
96
+ if (key === "default" || key === "__esModule") return;
97
+ if (key in exports && exports[key] === _listView[key]) return;
98
+ Object.defineProperty(exports, key, {
99
+ enumerable: true,
100
+ get: function () {
101
+ return _listView[key];
102
+ }
103
+ });
104
+ });
94
105
  var _pagination = require("./pagination");
95
106
  Object.keys(_pagination).forEach(function (key) {
96
107
  if (key === "default" || key === "__esModule") return;
@@ -5,7 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.gridListColumnSelector = void 0;
7
7
  /**
8
- * Get a list column definition
8
+ * Get the list column definition
9
+ * @category List View
10
+ * @ignore - Do not document
9
11
  */
10
12
  const gridListColumnSelector = state => state.listViewColumn;
11
13
  exports.gridListColumnSelector = gridListColumnSelector;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _gridListViewSelectors = require("./gridListViewSelectors");
7
+ Object.keys(_gridListViewSelectors).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _gridListViewSelectors[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _gridListViewSelectors[key];
14
+ }
15
+ });
16
+ });
@@ -1,14 +1,20 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.useGridOverlays = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var React = _interopRequireWildcard(require("react"));
7
11
  var _utils = require("../../utils");
8
12
  var _useGridApiContext = require("../../utils/useGridApiContext");
9
13
  var _useGridRootProps = require("../../utils/useGridRootProps");
10
14
  var _filter = require("../filter");
11
15
  var _rows = require("../rows");
16
+ var _GridOverlays = require("../../../components/base/GridOverlays");
17
+ var _jsxRuntime = require("react/jsx-runtime");
12
18
  /**
13
19
  * Uses the grid state to determine which overlay to display.
14
20
  * Returns the active overlay type and the active loading overlay variant.
@@ -34,9 +40,23 @@ const useGridOverlays = () => {
34
40
  overlayType = 'loadingOverlay';
35
41
  loadingOverlayVariant = rootProps.slotProps?.loadingOverlay?.[noRows ? 'noRowsVariant' : 'variant'] || null;
36
42
  }
37
- return {
43
+ const overlaysProps = {
38
44
  overlayType,
39
45
  loadingOverlayVariant
40
46
  };
47
+ const getOverlay = () => {
48
+ if (!overlayType) {
49
+ return null;
50
+ }
51
+ const Overlay = rootProps.slots?.[overlayType];
52
+ const overlayProps = rootProps.slotProps?.[overlayType];
53
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridOverlays.GridOverlayWrapper, (0, _extends2.default)({}, overlaysProps, {
54
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Overlay, (0, _extends2.default)({}, overlayProps))
55
+ }));
56
+ };
57
+ return {
58
+ getOverlay,
59
+ overlaysProps
60
+ };
41
61
  };
42
62
  exports.useGridOverlays = useGridOverlays;
@@ -257,11 +257,7 @@ const useGridRowSelection = (apiRef, props) => {
257
257
  /*
258
258
  * EVENTS
259
259
  */
260
- const isFirstRender = React.useRef(true);
261
260
  const removeOutdatedSelection = React.useCallback((sortModelUpdated = false) => {
262
- if (isFirstRender.current) {
263
- return;
264
- }
265
261
  const currentSelection = (0, _gridRowSelectionSelector.gridRowSelectionStateSelector)(apiRef.current.state);
266
262
  const rowsLookup = (0, _gridRowsSelector.gridRowsLookupSelector)(apiRef);
267
263
  const filteredRowsLookup = (0, _gridFilterSelector.gridFilteredRowsLookupSelector)(apiRef);
@@ -489,10 +485,5 @@ const useGridRowSelection = (apiRef, props) => {
489
485
  React.useEffect(() => {
490
486
  runIfRowSelectionIsEnabled(removeOutdatedSelection);
491
487
  }, [removeOutdatedSelection, runIfRowSelectionIsEnabled]);
492
- React.useEffect(() => {
493
- if (isFirstRender.current) {
494
- isFirstRender.current = false;
495
- }
496
- }, []);
497
488
  };
498
489
  exports.useGridRowSelection = useGridRowSelection;
@@ -14,8 +14,8 @@ var _gridRowSelectionSelector = require("./gridRowSelectionSelector");
14
14
  var _gridRowsSelector = require("../rows/gridRowsSelector");
15
15
  var _createSelector = require("../../../utils/createSelector");
16
16
  const ROW_SELECTION_PROPAGATION_DEFAULT = exports.ROW_SELECTION_PROPAGATION_DEFAULT = {
17
- parents: false,
18
- descendants: false
17
+ parents: true,
18
+ descendants: true
19
19
  };
20
20
  function getGridRowGroupSelectableDescendants(apiRef, groupId) {
21
21
  const rowTree = (0, _gridRowsSelector.gridRowTreeSelector)(apiRef);
@@ -15,8 +15,8 @@ var ReactDOM = _interopRequireWildcard(require("react-dom"));
15
15
  var _utils = require("@mui/utils");
16
16
  var _useLazyRef = _interopRequireDefault(require("@mui/utils/useLazyRef"));
17
17
  var _useTimeout = _interopRequireDefault(require("@mui/utils/useTimeout"));
18
- var _useResizeObserver = require("@mui/x-internals/useResizeObserver");
19
18
  var _RtlProvider = require("@mui/system/RtlProvider");
19
+ var _reactMajor = _interopRequireDefault(require("@mui/x-internals/reactMajor"));
20
20
  var _useGridPrivateApiContext = require("../../utils/useGridPrivateApiContext");
21
21
  var _useGridRootProps = require("../../utils/useGridRootProps");
22
22
  var _useGridSelector = require("../../utils/useGridSelector");
@@ -59,7 +59,7 @@ const createScrollCache = (isRtl, rowBufferPx, columnBufferPx, verticalBuffer, h
59
59
  let isJSDOM = false;
60
60
  try {
61
61
  if (typeof window !== 'undefined') {
62
- isJSDOM = /jsdom/.test(window.navigator.userAgent);
62
+ isJSDOM = /jsdom|HappyDOM/.test(window.navigator.userAgent);
63
63
  }
64
64
  } catch (_) {
65
65
  /* ignore */
@@ -97,7 +97,44 @@ const useGridVirtualScroller = () => {
97
97
  const contentHeight = dimensions.contentSize.height;
98
98
  const columnsTotalWidth = dimensions.columnsTotalWidth;
99
99
  const hasColSpan = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridHasColSpanSelector);
100
- (0, _useResizeObserver.useResizeObserver)(mainRef, () => apiRef.current.resize());
100
+ const mainRefCallback = React.useCallback(node => {
101
+ mainRef.current = node;
102
+ if (!node) {
103
+ return undefined;
104
+ }
105
+ const initialRect = node.getBoundingClientRect();
106
+ let lastSize = {
107
+ width: initialRect.width,
108
+ height: initialRect.height
109
+ };
110
+ apiRef.current.publishEvent('resize', lastSize);
111
+ if (typeof ResizeObserver === 'undefined') {
112
+ return undefined;
113
+ }
114
+ const observer = new ResizeObserver(entries => {
115
+ const entry = entries[0];
116
+ if (!entry) {
117
+ return;
118
+ }
119
+ const newSize = {
120
+ width: entry.contentRect.width,
121
+ height: entry.contentRect.height
122
+ };
123
+ if (newSize.width === lastSize.width && newSize.height === lastSize.height) {
124
+ return;
125
+ }
126
+ apiRef.current.publishEvent('resize', newSize);
127
+ lastSize = newSize;
128
+ });
129
+ observer.observe(node);
130
+ if (_reactMajor.default >= 19) {
131
+ return () => {
132
+ mainRef.current = null;
133
+ observer.disconnect();
134
+ };
135
+ }
136
+ return undefined;
137
+ }, [apiRef, mainRef]);
101
138
 
102
139
  /*
103
140
  * Scroll context logic
@@ -148,9 +185,13 @@ const useGridVirtualScroller = () => {
148
185
  previousContextScrollPosition.current = scrollPosition.current;
149
186
  }, [apiRef, dimensions.isReady]);
150
187
  const triggerUpdateRenderContext = (0, _utils.unstable_useEventCallback)(() => {
188
+ const scroller = scrollerRef.current;
189
+ if (!scroller) {
190
+ return undefined;
191
+ }
151
192
  const newScroll = {
152
- top: scrollerRef.current.scrollTop,
153
- left: scrollerRef.current.scrollLeft
193
+ top: scroller.scrollTop,
194
+ left: scroller.scrollLeft
154
195
  };
155
196
  const dx = newScroll.left - scrollPosition.current.left;
156
197
  const dy = newScroll.top - scrollPosition.current.top;
@@ -400,10 +441,6 @@ const useGridVirtualScroller = () => {
400
441
  React.useEffect(() => {
401
442
  apiRef.current.publishEvent('virtualScrollerContentSizeChange');
402
443
  }, [apiRef, contentSize]);
403
- (0, _utils.unstable_useEnhancedEffect)(() => {
404
- // FIXME: Is this really necessary?
405
- apiRef.current.resize();
406
- }, [apiRef, rowsMeta.currentPageTotalHeight]);
407
444
  (0, _utils.unstable_useEnhancedEffect)(() => {
408
445
  // TODO a scroll reset should not be necessary
409
446
  if (enabledForColumns) {
@@ -439,7 +476,7 @@ const useGridVirtualScroller = () => {
439
476
  setPanels,
440
477
  getRows,
441
478
  getContainerProps: () => ({
442
- ref: mainRef
479
+ ref: mainRefCallback
443
480
  }),
444
481
  getScrollerProps: () => ({
445
482
  ref: scrollerRef,
@@ -497,7 +534,8 @@ function inputsSelector(apiRef, rootProps, enabledForRows, enabledForColumns) {
497
534
  pinnedColumns: (0, _gridColumnsSelector.gridVisiblePinnedColumnDefinitionsSelector)(apiRef),
498
535
  visibleColumns,
499
536
  hiddenCellsOriginMap,
500
- listView: rootProps.unstable_listView ?? false
537
+ listView: rootProps.unstable_listView ?? false,
538
+ virtualizeColumnsWithAutoRowHeight: rootProps.virtualizeColumnsWithAutoRowHeight
501
539
  };
502
540
  }
503
541
  function computeRenderContext(inputs, scrollPosition, scrollCache) {
@@ -545,11 +583,13 @@ function computeRenderContext(inputs, scrollPosition, scrollCache) {
545
583
  positions: inputs.rowsMeta.positions,
546
584
  lastSize: inputs.lastRowHeight
547
585
  });
548
- for (let i = firstRowToRender; i < lastRowToRender && !hasRowWithAutoHeight; i += 1) {
549
- const row = inputs.rows[i];
550
- hasRowWithAutoHeight = inputs.apiRef.current.rowHasAutoHeight(row.id);
586
+ if (!inputs.virtualizeColumnsWithAutoRowHeight) {
587
+ for (let i = firstRowToRender; i < lastRowToRender && !hasRowWithAutoHeight; i += 1) {
588
+ const row = inputs.rows[i];
589
+ hasRowWithAutoHeight = inputs.apiRef.current.rowHasAutoHeight(row.id);
590
+ }
551
591
  }
552
- if (!hasRowWithAutoHeight) {
592
+ if (!hasRowWithAutoHeight || inputs.virtualizeColumnsWithAutoRowHeight) {
553
593
  firstColumnIndex = binarySearch(realLeft, inputs.columnPositions, {
554
594
  atStart: true,
555
595
  lastPosition: inputs.columnsTotalWidth
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v8.0.0-alpha.1
2
+ * @mui/x-data-grid v8.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -34,7 +34,6 @@ const arSDGrid = {
34
34
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
35
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
36
  // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
37
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
38
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
39
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -48,7 +48,6 @@ const beBYGrid = {
48
48
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
49
49
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
50
50
  // toolbarPromptControlLabel: 'Prompt input',
51
- // toolbarPromptControlDeleteIconLabel: 'Clear',
52
51
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
53
52
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
54
53
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -34,7 +34,6 @@ const bgBGGrid = {
34
34
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
35
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
36
  // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
37
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
38
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
39
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -42,7 +42,6 @@ const csCZGrid = {
42
42
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
43
43
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
44
44
  // toolbarPromptControlLabel: 'Prompt input',
45
- // toolbarPromptControlDeleteIconLabel: 'Clear',
46
45
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
47
46
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
48
47
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -34,7 +34,6 @@ const daDKGrid = {
34
34
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
35
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
36
  // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
37
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
38
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
39
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -30,17 +30,15 @@ const deDEGrid = {
30
30
  toolbarQuickFilterLabel: 'Suchen',
31
31
  toolbarQuickFilterDeleteIconLabel: 'Löschen',
32
32
  // Prompt toolbar field
33
- // toolbarPromptControlPlaceholder: 'Type a prompt…',
34
- // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
- // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
- // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
- // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
- // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
- // toolbarPromptControlSendActionLabel: 'Send',
41
- // toolbarPromptControlSendActionAriaLabel: 'Send prompt',
42
- // toolbarPromptControlErrorMessage: 'An error occurred while processing the request. Please try again with a different prompt.',
43
-
33
+ toolbarPromptControlPlaceholder: 'Prompt eingeben…',
34
+ toolbarPromptControlWithRecordingPlaceholder: 'Prompt eingeben oder aufnehmen…',
35
+ toolbarPromptControlRecordingPlaceholder: 'Hört Prompteingabe zu…',
36
+ toolbarPromptControlLabel: 'Prompteingabe',
37
+ toolbarPromptControlRecordButtonDefaultLabel: 'Aufnahme starten',
38
+ toolbarPromptControlRecordButtonActiveLabel: 'Aufnahme stoppen',
39
+ toolbarPromptControlSendActionLabel: 'Senden',
40
+ toolbarPromptControlSendActionAriaLabel: 'Prompt senden',
41
+ toolbarPromptControlErrorMessage: 'Ein Fehler ist während der Bearbeitung der Anfrage aufgetreten. Bitte versuche es nochmal mit einem anderen Prompt.',
44
42
  // Export selector toolbar button text
45
43
  toolbarExport: 'Exportieren',
46
44
  toolbarExportLabel: 'Exportieren',
@@ -52,8 +50,7 @@ const deDEGrid = {
52
50
  columnsManagementNoColumns: 'Keine Spalten',
53
51
  columnsManagementShowHideAllText: 'Alle anzeigen/verbergen',
54
52
  columnsManagementReset: 'Zurücksetzen',
55
- // columnsManagementDeleteIconLabel: 'Clear',
56
-
53
+ columnsManagementDeleteIconLabel: 'Löschen',
57
54
  // Filter panel text
58
55
  filterPanelAddFilter: 'Filter hinzufügen',
59
56
  filterPanelRemoveAll: 'Alle entfernen',
@@ -34,7 +34,6 @@ const elGRGrid = {
34
34
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
35
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
36
  // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
37
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
38
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
39
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -30,17 +30,15 @@ const esESGrid = {
30
30
  toolbarQuickFilterLabel: 'Buscar',
31
31
  toolbarQuickFilterDeleteIconLabel: 'Limpiar',
32
32
  // Prompt toolbar field
33
- // toolbarPromptControlPlaceholder: 'Type a prompt…',
34
- // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
- // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
- // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
- // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
- // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
- // toolbarPromptControlSendActionLabel: 'Send',
41
- // toolbarPromptControlSendActionAriaLabel: 'Send prompt',
42
- // toolbarPromptControlErrorMessage: 'An error occurred while processing the request. Please try again with a different prompt.',
43
-
33
+ toolbarPromptControlPlaceholder: 'Escriba un prompt…',
34
+ toolbarPromptControlWithRecordingPlaceholder: 'Escriba o grabe un prompt…',
35
+ toolbarPromptControlRecordingPlaceholder: 'Esperando por un prompt…',
36
+ toolbarPromptControlLabel: 'Introduzca un prompt',
37
+ toolbarPromptControlRecordButtonDefaultLabel: 'Grabar',
38
+ toolbarPromptControlRecordButtonActiveLabel: 'Parar de grabar',
39
+ toolbarPromptControlSendActionLabel: 'Enviar',
40
+ toolbarPromptControlSendActionAriaLabel: 'Enviar prompt',
41
+ toolbarPromptControlErrorMessage: 'Ocurrió un error mientras se procesaba la petición. Por favor, intente de nuevo con otro prompt.',
44
42
  // Export selector toolbar button text
45
43
  toolbarExport: 'Exportar',
46
44
  toolbarExportLabel: 'Exportar',
@@ -52,8 +50,7 @@ const esESGrid = {
52
50
  columnsManagementNoColumns: 'Sin columnas',
53
51
  columnsManagementShowHideAllText: 'Mostrar/Ocultar todas',
54
52
  columnsManagementReset: 'Restablecer',
55
- // columnsManagementDeleteIconLabel: 'Clear',
56
-
53
+ columnsManagementDeleteIconLabel: 'Limpiar',
57
54
  // Filter panel text
58
55
  filterPanelAddFilter: 'Agregar filtro',
59
56
  filterPanelRemoveAll: 'Remover todos',
@@ -34,7 +34,6 @@ const faIRGrid = {
34
34
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
35
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
36
  // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
37
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
38
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
39
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -34,7 +34,6 @@ const fiFIGrid = {
34
34
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
35
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
36
  // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
37
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
38
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
39
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -34,7 +34,6 @@ const frFRGrid = {
34
34
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
35
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
36
  // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
37
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
38
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
39
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -34,7 +34,6 @@ const heILGrid = {
34
34
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
35
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
36
  // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
37
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
38
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
39
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -42,7 +42,6 @@ const hrHRGrid = {
42
42
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
43
43
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
44
44
  // toolbarPromptControlLabel: 'Prompt input',
45
- // toolbarPromptControlDeleteIconLabel: 'Clear',
46
45
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
47
46
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
48
47
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -34,7 +34,6 @@ const huHUGrid = {
34
34
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
35
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
36
  // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
37
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
38
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
39
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -34,7 +34,6 @@ const isISGrid = {
34
34
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
35
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
36
  // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
37
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
38
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
39
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -34,7 +34,6 @@ const itITGrid = {
34
34
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
35
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
36
  // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
37
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
38
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
39
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -34,7 +34,6 @@ const jaJPGrid = {
34
34
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
35
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
36
  // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
37
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
38
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
39
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -34,7 +34,6 @@ const koKRGrid = {
34
34
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
35
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
36
  // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
37
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
38
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
39
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -34,7 +34,6 @@ const nbNOGrid = {
34
34
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
35
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
36
  // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
37
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
38
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
39
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -34,7 +34,6 @@ const nlNLGrid = {
34
34
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
35
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
36
  // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
37
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
38
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
39
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -34,7 +34,6 @@ const nnNOGrid = {
34
34
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
35
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
36
  // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
37
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
38
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
39
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -34,7 +34,6 @@ const plPLGrid = {
34
34
  // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
35
  // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
36
  // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
37
  // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
38
  // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
39
  // toolbarPromptControlSendActionLabel: 'Send',
@@ -30,17 +30,15 @@ const ptBRGrid = {
30
30
  toolbarQuickFilterLabel: 'Procurar',
31
31
  toolbarQuickFilterDeleteIconLabel: 'Limpar',
32
32
  // Prompt toolbar field
33
- // toolbarPromptControlPlaceholder: 'Type a prompt…',
34
- // toolbarPromptControlWithRecordingPlaceholder: 'Type or record a prompt…',
35
- // toolbarPromptControlRecordingPlaceholder: 'Listening for prompt…',
36
- // toolbarPromptControlLabel: 'Prompt input',
37
- // toolbarPromptControlDeleteIconLabel: 'Clear',
38
- // toolbarPromptControlRecordButtonDefaultLabel: 'Record',
39
- // toolbarPromptControlRecordButtonActiveLabel: 'Stop recording',
40
- // toolbarPromptControlSendActionLabel: 'Send',
41
- // toolbarPromptControlSendActionAriaLabel: 'Send prompt',
42
- // toolbarPromptControlErrorMessage: 'An error occurred while processing the request. Please try again with a different prompt.',
43
-
33
+ toolbarPromptControlPlaceholder: 'Digite um prompt…',
34
+ toolbarPromptControlWithRecordingPlaceholder: 'Digite ou grave um prompt…',
35
+ toolbarPromptControlRecordingPlaceholder: 'Ouvindo o prompt…',
36
+ toolbarPromptControlLabel: 'Entrada de prompt',
37
+ toolbarPromptControlRecordButtonDefaultLabel: 'Gravar',
38
+ toolbarPromptControlRecordButtonActiveLabel: 'Parar gravação',
39
+ toolbarPromptControlSendActionLabel: 'Enviar',
40
+ toolbarPromptControlSendActionAriaLabel: 'Enviar prompt',
41
+ toolbarPromptControlErrorMessage: 'Ocorreu um erro ao processar a solicitação. Por favor, tente novamente com um prompt diferente.',
44
42
  // Export selector toolbar button text
45
43
  toolbarExport: 'Exportar',
46
44
  toolbarExportLabel: 'Exportar',
@@ -52,8 +50,7 @@ const ptBRGrid = {
52
50
  columnsManagementNoColumns: 'Nenhuma coluna',
53
51
  columnsManagementShowHideAllText: 'Mostrar/Ocultar Todas',
54
52
  columnsManagementReset: 'Redefinir',
55
- // columnsManagementDeleteIconLabel: 'Clear',
56
-
53
+ columnsManagementDeleteIconLabel: 'Limpar',
57
54
  // Filter panel text
58
55
  filterPanelAddFilter: 'Adicionar filtro',
59
56
  filterPanelRemoveAll: 'Remover todos',