@mui/x-data-grid 9.6.0 → 9.7.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 (233) hide show
  1. package/CHANGELOG.md +111 -1
  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/utils.d.mts +1 -1
  118. package/hooks/features/editing/utils.d.ts +1 -1
  119. package/hooks/features/editing/utils.js +1 -1
  120. package/hooks/features/editing/utils.mjs +1 -1
  121. package/hooks/features/filter/gridFilterState.d.mts +1 -1
  122. package/hooks/features/filter/gridFilterState.d.ts +1 -1
  123. package/hooks/features/filter/gridFilterUtils.d.mts +2 -2
  124. package/hooks/features/filter/gridFilterUtils.d.ts +2 -2
  125. package/hooks/features/focus/useGridFocus.js +2 -10
  126. package/hooks/features/focus/useGridFocus.mjs +2 -10
  127. package/hooks/features/rowSelection/useGridRowSelection.js +0 -3
  128. package/hooks/features/rowSelection/useGridRowSelection.mjs +0 -3
  129. package/hooks/features/rows/gridRowSpanningUtils.d.mts +1 -1
  130. package/hooks/features/rows/gridRowSpanningUtils.d.ts +1 -1
  131. package/hooks/features/rows/gridRowSpanningUtils.js +1 -1
  132. package/hooks/features/rows/gridRowSpanningUtils.mjs +1 -1
  133. package/hooks/features/rows/gridRowsUtils.d.mts +1 -1
  134. package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
  135. package/hooks/features/rows/gridRowsUtils.js +5 -3
  136. package/hooks/features/rows/gridRowsUtils.mjs +5 -3
  137. package/hooks/features/virtualization/useGridVirtualization.d.mts +1 -1
  138. package/hooks/features/virtualization/useGridVirtualization.d.ts +1 -1
  139. package/hooks/features/virtualization/useGridVirtualization.js +2 -2
  140. package/hooks/features/virtualization/useGridVirtualization.mjs +2 -2
  141. package/index.js +1 -1
  142. package/index.mjs +1 -1
  143. package/locales/arSD.d.mts +1 -1
  144. package/locales/arSD.d.ts +1 -1
  145. package/locales/beBY.d.mts +1 -1
  146. package/locales/beBY.d.ts +1 -1
  147. package/locales/bgBG.d.mts +1 -1
  148. package/locales/bgBG.d.ts +1 -1
  149. package/locales/bnBD.d.mts +1 -1
  150. package/locales/bnBD.d.ts +1 -1
  151. package/locales/caES.d.mts +1 -1
  152. package/locales/caES.d.ts +1 -1
  153. package/locales/csCZ.d.mts +1 -1
  154. package/locales/csCZ.d.ts +1 -1
  155. package/locales/daDK.d.mts +1 -1
  156. package/locales/daDK.d.ts +1 -1
  157. package/locales/deDE.d.mts +1 -1
  158. package/locales/deDE.d.ts +1 -1
  159. package/locales/elGR.d.mts +1 -1
  160. package/locales/elGR.d.ts +1 -1
  161. package/locales/enUS.d.mts +1 -1
  162. package/locales/enUS.d.ts +1 -1
  163. package/locales/esES.d.mts +1 -1
  164. package/locales/esES.d.ts +1 -1
  165. package/locales/faIR.d.mts +1 -1
  166. package/locales/faIR.d.ts +1 -1
  167. package/locales/fiFI.d.mts +1 -1
  168. package/locales/fiFI.d.ts +1 -1
  169. package/locales/frFR.d.mts +1 -1
  170. package/locales/frFR.d.ts +1 -1
  171. package/locales/heIL.d.mts +1 -1
  172. package/locales/heIL.d.ts +1 -1
  173. package/locales/huHU.d.mts +1 -1
  174. package/locales/huHU.d.ts +1 -1
  175. package/locales/hyAM.d.mts +1 -1
  176. package/locales/hyAM.d.ts +1 -1
  177. package/locales/idID.d.mts +1 -1
  178. package/locales/idID.d.ts +1 -1
  179. package/locales/isIS.d.mts +1 -1
  180. package/locales/isIS.d.ts +1 -1
  181. package/locales/itIT.d.mts +1 -1
  182. package/locales/itIT.d.ts +1 -1
  183. package/locales/jaJP.d.mts +1 -1
  184. package/locales/jaJP.d.ts +1 -1
  185. package/locales/koKR.d.mts +1 -1
  186. package/locales/koKR.d.ts +1 -1
  187. package/locales/nbNO.d.mts +1 -1
  188. package/locales/nbNO.d.ts +1 -1
  189. package/locales/nlNL.d.mts +1 -1
  190. package/locales/nlNL.d.ts +1 -1
  191. package/locales/nnNO.d.mts +1 -1
  192. package/locales/nnNO.d.ts +1 -1
  193. package/locales/plPL.d.mts +1 -1
  194. package/locales/plPL.d.ts +1 -1
  195. package/locales/ptBR.d.mts +1 -1
  196. package/locales/ptBR.d.ts +1 -1
  197. package/locales/ptPT.d.mts +1 -1
  198. package/locales/ptPT.d.ts +1 -1
  199. package/locales/roRO.d.mts +1 -1
  200. package/locales/roRO.d.ts +1 -1
  201. package/locales/ruRU.d.mts +1 -1
  202. package/locales/ruRU.d.ts +1 -1
  203. package/locales/skSK.d.mts +1 -1
  204. package/locales/skSK.d.ts +1 -1
  205. package/locales/svSE.d.mts +1 -1
  206. package/locales/svSE.d.ts +1 -1
  207. package/locales/thTH.d.mts +1 -1
  208. package/locales/thTH.d.ts +1 -1
  209. package/locales/trTR.d.mts +1 -1
  210. package/locales/trTR.d.ts +1 -1
  211. package/locales/ukUA.d.mts +1 -1
  212. package/locales/ukUA.d.ts +1 -1
  213. package/locales/urPK.d.mts +1 -1
  214. package/locales/urPK.d.ts +1 -1
  215. package/locales/viVN.d.mts +1 -1
  216. package/locales/viVN.d.ts +1 -1
  217. package/locales/zhCN.d.mts +1 -1
  218. package/locales/zhCN.d.ts +1 -1
  219. package/locales/zhTW.d.mts +1 -1
  220. package/locales/zhTW.d.ts +1 -1
  221. package/material/variables.d.mts +1 -1
  222. package/material/variables.d.ts +1 -1
  223. package/package.json +5 -4
  224. package/utils/createSelector.d.mts +1 -1
  225. package/utils/createSelector.d.ts +1 -1
  226. package/utils/focusElement.d.mts +9 -0
  227. package/utils/focusElement.d.ts +9 -0
  228. package/utils/focusElement.js +24 -0
  229. package/utils/focusElement.mjs +19 -0
  230. package/utils/isJSDOM.d.mts +0 -1
  231. package/utils/isJSDOM.d.ts +0 -1
  232. package/utils/isJSDOM.js +0 -7
  233. package/utils/isJSDOM.mjs +0 -1
