@mui/x-data-grid-pro 8.27.3 → 8.27.4
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 +56 -0
- package/DataGridPro/DataGridPro.js +1 -1
- package/esm/DataGridPro/DataGridPro.js +1 -1
- package/esm/hooks/features/dataSource/useGridDataSourceBasePro.js +14 -16
- package/esm/index.js +1 -1
- package/hooks/features/dataSource/useGridDataSourceBasePro.js +13 -15
- package/index.js +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,62 @@
|
|
|
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.27.4
|
|
9
|
+
|
|
10
|
+
_Mar 5, 2026_
|
|
11
|
+
|
|
12
|
+
We'd like to extend a big thank you to the 6 contributors who made this release possible. Here are some highlights ✨:
|
|
13
|
+
|
|
14
|
+
- 🐞 Bugfixes
|
|
15
|
+
- 🌎 Improve Ukrainian (uk-UA) locale
|
|
16
|
+
|
|
17
|
+
Special thanks go out to this community member for their valuable contribution:
|
|
18
|
+
@lion1963
|
|
19
|
+
|
|
20
|
+
The following team members contributed to this release:
|
|
21
|
+
@arminmeh, @brijeshb42, @dav-is, @JCQuintas, @sai6855
|
|
22
|
+
|
|
23
|
+
### Data Grid
|
|
24
|
+
|
|
25
|
+
#### `@mui/x-data-grid@8.27.4`
|
|
26
|
+
|
|
27
|
+
- [DataGrid] Prevent unnecessary row selection checkbox rerendering (#21571) @arminmeh
|
|
28
|
+
- [DataGrid] Make `GridScrollArea` overrides resolver dynamic (#21612) @sai6855
|
|
29
|
+
- [l10n] Improve Ukrainian (uk-UA) locale (#21381) @lion1963
|
|
30
|
+
|
|
31
|
+
#### `@mui/x-data-grid-pro@8.27.4` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
32
|
+
|
|
33
|
+
Same changes as in `@mui/x-data-grid@8.27.4`, plus:
|
|
34
|
+
|
|
35
|
+
- [DataGridPro] Use `getRowId` prop to calculate the tree data row update (#21544) @arminmeh
|
|
36
|
+
|
|
37
|
+
#### `@mui/x-data-grid-premium@8.27.4` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
38
|
+
|
|
39
|
+
Same changes as in `@mui/x-data-grid-pro@8.27.4`.
|
|
40
|
+
|
|
41
|
+
### Charts
|
|
42
|
+
|
|
43
|
+
#### `@mui/x-charts@8.27.4`
|
|
44
|
+
|
|
45
|
+
- [charts] Deprecate `ChartDataProvider` in favour of `ChartsDataProvider` (#21549) @JCQuintas
|
|
46
|
+
- [charts] Rename `ChartContainer` to `ChartsContainer` (#21186) @JCQuintas
|
|
47
|
+
- [charts] Rename `ChartZoomSlider` to `ChartsZoomSlider` (#21572) @JCQuintas
|
|
48
|
+
|
|
49
|
+
#### `@mui/x-charts-pro@8.27.4` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
50
|
+
|
|
51
|
+
Same changes as in `@mui/x-charts@8.27.4`.
|
|
52
|
+
|
|
53
|
+
#### `@mui/x-charts-premium@8.27.4` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
54
|
+
|
|
55
|
+
Same changes as in `@mui/x-charts-pro@8.27.4`.
|
|
56
|
+
|
|
57
|
+
### Core
|
|
58
|
+
|
|
59
|
+
- [code-infra] Add eslint rule to prevent `Math.random` in docs (#21505) (#21563) @JCQuintas
|
|
60
|
+
- [code-infra] V8 Dedupe (#21561) @JCQuintas
|
|
61
|
+
- [docs-infra] Apply Cookie Banner to v8.x Branch (#21448) @dav-is
|
|
62
|
+
- [code-infra] Setup checkout to do full clone for non master branches (#21624) @brijeshb42
|
|
63
|
+
|
|
8
64
|
## 8.27.3
|
|
9
65
|
|
|
10
66
|
_Feb 25, 2026_
|
|
@@ -34,7 +34,7 @@ const configuration = {
|
|
|
34
34
|
useFilterValueGetter: apiRef => apiRef.current.getRowValue
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
|
-
const releaseInfo = "
|
|
37
|
+
const releaseInfo = "MTc3MjY2ODgwMDAwMA==";
|
|
38
38
|
const watermark = /*#__PURE__*/(0, _jsxRuntime.jsx)(_xLicense.Watermark, {
|
|
39
39
|
packageName: "x-data-grid-pro",
|
|
40
40
|
releaseInfo: releaseInfo
|
|
@@ -27,7 +27,7 @@ const configuration = {
|
|
|
27
27
|
useFilterValueGetter: apiRef => apiRef.current.getRowValue
|
|
28
28
|
}
|
|
29
29
|
};
|
|
30
|
-
const releaseInfo = "
|
|
30
|
+
const releaseInfo = "MTc3MjY2ODgwMDAwMA==";
|
|
31
31
|
const watermark = /*#__PURE__*/_jsx(Watermark, {
|
|
32
32
|
packageName: "x-data-grid-pro",
|
|
33
33
|
releaseInfo: releaseInfo
|
|
@@ -4,7 +4,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { isDeepEqual } from '@mui/x-internals/isDeepEqual';
|
|
6
6
|
import useLazyRef from '@mui/utils/useLazyRef';
|
|
7
|
-
import { useGridSelector, GridGetRowsError, gridRowIdSelector, gridRowNodeSelector, gridRowTreeSelector, GRID_ROOT_GROUP_ID } from '@mui/x-data-grid';
|
|
7
|
+
import { useGridSelector, GridGetRowsError, gridRowIdSelector, gridRowNodeSelector, gridRowTreeSelector, GRID_ROOT_GROUP_ID, gridRowsLookupSelector } from '@mui/x-data-grid';
|
|
8
8
|
import { gridRowGroupsToFetchSelector, useGridDataSourceBase, CacheChunkManager, gridGetRowsParamsSelector, DataSourceRowsUpdateStrategy, GridStrategyGroup, getTreeNodeDescendants } from '@mui/x-data-grid/internals';
|
|
9
9
|
import { warnOnce } from '@mui/x-internals/warning';
|
|
10
10
|
import { NestedDataManager, RequestStatus, getGroupKeys } from "./utils.js";
|
|
@@ -56,6 +56,7 @@ export const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
|
|
|
56
56
|
const onDataSourceErrorProp = props.onDataSourceError;
|
|
57
57
|
const replaceGroupRows = React.useCallback((groupId, groupPath, rows) => {
|
|
58
58
|
const tree = gridRowTreeSelector(apiRef);
|
|
59
|
+
const rowsLookup = gridRowsLookupSelector(apiRef);
|
|
59
60
|
const fetchedRowIds = new Set(rows.map(row => gridRowIdSelector(apiRef, row)));
|
|
60
61
|
const currentGroupRows = getTreeNodeDescendants(tree, groupId, false, true);
|
|
61
62
|
const rowsToDelete = [];
|
|
@@ -69,15 +70,13 @@ export const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
|
|
|
69
70
|
if (fetchedRowIds.has(descendantId)) {
|
|
70
71
|
continue;
|
|
71
72
|
}
|
|
72
|
-
rowsToDelete.push({
|
|
73
|
-
id: descendantId,
|
|
73
|
+
rowsToDelete.push(_extends({}, rowsLookup[descendantId], {
|
|
74
74
|
_action: 'delete'
|
|
75
|
-
});
|
|
75
|
+
}));
|
|
76
76
|
}
|
|
77
|
-
rowsToDelete.push({
|
|
78
|
-
id: rowId,
|
|
77
|
+
rowsToDelete.push(_extends({}, rowsLookup[rowId], {
|
|
79
78
|
_action: 'delete'
|
|
80
|
-
});
|
|
79
|
+
}));
|
|
81
80
|
});
|
|
82
81
|
if (rowsToDelete.length > 0) {
|
|
83
82
|
apiRef.current.updateNestedRows(rowsToDelete, groupPath);
|
|
@@ -200,6 +199,7 @@ export const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
|
|
|
200
199
|
});
|
|
201
200
|
}, [apiRef]);
|
|
202
201
|
const removeChildrenRows = React.useCallback(parentId => {
|
|
202
|
+
const rowsLookup = gridRowsLookupSelector(apiRef);
|
|
203
203
|
const rowNode = gridRowNodeSelector(apiRef, parentId);
|
|
204
204
|
if (!rowNode || rowNode.type !== 'group' || rowNode.children.length === 0) {
|
|
205
205
|
return;
|
|
@@ -213,10 +213,9 @@ export const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
|
|
|
213
213
|
if (node.type === 'group' && node.children.length > 0) {
|
|
214
214
|
node.children.forEach(traverse);
|
|
215
215
|
}
|
|
216
|
-
removedRows.push({
|
|
217
|
-
id: nodeId,
|
|
216
|
+
removedRows.push(_extends({}, rowsLookup[nodeId], {
|
|
218
217
|
_action: 'delete'
|
|
219
|
-
});
|
|
218
|
+
}));
|
|
220
219
|
};
|
|
221
220
|
rowNode.children.forEach(traverse);
|
|
222
221
|
if (removedRows.length > 0) {
|
|
@@ -241,6 +240,7 @@ export const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
|
|
|
241
240
|
apiRef.current.setRows(response.rows);
|
|
242
241
|
} else {
|
|
243
242
|
const tree = gridRowTreeSelector(apiRef);
|
|
243
|
+
const rowsLookup = gridRowsLookupSelector(apiRef);
|
|
244
244
|
// Remove existing outdated rows before setting the new ones
|
|
245
245
|
// Create a set of the current root rows
|
|
246
246
|
const parentRowsToDelete = new Set(getTreeNodeDescendants(tree, GRID_ROOT_GROUP_ID, false, true));
|
|
@@ -254,15 +254,13 @@ export const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
|
|
|
254
254
|
const descendants = getTreeNodeDescendants(tree, parentRowId, false, false);
|
|
255
255
|
for (let i = descendants.length - 1; i >= 0; i -= 1) {
|
|
256
256
|
// delete deepest descendants first
|
|
257
|
-
rowsToDelete.push({
|
|
258
|
-
id: descendants[i],
|
|
257
|
+
rowsToDelete.push(_extends({}, rowsLookup[descendants[i]], {
|
|
259
258
|
_action: 'delete'
|
|
260
|
-
});
|
|
259
|
+
}));
|
|
261
260
|
}
|
|
262
|
-
rowsToDelete.push({
|
|
263
|
-
id: parentRowId,
|
|
261
|
+
rowsToDelete.push(_extends({}, rowsLookup[parentRowId], {
|
|
264
262
|
_action: 'delete'
|
|
265
|
-
});
|
|
263
|
+
}));
|
|
266
264
|
});
|
|
267
265
|
}
|
|
268
266
|
apiRef.current.updateRows(response.rows.concat(rowsToDelete));
|
package/esm/index.js
CHANGED
|
@@ -63,6 +63,7 @@ const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
|
|
|
63
63
|
const onDataSourceErrorProp = props.onDataSourceError;
|
|
64
64
|
const replaceGroupRows = React.useCallback((groupId, groupPath, rows) => {
|
|
65
65
|
const tree = (0, _xDataGrid.gridRowTreeSelector)(apiRef);
|
|
66
|
+
const rowsLookup = (0, _xDataGrid.gridRowsLookupSelector)(apiRef);
|
|
66
67
|
const fetchedRowIds = new Set(rows.map(row => (0, _xDataGrid.gridRowIdSelector)(apiRef, row)));
|
|
67
68
|
const currentGroupRows = (0, _internals.getTreeNodeDescendants)(tree, groupId, false, true);
|
|
68
69
|
const rowsToDelete = [];
|
|
@@ -76,15 +77,13 @@ const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
|
|
|
76
77
|
if (fetchedRowIds.has(descendantId)) {
|
|
77
78
|
continue;
|
|
78
79
|
}
|
|
79
|
-
rowsToDelete.push({
|
|
80
|
-
id: descendantId,
|
|
80
|
+
rowsToDelete.push((0, _extends2.default)({}, rowsLookup[descendantId], {
|
|
81
81
|
_action: 'delete'
|
|
82
|
-
});
|
|
82
|
+
}));
|
|
83
83
|
}
|
|
84
|
-
rowsToDelete.push({
|
|
85
|
-
id: rowId,
|
|
84
|
+
rowsToDelete.push((0, _extends2.default)({}, rowsLookup[rowId], {
|
|
86
85
|
_action: 'delete'
|
|
87
|
-
});
|
|
86
|
+
}));
|
|
88
87
|
});
|
|
89
88
|
if (rowsToDelete.length > 0) {
|
|
90
89
|
apiRef.current.updateNestedRows(rowsToDelete, groupPath);
|
|
@@ -207,6 +206,7 @@ const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
|
|
|
207
206
|
});
|
|
208
207
|
}, [apiRef]);
|
|
209
208
|
const removeChildrenRows = React.useCallback(parentId => {
|
|
209
|
+
const rowsLookup = (0, _xDataGrid.gridRowsLookupSelector)(apiRef);
|
|
210
210
|
const rowNode = (0, _xDataGrid.gridRowNodeSelector)(apiRef, parentId);
|
|
211
211
|
if (!rowNode || rowNode.type !== 'group' || rowNode.children.length === 0) {
|
|
212
212
|
return;
|
|
@@ -220,10 +220,9 @@ const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
|
|
|
220
220
|
if (node.type === 'group' && node.children.length > 0) {
|
|
221
221
|
node.children.forEach(traverse);
|
|
222
222
|
}
|
|
223
|
-
removedRows.push({
|
|
224
|
-
id: nodeId,
|
|
223
|
+
removedRows.push((0, _extends2.default)({}, rowsLookup[nodeId], {
|
|
225
224
|
_action: 'delete'
|
|
226
|
-
});
|
|
225
|
+
}));
|
|
227
226
|
};
|
|
228
227
|
rowNode.children.forEach(traverse);
|
|
229
228
|
if (removedRows.length > 0) {
|
|
@@ -248,6 +247,7 @@ const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
|
|
|
248
247
|
apiRef.current.setRows(response.rows);
|
|
249
248
|
} else {
|
|
250
249
|
const tree = (0, _xDataGrid.gridRowTreeSelector)(apiRef);
|
|
250
|
+
const rowsLookup = (0, _xDataGrid.gridRowsLookupSelector)(apiRef);
|
|
251
251
|
// Remove existing outdated rows before setting the new ones
|
|
252
252
|
// Create a set of the current root rows
|
|
253
253
|
const parentRowsToDelete = new Set((0, _internals.getTreeNodeDescendants)(tree, _xDataGrid.GRID_ROOT_GROUP_ID, false, true));
|
|
@@ -261,15 +261,13 @@ const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
|
|
|
261
261
|
const descendants = (0, _internals.getTreeNodeDescendants)(tree, parentRowId, false, false);
|
|
262
262
|
for (let i = descendants.length - 1; i >= 0; i -= 1) {
|
|
263
263
|
// delete deepest descendants first
|
|
264
|
-
rowsToDelete.push({
|
|
265
|
-
id: descendants[i],
|
|
264
|
+
rowsToDelete.push((0, _extends2.default)({}, rowsLookup[descendants[i]], {
|
|
266
265
|
_action: 'delete'
|
|
267
|
-
});
|
|
266
|
+
}));
|
|
268
267
|
}
|
|
269
|
-
rowsToDelete.push({
|
|
270
|
-
id: parentRowId,
|
|
268
|
+
rowsToDelete.push((0, _extends2.default)({}, rowsLookup[parentRowId], {
|
|
271
269
|
_action: 'delete'
|
|
272
|
-
});
|
|
270
|
+
}));
|
|
273
271
|
});
|
|
274
272
|
}
|
|
275
273
|
apiRef.current.updateRows(response.rows.concat(rowsToDelete));
|
package/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-data-grid-pro",
|
|
3
|
-
"version": "8.27.
|
|
3
|
+
"version": "8.27.4",
|
|
4
4
|
"author": "MUI Team",
|
|
5
5
|
"description": "The Pro plan edition of the MUI X Data Grid components.",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
"@mui/utils": "^7.3.5",
|
|
38
38
|
"clsx": "^2.1.1",
|
|
39
39
|
"prop-types": "^15.8.1",
|
|
40
|
-
"@mui/x-data-grid": "8.27.3",
|
|
41
40
|
"@mui/x-internals": "8.26.0",
|
|
42
|
-
"@mui/x-license": "8.26.0"
|
|
41
|
+
"@mui/x-license": "8.26.0",
|
|
42
|
+
"@mui/x-data-grid": "8.27.4"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"@emotion/react": "^11.9.0",
|