@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.
- package/CHANGELOG.md +202 -0
- package/components/GridScrollShadows.js +23 -3
- package/components/cell/GridCell.js +1 -0
- package/constants/gridClasses.d.ts +12 -0
- package/constants/gridClasses.js +1 -1
- package/constants/localeTextConstants.js +2 -1
- package/esm/components/GridScrollShadows.js +22 -3
- package/esm/components/cell/GridCell.js +1 -0
- package/esm/constants/gridClasses.d.ts +12 -0
- package/esm/constants/gridClasses.js +1 -1
- package/esm/constants/localeTextConstants.js +2 -1
- package/esm/hooks/core/strategyProcessing/gridStrategyProcessingApi.d.ts +6 -4
- package/esm/hooks/core/useGridProps.d.ts +3 -5
- package/esm/hooks/core/useGridProps.js +5 -3
- package/esm/hooks/core/useGridVirtualizer.js +11 -9
- package/esm/hooks/features/dataSource/models.d.ts +28 -28
- package/esm/hooks/features/dataSource/useGridDataSourceBase.d.ts +1 -1
- package/esm/hooks/features/dataSource/useGridDataSourceBase.js +28 -15
- package/esm/hooks/features/dataSource/utils.d.ts +2 -1
- package/esm/hooks/features/dataSource/utils.js +2 -1
- package/esm/hooks/features/rowSelection/useGridRowSelection.js +1 -1
- package/esm/hooks/features/rows/gridRowsInterfaces.d.ts +1 -11
- package/esm/index.js +1 -1
- package/esm/internals/index.d.ts +2 -2
- package/esm/locales/arSD.js +1 -0
- package/esm/locales/beBY.js +1 -0
- package/esm/locales/bgBG.js +1 -0
- package/esm/locales/bnBD.js +1 -0
- package/esm/locales/csCZ.js +1 -0
- package/esm/locales/daDK.js +1 -0
- package/esm/locales/deDE.js +1 -0
- package/esm/locales/elGR.js +1 -0
- package/esm/locales/esES.js +1 -0
- package/esm/locales/faIR.js +1 -0
- package/esm/locales/fiFI.js +1 -0
- package/esm/locales/frFR.js +1 -0
- package/esm/locales/heIL.js +1 -0
- package/esm/locales/hrHR.js +1 -0
- package/esm/locales/huHU.js +1 -0
- package/esm/locales/hyAM.js +1 -0
- package/esm/locales/idID.js +1 -0
- package/esm/locales/isIS.js +1 -0
- package/esm/locales/itIT.js +104 -115
- package/esm/locales/jaJP.js +1 -0
- package/esm/locales/koKR.js +1 -0
- package/esm/locales/nbNO.js +1 -0
- package/esm/locales/nlNL.js +1 -0
- package/esm/locales/nnNO.js +1 -0
- package/esm/locales/plPL.js +1 -0
- package/esm/locales/ptBR.js +1 -0
- package/esm/locales/ptPT.js +1 -0
- package/esm/locales/roRO.js +1 -0
- package/esm/locales/ruRU.js +1 -0
- package/esm/locales/skSK.js +1 -0
- package/esm/locales/svSE.js +1 -0
- package/esm/locales/trTR.js +1 -0
- package/esm/locales/ukUA.js +1 -0
- package/esm/locales/urPK.js +1 -0
- package/esm/locales/viVN.js +1 -0
- package/esm/locales/zhCN.js +1 -0
- package/esm/locales/zhHK.js +1 -0
- package/esm/locales/zhTW.js +1 -0
- package/esm/models/api/gridLocaleTextApi.d.ts +1 -0
- package/esm/models/gridDataSource.d.ts +13 -0
- package/esm/models/gridStateCommunity.d.ts +2 -3
- package/hooks/core/strategyProcessing/gridStrategyProcessingApi.d.ts +6 -4
- package/hooks/core/useGridProps.d.ts +3 -5
- package/hooks/core/useGridProps.js +5 -3
- package/hooks/core/useGridVirtualizer.js +11 -9
- package/hooks/features/dataSource/models.d.ts +28 -28
- package/hooks/features/dataSource/useGridDataSourceBase.d.ts +1 -1
- package/hooks/features/dataSource/useGridDataSourceBase.js +28 -15
- package/hooks/features/dataSource/utils.d.ts +2 -1
- package/hooks/features/dataSource/utils.js +2 -1
- package/hooks/features/rowSelection/useGridRowSelection.js +1 -1
- package/hooks/features/rows/gridRowsInterfaces.d.ts +1 -11
- package/index.js +1 -1
- package/internals/index.d.ts +2 -2
- package/locales/arSD.js +1 -0
- package/locales/beBY.js +1 -0
- package/locales/bgBG.js +1 -0
- package/locales/bnBD.js +1 -0
- package/locales/csCZ.js +1 -0
- package/locales/daDK.js +1 -0
- package/locales/deDE.js +1 -0
- package/locales/elGR.js +1 -0
- package/locales/esES.js +1 -0
- package/locales/faIR.js +1 -0
- package/locales/fiFI.js +1 -0
- package/locales/frFR.js +1 -0
- package/locales/heIL.js +1 -0
- package/locales/hrHR.js +1 -0
- package/locales/huHU.js +1 -0
- package/locales/hyAM.js +1 -0
- package/locales/idID.js +1 -0
- package/locales/isIS.js +1 -0
- package/locales/itIT.js +104 -115
- package/locales/jaJP.js +1 -0
- package/locales/koKR.js +1 -0
- package/locales/nbNO.js +1 -0
- package/locales/nlNL.js +1 -0
- package/locales/nnNO.js +1 -0
- package/locales/plPL.js +1 -0
- package/locales/ptBR.js +1 -0
- package/locales/ptPT.js +1 -0
- package/locales/roRO.js +1 -0
- package/locales/ruRU.js +1 -0
- package/locales/skSK.js +1 -0
- package/locales/svSE.js +1 -0
- package/locales/trTR.js +1 -0
- package/locales/ukUA.js +1 -0
- package/locales/urPK.js +1 -0
- package/locales/viVN.js +1 -0
- package/locales/zhCN.js +1 -0
- package/locales/zhHK.js +1 -0
- package/locales/zhTW.js +1 -0
- package/models/api/gridLocaleTextApi.d.ts +1 -0
- package/models/gridDataSource.d.ts +13 -0
- package/models/gridStateCommunity.d.ts +2 -3
- 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
|
+

|
|
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` [](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` [](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` [](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` [](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` [](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` [](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` [](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` [](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` [](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` [](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` [](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` [](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
|
|
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
|
|
34
|
-
'--color-
|
|
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
|
*/
|
package/constants/gridClasses.js
CHANGED
|
@@ -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
|
|
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
|
|
28
|
-
'--color-
|
|
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
|
-
|
|
6
|
-
export declare const
|
|
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(
|
|
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
|
-
},
|
|
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
|