@mui/x-data-grid 8.8.0 → 8.9.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 (196) hide show
  1. package/CHANGELOG.md +225 -24
  2. package/DataGrid/DataGrid.js +5 -0
  3. package/DataGrid/index.d.ts +0 -1
  4. package/DataGrid/useDataGridComponent.js +10 -0
  5. package/colDef/gridCheckboxSelectionColDef.js +1 -0
  6. package/components/GridDetailPanels.d.ts +2 -2
  7. package/components/GridPinnedRows.d.ts +2 -2
  8. package/components/GridRow.js +5 -0
  9. package/components/GridScrollArea.js +1 -1
  10. package/components/cell/GridCell.js +7 -5
  11. package/components/cell/GridEditSingleSelectCell.js +1 -1
  12. package/components/columnsManagement/GridColumnsManagement.d.ts +6 -0
  13. package/components/columnsManagement/GridColumnsManagement.js +17 -5
  14. package/components/containers/GridRootStyles.d.ts +1 -1
  15. package/components/containers/GridRootStyles.js +39 -0
  16. package/components/toolbarV8/Toolbar.d.ts +1 -1
  17. package/components/virtualization/GridVirtualScroller.js +5 -5
  18. package/constants/dataGridPropsDefaultValues.js +1 -0
  19. package/constants/gridClasses.d.ts +12 -0
  20. package/constants/gridClasses.js +3 -1
  21. package/esm/DataGrid/DataGrid.js +5 -0
  22. package/esm/DataGrid/index.d.ts +0 -1
  23. package/esm/DataGrid/useDataGridComponent.js +10 -0
  24. package/esm/colDef/gridCheckboxSelectionColDef.js +1 -0
  25. package/esm/components/GridDetailPanels.d.ts +2 -2
  26. package/esm/components/GridPinnedRows.d.ts +2 -2
  27. package/esm/components/GridRow.js +5 -0
  28. package/esm/components/GridScrollArea.js +1 -1
  29. package/esm/components/cell/GridCell.js +7 -5
  30. package/esm/components/cell/GridEditSingleSelectCell.js +1 -1
  31. package/esm/components/columnsManagement/GridColumnsManagement.d.ts +6 -0
  32. package/esm/components/columnsManagement/GridColumnsManagement.js +17 -5
  33. package/esm/components/containers/GridRootStyles.d.ts +1 -1
  34. package/esm/components/containers/GridRootStyles.js +39 -0
  35. package/esm/components/toolbarV8/Toolbar.d.ts +1 -1
  36. package/esm/components/virtualization/GridVirtualScroller.js +5 -5
  37. package/esm/constants/dataGridPropsDefaultValues.js +1 -0
  38. package/esm/constants/gridClasses.d.ts +12 -0
  39. package/esm/constants/gridClasses.js +3 -1
  40. package/esm/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -0
  41. package/esm/hooks/core/pipeProcessing/useGridPipeProcessing.js +20 -5
  42. package/esm/hooks/core/useGridProps.d.ts +2 -2
  43. package/esm/hooks/core/useGridProps.js +3 -1
  44. package/esm/hooks/core/useGridVirtualizer.d.ts +9 -0
  45. package/esm/hooks/core/useGridVirtualizer.js +223 -0
  46. package/esm/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +4 -1
  47. package/esm/hooks/features/columnGrouping/gridColumnGroupsUtils.js +35 -32
  48. package/esm/hooks/features/columnGrouping/useGridColumnGrouping.js +18 -13
  49. package/esm/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -1
  50. package/esm/hooks/features/columnHeaders/useGridColumnHeaders.js +3 -2
  51. package/esm/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -3
  52. package/esm/hooks/features/columns/gridColumnsSelector.js +6 -2
  53. package/esm/hooks/features/columns/gridColumnsUtils.js +6 -4
  54. package/esm/hooks/features/columns/useGridColumnSpanning.js +5 -90
  55. package/esm/hooks/features/columns/useGridColumns.js +8 -10
  56. package/esm/hooks/features/dimensions/useGridDimensions.js +18 -188
  57. package/esm/hooks/features/export/utils.js +1 -1
  58. package/esm/hooks/features/filter/useGridFilter.js +3 -3
  59. package/esm/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
  60. package/esm/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +6 -10
  61. package/esm/hooks/features/keyboardNavigation/utils.d.ts +3 -3
  62. package/esm/hooks/features/keyboardNavigation/utils.js +5 -5
  63. package/esm/hooks/features/listView/gridListViewSelectors.d.ts +8 -1
  64. package/esm/hooks/features/listView/gridListViewSelectors.js +7 -0
  65. package/esm/hooks/features/pivoting/gridPivotingInterfaces.d.ts +0 -1
  66. package/esm/hooks/features/pivoting/gridPivotingSelectors.d.ts +1 -4
  67. package/esm/hooks/features/pivoting/gridPivotingSelectors.js +1 -2
  68. package/esm/hooks/features/rowSelection/useGridRowSelection.js +5 -4
  69. package/esm/hooks/features/rows/gridRowsMetaInterfaces.d.ts +2 -8
  70. package/esm/hooks/features/rows/gridRowsMetaState.d.ts +2 -18
  71. package/esm/hooks/features/rows/gridRowsUtils.d.ts +1 -1
  72. package/esm/hooks/features/rows/gridRowsUtils.js +5 -2
  73. package/esm/hooks/features/rows/useGridRowAriaAttributes.js +3 -1
  74. package/esm/hooks/features/rows/useGridRowSpanning.d.ts +2 -12
  75. package/esm/hooks/features/rows/useGridRowSpanning.js +54 -85
  76. package/esm/hooks/features/rows/useGridRows.js +4 -3
  77. package/esm/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
  78. package/esm/hooks/features/rows/useGridRowsMeta.js +17 -187
  79. package/esm/hooks/features/scroll/useGridScroll.d.ts +1 -1
  80. package/esm/hooks/features/scroll/useGridScroll.js +2 -3
  81. package/esm/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +1 -1
  82. package/esm/hooks/features/virtualization/index.d.ts +1 -0
  83. package/esm/hooks/features/virtualization/index.js +1 -0
  84. package/esm/hooks/features/virtualization/useGridVirtualization.d.ts +5 -16
  85. package/esm/hooks/features/virtualization/useGridVirtualization.js +41 -22
  86. package/esm/hooks/utils/index.d.ts +2 -1
  87. package/esm/hooks/utils/index.js +2 -1
  88. package/esm/hooks/utils/useFirstRender.d.ts +1 -1
  89. package/esm/hooks/utils/useFirstRender.js +1 -8
  90. package/esm/hooks/utils/useGridInitializeState.d.ts +1 -1
  91. package/esm/hooks/utils/useGridInitializeState.js +6 -1
  92. package/esm/hooks/utils/useRunOncePerLoop.d.ts +1 -0
  93. package/esm/hooks/utils/useRunOncePerLoop.js +26 -0
  94. package/esm/index.js +1 -1
  95. package/esm/internals/index.d.ts +1 -1
  96. package/esm/internals/index.js +1 -1
  97. package/esm/internals/utils/getPinnedCellOffset.js +5 -0
  98. package/esm/locales/frFR.js +18 -21
  99. package/esm/locales/heIL.js +12 -12
  100. package/esm/locales/plPL.js +22 -24
  101. package/esm/models/api/gridApiCommon.d.ts +4 -1
  102. package/esm/models/api/gridColumnSpanning.d.ts +5 -11
  103. package/esm/models/api/gridRowApi.d.ts +5 -0
  104. package/esm/models/events/gridEventLookup.d.ts +2 -1
  105. package/esm/models/gridApiCaches.d.ts +8 -2
  106. package/esm/models/gridStateCommunity.d.ts +2 -2
  107. package/esm/models/props/DataGridProps.d.ts +5 -0
  108. package/esm/utils/roundToDecimalPlaces.d.ts +1 -1
  109. package/esm/utils/roundToDecimalPlaces.js +1 -3
  110. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -0
  111. package/hooks/core/pipeProcessing/useGridPipeProcessing.js +20 -5
  112. package/hooks/core/useGridProps.d.ts +2 -2
  113. package/hooks/core/useGridProps.js +3 -1
  114. package/hooks/core/useGridVirtualizer.d.ts +9 -0
  115. package/hooks/core/useGridVirtualizer.js +231 -0
  116. package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +4 -1
  117. package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +35 -32
  118. package/hooks/features/columnGrouping/useGridColumnGrouping.js +18 -13
  119. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -1
  120. package/hooks/features/columnHeaders/useGridColumnHeaders.js +4 -3
  121. package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -3
  122. package/hooks/features/columns/gridColumnsSelector.js +6 -2
  123. package/hooks/features/columns/gridColumnsUtils.js +6 -4
  124. package/hooks/features/columns/useGridColumnSpanning.js +5 -91
  125. package/hooks/features/columns/useGridColumns.js +8 -10
  126. package/hooks/features/dimensions/useGridDimensions.js +18 -188
  127. package/hooks/features/export/utils.js +1 -1
  128. package/hooks/features/filter/useGridFilter.js +3 -3
  129. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
  130. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +6 -10
  131. package/hooks/features/keyboardNavigation/utils.d.ts +3 -3
  132. package/hooks/features/keyboardNavigation/utils.js +5 -5
  133. package/hooks/features/listView/gridListViewSelectors.d.ts +8 -1
  134. package/hooks/features/listView/gridListViewSelectors.js +8 -1
  135. package/hooks/features/pivoting/gridPivotingInterfaces.d.ts +0 -1
  136. package/hooks/features/pivoting/gridPivotingSelectors.d.ts +1 -4
  137. package/hooks/features/pivoting/gridPivotingSelectors.js +2 -3
  138. package/hooks/features/rowSelection/useGridRowSelection.js +5 -4
  139. package/hooks/features/rows/gridRowsMetaInterfaces.d.ts +2 -8
  140. package/hooks/features/rows/gridRowsMetaState.d.ts +2 -18
  141. package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
  142. package/hooks/features/rows/gridRowsUtils.js +5 -2
  143. package/hooks/features/rows/useGridRowAriaAttributes.js +3 -1
  144. package/hooks/features/rows/useGridRowSpanning.d.ts +2 -12
  145. package/hooks/features/rows/useGridRowSpanning.js +54 -85
  146. package/hooks/features/rows/useGridRows.js +4 -3
  147. package/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
  148. package/hooks/features/rows/useGridRowsMeta.js +15 -186
  149. package/hooks/features/scroll/useGridScroll.d.ts +1 -1
  150. package/hooks/features/scroll/useGridScroll.js +2 -3
  151. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +1 -1
  152. package/hooks/features/virtualization/index.d.ts +1 -0
  153. package/hooks/features/virtualization/index.js +12 -0
  154. package/hooks/features/virtualization/useGridVirtualization.d.ts +5 -16
  155. package/hooks/features/virtualization/useGridVirtualization.js +42 -24
  156. package/hooks/utils/index.d.ts +2 -1
  157. package/hooks/utils/index.js +16 -4
  158. package/hooks/utils/useFirstRender.d.ts +1 -1
  159. package/hooks/utils/useFirstRender.js +11 -11
  160. package/hooks/utils/useGridInitializeState.d.ts +1 -1
  161. package/hooks/utils/useGridInitializeState.js +6 -1
  162. package/hooks/utils/useRunOncePerLoop.d.ts +1 -0
  163. package/hooks/utils/useRunOncePerLoop.js +33 -0
  164. package/index.js +1 -1
  165. package/internals/index.d.ts +1 -1
  166. package/internals/index.js +4 -11
  167. package/internals/utils/getPinnedCellOffset.js +5 -0
  168. package/locales/frFR.js +18 -21
  169. package/locales/heIL.js +12 -12
  170. package/locales/plPL.js +22 -24
  171. package/models/api/gridApiCommon.d.ts +4 -1
  172. package/models/api/gridColumnSpanning.d.ts +5 -11
  173. package/models/api/gridRowApi.d.ts +5 -0
  174. package/models/events/gridEventLookup.d.ts +2 -1
  175. package/models/gridApiCaches.d.ts +8 -2
  176. package/models/gridStateCommunity.d.ts +2 -2
  177. package/models/props/DataGridProps.d.ts +5 -0
  178. package/package.json +5 -5
  179. package/utils/roundToDecimalPlaces.d.ts +1 -1
  180. package/utils/roundToDecimalPlaces.js +7 -4
  181. package/esm/hooks/features/rows/gridRowSpanningSelectors.d.ts +0 -10
  182. package/esm/hooks/features/rows/gridRowSpanningSelectors.js +0 -5
  183. package/esm/hooks/features/virtualization/useGridVirtualScroller.d.ts +0 -56
  184. package/esm/hooks/features/virtualization/useGridVirtualScroller.js +0 -846
  185. package/esm/hooks/utils/useRunOnce.d.ts +0 -5
  186. package/esm/hooks/utils/useRunOnce.js +0 -18
  187. package/esm/utils/platform.d.ts +0 -1
  188. package/esm/utils/platform.js +0 -2
  189. package/hooks/features/rows/gridRowSpanningSelectors.d.ts +0 -10
  190. package/hooks/features/rows/gridRowSpanningSelectors.js +0 -11
  191. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +0 -56
  192. package/hooks/features/virtualization/useGridVirtualScroller.js +0 -857
  193. package/hooks/utils/useRunOnce.d.ts +0 -5
  194. package/hooks/utils/useRunOnce.js +0 -27
  195. package/utils/platform.d.ts +0 -1
  196. package/utils/platform.js +0 -8
