@mui/x-data-grid 7.24.0 → 7.25.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 (228) hide show
  1. package/CHANGELOG.md +148 -0
  2. package/DataGrid/DataGrid.js +1 -7
  3. package/DataGrid/useDataGridComponent.d.ts +2 -1
  4. package/components/GridRow.d.ts +0 -1
  5. package/components/GridRow.js +25 -19
  6. package/components/cell/GridCell.d.ts +9 -6
  7. package/components/cell/GridCell.js +29 -52
  8. package/components/columnHeaders/GridColumnHeaderFilterIconButton.d.ts +3 -3
  9. package/components/columnHeaders/GridColumnHeaderFilterIconButton.js +21 -7
  10. package/components/containers/GridRootStyles.js +135 -37
  11. package/components/panel/GridPanel.js +2 -1
  12. package/components/panel/filterPanel/GridFilterInputValueProps.d.ts +2 -1
  13. package/components/toolbar/GridToolbarColumnsButton.js +8 -2
  14. package/components/toolbar/GridToolbarDensitySelector.js +2 -2
  15. package/components/toolbar/GridToolbarExportContainer.js +2 -2
  16. package/components/toolbar/GridToolbarFilterButton.js +8 -2
  17. package/components/virtualization/GridMainContainer.d.ts +10 -0
  18. package/components/virtualization/GridMainContainer.js +10 -2
  19. package/components/virtualization/GridVirtualScrollbar.d.ts +4 -0
  20. package/components/virtualization/GridVirtualScrollbar.js +5 -5
  21. package/components/virtualization/GridVirtualScroller.js +18 -5
  22. package/components/virtualization/GridVirtualScrollerContent.js +11 -2
  23. package/context/GridContextProvider.d.ts +2 -1
  24. package/hooks/core/pipeProcessing/useGridPipeProcessing.d.ts +2 -2
  25. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +2 -2
  26. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +2 -2
  27. package/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.d.ts +2 -2
  28. package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +2 -2
  29. package/hooks/core/useGridApiInitialization.d.ts +2 -2
  30. package/hooks/core/useGridInitialization.d.ts +2 -2
  31. package/hooks/core/useGridIsRtl.d.ts +2 -2
  32. package/hooks/core/useGridLocaleText.d.ts +2 -2
  33. package/hooks/core/useGridLoggerFactory.d.ts +2 -2
  34. package/hooks/core/useGridRefs.d.ts +2 -2
  35. package/hooks/core/useGridStateInitialization.d.ts +2 -2
  36. package/hooks/features/clipboard/useGridClipboard.d.ts +2 -2
  37. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +2 -2
  38. package/hooks/features/columnMenu/useGridColumnMenu.d.ts +2 -2
  39. package/hooks/features/columnMenu/useGridColumnMenu.js +0 -2
  40. package/hooks/features/columnResize/useGridColumnResize.d.ts +2 -2
  41. package/hooks/features/columnResize/useGridColumnResize.js +2 -1
  42. package/hooks/features/columns/gridColumnsUtils.d.ts +4 -4
  43. package/hooks/features/columns/useGridColumnSpanning.d.ts +2 -2
  44. package/hooks/features/columns/useGridColumns.d.ts +2 -2
  45. package/hooks/features/columns/useGridColumns.js +7 -3
  46. package/hooks/features/density/useGridDensity.d.ts +2 -2
  47. package/hooks/features/dimensions/useGridDimensions.d.ts +2 -2
  48. package/hooks/features/dimensions/useGridDimensions.js +7 -11
  49. package/hooks/features/editing/gridEditingSelectors.d.ts +6 -0
  50. package/hooks/features/editing/gridEditingSelectors.js +7 -1
  51. package/hooks/features/editing/index.d.ts +1 -1
  52. package/hooks/features/editing/index.js +1 -1
  53. package/hooks/features/editing/useGridCellEditing.d.ts +2 -2
  54. package/hooks/features/editing/useGridCellEditing.js +3 -3
  55. package/hooks/features/editing/useGridEditing.d.ts +2 -2
  56. package/hooks/features/editing/useGridRowEditing.d.ts +2 -2
  57. package/hooks/features/editing/useGridRowEditing.js +5 -6
  58. package/hooks/features/events/useGridEvents.d.ts +2 -2
  59. package/hooks/features/export/serializers/csvSerializer.d.ts +2 -1
  60. package/hooks/features/export/useGridCsvExport.d.ts +2 -2
  61. package/hooks/features/export/useGridPrintExport.d.ts +2 -2
  62. package/hooks/features/export/utils.d.ts +2 -2
  63. package/hooks/features/filter/gridFilterUtils.d.ts +7 -7
  64. package/hooks/features/filter/gridFilterUtils.js +3 -3
  65. package/hooks/features/filter/useGridFilter.d.ts +2 -2
  66. package/hooks/features/focus/useGridFocus.d.ts +2 -2
  67. package/hooks/features/focus/useGridFocus.js +3 -2
  68. package/hooks/features/headerFiltering/useGridHeaderFiltering.d.ts +2 -2
  69. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +2 -2
  70. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +24 -16
  71. package/hooks/features/keyboardNavigation/utils.d.ts +3 -4
  72. package/hooks/features/keyboardNavigation/utils.js +0 -5
  73. package/hooks/features/listView/useGridListView.d.ts +2 -2
  74. package/hooks/features/listView/useGridListView.js +2 -1
  75. package/hooks/features/pagination/useGridPagination.d.ts +2 -2
  76. package/hooks/features/pagination/useGridPaginationMeta.d.ts +2 -2
  77. package/hooks/features/pagination/useGridPaginationModel.d.ts +2 -2
  78. package/hooks/features/pagination/useGridRowCount.d.ts +2 -2
  79. package/hooks/features/preferencesPanel/gridPreferencePanelSelector.d.ts +1 -0
  80. package/hooks/features/preferencesPanel/gridPreferencePanelSelector.js +8 -1
  81. package/hooks/features/preferencesPanel/index.d.ts +1 -1
  82. package/hooks/features/preferencesPanel/index.js +1 -1
  83. package/hooks/features/preferencesPanel/useGridPreferencesPanel.d.ts +2 -2
  84. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +14 -38
  85. package/hooks/features/rowSelection/useGridRowSelection.d.ts +2 -2
  86. package/hooks/features/rowSelection/useGridRowSelection.js +3 -3
  87. package/hooks/features/rowSelection/useGridRowSelectionPreProcessors.d.ts +2 -2
  88. package/hooks/features/rowSelection/utils.d.ts +3 -2
  89. package/hooks/features/rows/gridRowSpanningUtils.d.ts +2 -2
  90. package/hooks/features/rows/gridRowsUtils.d.ts +4 -4
  91. package/hooks/features/rows/useGridParamsApi.d.ts +2 -2
  92. package/hooks/features/rows/useGridParamsApi.js +33 -14
  93. package/hooks/features/rows/useGridRowSpanning.d.ts +2 -2
  94. package/hooks/features/rows/useGridRowSpanning.js +94 -91
  95. package/hooks/features/rows/useGridRows.d.ts +2 -2
  96. package/hooks/features/rows/useGridRows.js +7 -8
  97. package/hooks/features/rows/useGridRowsMeta.d.ts +2 -2
  98. package/hooks/features/rows/useGridRowsMeta.js +3 -2
  99. package/hooks/features/rows/useGridRowsPreProcessors.d.ts +2 -2
  100. package/hooks/features/scroll/useGridScroll.d.ts +2 -2
  101. package/hooks/features/sorting/gridSortingUtils.d.ts +3 -3
  102. package/hooks/features/sorting/gridSortingUtils.js +2 -2
  103. package/hooks/features/sorting/useGridSorting.d.ts +2 -2
  104. package/hooks/features/statePersistence/useGridStatePersistence.d.ts +2 -2
  105. package/hooks/features/virtualization/gridFocusedVirtualCellSelector.js +2 -2
  106. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +9 -1
  107. package/hooks/features/virtualization/useGridVirtualScroller.js +32 -53
  108. package/hooks/features/virtualization/useGridVirtualization.d.ts +2 -2
  109. package/hooks/utils/useGridApiContext.d.ts +2 -2
  110. package/hooks/utils/useGridApiEventHandler.d.ts +4 -4
  111. package/hooks/utils/useGridApiMethod.d.ts +2 -2
  112. package/hooks/utils/useGridApiRef.d.ts +2 -2
  113. package/hooks/utils/useGridApiRef.js +3 -1
  114. package/hooks/utils/useGridInitializeState.d.ts +3 -3
  115. package/hooks/utils/useGridLogger.d.ts +2 -2
  116. package/hooks/utils/useGridNativeEventListener.d.ts +2 -1
  117. package/hooks/utils/useGridPrivateApiContext.d.ts +2 -1
  118. package/hooks/utils/useGridSelector.d.ts +3 -3
  119. package/hooks/utils/useGridVisibleRows.d.ts +3 -3
  120. package/index.js +1 -1
  121. package/locales/faIR.js +5 -6
  122. package/models/api/gridApiCommon.d.ts +2 -2
  123. package/models/api/gridParamsApi.d.ts +29 -2
  124. package/models/api/index.d.ts +1 -1
  125. package/models/api/index.js +0 -1
  126. package/models/colDef/gridColDef.d.ts +9 -8
  127. package/models/gridExport.d.ts +2 -2
  128. package/models/gridFilterOperator.d.ts +2 -1
  129. package/models/props/DataGridProps.d.ts +2 -1
  130. package/modern/DataGrid/DataGrid.js +1 -7
  131. package/modern/components/GridRow.js +25 -19
  132. package/modern/components/cell/GridCell.js +29 -52
  133. package/modern/components/columnHeaders/GridColumnHeaderFilterIconButton.js +21 -7
  134. package/modern/components/containers/GridRootStyles.js +135 -37
  135. package/modern/components/panel/GridPanel.js +2 -1
  136. package/modern/components/toolbar/GridToolbarColumnsButton.js +8 -2
  137. package/modern/components/toolbar/GridToolbarDensitySelector.js +2 -2
  138. package/modern/components/toolbar/GridToolbarExportContainer.js +2 -2
  139. package/modern/components/toolbar/GridToolbarFilterButton.js +8 -2
  140. package/modern/components/virtualization/GridMainContainer.js +10 -2
  141. package/modern/components/virtualization/GridVirtualScrollbar.js +5 -5
  142. package/modern/components/virtualization/GridVirtualScroller.js +18 -5
  143. package/modern/components/virtualization/GridVirtualScrollerContent.js +11 -2
  144. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +0 -2
  145. package/modern/hooks/features/columnResize/useGridColumnResize.js +2 -1
  146. package/modern/hooks/features/columns/useGridColumns.js +7 -3
  147. package/modern/hooks/features/dimensions/useGridDimensions.js +7 -11
  148. package/modern/hooks/features/editing/gridEditingSelectors.js +7 -1
  149. package/modern/hooks/features/editing/index.js +1 -1
  150. package/modern/hooks/features/editing/useGridCellEditing.js +3 -3
  151. package/modern/hooks/features/editing/useGridRowEditing.js +5 -6
  152. package/modern/hooks/features/filter/gridFilterUtils.js +3 -3
  153. package/modern/hooks/features/focus/useGridFocus.js +3 -2
  154. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +24 -16
  155. package/modern/hooks/features/keyboardNavigation/utils.js +0 -5
  156. package/modern/hooks/features/listView/useGridListView.js +2 -1
  157. package/modern/hooks/features/preferencesPanel/gridPreferencePanelSelector.js +8 -1
  158. package/modern/hooks/features/preferencesPanel/index.js +1 -1
  159. package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +14 -38
  160. package/modern/hooks/features/rowSelection/useGridRowSelection.js +3 -3
  161. package/modern/hooks/features/rows/useGridParamsApi.js +33 -14
  162. package/modern/hooks/features/rows/useGridRowSpanning.js +94 -91
  163. package/modern/hooks/features/rows/useGridRows.js +7 -8
  164. package/modern/hooks/features/rows/useGridRowsMeta.js +3 -2
  165. package/modern/hooks/features/sorting/gridSortingUtils.js +2 -2
  166. package/modern/hooks/features/virtualization/gridFocusedVirtualCellSelector.js +2 -2
  167. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +32 -53
  168. package/modern/hooks/utils/useGridApiRef.js +3 -1
  169. package/modern/index.js +1 -1
  170. package/modern/locales/faIR.js +5 -6
  171. package/modern/models/api/index.js +0 -1
  172. package/modern/utils/isJSDOM.js +1 -0
  173. package/modern/utils/roundToDecimalPlaces.js +3 -0
  174. package/modern/utils/utils.js +6 -1
  175. package/node/DataGrid/DataGrid.js +1 -7
  176. package/node/components/GridRow.js +22 -16
  177. package/node/components/cell/GridCell.js +27 -50
  178. package/node/components/columnHeaders/GridColumnHeaderFilterIconButton.js +20 -6
  179. package/node/components/containers/GridRootStyles.js +135 -37
  180. package/node/components/panel/GridPanel.js +2 -1
  181. package/node/components/toolbar/GridToolbarColumnsButton.js +8 -2
  182. package/node/components/toolbar/GridToolbarDensitySelector.js +2 -2
  183. package/node/components/toolbar/GridToolbarExportContainer.js +2 -2
  184. package/node/components/toolbar/GridToolbarFilterButton.js +8 -2
  185. package/node/components/virtualization/GridMainContainer.js +10 -2
  186. package/node/components/virtualization/GridVirtualScrollbar.js +5 -5
  187. package/node/components/virtualization/GridVirtualScroller.js +18 -5
  188. package/node/components/virtualization/GridVirtualScrollerContent.js +11 -2
  189. package/node/hooks/features/columnMenu/useGridColumnMenu.js +0 -2
  190. package/node/hooks/features/columnResize/useGridColumnResize.js +2 -1
  191. package/node/hooks/features/columns/useGridColumns.js +7 -3
  192. package/node/hooks/features/dimensions/useGridDimensions.js +9 -13
  193. package/node/hooks/features/editing/gridEditingSelectors.js +8 -2
  194. package/node/hooks/features/editing/index.js +7 -11
  195. package/node/hooks/features/editing/useGridCellEditing.js +2 -2
  196. package/node/hooks/features/editing/useGridRowEditing.js +3 -4
  197. package/node/hooks/features/filter/gridFilterUtils.js +3 -3
  198. package/node/hooks/features/focus/useGridFocus.js +3 -2
  199. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +24 -15
  200. package/node/hooks/features/keyboardNavigation/utils.js +0 -6
  201. package/node/hooks/features/listView/useGridListView.js +2 -1
  202. package/node/hooks/features/preferencesPanel/gridPreferencePanelSelector.js +9 -2
  203. package/node/hooks/features/preferencesPanel/index.js +11 -10
  204. package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +14 -38
  205. package/node/hooks/features/rowSelection/useGridRowSelection.js +2 -2
  206. package/node/hooks/features/rows/useGridParamsApi.js +33 -14
  207. package/node/hooks/features/rows/useGridRowSpanning.js +92 -89
  208. package/node/hooks/features/rows/useGridRows.js +7 -8
  209. package/node/hooks/features/rows/useGridRowsMeta.js +5 -4
  210. package/node/hooks/features/sorting/gridSortingUtils.js +2 -2
  211. package/node/hooks/features/virtualization/gridFocusedVirtualCellSelector.js +2 -2
  212. package/node/hooks/features/virtualization/useGridVirtualScroller.js +34 -55
  213. package/node/hooks/utils/useGridApiRef.js +3 -1
  214. package/node/index.js +1 -1
  215. package/node/locales/faIR.js +5 -6
  216. package/node/models/api/index.js +0 -11
  217. package/node/utils/isJSDOM.js +7 -0
  218. package/node/utils/roundToDecimalPlaces.js +9 -0
  219. package/node/utils/utils.js +8 -1
  220. package/package.json +2 -2
  221. package/utils/createSelector.d.ts +3 -3
  222. package/utils/getPublicApiRef.d.ts +2 -1
  223. package/utils/isJSDOM.d.ts +1 -0
  224. package/utils/isJSDOM.js +1 -0
  225. package/utils/roundToDecimalPlaces.d.ts +1 -0
  226. package/utils/roundToDecimalPlaces.js +3 -0
  227. package/utils/utils.d.ts +1 -0
  228. package/utils/utils.js +6 -1
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiCommon } from '../../models/api/gridApiCommon';
3
3
  import { DataGridProcessedProps } from '../../models/props/DataGridProps';
