@mui/x-data-grid-pro 6.0.0-alpha.7 → 6.0.0-alpha.8

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 (111) hide show
  1. package/CHANGELOG.md +126 -0
  2. package/DataGridPro/DataGrid.d.ts +4 -0
  3. package/DataGridPro/DataGrid.js +10 -0
  4. package/DataGridPro/DataGridPro.js +8 -1
  5. package/DataGridPro/index.d.ts +1 -0
  6. package/DataGridPro/index.js +1 -0
  7. package/DataGridPro/useDataGridProProps.js +1 -0
  8. package/components/DataGridProColumnHeaders.js +1 -2
  9. package/components/DataGridProVirtualScroller.js +3 -3
  10. package/components/GridDetailPanel.js +4 -4
  11. package/components/GridTreeDataGroupingCell.d.ts +5 -0
  12. package/components/GridTreeDataGroupingCell.js +9 -2
  13. package/hooks/features/columnPinning/useGridColumnPinning.js +8 -8
  14. package/hooks/features/columnPinning/useGridColumnPinningPreProcessors.d.ts +2 -2
  15. package/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +3 -3
  16. package/hooks/features/columnReorder/useGridColumnReorder.d.ts +2 -2
  17. package/hooks/features/columnReorder/useGridColumnReorder.js +3 -3
  18. package/hooks/features/columnResize/useGridColumnResize.d.ts +2 -2
  19. package/hooks/features/columnResize/useGridColumnResize.js +1 -1
  20. package/hooks/features/detailPanel/gridDetailPanelInterface.d.ts +5 -5
  21. package/hooks/features/detailPanel/useGridDetailPanel.js +9 -6
  22. package/hooks/features/detailPanel/useGridDetailPanelPreProcessors.d.ts +2 -2
  23. package/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +7 -7
  24. package/hooks/features/infiniteLoader/useGridInfiniteLoader.d.ts +2 -2
  25. package/hooks/features/infiniteLoader/useGridInfiniteLoader.js +1 -1
  26. package/hooks/features/lazyLoader/useGridLazyLoader.d.ts +2 -2
  27. package/hooks/features/lazyLoader/useGridLazyLoader.js +22 -22
  28. package/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +2 -2
  29. package/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.js +2 -2
  30. package/hooks/features/rowPinning/useGridRowPinning.js +3 -3
  31. package/hooks/features/rowPinning/useGridRowPinningPreProcessors.d.ts +3 -3
  32. package/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +3 -3
  33. package/hooks/features/rowReorder/useGridRowReorder.d.ts +2 -2
  34. package/hooks/features/rowReorder/useGridRowReorderPreProcessors.d.ts +2 -2
  35. package/hooks/features/rowReorder/useGridRowReorderPreProcessors.js +4 -4
  36. package/hooks/features/treeData/useGridTreeDataPreProcessors.d.ts +2 -2
  37. package/hooks/features/treeData/useGridTreeDataPreProcessors.js +14 -14
  38. package/index.js +1 -1
  39. package/legacy/DataGridPro/DataGrid.js +10 -0
  40. package/legacy/DataGridPro/DataGridPro.js +8 -1
  41. package/legacy/DataGridPro/index.js +1 -0
  42. package/legacy/DataGridPro/useDataGridProProps.js +1 -0
  43. package/legacy/components/DataGridProColumnHeaders.js +1 -2
  44. package/legacy/components/DataGridProVirtualScroller.js +3 -3
  45. package/legacy/components/GridDetailPanel.js +4 -4
  46. package/legacy/components/GridTreeDataGroupingCell.js +10 -2
  47. package/legacy/hooks/features/columnPinning/useGridColumnPinning.js +8 -8
  48. package/legacy/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +3 -3
  49. package/legacy/hooks/features/columnReorder/useGridColumnReorder.js +3 -3
  50. package/legacy/hooks/features/columnResize/useGridColumnResize.js +1 -1
  51. package/legacy/hooks/features/detailPanel/useGridDetailPanel.js +9 -6
  52. package/legacy/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +7 -7
  53. package/legacy/hooks/features/infiniteLoader/useGridInfiniteLoader.js +1 -1
  54. package/legacy/hooks/features/lazyLoader/useGridLazyLoader.js +22 -22
  55. package/legacy/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.js +2 -2
  56. package/legacy/hooks/features/rowPinning/useGridRowPinning.js +3 -3
  57. package/legacy/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +3 -3
  58. package/legacy/hooks/features/rowReorder/useGridRowReorderPreProcessors.js +4 -4
  59. package/legacy/hooks/features/treeData/useGridTreeDataPreProcessors.js +14 -14
  60. package/legacy/index.js +1 -1
  61. package/legacy/utils/releaseInfo.js +1 -1
  62. package/models/dataGridProProps.d.ts +7 -1
  63. package/models/gridApiPro.d.ts +2 -2
  64. package/modern/DataGridPro/DataGrid.js +10 -0
  65. package/modern/DataGridPro/DataGridPro.js +8 -1
  66. package/modern/DataGridPro/index.js +1 -0
  67. package/modern/DataGridPro/useDataGridProProps.js +1 -0
  68. package/modern/components/DataGridProColumnHeaders.js +1 -2
  69. package/modern/components/DataGridProVirtualScroller.js +3 -3
  70. package/modern/components/GridDetailPanel.js +4 -4
  71. package/modern/components/GridTreeDataGroupingCell.js +9 -2
  72. package/modern/hooks/features/columnPinning/useGridColumnPinning.js +8 -8
  73. package/modern/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +3 -3
  74. package/modern/hooks/features/columnReorder/useGridColumnReorder.js +3 -3
  75. package/modern/hooks/features/columnResize/useGridColumnResize.js +1 -1
  76. package/modern/hooks/features/detailPanel/useGridDetailPanel.js +9 -6
  77. package/modern/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +7 -7
  78. package/modern/hooks/features/infiniteLoader/useGridInfiniteLoader.js +1 -1
  79. package/modern/hooks/features/lazyLoader/useGridLazyLoader.js +22 -22
  80. package/modern/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.js +2 -2
  81. package/modern/hooks/features/rowPinning/useGridRowPinning.js +3 -3
  82. package/modern/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +3 -3
  83. package/modern/hooks/features/rowReorder/useGridRowReorderPreProcessors.js +4 -4
  84. package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.js +14 -14
  85. package/modern/index.js +1 -1
  86. package/modern/utils/releaseInfo.js +1 -1
  87. package/node/DataGridPro/DataGrid.js +17 -0
  88. package/node/DataGridPro/DataGridPro.js +8 -1
  89. package/node/DataGridPro/index.js +14 -0
  90. package/node/DataGridPro/useDataGridProProps.js +1 -0
  91. package/node/components/DataGridProColumnHeaders.js +1 -3
  92. package/node/components/DataGridProVirtualScroller.js +3 -3
  93. package/node/components/GridDetailPanel.js +4 -4
  94. package/node/components/GridTreeDataGroupingCell.js +9 -2
  95. package/node/hooks/features/columnPinning/useGridColumnPinning.js +8 -8
  96. package/node/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +3 -3
  97. package/node/hooks/features/columnReorder/useGridColumnReorder.js +3 -3
  98. package/node/hooks/features/columnResize/useGridColumnResize.js +10 -10
  99. package/node/hooks/features/detailPanel/useGridDetailPanel.js +9 -6
  100. package/node/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +7 -7
  101. package/node/hooks/features/infiniteLoader/useGridInfiniteLoader.js +1 -1
  102. package/node/hooks/features/lazyLoader/useGridLazyLoader.js +22 -22
  103. package/node/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.js +2 -2
  104. package/node/hooks/features/rowPinning/useGridRowPinning.js +3 -3
  105. package/node/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +3 -3
  106. package/node/hooks/features/rowReorder/useGridRowReorderPreProcessors.js +4 -4
  107. package/node/hooks/features/treeData/useGridTreeDataPreProcessors.js +14 -14
  108. package/node/index.js +1 -1
  109. package/node/utils/releaseInfo.js +1 -1
  110. package/package.json +4 -4
  111. package/utils/releaseInfo.js +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,76 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 6.0.0-alpha.8
