@mui/x-data-grid-premium 9.10.0 → 9.10.1

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 CHANGED
@@ -1,5 +1,111 @@
1
1
  # Changelog
2
2
 
3
+ ## 9.10.1
4
+
5
+ _Jul 23, 2026_
6
+
7
+ We'd like to extend a big thank you to the 11 contributors who made this release possible. Here are some highlights ✨:
8
+
9
+ - 🦮 Improve accessibility of the Charts and Pickers components.
10
+ - 🐞 Bugfixes
11
+ - 📚 Documentation improvements
12
+
13
+ Special thanks go out to these community members for their valuable contributions:
14
+ @kevincorizi-sbt, @mustafajw07, @SamanPandey-in
15
+
16
+ The following team members contributed to this release:
17
+ @brijeshb42, @hasdfa, @JCQuintas, @LukasTy, @michelengelen, @noraleonte, @rita-codes, @silviuaavram
18
+
19
+ ### Data Grid
20
+
21
+ #### `@mui/x-data-grid@9.10.1`
22
+
23
+ - [data grid] Fix `getColumn` return type not reflecting that it can return undefined (#23165) @JCQuintas
24
+
25
+ #### `@mui/x-data-grid-pro@9.10.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
26
+
27
+ Same changes as in `@mui/x-data-grid@9.10.1`.
28
+
29
+ #### `@mui/x-data-grid-premium@9.10.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
30
+
31
+ Same changes as in `@mui/x-data-grid-pro@9.10.1`.
32
+
33
+ ### Date and Time Pickers
34
+
35
+ #### `@mui/x-date-pickers@9.10.1`
36
+
37
+ - [pickers] Fix format placeholder brightness with a start adornment (#23189) @LukasTy
38
+
39
+ #### `@mui/x-date-pickers-pro@9.10.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
40
+
41
+ Same changes as in `@mui/x-date-pickers@9.10.1`, plus:
42
+
43
+ - [DateRangePicker] Fix broken active range position underline in single input range fields (#23166) @LukasTy
44
+
45
+ ### Charts
46
+
47
+ #### `@mui/x-charts@9.10.1`
48
+
49
+ - [charts] Fix pie chart disappearing when an arc spans almost the full circle (#23145) @JCQuintas
50
+ - [charts] Set `aria-hidden` on accessibility proxy divs at initialization (#23186) @kevincorizi-sbt
51
+ - [charts] Fix keyboard navigation on series with different lengths (#23182) @JCQuintas
52
+ - [charts] Fix out of bounds keyboard navigation (#23180) @silviuaavram
53
+
54
+ #### `@mui/x-charts-pro@9.10.1` [![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-charts@9.10.1`, plus:
57
+
58
+ - [charts-pro] Fix highlight shifting on sampled bar charts (#23190) @noraleonte
59
+ - [charts-pro] Sampled band highlight falls back to single-band width for Date/object values (#23024) @SamanPandey-in
60
+
61
+ #### `@mui/x-charts-premium@9.10.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
62
+
63
+ Same changes as in `@mui/x-charts-pro@9.10.1`.
64
+
65
+ ### Tree View
66
+
67
+ #### `@mui/x-tree-view@9.10.1`
68
+
69
+ - [TreeView] Fix selection propagation to exclude disabled items (#23012) @michelengelen
70
+
71
+ #### `@mui/x-tree-view-pro@9.10.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
72
+
73
+ Same changes as in `@mui/x-tree-view@9.10.1`.
74
+
75
+ ### Scheduler
76
+
77
+ #### `@mui/x-scheduler@9.0.0-beta.7`
78
+
79
+ - [scheduler] Polish `EventCalendar` rendering for multi-resource events (#23161) @mustafajw07
80
+ - [scheduler] Responsive header (#22954) @noraleonte
81
+
82
+ #### `@mui/x-scheduler-premium@9.0.0-beta.7` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
83
+
84
+ Same changes as in `@mui/x-scheduler@9.0.0-beta.7`, plus:
85
+
86
+ - [scheduler-premium] Add the dependencies data model (#23117) @rita-codes
87
+ - [scheduler-premium] Dependencies - Render the FS arrow (#23162) @rita-codes
88
+
89
+ ### Codemod
90
+
91
+ #### `@mui/x-codemod@9.10.1`
92
+
93
+ Internal changes.
94
+
95
+ ### Docs
96
+
97
+ - [docs] Fix clearing, layout shift, and prop leak in Pickers demos (#23191) @LukasTy
98
+
99
+ ### Core
100
+
101
+ - [code-infra] Validate working of specific code-infra canary (#23207) @brijeshb42
102
+
103
+ ### Miscellaneous
104
+
105
+ - [chat] Normalize message part link URLs (#23187) @hasdfa
106
+ - [x-chat] Fix object URL leaks for submitted attachments (#23198) @hasdfa
107
+ - [internals] Make disposable types self-contained without `esnext.disposable` lib (#23164) @JCQuintas
108
+
3
109
  ## 9.10.0
4
110
 
5
111
  _Jul 17, 2026_
@@ -51,8 +51,8 @@ const configuration = {
51
51
  }
52
52
  };
53
53
  const packageInfo = {
54
- releaseDate: "MTc4NDI0NjQwMDAwMA==",
55
- version: "9.10.0",
54
+ releaseDate: "MTc4NDc2NDgwMDAwMA==",
55
+ version: "9.10.1",
56
56
  name: 'x-data-grid-premium'
57
57
  };
58
58
  const watermark = /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.Watermark, {
@@ -44,8 +44,8 @@ const configuration = {
44
44
  }
45
45
  };
46
46
  const packageInfo = {
47
- releaseDate: "MTc4NDI0NjQwMDAwMA==",
48
- version: "9.10.0",
47
+ releaseDate: "MTc4NDc2NDgwMDAwMA==",
48
+ version: "9.10.1",
49
49
  name: 'x-data-grid-premium'
50
50
  };
51
51
  const watermark = /*#__PURE__*/_jsx(Watermark, {
@@ -61,7 +61,7 @@ function GridGroupingCriteriaCell(props) {
61
61
  };
62
62
  let cellContent;
63
63
  const colDef = apiRef.current.getColumn(rowNode.groupingField);
64
- if (typeof colDef.renderCell === 'function') {
64
+ if (colDef && typeof colDef.renderCell === 'function') {
65
65
  cellContent = colDef.renderCell(props);
66
66
  } else if (typeof formattedValue !== 'undefined') {
67
67
  cellContent = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
@@ -53,7 +53,7 @@ export function GridGroupingCriteriaCell(props) {
53
53
  };
54
54
  let cellContent;
55
55
  const colDef = apiRef.current.getColumn(rowNode.groupingField);
56
- if (typeof colDef.renderCell === 'function') {
56
+ if (colDef && typeof colDef.renderCell === 'function') {
57
57
  cellContent = colDef.renderCell(props);
58
58
  } else if (typeof formattedValue !== 'undefined') {
59
59
  cellContent = /*#__PURE__*/_jsx("span", {
@@ -141,11 +141,14 @@ function AggregationSelect({
141
141
  const pivotActive = (0, _internals.gridPivotActiveSelector)(apiRef);
142
142
  const getActualFieldName = React.useCallback(fieldName => pivotActive ? fieldName.split(_columnGroups.COLUMN_GROUP_ID_SEPARATOR).slice(-1)[0] : fieldName, [pivotActive]);
143
143
  const colDef = React.useCallback(fieldName => apiRef.current.getColumn(getActualFieldName(fieldName)), [apiRef, getActualFieldName]);
144
- const availableAggregationFunctions = React.useMemo(() => [...(pivotActive ? [] : [AGGREGATION_FUNCTION_NONE]), ...(0, _gridAggregationUtils.getAvailableAggregationFunctions)({
145
- aggregationFunctions: rootProps.aggregationFunctions,
146
- colDef: colDef(field),
147
- isDataSource: !!rootProps.dataSource
148
- })], [colDef, field, pivotActive, rootProps.aggregationFunctions, rootProps.dataSource]);
144
+ const availableAggregationFunctions = React.useMemo(() => {
145
+ const column = colDef(field);
146
+ return [...(pivotActive ? [] : [AGGREGATION_FUNCTION_NONE]), ...(column ? (0, _gridAggregationUtils.getAvailableAggregationFunctions)({
147
+ aggregationFunctions: rootProps.aggregationFunctions,
148
+ colDef: column,
149
+ isDataSource: !!rootProps.dataSource
150
+ }) : [])];
151
+ }, [colDef, field, pivotActive, rootProps.aggregationFunctions, rootProps.dataSource]);
149
152
  const handleClick = React.useCallback(func => {
150
153
  if (pivotActive) {
151
154
  const fieldName = getActualFieldName(field);
@@ -133,11 +133,14 @@ export function AggregationSelect({
133
133
  const pivotActive = gridPivotActiveSelector(apiRef);
134
134
  const getActualFieldName = React.useCallback(fieldName => pivotActive ? fieldName.split(COLUMN_GROUP_ID_SEPARATOR).slice(-1)[0] : fieldName, [pivotActive]);
135
135
  const colDef = React.useCallback(fieldName => apiRef.current.getColumn(getActualFieldName(fieldName)), [apiRef, getActualFieldName]);
136
- const availableAggregationFunctions = React.useMemo(() => [...(pivotActive ? [] : [AGGREGATION_FUNCTION_NONE]), ...getAvailableAggregationFunctions({
137
- aggregationFunctions: rootProps.aggregationFunctions,
138
- colDef: colDef(field),
139
- isDataSource: !!rootProps.dataSource
140
- })], [colDef, field, pivotActive, rootProps.aggregationFunctions, rootProps.dataSource]);
136
+ const availableAggregationFunctions = React.useMemo(() => {
137
+ const column = colDef(field);
138
+ return [...(pivotActive ? [] : [AGGREGATION_FUNCTION_NONE]), ...(column ? getAvailableAggregationFunctions({
139
+ aggregationFunctions: rootProps.aggregationFunctions,
140
+ colDef: column,
141
+ isDataSource: !!rootProps.dataSource
142
+ }) : [])];
143
+ }, [colDef, field, pivotActive, rootProps.aggregationFunctions, rootProps.dataSource]);
141
144
  const handleClick = React.useCallback(func => {
142
145
  if (pivotActive) {
143
146
  const fieldName = getActualFieldName(field);
@@ -173,7 +173,7 @@ const useGridCellSelection = (apiRef, props) => {
173
173
  return false;
174
174
  }
175
175
  const column = apiRef.current.getColumn(params.field);
176
- if (column.type === _xDataGridPro.GRID_ACTIONS_COLUMN_TYPE) {
176
+ if (column?.type === _xDataGridPro.GRID_ACTIONS_COLUMN_TYPE) {
177
177
  return false;
178
178
  }
179
179
  return params.rowNode.type !== 'pinnedRow';
@@ -165,7 +165,7 @@ export const useGridCellSelection = (apiRef, props) => {
165
165
  return false;
166
166
  }
167
167
  const column = apiRef.current.getColumn(params.field);
168
- if (column.type === GRID_ACTIONS_COLUMN_TYPE) {
168
+ if (column?.type === GRID_ACTIONS_COLUMN_TYPE) {
169
169
  return false;
170
170
  }
171
171
  return params.rowNode.type !== 'pinnedRow';
@@ -191,12 +191,14 @@ const useGridChartsIntegration = (apiRef, props) => {
191
191
  const dataColumns = [...new Set([...Object.values(visibleDimensions.current).flat(), ...Object.values(visibleValues.current).flat()])].map(column => {
192
192
  const isColumnGrouped = rowGroupingModel.includes(column.field);
193
193
  if (isColumnGrouped) {
194
- const groupedFieldName = isColumnGrouped ? (0, _gridRowGroupingUtils.getRowGroupingFieldFromGroupingCriteria)(orderedFields.includes(_internals.GRID_ROW_GROUPING_SINGLE_GROUPING_FIELD) ? null : column.field) : column.field;
194
+ const groupedFieldName = (0, _gridRowGroupingUtils.getRowGroupingFieldFromGroupingCriteria)(orderedFields.includes(_internals.GRID_ROW_GROUPING_SINGLE_GROUPING_FIELD) ? null : column.field);
195
195
  const columnDefinition = apiRef.current.getColumn(groupedFieldName);
196
- return (0, _extends2.default)({}, columnDefinition, {
197
- dataFieldName: column.field,
198
- depth: rowGroupingModel.indexOf(column.field)
199
- });
196
+ if (columnDefinition) {
197
+ return (0, _extends2.default)({}, columnDefinition, {
198
+ dataFieldName: column.field,
199
+ depth: rowGroupingModel.indexOf(column.field)
200
+ });
201
+ }
200
202
  }
201
203
  return (0, _extends2.default)({}, column, {
202
204
  dataFieldName: column.field,
@@ -183,12 +183,14 @@ export const useGridChartsIntegration = (apiRef, props) => {
183
183
  const dataColumns = [...new Set([...Object.values(visibleDimensions.current).flat(), ...Object.values(visibleValues.current).flat()])].map(column => {
184
184
  const isColumnGrouped = rowGroupingModel.includes(column.field);
185
185
  if (isColumnGrouped) {
186
- const groupedFieldName = isColumnGrouped ? getRowGroupingFieldFromGroupingCriteria(orderedFields.includes(GRID_ROW_GROUPING_SINGLE_GROUPING_FIELD) ? null : column.field) : column.field;
186
+ const groupedFieldName = getRowGroupingFieldFromGroupingCriteria(orderedFields.includes(GRID_ROW_GROUPING_SINGLE_GROUPING_FIELD) ? null : column.field);
187
187
  const columnDefinition = apiRef.current.getColumn(groupedFieldName);
188
- return _extends({}, columnDefinition, {
189
- dataFieldName: column.field,
190
- depth: rowGroupingModel.indexOf(column.field)
191
- });
188
+ if (columnDefinition) {
189
+ return _extends({}, columnDefinition, {
190
+ dataFieldName: column.field,
191
+ depth: rowGroupingModel.indexOf(column.field)
192
+ });
193
+ }
192
194
  }
193
195
  return _extends({}, column, {
194
196
  dataFieldName: column.field,
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid-premium v9.10.0
2
+ * @mui/x-data-grid-premium v9.10.1
3
3
  *
4
4
  * @license SEE LICENSE IN LICENSE
5
5
  * This source code is licensed under the SEE LICENSE IN LICENSE license found in the
package/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid-premium v9.10.0
2
+ * @mui/x-data-grid-premium v9.10.1
3
3
  *
4
4
  * @license SEE LICENSE IN LICENSE
5
5
  * This source code is licensed under the SEE LICENSE IN LICENSE license found in the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-data-grid-premium",
3
- "version": "9.10.0",
3
+ "version": "9.10.1",
4
4
  "author": "MUI Team",
5
5
  "description": "The Premium plan edition of the MUI X Data Grid Components.",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -39,10 +39,10 @@
39
39
  "@mui/x-internal-exceljs-fork": "5.0.0",
40
40
  "clsx": "^2.1.1",
41
41
  "prop-types": "^15.8.1",
42
- "@mui/x-data-grid": "^9.10.0",
43
- "@mui/x-data-grid-pro": "^9.10.0",
44
- "@mui/x-internals": "^9.10.0",
45
- "@mui/x-license": "^9.10.0"
42
+ "@mui/x-data-grid-pro": "^9.10.1",
43
+ "@mui/x-internals": "^9.10.1",
44
+ "@mui/x-data-grid": "^9.10.1",
45
+ "@mui/x-license": "^9.10.1"
46
46
  },
47
47
  "peerDependencies": {
48
48
  "@emotion/react": "^11.9.0",