4
- export declare const useGridLocaleText: (apiRef: React.RefObject<GridPrivateApiCommon>, props: Pick<DataGridProcessedProps, "localeText">) => void;
4
+ export declare const useGridLocaleText: (apiRef: RefObject<GridPrivateApiCommon>, props: Pick<DataGridProcessedProps, "localeText">) => void;
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiCommon } from '../../models/api/gridApiCommon';
3
3
  import { DataGridProcessedProps } from '../../models/props/DataGridProps';
4
- export declare const useGridLoggerFactory: (apiRef: React.RefObject<GridPrivateApiCommon>, props: Pick<DataGridProcessedProps, "logger" | "logLevel">) => void;
4
+ export declare const useGridLoggerFactory: (apiRef: RefObject<GridPrivateApiCommon>, props: Pick<DataGridProcessedProps, "logger" | "logLevel">) => void;
@@ -1,3 +1,3 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import type { GridPrivateApiCommon } from '../../models/api/gridApiCommon';
3
- export declare const useGridRefs: <PrivateApi extends GridPrivateApiCommon>(apiRef: React.RefObject<PrivateApi>) => void;
3
+ export declare const useGridRefs: <PrivateApi extends GridPrivateApiCommon>(apiRef: RefObject<PrivateApi>) => void;
@@ -1,3 +1,3 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import type { GridPrivateApiCommon } from '../../models/api/gridApiCommon';
3
- export declare const useGridStateInitialization: <PrivateApi extends GridPrivateApiCommon>(apiRef: React.RefObject<PrivateApi>) => void;
3
+ export declare const useGridStateInitialization: <PrivateApi extends GridPrivateApiCommon>(apiRef: RefObject<PrivateApi>) => void;
@@ -1,8 +1,8 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import type { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
4
  /**
5
5
  * @requires useGridCsvExport (method)
6
6
  * @requires useGridSelection (method)
7
7
  */
8
- export declare const useGridClipboard: (apiRef: React.RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "ignoreValueFormatterDuringExport" | "onClipboardCopy" | "clipboardCopyCellDelimiter">) => void;
8
+ export declare const useGridClipboard: (apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "ignoreValueFormatterDuringExport" | "onClipboardCopy" | "clipboardCopyCellDelimiter">) => void;
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
4
  import { GridStateInitializer } from '../../utils/useGridInitializeState';
@@ -7,4 +7,4 @@ export declare const columnGroupsStateInitializer: GridStateInitializer<Pick<Dat
7
7
  * @requires useGridColumns (method, event)
8
8
  * @requires useGridParamsApi (method)
9
9
  */
10
- export declare const useGridColumnGrouping: (apiRef: React.RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "columnGroupingModel">) => void;
10
+ export declare const useGridColumnGrouping: (apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "columnGroupingModel">) => void;
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import { GridStateInitializer } from '../../utils/useGridInitializeState';
4
4
  export declare const columnMenuStateInitializer: GridStateInitializer;
@@ -6,4 +6,4 @@ export declare const columnMenuStateInitializer: GridStateInitializer;
6
6
  * @requires useGridColumnResize (event)
7
7
  * @requires useGridInfiniteLoader (event)
8
8
  */
9
- export declare const useGridColumnMenu: (apiRef: React.RefObject<GridPrivateApiCommunity>) => void;
9
+ export declare const useGridColumnMenu: (apiRef: RefObject<GridPrivateApiCommunity>) => void;
@@ -40,7 +40,6 @@ export const useGridColumnMenu = apiRef => {
40
40
  });
