@mui/x-data-grid 8.14.0 → 8.15.0

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 (120) hide show
  1. package/CHANGELOG.md +202 -0
  2. package/components/GridScrollShadows.js +23 -3
  3. package/components/cell/GridCell.js +1 -0
  4. package/constants/gridClasses.d.ts +12 -0
  5. package/constants/gridClasses.js +1 -1
  6. package/constants/localeTextConstants.js +2 -1
  7. package/esm/components/GridScrollShadows.js +22 -3
  8. package/esm/components/cell/GridCell.js +1 -0
  9. package/esm/constants/gridClasses.d.ts +12 -0
  10. package/esm/constants/gridClasses.js +1 -1
  11. package/esm/constants/localeTextConstants.js +2 -1
  12. package/esm/hooks/core/strategyProcessing/gridStrategyProcessingApi.d.ts +6 -4
  13. package/esm/hooks/core/useGridProps.d.ts +3 -5
  14. package/esm/hooks/core/useGridProps.js +5 -3
  15. package/esm/hooks/core/useGridVirtualizer.js +11 -9
  16. package/esm/hooks/features/dataSource/models.d.ts +28 -28
  17. package/esm/hooks/features/dataSource/useGridDataSourceBase.d.ts +1 -1
  18. package/esm/hooks/features/dataSource/useGridDataSourceBase.js +28 -15
  19. package/esm/hooks/features/dataSource/utils.d.ts +2 -1
  20. package/esm/hooks/features/dataSource/utils.js +2 -1
  21. package/esm/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  22. package/esm/hooks/features/rows/gridRowsInterfaces.d.ts +1 -11
  23. package/esm/index.js +1 -1
  24. package/esm/internals/index.d.ts +2 -2
  25. package/esm/locales/arSD.js +1 -0
  26. package/esm/locales/beBY.js +1 -0
  27. package/esm/locales/bgBG.js +1 -0
  28. package/esm/locales/bnBD.js +1 -0
  29. package/esm/locales/csCZ.js +1 -0
  30. package/esm/locales/daDK.js +1 -0
  31. package/esm/locales/deDE.js +1 -0
  32. package/esm/locales/elGR.js +1 -0
  33. package/esm/locales/esES.js +1 -0
  34. package/esm/locales/faIR.js +1 -0
  35. package/esm/locales/fiFI.js +1 -0
  36. package/esm/locales/frFR.js +1 -0
  37. package/esm/locales/heIL.js +1 -0
  38. package/esm/locales/hrHR.js +1 -0
  39. package/esm/locales/huHU.js +1 -0
  40. package/esm/locales/hyAM.js +1 -0
  41. package/esm/locales/idID.js +1 -0
  42. package/esm/locales/isIS.js +1 -0
  43. package/esm/locales/itIT.js +104 -115
  44. package/esm/locales/jaJP.js +1 -0
  45. package/esm/locales/koKR.js +1 -0
  46. package/esm/locales/nbNO.js +1 -0
  47. package/esm/locales/nlNL.js +1 -0
  48. package/esm/locales/nnNO.js +1 -0
  49. package/esm/locales/plPL.js +1 -0
  50. package/esm/locales/ptBR.js +1 -0
  51. package/esm/locales/ptPT.js +1 -0
  52. package/esm/locales/roRO.js +1 -0
  53. package/esm/locales/ruRU.js +1 -0
  54. package/esm/locales/skSK.js +1 -0
  55. package/esm/locales/svSE.js +1 -0
  56. package/esm/locales/trTR.js +1 -0
  57. package/esm/locales/ukUA.js +1 -0
  58. package/esm/locales/urPK.js +1 -0
  59. package/esm/locales/viVN.js +1 -0
  60. package/esm/locales/zhCN.js +1 -0
  61. package/esm/locales/zhHK.js +1 -0
  62. package/esm/locales/zhTW.js +1 -0
  63. package/esm/models/api/gridLocaleTextApi.d.ts +1 -0
  64. package/esm/models/gridDataSource.d.ts +13 -0
  65. package/esm/models/gridStateCommunity.d.ts +2 -3
  66. package/hooks/core/strategyProcessing/gridStrategyProcessingApi.d.ts +6 -4
  67. package/hooks/core/useGridProps.d.ts +3 -5
  68. package/hooks/core/useGridProps.js +5 -3
  69. package/hooks/core/useGridVirtualizer.js +11 -9
  70. package/hooks/features/dataSource/models.d.ts +28 -28
  71. package/hooks/features/dataSource/useGridDataSourceBase.d.ts +1 -1
  72. package/hooks/features/dataSource/useGridDataSourceBase.js +28 -15
  73. package/hooks/features/dataSource/utils.d.ts +2 -1
  74. package/hooks/features/dataSource/utils.js +2 -1
  75. package/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  76. package/hooks/features/rows/gridRowsInterfaces.d.ts +1 -11
  77. package/index.js +1 -1
  78. package/internals/index.d.ts +2 -2
  79. package/locales/arSD.js +1 -0
  80. package/locales/beBY.js +1 -0
  81. package/locales/bgBG.js +1 -0
  82. package/locales/bnBD.js +1 -0
  83. package/locales/csCZ.js +1 -0
  84. package/locales/daDK.js +1 -0
  85. package/locales/deDE.js +1 -0
  86. package/locales/elGR.js +1 -0
  87. package/locales/esES.js +1 -0
  88. package/locales/faIR.js +1 -0
  89. package/locales/fiFI.js +1 -0
  90. package/locales/frFR.js +1 -0
  91. package/locales/heIL.js +1 -0
  92. package/locales/hrHR.js +1 -0
  93. package/locales/huHU.js +1 -0
  94. package/locales/hyAM.js +1 -0
  95. package/locales/idID.js +1 -0
  96. package/locales/isIS.js +1 -0
  97. package/locales/itIT.js +104 -115
  98. package/locales/jaJP.js +1 -0
  99. package/locales/koKR.js +1 -0
  100. package/locales/nbNO.js +1 -0
  101. package/locales/nlNL.js +1 -0
  102. package/locales/nnNO.js +1 -0
  103. package/locales/plPL.js +1 -0
  104. package/locales/ptBR.js +1 -0
  105. package/locales/ptPT.js +1 -0
  106. package/locales/roRO.js +1 -0
  107. package/locales/ruRU.js +1 -0
  108. package/locales/skSK.js +1 -0
  109. package/locales/svSE.js +1 -0
  110. package/locales/trTR.js +1 -0
  111. package/locales/ukUA.js +1 -0
  112. package/locales/urPK.js +1 -0
  113. package/locales/viVN.js +1 -0
  114. package/locales/zhCN.js +1 -0
  115. package/locales/zhHK.js +1 -0
  116. package/locales/zhTW.js +1 -0
  117. package/models/api/gridLocaleTextApi.d.ts +1 -0
  118. package/models/gridDataSource.d.ts +13 -0
  119. package/models/gridStateCommunity.d.ts +2 -3
  120. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -5,6 +5,208 @@