@@ -9,4 +9,4 @@ import { DataGridProcessedProps } from "../../../models/props/DataGridProps.js";
9
9
  * @requires useGridFilter (state)
10
10
  * @requires useGridColumnSpanning (method)
11
11
  */
12
- export declare const useGridScroll: (apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "pagination" | "listView">) => void;
12
+ export declare const useGridScroll: (apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "pagination">) => void;
@@ -16,7 +16,6 @@ var _gridRowsMetaSelector = require("../rows/gridRowsMetaSelector");
16
16
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
17
17
  var _gridFilterSelector = require("../filter/gridFilterSelector");
18
18
  var _dimensions = require("../dimensions");
19
- var _gridListViewSelectors = require("../listView/gridListViewSelectors");
20
19
  // Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js
21
20
  // Similar to https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
22
21
  function scrollIntoView(dimensions) {
@@ -58,7 +57,7 @@ const useGridScroll = (apiRef, props) => {
58
57
  const scrollToIndexes = React.useCallback(params => {
59
58
  const dimensions = (0, _dimensions.gridDimensionsSelector)(apiRef);
60
59
  const totalRowCount = (0, _gridRowsSelector.gridRowCountSelector)(apiRef);
61
- const visibleColumns = props.listView ? [(0, _gridListViewSelectors.gridListColumnSelector)(apiRef)] : (0, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector)(apiRef);
60
+ const visibleColumns = (0, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector)(apiRef);
62
61
  const scrollToHeader = params.rowIndex == null;
63
62
  if (!scrollToHeader && totalRowCount === 0 || visibleColumns.length === 0) {
64
63
  return false;
@@ -105,7 +104,7 @@ const useGridScroll = (apiRef, props) => {
105
104
  return true;
106
105
  }
107
106
  return false;
108
- }, [logger, apiRef, virtualScrollerRef, props.pagination, visibleSortedRows, props.listView]);
107
+ }, [logger, apiRef, virtualScrollerRef, props.pagination, visibleSortedRows]);
109
108
  const scroll = React.useCallback(params => {
110
109
  if (virtualScrollerRef.current && params.left !== undefined && colRef.current) {
111
110
  const direction = isRtl ? -1 : 1;
@@ -34,7 +34,7 @@ export declare const gridVirtualizationRowEnabledSelector: (args_0: import("reac
34
34
  */
35
35
  export declare const gridRenderContextSelector: (args_0: import("react").RefObject<{
36
36
  state: GridStateCommunity;
37
- } | null>) => import("@mui/x-data-grid").GridRenderContext;
37
+ } | null>) => import("@mui/x-virtualizer/models").RenderContext;
38
38
  /**
39
39
  * Get the render context, with only columns filled in.
40
40
  * This is cached, so it can be used to only re-render when the column interval changes.
@@ -1,2 +1,3 @@
1
+ export { EMPTY_RENDER_CONTEXT } from '@mui/x-virtualizer';
1
2
  export * from "./useGridVirtualization.js";
2
3
  export * from "./gridVirtualizationSelectors.js";
@@ -3,9 +3,20 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ var _exportNames = {
7
+ EMPTY_RENDER_CONTEXT: true
8
+ };
9
+ Object.defineProperty(exports, "EMPTY_RENDER_CONTEXT", {
10
+ enumerable: true,
11
+ get: function () {
12
+ return _xVirtualizer.EMPTY_RENDER_CONTEXT;
13
+ }
14
+ });
15
+ var _xVirtualizer = require("@mui/x-virtualizer");
6
16
  var _useGridVirtualization = require("./useGridVirtualization");
7
17
  Object.keys(_useGridVirtualization).forEach(function (key) {
8
18
  if (key === "default" || key === "__esModule") return;
19
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
9
20
  if (key in exports && exports[key] === _useGridVirtualization[key]) return;
10
21
  Object.defineProperty(exports, key, {
11
22
  enumerable: true,
@@ -17,6 +28,7 @@ Object.keys(_useGridVirtualization).forEach(function (key) {
17
28
  var _gridVirtualizationSelectors = require("./gridVirtualizationSelectors");
18
29
  Object.keys(_gridVirtualizationSelectors).forEach(function (key) {
19
30
  if (key === "default" || key === "__esModule") return;
31
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
20
32
  if (key in exports && exports[key] === _gridVirtualizationSelectors[key]) return;
21
33
  Object.defineProperty(exports, key, {
22
34
  enumerable: true,
@@ -1,21 +1,10 @@
1
1
  import { RefObject } from '@mui/x-internals/types';
2
- import { GridRenderContext } from "../../../models/index.js";
2
+ import { Virtualization } from '@mui/x-virtualizer';
3
3
  import { GridPrivateApiCommunity } from "../../../models/api/gridApiCommunity.js";
4
- import { DataGridProcessedProps } from "../../../models/props/DataGridProps.js";
5
4
  import { GridStateInitializer } from "../../utils/useGridInitializeState.js";
6
- type RootProps = Pick<DataGridProcessedProps, 'disableVirtualization' | 'autoHeight'>;
7
- export type GridVirtualizationState = {
8
- enabled: boolean;
9
- enabledForColumns: boolean;
10
- enabledForRows: boolean;
11
- renderContext: GridRenderContext;
12
- };
13
- export declare const EMPTY_RENDER_CONTEXT: {
14
- firstRowIndex: number;
15
- lastRowIndex: number;
16
- firstColumnIndex: number;
17
- lastColumnIndex: number;
18
- };
5
+ import { DataGridProcessedProps } from "../../../models/props/DataGridProps.js";
6
+ type RootProps = DataGridProcessedProps;
7
+ export type GridVirtualizationState = { [K in keyof Virtualization.State['virtualization']]: Virtualization.State['virtualization'][K] };
19
8
  export declare const virtualizationStateInitializer: GridStateInitializer<RootProps>;
20
- export declare function useGridVirtualization(apiRef: RefObject<GridPrivateApiCommunity>, props: RootProps): void;
9
+ export declare function useGridVirtualization(apiRef: RefObject<GridPrivateApiCommunity>, rootProps: RootProps): void;
21
10
  export {};
@@ -6,53 +6,63 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
6
6
  Object.defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
- exports.EMPTY_RENDER_CONTEXT = void 0;
10
9
  exports.useGridVirtualization = useGridVirtualization;
11
10
  exports.virtualizationStateInitializer = void 0;
12
11
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
12
  var React = _interopRequireWildcard(require("react"));
13
+ var _xVirtualizer = require("@mui/x-virtualizer");
14
+ var _isJSDOM = require("../../../utils/isJSDOM");
14
15
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
15
- const EMPTY_RENDER_CONTEXT = exports.EMPTY_RENDER_CONTEXT = {
16
- firstRowIndex: 0,
17
- lastRowIndex: 0,
18
- firstColumnIndex: 0,
19
- lastColumnIndex: 0
20
- };
16
+ var _utils = require("../../utils");
17
+ const HAS_LAYOUT = !_isJSDOM.isJSDOM;
18
+
19
+ // HACK: Typescript doesn't use the alias name ("GridVirtualizationState") and changes
20
+ // the autogenerated docs result, but this would otherwise be just:
21
+ // export type GridVirtualizationState = VirtualizationState;
22
+
23
+ // XXX: We want to use the virtualizer as the source of truth for its state, but this needs to
24
+ // stay because some parts of the grid require the `virtualization` state during initialization.
21
25
  const virtualizationStateInitializer = (state, props) => {
22
26
  const {
23
27
  disableVirtualization,
24
28
  autoHeight
25
29
  } = props;
26
30
  const virtualization = {
27
- enabled: !disableVirtualization,
28
- enabledForColumns: !disableVirtualization,
29
- enabledForRows: !disableVirtualization && !autoHeight,
30
- renderContext: EMPTY_RENDER_CONTEXT
31
+ enabled: !disableVirtualization && HAS_LAYOUT,
32
+ enabledForColumns: !disableVirtualization && HAS_LAYOUT,
33
+ enabledForRows: !disableVirtualization && !autoHeight && HAS_LAYOUT,
34
+ renderContext: _xVirtualizer.EMPTY_RENDER_CONTEXT
31
35
  };
32
36
  return (0, _extends2.default)({}, state, {
33
37
  virtualization
34
38
  });
35
39
  };
36
40
  exports.virtualizationStateInitializer = virtualizationStateInitializer;
37
- function useGridVirtualization(apiRef, props) {
41
+ function useGridVirtualization(apiRef, rootProps) {
42
+ const {
43
+ virtualizer
44
+ } = apiRef.current;
45
+ const {
46
+ autoHeight,
47
+ disableVirtualization
48
+ } = rootProps;
49
+
38
50
  /*
39
51
  * API METHODS
40
52
  */
41
53
 
42
54
  const setVirtualization = enabled => {
43
- apiRef.current.setState(state => (0, _extends2.default)({}, state, {
44
- virtualization: (0, _extends2.default)({}, state.virtualization, {
45
- enabled,
46
- enabledForColumns: enabled,
47
- enabledForRows: enabled && !props.autoHeight
48
- })
55
+ enabled && (enabled = HAS_LAYOUT);
56
+ virtualizer.store.set('virtualization', (0, _extends2.default)({}, virtualizer.store.state.virtualization, {
57
+ enabled,
58
+ enabledForColumns: enabled,
59
+ enabledForRows: enabled && !autoHeight
49
60
  }));
50
61
  };
51
62
  const setColumnVirtualization = enabled => {
52
- apiRef.current.setState(state => (0, _extends2.default)({}, state, {
53
- virtualization: (0, _extends2.default)({}, state.virtualization, {
54
- enabledForColumns: enabled
55
- })
63
+ enabled && (enabled = HAS_LAYOUT);
64
+ virtualizer.store.set('virtualization', (0, _extends2.default)({}, virtualizer.store.state.virtualization, {
65
+ enabledForColumns: enabled
56
66
  }));
57
67
  };
58
68
  const api = {
@@ -60,14 +70,22 @@ function useGridVirtualization(apiRef, props) {
60
70
  unstable_setColumnVirtualization: setColumnVirtualization
61
71
  };
62
72
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, api, 'public');
73
+ const forceUpdateRenderContext = virtualizer.api.forceUpdateRenderContext;
74
+ apiRef.current.register('private', {
75
+ updateRenderContext: forceUpdateRenderContext
76
+ });
63
77
 
64
78
  /*
65
79
  * EFFECTS
66
80
  */
67
81
 
82
+ (0, _utils.useGridEventPriority)(apiRef, 'sortedRowsSet', forceUpdateRenderContext);
83
+ (0, _utils.useGridEventPriority)(apiRef, 'paginationModelChange', forceUpdateRenderContext);
84
+ (0, _utils.useGridEventPriority)(apiRef, 'columnsChange', forceUpdateRenderContext);
85
+
68
86
  /* eslint-disable react-hooks/exhaustive-deps */
69
87
  React.useEffect(() => {
70
- setVirtualization(!props.disableVirtualization);
71
- }, [props.disableVirtualization, props.autoHeight]);
88
+ setVirtualization(!rootProps.disableVirtualization);
89
+ }, [disableVirtualization, autoHeight]);
72
90
  /* eslint-enable react-hooks/exhaustive-deps */
73
91
  }
@@ -1,3 +1,4 @@
1
+ export * from '@mui/x-internals/useRunOnce';
1
2
  export { useGridEvent, useGridEventPriority, unstable_resetCleanupTracking } from "./useGridEvent.js";
2
3
  export * from "./useGridApiMethod.js";
3
4
  export * from "./useGridLogger.js";
@@ -5,5 +6,5 @@ export { useGridSelector } from "./useGridSelector.js";
5
6
  export * from "./useGridNativeEventListener.js";
6
7
  export * from "./useFirstRender.js";
7
8
  export * from "./useOnMount.js";
8
- export * from "./useRunOnce.js";
9
+ export * from "./useRunOncePerLoop.js";
9
10
  export type { RenderProp } from '@mui/x-internals/useComponentRenderer';
@@ -33,6 +33,18 @@ Object.defineProperty(exports, "useGridSelector", {
33
33
  return _useGridSelector.useGridSelector;
34
34
  }
35
35
  });
36
+ var _useRunOnce = require("@mui/x-internals/useRunOnce");
37
+ Object.keys(_useRunOnce).forEach(function (key) {
38
+ if (key === "default" || key === "__esModule") return;
39
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
40
+ if (key in exports && exports[key] === _useRunOnce[key]) return;
41
+ Object.defineProperty(exports, key, {
42
+ enumerable: true,
43
+ get: function () {
44
+ return _useRunOnce[key];
45
+ }
46
+ });
47
+ });
36
48
  var _useGridEvent = require("./useGridEvent");
37
49
  var _useGridApiMethod = require("./useGridApiMethod");
38
50
  Object.keys(_useGridApiMethod).forEach(function (key) {
@@ -95,15 +107,15 @@ Object.keys(_useOnMount).forEach(function (key) {
95
107
  }
96
108
  });
97
109
  });
98
- var _useRunOnce = require("./useRunOnce");
99
- Object.keys(_useRunOnce).forEach(function (key) {
110
+ var _useRunOncePerLoop = require("./useRunOncePerLoop");
111
+ Object.keys(_useRunOncePerLoop).forEach(function (key) {
100
112
  if (key === "default" || key === "__esModule") return;
101
113
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
102
- if (key in exports && exports[key] === _useRunOnce[key]) return;
114
+ if (key in exports && exports[key] === _useRunOncePerLoop[key]) return;
103
115
  Object.defineProperty(exports, key, {
104
116
  enumerable: true,
105
117
  get: function () {
106
- return _useRunOnce[key];
118
+ return _useRunOncePerLoop[key];
107
119
  }
108
120
  });
109
121
  });
@@ -1 +1 @@
1
- export declare const useFirstRender: (callback: () => void) => void;
1
+ export * from '@mui/x-internals/useFirstRender';
@@ -1,16 +1,16 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
- exports.useFirstRender = void 0;
8
- var React = _interopRequireWildcard(require("react"));
9
- const useFirstRender = callback => {
10
- const isFirstRender = React.useRef(true);
11
- if (isFirstRender.current) {
12
- isFirstRender.current = false;
13
- callback();
14
- }
15
- };
16
- exports.useFirstRender = useFirstRender;
6
+ var _useFirstRender = require("@mui/x-internals/useFirstRender");
7
+ Object.keys(_useFirstRender).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _useFirstRender[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _useFirstRender[key];
14
+ }
15
+ });
16
+ });
@@ -4,5 +4,5 @@ import { GridPrivateApiCommunity } from "../../models/api/gridApiCommunity.js";
4
4
  import { DataGridProcessedProps } from "../../models/props/DataGridProps.js";
5
5
  type DeepPartial<T> = { [P in keyof T]?: DeepPartial<T[P]> };
6
6
  export type GridStateInitializer<P extends Partial<DataGridProcessedProps> = DataGridProcessedProps, PrivateApi extends GridPrivateApiCommon = GridPrivateApiCommunity> = (state: DeepPartial<PrivateApi['state']>, props: P, privateApiRef: RefObject<PrivateApi>) => DeepPartial<PrivateApi['state']>;
7
- export declare const useGridInitializeState: <P extends Partial<DataGridProcessedProps>, PrivateApi extends GridPrivateApiCommon = GridPrivateApiCommunity>(initializer: GridStateInitializer<P, PrivateApi>, privateApiRef: RefObject<PrivateApi>, props: P) => void;
7
+ export declare const useGridInitializeState: <P extends Partial<DataGridProcessedProps>, PrivateApi extends GridPrivateApiCommon = GridPrivateApiCommunity>(initializer: GridStateInitializer<P, PrivateApi>, privateApiRef: RefObject<PrivateApi>, props: P, key?: string) => void;
8
8
  export {};
@@ -6,8 +6,13 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.useGridInitializeState = void 0;
8
8
  var React = _interopRequireWildcard(require("react"));
9
- const useGridInitializeState = (initializer, privateApiRef, props) => {
9
+ const useGridInitializeState = (initializer, privateApiRef, props, key) => {
10
+ const previousKey = React.useRef(key);
10
11
  const isInitialized = React.useRef(false);
12
+ if (key !== previousKey.current) {
13
+ isInitialized.current = false;
14
+ previousKey.current = key;
15
+ }
11
16
  if (!isInitialized.current) {
12
17
  privateApiRef.current.state = initializer(privateApiRef.current.state, props, privateApiRef);
13
18
  isInitialized.current = true;
@@ -0,0 +1 @@
1
+ export declare function useRunOncePerLoop<T extends (...args: any[]) => void>(callback: T, nextFrame?: boolean): (...args: Parameters<T>) => void;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useRunOncePerLoop = useRunOncePerLoop;
8
+ var React = _interopRequireWildcard(require("react"));
9
+ function useRunOncePerLoop(callback, nextFrame = false) {
10
+ const scheduledRef = React.useRef(false);
11
+ const schedule = React.useCallback((...args) => {
12
+ if (scheduledRef.current) {
13
+ return;
14
+ }
15
+ scheduledRef.current = true;
16
+ const runner = () => {
17
+ scheduledRef.current = false;
18
+ callback(...args);
19
+ };
20
+ if (nextFrame) {
21
+ if (typeof requestAnimationFrame === 'function') {
22
+ requestAnimationFrame(runner);
23
+ }
24
+ return;
25
+ }
26
+ if (typeof queueMicrotask === 'function') {
27
+ queueMicrotask(runner);
28
+ } else {
29
+ Promise.resolve().then(runner);
30
+ }
31
+ }, [callback, nextFrame]);
32
+ return schedule;
33
+ }
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v8.8.0
2
+ * @mui/x-data-grid v8.9.2
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -12,6 +12,7 @@ export { GridBaseColumnHeaders } from "../components/columnHeaders/GridBaseColum
12
12
  export { DATA_GRID_DEFAULT_SLOTS_COMPONENTS } from "../constants/defaultGridSlotsComponents.js";
13
13
  export * from "../constants/signature.js";
14
14
  export { vars } from "../constants/cssVariables.js";
15
+ export { useGridVirtualizer } from "../hooks/core/useGridVirtualizer.js";
15
16
  export { propsStateInitializer } from "../hooks/core/useGridProps.js";
16
17
  export { getGridFilter } from "../components/panel/filterPanel/GridFilterPanel.js";
17
18
  export { getValueOptions } from "../components/panel/filterPanel/filterPanelUtils.js";
@@ -72,7 +73,6 @@ export { dimensionsStateInitializer, useGridDimensions } from "../hooks/features
72
73
  export * from "../hooks/features/dimensions/gridDimensionsSelectors.js";
73
74
  export { useGridStatePersistence } from "../hooks/features/statePersistence/useGridStatePersistence.js";
74
75
  export type { GridRestoreStatePreProcessingContext } from "../hooks/features/statePersistence/gridStatePersistenceInterface.js";
75
- export { useGridVirtualScroller, EMPTY_DETAIL_PANELS } from "../hooks/features/virtualization/useGridVirtualScroller.js";
76
76
  export * from "../hooks/features/virtualization/index.js";
77
77
  export { useGridColumnResize, columnResizeStateInitializer } from "../hooks/features/columnResize/useGridColumnResize.js";
78
78
  export { ROW_SELECTION_PROPAGATION_DEFAULT } from "../hooks/features/rowSelection/utils.js";
@@ -14,6 +14,7 @@ var _exportNames = {
14
14
  GridBaseColumnHeaders: true,
15
15
  DATA_GRID_DEFAULT_SLOTS_COMPONENTS: true,
16
16
  vars: true,
17
+ useGridVirtualizer: true,
17
18
  propsStateInitializer: true,
18
19
  getGridFilter: true,
19
20
  getValueOptions: true,
@@ -87,8 +88,6 @@ var _exportNames = {
87
88
  dimensionsStateInitializer: true,
88
89
  useGridDimensions: true,
89
90
  useGridStatePersistence: true,
90
- useGridVirtualScroller: true,
91
- EMPTY_DETAIL_PANELS: true,
92
91
  useGridColumnResize: true,
93
92
  columnResizeStateInitializer: true,
94
93
  ROW_SELECTION_PROPAGATION_DEFAULT: true,
@@ -139,12 +138,6 @@ Object.defineProperty(exports, "DataSourceRowsUpdateStrategy", {
139
138
  return _utils2.DataSourceRowsUpdateStrategy;
140
139
  }
141
140
  });
142
- Object.defineProperty(exports, "EMPTY_DETAIL_PANELS", {
143
- enumerable: true,
144
- get: function () {
145
- return _useGridVirtualScroller.EMPTY_DETAIL_PANELS;
146
- }
147
- });
148
141
  Object.defineProperty(exports, "GRID_DEFAULT_STRATEGY", {
149
142
  enumerable: true,
150
143
  get: function () {
@@ -793,10 +786,10 @@ Object.defineProperty(exports, "useGridStatePersistence", {
793
786
  return _useGridStatePersistence.useGridStatePersistence;
794
787
  }
795
788
  });
796
- Object.defineProperty(exports, "useGridVirtualScroller", {
789
+ Object.defineProperty(exports, "useGridVirtualizer", {
797
790
  enumerable: true,
798
791
  get: function () {
799
- return _useGridVirtualScroller.useGridVirtualScroller;
792
+ return _useGridVirtualizer.useGridVirtualizer;
800
793
  }
801
794
  });
802
795
  Object.defineProperty(exports, "useGridVisibleRows", {
@@ -838,6 +831,7 @@ Object.keys(_signature).forEach(function (key) {
838
831
  });
839
832
  });
840
833
  var _cssVariables = require("../constants/cssVariables");
834
+ var _useGridVirtualizer = require("../hooks/core/useGridVirtualizer");
841
835
  var _useGridProps = require("../hooks/core/useGridProps");
842
836
  var _GridFilterPanel = require("../components/panel/filterPanel/GridFilterPanel");
843
837
  var _filterPanelUtils = require("../components/panel/filterPanel/filterPanelUtils");
@@ -930,7 +924,6 @@ Object.keys(_gridDimensionsSelectors).forEach(function (key) {
930
924
  });
931
925
  });
932
926
  var _useGridStatePersistence = require("../hooks/features/statePersistence/useGridStatePersistence");
933
- var _useGridVirtualScroller = require("../hooks/features/virtualization/useGridVirtualScroller");
934
927
  var _virtualization = require("../hooks/features/virtualization");
935
928
  Object.keys(_virtualization).forEach(function (key) {
936
929
  if (key === "default" || key === "__esModule") return;
@@ -18,6 +18,11 @@ const getPinnedCellOffset = (pinnedPosition, computedWidth, columnIndex, columnP
18
18
  pinnedOffset = undefined;
19
19
  break;
20
20
  }
21
+
22
+ // XXX: fix this properly
23
+ if (Number.isNaN(pinnedOffset)) {
24
+ pinnedOffset = undefined;
25
+ }
21
26
  return pinnedOffset;
22
27
  };
23
28
  exports.getPinnedCellOffset = getPinnedCellOffset;
package/locales/frFR.js CHANGED
@@ -9,8 +9,8 @@ const frFRGrid = {
9
9
  // Root
10
10
  noRowsLabel: 'Pas de résultats',
11
11
  noResultsOverlayLabel: 'Aucun résultat.',
12
- // noColumnsOverlayLabel: 'No columns',
13
- // noColumnsOverlayManageColumns: 'Manage columns',
12
+ noColumnsOverlayLabel: 'Aucune colonne',
13
+ noColumnsOverlayManageColumns: 'Gérer les colonnes',
14
14
  // emptyPivotOverlayLabel: 'Add fields to rows, columns, and values to create a pivot table',
15
15
 
16
16
  // Density selector toolbar button text
@@ -42,15 +42,13 @@ const frFRGrid = {
42
42
  // toolbarPivot: 'Pivot',
43
43
 
44
44
  // Toolbar AI Assistant button
45
- // toolbarAssistant: 'AI Assistant',
46
-
45
+ toolbarAssistant: 'Assistant IA',
47
46
  // Columns management text
48
47
  columnsManagementSearchTitle: 'Rechercher',
49
48
  columnsManagementNoColumns: 'Pas de colonnes',
50
49
  columnsManagementShowHideAllText: 'Afficher/masquer toutes',
51
50
  columnsManagementReset: 'Réinitialiser',
52
- // columnsManagementDeleteIconLabel: 'Clear',
53
-
51
+ columnsManagementDeleteIconLabel: 'Effacer',
54
52
  // Filter panel text
55
53
  filterPanelAddFilter: 'Ajouter un filtre',
56
54
  filterPanelRemoveAll: 'Tout supprimer',
@@ -106,15 +104,14 @@ const frFRGrid = {
106
104
  'headerFilterOperator>=': 'Est supérieur ou égal à',
107
105
  'headerFilterOperator<': 'Est inférieur à',
108
106
  'headerFilterOperator<=': 'Est inférieur ou égal à',
109
- // headerFilterClear: 'Clear filter',
110
-
107
+ headerFilterClear: 'Effacer le filtre',
111
108
  // Filter values text
112
109
  filterValueAny: 'tous',
113
110
  filterValueTrue: 'vrai',
114
111
  filterValueFalse: 'faux',
115
112
  // Column menu text
116
113
  columnMenuLabel: 'Menu',
117
- // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
114
+ columnMenuAriaLabel: columnName => `Menu pour la colonne ${columnName}`,
118
115
  columnMenuShowColumns: 'Afficher les colonnes',
119
116
  columnMenuManageColumns: 'Gérer les colonnes',
120
117
  columnMenuFilter: 'Filtrer',
@@ -163,18 +160,18 @@ const frFRGrid = {
163
160
  collapseDetailPanel: 'Masquer',
164
161
  // Pagination
165
162
  paginationRowsPerPage: 'Lignes par page :',
166
- // paginationDisplayedRows: ({
167
- // from,
168
- // to,
169
- // count,
170
- // estimated
171
- // }) => {
172
- // if (!estimated) {
173
- // return `${from}–${to} of ${count !== -1 ? count : `more than ${to}`}`;
174
- // }
175
- // const estimatedLabel = estimated && estimated > to ? `around ${estimated}` : `more than ${to}`;
176
- // return `${from}–${to} of ${count !== -1 ? count : estimatedLabel}`;
177
- // },
163
+ paginationDisplayedRows: ({
164
+ from,
165
+ to,
166
+ count,
167
+ estimated
168
+ }) => {
169
+ if (!estimated) {
170
+ return `${from}–${to} sur ${count !== -1 ? count : `plus de ${to}`}`;
171
+ }
172
+ const estimatedLabel = estimated && estimated > to ? `environ ${estimated}` : `plus de ${to}`;
173
+ return `${from}–${to} sur ${count !== -1 ? count : estimatedLabel}`;
174
+ },
178
175
  paginationItemAriaLabel: type => {
179
176
  if (type === 'first') {
180
177
  return 'Aller à la première page';
package/locales/heIL.js CHANGED
@@ -162,18 +162,18 @@ const heILGrid = {
162
162
  collapseDetailPanel: 'כווץ',
163
163
  // Pagination
164
164
  paginationRowsPerPage: 'שורות בעמוד:',
165
- // paginationDisplayedRows: ({
166
- // from,
167
- // to,
168
- // count,
169
- // estimated
170
- // }) => {
171
- // if (!estimated) {
172
- // return `${from}–${to} of ${count !== -1 ? count : `more than ${to}`}`;
173
- // }
174
- // const estimatedLabel = estimated && estimated > to ? `around ${estimated}` : `more than ${to}`;
175
- // return `${from}–${to} of ${count !== -1 ? count : estimatedLabel}`;
176
- // },
165
+ paginationDisplayedRows: ({
166
+ from,
167
+ to,
168
+ count,
169
+ estimated
170
+ }) => {
171
+ if (!estimated) {
172
+ return `${from}-${to} מתוך ${count !== -1 ? count : `יותר מ־${to}`}`;
173
+ }
174
+ const estimatedLabel = estimated && estimated > to ? `כ־${estimated}` : `יותר מ־${to}`;
175
+ return `${from}-${to} מתוך ${count !== -1 ? count : estimatedLabel}`;
176
+ },
177
177
  paginationItemAriaLabel: type => {
178
178
  if (type === 'first') {
179
179
  return 'לעמוד הראשון';