@mui/x-data-grid 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_
@@ -64,7 +64,7 @@ const GridEditInputCell = exports.GridEditInputCell = (0, _forwardRef.forwardRef
64
64
  const newValue = event.target.value;
65
65
  const column = apiRef.current.getColumn(field);
66
66
  let parsedValue = newValue;
67
- if (column.valueParser) {
67
+ if (column?.valueParser) {
68
68
  parsedValue = column.valueParser(newValue, apiRef.current.getRow(id), column, apiRef);
69
69
  }
70
70
  setValueState(parsedValue);
@@ -57,7 +57,7 @@ const GridEditInputCell = forwardRef((props, ref) => {
57
57
  const newValue = event.target.value;
58
58
  const column = apiRef.current.getColumn(field);
59
59
  let parsedValue = newValue;
60
- if (column.valueParser) {
60
+ if (column?.valueParser) {
61
61
  parsedValue = column.valueParser(newValue, apiRef.current.getRow(id), column, apiRef);
62
62
  }
63
63
  setValueState(parsedValue);
@@ -274,7 +274,7 @@ function GridEditLongTextarea(props) {
274
274
  const newValue = event.target.value;
275
275
  const column = apiRef.current.getColumn(field);
276
276
  let parsedValue = newValue;
277
- if (column.valueParser) {
277
+ if (column?.valueParser) {
278
278
  parsedValue = column.valueParser(newValue, apiRef.current.getRow(id), column, apiRef);
279
279
  }
280
280
  setValueState(parsedValue);
@@ -266,7 +266,7 @@ function GridEditLongTextarea(props) {
266
266
  const newValue = event.target.value;
267
267
  const column = apiRef.current.getColumn(field);
268
268
  let parsedValue = newValue;
269
- if (column.valueParser) {
269
+ if (column?.valueParser) {
270
270
  parsedValue = column.valueParser(newValue, apiRef.current.getRow(id), column, apiRef);
271
271
  }
272
272
  setValueState(parsedValue);
@@ -450,6 +450,9 @@ const useGridColumnResize = (apiRef, props) => {
450
450
  const columnHeaderElement = (0, _domUtils.findParentElementFromClassName)(event.target, _gridClasses.gridClasses.columnHeader);
451
451
  const field = (0, _domUtils.getFieldFromHeaderElem)(columnHeaderElement);
452
452
  const colDef = apiRef.current.getColumn(field);
453
+ if (!colDef) {
454
+ return;
455
+ }
453
456
  logger.debug(`Start Resize on col ${colDef.field}`);
454
457
  apiRef.current.publishEvent('columnResizeStart', {
455
458
  field
@@ -442,6 +442,9 @@ export const useGridColumnResize = (apiRef, props) => {
442
442
  const columnHeaderElement = findParentElementFromClassName(event.target, gridClasses.columnHeader);
443
443
  const field = getFieldFromHeaderElem(columnHeaderElement);
444
444
  const colDef = apiRef.current.getColumn(field);
445
+ if (!colDef) {
446
+ return;
447
+ }
445
448
  logger.debug(`Start Resize on col ${colDef.field}`);
446
449
  apiRef.current.publishEvent('columnResizeStart', {
447
450
  field
@@ -137,6 +137,10 @@ function useGridColumns(apiRef, props) {
137
137
  return allColumns.findIndex(col => col === field);
138
138
  }, [apiRef]);
139
139
  const setColumnIndex = React.useCallback((field, targetIndexPosition) => {
140
+ const column = apiRef.current.getColumn(field);
141
+ if (!column) {
142
+ return;
143
+ }
140
144
  const allColumns = (0, _gridColumnsSelector.gridColumnFieldsSelector)(apiRef);
141
145
  const oldIndexPosition = getColumnIndexRelativeToVisibleColumns(field);
142
146
  if (oldIndexPosition === targetIndexPosition) {
@@ -150,7 +154,7 @@ function useGridColumns(apiRef, props) {
150
154
  orderedFields: updatedColumns
151
155
  }));
152
156
  const params = {
153
- column: apiRef.current.getColumn(field),
157
+ column,
154
158
  targetIndex: apiRef.current.getColumnIndexRelativeToVisibleColumns(field),
155
159
  oldIndex: oldIndexPosition
156
160
  };
@@ -128,6 +128,10 @@ export function useGridColumns(apiRef, props) {
128
128
  return allColumns.findIndex(col => col === field);
129
129
  }, [apiRef]);
130
130
  const setColumnIndex = React.useCallback((field, targetIndexPosition) => {
131
+ const column = apiRef.current.getColumn(field);
132
+ if (!column) {
133
+ return;
134
+ }
131
135
  const allColumns = gridColumnFieldsSelector(apiRef);
132
136
  const oldIndexPosition = getColumnIndexRelativeToVisibleColumns(field);
133
137
  if (oldIndexPosition === targetIndexPosition) {
@@ -141,7 +145,7 @@ export function useGridColumns(apiRef, props) {
141
145
  orderedFields: updatedColumns
142
146
  }));
143
147
  const params = {
144
- column: apiRef.current.getColumn(field),
148
+ column,
145
149
  targetIndex: apiRef.current.getColumnIndexRelativeToVisibleColumns(field),
146
150
  oldIndex: oldIndexPosition
147
151
  };
@@ -260,14 +260,17 @@ const useGridCellEditing = (apiRef, props) => {
260
260
  deleteValue,
261
261
  initialValue
262
262
  } = params;
263
+ const column = apiRef.current.getColumn(field);
264
+ if (!column) {
265
+ return;
266
+ }
263
267
  const value = apiRef.current.getCellValue(id, field);
264
268
  let newValue = value;
265
269
  if (deleteValue) {
266
- newValue = (0, _utils2.getDefaultCellValue)(apiRef.current.getColumn(field));
270
+ newValue = (0, _utils2.getDefaultCellValue)(column);
267
271
  } else if (initialValue) {
268
272
  newValue = initialValue;
269
273
  }
270
- const column = apiRef.current.getColumn(field);
271
274
  const shouldProcessEditCellProps = !!column.preProcessEditCellProps && deleteValue;
272
275
  let newProps = {
273
276
  value: newValue,
@@ -410,6 +413,9 @@ const useGridCellEditing = (apiRef, props) => {
410
413
  throwIfNotEditable(id, field);
411
414
  throwIfNotInMode(id, field, _gridEditRowModel.GridCellModes.Edit);
412
415
  const column = apiRef.current.getColumn(field);
416
+ if (!column) {
417
+ return false;
418
+ }
413
419
  const row = apiRef.current.getRow(id);
414
420
  let parsedValue = value;
415
421
  if (column.valueParser && !skipValueParser) {
@@ -461,7 +467,7 @@ const useGridCellEditing = (apiRef, props) => {
461
467
  const {
462
468
  value
463
469
  } = editingState[id][field];
464
- return column.valueSetter ? column.valueSetter(value, row, column, apiRef) : (0, _extends2.default)({}, row, {
470
+ return column?.valueSetter ? column.valueSetter(value, row, column, apiRef) : (0, _extends2.default)({}, row, {
465
471
  [field]: value
466
472
  });
467
473
  }, [apiRef]);
@@ -253,14 +253,17 @@ export const useGridCellEditing = (apiRef, props) => {
253
253
  deleteValue,
254
254
  initialValue
255
255
  } = params;
256
+ const column = apiRef.current.getColumn(field);
257
+ if (!column) {
258
+ return;
259
+ }
256
260
  const value = apiRef.current.getCellValue(id, field);
257
261
  let newValue = value;
258
262
  if (deleteValue) {
259
- newValue = getDefaultCellValue(apiRef.current.getColumn(field));
263
+ newValue = getDefaultCellValue(column);
260
264
  } else if (initialValue) {
261
265
  newValue = initialValue;
262
266
  }
263
- const column = apiRef.current.getColumn(field);
264
267
  const shouldProcessEditCellProps = !!column.preProcessEditCellProps && deleteValue;
265
268
  let newProps = {
266
269
  value: newValue,
@@ -403,6 +406,9 @@ export const useGridCellEditing = (apiRef, props) => {
403
406
  throwIfNotEditable(id, field);
404
407
  throwIfNotInMode(id, field, GridCellModes.Edit);
405
408
  const column = apiRef.current.getColumn(field);
409
+ if (!column) {
410
+ return false;
411
+ }
406
412
  const row = apiRef.current.getRow(id);
407
413
  let parsedValue = value;
408
414
  if (column.valueParser && !skipValueParser) {
@@ -454,7 +460,7 @@ export const useGridCellEditing = (apiRef, props) => {
454
460
  const {
455
461
  value
456
462
  } = editingState[id][field];
457
- return column.valueSetter ? column.valueSetter(value, row, column, apiRef) : _extends({}, row, {
463
+ return column?.valueSetter ? column.valueSetter(value, row, column, apiRef) : _extends({}, row, {
458
464
  [field]: value
459
465
  });
460
466
  }, [apiRef]);
@@ -135,7 +135,7 @@ const useGridRowEditing = (apiRef, props) => {
135
135
  } else if (event.key === 'Tab') {
136
136
  const columnFields = (0, _gridColumnsSelector.gridVisibleColumnFieldsSelector)(apiRef).filter(field => {
137
137
  const column = apiRef.current.getColumn(field);
138
- if (column.type === _colDef.GRID_ACTIONS_COLUMN_TYPE) {
138
+ if (column?.type === _colDef.GRID_ACTIONS_COLUMN_TYPE) {
139
139
  return true;
140
140
  }
141
141
  return apiRef.current.isCellEditable(apiRef.current.getCellParams(params.id, field));
@@ -340,11 +340,10 @@ const useGridRowEditing = (apiRef, props) => {
340
340
  if (!cellParams.isEditable) {
341
341
  return acc;
342
342
  }
343
- const column = apiRef.current.getColumn(field);
344
343
  let newValue = apiRef.current.getCellValue(id, field);
345
344
  if (fieldToFocus === field && (deleteValue || initialValue)) {
346
345
  if (deleteValue) {
347
- newValue = (0, _utils2.getDefaultCellValue)(column);
346
+ newValue = (0, _utils2.getDefaultCellValue)(col);
348
347
  } else if (initialValue) {
349
348
  newValue = initialValue;
350
349
  }
@@ -352,7 +351,7 @@ const useGridRowEditing = (apiRef, props) => {
352
351
  acc[field] = {
353
352
  value: newValue,
354
353
  error: false,
355
- isProcessingProps: column.editable && !!column.preProcessEditCellProps && deleteValue
354
+ isProcessingProps: col.editable && !!col.preProcessEditCellProps && deleteValue
356
355
  };
357
356
  return acc;
358
357
  }, {});
@@ -503,6 +502,9 @@ const useGridRowEditing = (apiRef, props) => {
503
502
  } = params;
504
503
  throwIfNotEditable(id, field);
505
504
  const column = apiRef.current.getColumn(field);
505
+ if (!column) {
506
+ return Promise.resolve(false);
507
+ }
506
508
  const row = apiRef.current.getRow(id);
507
509
  let parsedValue = value;
508
510
  if (column.valueParser && !skipValueParser) {
@@ -556,7 +558,7 @@ const useGridRowEditing = (apiRef, props) => {
556
558
  return;
557
559
  }
558
560
  const fieldColumn = apiRef.current.getColumn(thisField);
559
- if (!fieldColumn.preProcessEditCellProps) {
561
+ if (!fieldColumn?.preProcessEditCellProps) {
560
562
  return;
561
563
  }
562
564
  fieldProps = (0, _extends2.default)({}, fieldProps, {
@@ -128,7 +128,7 @@ export const useGridRowEditing = (apiRef, props) => {
128
128
  } else if (event.key === 'Tab') {
129
129
  const columnFields = gridVisibleColumnFieldsSelector(apiRef).filter(field => {
130
130
  const column = apiRef.current.getColumn(field);
131
- if (column.type === GRID_ACTIONS_COLUMN_TYPE) {
131
+ if (column?.type === GRID_ACTIONS_COLUMN_TYPE) {
132
132
  return true;
133
133
  }
134
134
  return apiRef.current.isCellEditable(apiRef.current.getCellParams(params.id, field));
@@ -333,11 +333,10 @@ export const useGridRowEditing = (apiRef, props) => {
333
333
  if (!cellParams.isEditable) {
334
334
  return acc;
335
335
  }
336
- const column = apiRef.current.getColumn(field);
337
336
  let newValue = apiRef.current.getCellValue(id, field);
338
337
  if (fieldToFocus === field && (deleteValue || initialValue)) {
339
338
  if (deleteValue) {
340
- newValue = getDefaultCellValue(column);
339
+ newValue = getDefaultCellValue(col);
341
340
  } else if (initialValue) {
342
341
  newValue = initialValue;
343
342
  }
@@ -345,7 +344,7 @@ export const useGridRowEditing = (apiRef, props) => {
345
344
  acc[field] = {
346
345
  value: newValue,
347
346
  error: false,
348
- isProcessingProps: column.editable && !!column.preProcessEditCellProps && deleteValue
347
+ isProcessingProps: col.editable && !!col.preProcessEditCellProps && deleteValue
349
348
  };
350
349
  return acc;
351
350
  }, {});
@@ -496,6 +495,9 @@ export const useGridRowEditing = (apiRef, props) => {
496
495
  } = params;
497
496
  throwIfNotEditable(id, field);
498
497
  const column = apiRef.current.getColumn(field);
498
+ if (!column) {
499
+ return Promise.resolve(false);
500
+ }
499
501
  const row = apiRef.current.getRow(id);
500
502
  let parsedValue = value;
501
503
  if (column.valueParser && !skipValueParser) {
@@ -549,7 +551,7 @@ export const useGridRowEditing = (apiRef, props) => {
549
551
  return;
550
552
  }
551
553
  const fieldColumn = apiRef.current.getColumn(thisField);
552
- if (!fieldColumn.preProcessEditCellProps) {
554
+ if (!fieldColumn?.preProcessEditCellProps) {
553
555
  return;
554
556
  }
555
557
  fieldProps = _extends({}, fieldProps, {
@@ -113,7 +113,7 @@ const useGridFilter = (apiRef, props, configuration) => {
113
113
  return true;
114
114
  }
115
115
  const column = apiRef.current.getColumn(item.field);
116
- const filterOperator = column.filterOperators?.find(operator => operator.value === item.operator);
116
+ const filterOperator = column?.filterOperators?.find(operator => operator.value === item.operator);
117
117
  const requiresFilterValue = typeof filterOperator?.requiresFilterValue === 'undefined' ? true : filterOperator?.requiresFilterValue;
118
118
 
119
119
  // Operators like `isEmpty` don't have and don't require `item.value`.
@@ -104,7 +104,7 @@ export const useGridFilter = (apiRef, props, configuration) => {
104
104
  return true;
105
105
  }
106
106
  const column = apiRef.current.getColumn(item.field);
107
- const filterOperator = column.filterOperators?.find(operator => operator.value === item.operator);
107
+ const filterOperator = column?.filterOperators?.find(operator => operator.value === item.operator);
108
108
  const requiresFilterValue = typeof filterOperator?.requiresFilterValue === 'undefined' ? true : filterOperator?.requiresFilterValue;
109
109
 
110
110
  // Operators like `isEmpty` don't have and don't require `item.value`.
@@ -1,7 +1,7 @@
1
1
  import type { RefObject } from '@mui/x-internals/types';
2
2
  import type { GridPrivateApiCommunity } from "../../../models/api/gridApiCommunity.mjs";
3
- import type { DataGridProcessedProps } from "../../../models/props/DataGridProps.mjs";
4
3
  import type { GridConfiguration } from "../../../models/configuration/gridConfiguration.mjs";
4
+ import type { DataGridProcessedProps } from "../../../models/props/DataGridProps.mjs";
5
5
  /**
6
6
  * @requires useGridColumns (method)
7
7
  * @requires useGridRows (method)
@@ -1,7 +1,7 @@
1
1
  import type { RefObject } from '@mui/x-internals/types';
2
2
  import type { GridPrivateApiCommunity } from "../../../models/api/gridApiCommunity.js";
3
- import type { DataGridProcessedProps } from "../../../models/props/DataGridProps.js";
4
3
  import type { GridConfiguration } from "../../../models/configuration/gridConfiguration.js";
4
+ import type { DataGridProcessedProps } from "../../../models/props/DataGridProps.js";
5
5
  /**
6
6
  * @requires useGridColumns (method)
7
7
  * @requires useGridRows (method)
@@ -76,6 +76,7 @@ function useGridParamsApi(apiRef, props, configuration) {
76
76
  const cellTabIndex = (0, _gridFocusStateSelector.gridTabIndexCellSelector)(apiRef);
77
77
  const cellMode = apiRef.current.getCellMode(id, field);
78
78
  return apiRef.current.getCellParamsForRow(id, field, row, {
79
+ // Params keep a non-nullable `colDef`, but it can be `undefined` at runtime for an unknown field.
79
80
  colDef: props.listView && props.listViewColumn?.field === field ? (0, _gridListViewSelectors.gridListColumnSelector)(apiRef) : apiRef.current.getColumn(field),
80
81
  rowNode,
81
82
  hasFocus: cellFocus !== null && cellFocus.field === field && cellFocus.id === id,
@@ -69,6 +69,7 @@ export function useGridParamsApi(apiRef, props, configuration) {
69
69
  const cellTabIndex = gridTabIndexCellSelector(apiRef);
70
70
  const cellMode = apiRef.current.getCellMode(id, field);
71
71
  return apiRef.current.getCellParamsForRow(id, field, row, {
72
+ // Params keep a non-nullable `colDef`, but it can be `undefined` at runtime for an unknown field.
72
73
  colDef: props.listView && props.listViewColumn?.field === field ? gridListColumnSelector(apiRef) : apiRef.current.getColumn(field),
73
74
  rowNode,
74
75
  hasFocus: cellFocus !== null && cellFocus.field === field && cellFocus.id === id,
@@ -120,6 +120,9 @@ const useGridSorting = (apiRef, props) => {
120
120
  }, [apiRef, logger, props.disableMultipleColumnsSorting]);
121
121
  const sortColumn = React.useCallback((field, direction, allowMultipleSorting) => {
122
122
  const column = apiRef.current.getColumn(field);
123
+ if (!column) {
124
+ return;
125
+ }
123
126
  const sortItem = createSortItem(column, direction);
124
127
  let sortModel;
125
128
  if (!allowMultipleSorting || props.disableMultipleColumnsSorting) {
@@ -111,6 +111,9 @@ export const useGridSorting = (apiRef, props) => {
111
111
  }, [apiRef, logger, props.disableMultipleColumnsSorting]);
112
112
  const sortColumn = React.useCallback((field, direction, allowMultipleSorting) => {
113
113
  const column = apiRef.current.getColumn(field);
114
+ if (!column) {
115
+ return;
116
+ }
114
117
  const sortItem = createSortItem(column, direction);
115
118
  let sortModel;
116
119
  if (!allowMultipleSorting || props.disableMultipleColumnsSorting) {
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v9.10.0
2
+ * @mui/x-data-grid v9.10.1
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
package/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v9.10.0
2
+ * @mui/x-data-grid v9.10.1
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -8,9 +8,9 @@ export interface GridColumnApi {
8
8
  /**
9
9
  * Returns the [[GridColDef]] for the given `field`.
10
10
  * @param {string} field The column field.
11
- * @returns {{GridStateColDef}} The [[GridStateColDef]].
11
+ * @returns {GridStateColDef | undefined} The [[GridStateColDef]], or `undefined` if the field is not in the current column set.
12
12
  */
13
- getColumn: (field: string) => GridStateColDef;
13
+ getColumn: (field: string) => GridStateColDef | undefined;
14
14
  /**
15
15
  * Returns an array of [[GridColDef]] containing all the column definitions.
16
16
  * @returns {GridStateColDef[]} An array of [[GridStateColDef]].
@@ -8,9 +8,9 @@ export interface GridColumnApi {
8
8
  /**
9
9
  * Returns the [[GridColDef]] for the given `field`.
10
10
  * @param {string} field The column field.
11
- * @returns {{GridStateColDef}} The [[GridStateColDef]].
11
+ * @returns {GridStateColDef | undefined} The [[GridStateColDef]], or `undefined` if the field is not in the current column set.
12
12
  */
13
- getColumn: (field: string) => GridStateColDef;
13
+ getColumn: (field: string) => GridStateColDef | undefined;
14
14
  /**
15
15
  * Returns an array of [[GridColDef]] containing all the column definitions.
16
16
  * @returns {GridStateColDef[]} An array of [[GridStateColDef]].
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-data-grid",
3
- "version": "9.10.0",
3
+ "version": "9.10.1",
4
4
  "author": "MUI Team",
5
5
  "description": "The Community plan edition of the MUI X Data Grid components.",
6
6
  "license": "MIT",
@@ -43,8 +43,8 @@
43
43
  "clsx": "^2.1.1",
44
44
  "prop-types": "^15.8.1",
45
45
  "use-sync-external-store": "^1.6.0",
46
- "@mui/x-internals": "^9.10.0",
47
- "@mui/x-virtualizer": "0.6.1"
46
+ "@mui/x-internals": "^9.10.1",
47
+ "@mui/x-virtualizer": "0.6.2"
48
48
  },
49
49
  "peerDependencies": {
50
50
  "@emotion/react": "^11.9.0",