5
5
  All notable changes to this project will be documented in this file.
6
6
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
7
7
 
8
+ ## 8.15.0
9
+
10
+ _Oct 23, 2025_
11
+
12
+ We'd like to extend a big thank you to the 14 contributors who made this release possible. Here are some highlights ✨:
13
+
14
+ - 🖌️ Add new [`brush` charts interaction](https://mui.com/x/react-charts/brush/) for building custom behavior.
15
+ ![brush visualization example](https://github.com/user-attachments/assets/60c382a1-e418-4736-8dcb-1567c4e361e3)
16
+ - ⚡️ Performance improvements for large bar charts
17
+ - 🤖 Data Grid AI assistant can now [visualize the query results](https://mui.com/x/react-data-grid/ai-assistant/#data-visualization) by controlling the chart integration settings
18
+ - 📦 DataGrid uses an internal MUI fork of ExcelJS that does not depend on vulnerable versions of NPM packages
19
+ - 🐞 Bugfixes
20
+ - 📚 Documentation improvements
21
+
22
+ Special thanks go out to the community members for their valuable contributions:
23
+ @ZagrebaAlex
24
+
25
+ The following are all team members who have contributed to this release:
26
+ @alexfauquette, @bernardobelchior, @cherniavskii, @flaviendelangle, @Janpot, @JCQuintas, @KenanYusuf, @prakhargupta1, @rita-codes, @siriwatknp, @arminmeh, @brijeshb42, @noraleonte
27
+
28
+ ### Data Grid
29
+
30
+ #### `@mui/x-data-grid@8.15.0`
31
+
32
+ - [DataGrid] Fix `dataSource.fetchRows` API's return type (#20068) @arminmeh
33
+
34
+ #### `@mui/x-data-grid-pro@8.15.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
35
+
36
+ Same changes as in `@mui/x-data-grid@8.15.0`, plus:
37
+
38
+ - [DataGridPro] Keep children in the tree after parent row is re-fetched with the data source (#19934) @arminmeh
39
+ - [DataGridPro] Support scroll shadows customization (#19982) @KenanYusuf
40
+
41
+ #### `@mui/x-data-grid-premium@8.15.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
42
+
43
+ Same changes as in `@mui/x-data-grid-pro@8.15.0`, plus:
44
+
45
+ - [DataGridPremium] Use ExcelJS fork (#19796) @cherniavskii
46
+ - [DataGridPremium] Support data visualization in AI Assistant (#19831) @arminmeh
47
+
48
+ ### Date and Time Pickers
49
+
50
+ #### `@mui/x-date-pickers@8.15.0`
51
+
52
+ Internal changes.
53
+
54
+ #### `@mui/x-date-pickers-pro@8.15.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
55
+
56
+ Same changes as in `@mui/x-date-pickers@8.15.0`.
57
+
58
+ ### Charts
59
+
60
+ #### `@mui/x-charts@8.15.0`
61
+
62
+ - [charts] Add `ChartsBrushOverlay` and allow brush configuration (#19956) @JCQuintas
63
+ - [charts] Add `getStringSize` benchmark. Remove benchmarks from built package. (#19995) @bernardobelchior
64
+ - [charts] Batch string size measurement (#19994) @bernardobelchior
65
+ - [charts] Fix console issue (#20025) @JCQuintas
66
+ - [charts] Fix is[ZoomFeature]Enabled type (#20058) @alexfauquette
67
+ - [charts] Fix reference line middle spacing (#20004) @JCQuintas
68
+ - [charts] Improve `getStringSize` and `batchMeasureStrings` performance (#19996) @bernardobelchior
69
+ - [charts] Improve deep export script (#20007) @JCQuintas
70
+ - [charts] Improve string measurement benchmarks (#19999) @bernardobelchior
71
+ - [charts] Measure string sizes using SVG elements (#19981) @bernardobelchior
72
+ - [l10n] Improve Greek (gr-GR) locale (#20060) @ZagrebaAlex
73
+
74
+ #### `@mui/x-charts-pro@8.15.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
75
+
76
+ Same changes as in `@mui/x-charts@8.15.0`, plus:
77
+
78
+ - [charts-pro] Fix pan with `axis.reverse` (#20031) @JCQuintas
79
+
80
+ #### `@mui/x-charts-premium@8.15.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
81
+
82
+ Same changes as in `@mui/x-charts-pro@8.15.0`.
83
+
84
+ ### Tree View
85
+
86
+ #### `@mui/x-tree-view@8.15.0`
87
+
88
+ - [tree view] Multi character type-ahead (#19942) @noraleonte
89
+
90
+ #### `@mui/x-tree-view-pro@8.15.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
91
+
92
+ Same changes as in `@mui/x-tree-view@8.15.0`.
93
+
94
+ ### Codemod
95
+
96
+ #### `@mui/x-codemod@8.14.0`
97
+
98
+ Internal changes.
99
+
100
+ ### Docs
101
+
102
+ - [docs] Add overview section for scatter chart and heatmap (#19888) @prakhargupta1
103
+ - [docs] Add charts bell curve example (#20003) @JCQuintas
104
+ - [docs] Add grouped multiple fields for Data Grid row grouping recipe (#19964) @siriwatknp
105
+ - [docs] Add Data Grid loading state recipe (#19958) @siriwatknp
106
+
107
+ ### Core
108
+
109
+ - [code-infra] Remove @mui/monorepo usage for react versioning (#19894) @Janpot
110
+ - [code-infra] Remove invalid `environment: 'browser'` from vitest browser config (#19993) @bernardobelchior
111
+ - [code-infra] Remove unused babel aliases (#19987) @Janpot
112
+ - [code-infra] Turn on all testing-library eslint rules (#19946) @brijeshb42
113
+ - [docs-infra] Fix broken hash link (#20062) @Janpot
114
+
115
+ ## 8.14.1
116
+
117
+ _Oct 16, 2025_
118
+
119
+ We'd like to extend a big thank you to the 14 contributors who made this release possible. Here are some highlights ✨:
120
+
121
+ - 🚀 Charts have optimized data structures for closest point calculations — initial render times reduced by ~25% for 1,000+ data points, with greater gains at larger scales (#19790) @bernardobelchior
122
+ - 🐞 Bugfixes
123
+ - 📚 Documentation improvements
124
+
125
+ Special thanks go out to the community members for their valuable contributions:
126
+ @djpremier, @jacknot, @justdoit1897, @mellis481, @sai6855
127
+
128
+ The following are all team members who have contributed to this release:
129
+ @arminmeh, @bernardobelchior, @brijeshb42, @cherniavskii, @flaviendelangle, @Janpot, @JCQuintas, @noraleonte, @siriwatknp
130
+
131
+ ### Data Grid
132
+
133
+ #### `@mui/x-data-grid@8.14.1`
134
+
135
+ - [DataGrid] Fix cell not rerendering on `isCellEditable` prop change (#19898) @cherniavskii
136
+ - [DataGrid] Fix virtualizer memory leaks (#19886) @cherniavskii
137
+ - [DataGrid] Fix tree data unable to deselect row for exclude model (#19846) @siriwatknp
138
+ - [l10n] Improve Italian (it-IT) locale (#19322) @jacknot and (#19940) @justdoit1897
139
+
140
+ #### `@mui/x-data-grid-pro@8.14.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
141
+
142
+ Same changes as in `@mui/x-data-grid@8.14.1`, plus:
143
+
144
+ - [DataGridPro] Clear cache before new request to the nested request queue after a row has been edited (#19873) @arminmeh
145
+
146
+ #### `@mui/x-data-grid-premium@8.14.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
147
+
148
+ Same changes as in `@mui/x-data-grid-pro@8.14.1`.
149
+
150
+ ### Date and Time Pickers
151
+
152
+ #### `@mui/x-date-pickers@8.14.1`
153
+
154
+ Internal changes.
155
+
156
+ #### `@mui/x-date-pickers-pro@8.14.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
157
+
158
+ Same changes as in `@mui/x-date-pickers@8.14.1`.
159
+
160
+ ### Charts
161
+
162
+ #### `@mui/x-charts@8.14.1`
163
+
164
+ - [charts] Fix `minBarSize` when y-axis is reversed (#19932) @bernardobelchior
165
+ - [charts] Fix bar chart border radius when axis is reversed (#19895) @bernardobelchior
166
+ - [charts] Fix scatter chart `datasetKeys.id` not being optional (#19897) @bernardobelchior
167
+ - [charts] Use more performant data structure for closest point (#19790) @bernardobelchior
168
+ - [charts] Fix `GaugeValueArc` having wrong class (#19965) @bernardobelchior
169
+ - [charts] Fix `undefined` path when highlight empty line chart axis (#19969) @bernardobelchior
170
+
171
+ #### `@mui/x-charts-pro@8.14.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
172
+
173
+ Same changes as in `@mui/x-charts@8.14.1`, plus:
174
+
175
+ - [charts-pro] Add `highlighting` to Sankey chart (#19662) @JCQuintas
176
+
177
+ #### `@mui/x-charts-premium@8.14.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
178
+
179
+ Same changes as in `@mui/x-charts-pro@8.14.1`.
180
+
181
+ ### Tree View
182
+
183
+ #### `@mui/x-tree-view@8.14.1`
184
+
185
+ - [tree view] Do not forward the `ownerState` to the icon (#19772) @flaviendelangle
186
+
187
+ #### `@mui/x-tree-view-pro@8.14.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
188
+
189
+ Same changes as in `@mui/x-tree-view@8.14.1`.
190
+
191
+ ### Codemod
192
+
193
+ #### `@mui/x-codemod@8.14.0`
194
+
195
+ Internal changes.
196
+
197
+ ### Docs
198
+
199
+ - [docs] Add `'bumpX'` and `'bumpY'` curve types to the interpolation demo (#19676) @djpremier
200
+ - [docs] Add scatter chart with linear regression demo (#19900) @bernardobelchior
201
+ - [docs] Correctly describe Data Grid's row selection behavior (#19968) @arminmeh
202
+ - [docs] Fix `isExpanded` type in tree view docs (#19092) @mellis481
203
+
204
+ ### Core
205
+
206
+ - [code-infra] Disable Netlify cache plugin (#19950) @Janpot
207
+ - [code-infra] Lint json through eslint (#19890) @Janpot
208
+ - [docs-infra] Use published netlify cache plugin package (#19929) @brijeshb42
209
+
8
210
  ## 8.14.0
9
211
 
10
212
  _Oct 9, 2025_
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  'use client';
3
3
 
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
5
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
6
  Object.defineProperty(exports, "__esModule", {
6
7
  value: true
@@ -9,14 +10,30 @@ exports.GridScrollShadows = GridScrollShadows;
9
10
  var React = _interopRequireWildcard(require("react"));
10
11
  var _system = require("@mui/system");
11
12
  var _RtlProvider = require("@mui/system/RtlProvider");
13
+ var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
12
14
  var _hooks = require("../hooks");
13
15
  var _gridRowsSelector = require("../hooks/features/rows/gridRowsSelector");
14
16
  var _useGridRootProps = require("../hooks/utils/useGridRootProps");
15
17
  var _cssVariables = require("../constants/cssVariables");
16
18
  var _useGridPrivateApiContext = require("../hooks/utils/useGridPrivateApiContext");
17
19
  var _gridDimensionsSelectors = require("../hooks/features/dimensions/gridDimensionsSelectors");
20
+ var _constants = require("../constants");
18
21
  var _jsxRuntime = require("react/jsx-runtime");
19
- const ScrollShadow = (0, _system.styled)('div')(({
22
+ const useUtilityClasses = ownerState => {
23
+ const {
24
+ classes,
25
+ position
26
+ } = ownerState;
27
+ const slots = {
28
+ root: ['scrollShadow', `scrollShadow--${position}`]
29
+ };
30
+ return (0, _composeClasses.default)(slots, _constants.getDataGridUtilityClass, classes);
31
+ };
32
+ const ScrollShadow = (0, _system.styled)('div', {
33
+ name: 'MuiDataGrid',
34
+ slot: 'ScrollShadow',
35
+ overridesResolver: (props, styles) => [styles.root, styles[props.position]]
36
+ })(({
20
37
  theme
21
38
  }) => ({
22
39
  position: 'absolute',
@@ -30,8 +47,9 @@ const ScrollShadow = (0, _system.styled)('div')(({
30
47
  '--opacity': theme.palette.mode === 'dark' ? '0.7' : '0.18',
31
48
  '--blur': 'var(--length)',
32
49
  '--spread': 'calc(var(--length) * -1)',
33
- '--color-start': 'rgba(0, 0, 0, calc(var(--hasScrollStart) * var(--opacity)))',
34
- '--color-end': 'rgba(0, 0, 0, calc(var(--hasScrollEnd) * var(--opacity)))',
50
+ '--color': '0, 0, 0',
51
+ '--color-start': 'rgba(var(--color), calc(var(--hasScrollStart) * var(--opacity)))',
52
+ '--color-end': 'rgba(var(--color), calc(var(--hasScrollEnd) * var(--opacity)))',
35
53
  variants: [{
36
54
  props: {
37
55
  position: 'vertical'
@@ -61,6 +79,7 @@ function GridScrollShadows(props) {
61
79
  classes: rootProps.classes,
62
80
  position
63
81
  };
82
+ const classes = useUtilityClasses(ownerState);
64
83
  const ref = React.useRef(null);
65
84
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
66
85
  const hasScrollX = (0, _hooks.useGridSelector)(apiRef, _gridDimensionsSelectors.gridHasScrollXSelector);
@@ -98,6 +117,7 @@ function GridScrollShadows(props) {
98
117
  updateScrollShadowVisibility((position === 'horizontal' ? apiRef.current.virtualScrollerRef?.current?.scrollLeft : apiRef.current.virtualScrollerRef?.current?.scrollTop) ?? 0);
99
118
  }, [updateScrollShadowVisibility, apiRef, position]);
100
119
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(ScrollShadow, {
120
+ className: classes.root,
101
121
  ownerState: ownerState,
102
122
  ref: ref,
103
123
  style: {
@@ -122,6 +122,7 @@ const GridCell = (0, _forwardRef.forwardRef)(function GridCell(props, ref) {
122
122
  formattedValue: forcedFormattedValue
123
123
  });
124
124
  cellParams.api = apiRef.current;
125
+ cellParams.isEditable = (0, _useGridSelector.useGridSelector)(apiRef, () => apiRef.current.isCellEditable(cellParams));
125
126
  const isSelected = (0, _useGridSelector.useGridSelector)(apiRef, () => apiRef.current.unstable_applyPipeProcessors('isCellSelected', false, {
126
127
  id: rowId,
127
128
  field
@@ -676,6 +676,18 @@ export interface GridClasses {
676
676
  * Styles applied to the scrollbar filler cell.
677
677
  */
678
678
  'scrollbarFiller--pinnedRight': string;
679
+ /**
680
+ * Styles applied to the scroll shadow element.
681
+ */
682
+ scrollShadow: string;
683
+ /**
684
+ * Styles applied to the horizontal scroll shadow element.
685
+ */
686
+ 'scrollShadow--horizontal': string;
687
+ /**
688
+ * Styles applied to the vertical scroll shadow element.
689
+ */
690
+ 'scrollShadow--vertical': string;
679
691
  /**
680
692
  * Styles applied to the footer selected row count element.
681
693
  */
@@ -13,4 +13,4 @@ function getDataGridUtilityClass(slot) {
13
13
  }
14
14
  const gridClasses = exports.gridClasses = (0, _generateUtilityClasses.default)('MuiDataGrid', ['aiAssistantPanel', 'aiAssistantPanelHeader', 'aiAssistantPanelTitleContainer', 'aiAssistantPanelTitle', 'aiAssistantPanelBody', 'aiAssistantPanelEmptyText', 'aiAssistantPanelFooter', 'aiAssistantPanelConversation', 'aiAssistantPanelConversationList', 'aiAssistantPanelConversationTitle', 'aiAssistantPanelSuggestions', 'aiAssistantPanelSuggestionsList', 'aiAssistantPanelSuggestionsItem', 'aiAssistantPanelSuggestionsLabel', 'actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'aggregationRowOverlayWrapper', 'autoHeight', 'autosizing', 'mainContent', 'withSidePanel', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'collapsible', 'collapsibleTrigger', 'collapsibleIcon', 'collapsiblePanel', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--last', 'columnHeader--siblingFocused', 'columnHeader--filter', 'columnHeaderFilterInput', 'columnHeaderFilterOperatorLabel', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'columnsManagementScrollArea', 'columnsManagementEmptyText', 'container--top', 'container--bottom', 'detailPanel', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'main--hiddenContent', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible',
15
15
  // TODO v9: Rename to `cell--dragging`
16
- 'row--dragging', 'row--dropAbove', 'row--dropBelow', 'row--beingDragged', 'row--dynamicHeight', 'row--detailPanelExpanded', 'row--borderBottom', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'rowReorderIcon', 'rowSkeleton', 'scrollArea--left', 'scrollArea--right', 'scrollArea--up', 'scrollArea--down', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortButton', 'sortIcon', 'shadowScrollArea', 'sidebar', 'sidebarHeader', 'toolbarContainer', 'toolbar', 'toolbarLabel', 'toolbarDivider', 'toolbarFilterList', 'toolbarQuickFilter', 'toolbarQuickFilterTrigger', 'toolbarQuickFilterControl', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'groupingCriteriaCellLoadingContainer', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pivotPanelAvailableFields', 'pivotPanelField', 'pivotPanelField--sorted', 'pivotPanelFieldActionContainer', 'pivotPanelFieldCheckbox', 'pivotPanelFieldDragIcon', 'pivotPanelFieldList', 'pivotPanelFieldName', 'pivotPanelHeader', 'pivotPanelPlaceholder', 'pivotPanelScrollArea', 'pivotPanelSearchContainer', 'pivotPanelSection', 'pivotPanelSectionTitle', 'pivotPanelSections', 'pivotPanelSwitch', 'pivotPanelSwitchLabel', 'prompt', 'promptContent', 'promptText', 'promptFeedback', 'promptChangeList', 'promptChangesToggle', 'promptChangesToggleIcon', 'promptIcon', 'promptIconContainer', 'promptError', 'promptAction']);
16
+ 'row--dragging', 'row--dropAbove', 'row--dropBelow', 'row--beingDragged', 'row--dynamicHeight', 'row--detailPanelExpanded', 'row--borderBottom', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'rowReorderIcon', 'rowSkeleton', 'scrollArea--left', 'scrollArea--right', 'scrollArea--up', 'scrollArea--down', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--pinnedRight', 'scrollShadow', 'scrollShadow--vertical', 'scrollShadow--horizontal', 'selectedRowCount', 'sortButton', 'sortIcon', 'shadowScrollArea', 'sidebar', 'sidebarHeader', 'toolbarContainer', 'toolbar', 'toolbarLabel', 'toolbarDivider', 'toolbarFilterList', 'toolbarQuickFilter', 'toolbarQuickFilterTrigger', 'toolbarQuickFilterControl', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'groupingCriteriaCellLoadingContainer', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pivotPanelAvailableFields', 'pivotPanelField', 'pivotPanelField--sorted', 'pivotPanelFieldActionContainer', 'pivotPanelFieldCheckbox', 'pivotPanelFieldDragIcon', 'pivotPanelFieldList', 'pivotPanelFieldName', 'pivotPanelHeader', 'pivotPanelPlaceholder', 'pivotPanelScrollArea', 'pivotPanelSearchContainer', 'pivotPanelSection', 'pivotPanelSectionTitle', 'pivotPanelSections', 'pivotPanelSwitch', 'pivotPanelSwitchLabel', 'prompt', 'promptContent', 'promptText', 'promptFeedback', 'promptChangeList', 'promptChangesToggle', 'promptChangesToggleIcon', 'promptIcon', 'promptIconContainer', 'promptError', 'promptAction']);
@@ -290,5 +290,6 @@ const GRID_DEFAULT_LOCALE_TEXT = exports.GRID_DEFAULT_LOCALE_TEXT = {
290
290
  promptChangePivotColumnsDescription: (column, direction) => `${column}${direction ? ` (${direction})` : ''}`,
291
291
  promptChangePivotRowsLabel: count => `Rows (${count})`,
292
292
  promptChangePivotValuesLabel: count => `Values (${count})`,
293
- promptChangePivotValuesDescription: (column, aggregation) => `${column} (${aggregation})`
293
+ promptChangePivotValuesDescription: (column, aggregation) => `${column} (${aggregation})`,
294
+ promptChangeChartsLabel: (dimensionsCount, valuesCount) => `Dimensions (${dimensionsCount}), Values (${valuesCount})`
294
295
  };
@@ -3,14 +3,30 @@
3
3
  import * as React from 'react';
4
4
  import { styled } from '@mui/system';
5
5
  import { useRtl } from '@mui/system/RtlProvider';
6
+ import composeClasses from '@mui/utils/composeClasses';
6
7
  import { gridDimensionsSelector, gridPinnedColumnsSelector, useGridEvent, useGridSelector } from "../hooks/index.js";
7
8
  import { gridPinnedRowsSelector } from "../hooks/features/rows/gridRowsSelector.js";
8
9
  import { useGridRootProps } from "../hooks/utils/useGridRootProps.js";
9
10
  import { vars } from "../constants/cssVariables.js";
10
11
  import { useGridPrivateApiContext } from "../hooks/utils/useGridPrivateApiContext.js";
11
12
  import { gridHasScrollXSelector, gridHasScrollYSelector } from "../hooks/features/dimensions/gridDimensionsSelectors.js";
13
+ import { getDataGridUtilityClass } from "../constants/index.js";
12
14
  import { jsx as _jsx } from "react/jsx-runtime";
13
- const ScrollShadow = styled('div')(({
15
+ const useUtilityClasses = ownerState => {
16
+ const {
17
+ classes,
18
+ position
19
+ } = ownerState;
20
+ const slots = {
21
+ root: ['scrollShadow', `scrollShadow--${position}`]
22
+ };
23
+ return composeClasses(slots, getDataGridUtilityClass, classes);
24
+ };
25
+ const ScrollShadow = styled('div', {
26
+ name: 'MuiDataGrid',
27
+ slot: 'ScrollShadow',
28
+ overridesResolver: (props, styles) => [styles.root, styles[props.position]]
29
+ })(({
14
30
  theme
15
31
  }) => ({
16
32
  position: 'absolute',
@@ -24,8 +40,9 @@ const ScrollShadow = styled('div')(({
24
40
  '--opacity': theme.palette.mode === 'dark' ? '0.7' : '0.18',
25
41
  '--blur': 'var(--length)',
26
42
  '--spread': 'calc(var(--length) * -1)',
27
- '--color-start': 'rgba(0, 0, 0, calc(var(--hasScrollStart) * var(--opacity)))',
28
- '--color-end': 'rgba(0, 0, 0, calc(var(--hasScrollEnd) * var(--opacity)))',
43
+ '--color': '0, 0, 0',
44
+ '--color-start': 'rgba(var(--color), calc(var(--hasScrollStart) * var(--opacity)))',
45
+ '--color-end': 'rgba(var(--color), calc(var(--hasScrollEnd) * var(--opacity)))',
29
46
  variants: [{
30
47
  props: {
31
48
  position: 'vertical'
@@ -55,6 +72,7 @@ function GridScrollShadows(props) {
55
72
  classes: rootProps.classes,
56
73
  position
57
74
  };
75
+ const classes = useUtilityClasses(ownerState);
58
76
  const ref = React.useRef(null);
59
77
  const apiRef = useGridPrivateApiContext();
60
78
  const hasScrollX = useGridSelector(apiRef, gridHasScrollXSelector);
@@ -92,6 +110,7 @@ function GridScrollShadows(props) {
92
110
  updateScrollShadowVisibility((position === 'horizontal' ? apiRef.current.virtualScrollerRef?.current?.scrollLeft : apiRef.current.virtualScrollerRef?.current?.scrollTop) ?? 0);
93
111
  }, [updateScrollShadowVisibility, apiRef, position]);
94
112
  return /*#__PURE__*/_jsx(ScrollShadow, {
113
+ className: classes.root,
95
114
  ownerState: ownerState,
96
115
  ref: ref,
97
116
  style: {
@@ -115,6 +115,7 @@ const GridCell = forwardRef(function GridCell(props, ref) {
115
115
  formattedValue: forcedFormattedValue
116
116
  });
117
117
  cellParams.api = apiRef.current;
118
+ cellParams.isEditable = useGridSelector(apiRef, () => apiRef.current.isCellEditable(cellParams));
118
119
  const isSelected = useGridSelector(apiRef, () => apiRef.current.unstable_applyPipeProcessors('isCellSelected', false, {
119
120
  id: rowId,
120
121
  field
@@ -676,6 +676,18 @@ export interface GridClasses {
676
676
  * Styles applied to the scrollbar filler cell.
677
677
  */
678
678
  'scrollbarFiller--pinnedRight': string;
679
+ /**
680
+ * Styles applied to the scroll shadow element.
681
+ */
682
+ scrollShadow: string;
683
+ /**
684
+ * Styles applied to the horizontal scroll shadow element.
685
+ */
686
+ 'scrollShadow--horizontal': string;
687
+ /**
688
+ * Styles applied to the vertical scroll shadow element.
689
+ */
690
+ 'scrollShadow--vertical': string;
679
691
  /**
680
692
  * Styles applied to the footer selected row count element.
681
693
  */
@@ -5,4 +5,4 @@ export function getDataGridUtilityClass(slot) {
5
5
  }
6
6
  export const gridClasses = generateUtilityClasses('MuiDataGrid', ['aiAssistantPanel', 'aiAssistantPanelHeader', 'aiAssistantPanelTitleContainer', 'aiAssistantPanelTitle', 'aiAssistantPanelBody', 'aiAssistantPanelEmptyText', 'aiAssistantPanelFooter', 'aiAssistantPanelConversation', 'aiAssistantPanelConversationList', 'aiAssistantPanelConversationTitle', 'aiAssistantPanelSuggestions', 'aiAssistantPanelSuggestionsList', 'aiAssistantPanelSuggestionsItem', 'aiAssistantPanelSuggestionsLabel', 'actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'aggregationRowOverlayWrapper', 'autoHeight', 'autosizing', 'mainContent', 'withSidePanel', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'collapsible', 'collapsibleTrigger', 'collapsibleIcon', 'collapsiblePanel', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--last', 'columnHeader--siblingFocused', 'columnHeader--filter', 'columnHeaderFilterInput', 'columnHeaderFilterOperatorLabel', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'columnsManagementScrollArea', 'columnsManagementEmptyText', 'container--top', 'container--bottom', 'detailPanel', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'main--hiddenContent', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible',
7
7
  // TODO v9: Rename to `cell--dragging`
8
- 'row--dragging', 'row--dropAbove', 'row--dropBelow', 'row--beingDragged', 'row--dynamicHeight', 'row--detailPanelExpanded', 'row--borderBottom', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'rowReorderIcon', 'rowSkeleton', 'scrollArea--left', 'scrollArea--right', 'scrollArea--up', 'scrollArea--down', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortButton', 'sortIcon', 'shadowScrollArea', 'sidebar', 'sidebarHeader', 'toolbarContainer', 'toolbar', 'toolbarLabel', 'toolbarDivider', 'toolbarFilterList', 'toolbarQuickFilter', 'toolbarQuickFilterTrigger', 'toolbarQuickFilterControl', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'groupingCriteriaCellLoadingContainer', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pivotPanelAvailableFields', 'pivotPanelField', 'pivotPanelField--sorted', 'pivotPanelFieldActionContainer', 'pivotPanelFieldCheckbox', 'pivotPanelFieldDragIcon', 'pivotPanelFieldList', 'pivotPanelFieldName', 'pivotPanelHeader', 'pivotPanelPlaceholder', 'pivotPanelScrollArea', 'pivotPanelSearchContainer', 'pivotPanelSection', 'pivotPanelSectionTitle', 'pivotPanelSections', 'pivotPanelSwitch', 'pivotPanelSwitchLabel', 'prompt', 'promptContent', 'promptText', 'promptFeedback', 'promptChangeList', 'promptChangesToggle', 'promptChangesToggleIcon', 'promptIcon', 'promptIconContainer', 'promptError', 'promptAction']);
8
+ 'row--dragging', 'row--dropAbove', 'row--dropBelow', 'row--beingDragged', 'row--dynamicHeight', 'row--detailPanelExpanded', 'row--borderBottom', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'rowReorderIcon', 'rowSkeleton', 'scrollArea--left', 'scrollArea--right', 'scrollArea--up', 'scrollArea--down', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--pinnedRight', 'scrollShadow', 'scrollShadow--vertical', 'scrollShadow--horizontal', 'selectedRowCount', 'sortButton', 'sortIcon', 'shadowScrollArea', 'sidebar', 'sidebarHeader', 'toolbarContainer', 'toolbar', 'toolbarLabel', 'toolbarDivider', 'toolbarFilterList', 'toolbarQuickFilter', 'toolbarQuickFilterTrigger', 'toolbarQuickFilterControl', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'groupingCriteriaCellLoadingContainer', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pivotPanelAvailableFields', 'pivotPanelField', 'pivotPanelField--sorted', 'pivotPanelFieldActionContainer', 'pivotPanelFieldCheckbox', 'pivotPanelFieldDragIcon', 'pivotPanelFieldList', 'pivotPanelFieldName', 'pivotPanelHeader', 'pivotPanelPlaceholder', 'pivotPanelScrollArea', 'pivotPanelSearchContainer', 'pivotPanelSection', 'pivotPanelSectionTitle', 'pivotPanelSections', 'pivotPanelSwitch', 'pivotPanelSwitchLabel', 'prompt', 'promptContent', 'promptText', 'promptFeedback', 'promptChangeList', 'promptChangesToggle', 'promptChangesToggleIcon', 'promptIcon', 'promptIconContainer', 'promptError', 'promptAction']);
@@ -284,5 +284,6 @@ export const GRID_DEFAULT_LOCALE_TEXT = {
284
284
  promptChangePivotColumnsDescription: (column, direction) => `${column}${direction ? ` (${direction})` : ''}`,
285
285
  promptChangePivotRowsLabel: count => `Rows (${count})`,
286
286
  promptChangePivotValuesLabel: count => `Values (${count})`,
287
- promptChangePivotValuesDescription: (column, aggregation) => `${column} (${aggregation})`
287
+ promptChangePivotValuesDescription: (column, aggregation) => `${column} (${aggregation})`,
288
+ promptChangeChartsLabel: (dimensionsCount, valuesCount) => `Dimensions (${dimensionsCount}), Values (${valuesCount})`
288
289
  };
@@ -1,7 +1,7 @@
1
- import { GridRowTreeCreationParams, GridRowTreeCreationValue, GridRowsState } from "../../features/rows/gridRowsInterfaces.js";
2
- import { GridFilteringMethodParams, GridFilteringMethodValue, GridFilterState, GridVisibleRowsLookupState } from "../../features/filter/gridFilterState.js";
3
- import { GridSortingMethodParams, GridSortingMethodValue } from "../../features/sorting/gridSortingState.js";
4
- import { GridGetRowsParams, GridGetRowsResponse } from "../../../models/gridDataSource.js";
1
+ import type { GridRowTreeCreationParams, GridRowTreeCreationValue, GridRowsState } from "../../features/rows/gridRowsInterfaces.js";
2
+ import type { GridFilteringMethodParams, GridFilteringMethodValue, GridFilterState, GridVisibleRowsLookupState } from "../../features/filter/gridFilterState.js";
3
+ import type { GridSortingMethodParams, GridSortingMethodValue } from "../../features/sorting/gridSortingState.js";
4
+ import type { GridGetRowsParams, GridGetRowsResponse, GridGetRowsOptions } from "../../../models/gridDataSource.js";
5
5
  export type GridStrategyProcessorName = keyof GridStrategyProcessingLookup;
6
6
  export declare enum GridStrategyGroup {
7
7
  DataSource = "dataSource",
@@ -14,9 +14,11 @@ export interface GridStrategyProcessingLookup {
14
14
  params: {
15
15
  response: GridGetRowsResponse;
16
16
  fetchParams: GridGetRowsParams;
17
+ options: GridGetRowsOptions;
17
18
  } | {
18
19
  error: Error;
19
20
  fetchParams: GridGetRowsParams;
21
+ options: GridGetRowsOptions;
20
22
  };
21
23
  value: void;
22
24
  };
@@ -1,8 +1,6 @@
1
1
  import type { RefObject } from '@mui/x-internals/types';
2
- import type { DataGridProcessedProps } from "../../models/props/DataGridProps.js";
3
2
  import type { GridPrivateApiCommon } from "../../models/api/gridApiCommon.js";
3
+ import type { GridStateProps } from "../../models/gridStateCommunity.js";
4
4
  import type { GridStateInitializer } from "../utils/useGridInitializeState.js";
5
- type Props = Pick<DataGridProcessedProps, 'getRowId' | 'listView'>;
6
- export declare const propsStateInitializer: GridStateInitializer<Props>;
7
- export declare const useGridProps: <PrivateApi extends GridPrivateApiCommon>(apiRef: RefObject<PrivateApi>, props: Props) => void;
8
- export {};
5
+ export declare const propsStateInitializer: GridStateInitializer<GridStateProps>;
6
+ export declare const useGridProps: <PrivateApi extends GridPrivateApiCommon>(apiRef: RefObject<PrivateApi>, props: GridStateProps) => void;
@@ -6,7 +6,8 @@ export const propsStateInitializer = (state, props) => {
6
6
  return _extends({}, state, {
7
7
  props: {
8
8
  listView: props.listView,
9
- getRowId: props.getRowId
9
+ getRowId: props.getRowId,
10
+ isCellEditable: props.isCellEditable
10
11
  }
11
12
  });
12
13
  };
@@ -15,8 +16,9 @@ export const useGridProps = (apiRef, props) => {
15
16
  apiRef.current.setState(state => _extends({}, state, {
16
17
  props: {
17
18
  listView: props.listView,
18
- getRowId: props.getRowId
19
+ getRowId: props.getRowId,
20
+ isCellEditable: props.isCellEditable
19
21
  }
20
22
  }));
21
- }, [apiRef, props.listView, props.getRowId]);
23
+ }, [apiRef, props.listView, props.getRowId, props.isCellEditable]);
22
24
  };
@@ -58,7 +58,7 @@ export function useGridVirtualizer(apiRef, rootProps) {
58
58
  const pinnedRows = useGridSelector(apiRef, gridPinnedRowsSelector);
59
59
  const pinnedColumns = gridVisiblePinnedColumnDefinitionsSelector(apiRef);
60
60
  const rowSelectionManager = useGridSelector(apiRef, gridRowSelectionManagerSelector);
61
- const isRowSelected = id => rowSelectionManager.has(id) && apiRef.current.isRowSelectable(id);
61
+ const isRowSelected = React.useCallback(id => rowSelectionManager.has(id) && apiRef.current.isRowSelectable(id), [rowSelectionManager, apiRef]);
62
62
  const currentPage = useGridVisibleRows(apiRef);
63
63
  const hasColSpan = useGridSelector(apiRef, gridHasColSpanSelector);
64
64
  const verticalScrollbarWidth = useGridSelector(apiRef, gridVerticalScrollbarWidthSelector);
@@ -106,6 +106,8 @@ export function useGridVirtualizer(apiRef, rootProps) {
106
106
  // </ROWS_META>
107
107
 
108
108
  const focusedVirtualCell = useGridSelector(apiRef, gridFocusedVirtualCellSelector);
109
+ const RowSlot = rootProps.slots.row;
110
+ const rowSlotProps = rootProps.slotProps?.row;
109
111
  const virtualizer = useVirtualizer({
110
112
  refs: {
111
113
  container: apiRef.current.mainElementRef,
@@ -121,14 +123,14 @@ export function useGridVirtualizer(apiRef, rootProps) {
121
123
  },
122
124
  colspan: {
123
125
  enabled: hasColSpan,
124
- getColspan: (rowId, column) => {
126
+ getColspan: React.useCallback((rowId, column) => {
125
127
  if (typeof column.colSpan === 'function') {
126
128
  const row = apiRef.current.getRow(rowId);
127
129
  const value = apiRef.current.getRowValue(row, column);
128
130
  return column.colSpan(value, row, column, apiRef) ?? 0;
129
131
  }
130
132
  return column.colSpan ?? 1;
131
- }
133
+ }, [apiRef])
132
134
  },
133
135
  initialState: {
134
136
  scroll: rootProps.initialState?.scroll,
@@ -181,15 +183,15 @@ export function useGridVirtualizer(apiRef, rootProps) {
181
183
  onRenderContextChange: useEventCallback(nextRenderContext => {
182
184
  apiRef.current.publishEvent('renderedRowsIntervalChange', nextRenderContext);
183
185
  }),
184
- onScrollChange: (scrollPosition, nextRenderContext) => {
186
+ onScrollChange: React.useCallback((scrollPosition, nextRenderContext) => {
185
187
  apiRef.current.publishEvent('scrollPositionChange', {
186
188
  top: scrollPosition.top,
187
189
  left: scrollPosition.left,
188
190
  renderContext: nextRenderContext
189
191
  });
190
- },
192
+ }, [apiRef]),
191
193
  scrollReset,
192
- renderRow: params => /*#__PURE__*/_jsx(rootProps.slots.row, _extends({
194
+ renderRow: React.useCallback(params => /*#__PURE__*/_jsx(RowSlot, _extends({
193
195
  row: params.model,
194
196
  rowId: params.id,
195
197
  index: params.rowIndex,
@@ -208,10 +210,10 @@ export function useGridVirtualizer(apiRef, rootProps) {
208
210
  showBottomBorder: params.showBottomBorder,
209
211
  scrollbarWidth: verticalScrollbarWidth,
210
212
  gridHasFiller: hasFiller
211
- }, rootProps.slotProps?.row), params.id),
212
- renderInfiniteLoadingTrigger: id => apiRef.current.getInfiniteLoadingTriggerElement?.({
213
+ }, rowSlotProps), params.id), [columnsTotalWidth, hasFiller, isRowSelected, pinnedColumns, RowSlot, rowSlotProps, verticalScrollbarWidth, visibleColumns]),
214
+ renderInfiniteLoadingTrigger: React.useCallback(id => apiRef.current.getInfiniteLoadingTriggerElement?.({
213
215
  lastRowId: id
214
- })
216
+ }), [apiRef])
215
217
  });
216
218
 
217
219
  // HACK: Keep the grid's store in sync with the virtualizer store. We set up the