41
41
  });
42
42
  apiRef.current.hidePreferences();
43
- apiRef.current.forceUpdate();
44
43
  }
45
44
  }, [apiRef, logger]);
46
45
  const hideColumnMenu = React.useCallback(() => {
@@ -82,7 +81,6 @@ export const useGridColumnMenu = apiRef => {
82
81
  columnMenu: newState
83
82
  });
84
83
  });
85
- apiRef.current.forceUpdate();
86
84
  }
87
85
  }, [apiRef, logger]);
88
86
  const toggleColumnMenu = React.useCallback(field => {
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridStateInitializer } from '../../utils/useGridInitializeState';
3
3
  import type { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
4
  import type { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
@@ -7,4 +7,4 @@ export declare const columnResizeStateInitializer: GridStateInitializer;
7
7
  * @requires useGridColumns (method, event)
8
8
  * TODO: improve experience for last column
9
9
  */
10
- export declare const useGridColumnResize: (apiRef: React.RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "autosizeOptions" | "autosizeOnMount" | "disableAutosize" | "onColumnResize" | "onColumnWidthChange" | "disableVirtualization">) => void;
10
+ export declare const useGridColumnResize: (apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "autosizeOptions" | "autosizeOnMount" | "disableAutosize" | "onColumnResize" | "onColumnWidthChange" | "disableVirtualization">) => void;
@@ -500,7 +500,8 @@ export const useGridColumnResize = (apiRef, props) => {
500
500
  if (options.expand) {
501
501
  const visibleColumns = state.orderedFields.map(field => state.lookup[field]).filter(c => state.columnVisibilityModel[c.field] !== false);
502
502
  const totalWidth = visibleColumns.reduce((total, column) => total + (widthByField[column.field] ?? column.computedWidth ?? column.width), 0);
503
- const availableWidth = apiRef.current.getRootDimensions().viewportInnerSize.width;
503
+ const dimensions = apiRef.current.getRootDimensions();
504
+ const availableWidth = dimensions.viewportInnerSize.width;
504
505
  const remainingWidth = availableWidth - totalWidth;
505
506
  if (remainingWidth > 0) {
506
507
  const widthPerColumn = remainingWidth / (newColumns.length || 1);
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridColumnsState, GridColumnsRawState, GridColumnVisibilityModel, GridColumnsInitialState } from './gridColumnsInterfaces';
3
3
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
4
  import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
@@ -44,13 +44,13 @@ export declare const createColumnsState: ({ apiRef, columnsToUpsert, initialStat
44
44
  initialState: GridColumnsInitialState | undefined;
45
45
  columnVisibilityModel?: GridColumnVisibilityModel;
46
46
  keepOnlyColumnsToUpsert: boolean;
47
- apiRef: React.RefObject<GridApiCommunity>;
47
+ apiRef: RefObject<GridApiCommunity>;
48
48
  }) => GridColumnsState;
49
49
  export declare function getFirstNonSpannedColumnToRender({ firstColumnToRender, apiRef, firstRowToRender, lastRowToRender, visibleRows, }: {
50
50
  firstColumnToRender: number;
51
- apiRef: React.RefObject<GridApiCommon>;
51
+ apiRef: RefObject<GridApiCommon>;
52
52
  firstRowToRender: number;
53
53
  lastRowToRender: number;
54
54
  visibleRows: GridRowEntry[];
55
55
  }): number;
56
- export declare function getTotalHeaderHeight(apiRef: React.RefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'columnHeaderHeight' | 'headerFilterHeight' | 'unstable_listView' | 'columnGroupHeaderHeight'>): number;
56
+ export declare function getTotalHeaderHeight(apiRef: RefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'columnHeaderHeight' | 'headerFilterHeight' | 'unstable_listView' | 'columnGroupHeaderHeight'>): number;
@@ -1,7 +1,7 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  /**
4
4
  * @requires useGridColumns (method, event)
5
5
  * @requires useGridParamsApi (method)
6
6
  */
7
- export declare const useGridColumnSpanning: (apiRef: React.RefObject<GridPrivateApiCommunity>) => void;
7
+ export declare const useGridColumnSpanning: (apiRef: RefObject<GridPrivateApiCommunity>) => void;
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
4
  import { GridStateInitializer } from '../../utils/useGridInitializeState';
@@ -8,4 +8,4 @@ export declare const columnsStateInitializer: GridStateInitializer<Pick<DataGrid
8
8
  * @requires useGridDimensions (method, event) - can be after
9
9
  * TODO: Impossible priority - useGridParamsApi also needs to be after useGridColumns
10
10
  */
11
- export declare function useGridColumns(apiRef: React.RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, 'initialState' | 'columns' | 'columnVisibilityModel' | 'onColumnVisibilityModelChange' | 'slots' | 'slotProps' | 'disableColumnSelector' | 'signature'>): void;
11
+ export declare function useGridColumns(apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, 'initialState' | 'columns' | 'columnVisibilityModel' | 'onColumnVisibilityModelChange' | 'slots' | 'slotProps' | 'disableColumnSelector' | 'signature'>): void;
@@ -242,9 +242,13 @@ export function useGridColumns(apiRef, props) {
242
242
  */
243
243
 
244
244
  const prevInnerWidth = React.useRef(null);
245
- const handleGridSizeChange = viewportInnerSize => {
246
- if (prevInnerWidth.current !== viewportInnerSize.width) {
247
- prevInnerWidth.current = viewportInnerSize.width;
245
+ const handleGridSizeChange = size => {
246
+ if (prevInnerWidth.current !== size.width) {
247
+ prevInnerWidth.current = size.width;
248
+ const hasFlexColumns = gridVisibleColumnDefinitionsSelector(apiRef).some(col => col.flex && col.flex > 0);
249
+ if (!hasFlexColumns) {
250
+ return;
251
+ }
248
252
  setGridColumnsState(hydrateColumnsWidth(gridColumnsStateSelector(apiRef.current.state), apiRef.current.getRootDimensions()));
249
253
  }
250
254
  };
@@ -1,6 +1,6 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
4
  import { GridStateInitializer } from '../../utils/useGridInitializeState';
5
5
  export declare const densityStateInitializer: GridStateInitializer<Pick<DataGridProcessedProps, 'initialState' | 'density'>>;
6
- export declare const useGridDensity: (apiRef: React.RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "density" | "onDensityChange" | "initialState">) => void;
6
+ export declare const useGridDensity: (apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "density" | "onDensityChange" | "initialState">) => void;
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
4
  import { GridDimensions } from './gridDimensionsApi';
@@ -6,5 +6,5 @@ import { GridStateInitializer } from '../../utils/useGridInitializeState';
6
6
  type RootProps = Pick<DataGridProcessedProps, 'onResize' | 'scrollbarSize' | 'pagination' | 'paginationMode' | 'autoHeight' | 'getRowHeight' | 'rowHeight' | 'resizeThrottleMs' | 'columnHeaderHeight' | 'columnGroupHeaderHeight' | 'headerFilterHeight'>;
7
7
  export type GridDimensionsState = GridDimensions;
8
8
  export declare const dimensionsStateInitializer: GridStateInitializer<RootProps>;
9
- export declare function useGridDimensions(apiRef: React.RefObject<GridPrivateApiCommunity>, props: RootProps): void;
9
+ export declare function useGridDimensions(apiRef: RefObject<GridPrivateApiCommunity>, props: RootProps): void;
10
10
  export {};
@@ -15,6 +15,8 @@ import { gridRowsMetaSelector } from "../rows/gridRowsMetaSelector.js";
15
15
  import { calculatePinnedRowsHeight, getValidRowHeight, rowHeightWarning } from "../rows/gridRowsUtils.js";
16
16
  import { getTotalHeaderHeight } from "../columns/gridColumnsUtils.js";
17
17
  import { DATA_GRID_PROPS_DEFAULT_VALUES } from "../../../constants/dataGridPropsDefaultValues.js";
18
+ import { roundToDecimalPlaces } from "../../../utils/roundToDecimalPlaces.js";
19
+ import { isJSDOM } from "../../../utils/isJSDOM.js";
18
20
  const EMPTY_SIZE = {
19
21
  width: 0,
20
22
  height: 0
@@ -60,7 +62,7 @@ export function useGridDimensions(apiRef, props) {
60
62
  const headerHeight = Math.floor(props.columnHeaderHeight * densityFactor);
61
63
  const groupHeaderHeight = Math.floor((props.columnGroupHeaderHeight ?? props.columnHeaderHeight) * densityFactor);
62
64
  const headerFilterHeight = Math.floor((props.headerFilterHeight ?? props.columnHeaderHeight) * densityFactor);
63
- const columnsTotalWidth = roundToDecimalPlaces(gridColumnsTotalWidthSelector(apiRef), 6);
65
+ const columnsTotalWidth = roundToDecimalPlaces(gridColumnsTotalWidthSelector(apiRef), 1);
64
66
  const headersTotalHeight = getTotalHeaderHeight(apiRef, props);
65
67
  const leftPinnedWidth = pinnedColumns.left.reduce((w, col) => w + col.computedWidth, 0);
66
68
  const rightPinnedWidth = pinnedColumns.right.reduce((w, col) => w + col.computedWidth, 0);
@@ -110,6 +112,9 @@ export function useGridDimensions(apiRef, props) {
110
112
  return Math.min(maximumPageSizeWithoutScrollBar, currentPage.rows.length);
111
113
  }, [apiRef, props.pagination, props.paginationMode, props.getRowHeight, rowHeight]);
112
114
  const updateDimensions = React.useCallback(() => {
115
+ // All the floating point dimensions should be rounded to .1 decimal places to avoid subpixel rendering issues
116
+ // https://github.com/mui/mui-x/issues/9550#issuecomment-1619020477
117
+ // https://github.com/mui/mui-x/issues/15721
113
118
  const rootElement = apiRef.current.rootElementRef.current;
114
119
  const pinnedRowsHeight = calculatePinnedRowsHeight(apiRef);
115
120
  const scrollbarSize = measureScrollbarSize(rootElement, columnsTotalWidth, props.scrollbarSize);
@@ -118,7 +123,7 @@ export function useGridDimensions(apiRef, props) {
118
123
  const nonPinnedColumnsTotalWidth = columnsTotalWidth - leftPinnedWidth - rightPinnedWidth;
119
124
  const contentSize = {
120
125
  width: nonPinnedColumnsTotalWidth,
121
- height: rowsMeta.currentPageTotalHeight
126
+ height: roundToDecimalPlaces(rowsMeta.currentPageTotalHeight, 1)
122
127
  };
123
128
  let viewportOuterSize;
124
129
  let viewportInnerSize;
@@ -237,9 +242,6 @@ export function useGridDimensions(apiRef, props) {
237
242
  const isFirstSizing = React.useRef(true);
238
243
  const handleResize = React.useCallback(size => {
239
244
  rootDimensionsRef.current = size;
240
-
241
- // jsdom has no layout capabilities
242
- const isJSDOM = /jsdom|HappyDOM/.test(window.navigator.userAgent);
243
245
  if (size.height === 0 && !errorShown.current && !props.autoHeight && !isJSDOM) {
244
246
  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'));
245
247
  errorShown.current = true;
@@ -282,12 +284,6 @@ function measureScrollbarSize(rootElement, columnsTotalWidth, scrollbarSize) {
282
284
  rootElement.removeChild(scrollDiv);
283
285
  return size;
284
286
  }
285
-
286
- // Get rid of floating point imprecision errors
287
- // https://github.com/mui/mui-x/issues/9550#issuecomment-1619020477
288
- function roundToDecimalPlaces(value, decimals) {
289
- return Math.round(value * 10 ** decimals) / 10 ** decimals;
290
- }
291
287
  function areElementSizesEqual(a, b) {
292
288
  return a.width === b.width && a.height === b.height;
293
289
  }
@@ -1,5 +1,11 @@
1
1
  import { GridStateCommunity } from '../../../models/gridStateCommunity';
2
+ import { GridRowId } from '../../../models/gridRows';
2
3
  /**
3
4
  * Select the row editing state.
4
5
  */
5
6
  export declare const gridEditRowsStateSelector: (state: GridStateCommunity) => import("../../..").GridEditingState;
7
+ export declare const gridRowIsEditingSelector: import("../../../utils/createSelector").OutputSelectorV8<GridStateCommunity, GridRowId, boolean>;
8
+ export declare const gridEditCellStateSelector: import("../../../utils/createSelector").OutputSelectorV8<GridStateCommunity, {
9
+ rowId: GridRowId;
10
+ field: string;
11
+ }, import("../../..").GridEditCellProps<any>>;
@@ -1,4 +1,10 @@
1
+ import { createSelectorV8 } from "../../../utils/createSelector.js";
1
2
  /**
2
3
  * Select the row editing state.
3
4
  */
4
- export const gridEditRowsStateSelector = state => state.editRows;
5
+ export const gridEditRowsStateSelector = state => state.editRows;
6
+ export const gridRowIsEditingSelector = createSelectorV8(gridEditRowsStateSelector, (editRows, rowId) => Boolean(editRows[rowId]));
7
+ export const gridEditCellStateSelector = createSelectorV8(gridEditRowsStateSelector, (editRows, {
8
+ rowId,
9
+ field
10
+ }) => editRows[rowId]?.[field] ?? null);
@@ -1 +1 @@
1
- export * from './gridEditingSelectors';
1
+ export { gridEditRowsStateSelector } from './gridEditingSelectors';
@@ -1 +1 @@
1
- export * from "./gridEditingSelectors.js";
1
+ export { gridEditRowsStateSelector } from "./gridEditingSelectors.js";
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
- export declare const useGridCellEditing: (apiRef: React.RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "editMode" | "processRowUpdate" | "onCellEditStart" | "onCellEditStop" | "cellModesModel" | "onCellModesModelChange" | "onProcessRowUpdateError" | "signature">) => void;
4
+ export declare const useGridCellEditing: (apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "editMode" | "processRowUpdate" | "onCellEditStart" | "onCellEditStop" | "cellModesModel" | "onCellModesModelChange" | "onProcessRowUpdateError" | "signature">) => void;
@@ -11,7 +11,7 @@ import { GridEditModes, GridCellModes } from "../../../models/gridEditRowModel.j
11
11
  import { useGridApiMethod } from "../../utils/useGridApiMethod.js";
12
12
  import { gridEditRowsStateSelector } from "./gridEditingSelectors.js";
13
13
  import { isPrintableKey, isPasteShortcut } from "../../../utils/keyboardUtils.js";
14
- import { gridRowsDataRowIdToIdLookupSelector } from "../rows/gridRowsSelector.js";
14
+ import { gridRowsLookupSelector } from "../rows/gridRowsSelector.js";
15
15
  import { deepClone } from "../../../utils/utils.js";
16
16
  import { GridCellEditStartReasons, GridCellEditStopReasons } from "../../../models/params/gridEditCellParams.js";
17
17
  import { getDefaultCellValue } from "./utils.js";
@@ -442,7 +442,7 @@ export const useGridCellEditing = (apiRef, props) => {
442
442
 
443
443
  // Run this effect synchronously so that the keyboard event can impact the yet-to-be-rendered input.
444
444
  useEnhancedEffect(() => {
445
- const idToIdLookup = gridRowsDataRowIdToIdLookupSelector(apiRef);
445
+ const rowsLookup = gridRowsLookupSelector(apiRef);
446
446
 
447
447
  // Update the ref here because updateStateToStopCellEditMode may change it later
448
448
  const copyOfPrevCellModes = prevCellModesModel.current;
@@ -451,7 +451,7 @@ export const useGridCellEditing = (apiRef, props) => {
451
451
  Object.entries(cellModesModel).forEach(([id, fields]) => {
452
452
  Object.entries(fields).forEach(([field, params]) => {
453
453
  const prevMode = copyOfPrevCellModes[id]?.[field]?.mode || GridCellModes.View;
454
- const originalId = idToIdLookup[id] ?? id;
454
+ const originalId = rowsLookup[id] ? apiRef.current.getRowId(rowsLookup[id]) : id;
455
455
  if (params.mode === GridCellModes.Edit && prevMode === GridCellModes.View) {
456
456
  updateStateToStartCellEditMode(_extends({
457
457
  id: originalId,
@@ -1,6 +1,6 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
4
  import { GridStateInitializer } from '../../utils/useGridInitializeState';
5
5
  export declare const editingStateInitializer: GridStateInitializer;
6
- export declare const useGridEditing: (apiRef: React.RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "isCellEditable" | "editMode" | "processRowUpdate">) => void;
6
+ export declare const useGridEditing: (apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "isCellEditable" | "editMode" | "processRowUpdate">) => void;
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
- export declare const useGridRowEditing: (apiRef: React.RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "editMode" | "processRowUpdate" | "onRowEditStart" | "onRowEditStop" | "onProcessRowUpdateError" | "rowModesModel" | "onRowModesModelChange" | "signature">) => void;
4
+ export declare const useGridRowEditing: (apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "editMode" | "processRowUpdate" | "onRowEditStart" | "onRowEditStop" | "onProcessRowUpdateError" | "rowModesModel" | "onRowModesModelChange" | "signature">) => void;
@@ -9,10 +9,10 @@ import { warnOnce } from '@mui/x-internals/warning';
9
9
  import { useGridApiEventHandler, useGridApiOptionHandler } from "../../utils/useGridApiEventHandler.js";
10
10
  import { GridEditModes, GridRowModes } from "../../../models/gridEditRowModel.js";
11
11
  import { useGridApiMethod } from "../../utils/useGridApiMethod.js";
12
- import { gridEditRowsStateSelector } from "./gridEditingSelectors.js";
12
+ import { gridEditRowsStateSelector, gridRowIsEditingSelector } from "./gridEditingSelectors.js";
13
13
  import { isPrintableKey, isPasteShortcut } from "../../../utils/keyboardUtils.js";
14
14
  import { gridColumnFieldsSelector, gridVisibleColumnFieldsSelector } from "../columns/gridColumnsSelector.js";
15
- import { gridRowsDataRowIdToIdLookupSelector } from "../rows/gridRowsSelector.js";
15
+ import { gridRowsLookupSelector } from "../rows/gridRowsSelector.js";
16
16
  import { deepClone } from "../../../utils/utils.js";
17
17
  import { GridRowEditStopReasons, GridRowEditStartReasons } from "../../../models/params/gridRowParams.js";
18
18
  import { GRID_ACTIONS_COLUMN_TYPE } from "../../../colDef/index.js";
@@ -235,8 +235,7 @@ export const useGridRowEditing = (apiRef, props) => {
235
235
  if (props.editMode === GridEditModes.Cell) {
236
236
  return GridRowModes.View;
237
237
  }
238
- const editingState = gridEditRowsStateSelector(apiRef.current.state);
239
- const isEditing = editingState[id] && Object.keys(editingState[id]).length > 0;
238
+ const isEditing = gridRowIsEditingSelector(apiRef, id);
240
239
  return isEditing ? GridRowModes.Edit : GridRowModes.View;
241
240
  }, [apiRef, props.editMode]);
242
241
  const updateRowModesModel = useEventCallback(newModel => {
@@ -571,7 +570,7 @@ export const useGridRowEditing = (apiRef, props) => {
571
570
 
572
571
  // Run this effect synchronously so that the keyboard event can impact the yet-to-be-rendered input.
573
572
  useEnhancedEffect(() => {
574
- const idToIdLookup = gridRowsDataRowIdToIdLookupSelector(apiRef);
573
+ const rowsLookup = gridRowsLookupSelector(apiRef);
575
574
 
576
575
  // Update the ref here because updateStateToStopRowEditMode may change it later
577
576
  const copyOfPrevRowModesModel = prevRowModesModel.current;
@@ -583,7 +582,7 @@ export const useGridRowEditing = (apiRef, props) => {
583
582
  mode: GridRowModes.View
584
583
  };
585
584
  const prevMode = copyOfPrevRowModesModel[id]?.mode || GridRowModes.View;
586
- const originalId = idToIdLookup[id] ?? id;
585
+ const originalId = rowsLookup[id] ? apiRef.current.getRowId(rowsLookup[id]) : id;
587
586
  if (params.mode === GridRowModes.Edit && prevMode === GridRowModes.View) {
588
587
  updateStateToStartRowEditMode(_extends({
589
588
  id: originalId
@@ -1,8 +1,8 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
4
  /**
5
5
  * @requires useGridFocus (event) - can be after, async only
6
6
  * @requires useGridColumns (event) - can be after, async only
7
7
  */
8
- export declare function useGridEvents(apiRef: React.RefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'onColumnHeaderClick' | 'onColumnHeaderDoubleClick' | 'onColumnHeaderContextMenu' | 'onColumnHeaderOver' | 'onColumnHeaderOut' | 'onColumnHeaderEnter' | 'onColumnHeaderLeave' | 'onCellClick' | 'onCellDoubleClick' | 'onCellKeyDown' | 'onPreferencePanelClose' | 'onPreferencePanelOpen' | 'onRowDoubleClick' | 'onRowClick' | 'onStateChange' | 'onMenuOpen' | 'onMenuClose'>): void;
8
+ export declare function useGridEvents(apiRef: RefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'onColumnHeaderClick' | 'onColumnHeaderDoubleClick' | 'onColumnHeaderContextMenu' | 'onColumnHeaderOver' | 'onColumnHeaderOut' | 'onColumnHeaderEnter' | 'onColumnHeaderLeave' | 'onCellClick' | 'onCellDoubleClick' | 'onCellKeyDown' | 'onPreferencePanelClose' | 'onPreferencePanelOpen' | 'onRowDoubleClick' | 'onRowClick' | 'onStateChange' | 'onMenuOpen' | 'onMenuClose'>): void;
@@ -1,3 +1,4 @@
1
+ import { RefObject } from '@mui/x-internals/types';
1
2
  import type { GridCsvExportOptions, GridRowId } from '../../../../models';
2
3
  import type { GridCellParams } from '../../../../models/params/gridCellParams';
3
4
  import type { GridStateColDef } from '../../../../models/colDef/gridColDef';
@@ -12,7 +13,7 @@ interface BuildCSVOptions {
12
13
  rowIds: GridRowId[];
13
14
  csvOptions: Required<Pick<GridCsvExportOptions, 'delimiter' | 'includeColumnGroupsHeaders' | 'includeHeaders' | 'shouldAppendQuotes' | 'escapeFormulas'>>;
14
15
  ignoreValueFormatter: boolean;
15
- apiRef: React.RefObject<GridApiCommunity>;
16
+ apiRef: RefObject<GridApiCommunity>;
16
17
  }
17
18
  export declare function buildCSV(options: BuildCSVOptions): string;
18
19
  export {};
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import type { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
4
  /**
@@ -8,4 +8,4 @@ import type { DataGridProcessedProps } from '../../../models/props/DataGridProps
8
8
  * @requires useGridSelection (state)
9
9
  * @requires useGridParamsApi (method)
10
10
  */
11
- export declare const useGridCsvExport: (apiRef: React.RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "ignoreValueFormatterDuringExport">) => void;
11
+ export declare const useGridCsvExport: (apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "ignoreValueFormatterDuringExport">) => void;
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
4
  /**
@@ -7,4 +7,4 @@ import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
7
7
  * @requires useGridSorting (state)
8
8
  * @requires useGridParamsApi (method)
9
9
  */
10
- export declare const useGridPrintExport: (apiRef: React.RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "pagination" | "columnHeaderHeight" | "headerFilterHeight">) => void;
10
+ export declare const useGridPrintExport: (apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "pagination" | "columnHeaderHeight" | "headerFilterHeight">) => void;
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import { GridExportOptions, GridCsvGetRowsToExportParams } from '../../../models/gridExport';
4
4
  import { GridStateColDef } from '../../../models/colDef/gridColDef';
@@ -7,7 +7,7 @@ interface GridGetColumnsToExportParams {
7
7
  /**
8
8
  * The API of the grid.
9
9
  */
10
- apiRef: React.RefObject<GridApiCommunity>;
10
+ apiRef: RefObject<GridApiCommunity>;
11
11
  options: GridExportOptions;
12
12
  }
13
13
  export declare const getColumnsToExport: ({ apiRef, options, }: GridGetColumnsToExportParams) => GridStateColDef[];
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridFilterItem, GridFilterModel } from '../../../models';
3
3
  import type { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
4
4
  import { GridStateCommunity } from '../../../models/gridStateCommunity';
@@ -6,18 +6,18 @@ import { GridAggregatedFilterItemApplier, GridFilterItemResult, GridQuickFilterV
6
6
  /**
7
7
  * Adds default values to the optional fields of a filter items.
8
8
  * @param {GridFilterItem} item The raw filter item.
9
- * @param {React.RefObject<GridPrivateApiCommunity>} apiRef The API of the grid.
9
+ * @param {RefObject<GridPrivateApiCommunity>} apiRef The API of the grid.
10
10
  * @return {GridFilterItem} The clean filter item with an uniq ID and an always-defined operator.
11
11
  * TODO: Make the typing reflect the different between GridFilterInputItem and GridFilterItem.
12
12
  */
13
- export declare const cleanFilterItem: (item: GridFilterItem, apiRef: React.RefObject<GridPrivateApiCommunity>) => GridFilterItem;
14
- export declare const sanitizeFilterModel: (model: GridFilterModel, disableMultipleColumnsFiltering: boolean, apiRef: React.RefObject<GridPrivateApiCommunity>) => GridFilterModel;
15
- export declare const mergeStateWithFilterModel: (filterModel: GridFilterModel, disableMultipleColumnsFiltering: boolean, apiRef: React.RefObject<GridPrivateApiCommunity>) => (filteringState: GridStateCommunity["filter"]) => GridStateCommunity["filter"];
13
+ export declare const cleanFilterItem: (item: GridFilterItem, apiRef: RefObject<GridPrivateApiCommunity>) => GridFilterItem;
14
+ export declare const sanitizeFilterModel: (model: GridFilterModel, disableMultipleColumnsFiltering: boolean, apiRef: RefObject<GridPrivateApiCommunity>) => GridFilterModel;
15
+ export declare const mergeStateWithFilterModel: (filterModel: GridFilterModel, disableMultipleColumnsFiltering: boolean, apiRef: RefObject<GridPrivateApiCommunity>) => (filteringState: GridStateCommunity["filter"]) => GridStateCommunity["filter"];
16
16
  export declare const removeDiacritics: (value: unknown) => unknown;
17
17
  export declare const shouldQuickFilterExcludeHiddenColumns: (filterModel: GridFilterModel) => boolean;
18
- export declare const buildAggregatedFilterApplier: (filterModel: GridFilterModel, apiRef: React.RefObject<GridPrivateApiCommunity>, disableEval: boolean) => GridAggregatedFilterItemApplier;
18
+ export declare const buildAggregatedFilterApplier: (filterModel: GridFilterModel, apiRef: RefObject<GridPrivateApiCommunity>, disableEval: boolean) => GridAggregatedFilterItemApplier;
19
19
  type FilterCache = {
20
20
  cleanedFilterItems?: GridFilterItem[];
21
21
  };
22
- export declare const passFilterLogic: (allFilterItemResults: (null | GridFilterItemResult)[], allQuickFilterResults: (null | GridQuickFilterValueResult)[], filterModel: GridFilterModel, apiRef: React.RefObject<GridPrivateApiCommunity>, cache: FilterCache) => boolean;
22
+ export declare const passFilterLogic: (allFilterItemResults: (null | GridFilterItemResult)[], allQuickFilterResults: (null | GridQuickFilterValueResult)[], filterModel: GridFilterModel, apiRef: RefObject<GridPrivateApiCommunity>, cache: FilterCache) => boolean;
23
23
  export {};
@@ -19,7 +19,7 @@ function getHasEval() {
19
19
  /**
20
20
  * Adds default values to the optional fields of a filter items.
21
21
  * @param {GridFilterItem} item The raw filter item.
22
- * @param {React.RefObject<GridPrivateApiCommunity>} apiRef The API of the grid.
22
+ * @param {RefObject<GridPrivateApiCommunity>} apiRef The API of the grid.
23
23
  * @return {GridFilterItem} The clean filter item with an uniq ID and an always-defined operator.
24
24
  * TODO: Make the typing reflect the different between GridFilterInputItem and GridFilterItem.
25
25
  */
@@ -133,7 +133,7 @@ let filterItemsApplierId = 1;
133
133
  /**
134
134
  * Generates a method to easily check if a row is matching the current filter model.
135
135
  * @param {GridFilterModel} filterModel The model with which we want to filter the rows.
136
- * @param {React.RefObject<GridPrivateApiCommunity>} apiRef The API of the grid.
136
+ * @param {RefObject<GridPrivateApiCommunity>} apiRef The API of the grid.
137
137
  * @returns {GridAggregatedFilterItemApplier | null} A method that checks if a row is matching the current filter model. If `null`, we consider that all the rows are matching the filters.
138
138
  */
139
139
  const buildAggregatedFilterItemsApplier = (filterModel, apiRef, disableEval) => {
@@ -181,7 +181,7 @@ export const shouldQuickFilterExcludeHiddenColumns = filterModel => {
181
181
  /**
182
182
  * Generates a method to easily check if a row is matching the current quick filter.
183
183
  * @param {any[]} filterModel The model with which we want to filter the rows.
184
- * @param {React.RefObject<GridPrivateApiCommunity>} apiRef The API of the grid.
184
+ * @param {RefObject<GridPrivateApiCommunity>} apiRef The API of the grid.
185
185
  * @returns {GridAggregatedFilterItemApplier | null} A method that checks if a row is matching the current filter model. If `null`, we consider that all the rows are matching the filters.
186
186
  */
187
187
  const buildAggregatedQuickFilterApplier = (filterModel, apiRef) => {
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
3
3
  import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
4
4
  import { GridStateInitializer } from '../../utils/useGridInitializeState';
@@ -8,4 +8,4 @@ export declare const filterStateInitializer: GridStateInitializer<Pick<DataGridP
8
8
  * @requires useGridParamsApi (method)
9
9
  * @requires useGridRows (event)
10
10
  */
11
- export declare const useGridFilter: (apiRef: React.RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "rows" | "initialState" | "filterModel" | "getRowId" | "onFilterModelChange" | "filterMode" | "disableMultipleColumnsFiltering" | "slots" | "slotProps" | "disableColumnFilter" | "disableEval" | "ignoreDiacritics">) => void;
11
+ export declare const useGridFilter: (apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "rows" | "initialState" | "filterModel" | "getRowId" | "onFilterModelChange" | "filterMode" | "disableMultipleColumnsFiltering" | "slots" | "slotProps" | "disableColumnFilter" | "disableEval" | "ignoreDiacritics">) => void;
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
4
  import { GridStateInitializer } from '../../utils/useGridInitializeState';
@@ -8,4 +8,4 @@ export declare const focusStateInitializer: GridStateInitializer;
8
8
  * @requires useGridRows (method)
9
9
  * @requires useGridEditing (event)
10
10
  */
11
- export declare const useGridFocus: (apiRef: React.RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "pagination" | "paginationMode">) => void;
11
+ export declare const useGridFocus: (apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "pagination" | "paginationMode">) => void;
@@ -326,10 +326,11 @@ export const useGridFocus = (apiRef, props) => {
326
326
  // If the focused cell is in a row which does not exist anymore,
327
327
  // focus previous row or remove the focus
328
328
  if (cell && !apiRef.current.getRow(cell.id)) {
329
- const lastFocusedRowId = gridFocusCellSelector(apiRef)?.id;
329
+ const lastFocusedRowId = cell.id;
330
330
  let nextRowId = null;
331
331
  if (typeof lastFocusedRowId !== 'undefined') {
332
- const lastFocusedRowIndex = apiRef.current.getRowIndexRelativeToVisibleRows(lastFocusedRowId);
332
+ const rowEl = apiRef.current.getRowElement(lastFocusedRowId);
333
+ const lastFocusedRowIndex = rowEl?.dataset.rowindex ? Number(rowEl?.dataset.rowindex) : 0;
333
334
  const currentPage = getVisibleRows(apiRef, {
334
335
  pagination: props.pagination,
335
336
  paginationMode: props.paginationMode
@@ -1,6 +1,6 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
4
  import { GridStateInitializer } from '../../utils/useGridInitializeState';
5
5
  export declare const headerFilteringStateInitializer: GridStateInitializer;
6
- export declare const useGridHeaderFiltering: (apiRef: React.RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "signature" | "headerFilters">) => void;
6
+ export declare const useGridHeaderFiltering: (apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "signature" | "headerFilters">) => void;
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
4
  /**
@@ -10,4 +10,4 @@ import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
10
10
  * @requires useGridScroll (method) - can be after
11
11
  * @requires useGridColumnSpanning (method) - can be after
12
12
  */
13
- export declare const useGridKeyboardNavigation: (apiRef: React.RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "pagination" | "paginationMode" | "getRowId" | "experimentalFeatures" | "signature" | "headerFilters" | "unstable_listView">) => void;
13
+ export declare const useGridKeyboardNavigation: (apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "pagination" | "paginationMode" | "getRowId" | "experimentalFeatures" | "signature" | "headerFilters" | "unstable_listView">) => void;