@@ -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
  */
@@ -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;
@@ -1,2 +1,2 @@
1
1
  import type { GridColDef } from "../../../models/colDef/gridColDef.js";
2
- export declare const getDefaultCellValue: (colDef: GridColDef) => false | "" | null | undefined;
2
+ export declare const getDefaultCellValue: (colDef: GridColDef) => false | "" | undefined;
@@ -13,7 +13,7 @@ const getDefaultCellValue = colDef => {
13
13
  case 'number':
14
14
  return undefined;
15
15
  case 'singleSelect':
16
- return null;
16
+ return '';
17
17
  case 'string':
18
18
  default:
19
19
  return '';
@@ -7,7 +7,7 @@ export const getDefaultCellValue = colDef => {
7
7
  case 'number':
8
8
  return undefined;
9
9
  case 'singleSelect':
10
- return null;
10
+ return '';
11
11
  case 'string':
12
12
  default:
13
13
  return '';
@@ -1,4 +1,4 @@
1
- import { type GridFilterItem } from "../../../models/gridFilterItem.mjs";
1
+ import type { GridFilterItem } from "../../../models/gridFilterItem.mjs";
2
2
  import type { GridFilterModel } from "../../../models/gridFilterModel.mjs";
3
3
  import type { GridRowId, GridRowModel, GridValidRowModel } from "../../../models/gridRows.mjs";
4
4
  import type { GridColDef } from "../../../models/colDef/index.mjs";
@@ -1,4 +1,4 @@
1
- import { type GridFilterItem } from "../../../models/gridFilterItem.js";
1
+ import type { GridFilterItem } from "../../../models/gridFilterItem.js";
2
2
  import type { GridFilterModel } from "../../../models/gridFilterModel.js";
3
3
  import type { GridRowId, GridRowModel, GridValidRowModel } from "../../../models/gridRows.js";
4
4
  import type { GridColDef } from "../../../models/colDef/index.js";
@@ -1,8 +1,8 @@
1
1
  import type { RefObject } from '@mui/x-internals/types';
2
- import { type GridColDef, type GridFilterItem, type GridFilterModel, type GridRowModel } from "../../../models/index.mjs";
2
+ import type { GridColDef, GridFilterItem, GridFilterModel, GridRowModel } from "../../../models/index.mjs";
3
3
  import type { GridPrivateApiCommunity } from "../../../models/api/gridApiCommunity.mjs";
4
4
  import type { GridStateCommunity } from "../../../models/gridStateCommunity.mjs";
5
- import { type GridAggregatedFilterItemApplier, type GridFilterItemResult, type GridQuickFilterValueResult } from "./gridFilterState.mjs";
5
+ import type { GridAggregatedFilterItemApplier, GridFilterItemResult, GridQuickFilterValueResult } from "./gridFilterState.mjs";
6
6
  /**
7
7
  * Adds default values to the optional fields of a filter items.
8
8
  * @param {GridFilterItem} item The raw filter item.
@@ -1,8 +1,8 @@
1
1
  import type { RefObject } from '@mui/x-internals/types';
2
- import { type GridColDef, type GridFilterItem, type GridFilterModel, type GridRowModel } from "../../../models/index.js";
2
+ import type { GridColDef, GridFilterItem, GridFilterModel, GridRowModel } from "../../../models/index.js";
3
3
  import type { GridPrivateApiCommunity } from "../../../models/api/gridApiCommunity.js";
4
4
  import type { GridStateCommunity } from "../../../models/gridStateCommunity.js";
5
- import { type GridAggregatedFilterItemApplier, type GridFilterItemResult, type GridQuickFilterValueResult } from "./gridFilterState.js";
5
+ import type { GridAggregatedFilterItemApplier, GridFilterItemResult, GridQuickFilterValueResult } from "./gridFilterState.js";
6
6
  /**
7
7
  * Adds default values to the optional fields of a filter items.
8
8
  * @param {GridFilterItem} item The raw filter item.
@@ -18,7 +18,7 @@ var _useGridLogger = require("../../utils/useGridLogger");
18
18
  var _useGridEvent = require("../../utils/useGridEvent");
19
19
  var _keyboardUtils = require("../../../utils/keyboardUtils");
20
20
  var _gridFocusStateSelector = require("./gridFocusStateSelector");
21
- var _doesSupportPreventScroll = require("../../../utils/doesSupportPreventScroll");
21
+ var _focusElement = require("../../../utils/focusElement");
22
22
  var _gridColumnsSelector = require("../columns/gridColumnsSelector");
23
23
  var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
24
24
  var _utils = require("../../../utils/utils");
@@ -87,15 +87,7 @@ const useGridFocus = (apiRef, props) => {
87
87
  if (cellElement.contains(doc.activeElement)) {
88
88
  return;
89
89
  }
90
- if ((0, _doesSupportPreventScroll.doesSupportPreventScroll)()) {
91
- cellElement.focus({
92
- preventScroll: true
93
- });
94
- } else {
95
- const scrollPosition = apiRef.current.getScrollPosition();
96
- cellElement.focus();
97
- apiRef.current.scroll(scrollPosition);
98
- }
90
+ (0, _focusElement.focusElement)(cellElement, apiRef);
99
91
  return;
100
92
  }
101
93
  apiRef.current.setState(state => {
@@ -11,7 +11,7 @@ import { useGridLogger } from "../../utils/useGridLogger.mjs";
11
11
  import { useGridEvent } from "../../utils/useGridEvent.mjs";
12
12
  import { isNavigationKey, isPasteShortcut } from "../../../utils/keyboardUtils.mjs";
13
13
  import { gridFocusCellSelector, gridFocusColumnGroupHeaderSelector } from "./gridFocusStateSelector.mjs";
14
- import { doesSupportPreventScroll } from "../../../utils/doesSupportPreventScroll.mjs";
14
+ import { focusElement } from "../../../utils/focusElement.mjs";
15
15
  import { gridVisibleColumnDefinitionsSelector } from "../columns/gridColumnsSelector.mjs";
16
16
  import { getVisibleRows } from "../../utils/useGridVisibleRows.mjs";
17
17
  import { clamp } from "../../../utils/utils.mjs";
@@ -79,15 +79,7 @@ export const useGridFocus = (apiRef, props) => {
79
79
  if (cellElement.contains(doc.activeElement)) {
80
80
  return;
81
81
  }
82
- if (doesSupportPreventScroll()) {
83
- cellElement.focus({
84
- preventScroll: true
85
- });
86
- } else {
87
- const scrollPosition = apiRef.current.getScrollPosition();
88
- cellElement.focus();
89
- apiRef.current.scroll(scrollPosition);
90
- }
82
+ focusElement(cellElement, apiRef);
91
83
  return;
92
84
  }
93
85
  apiRef.current.setState(state => {
@@ -615,9 +615,6 @@ You need to upgrade to DataGridPro or DataGridPremium component to unlock multip
615
615
  apiRef.current.setRowSelectionModel(emptyModel);
616
616
  }
617
617
  }, [apiRef, canHaveMultipleSelection, checkboxSelection, isStateControlled, props.rowSelection]);
618
- React.useEffect(() => {
619
- (0, _utils2.runIf)(props.rowSelection, removeOutdatedSelection);
620
- }, [props.rowSelection, removeOutdatedSelection]);
621
618
  React.useEffect(() => {
622
619
  if (isFirstRender.current) {
623
620
  isFirstRender.current = false;
@@ -607,9 +607,6 @@ You need to upgrade to DataGridPro or DataGridPremium component to unlock multip
607
607
  apiRef.current.setRowSelectionModel(emptyModel);
608
608
  }
609
609
  }, [apiRef, canHaveMultipleSelection, checkboxSelection, isStateControlled, props.rowSelection]);
610
- React.useEffect(() => {
611
- runIf(props.rowSelection, removeOutdatedSelection);
612
- }, [props.rowSelection, removeOutdatedSelection]);
613
610
  React.useEffect(() => {
614
611
  if (isFirstRender.current) {
615
612
  isFirstRender.current = false;
@@ -6,4 +6,4 @@ import type { GridApiCommunity } from "../../../models/api/gridApiCommunity.mjs"
6
6
  import type { RowRange } from "./useGridRowSpanning.mjs";
7
7
  export declare function getUnprocessedRange(testRange: RowRange, processedRange: RowRange): RowRange | null;
8
8
  export declare function isRowContextInitialized(renderContext: GridRenderContext): boolean;
9
- export declare const getCellValue: (row: GridValidRowModel, colDef: GridColDef, apiRef: RefObject<GridApiCommunity>) => any;
9
+ export declare const getCellValue: (row: GridValidRowModel, colDef: GridColDef | undefined, apiRef: RefObject<GridApiCommunity>) => any;
@@ -6,4 +6,4 @@ import type { GridApiCommunity } from "../../../models/api/gridApiCommunity.js";
6
6
  import type { RowRange } from "./useGridRowSpanning.js";
7
7
  export declare function getUnprocessedRange(testRange: RowRange, processedRange: RowRange): RowRange | null;
8
8
  export declare function isRowContextInitialized(renderContext: GridRenderContext): boolean;
9
- export declare const getCellValue: (row: GridValidRowModel, colDef: GridColDef, apiRef: RefObject<GridApiCommunity>) => any;
9
+ export declare const getCellValue: (row: GridValidRowModel, colDef: GridColDef | undefined, apiRef: RefObject<GridApiCommunity>) => any;
@@ -36,7 +36,7 @@ function isRowContextInitialized(renderContext) {
36
36
  return renderContext.firstRowIndex !== 0 || renderContext.lastRowIndex !== 0;
37
37
  }
38
38
  const getCellValue = (row, colDef, apiRef) => {
39
- if (!row) {
39
+ if (!row || !colDef) {
40
40
  return null;
41
41
  }
42
42
  const cellValue = row[colDef.field];
@@ -28,7 +28,7 @@ export function isRowContextInitialized(renderContext) {
28
28
  return renderContext.firstRowIndex !== 0 || renderContext.lastRowIndex !== 0;
29
29
  }
30
30
  export const getCellValue = (row, colDef, apiRef) => {
31
- if (!row) {
31
+ if (!row || !colDef) {
32
32
  return null;
33
33
  }
34
34
  const cellValue = row[colDef.field];
@@ -14,7 +14,7 @@ export declare const buildRootGroup: () => GridGroupNode;
14
14
  */
15
15
  export declare function checkGridRowIdIsValid(id: GridRowId, row: GridRowModel | Partial<GridRowModel>, detailErrorMessage?: string): void;
16
16
  export declare const getRowIdFromRowModel: (rowModel: GridRowModel, getRowId?: GridRowIdGetter, detailErrorMessage?: string) => GridRowId;
17
- export declare const getRowValue: (row: GridValidRowModel, colDef: GridColDef, apiRef: RefObject<GridApiCommunity>) => any;
17
+ export declare const getRowValue: (row: GridValidRowModel, colDef: GridColDef | undefined, apiRef: RefObject<GridApiCommunity>) => any;
18
18
  export declare const createRowsInternalCache: ({
19
19
  rows,
20
20
  getRowId,
@@ -14,7 +14,7 @@ export declare const buildRootGroup: () => GridGroupNode;
14
14
  */
15
15
  export declare function checkGridRowIdIsValid(id: GridRowId, row: GridRowModel | Partial<GridRowModel>, detailErrorMessage?: string): void;
16
16
  export declare const getRowIdFromRowModel: (rowModel: GridRowModel, getRowId?: GridRowIdGetter, detailErrorMessage?: string) => GridRowId;
17
- export declare const getRowValue: (row: GridValidRowModel, colDef: GridColDef, apiRef: RefObject<GridApiCommunity>) => any;
17
+ export declare const getRowValue: (row: GridValidRowModel, colDef: GridColDef | undefined, apiRef: RefObject<GridApiCommunity>) => any;
18
18
  export declare const createRowsInternalCache: ({
19
19
  rows,
20
20
  getRowId,