7
+
8
+ _Nov 17, 2022_
9
+
10
+ We'd like to offer a big thanks to the 12 contributors who made this release possible. Here are some highlights ✨:
11
+
12
+ - 🎁 Support aggregating data from multiple row fields (#6656) @cherniavskii
13
+ - 📚 Documentation improvements
14
+ - 🐞 Bugfixes
15
+
16
+ ### `@mui/x-data-grid@v6.0.0-alpha.8` / `@mui/x-data-grid-pro@v6.0.0-alpha.8` / `@mui/x-data-grid-premium@v6.0.0-alpha.8`
17
+
18
+ #### Changes
19
+
20
+ - [DataGrid] Fix `ErrorOverlay` not receiving defined input props (#6819) @banoth-ravinder
21
+ - [DataGrid] Fix conflict with the latest version of `@types/react` (#6797) @vizv
22
+ - [DataGrid] Make more `apiRef` methods private (#6700) @cherniavskii
23
+ - [DataGrid] Provide a clear error message when upgrading (#6685) @oliviertassinari
24
+ - [DataGridPremium] Allow to customize the indent of group expansion toggle (#6837) @MBilalShafi
25
+ - [DataGridPremium] Support aggregating data from multiple row fields (#6656) @cherniavskii
26
+ - [DataGridPro] Fix detail panel not working with `getRowSpacing` prop (#6707) @cherniavskii
27
+ - [DataGridPro] Opt-out for column jump back on re-order (#6733) @gavbrennan
28
+ - [l10n] Improve Finnish (fi-FI) locale (#6859) @RainoPikkarainen
29
+
30
+ ### `@mui/x-date-pickers@v6.0.0-alpha.8` / `@mui/x-date-pickers-pro@v6.0.0-alpha.8`
31
+
32
+ #### Breaking changes
33
+
34
+ - The `ClockPicker` view component has been renamed to `TimeClock` to better fit its usage:
35
+
36
+ ```diff
37
+ -<ClockPicker {...props} />
38
+ +<TimeClock {...props} />
39
+ ```
40
+
41
+ Component name in the theme has changed as well:
42
+
43
+ ```diff
44
+ -MuiClockPicker: {
45
+ +MuiTimeClock: {
46
+ ```
47
+
48
+ #### Changes
49
+
50
+ - [pickers] Fix typing and prop drilling on `DateRangeCalendar` and multi input range fields (#6852) @flaviendelangle
51
+ - [pickers] Pass the `ampm` prop from the new pickers to their field (#6868) @flaviendelangle
52
+ - [pickers] Rename `CalendarPickerView`, `ClockPickerView` and `CalendarOrClockPickerView` (#6855) @flaviendelangle
53
+ - [pickers] Rename `ClockPicker` into `TimeClock` (#6851) @flaviendelangle
54
+
55
+ ### Docs
56
+
57
+ - [docs] Add `dayjs` to the dependencies (#6862) @m4theushw
58
+ - [docs] Clarify how the Row Pinning works with other features of the DataGrid (#6853) @cherniavskii
59
+ - [docs] Fix typo in Export page (#6848) @m4theushw
60
+ - [docs] Group picker pages (#6369) @flaviendelangle
61
+ - [docs] Remove default prop and improve format (#6781) @oliviertassinari
62
+ - [docs] Sync prism-okaidia.css with source (#6820) @oliviertassinari
63
+
64
+ ### Core
65
+
66
+ - [core] Convert scripts to ESM (#6789) @LukasTy
67
+ - [core] Feedback on branch protection @oliviertassinari
68
+ - [core] Fix `test-types` out of memory error (#6850) @LukasTy
69
+ - [core] Import from `@mui/utils` instead of `@mui/material/utils` (#6816) @cherniavskii
70
+ - [core] Show the whole version to make blame easier @oliviertassinari
71
+ - [core] Small changes on new pickers internals (#6840) @flaviendelangle
72
+ - [core] Remove prettier scripts (#6815) @Janpot
73
+ - [license] Polish error messages (#6881) @oliviertassinari
74
+ - [test] Verify `onError` call on the pickers (#6771) @alexfauquette
75
+
6
76
  ## 6.0.0-alpha.7
7
77
 
8
78
  _Nov 10, 2022_
@@ -949,6 +1019,62 @@ You can find more information about the new api, including how to set those tran
949
1019
  - [test] Skip tests for column pinning and dynamic row height (#5997) @m4theushw
950
1020
  - [website] Improve security header @oliviertassinari
951
1021
 
1022
+ ## 5.17.12
1023
+
1024
+ _Nov 17, 2022_
1025
+
1026
+ We'd like to offer a big thanks to the 5 contributors who made this release possible. Here are some highlights ✨:
1027
+
1028
+ - 🌍 Improve Finnish (fi-FI) locale (#6859) @RainoPikkarainen
1029
+ - 🐞 Bugfixes
1030
+
1031
+ ### `@mui/x-data-grid@v5.17.12` / `@mui/x-data-grid-pro@v5.17.12` / `@mui/x-data-grid-premium@v5.17.12`
1032
+
1033
+ #### Changes
1034
+
1035
+ - [DataGrid] Fix conflict with the latest version of `@types/react` (#6883) @vizv
1036
+ - [DataGridPremium] Support aggregating data from multiple row fields (#6844) @cherniavskii
1037
+ - [DataGridPro] Fix detail panel not working with `getRowSpacing` prop (#6858) @cherniavskii
1038
+ - [l10n] Improve Finnish (fi-FI) locale (#6859) @RainoPikkarainen
1039
+
1040
+ ### Docs
1041
+
1042
+ - [docs] Clarify DataGrid Row Pinning docs (#6891) @cherniavskii
1043
+
1044
+ ### Core
1045
+
1046
+ - [core] Upgrade monorepo (#6864) @m4theushw
1047
+ - [license] Polish error messages (#6881) @oliviertassinari
1048
+
1049
+ ## 5.17.11
1050
+
1051
+ _Nov 10, 2022_
1052
+
1053
+ We'd like to offer a big thanks to the 5 contributors who made this release possible. Here are some highlights ✨:
1054
+
1055
+ - 🐞 Bugfixes
1056
+
1057
+ ### `@mui/x-data-grid@v5.17.11` / `@mui/x-data-grid-pro@v5.17.11` / `@mui/x-data-grid-premium@v5.17.11`
1058
+
1059
+ #### Changes
1060
+
1061
+ - [DataGrid] Fix for cell focus preventing scroll when virtualization enabled (#6622) @yaredtsy
1062
+ - [DataGridPro] Opt-out for column jump back on re-order (#6697) @gavbrennan
1063
+
1064
+ ### `@mui/x-date-pickers@v5.0.8` / `@mui/x-date-pickers-pro@v5.0.8`
1065
+
1066
+ #### Changes
1067
+
1068
+ - [pickers] Fix pickers toolbar styling (#6793) @LukasTy
1069
+
1070
+ ### Docs
1071
+
1072
+ - [docs] Fix link to localization page (#6766) @alexfauquette
1073
+
1074
+ ### Core
1075
+
1076
+ - [license] Add new license status 'Out of scope' (#6774) @oliviertassinari
1077
+
952
1078
  ## 5.17.10
953
1079
 
954
1080
  _Nov 4, 2022_
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @deprecated Import DataGridPro instead.
3
+ */
4
+ export declare function DataGrid(): null;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @deprecated Import DataGridPro instead.
3
+ */
4
+ export function DataGrid() {
5
+ if (process.env.NODE_ENV === 'production') {
6
+ return null;
7
+ }
8
+
9
+ throw new Error(["You try to import `DataGrid` from @mui/x-data-grid-pro but this module doesn't exist.", '', "Instead, you can do `import { DataGridPro } from '@mui/x-data-grid-pro'`."].join('\n'));
10
+ }
@@ -265,7 +265,7 @@ DataGridProRaw.propTypes = {
265
265
  error: PropTypes.any,
266
266
 
267
267
  /**
268
- * Features under development.
268
+ * Unstable features, breaking changes might be introduced.
269
269
  * For each feature, if the flag is not explicitly set to `true`, the feature will be fully disabled and any property / method call will not have any effect.
270
270
  */
271
271
  experimentalFeatures: PropTypes.shape({
@@ -441,6 +441,13 @@ DataGridProRaw.propTypes = {
441
441
  */
442
442
  isRowSelectable: PropTypes.func,
443
443
 
444
+ /**
445
+ * If `true`, moving the mouse pointer outside the grid before releasing the mouse button
446
+ * in a column re-order action will not cause the column to jump back to its original position.
447
+ * @default false
448
+ */
449
+ keepColumnPositionIfDraggedOutside: PropTypes.bool,
450
+
444
451
  /**
445
452
  * If `true`, the selection model will retain selected rows that do not exist.
446
453
  * Useful when using server side pagination and row selections need to be retained
@@ -1,2 +1,3 @@
1
+ export * from './DataGrid';
1
2
  export * from './DataGridPro';
2
3
  export { DATA_GRID_PRO_PROPS_DEFAULT_VALUES } from './useDataGridProProps';
@@ -1,2 +1,3 @@
1
+ export * from './DataGrid';
1
2
  export * from './DataGridPro';
2
3
  export { DATA_GRID_PRO_PROPS_DEFAULT_VALUES } from './useDataGridProProps';
@@ -11,6 +11,7 @@ export const DATA_GRID_PRO_PROPS_DEFAULT_VALUES = _extends({}, DATA_GRID_PROPS_D
11
11
  treeData: false,
12
12
  defaultGroupingExpansionDepth: 0,
13
13
  disableColumnPinning: false,
14
+ keepColumnPositionIfDraggedOutside: false,
14
15
  disableChildrenFiltering: false,
15
16
  disableChildrenSorting: false,
16
17
  rowReordering: false,
@@ -2,9 +2,8 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  const _excluded = ["style", "className", "innerRef"];
4
4
  import * as React from 'react';
5
- import { unstable_composeClasses as composeClasses } from '@mui/utils';
5
+ import { unstable_composeClasses as composeClasses, unstable_useEventCallback as useEventCallback } from '@mui/utils';
6
6
  import { styled, alpha } from '@mui/material/styles';
7
- import { useEventCallback } from '@mui/material/utils';
8
7
  import { getDataGridUtilityClass, gridClasses, useGridSelector, useGridApiEventHandler, gridVisibleColumnFieldsSelector, GridColumnHeaderSeparatorSides } from '@mui/x-data-grid';
9
8
  import { GridColumnHeaders, GridColumnHeadersInner, useGridColumnHeaders } from '@mui/x-data-grid/internals';
10
9
  import { useGridRootProps } from '../hooks/utils/useGridRootProps';
@@ -6,7 +6,7 @@ import { styled, alpha } from '@mui/material/styles';
6
6
  import { unstable_composeClasses as composeClasses } from '@mui/utils';
7
7
  import { useGridSelector, getDataGridUtilityClass, gridClasses, gridVisibleColumnFieldsSelector, gridRowsMetaSelector, useGridApiEventHandler, GridOverlays } from '@mui/x-data-grid';
8
8
  import { GridVirtualScroller, GridVirtualScrollerContent, GridVirtualScrollerRenderZone, useGridVirtualScroller, calculatePinnedRowsHeight } from '@mui/x-data-grid/internals';
9
- import { useGridApiContext } from '../hooks/utils/useGridApiContext';
9
+ import { useGridPrivateApiContext } from '../hooks/utils/useGridPrivateApiContext';
10
10
  import { useGridRootProps } from '../hooks/utils/useGridRootProps';
11
11
  import { gridPinnedColumnsSelector, GridPinnedPosition } from '../hooks/features/columnPinning';
12
12
  import { gridDetailPanelExpandedRowsContentCacheSelector, gridDetailPanelExpandedRowsHeightCacheSelector, gridDetailPanelExpandedRowIdsSelector } from '../hooks/features/detailPanel';
@@ -145,7 +145,7 @@ const VirtualScrollerPinnedRowsRenderZone = styled('div')({
145
145
  const DataGridProVirtualScroller = /*#__PURE__*/React.forwardRef(function DataGridProVirtualScroller(props, ref) {
146
146
  const other = _objectWithoutPropertiesLoose(props, _excluded);
147
147
 
148
- const apiRef = useGridApiContext();
148
+ const apiRef = useGridPrivateApiContext();
149
149
  const rootProps = useGridRootProps();
150
150
  const visibleColumnFields = useGridSelector(apiRef, gridVisibleColumnFieldsSelector);
151
151
  const expandedRowIds = useGridSelector(apiRef, gridDetailPanelExpandedRowIdsSelector);
@@ -251,7 +251,7 @@ const DataGridProVirtualScroller = /*#__PURE__*/React.forwardRef(function DataGr
251
251
  const exists = rowIndex !== undefined;
252
252
 
253
253
  if ( /*#__PURE__*/React.isValidElement(content) && exists) {
254
- const hasAutoHeight = apiRef.current.unstable_detailPanelHasAutoHeight(id);
254
+ const hasAutoHeight = apiRef.current.detailPanelHasAutoHeight(id);
255
255
  const height = hasAutoHeight ? 'auto' : detailPanelsHeights[id];
256
256
  const sizes = apiRef.current.unstable_getRowInternalSizes(id);
257
257
  const spacingTop = (sizes == null ? void 0 : sizes.spacingTop) || 0;
@@ -4,7 +4,7 @@ const _excluded = ["rowId", "height", "style"];
4
4
  import * as React from 'react';
5
5
  import Box from '@mui/material/Box';
6
6
  import { styled } from '@mui/material/styles';
7
- import { useGridApiContext } from '../hooks/utils/useGridApiContext';
7
+ import { useGridPrivateApiContext } from '../hooks/utils/useGridPrivateApiContext';
8
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
9
  const DetailPanel = styled(Box, {
10
10
  name: 'MuiDataGrid',
@@ -28,12 +28,12 @@ function GridDetailPanel(props) {
28
28
  } = props,
29
29
  other = _objectWithoutPropertiesLoose(props, _excluded);
30
30
 
31
- const apiRef = useGridApiContext();
31
+ const apiRef = useGridPrivateApiContext();
32
32
  const ref = React.useRef();
33
33
  React.useLayoutEffect(() => {
34
34
  if (height === 'auto' && ref.current && typeof ResizeObserver === 'undefined') {
35
35
  // Fallback for IE
36
- apiRef.current.unstable_storeDetailPanelHeight(rowId, ref.current.clientHeight);
36
+ apiRef.current.storeDetailPanelHeight(rowId, ref.current.clientHeight);
37
37
  }
38
38
  }, [apiRef, height, rowId]);
39
39
  React.useLayoutEffect(() => {
@@ -46,7 +46,7 @@ function GridDetailPanel(props) {
46
46
  const resizeObserver = new ResizeObserver(entries => {
47
47
  const [entry] = entries;
48
48
  const observedHeight = entry.borderBoxSize && entry.borderBoxSize.length > 0 ? entry.borderBoxSize[0].blockSize : entry.contentRect.height;
49
- apiRef.current.unstable_storeDetailPanelHeight(rowId, observedHeight);
49
+ apiRef.current.storeDetailPanelHeight(rowId, observedHeight);
50
50
  });
51
51
  resizeObserver.observe(ref.current);
52
52
  return () => resizeObserver.disconnect();
@@ -2,6 +2,11 @@
2
2
  import { GridRenderCellParams, GridGroupNode } from '@mui/x-data-grid';
3
3
  interface GridTreeDataGroupingCellProps extends GridRenderCellParams<any, any, any, GridGroupNode> {
4
4
  hideDescendantCount?: boolean;
5
+ /**
6
+ * The cell offset multiplier used for calculating cell offset (`rowNode.depth * offsetMultiplier` px).
7
+ * @default 2
8
+ */
9
+ offsetMultiplier?: number;
5
10
  }
6
11
  declare function GridTreeDataGroupingCell(props: GridTreeDataGroupingCellProps): JSX.Element;
7
12
  declare namespace GridTreeDataGroupingCell {
@@ -29,7 +29,8 @@ function GridTreeDataGroupingCell(props) {
29
29
  field,
30
30
  formattedValue,
31
31
  rowNode,
32
- hideDescendantCount
32
+ hideDescendantCount,
33
+ offsetMultiplier = 2
33
34
  } = props;
34
35
  const rootProps = useGridRootProps();
35
36
  const apiRef = useGridApiContext();
@@ -60,7 +61,7 @@ function GridTreeDataGroupingCell(props) {
60
61
  return /*#__PURE__*/_jsxs(Box, {
61
62
  className: classes.root,
62
63
  sx: {
63
- ml: rowNode.depth * 2
64
+ ml: rowNode.depth * offsetMultiplier
64
65
  },
65
66
  children: [/*#__PURE__*/_jsx("div", {
66
67
  className: classes.toggle,
@@ -138,6 +139,12 @@ process.env.NODE_ENV !== "production" ? GridTreeDataGroupingCell.propTypes = {
138
139
  */
139
140
  isEditable: PropTypes.bool,
140
141
 
142
+ /**
143
+ * The cell offset multiplier used for calculating cell offset (`rowNode.depth * offsetMultiplier` px).
144
+ * @default 2
145
+ */
146
+ offsetMultiplier: PropTypes.number,
147
+
141
148
  /**
142
149
  * The row model of the row that the current cell belongs to.
143
150
  */
@@ -18,7 +18,7 @@ function Divider() {
18
18
  export const columnPinningStateInitializer = (state, props, apiRef) => {
19
19
  var _props$initialState;
20
20
 
21
- apiRef.current.unstable_caches.columnPinning = {
21
+ apiRef.current.caches.columnPinning = {
22
22
  orderedFieldsBeforePinningColumns: null
23
23
  };
24
24
  let model;
@@ -72,10 +72,10 @@ export const useGridColumnPinning = (apiRef, props) => {
72
72
  }
73
73
 
74
74
  const index = event.currentTarget.dataset.rowindex;
75
- const rowElements = apiRef.current.windowRef.current.querySelectorAll(`.${gridClasses.row}[data-rowindex="${index}"]`);
75
+ const rowElements = apiRef.current.virtualScrollerRef.current.querySelectorAll(`.${gridClasses.row}[data-rowindex="${index}"]`);
76
76
  rowElements.forEach(row => {
77
77
  // Ignore rows from other grid inside the hovered row
78
- if (row.closest(`.${gridClasses.virtualScroller}`) === apiRef.current.windowRef.current) {
78
+ if (row.closest(`.${gridClasses.virtualScroller}`) === apiRef.current.virtualScrollerRef.current) {
79
79
  if (event.type === 'mouseenter') {
80
80
  row.classList.add('Mui-hovered');
81
81
  } else {
@@ -111,8 +111,8 @@ export const useGridColumnPinning = (apiRef, props) => {
111
111
  const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
112
112
  const columnsTotalWidth = gridColumnsTotalWidthSelector(apiRef);
113
113
  const columnPositions = gridColumnPositionsSelector(apiRef);
114
- const clientWidth = apiRef.current.windowRef.current.clientWidth;
115
- const scrollLeft = apiRef.current.windowRef.current.scrollLeft;
114
+ const clientWidth = apiRef.current.virtualScrollerRef.current.clientWidth;
115
+ const scrollLeft = apiRef.current.virtualScrollerRef.current.scrollLeft;
116
116
  const offsetWidth = visibleColumns[params.colIndex].computedWidth;
117
117
  const offsetLeft = columnPositions[params.colIndex];
118
118
  const leftPinnedColumnsWidth = columnPositions[leftPinnedColumns.length];
@@ -267,7 +267,7 @@ export const useGridColumnPinning = (apiRef, props) => {
267
267
  };
268
268
  useGridApiMethod(apiRef, columnPinningApi, 'public');
269
269
  const handleColumnOrderChange = React.useCallback(params => {
270
- if (!apiRef.current.unstable_caches.columnPinning.orderedFieldsBeforePinningColumns) {
270
+ if (!apiRef.current.caches.columnPinning.orderedFieldsBeforePinningColumns) {
271
271
  return;
272
272
  }
273
273
 
@@ -297,7 +297,7 @@ export const useGridColumnPinning = (apiRef, props) => {
297
297
  */
298
298
 
299
299
  const siblingField = latestColumnFields[targetIndex - delta];
300
- const newOrderedFieldsBeforePinningColumns = [...apiRef.current.unstable_caches.columnPinning.orderedFieldsBeforePinningColumns]; // The index to start swapping fields
300
+ const newOrderedFieldsBeforePinningColumns = [...apiRef.current.caches.columnPinning.orderedFieldsBeforePinningColumns]; // The index to start swapping fields
301
301
 
302
302
  let i = newOrderedFieldsBeforePinningColumns.findIndex(column => column === field); // The index of the field to swap with
303
303
 
@@ -319,7 +319,7 @@ export const useGridColumnPinning = (apiRef, props) => {
319
319
  j = i + delta;
320
320
  }
321
321
 
322
- apiRef.current.unstable_caches.columnPinning.orderedFieldsBeforePinningColumns = newOrderedFieldsBeforePinningColumns;
322
+ apiRef.current.caches.columnPinning.orderedFieldsBeforePinningColumns = newOrderedFieldsBeforePinningColumns;
323
323
  }, [apiRef]);
324
324
  useGridApiEventHandler(apiRef, 'columnOrderChange', handleColumnOrderChange);
325
325
  React.useEffect(() => {
@@ -1,4 +1,4 @@
1
1
  import * as React from 'react';
2
2
  import { DataGridProProcessedProps } from '../../../models/dataGridProProps';
3
- import { GridApiPro } from '../../../models/gridApiPro';
4
- export declare const useGridColumnPinningPreProcessors: (apiRef: React.MutableRefObject<GridApiPro>, props: DataGridProProcessedProps) => void;
3
+ import { GridPrivateApiPro } from '../../../models/gridApiPro';
4
+ export declare const useGridColumnPinningPreProcessors: (apiRef: React.MutableRefObject<GridPrivateApiPro>, props: DataGridProProcessedProps) => void;
@@ -34,7 +34,7 @@ export const useGridColumnPinningPreProcessors = (apiRef, props) => {
34
34
  const allPinnedColumns = [...leftPinnedColumns, ...rightPinnedColumns];
35
35
  const {
36
36
  orderedFieldsBeforePinningColumns
37
- } = apiRef.current.unstable_caches.columnPinning;
37
+ } = apiRef.current.caches.columnPinning;
38
38
 
39
39
  if (orderedFieldsBeforePinningColumns) {
40
40
  newOrderedFields = new Array(columnsState.orderedFields.length).fill(null);
@@ -90,10 +90,10 @@ export const useGridColumnPinningPreProcessors = (apiRef, props) => {
90
90
  newOrderedFieldsBeforePinningColumns[i] = field;
91
91
  newOrderedFields[i] = field;
92
92
  });
93
- apiRef.current.unstable_caches.columnPinning.orderedFieldsBeforePinningColumns = newOrderedFieldsBeforePinningColumns;
93
+ apiRef.current.caches.columnPinning.orderedFieldsBeforePinningColumns = newOrderedFieldsBeforePinningColumns;
94
94
  } else {
95
95
  newOrderedFields = [...columnsState.orderedFields];
96
- apiRef.current.unstable_caches.columnPinning.orderedFieldsBeforePinningColumns = [...columnsState.orderedFields];
96
+ apiRef.current.caches.columnPinning.orderedFieldsBeforePinningColumns = [...columnsState.orderedFields];
97
97
  }
98
98
 
99
99
  prevAllPinnedColumns.current = allPinnedColumns;
@@ -1,9 +1,9 @@
1
1
  import * as React from 'react';
2
2
  import { GridStateInitializer } from '@mui/x-data-grid/internals';
3
- import { GridApiPro } from '../../../models/gridApiPro';
3
+ import { GridPrivateApiPro } from '../../../models/gridApiPro';
4
4
  import { DataGridProProcessedProps } from '../../../models/dataGridProProps';
5
5
  export declare const columnReorderStateInitializer: GridStateInitializer;
6
6
  /**
7
7
  * @requires useGridColumns (method)
8
8
  */
9
- export declare const useGridColumnReorder: (apiRef: React.MutableRefObject<GridApiPro>, props: Pick<DataGridProProcessedProps, 'disableColumnReorder' | 'classes'>) => void;
9
+ export declare const useGridColumnReorder: (apiRef: React.MutableRefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, 'disableColumnReorder' | 'keepColumnPositionIfDraggedOutside' | 'classes'>) => void;
@@ -232,19 +232,19 @@ export const useGridColumnReorder = (apiRef, props) => {
232
232
  clearTimeout(removeDnDStylesTimeout.current);
233
233
  dragColNode.current = null; // Check if the column was dropped outside the grid.
234
234
 
235
- if (event.dataTransfer.dropEffect === 'none') {
235
+ if (event.dataTransfer.dropEffect === 'none' && !props.keepColumnPositionIfDraggedOutside) {
236
236
  // Accessing params.field may contain the wrong field as header elements are reused
237
237
  apiRef.current.setColumnIndex(dragColField, originColumnIndex.current);
238
- originColumnIndex.current = null;
239
238
  }
240
239
 
240
+ originColumnIndex.current = null;
241
241
  apiRef.current.setState(state => _extends({}, state, {
242
242
  columnReorder: _extends({}, state.columnReorder, {
243
243
  dragCol: ''
244
244
  })
245
245
  }));
246
246
  apiRef.current.forceUpdate();
247
- }, [props.disableColumnReorder, logger, apiRef]);
247
+ }, [props.disableColumnReorder, props.keepColumnPositionIfDraggedOutside, logger, apiRef]);
248
248
  useGridApiEventHandler(apiRef, 'columnHeaderDragStart', handleDragStart);
249
249
  useGridApiEventHandler(apiRef, 'columnHeaderDragEnter', handleDragEnter);
250
250
  useGridApiEventHandler(apiRef, 'columnHeaderDragOver', handleDragOver);
@@ -1,10 +1,10 @@
1
1
  import * as React from 'react';
2
2
  import { GridStateInitializer } from '@mui/x-data-grid/internals';
3
- import { GridApiPro } from '../../../models/gridApiPro';
3
+ import { GridPrivateApiPro } from '../../../models/gridApiPro';
4
4
  import { DataGridProProcessedProps } from '../../../models/dataGridProProps';
5
5
  export declare const columnResizeStateInitializer: GridStateInitializer;
6
6
  /**
7
7
  * @requires useGridColumns (method, event)
8
8
  * TODO: improve experience for last column
9
9
  */
10
- export declare const useGridColumnResize: (apiRef: React.MutableRefObject<GridApiPro>, props: Pick<DataGridProProcessedProps, 'onColumnResize' | 'onColumnWidthChange'>) => void;
10
+ export declare const useGridColumnResize: (apiRef: React.MutableRefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, 'onColumnResize' | 'onColumnWidthChange'>) => void;
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
- import { ownerDocument, useEventCallback } from '@mui/material/utils';
3
+ import { unstable_ownerDocument as ownerDocument, unstable_useEventCallback as useEventCallback } from '@mui/utils';
4
4
  import { gridClasses, useGridApiEventHandler, useGridApiOptionHandler, useGridNativeEventListener, useGridLogger } from '@mui/x-data-grid';
5
5
  import { clamp, findParentElementFromClassName } from '@mui/x-data-grid/internals';
6
6
  import { useTheme } from '@mui/material/styles';
@@ -23,20 +23,20 @@ export interface GridDetailPanelApi {
23
23
  * @param {GridRowId[]} ids The ids of the rows to open the detail panel.
24
24
  */
25
25
  setExpandedDetailPanels: (ids: GridRowId[]) => void;
26
+ }
27
+ export interface GridDetailPanelPrivateApi {
26
28
  /**
27
29
  * Stores the panel height measurement and triggers the row height pre-processing.
28
30
  * @param {GridRowId} id The id of the row.
29
31
  * @param {number} height The new height.
30
- * @ignore - do not document.
31
32
  */
32
- unstable_storeDetailPanelHeight: (id: GridRowId, height: number) => void;
33
+ storeDetailPanelHeight: (id: GridRowId, height: number) => void;
33
34
  /**
34
35
  * Determines if the height of a detail panel is "auto".
35
36
  * @param {GridRowId} id The id of the row.
36
- * @return {boolean} `true` if the detail panel height is "auto".
37
- * @ignore - do not document.
37
+ * @returns {boolean} `true` if the detail panel height is "auto".
38
38
  */
39
- unstable_detailPanelHasAutoHeight: (id: GridRowId) => boolean;
39
+ detailPanelHasAutoHeight: (id: GridRowId) => boolean;
40
40
  }
41
41
  export interface GridDetailPanelState {
42
42
  expandedRowIds: GridRowId[];
@@ -138,20 +138,23 @@ export const useGridDetailPanel = (apiRef, props) => {
138
138
  })
139
139
  });
140
140
  });
141
- apiRef.current.unstable_requestPipeProcessorsApplication('rowHeight');
141
+ apiRef.current.requestPipeProcessorsApplication('rowHeight');
142
142
  }, [apiRef]);
143
143
  const detailPanelHasAutoHeight = React.useCallback(id => {
144
144
  const heightCache = gridDetailPanelRawHeightCacheSelector(apiRef.current.state);
145
145
  return heightCache[id] ? heightCache[id].autoHeight : false;
146
146
  }, [apiRef]);
147
- const detailPanelApi = {
147
+ const detailPanelPubicApi = {
148
148
  toggleDetailPanel,
149
149
  getExpandedDetailPanels,
150
- setExpandedDetailPanels,
151
- unstable_storeDetailPanelHeight: storeDetailPanelHeight,
152
- unstable_detailPanelHasAutoHeight: detailPanelHasAutoHeight
150
+ setExpandedDetailPanels
153
151
  };
154
- useGridApiMethod(apiRef, detailPanelApi, 'public');
152
+ const detailPanelPrivateApi = {
153
+ storeDetailPanelHeight,
154
+ detailPanelHasAutoHeight
155
+ };
156
+ useGridApiMethod(apiRef, detailPanelPubicApi, 'public');
157
+ useGridApiMethod(apiRef, detailPanelPrivateApi, 'private');
155
158
  React.useEffect(() => {
156
159
  if (props.detailPanelExpandedRowIds) {
157
160
  const currentModel = gridDetailPanelExpandedRowIdsSelector(apiRef.current.state);
@@ -1,4 +1,4 @@
1
1
  import * as React from 'react';
2
2
  import { DataGridProProcessedProps } from '../../../models/dataGridProProps';
3
- import { GridApiPro } from '../../../models/gridApiPro';
4
- export declare const useGridDetailPanelPreProcessors: (apiRef: React.MutableRefObject<GridApiPro>, props: DataGridProProcessedProps) => void;
3
+ import { GridPrivateApiPro } from '../../../models/gridApiPro';
4
+ export declare const useGridDetailPanelPreProcessors: (privateApiRef: React.MutableRefObject<GridPrivateApiPro>, props: DataGridProProcessedProps) => void;
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import { useGridRegisterPipeProcessor } from '@mui/x-data-grid/internals';
4
4
  import { GRID_DETAIL_PANEL_TOGGLE_FIELD, GRID_DETAIL_PANEL_TOGGLE_COL_DEF } from './gridDetailPanelToggleColDef';
5
5
  import { gridDetailPanelExpandedRowIdsSelector } from './gridDetailPanelSelector';
6
- export const useGridDetailPanelPreProcessors = (apiRef, props) => {
6
+ export const useGridDetailPanelPreProcessors = (privateApiRef, props) => {
7
7
  const addToggleColumn = React.useCallback(columnsState => {
8
8
  if (props.getDetailPanelContent == null) {
9
9
  // Remove the toggle column, when it exists
@@ -24,23 +24,23 @@ export const useGridDetailPanelPreProcessors = (apiRef, props) => {
24
24
 
25
25
  columnsState.orderedFields = [GRID_DETAIL_PANEL_TOGGLE_FIELD, ...columnsState.orderedFields];
26
26
  columnsState.lookup[GRID_DETAIL_PANEL_TOGGLE_FIELD] = _extends({}, GRID_DETAIL_PANEL_TOGGLE_COL_DEF, {
27
- headerName: apiRef.current.getLocaleText('detailPanelToggle')
27
+ headerName: privateApiRef.current.getLocaleText('detailPanelToggle')
28
28
  });
29
29
  return columnsState;
30
- }, [apiRef, props.getDetailPanelContent]);
30
+ }, [privateApiRef, props.getDetailPanelContent]);
31
31
  const addExpandedClassToRow = React.useCallback((classes, id) => {
32
32
  if (props.getDetailPanelContent == null) {
33
33
  return classes;
34
34
  }
35
35
 
36
- const expandedRowIds = gridDetailPanelExpandedRowIdsSelector(apiRef.current.state);
36
+ const expandedRowIds = gridDetailPanelExpandedRowIdsSelector(privateApiRef.current.state);
37
37
 
38
38
  if (!expandedRowIds.includes(id)) {
39
39
  return classes;
40
40
  }
41
41
 
42
42
  return [...classes, 'MuiDataGrid-row--detailPanelExpanded'];
43
- }, [apiRef, props.getDetailPanelContent]);
44
- useGridRegisterPipeProcessor(apiRef, 'hydrateColumns', addToggleColumn);
45
- useGridRegisterPipeProcessor(apiRef, 'rowClassName', addExpandedClassToRow);
43
+ }, [privateApiRef, props.getDetailPanelContent]);
44
+ useGridRegisterPipeProcessor(privateApiRef, 'hydrateColumns', addToggleColumn);
45
+ useGridRegisterPipeProcessor(privateApiRef, 'rowClassName', addExpandedClassToRow);
46
46
  };
@@ -1,9 +1,9 @@
1
1
  import * as React from 'react';
2
- import { GridApiPro } from '../../../models/gridApiPro';
2
+ import { GridPrivateApiPro } from '../../../models/gridApiPro';
3
3
  import { DataGridProProcessedProps } from '../../../models/dataGridProProps';
4
4
  /**
5
5
  * @requires useGridColumns (state)
6
6
  * @requires useGridDimensions (method) - can be after
7
7
  * @requires useGridScroll (method
8
8
  */
9
- export declare const useGridInfiniteLoader: (apiRef: React.MutableRefObject<GridApiPro>, props: Pick<DataGridProProcessedProps, 'onRowsScrollEnd' | 'scrollEndThreshold' | 'pagination' | 'paginationMode' | 'rowsLoadingMode'>) => void;
9
+ export declare const useGridInfiniteLoader: (apiRef: React.MutableRefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, 'onRowsScrollEnd' | 'scrollEndThreshold' | 'pagination' | 'paginationMode' | 'rowsLoadingMode'>) => void;
@@ -21,7 +21,7 @@ export const useGridInfiniteLoader = (apiRef, props) => {
21
21
  }
22
22
 
23
23
  const scrollPositionBottom = scrollPosition.top + dimensions.viewportOuterSize.height;
24
- const viewportPageSize = apiRef.current.unstable_getViewportPageSize();
24
+ const viewportPageSize = apiRef.current.getViewportPageSize();
25
25
 
26
26
  if (scrollPositionBottom < contentHeight - props.scrollEndThreshold) {
27
27
  isInScrollBottomArea.current = false;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { GridApiPro } from '../../../models/gridApiPro';
2
+ import { GridPrivateApiPro } from '../../../models/gridApiPro';
3
3
  import { DataGridProProcessedProps } from '../../../models/dataGridProProps';
4
4
  /**
5
5
  * @requires useGridRows (state)
@@ -7,4 +7,4 @@ import { DataGridProProcessedProps } from '../../../models/dataGridProProps';
7
7
  * @requires useGridDimensions (method) - can be after
8
8
  * @requires useGridScroll (method
9
9
  */
10
- export declare const useGridLazyLoader: (apiRef: React.MutableRefObject<GridApiPro>, props: Pick<DataGridProProcessedProps, 'onFetchRows' | 'rowsLoadingMode' | 'pagination' | 'paginationMode' | 'rowBuffer' | 'experimentalFeatures'>) => void;
10
+ export declare const useGridLazyLoader: (privateApiRef: React.MutableRefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, 'onFetchRows' | 'rowsLoadingMode' | 'pagination' | 'paginationMode' | 'rowBuffer' | 'experimentalFeatures'>) => void;