@mui/x-data-grid 9.6.0 → 9.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/CHANGELOG.md +241 -2
  2. package/DataGrid/DataGrid.js +2 -2
  3. package/DataGrid/DataGrid.mjs +2 -2
  4. package/colDef/gridDateOperators.d.mts +1 -1
  5. package/colDef/gridDateOperators.d.ts +1 -1
  6. package/components/GridColumnHeaders.d.mts +1 -1
  7. package/components/GridColumnHeaders.d.ts +1 -1
  8. package/components/GridFooter.d.mts +1 -1
  9. package/components/GridFooter.d.ts +1 -1
  10. package/components/GridLoadingOverlay.d.mts +1 -1
  11. package/components/GridLoadingOverlay.d.ts +1 -1
  12. package/components/GridNoColumnsOverlay.d.mts +1 -1
  13. package/components/GridNoColumnsOverlay.d.ts +1 -1
  14. package/components/GridNoResultsOverlay.d.mts +1 -1
  15. package/components/GridNoResultsOverlay.d.ts +1 -1
  16. package/components/GridNoRowsOverlay.d.mts +1 -1
  17. package/components/GridNoRowsOverlay.d.ts +1 -1
  18. package/components/GridRowCount.d.mts +1 -1
  19. package/components/GridRowCount.d.ts +1 -1
  20. package/components/GridSelectedRowCount.d.mts +1 -1
  21. package/components/GridSelectedRowCount.d.ts +1 -1
  22. package/components/cell/GridActionsCell.d.mts +1 -1
  23. package/components/cell/GridActionsCell.d.ts +1 -1
  24. package/components/cell/GridCell.d.mts +1 -1
  25. package/components/cell/GridCell.d.ts +1 -1
  26. package/components/cell/GridCell.js +2 -10
  27. package/components/cell/GridCell.mjs +2 -10
  28. package/components/cell/GridFooterCell.d.mts +1 -1
  29. package/components/cell/GridFooterCell.d.ts +1 -1
  30. package/components/columnHeaders/GridBaseColumnHeaders.d.mts +1 -1
  31. package/components/columnHeaders/GridBaseColumnHeaders.d.ts +1 -1
  32. package/components/columnHeaders/GridColumnGroupHeader.js +2 -10
  33. package/components/columnHeaders/GridColumnGroupHeader.mjs +2 -10
  34. package/components/columnHeaders/GridColumnHeaderItem.js +2 -10
  35. package/components/columnHeaders/GridColumnHeaderItem.mjs +2 -10
  36. package/components/columnHeaders/GridColumnHeaderSortIcon.d.mts +1 -1
  37. package/components/columnHeaders/GridColumnHeaderSortIcon.d.ts +1 -1
  38. package/components/columnHeaders/GridGenericColumnHeaderItem.d.mts +1 -1
  39. package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +1 -1
  40. package/components/columnsPanel/ColumnsPanelTrigger.d.mts +1 -1
  41. package/components/columnsPanel/ColumnsPanelTrigger.d.ts +1 -1
  42. package/components/columnsPanel/ColumnsPanelTrigger.js +2 -2
  43. package/components/columnsPanel/ColumnsPanelTrigger.mjs +2 -2
  44. package/components/containers/GridFooterContainer.d.mts +1 -1
  45. package/components/containers/GridFooterContainer.d.ts +1 -1
  46. package/components/containers/GridOverlay.d.mts +1 -1
  47. package/components/containers/GridOverlay.d.ts +1 -1
  48. package/components/containers/GridToolbarContainer.d.mts +1 -1
  49. package/components/containers/GridToolbarContainer.d.ts +1 -1
  50. package/components/export/ExportCsv.d.mts +1 -1
  51. package/components/export/ExportCsv.d.ts +1 -1
  52. package/components/export/ExportPrint.d.mts +1 -1
  53. package/components/export/ExportPrint.d.ts +1 -1
  54. package/components/filterPanel/FilterPanelTrigger.d.mts +1 -1
  55. package/components/filterPanel/FilterPanelTrigger.d.ts +1 -1
  56. package/components/filterPanel/FilterPanelTrigger.js +2 -2
  57. package/components/filterPanel/FilterPanelTrigger.mjs +2 -2
  58. package/components/menu/columnMenu/GridColumnHeaderMenu.d.mts +1 -1
  59. package/components/menu/columnMenu/GridColumnHeaderMenu.d.ts +1 -1
  60. package/components/panel/GridColumnsPanel.d.mts +1 -1
  61. package/components/panel/GridColumnsPanel.d.ts +1 -1
  62. package/components/panel/GridPanelContent.d.mts +1 -1
  63. package/components/panel/GridPanelContent.d.ts +1 -1
  64. package/components/panel/GridPanelContext.d.mts +9 -3
  65. package/components/panel/GridPanelContext.d.ts +9 -3
  66. package/components/panel/GridPanelContext.js +40 -7
  67. package/components/panel/GridPanelContext.mjs +40 -7
  68. package/components/panel/GridPanelFooter.d.mts +1 -1
  69. package/components/panel/GridPanelFooter.d.ts +1 -1
  70. package/components/panel/GridPanelHeader.d.mts +1 -1
  71. package/components/panel/GridPanelHeader.d.ts +1 -1
  72. package/components/panel/GridPanelWrapper.d.mts +1 -1
  73. package/components/panel/GridPanelWrapper.d.ts +1 -1
  74. package/components/panel/GridPreferencesPanel.js +4 -6
  75. package/components/panel/GridPreferencesPanel.mjs +4 -6
  76. package/components/panel/filterPanel/GridFilterForm.d.mts +2 -1
  77. package/components/panel/filterPanel/GridFilterForm.d.ts +2 -1
  78. package/components/panel/filterPanel/GridFilterPanel.d.mts +2 -2
  79. package/components/panel/filterPanel/GridFilterPanel.d.ts +2 -2
  80. package/components/quickFilter/QuickFilter.d.mts +2 -2
  81. package/components/quickFilter/QuickFilter.d.ts +2 -2
  82. package/components/quickFilter/QuickFilterClear.d.mts +2 -2
  83. package/components/quickFilter/QuickFilterClear.d.ts +2 -2
  84. package/components/quickFilter/QuickFilterControl.d.mts +2 -2
  85. package/components/quickFilter/QuickFilterControl.d.ts +2 -2
  86. package/components/quickFilter/QuickFilterTrigger.d.mts +2 -2
  87. package/components/quickFilter/QuickFilterTrigger.d.ts +2 -2
  88. package/components/toolbar/GridToolbar.d.mts +3 -3
  89. package/components/toolbar/GridToolbar.d.ts +3 -3
  90. package/components/toolbar/GridToolbarColumnsButton.js +2 -2
  91. package/components/toolbar/GridToolbarColumnsButton.mjs +2 -2
  92. package/components/toolbar/GridToolbarFilterButton.js +2 -2
  93. package/components/toolbar/GridToolbarFilterButton.mjs +2 -2
  94. package/components/toolbarV8/Toolbar.d.mts +1 -1
  95. package/components/toolbarV8/Toolbar.d.ts +1 -1
  96. package/components/toolbarV8/ToolbarButton.d.mts +1 -1
  97. package/components/toolbarV8/ToolbarButton.d.ts +1 -1
  98. package/components/virtualization/GridVirtualScrollerContent.d.mts +1 -1
  99. package/components/virtualization/GridVirtualScrollerContent.d.ts +1 -1
  100. package/components/virtualization/GridVirtualScrollerRenderZone.d.mts +1 -1
  101. package/components/virtualization/GridVirtualScrollerRenderZone.d.ts +1 -1
  102. package/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.js +7 -1
  103. package/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.mjs +7 -1
  104. package/hooks/features/columnGrouping/gridColumnGroupsUtils.d.mts +1 -1
  105. package/hooks/features/columnGrouping/gridColumnGroupsUtils.d.ts +1 -1
  106. package/hooks/features/columnHeaders/useGridColumnHeaders.d.mts +2 -1
  107. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +2 -1
  108. package/hooks/features/columnResize/useGridColumnResize.js +56 -2
  109. package/hooks/features/columnResize/useGridColumnResize.mjs +57 -3
  110. package/hooks/features/columns/gridColumnsSelector.d.mts +1 -1
  111. package/hooks/features/columns/gridColumnsSelector.d.ts +1 -1
  112. package/hooks/features/dimensions/useGridDimensions.js +3 -3
  113. package/hooks/features/dimensions/useGridDimensions.mjs +3 -3
  114. package/hooks/features/editing/gridEditingSelectors.d.mts +1 -1
  115. package/hooks/features/editing/gridEditingSelectors.d.ts +1 -1
  116. package/hooks/features/editing/gridEditingSelectors.mjs +0 -1
  117. package/hooks/features/editing/useGridCellEditing.js +14 -7
  118. package/hooks/features/editing/useGridCellEditing.mjs +14 -7
  119. package/hooks/features/editing/utils.d.mts +1 -1
  120. package/hooks/features/editing/utils.d.ts +1 -1
  121. package/hooks/features/editing/utils.js +1 -1
  122. package/hooks/features/editing/utils.mjs +1 -1
  123. package/hooks/features/filter/gridFilterState.d.mts +1 -1
  124. package/hooks/features/filter/gridFilterState.d.ts +1 -1
  125. package/hooks/features/filter/gridFilterUtils.d.mts +2 -2
  126. package/hooks/features/filter/gridFilterUtils.d.ts +2 -2
  127. package/hooks/features/focus/useGridFocus.js +2 -10
  128. package/hooks/features/focus/useGridFocus.mjs +2 -10
  129. package/hooks/features/rowSelection/useGridRowSelection.js +0 -3
  130. package/hooks/features/rowSelection/useGridRowSelection.mjs +0 -3
  131. package/hooks/features/rows/gridRowSpanningUtils.d.mts +1 -1
  132. package/hooks/features/rows/gridRowSpanningUtils.d.ts +1 -1
  133. package/hooks/features/rows/gridRowSpanningUtils.js +1 -1
  134. package/hooks/features/rows/gridRowSpanningUtils.mjs +1 -1
  135. package/hooks/features/rows/gridRowsUtils.d.mts +1 -1
  136. package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
  137. package/hooks/features/rows/gridRowsUtils.js +6 -4
  138. package/hooks/features/rows/gridRowsUtils.mjs +6 -4
  139. package/hooks/features/virtualization/useGridVirtualization.d.mts +1 -1
  140. package/hooks/features/virtualization/useGridVirtualization.d.ts +1 -1
  141. package/hooks/features/virtualization/useGridVirtualization.js +2 -2
  142. package/hooks/features/virtualization/useGridVirtualization.mjs +2 -2
  143. package/hooks/utils/useGridEvent.js +1 -1
  144. package/hooks/utils/useGridEvent.mjs +1 -1
  145. package/index.js +1 -1
  146. package/index.mjs +1 -1
  147. package/locales/arSD.d.mts +1 -1
  148. package/locales/arSD.d.ts +1 -1
  149. package/locales/beBY.d.mts +1 -1
  150. package/locales/beBY.d.ts +1 -1
  151. package/locales/bgBG.d.mts +1 -1
  152. package/locales/bgBG.d.ts +1 -1
  153. package/locales/bnBD.d.mts +1 -1
  154. package/locales/bnBD.d.ts +1 -1
  155. package/locales/caES.d.mts +1 -1
  156. package/locales/caES.d.ts +1 -1
  157. package/locales/csCZ.d.mts +1 -1
  158. package/locales/csCZ.d.ts +1 -1
  159. package/locales/daDK.d.mts +1 -1
  160. package/locales/daDK.d.ts +1 -1
  161. package/locales/deDE.d.mts +1 -1
  162. package/locales/deDE.d.ts +1 -1
  163. package/locales/elGR.d.mts +1 -1
  164. package/locales/elGR.d.ts +1 -1
  165. package/locales/enUS.d.mts +1 -1
  166. package/locales/enUS.d.ts +1 -1
  167. package/locales/esES.d.mts +1 -1
  168. package/locales/esES.d.ts +1 -1
  169. package/locales/faIR.d.mts +1 -1
  170. package/locales/faIR.d.ts +1 -1
  171. package/locales/fiFI.d.mts +1 -1
  172. package/locales/fiFI.d.ts +1 -1
  173. package/locales/frFR.d.mts +1 -1
  174. package/locales/frFR.d.ts +1 -1
  175. package/locales/heIL.d.mts +1 -1
  176. package/locales/heIL.d.ts +1 -1
  177. package/locales/huHU.d.mts +1 -1
  178. package/locales/huHU.d.ts +1 -1
  179. package/locales/hyAM.d.mts +1 -1
  180. package/locales/hyAM.d.ts +1 -1
  181. package/locales/idID.d.mts +1 -1
  182. package/locales/idID.d.ts +1 -1
  183. package/locales/isIS.d.mts +1 -1
  184. package/locales/isIS.d.ts +1 -1
  185. package/locales/itIT.d.mts +1 -1
  186. package/locales/itIT.d.ts +1 -1
  187. package/locales/jaJP.d.mts +1 -1
  188. package/locales/jaJP.d.ts +1 -1
  189. package/locales/jaJP.js +4 -5
  190. package/locales/jaJP.mjs +4 -5
  191. package/locales/koKR.d.mts +1 -1
  192. package/locales/koKR.d.ts +1 -1
  193. package/locales/nbNO.d.mts +1 -1
  194. package/locales/nbNO.d.ts +1 -1
  195. package/locales/nlNL.d.mts +1 -1
  196. package/locales/nlNL.d.ts +1 -1
  197. package/locales/nnNO.d.mts +1 -1
  198. package/locales/nnNO.d.ts +1 -1
  199. package/locales/plPL.d.mts +1 -1
  200. package/locales/plPL.d.ts +1 -1
  201. package/locales/ptBR.d.mts +1 -1
  202. package/locales/ptBR.d.ts +1 -1
  203. package/locales/ptPT.d.mts +1 -1
  204. package/locales/ptPT.d.ts +1 -1
  205. package/locales/roRO.d.mts +1 -1
  206. package/locales/roRO.d.ts +1 -1
  207. package/locales/ruRU.d.mts +1 -1
  208. package/locales/ruRU.d.ts +1 -1
  209. package/locales/skSK.d.mts +1 -1
  210. package/locales/skSK.d.ts +1 -1
  211. package/locales/svSE.d.mts +1 -1
  212. package/locales/svSE.d.ts +1 -1
  213. package/locales/thTH.d.mts +1 -1
  214. package/locales/thTH.d.ts +1 -1
  215. package/locales/trTR.d.mts +1 -1
  216. package/locales/trTR.d.ts +1 -1
  217. package/locales/ukUA.d.mts +1 -1
  218. package/locales/ukUA.d.ts +1 -1
  219. package/locales/urPK.d.mts +1 -1
  220. package/locales/urPK.d.ts +1 -1
  221. package/locales/viVN.d.mts +1 -1
  222. package/locales/viVN.d.ts +1 -1
  223. package/locales/zhCN.d.mts +1 -1
  224. package/locales/zhCN.d.ts +1 -1
  225. package/locales/zhTW.d.mts +1 -1
  226. package/locales/zhTW.d.ts +1 -1
  227. package/material/variables.d.mts +1 -1
  228. package/material/variables.d.ts +1 -1
  229. package/package.json +5 -4
  230. package/utils/createSelector.d.mts +1 -1
  231. package/utils/createSelector.d.ts +1 -1
  232. package/utils/focusElement.d.mts +9 -0
  233. package/utils/focusElement.d.ts +9 -0
  234. package/utils/focusElement.js +24 -0
  235. package/utils/focusElement.mjs +19 -0
  236. package/utils/isJSDOM.d.mts +0 -1
  237. package/utils/isJSDOM.d.ts +0 -1
  238. package/utils/isJSDOM.js +0 -7
  239. package/utils/isJSDOM.mjs +0 -1
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
- import { type RenderProp } from '@mui/x-internals/useComponentRenderer';
2
+ import type { RenderProp } from '@mui/x-internals/useComponentRenderer';
3
3
  import type { GridSlotProps } from "../../models/index.js";
4
- import { type QuickFilterState } from "./QuickFilterContext.js";
4
+ import type { QuickFilterState } from "./QuickFilterContext.js";
5
5
  export type QuickFilterClearProps = Omit<GridSlotProps['baseIconButton'], 'className'> & {
6
6
  /**
7
7
  * A function to customize rendering of the component.
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
- import { type RenderProp } from '@mui/x-internals/useComponentRenderer';
2
+ import type { RenderProp } from '@mui/x-internals/useComponentRenderer';
3
3
  import type { GridSlotProps } from "../../models/index.mjs";
4
- import { type QuickFilterState } from "./QuickFilterContext.mjs";
4
+ import type { QuickFilterState } from "./QuickFilterContext.mjs";
5
5
  export type QuickFilterControlProps = Omit<GridSlotProps['baseTextField'], 'className'> & {
6
6
  /**
7
7
  * A function to customize rendering of the component.
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
- import { type RenderProp } from '@mui/x-internals/useComponentRenderer';
2
+ import type { RenderProp } from '@mui/x-internals/useComponentRenderer';
3
3
  import type { GridSlotProps } from "../../models/index.js";
4
- import { type QuickFilterState } from "./QuickFilterContext.js";
4
+ import type { QuickFilterState } from "./QuickFilterContext.js";
5
5
  export type QuickFilterControlProps = Omit<GridSlotProps['baseTextField'], 'className'> & {
6
6
  /**
7
7
  * A function to customize rendering of the component.
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
- import { type RenderProp } from '@mui/x-internals/useComponentRenderer';
2
+ import type { RenderProp } from '@mui/x-internals/useComponentRenderer';
3
3
  import type { GridSlotProps } from "../../models/index.mjs";
4
- import { type QuickFilterState } from "./QuickFilterContext.mjs";
4
+ import type { QuickFilterState } from "./QuickFilterContext.mjs";
5
5
  export type QuickFilterTriggerProps = Omit<GridSlotProps['baseButton'], 'className'> & {
6
6
  /**
7
7
  * A function to customize rendering of the component.
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
- import { type RenderProp } from '@mui/x-internals/useComponentRenderer';
2
+ import type { RenderProp } from '@mui/x-internals/useComponentRenderer';
3
3
  import type { GridSlotProps } from "../../models/index.js";
4
- import { type QuickFilterState } from "./QuickFilterContext.js";
4
+ import type { QuickFilterState } from "./QuickFilterContext.js";
5
5
  export type QuickFilterTriggerProps = Omit<GridSlotProps['baseButton'], 'className'> & {
6
6
  /**
7
7
  * A function to customize rendering of the component.
@@ -1,6 +1,6 @@
1
- import { type GridToolbarContainerProps } from "../containers/GridToolbarContainer.mjs";
2
- import { type GridToolbarExportProps } from "./GridToolbarExport.mjs";
3
- import { type GridToolbarQuickFilterProps } from "./GridToolbarQuickFilter.mjs";
1
+ import type { GridToolbarContainerProps } from "../containers/GridToolbarContainer.mjs";
2
+ import type { GridToolbarExportProps } from "./GridToolbarExport.mjs";
3
+ import type { GridToolbarQuickFilterProps } from "./GridToolbarQuickFilter.mjs";
4
4
  export interface GridToolbarProps extends GridToolbarContainerProps, GridToolbarExportProps {
5
5
  /**
6
6
  * Show the history controls (undo/redo buttons).
@@ -1,6 +1,6 @@
1
- import { type GridToolbarContainerProps } from "../containers/GridToolbarContainer.js";
2
- import { type GridToolbarExportProps } from "./GridToolbarExport.js";
3
- import { type GridToolbarQuickFilterProps } from "./GridToolbarQuickFilter.js";
1
+ import type { GridToolbarContainerProps } from "../containers/GridToolbarContainer.js";
2
+ import type { GridToolbarExportProps } from "./GridToolbarExport.js";
3
+ import type { GridToolbarQuickFilterProps } from "./GridToolbarQuickFilter.js";
4
4
  export interface GridToolbarProps extends GridToolbarContainerProps, GridToolbarExportProps {
5
5
  /**
6
6
  * Show the history controls (undo/redo buttons).
@@ -34,10 +34,10 @@ const GridToolbarColumnsButton = exports.GridToolbarColumnsButton = (0, _forward
34
34
  const apiRef = (0, _useGridApiContext.useGridApiContext)();
35
35
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
36
36
  const {
37
- columnsPanelTriggerRef
37
+ triggers
38
38
  } = (0, _GridPanelContext.useGridPanelContext)();
39
39
  const preferencePanel = (0, _useGridSelector.useGridSelector)(apiRef, _gridPreferencePanelSelector.gridPreferencePanelStateSelector);
40
- const handleRef = (0, _useForkRef.default)(ref, columnsPanelTriggerRef);
40
+ const handleRef = (0, _useForkRef.default)(ref, triggers.columnsPanel.setRef);
41
41
  const showColumns = event => {
42
42
  if (preferencePanel.open && preferencePanel.openedPanelValue === _gridPreferencePanelsValue.GridPreferencePanelsValue.columns) {
43
43
  apiRef.current.hidePreferences();
@@ -27,10 +27,10 @@ const GridToolbarColumnsButton = forwardRef(function GridToolbarColumnsButton(pr
27
27
  const apiRef = useGridApiContext();
28
28
  const rootProps = useGridRootProps();
29
29
  const {
30
- columnsPanelTriggerRef
30
+ triggers
31
31
  } = useGridPanelContext();
32
32
  const preferencePanel = useGridSelector(apiRef, gridPreferencePanelStateSelector);
33
- const handleRef = useForkRef(ref, columnsPanelTriggerRef);
33
+ const handleRef = useForkRef(ref, triggers.columnsPanel.setRef);
34
34
  const showColumns = event => {
35
35
  if (preferencePanel.open && preferencePanel.openedPanelValue === GridPreferencePanelsValue.columns) {
36
36
  apiRef.current.hidePreferences();
@@ -62,9 +62,9 @@ const GridToolbarFilterButton = exports.GridToolbarFilterButton = (0, _forwardRe
62
62
  const filterButtonId = (0, _useId.default)();
63
63
  const filterPanelId = (0, _useId.default)();
64
64
  const {
65
- filterPanelTriggerRef
65
+ triggers
66
66
  } = (0, _GridPanelContext.useGridPanelContext)();
67
- const handleRef = (0, _useForkRef.default)(ref, filterPanelTriggerRef);
67
+ const handleRef = (0, _useForkRef.default)(ref, triggers.filterPanel.setRef);
68
68
  const tooltipContentNode = React.useMemo(() => {
69
69
  if (preferencePanel.open) {
70
70
  return apiRef.current.getLocaleText('toolbarFiltersTooltipHide');
@@ -55,9 +55,9 @@ const GridToolbarFilterButton = forwardRef(function GridToolbarFilterButton(prop
55
55
  const filterButtonId = useId();
56
56
  const filterPanelId = useId();
57
57
  const {
58
- filterPanelTriggerRef
58
+ triggers
59
59
  } = useGridPanelContext();
60
- const handleRef = useForkRef(ref, filterPanelTriggerRef);
60
+ const handleRef = useForkRef(ref, triggers.filterPanel.setRef);
61
61
  const tooltipContentNode = React.useMemo(() => {
62
62
  if (preferencePanel.open) {
63
63
  return apiRef.current.getLocaleText('toolbarFiltersTooltipHide');
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type RenderProp } from '@mui/x-internals/useComponentRenderer';
2
+ import type { RenderProp } from '@mui/x-internals/useComponentRenderer';
3
3
  export type ToolbarProps = React.HTMLAttributes<HTMLDivElement> & {
4
4
  /**
5
5
  * A function to customize rendering of the component.
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type RenderProp } from '@mui/x-internals/useComponentRenderer';
2
+ import type { RenderProp } from '@mui/x-internals/useComponentRenderer';
3
3
  export type ToolbarProps = React.HTMLAttributes<HTMLDivElement> & {
4
4
  /**
5
5
  * A function to customize rendering of the component.
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type RenderProp } from '@mui/x-internals/useComponentRenderer';
2
+ import type { RenderProp } from '@mui/x-internals/useComponentRenderer';
3
3
  import type { GridSlotProps } from "../../models/index.mjs";
4
4
  export type ToolbarButtonProps = GridSlotProps['baseIconButton'] & {
5
5
  /**
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type RenderProp } from '@mui/x-internals/useComponentRenderer';
2
+ import type { RenderProp } from '@mui/x-internals/useComponentRenderer';
3
3
  import type { GridSlotProps } from "../../models/index.js";
4
4
  export type ToolbarButtonProps = GridSlotProps['baseIconButton'] & {
5
5
  /**
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type SxProps, type Theme } from '@mui/system';
2
+ import type { SxProps, Theme } from '@mui/system';
3
3
  declare const GridVirtualScrollerContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
4
4
  sx?: SxProps<Theme>;
5
5
  }> | React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type SxProps, type Theme } from '@mui/system';
2
+ import type { SxProps, Theme } from '@mui/system';
3
3
  declare const GridVirtualScrollerContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
4
4
  sx?: SxProps<Theme>;
5
5
  }> | React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type SxProps, type Theme } from '@mui/system';
2
+ import type { SxProps, Theme } from '@mui/system';
3
3
  declare const GridVirtualScrollerRenderZone: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
4
4
  sx?: SxProps<Theme>;
5
5
  }> | React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type SxProps, type Theme } from '@mui/system';
2
+ import type { SxProps, Theme } from '@mui/system';
3
3
  declare const GridVirtualScrollerRenderZone: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
4
4
  sx?: SxProps<Theme>;
5
5
  }> | React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
@@ -10,7 +10,13 @@ var React = _interopRequireWildcard(require("react"));
10
10
  var _useFirstRender = require("../../utils/useFirstRender");
11
11
  const useGridRegisterStrategyProcessor = (apiRef, strategyName, group, processor) => {
12
12
  const registerPreProcessor = React.useCallback(() => {
13
- apiRef.current.registerStrategyProcessor(strategyName, group, processor);
13
+ // NOTE: the unregister fn is intentionally discarded. Unlike pipe processors
14
+ // (which are additive), a strategy processor is required for as long as its
15
+ // strategy is active — `applyStrategyProcessor` throws if the active strategy's
16
+ // processor is missing — so it must outlive the registering component. The cache
17
+ // keeps a single entry per (processor, strategy) and is reclaimed with the grid
18
+ // api, so nothing leaks; `void` documents the deliberate discard.
19
+ void apiRef.current.registerStrategyProcessor(strategyName, group, processor);
14
20
  }, [apiRef, processor, group, strategyName]);
15
21
  (0, _useFirstRender.useFirstRender)(() => {
16
22
  registerPreProcessor();
@@ -4,7 +4,13 @@ import * as React from 'react';
4
4
  import { useFirstRender } from "../../utils/useFirstRender.mjs";
5
5
  export const useGridRegisterStrategyProcessor = (apiRef, strategyName, group, processor) => {
6
6
  const registerPreProcessor = React.useCallback(() => {
7
- apiRef.current.registerStrategyProcessor(strategyName, group, processor);
7
+ // NOTE: the unregister fn is intentionally discarded. Unlike pipe processors
8
+ // (which are additive), a strategy processor is required for as long as its
9
+ // strategy is active — `applyStrategyProcessor` throws if the active strategy's
10
+ // processor is missing — so it must outlive the registering component. The cache
11
+ // keeps a single entry per (processor, strategy) and is reclaimed with the grid
12
+ // api, so nothing leaks; `void` documents the deliberate discard.
13
+ void apiRef.current.registerStrategyProcessor(strategyName, group, processor);
8
14
  }, [apiRef, processor, group, strategyName]);
9
15
  useFirstRender(() => {
10
16
  registerPreProcessor();
@@ -1,4 +1,4 @@
1
- import { type GridColumnGroupingModel, type GridColumnNode, type GridColumnGroup } from "../../../models/gridColumnGrouping.mjs";
1
+ import type { GridColumnGroupingModel, GridColumnNode, GridColumnGroup } from "../../../models/gridColumnGrouping.mjs";
2
2
  import type { GridColDef } from "../../../models/colDef/index.mjs";
3
3
  import type { GridColumnGroupLookup, GridGroupingStructure } from "./gridColumnGroupsInterfaces.mjs";
4
4
  type UnwrappedGroupingModel = {
@@ -1,4 +1,4 @@
1
- import { type GridColumnGroupingModel, type GridColumnNode, type GridColumnGroup } from "../../../models/gridColumnGrouping.js";
1
+ import type { GridColumnGroupingModel, GridColumnNode, GridColumnGroup } from "../../../models/gridColumnGrouping.js";
2
2
  import type { GridColDef } from "../../../models/colDef/index.js";
3
3
  import type { GridColumnGroupLookup, GridGroupingStructure } from "./gridColumnGroupsInterfaces.js";
4
4
  type UnwrappedGroupingModel = {
@@ -6,7 +6,8 @@ import type { GridSortColumnLookup } from "../sorting/index.mjs";
6
6
  import type { GridFilterActiveItemsLookup } from "../filter/index.mjs";
7
7
  import type { GridColumnGroupIdentifier, GridColumnIdentifier } from "../focus/index.mjs";
8
8
  import type { GridColumnMenuState } from "../columnMenu/index.mjs";
9
- import { type GridColumnVisibilityModel, gridColumnPositionsSelector } from "../columns/index.mjs";
9
+ import { gridColumnPositionsSelector } from "../columns/index.mjs";
10
+ import type { GridColumnVisibilityModel } from "../columns/index.mjs";
10
11
  import type { GridGroupingStructure } from "../columnGrouping/gridColumnGroupsInterfaces.mjs";
11
12
  import { PinnedColumnPosition } from "../../../internals/constants.mjs";
12
13
  export interface UseGridColumnHeadersProps {
@@ -6,7 +6,8 @@ import type { GridSortColumnLookup } from "../sorting/index.js";
6
6
  import type { GridFilterActiveItemsLookup } from "../filter/index.js";
7
7
  import type { GridColumnGroupIdentifier, GridColumnIdentifier } from "../focus/index.js";
8
8
  import type { GridColumnMenuState } from "../columnMenu/index.js";
9
- import { type GridColumnVisibilityModel, gridColumnPositionsSelector } from "../columns/index.js";
9
+ import { gridColumnPositionsSelector } from "../columns/index.js";
10
+ import type { GridColumnVisibilityModel } from "../columns/index.js";
10
11
  import type { GridGroupingStructure } from "../columnGrouping/gridColumnGroupsInterfaces.js";
11
12
  import { PinnedColumnPosition } from "../../../internals/constants.js";
12
13
  export interface UseGridColumnHeadersProps {
@@ -25,7 +25,30 @@ var _gridColumnsInterfaces = require("../columns/gridColumnsInterfaces");
25
25
  var _columns = require("../columns");
26
26
  var _dimensions = require("../dimensions");
27
27
  var _headerFiltering = require("../headerFiltering");
28
+ var _pagination = require("../pagination");
28
29
  var _columnResizeSelector = require("./columnResizeSelector");
30
+ function isRenderContextReadyForAutosizeOnMount(apiRef) {
31
+ const dimensions = (0, _dimensions.gridDimensionsSelector)(apiRef);
32
+ if (!dimensions.isReady) {
33
+ return false;
34
+ }
35
+ const {
36
+ rows
37
+ } = (0, _pagination.gridVisibleRowsSelector)(apiRef);
38
+ if (rows.length === 0) {
39
+ return true;
40
+ }
41
+ const renderContext = (0, _virtualization.gridRenderContextSelector)(apiRef);
42
+ if (renderContext.lastRowIndex <= renderContext.firstRowIndex) {
43
+ return false;
44
+ }
45
+
46
+ // If all rows fit in the viewport, wait for them all; otherwise we can only measure the rendered rows.
47
+ if (!dimensions.hasScrollY) {
48
+ return renderContext.firstRowIndex === 0 && renderContext.lastRowIndex >= rows.length;
49
+ }
50
+ return true;
51
+ }
29
52
  function trackFinger(event, currentTouchId) {
30
53
  if (currentTouchId !== undefined && event.changedTouches) {
31
54
  for (let i = 0; i < event.changedTouches.length; i += 1) {
@@ -589,10 +612,41 @@ const useGridColumnResize = (apiRef, props) => {
589
612
  React.useEffect(() => stopListening, [stopListening]);
590
613
  (0, _utils.useOnMount)(() => {
591
614
  if (props.autosizeOnMount) {
592
- Promise.resolve().then(() => {
615
+ let frameHandle;
616
+ let unsubscribeStateChange;
617
+ let unsubscribeRenderedRowsIntervalChange;
618
+ const cleanupListeners = () => {
619
+ unsubscribeStateChange?.();
620
+ unsubscribeRenderedRowsIntervalChange?.();
621
+ unsubscribeStateChange = undefined;
622
+ unsubscribeRenderedRowsIntervalChange = undefined;
623
+ };
624
+ const runAutosize = () => {
625
+ frameHandle = undefined;
626
+ cleanupListeners();
593
627
  apiRef.current.autosizeColumns(props.autosizeOptions);
594
- });
628
+ };
629
+ const scheduleAutosize = () => {
630
+ if (frameHandle === undefined) {
631
+ frameHandle = requestAnimationFrame(runAutosize);
632
+ }
633
+ };
634
+ const checkRenderContext = () => {
635
+ if (isRenderContextReadyForAutosizeOnMount(apiRef)) {
636
+ scheduleAutosize();
637
+ }
638
+ };
639
+ unsubscribeStateChange = apiRef.current.subscribeEvent('stateChange', checkRenderContext);
640
+ unsubscribeRenderedRowsIntervalChange = apiRef.current.subscribeEvent('renderedRowsIntervalChange', checkRenderContext);
641
+ checkRenderContext();
642
+ return () => {
643
+ cleanupListeners();
644
+ if (frameHandle !== undefined) {
645
+ cancelAnimationFrame(frameHandle);
646
+ }
647
+ };
595
648
  }
649
+ return undefined;
596
650
  });
597
651
  (0, _utils.useGridNativeEventListener)(apiRef, () => apiRef.current.columnHeadersContainerRef?.current, 'touchstart', handleTouchStart, {
598
652
  passive: true
@@ -10,7 +10,7 @@ import { findGridCellElementsFromCol, findGridElement, findLeftPinnedCellsAfterC
10
10
  import { DEFAULT_GRID_AUTOSIZE_OPTIONS } from "./gridColumnResizeApi.mjs";
11
11
  import { gridClasses } from "../../../constants/gridClasses.mjs";
12
12
  import { useGridEvent, useGridApiMethod, useGridEventPriority, useGridLogger, useGridNativeEventListener, useGridSelector, useOnMount } from "../../utils/index.mjs";
13
- import { gridVirtualizationColumnEnabledSelector } from "../virtualization/index.mjs";
13
+ import { gridRenderContextSelector, gridVirtualizationColumnEnabledSelector } from "../virtualization/index.mjs";
14
14
  import { createControllablePromise } from "../../../utils/createControllablePromise.mjs";
15
15
  import { clamp } from "../../../utils/utils.mjs";
16
16
  import { useTimeout } from "../../utils/useTimeout.mjs";
@@ -18,7 +18,30 @@ import { GridPinnedColumnPosition } from "../columns/gridColumnsInterfaces.mjs";
18
18
  import { gridColumnsStateSelector } from "../columns/index.mjs";
19
19
  import { gridDimensionsSelector } from "../dimensions/index.mjs";
20
20
  import { gridHeaderFilteringEnabledSelector } from "../headerFiltering/index.mjs";
21
+ import { gridVisibleRowsSelector } from "../pagination/index.mjs";
21
22
  import { gridResizingColumnFieldSelector } from "./columnResizeSelector.mjs";
23
+ function isRenderContextReadyForAutosizeOnMount(apiRef) {
24
+ const dimensions = gridDimensionsSelector(apiRef);
25
+ if (!dimensions.isReady) {
26
+ return false;
27
+ }
28
+ const {
29
+ rows
30
+ } = gridVisibleRowsSelector(apiRef);
31
+ if (rows.length === 0) {
32
+ return true;
33
+ }
34
+ const renderContext = gridRenderContextSelector(apiRef);
35
+ if (renderContext.lastRowIndex <= renderContext.firstRowIndex) {
36
+ return false;
37
+ }
38
+
39
+ // If all rows fit in the viewport, wait for them all; otherwise we can only measure the rendered rows.
40
+ if (!dimensions.hasScrollY) {
41
+ return renderContext.firstRowIndex === 0 && renderContext.lastRowIndex >= rows.length;
42
+ }
43
+ return true;
44
+ }
22
45
  function trackFinger(event, currentTouchId) {
23
46
  if (currentTouchId !== undefined && event.changedTouches) {
24
47
  for (let i = 0; i < event.changedTouches.length; i += 1) {
@@ -581,10 +604,41 @@ export const useGridColumnResize = (apiRef, props) => {
581
604
  React.useEffect(() => stopListening, [stopListening]);
582
605
  useOnMount(() => {
583
606
  if (props.autosizeOnMount) {
584
- Promise.resolve().then(() => {
607
+ let frameHandle;
608
+ let unsubscribeStateChange;
609
+ let unsubscribeRenderedRowsIntervalChange;
610
+ const cleanupListeners = () => {
611
+ unsubscribeStateChange?.();
612
+ unsubscribeRenderedRowsIntervalChange?.();
613
+ unsubscribeStateChange = undefined;
614
+ unsubscribeRenderedRowsIntervalChange = undefined;
615
+ };
616
+ const runAutosize = () => {
617
+ frameHandle = undefined;
618
+ cleanupListeners();
585
619
  apiRef.current.autosizeColumns(props.autosizeOptions);
586
- });
620
+ };
621
+ const scheduleAutosize = () => {
622
+ if (frameHandle === undefined) {
623
+ frameHandle = requestAnimationFrame(runAutosize);
624
+ }
625
+ };
626
+ const checkRenderContext = () => {
627
+ if (isRenderContextReadyForAutosizeOnMount(apiRef)) {
628
+ scheduleAutosize();
629
+ }
630
+ };
631
+ unsubscribeStateChange = apiRef.current.subscribeEvent('stateChange', checkRenderContext);
632
+ unsubscribeRenderedRowsIntervalChange = apiRef.current.subscribeEvent('renderedRowsIntervalChange', checkRenderContext);
633
+ checkRenderContext();
634
+ return () => {
635
+ cleanupListeners();
636
+ if (frameHandle !== undefined) {
637
+ cancelAnimationFrame(frameHandle);
638
+ }
639
+ };
587
640
  }
641
+ return undefined;
588
642
  });
589
643
  useGridNativeEventListener(apiRef, () => apiRef.current.columnHeadersContainerRef?.current, 'touchstart', handleTouchStart, {
590
644
  passive: true
@@ -1,5 +1,5 @@
1
1
  import type { GridStateCommunity } from "../../../models/gridStateCommunity.mjs";
2
- import { type GridColumnLookup, type GridPinnedColumnFields } from "./gridColumnsInterfaces.mjs";
2
+ import type { GridColumnLookup, GridPinnedColumnFields } from "./gridColumnsInterfaces.mjs";
3
3
  /**
4
4
  * Get the columns state
5
5
  * @category Columns
@@ -1,5 +1,5 @@
1
1
  import type { GridStateCommunity } from "../../../models/gridStateCommunity.js";
2
- import { type GridColumnLookup, type GridPinnedColumnFields } from "./gridColumnsInterfaces.js";
2
+ import type { GridColumnLookup, GridPinnedColumnFields } from "./gridColumnsInterfaces.js";
3
3
  /**
4
4
  * Get the columns state
5
5
  * @category Columns
@@ -10,6 +10,7 @@ exports.dimensionsStateInitializer = void 0;
10
10
  exports.useGridDimensions = useGridDimensions;
11
11
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
12
12
  var React = _interopRequireWildcard(require("react"));
13
+ var _platform = require("@base-ui/utils/platform");
13
14
  var _store = require("@mui/x-internals/store");
14
15
  var _useGridEvent = require("../../utils/useGridEvent");
15
16
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
@@ -22,7 +23,6 @@ var _gridRowsUtils = require("../rows/gridRowsUtils");
22
23
  var _gridColumnsUtils = require("../columns/gridColumnsUtils");
23
24
  var _dataGridPropsDefaultValues = require("../../../constants/dataGridPropsDefaultValues");
24
25
  var _roundToDecimalPlaces = require("../../../utils/roundToDecimalPlaces");
25
- var _isJSDOM = require("../../../utils/isJSDOM");
26
26
  const EMPTY_SIZE = {
27
27
  width: 0,
28
28
  height: 0
@@ -96,11 +96,11 @@ function useGridDimensions(apiRef, props) {
96
96
  if (!getRootDimensions().isReady) {
97
97
  return;
98
98
  }
99
- if (size.height === 0 && !errorShown.current && !props.autoHeight && !_isJSDOM.isJSDOM) {
99
+ if (size.height === 0 && !errorShown.current && !props.autoHeight && !_platform.platform.env.jsdom) {
100
100
  logger.error(['The parent DOM element of the Data Grid has an empty height.', 'Please make sure that this element has an intrinsic height.', 'The grid displays with a height of 0px.', '', 'More details: https://mui.com/r/x-data-grid-no-dimensions.'].join('\n'));
101
101
  errorShown.current = true;
102
102
  }
103
- if (size.width === 0 && !errorShown.current && !_isJSDOM.isJSDOM) {
103
+ if (size.width === 0 && !errorShown.current && !_platform.platform.env.jsdom) {
104
104
  logger.error(['The parent DOM element of the Data Grid has an empty width.', 'Please make sure that this element has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'More details: https://mui.com/r/x-data-grid-no-dimensions.'].join('\n'));
105
105
  errorShown.current = true;
106
106
  }
@@ -2,6 +2,7 @@
2
2
 
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import * as React from 'react';
5
+ import { platform } from '@base-ui/utils/platform';
5
6
  import { useStoreEffect } from '@mui/x-internals/store';
6
7
  import { useGridEventPriority } from "../../utils/useGridEvent.mjs";
7
8
  import { useGridApiMethod } from "../../utils/useGridApiMethod.mjs";
@@ -14,7 +15,6 @@ import { getValidRowHeight, rowHeightWarning } from "../rows/gridRowsUtils.mjs";
14
15
  import { getTotalHeaderHeight } from "../columns/gridColumnsUtils.mjs";
15
16
  import { DATA_GRID_PROPS_DEFAULT_VALUES } from "../../../constants/dataGridPropsDefaultValues.mjs";
16
17
  import { roundToDecimalPlaces } from "../../../utils/roundToDecimalPlaces.mjs";
17
- import { isJSDOM } from "../../../utils/isJSDOM.mjs";
18
18
  const EMPTY_SIZE = {
19
19
  width: 0,
20
20
  height: 0
@@ -87,11 +87,11 @@ export function useGridDimensions(apiRef, props) {
87
87
  if (!getRootDimensions().isReady) {
88
88
  return;
89
89
  }
90
- if (size.height === 0 && !errorShown.current && !props.autoHeight && !isJSDOM) {
90
+ if (size.height === 0 && !errorShown.current && !props.autoHeight && !platform.env.jsdom) {
91
91
  logger.error(['The parent DOM element of the Data Grid has an empty height.', 'Please make sure that this element has an intrinsic height.', 'The grid displays with a height of 0px.', '', 'More details: https://mui.com/r/x-data-grid-no-dimensions.'].join('\n'));
92
92
  errorShown.current = true;
93
93
  }
94
- if (size.width === 0 && !errorShown.current && !isJSDOM) {
94
+ if (size.width === 0 && !errorShown.current && !platform.env.jsdom) {
95
95
  logger.error(['The parent DOM element of the Data Grid has an empty width.', 'Please make sure that this element has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'More details: https://mui.com/r/x-data-grid-no-dimensions.'].join('\n'));
96
96
  errorShown.current = true;
97
97
  }
@@ -1,6 +1,6 @@
1
1
  import type { GridStateCommunity } from "../../../models/gridStateCommunity.mjs";
2
2
  import type { GridRowId } from "../../../models/gridRows.mjs";
3
- import { type GridEditMode } from "../../../models/gridEditRowModel.mjs";
3
+ import type { GridEditMode } from "../../../models/gridEditRowModel.mjs";
4
4
  /**
5
5
  * Select the row editing state.
6
6
  */
@@ -1,6 +1,6 @@
1
1
  import type { GridStateCommunity } from "../../../models/gridStateCommunity.js";
2
2
  import type { GridRowId } from "../../../models/gridRows.js";
3
- import { type GridEditMode } from "../../../models/gridEditRowModel.js";
3
+ import type { GridEditMode } from "../../../models/gridEditRowModel.js";
4
4
  /**
5
5
  * Select the row editing state.
6
6
  */
@@ -1,6 +1,5 @@
1
1
  import { createSelector, createRootSelector } from "../../../utils/createSelector.mjs";
2
2
  import { GridEditModes } from "../../../models/gridEditRowModel.mjs";
3
-
4
3
  /**
5
4
  * Select the row editing state.
6
5
  */
@@ -366,11 +366,14 @@ const useGridCellEditing = (apiRef, props) => {
366
366
  }
367
367
  } else if (processRowUpdate) {
368
368
  const handleError = errorThrown => {
369
- prevCellModesModel.current[id][field].mode = _gridEditRowModel.GridCellModes.Edit;
370
- // Revert the mode in the cellModesModel prop back to "edit"
371
- updateFieldInCellModesModel(id, field, {
372
- mode: _gridEditRowModel.GridCellModes.Edit
373
- });
369
+ // The row might have been deleted
370
+ if (prevCellModesModel.current[id]?.[field]) {
371
+ prevCellModesModel.current[id][field].mode = _gridEditRowModel.GridCellModes.Edit;
372
+ // Revert the mode in the cellModesModel prop back to "edit"
373
+ updateFieldInCellModesModel(id, field, {
374
+ mode: _gridEditRowModel.GridCellModes.Edit
375
+ });
376
+ }
374
377
  if (onProcessRowUpdateError) {
375
378
  onProcessRowUpdateError(errorThrown);
376
379
  } else if (process.env.NODE_ENV !== 'production') {
@@ -381,14 +384,18 @@ const useGridCellEditing = (apiRef, props) => {
381
384
  Promise.resolve(processRowUpdate(rowUpdate, row, {
382
385
  rowId: id
383
386
  })).then(finalRowUpdate => {
384
- apiRef.current.updateRows([finalRowUpdate]);
387
+ if (apiRef.current.getRow(id)) {
388
+ apiRef.current.updateRows([finalRowUpdate]);
389
+ }
385
390
  finishCellEditMode();
386
391
  }).catch(handleError);
387
392
  } catch (errorThrown) {
388
393
  handleError(errorThrown);
389
394
  }
390
395
  } else {
391
- apiRef.current.updateRows([rowUpdate]);
396
+ if (apiRef.current.getRow(id)) {
397
+ apiRef.current.updateRows([rowUpdate]);
398
+ }
392
399
  finishCellEditMode();
393
400
  }
394
401
  });
@@ -359,11 +359,14 @@ export const useGridCellEditing = (apiRef, props) => {
359
359
  }
360
360
  } else if (processRowUpdate) {
361
361
  const handleError = errorThrown => {
362
- prevCellModesModel.current[id][field].mode = GridCellModes.Edit;
363
- // Revert the mode in the cellModesModel prop back to "edit"
364
- updateFieldInCellModesModel(id, field, {
365
- mode: GridCellModes.Edit
366
- });
362
+ // The row might have been deleted
363
+ if (prevCellModesModel.current[id]?.[field]) {
364
+ prevCellModesModel.current[id][field].mode = GridCellModes.Edit;
365
+ // Revert the mode in the cellModesModel prop back to "edit"
366
+ updateFieldInCellModesModel(id, field, {
367
+ mode: GridCellModes.Edit
368
+ });
369
+ }
367
370
  if (onProcessRowUpdateError) {
368
371
  onProcessRowUpdateError(errorThrown);
369
372
  } else if (process.env.NODE_ENV !== 'production') {
@@ -374,14 +377,18 @@ export const useGridCellEditing = (apiRef, props) => {
374
377
  Promise.resolve(processRowUpdate(rowUpdate, row, {
375
378
  rowId: id
376
379
  })).then(finalRowUpdate => {
377
- apiRef.current.updateRows([finalRowUpdate]);
380
+ if (apiRef.current.getRow(id)) {
381
+ apiRef.current.updateRows([finalRowUpdate]);
382
+ }
378
383
  finishCellEditMode();
379
384
  }).catch(handleError);
380
385
  } catch (errorThrown) {
381
386
  handleError(errorThrown);
382
387
  }
383
388
  } else {
384
- apiRef.current.updateRows([rowUpdate]);
389
+ if (apiRef.current.getRow(id)) {
390
+ apiRef.current.updateRows([rowUpdate]);
391
+ }
385
392
  finishCellEditMode();
386
393
  }
387
394
  });
@@ -1,2 +1,2 @@
1
1
  import type { GridColDef } from "../../../models/colDef/gridColDef.mjs";
2
- export declare const getDefaultCellValue: (colDef: GridColDef) => false | "" | null | undefined;
2
+ export declare const getDefaultCellValue: (colDef: GridColDef) => false | "" | undefined;