@mui/x-data-grid-pro 8.0.0-beta.2 → 8.0.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 (277) hide show
  1. package/CHANGELOG.md +423 -96
  2. package/DataGridPro/DataGridPro.js +31 -24
  3. package/DataGridPro/useDataGridProComponent.d.ts +2 -2
  4. package/DataGridPro/useDataGridProComponent.js +2 -3
  5. package/DataGridPro/useDataGridProProps.js +1 -1
  6. package/esm/DataGridPro/DataGridPro.js +32 -25
  7. package/esm/DataGridPro/useDataGridProComponent.d.ts +2 -2
  8. package/esm/DataGridPro/useDataGridProComponent.js +2 -3
  9. package/esm/DataGridPro/useDataGridProProps.js +1 -1
  10. package/esm/hooks/features/columnPinning/useGridColumnPinning.js +2 -2
  11. package/esm/hooks/features/columnReorder/useGridColumnReorder.js +8 -8
  12. package/esm/hooks/features/dataSource/useGridDataSourceBasePro.d.ts +3 -6
  13. package/esm/hooks/features/dataSource/useGridDataSourceBasePro.js +36 -8
  14. package/esm/hooks/features/dataSource/useGridDataSourcePro.js +1 -1
  15. package/esm/hooks/features/dataSource/utils.d.ts +3 -2
  16. package/esm/hooks/features/dataSource/utils.js +13 -1
  17. package/esm/hooks/features/detailPanel/useGridDetailPanel.js +4 -4
  18. package/esm/hooks/features/infiniteLoader/useGridInfiniteLoader.js +2 -2
  19. package/esm/hooks/features/lazyLoader/useGridLazyLoader.d.ts +1 -1
  20. package/esm/hooks/features/lazyLoader/useGridLazyLoader.js +5 -5
  21. package/esm/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +1 -1
  22. package/esm/hooks/features/rowPinning/useGridRowPinning.d.ts +1 -1
  23. package/esm/hooks/features/rowReorder/useGridRowReorder.js +6 -6
  24. package/esm/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +90 -18
  25. package/esm/hooks/features/treeData/useGridTreeData.js +2 -2
  26. package/esm/index.js +1 -1
  27. package/esm/internals/index.d.ts +1 -0
  28. package/esm/internals/index.js +1 -0
  29. package/esm/material/icons.d.ts +3 -6
  30. package/esm/material/icons.js +1 -1
  31. package/esm/material/index.d.ts +2 -2
  32. package/esm/models/dataGridProProps.d.ts +8 -8
  33. package/esm/models/gridProIconSlotsComponent.d.ts +6 -3
  34. package/esm/package.json +1 -1
  35. package/hooks/features/columnPinning/useGridColumnPinning.js +1 -1
  36. package/hooks/features/columnReorder/useGridColumnReorder.js +7 -7
  37. package/hooks/features/dataSource/useGridDataSourceBasePro.d.ts +3 -6
  38. package/hooks/features/dataSource/useGridDataSourceBasePro.js +34 -6
  39. package/hooks/features/dataSource/useGridDataSourcePro.js +1 -1
  40. package/hooks/features/dataSource/utils.d.ts +3 -2
  41. package/hooks/features/dataSource/utils.js +15 -2
  42. package/hooks/features/detailPanel/useGridDetailPanel.js +3 -3
  43. package/hooks/features/infiniteLoader/useGridInfiniteLoader.js +1 -1
  44. package/hooks/features/lazyLoader/useGridLazyLoader.d.ts +1 -1
  45. package/hooks/features/lazyLoader/useGridLazyLoader.js +4 -4
  46. package/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +1 -1
  47. package/hooks/features/rowPinning/useGridRowPinning.d.ts +1 -1
  48. package/hooks/features/rowReorder/useGridRowReorder.js +5 -5
  49. package/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +89 -17
  50. package/hooks/features/treeData/useGridTreeData.js +1 -1
  51. package/index.js +1 -1
  52. package/internals/index.d.ts +1 -0
  53. package/internals/index.js +15 -7
  54. package/material/icons.d.ts +3 -6
  55. package/material/icons.js +3 -3
  56. package/material/index.d.ts +2 -2
  57. package/models/dataGridProProps.d.ts +8 -8
  58. package/models/gridProIconSlotsComponent.d.ts +6 -3
  59. package/package.json +11 -17
  60. package/esm/utils/releaseInfo.d.ts +0 -1
  61. package/esm/utils/releaseInfo.js +0 -13
  62. package/modern/DataGridPro/DataGrid.d.ts +0 -8
  63. package/modern/DataGridPro/DataGrid.js +0 -19
  64. package/modern/DataGridPro/DataGridPro.d.ts +0 -16
  65. package/modern/DataGridPro/DataGridPro.js +0 -1014
  66. package/modern/DataGridPro/index.d.ts +0 -3
  67. package/modern/DataGridPro/index.js +0 -3
  68. package/modern/DataGridPro/useDataGridProComponent.d.ts +0 -4
  69. package/modern/DataGridPro/useDataGridProComponent.js +0 -105
  70. package/modern/DataGridPro/useDataGridProProps.d.ts +0 -7
  71. package/modern/DataGridPro/useDataGridProProps.js +0 -54
  72. package/modern/components/GridColumnHeaders.d.ts +0 -5
  73. package/modern/components/GridColumnHeaders.js +0 -92
  74. package/modern/components/GridColumnMenuPinningItem.d.ts +0 -7
  75. package/modern/components/GridColumnMenuPinningItem.js +0 -77
  76. package/modern/components/GridDataSourceTreeDataGroupingCell.d.ts +0 -12
  77. package/modern/components/GridDataSourceTreeDataGroupingCell.js +0 -107
  78. package/modern/components/GridDetailPanel.d.ts +0 -14
  79. package/modern/components/GridDetailPanel.js +0 -53
  80. package/modern/components/GridDetailPanelToggleCell.d.ts +0 -7
  81. package/modern/components/GridDetailPanelToggleCell.js +0 -121
  82. package/modern/components/GridDetailPanels.d.ts +0 -3
  83. package/modern/components/GridDetailPanels.js +0 -67
  84. package/modern/components/GridPinnedRows.d.ts +0 -6
  85. package/modern/components/GridPinnedRows.js +0 -40
  86. package/modern/components/GridProColumnMenu.d.ts +0 -24
  87. package/modern/components/GridProColumnMenu.js +0 -21
  88. package/modern/components/GridRowReorderCell.d.ts +0 -8
  89. package/modern/components/GridRowReorderCell.js +0 -140
  90. package/modern/components/GridTreeDataGroupingCell.d.ts +0 -15
  91. package/modern/components/GridTreeDataGroupingCell.js +0 -133
  92. package/modern/components/headerFiltering/GridHeaderFilterCell.d.ts +0 -26
  93. package/modern/components/headerFiltering/GridHeaderFilterCell.js +0 -362
  94. package/modern/components/headerFiltering/GridHeaderFilterClearButton.d.ts +0 -6
  95. package/modern/components/headerFiltering/GridHeaderFilterClearButton.js +0 -17
  96. package/modern/components/headerFiltering/GridHeaderFilterMenu.d.ts +0 -30
  97. package/modern/components/headerFiltering/GridHeaderFilterMenu.js +0 -137
  98. package/modern/components/headerFiltering/GridHeaderFilterMenuContainer.d.ts +0 -17
  99. package/modern/components/headerFiltering/GridHeaderFilterMenuContainer.js +0 -138
  100. package/modern/components/headerFiltering/index.d.ts +0 -3
  101. package/modern/components/headerFiltering/index.js +0 -3
  102. package/modern/components/index.d.ts +0 -6
  103. package/modern/components/index.js +0 -7
  104. package/modern/components/reexports.d.ts +0 -1
  105. package/modern/components/reexports.js +0 -1
  106. package/modern/constants/dataGridProDefaultSlotsComponents.d.ts +0 -2
  107. package/modern/constants/dataGridProDefaultSlotsComponents.js +0 -17
  108. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +0 -12
  109. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +0 -143
  110. package/modern/hooks/features/columnPinning/gridColumnPinningInterface.d.ts +0 -40
  111. package/modern/hooks/features/columnPinning/gridColumnPinningInterface.js +0 -1
  112. package/modern/hooks/features/columnPinning/index.d.ts +0 -1
  113. package/modern/hooks/features/columnPinning/index.js +0 -1
  114. package/modern/hooks/features/columnPinning/useGridColumnPinning.d.ts +0 -6
  115. package/modern/hooks/features/columnPinning/useGridColumnPinning.js +0 -228
  116. package/modern/hooks/features/columnPinning/useGridColumnPinningPreProcessors.d.ts +0 -4
  117. package/modern/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +0 -105
  118. package/modern/hooks/features/columnReorder/columnReorderInterfaces.d.ts +0 -6
  119. package/modern/hooks/features/columnReorder/columnReorderInterfaces.js +0 -1
  120. package/modern/hooks/features/columnReorder/columnReorderSelector.d.ts +0 -3
  121. package/modern/hooks/features/columnReorder/columnReorderSelector.js +0 -3
  122. package/modern/hooks/features/columnReorder/index.d.ts +0 -2
  123. package/modern/hooks/features/columnReorder/index.js +0 -2
  124. package/modern/hooks/features/columnReorder/useGridColumnReorder.d.ts +0 -9
  125. package/modern/hooks/features/columnReorder/useGridColumnReorder.js +0 -242
  126. package/modern/hooks/features/dataSource/gridDataSourceSelector.d.ts +0 -7
  127. package/modern/hooks/features/dataSource/gridDataSourceSelector.js +0 -6
  128. package/modern/hooks/features/dataSource/models.d.ts +0 -75
  129. package/modern/hooks/features/dataSource/models.js +0 -1
  130. package/modern/hooks/features/dataSource/useGridDataSourceBasePro.d.ts +0 -33
  131. package/modern/hooks/features/dataSource/useGridDataSourceBasePro.js +0 -179
  132. package/modern/hooks/features/dataSource/useGridDataSourcePro.d.ts +0 -6
  133. package/modern/hooks/features/dataSource/useGridDataSourcePro.js +0 -35
  134. package/modern/hooks/features/dataSource/utils.d.ts +0 -29
  135. package/modern/hooks/features/dataSource/utils.js +0 -82
  136. package/modern/hooks/features/detailPanel/gridDetailPanelInterface.d.ts +0 -41
  137. package/modern/hooks/features/detailPanel/gridDetailPanelInterface.js +0 -1
  138. package/modern/hooks/features/detailPanel/gridDetailPanelSelector.d.ts +0 -14
  139. package/modern/hooks/features/detailPanel/gridDetailPanelSelector.js +0 -5
  140. package/modern/hooks/features/detailPanel/gridDetailPanelToggleColDef.d.ts +0 -4
  141. package/modern/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +0 -34
  142. package/modern/hooks/features/detailPanel/index.d.ts +0 -3
  143. package/modern/hooks/features/detailPanel/index.js +0 -3
  144. package/modern/hooks/features/detailPanel/useGridDetailPanel.d.ts +0 -6
  145. package/modern/hooks/features/detailPanel/useGridDetailPanel.js +0 -191
  146. package/modern/hooks/features/detailPanel/useGridDetailPanelPreProcessors.d.ts +0 -4
  147. package/modern/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +0 -43
  148. package/modern/hooks/features/index.d.ts +0 -7
  149. package/modern/hooks/features/index.js +0 -8
  150. package/modern/hooks/features/infiniteLoader/useGridInfiniteLoader.d.ts +0 -9
  151. package/modern/hooks/features/infiniteLoader/useGridInfiniteLoader.js +0 -104
  152. package/modern/hooks/features/lazyLoader/useGridLazyLoader.d.ts +0 -10
  153. package/modern/hooks/features/lazyLoader/useGridLazyLoader.js +0 -90
  154. package/modern/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +0 -5
  155. package/modern/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.js +0 -34
  156. package/modern/hooks/features/lazyLoader/utils.d.ts +0 -18
  157. package/modern/hooks/features/lazyLoader/utils.js +0 -34
  158. package/modern/hooks/features/rowPinning/gridRowPinningInterface.d.ts +0 -17
  159. package/modern/hooks/features/rowPinning/gridRowPinningInterface.js +0 -1
  160. package/modern/hooks/features/rowPinning/gridRowPinningSelector.d.ts +0 -1
  161. package/modern/hooks/features/rowPinning/gridRowPinningSelector.js +0 -1
  162. package/modern/hooks/features/rowPinning/index.d.ts +0 -1
  163. package/modern/hooks/features/rowPinning/index.js +0 -1
  164. package/modern/hooks/features/rowPinning/useGridRowPinning.d.ts +0 -6
  165. package/modern/hooks/features/rowPinning/useGridRowPinning.js +0 -52
  166. package/modern/hooks/features/rowPinning/useGridRowPinningPreProcessors.d.ts +0 -38
  167. package/modern/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +0 -119
  168. package/modern/hooks/features/rowReorder/gridRowReorderColDef.d.ts +0 -2
  169. package/modern/hooks/features/rowReorder/gridRowReorderColDef.js +0 -20
  170. package/modern/hooks/features/rowReorder/index.d.ts +0 -1
  171. package/modern/hooks/features/rowReorder/index.js +0 -1
  172. package/modern/hooks/features/rowReorder/useGridRowReorder.d.ts +0 -8
  173. package/modern/hooks/features/rowReorder/useGridRowReorder.js +0 -141
  174. package/modern/hooks/features/rowReorder/useGridRowReorderPreProcessors.d.ts +0 -4
  175. package/modern/hooks/features/rowReorder/useGridRowReorderPreProcessors.js +0 -46
  176. package/modern/hooks/features/rows/index.d.ts +0 -1
  177. package/modern/hooks/features/rows/index.js +0 -1
  178. package/modern/hooks/features/rows/useGridRowAriaAttributes.d.ts +0 -3
  179. package/modern/hooks/features/rows/useGridRowAriaAttributes.js +0 -37
  180. package/modern/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.d.ts +0 -10
  181. package/modern/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +0 -290
  182. package/modern/hooks/features/serverSideTreeData/useGridDataSourceTreeDataPreProcessors.d.ts +0 -4
  183. package/modern/hooks/features/serverSideTreeData/useGridDataSourceTreeDataPreProcessors.js +0 -148
  184. package/modern/hooks/features/serverSideTreeData/utils.d.ts +0 -7
  185. package/modern/hooks/features/serverSideTreeData/utils.js +0 -18
  186. package/modern/hooks/features/treeData/gridTreeDataGroupColDef.d.ts +0 -8
  187. package/modern/hooks/features/treeData/gridTreeDataGroupColDef.js +0 -27
  188. package/modern/hooks/features/treeData/gridTreeDataUtils.d.ts +0 -22
  189. package/modern/hooks/features/treeData/gridTreeDataUtils.js +0 -95
  190. package/modern/hooks/features/treeData/index.d.ts +0 -1
  191. package/modern/hooks/features/treeData/index.js +0 -1
  192. package/modern/hooks/features/treeData/useGridTreeData.d.ts +0 -4
  193. package/modern/hooks/features/treeData/useGridTreeData.js +0 -22
  194. package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.d.ts +0 -4
  195. package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.js +0 -148
  196. package/modern/hooks/index.d.ts +0 -1
  197. package/modern/hooks/index.js +0 -1
  198. package/modern/hooks/utils/useGridApiContext.d.ts +0 -4
  199. package/modern/hooks/utils/useGridApiContext.js +0 -2
  200. package/modern/hooks/utils/useGridApiRef.d.ts +0 -4
  201. package/modern/hooks/utils/useGridApiRef.js +0 -2
  202. package/modern/hooks/utils/useGridAriaAttributes.d.ts +0 -2
  203. package/modern/hooks/utils/useGridAriaAttributes.js +0 -11
  204. package/modern/hooks/utils/useGridPrivateApiContext.d.ts +0 -2
  205. package/modern/hooks/utils/useGridPrivateApiContext.js +0 -2
  206. package/modern/hooks/utils/useGridRootProps.d.ts +0 -2
  207. package/modern/hooks/utils/useGridRootProps.js +0 -2
  208. package/modern/index.d.ts +0 -22
  209. package/modern/index.js +0 -25
  210. package/modern/internals/index.d.ts +0 -33
  211. package/modern/internals/index.js +0 -38
  212. package/modern/internals/propValidation.d.ts +0 -3
  213. package/modern/internals/propValidation.js +0 -2
  214. package/modern/locales.d.ts +0 -1
  215. package/modern/locales.js +0 -1
  216. package/modern/material/icons.d.ts +0 -6
  217. package/modern/material/icons.js +0 -17
  218. package/modern/material/index.d.ts +0 -5
  219. package/modern/material/index.js +0 -8
  220. package/modern/models/dataGridProProps.d.ts +0 -222
  221. package/modern/models/dataGridProProps.js +0 -1
  222. package/modern/models/gridApiPro.d.ts +0 -11
  223. package/modern/models/gridApiPro.js +0 -1
  224. package/modern/models/gridFetchRowsParams.d.ts +0 -22
  225. package/modern/models/gridFetchRowsParams.js +0 -1
  226. package/modern/models/gridGroupingColDefOverride.d.ts +0 -30
  227. package/modern/models/gridGroupingColDefOverride.js +0 -1
  228. package/modern/models/gridProIconSlotsComponent.d.ts +0 -13
  229. package/modern/models/gridProIconSlotsComponent.js +0 -1
  230. package/modern/models/gridProSlotProps.d.ts +0 -8
  231. package/modern/models/gridProSlotProps.js +0 -1
  232. package/modern/models/gridProSlotsComponent.d.ts +0 -18
  233. package/modern/models/gridProSlotsComponent.js +0 -1
  234. package/modern/models/gridRowOrderChangeParams.d.ts +0 -18
  235. package/modern/models/gridRowOrderChangeParams.js +0 -1
  236. package/modern/models/gridRowScrollEndParams.d.ts +0 -18
  237. package/modern/models/gridRowScrollEndParams.js +0 -1
  238. package/modern/models/gridStatePro.d.ts +0 -19
  239. package/modern/models/gridStatePro.js +0 -1
  240. package/modern/models/index.d.ts +0 -7
  241. package/modern/models/index.js +0 -7
  242. package/modern/package.json +0 -1
  243. package/modern/themeAugmentation/index.d.ts +0 -2
  244. package/modern/themeAugmentation/index.js +0 -4
  245. package/modern/themeAugmentation/overrides.d.ts +0 -7
  246. package/modern/themeAugmentation/overrides.js +0 -1
  247. package/modern/themeAugmentation/props.d.ts +0 -15
  248. package/modern/themeAugmentation/props.js +0 -1
  249. package/modern/typeOverloads/index.d.ts +0 -1
  250. package/modern/typeOverloads/index.js +0 -1
  251. package/modern/typeOverloads/modules.d.ts +0 -70
  252. package/modern/typeOverloads/modules.js +0 -1
  253. package/modern/typeOverloads/reexports.d.ts +0 -17
  254. package/modern/typeOverloads/reexports.js +0 -15
  255. package/modern/utils/index.d.ts +0 -1
  256. package/modern/utils/index.js +0 -1
  257. package/modern/utils/releaseInfo.d.ts +0 -1
  258. package/modern/utils/releaseInfo.js +0 -13
  259. package/modern/utils/tree/createRowTree.d.ts +0 -17
  260. package/modern/utils/tree/createRowTree.js +0 -37
  261. package/modern/utils/tree/index.d.ts +0 -1
  262. package/modern/utils/tree/index.js +0 -1
  263. package/modern/utils/tree/insertDataRowInTree.d.ts +0 -69
  264. package/modern/utils/tree/insertDataRowInTree.js +0 -141
  265. package/modern/utils/tree/models.d.ts +0 -14
  266. package/modern/utils/tree/models.js +0 -1
  267. package/modern/utils/tree/removeDataRowFromTree.d.ts +0 -45
  268. package/modern/utils/tree/removeDataRowFromTree.js +0 -94
  269. package/modern/utils/tree/sortRowTree.d.ts +0 -15
  270. package/modern/utils/tree/sortRowTree.js +0 -114
  271. package/modern/utils/tree/updateRowTree.d.ts +0 -20
  272. package/modern/utils/tree/updateRowTree.js +0 -88
  273. package/modern/utils/tree/utils.d.ts +0 -54
  274. package/modern/utils/tree/utils.js +0 -197
  275. package/tsconfig.build.tsbuildinfo +0 -1
  276. package/utils/releaseInfo.d.ts +0 -1
  277. package/utils/releaseInfo.js +0 -20
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import composeClasses from '@mui/utils/composeClasses';
3
- import { useGridLogger, useGridApiEventHandler, getDataGridUtilityClass, useGridSelector, gridSortModelSelector, gridRowMaximumTreeDepthSelector, useGridApiOptionHandler, gridRowNodeSelector } from '@mui/x-data-grid';
3
+ import { useGridLogger, useGridEvent, getDataGridUtilityClass, useGridSelector, gridSortModelSelector, gridRowMaximumTreeDepthSelector, useGridEventPriority, gridRowNodeSelector } from '@mui/x-data-grid';
4
4
  import { gridEditRowsStateSelector, gridSortedRowIndexLookupSelector } from '@mui/x-data-grid/internals';
5
5
  import { GRID_REORDER_COL_DEF } from "./gridRowReorderColDef.js";
6
6
  var Direction = /*#__PURE__*/function (Direction) {
@@ -133,9 +133,9 @@ export const useGridRowReorder = (apiRef, props) => {
133
133
  }
134
134
  setDragRowId('');
135
135
  }, [apiRef, dragRowId, isRowReorderDisabled, logger, sortedRowIndexLookup]);
136
- useGridApiEventHandler(apiRef, 'rowDragStart', handleDragStart);
137
- useGridApiEventHandler(apiRef, 'rowDragOver', handleDragOver);
138
- useGridApiEventHandler(apiRef, 'rowDragEnd', handleDragEnd);
139
- useGridApiEventHandler(apiRef, 'cellDragOver', handleDragOver);
140
- useGridApiOptionHandler(apiRef, 'rowOrderChange', props.onRowOrderChange);
136
+ useGridEvent(apiRef, 'rowDragStart', handleDragStart);
137
+ useGridEvent(apiRef, 'rowDragOver', handleDragOver);
138
+ useGridEvent(apiRef, 'rowDragEnd', handleDragEnd);
139
+ useGridEvent(apiRef, 'cellDragOver', handleDragOver);
140
+ useGridEventPriority(apiRef, 'rowOrderChange', props.onRowOrderChange);
141
141
  };
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { throttle } from '@mui/x-internals/throttle';
4
4
  import { unstable_debounce as debounce } from '@mui/utils';
5
- import { useGridApiEventHandler, gridSortModelSelector, gridFilterModelSelector, GRID_ROOT_GROUP_ID, gridPaginationModelSelector, gridDimensionsSelector, gridFilteredSortedRowIdsSelector } from '@mui/x-data-grid';
5
+ import { useGridEvent, gridSortModelSelector, gridFilterModelSelector, GRID_ROOT_GROUP_ID, gridPaginationModelSelector, gridDimensionsSelector, gridFilteredSortedRowIdsSelector, gridRowIdSelector } from '@mui/x-data-grid';
6
6
  import { getVisibleRows, gridRenderContextSelector, GridStrategyGroup, useGridRegisterStrategyProcessor, runIf, DataSourceRowsUpdateStrategy } from '@mui/x-data-grid/internals';
7
7
  import { findSkeletonRowsSection } from "../lazyLoader/utils.js";
8
8
  import { GRID_SKELETON_ROW_ROOT_ID } from "../lazyLoader/useGridLazyLoaderPreProcessors.js";
@@ -87,6 +87,7 @@ export const useGridDataSourceLazyLoader = (privateApiRef, props) => {
87
87
  }, [privateApiRef, resetGrid]);
88
88
  const addSkeletonRows = React.useCallback(() => {
89
89
  const tree = privateApiRef.current.state.rows.tree;
90
+ const dataRowIdToModelLookup = privateApiRef.current.state.rows.dataRowIdToModelLookup;
90
91
  const rootGroup = tree[GRID_ROOT_GROUP_ID];
91
92
  const rootGroupChildren = [...rootGroup.children];
92
93
  const pageRowCount = privateApiRef.current.state.pagination.rowCount;
@@ -94,18 +95,28 @@ export const useGridDataSourceLazyLoader = (privateApiRef, props) => {
94
95
 
95
96
  /**
96
97
  * Do nothing if
97
- * - rowCount is unknown
98
98
  * - children count is 0
99
- * - children count is equal to rowCount
100
99
  */
101
- if (pageRowCount === -1 || pageRowCount === undefined || rootChildrenCount === 0 || rootChildrenCount === pageRowCount) {
100
+ if (rootChildrenCount === 0) {
102
101
  return;
103
102
  }
104
-
105
- // fill the grid with skeleton rows
106
- for (let i = 0; i < pageRowCount - rootChildrenCount; i += 1) {
107
- const skeletonId = getSkeletonRowId(i + rootChildrenCount); // to avoid duplicate keys on rebuild
108
- rootGroupChildren.push(skeletonId);
103
+ const pageToSkip = adjustRowParams({
104
+ start: renderedRowsIntervalCache.current.firstRowToRender,
105
+ end: renderedRowsIntervalCache.current.lastRowToRender
106
+ });
107
+ let hasChanged = false;
108
+ const isInitialPage = renderedRowsIntervalCache.current.firstRowToRender === 0 && renderedRowsIntervalCache.current.lastRowToRender === 0;
109
+ for (let i = 0; i < rootChildrenCount; i += 1) {
110
+ if (isInitialPage) {
111
+ break;
112
+ }
113
+ // replace the rows not in the viewport with skeleton rows
114
+ if (pageToSkip.start <= i && i <= pageToSkip.end || tree[rootGroupChildren[i]]?.type === 'skeletonRow') {
115
+ continue;
116
+ }
117
+ const skeletonId = getSkeletonRowId(i); // to avoid duplicate keys on rebuild
118
+ const removedRow = rootGroupChildren[i];
119
+ rootGroupChildren[i] = skeletonId;
109
120
  const skeletonRowNode = {
110
121
  type: 'skeletonRow',
111
122
  id: skeletonId,
@@ -113,16 +124,40 @@ export const useGridDataSourceLazyLoader = (privateApiRef, props) => {
113
124
  depth: 0
114
125
  };
115
126
  tree[skeletonId] = skeletonRowNode;
127
+ delete tree[removedRow];
128
+ delete dataRowIdToModelLookup[removedRow];
129
+ hasChanged = true;
130
+ }
131
+
132
+ // Should only happen with VIEWPORT loading trigger
133
+ if (loadingTrigger.current === LoadingTrigger.VIEWPORT) {
134
+ // fill the grid with skeleton rows
135
+ for (let i = 0; i < pageRowCount - rootChildrenCount; i += 1) {
136
+ const skeletonId = getSkeletonRowId(i + rootChildrenCount); // to avoid duplicate keys on rebuild
137
+ rootGroupChildren.push(skeletonId);
138
+ const skeletonRowNode = {
139
+ type: 'skeletonRow',
140
+ id: skeletonId,
141
+ parent: GRID_ROOT_GROUP_ID,
142
+ depth: 0
143
+ };
144
+ tree[skeletonId] = skeletonRowNode;
145
+ hasChanged = true;
146
+ }
147
+ }
148
+ if (!hasChanged) {
149
+ return;
116
150
  }
117
151
  tree[GRID_ROOT_GROUP_ID] = _extends({}, rootGroup, {
118
152
  children: rootGroupChildren
119
153
  });
120
154
  privateApiRef.current.setState(state => _extends({}, state, {
121
155
  rows: _extends({}, state.rows, {
122
- tree
156
+ tree,
157
+ dataRowIdToModelLookup
123
158
  })
124
159
  }), 'addSkeletonRows');
125
- }, [privateApiRef]);
160
+ }, [privateApiRef, adjustRowParams]);
126
161
  const updateLoadingTrigger = React.useCallback(rowCount => {
127
162
  const newLoadingTrigger = rowCount === -1 ? LoadingTrigger.SCROLL_END : LoadingTrigger.VIEWPORT;
128
163
  if (loadingTrigger.current !== null) {
@@ -141,6 +176,8 @@ export const useGridDataSourceLazyLoader = (privateApiRef, props) => {
141
176
  fetchParams
142
177
  } = params;
143
178
  const pageRowCount = privateApiRef.current.state.pagination.rowCount;
179
+ const tree = privateApiRef.current.state.rows.tree;
180
+ const dataRowIdToModelLookup = privateApiRef.current.state.rows.dataRowIdToModelLookup;
144
181
  if (response.rowCount !== undefined || pageRowCount === undefined) {
145
182
  privateApiRef.current.setRowCount(response.rowCount === undefined ? -1 : response.rowCount);
146
183
  }
@@ -153,8 +190,43 @@ export const useGridDataSourceLazyLoader = (privateApiRef, props) => {
153
190
  // the rows can safely be replaced. skeleton rows will be added later
154
191
  privateApiRef.current.setRows(response.rows);
155
192
  } else {
193
+ const rootGroup = tree[GRID_ROOT_GROUP_ID];
194
+ const rootGroupChildren = [...rootGroup.children];
156
195
  const filteredSortedRowIds = gridFilteredSortedRowIdsSelector(privateApiRef);
157
196
  const startingIndex = typeof fetchParams.start === 'string' ? Math.max(filteredSortedRowIds.indexOf(fetchParams.start), 0) : fetchParams.start;
197
+
198
+ // Check for duplicate rows
199
+ let duplicateRowCount = 0;
200
+ response.rows.forEach(row => {
201
+ const rowId = gridRowIdSelector(privateApiRef, row);
202
+ if (tree[rowId] || dataRowIdToModelLookup[rowId]) {
203
+ const index = rootGroupChildren.indexOf(rowId);
204
+ if (index !== -1) {
205
+ const skeletonId = getSkeletonRowId(index);
206
+ rootGroupChildren[index] = skeletonId;
207
+ tree[skeletonId] = {
208
+ type: 'skeletonRow',
209
+ id: skeletonId,
210
+ parent: GRID_ROOT_GROUP_ID,
211
+ depth: 0
212
+ };
213
+ }
214
+ delete tree[rowId];
215
+ delete dataRowIdToModelLookup[rowId];
216
+ duplicateRowCount += 1;
217
+ }
218
+ });
219
+ if (duplicateRowCount > 0) {
220
+ tree[GRID_ROOT_GROUP_ID] = _extends({}, rootGroup, {
221
+ children: rootGroupChildren
222
+ });
223
+ privateApiRef.current.setState(state => _extends({}, state, {
224
+ rows: _extends({}, state.rows, {
225
+ tree,
226
+ dataRowIdToModelLookup
227
+ })
228
+ }));
229
+ }
158
230
  privateApiRef.current.unstable_replaceRows(startingIndex, response.rows);
159
231
  }
160
232
  rowsStale.current = false;
@@ -204,7 +276,7 @@ export const useGridDataSourceLazyLoader = (privateApiRef, props) => {
204
276
  }
205
277
  }, [privateApiRef, props.scrollEndThreshold, adjustRowParams, fetchRows]);
206
278
  const handleRenderedRowsIntervalChange = React.useCallback(params => {
207
- if (rowsStale.current || loadingTrigger.current !== LoadingTrigger.VIEWPORT) {
279
+ if (rowsStale.current) {
208
280
  return;
209
281
  }
210
282
  const sortModel = gridSortModelSelector(privateApiRef);
@@ -278,12 +350,12 @@ export const useGridDataSourceLazyLoader = (privateApiRef, props) => {
278
350
  setLazyLoadingRowsUpdateStrategyActive(privateApiRef.current.getActiveStrategy(GridStrategyGroup.DataSource) === DataSourceRowsUpdateStrategy.LazyLoading);
279
351
  }, [privateApiRef]);
280
352
  useGridRegisterStrategyProcessor(privateApiRef, DataSourceRowsUpdateStrategy.LazyLoading, 'dataSourceRowsUpdate', handleDataUpdate);
281
- useGridApiEventHandler(privateApiRef, 'strategyAvailabilityChange', handleStrategyActivityChange);
282
- useGridApiEventHandler(privateApiRef, 'rowCountChange', runIf(lazyLoadingRowsUpdateStrategyActive, handleRowCountChange));
283
- useGridApiEventHandler(privateApiRef, 'scrollPositionChange', runIf(lazyLoadingRowsUpdateStrategyActive, handleScrolling));
284
- useGridApiEventHandler(privateApiRef, 'renderedRowsIntervalChange', runIf(lazyLoadingRowsUpdateStrategyActive, throttledHandleRenderedRowsIntervalChange));
285
- useGridApiEventHandler(privateApiRef, 'sortModelChange', runIf(lazyLoadingRowsUpdateStrategyActive, handleGridSortModelChange));
286
- useGridApiEventHandler(privateApiRef, 'filterModelChange', runIf(lazyLoadingRowsUpdateStrategyActive, handleGridFilterModelChange));
353
+ useGridEvent(privateApiRef, 'strategyAvailabilityChange', handleStrategyActivityChange);
354
+ useGridEvent(privateApiRef, 'rowCountChange', runIf(lazyLoadingRowsUpdateStrategyActive, handleRowCountChange));
355
+ useGridEvent(privateApiRef, 'scrollPositionChange', runIf(lazyLoadingRowsUpdateStrategyActive, handleScrolling));
356
+ useGridEvent(privateApiRef, 'renderedRowsIntervalChange', runIf(lazyLoadingRowsUpdateStrategyActive, throttledHandleRenderedRowsIntervalChange));
357
+ useGridEvent(privateApiRef, 'sortModelChange', runIf(lazyLoadingRowsUpdateStrategyActive, handleGridSortModelChange));
358
+ useGridEvent(privateApiRef, 'filterModelChange', runIf(lazyLoadingRowsUpdateStrategyActive, handleGridFilterModelChange));
287
359
  React.useEffect(() => {
288
360
  setStrategyAvailability();
289
361
  }, [setStrategyAvailability]);
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { useGridApiEventHandler } from '@mui/x-data-grid';
2
+ import { useGridEvent } from '@mui/x-data-grid';
3
3
  import { GRID_TREE_DATA_GROUPING_FIELD } from "./gridTreeDataGroupColDef.js";
4
4
  export const useGridTreeData = (apiRef, props) => {
5
5
  /**
@@ -18,5 +18,5 @@ export const useGridTreeData = (apiRef, props) => {
18
18
  apiRef.current.setRowChildrenExpansion(params.id, !params.rowNode.childrenExpanded);
19
19
  }
20
20
  }, [apiRef, props.dataSource]);
21
- useGridApiEventHandler(apiRef, 'cellKeyDown', handleCellKeyDown);
21
+ useGridEvent(apiRef, 'cellKeyDown', handleCellKeyDown);
22
22
  };
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid-pro v8.0.0-beta.2
2
+ * @mui/x-data-grid-pro v8.0.0
3
3
  *
4
4
  * @license MUI X Commercial
5
5
  * This source code is licensed under the commercial license found in the
@@ -23,6 +23,7 @@ export { useGridDataSourceLazyLoader } from "../hooks/features/serverSideLazyLoa
23
23
  export { dataSourceStateInitializer } from "../hooks/features/dataSource/useGridDataSourcePro.js";
24
24
  export { useGridDataSourceBasePro } from "../hooks/features/dataSource/useGridDataSourceBasePro.js";
25
25
  export { gridDataSourceErrorSelector, gridDataSourceLoadingIdSelector } from "../hooks/features/dataSource/gridDataSourceSelector.js";
26
+ export { getGroupKeys } from "../hooks/features/dataSource/utils.js";
26
27
  export type { GridExperimentalProFeatures, DataGridProPropsWithoutDefaultValue, DataGridProPropsWithDefaultValue } from '../models/dataGridProProps';
27
28
  export { createRowTree } from "../utils/tree/createRowTree.js";
28
29
  export { updateRowTree } from "../utils/tree/updateRowTree.js";
@@ -30,6 +30,7 @@ export { useGridDataSourceLazyLoader } from "../hooks/features/serverSideLazyLoa
30
30
  export { dataSourceStateInitializer } from "../hooks/features/dataSource/useGridDataSourcePro.js";
31
31
  export { useGridDataSourceBasePro } from "../hooks/features/dataSource/useGridDataSourceBasePro.js";
32
32
  export { gridDataSourceErrorSelector, gridDataSourceLoadingIdSelector } from "../hooks/features/dataSource/gridDataSourceSelector.js";
33
+ export { getGroupKeys } from "../hooks/features/dataSource/utils.js";
33
34
  export { createRowTree } from "../utils/tree/createRowTree.js";
34
35
  export { updateRowTree } from "../utils/tree/updateRowTree.js";
35
36
  export { sortRowTree } from "../utils/tree/sortRowTree.js";
@@ -1,6 +1,3 @@
1
- export declare const GridPushPinRightIcon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
2
- muiName: string;
3
- };
4
- export declare const GridPushPinLeftIcon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
5
- muiName: string;
6
- };
1
+ import * as React from 'react';
2
+ export declare const GridPushPinRightIcon: (props: import("@mui/x-data-grid").GridBaseIconProps) => React.ReactNode;
3
+ export declare const GridPushPinLeftIcon: (props: import("@mui/x-data-grid").GridBaseIconProps) => React.ReactNode;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { createSvgIcon } from '@mui/material/utils';
2
+ import { createSvgIcon } from '@mui/x-data-grid/internals';
3
3
  import { jsx as _jsx } from "react/jsx-runtime";
4
4
  export const GridPushPinRightIcon = createSvgIcon(/*#__PURE__*/_jsx("g", {
5
5
  transform: "rotate(-30 15 10)",
@@ -1,5 +1,5 @@
1
1
  declare const materialSlots: {
2
- columnMenuPinLeftIcon: React.JSXElementConstructor<any>;
3
- columnMenuPinRightIcon: React.JSXElementConstructor<any>;
2
+ columnMenuPinLeftIcon: React.JSXElementConstructor<import("@mui/x-data-grid/models/gridBaseSlots").IconProps>;
3
+ columnMenuPinRightIcon: React.JSXElementConstructor<import("@mui/x-data-grid/models/gridBaseSlots").IconProps>;
4
4
  };
5
5
  export default materialSlots;
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { RefObject } from '@mui/x-internals/types';
3
- import { GridEventListener, GridCallbackDetails, GridRowParams, GridRowId, GridValidRowModel, GridGroupNode, GridFeatureMode, GridListColDef, GridGetRowsError, GridUpdateRowError } from '@mui/x-data-grid';
3
+ import { GridEventListener, GridCallbackDetails, GridRowParams, GridRowId, GridValidRowModel, GridGroupNode, GridFeatureMode, GridListViewColDef, GridGetRowsError, GridUpdateRowError } from '@mui/x-data-grid';
4
4
  import type { GridExperimentalFeatures, DataGridPropsWithoutDefaultValue, DataGridPropsWithDefaultValues, DataGridPropsWithComplexDefaultValueAfterProcessing, DataGridPropsWithComplexDefaultValueBeforeProcessing, GridPinnedColumnFields, DataGridProSharedPropsWithDefaultValue, DataGridProSharedPropsWithoutDefaultValue } from '@mui/x-data-grid/internals';
5
5
  import type { GridPinnedRowsProp } from '../hooks/features/rowPinning';
6
6
  import { GridApiPro } from "./gridApiPro.js";
@@ -90,7 +90,7 @@ export interface DataGridProPropsWithDefaultValue<R extends GridValidRowModel =
90
90
  * Set it to 'client' if you would like enable infnite loading.
91
91
  * Set it to 'server' if you would like to enable lazy loading.
92
92
  * @default "client"
93
- * @deprecated Use the {@link https://next.mui.com/x/react-data-grid/server-side-data/lazy-loading/#viewport-loading Server-side data-Viewport loading} instead.
93
+ * @deprecated Use the {@link https://mui.com/x/react-data-grid/server-side-data/lazy-loading/#viewport-loading Server-side data-Viewport loading} instead.
94
94
  */
95
95
  rowsLoadingMode: GridFeatureMode;
96
96
  /**
@@ -113,9 +113,9 @@ export interface DataGridProPropsWithDefaultValue<R extends GridValidRowModel =
113
113
  lazyLoadingRequestThrottleMs: number;
114
114
  /**
115
115
  * If `true`, displays the data in a list view.
116
- * Use in combination with `unstable_listColumn`.
116
+ * Use in combination with `listViewColumn`.
117
117
  */
118
- unstable_listView: boolean;
118
+ listView: boolean;
119
119
  }
120
120
  interface DataGridProRegularProps<R extends GridValidRowModel> {
121
121
  /**
@@ -149,7 +149,7 @@ export interface DataGridProPropsWithoutDefaultValue<R extends GridValidRowModel
149
149
  * @param {GridRowScrollEndParams} params With all properties from [[GridRowScrollEndParams]].
150
150
  * @param {MuiEvent<{}>} event The event object.
151
151
  * @param {GridCallbackDetails} details Additional details for this callback.
152
- * @deprecated Use the {@link https://next.mui.com/x/react-data-grid/server-side-data/lazy-loading/#infinite-loading Server-side data-Infinite loading} instead.
152
+ * @deprecated Use the {@link https://mui.com/x/react-data-grid/server-side-data/lazy-loading/#infinite-loading Server-side data-Infinite loading} instead.
153
153
  */
154
154
  onRowsScrollEnd?: GridEventListener<'rowsScrollEnd'>;
155
155
  /**
@@ -194,7 +194,7 @@ export interface DataGridProPropsWithoutDefaultValue<R extends GridValidRowModel
194
194
  * @param {GridFetchRowsParams} params With all properties from [[GridFetchRowsParams]].
195
195
  * @param {MuiEvent<{}>} event The event object.
196
196
  * @param {GridCallbackDetails} details Additional details for this callback.
197
- * @deprecated Use the {@link https://next.mui.com/x/react-data-grid/server-side-data/lazy-loading/#viewport-loading Server-side data-Viewport loading} instead.
197
+ * @deprecated Use the {@link https://mui.com/x/react-data-grid/server-side-data/lazy-loading/#viewport-loading Server-side data-Viewport loading} instead.
198
198
  */
199
199
  onFetchRows?: GridEventListener<'fetchRows'>;
200
200
  /**
@@ -206,9 +206,9 @@ export interface DataGridProPropsWithoutDefaultValue<R extends GridValidRowModel
206
206
  */
207
207
  slotProps?: GridProSlotProps;
208
208
  /**
209
- * Definition of the column rendered when the `unstable_listView` prop is enabled.
209
+ * Definition of the column rendered when the `listView` prop is enabled.
210
210
  */
211
- unstable_listColumn?: GridListColDef<R>;
211
+ listViewColumn?: GridListViewColDef<R>;
212
212
  /**
213
213
  * The data source of the Data Grid Pro.
214
214
  */
@@ -1,13 +1,16 @@
1
1
  import * as React from 'react';
2
+ import { BaseSlots } from '@mui/x-data-grid/internals';
3
+ type IconProps = BaseSlots.IconProps;
2
4
  export interface GridProIconSlotsComponent {
3
5
  /**
4
6
  * Icon displayed in column menu for left pinning
5
7
  * @default GridPushPinLeftIcon
6
8
  */
7
- columnMenuPinLeftIcon: React.JSXElementConstructor<any>;
9
+ columnMenuPinLeftIcon: React.JSXElementConstructor<IconProps>;
8
10
  /**
9
11
  * Icon displayed in column menu for right pinning
10
12
  * @default GridPushPinRightIcon
11
13
  */
12
- columnMenuPinRightIcon: React.JSXElementConstructor<any>;
13
- }
14
+ columnMenuPinRightIcon: React.JSXElementConstructor<IconProps>;
15
+ }
16
+ export {};
package/esm/package.json CHANGED
@@ -1 +1 @@
1
- {"type":"module","sideEffects":false}
1
+ {"type":"module","sideEffects":["**/*.css"]}
@@ -223,7 +223,7 @@ const useGridColumnPinning = (apiRef, props) => {
223
223
  }
224
224
  apiRef.current.caches.columnPinning.orderedFieldsBeforePinningColumns = newOrderedFieldsBeforePinningColumns;
225
225
  };
226
- (0, _xDataGrid.useGridApiEventHandler)(apiRef, 'columnOrderChange', handleColumnOrderChange);
226
+ (0, _xDataGrid.useGridEvent)(apiRef, 'columnOrderChange', handleColumnOrderChange);
227
227
  React.useEffect(() => {
228
228
  if (props.pinnedColumns) {
229
229
  apiRef.current.setPinnedColumns(props.pinnedColumns);
@@ -241,12 +241,12 @@ const useGridColumnReorder = (apiRef, props) => {
241
241
  })
242
242
  }));
243
243
  }, [apiRef, props.disableColumnReorder, props.keepColumnPositionIfDraggedOutside, logger, classes.columnHeaderDragging]);
244
- (0, _xDataGrid.useGridApiEventHandler)(apiRef, 'columnHeaderDragStart', handleDragStart);
245
- (0, _xDataGrid.useGridApiEventHandler)(apiRef, 'columnHeaderDragEnter', handleDragEnter);
246
- (0, _xDataGrid.useGridApiEventHandler)(apiRef, 'columnHeaderDragOver', handleDragOver);
247
- (0, _xDataGrid.useGridApiEventHandler)(apiRef, 'columnHeaderDragEnd', handleDragEnd);
248
- (0, _xDataGrid.useGridApiEventHandler)(apiRef, 'cellDragEnter', handleDragEnter);
249
- (0, _xDataGrid.useGridApiEventHandler)(apiRef, 'cellDragOver', handleDragOver);
250
- (0, _xDataGrid.useGridApiOptionHandler)(apiRef, 'columnOrderChange', props.onColumnOrderChange);
244
+ (0, _xDataGrid.useGridEvent)(apiRef, 'columnHeaderDragStart', handleDragStart);
245
+ (0, _xDataGrid.useGridEvent)(apiRef, 'columnHeaderDragEnter', handleDragEnter);
246
+ (0, _xDataGrid.useGridEvent)(apiRef, 'columnHeaderDragOver', handleDragOver);
247
+ (0, _xDataGrid.useGridEvent)(apiRef, 'columnHeaderDragEnd', handleDragEnd);
248
+ (0, _xDataGrid.useGridEvent)(apiRef, 'cellDragEnter', handleDragEnter);
249
+ (0, _xDataGrid.useGridEvent)(apiRef, 'cellDragOver', handleDragOver);
250
+ (0, _xDataGrid.useGridEventPriority)(apiRef, 'columnOrderChange', props.onColumnOrderChange);
251
251
  };
252
252
  exports.useGridColumnReorder = useGridColumnReorder;
@@ -1,6 +1,5 @@
1
1
  import { RefObject } from '@mui/x-internals/types';
2
- import { GridRowId, GridDataSourceCacheDefaultConfig } from '@mui/x-data-grid';
3
- import { CacheChunkManager, DataSourceRowsUpdateStrategy } from '@mui/x-data-grid/internals';
2
+ import { CacheChunkManager, DataSourceRowsUpdateStrategy, GridDataSourceBaseOptions } from '@mui/x-data-grid/internals';
4
3
  import { GridPrivateApiPro } from "../../../models/gridApiPro.js";
5
4
  import { DataGridProProcessedProps } from "../../../models/dataGridProProps.js";
6
5
  import { GridDataSourceApiPro, GridDataSourcePrivateApiPro } from "./models.js";
@@ -8,14 +7,12 @@ export declare const INITIAL_STATE: {
8
7
  loading: {};
9
8
  errors: {};
10
9
  };
11
- export declare const useGridDataSourceBasePro: <Api extends GridPrivateApiPro>(apiRef: RefObject<Api>, props: DataGridProProcessedProps, options?: {
12
- cacheOptions?: GridDataSourceCacheDefaultConfig;
13
- fetchRowChildren?: (parentId: GridRowId) => void;
14
- }) => {
10
+ export declare const useGridDataSourceBasePro: <Api extends GridPrivateApiPro>(apiRef: RefObject<Api>, props: DataGridProProcessedProps, options?: GridDataSourceBaseOptions) => {
15
11
  api: {
16
12
  public: GridDataSourceApiPro;
17
13
  private: GridDataSourcePrivateApiPro;
18
14
  };
15
+ debouncedFetchRows: ((parentId?: import("@mui/x-data-grid").GridRowId, params?: Partial<import("@mui/x-data-grid").GridGetRowsParams>) => void) & import("@mui/utils/debounce").Cancelable;
19
16
  strategyProcessor: {
20
17
  strategyName: DataSourceRowsUpdateStrategy;
21
18
  group: "dataSourceRowsUpdate";
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.useGridDataSourceBasePro = exports.INITIAL_STATE = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
+ var _isDeepEqual = require("@mui/x-internals/isDeepEqual");
11
12
  var _useLazyRef = _interopRequireDefault(require("@mui/utils/useLazyRef"));
12
13
  var _xDataGrid = require("@mui/x-data-grid");
13
14
  var _internals = require("@mui/x-data-grid/internals");
@@ -31,16 +32,26 @@ const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
31
32
  }
32
33
  return null;
33
34
  }, [apiRef, nestedDataManager]);
35
+ const handleEditRow = React.useCallback((params, updatedRow) => {
36
+ const groupKeys = (0, _utils.getGroupKeys)((0, _xDataGrid.gridRowTreeSelector)(apiRef), params.rowId);
37
+ apiRef.current.updateNestedRows([updatedRow], groupKeys);
38
+ if (updatedRow && !(0, _isDeepEqual.isDeepEqual)(updatedRow, params.previousRow)) {
39
+ // Reset the outdated cache, only if the row is _actually_ updated
40
+ apiRef.current.dataSource.cache.clear();
41
+ }
42
+ }, [apiRef]);
34
43
  const {
35
44
  api,
45
+ debouncedFetchRows,
36
46
  strategyProcessor,
37
47
  events,
38
48
  cacheChunkManager,
39
49
  cache
40
- } = (0, _internals.useGridDataSourceBase)(apiRef, props, (0, _extends2.default)({}, options, {
50
+ } = (0, _internals.useGridDataSourceBase)(apiRef, props, (0, _extends2.default)({
41
51
  fetchRowChildren: nestedDataManager.queue,
42
- clearDataSourceState
43
- }));
52
+ clearDataSourceState,
53
+ handleEditRow
54
+ }, options));
44
55
  const setStrategyAvailability = React.useCallback(() => {
45
56
  apiRef.current.setStrategyAvailability(_internals.GridStrategyGroup.DataSource, _internals.DataSourceRowsUpdateStrategy.Default, props.dataSource && !props.lazyLoading ? () => true : () => false);
46
57
  }, [apiRef, props.dataSource, props.lazyLoading]);
@@ -70,7 +81,7 @@ const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
70
81
  if (cachedData !== undefined) {
71
82
  const rows = cachedData.rows;
72
83
  nestedDataManager.setRequestSettled(id);
73
- apiRef.current.updateServerRows(rows, rowNode.path);
84
+ apiRef.current.updateNestedRows(rows, rowNode.path);
74
85
  apiRef.current.setRowCount(cachedData.rowCount === undefined ? -1 : cachedData.rowCount);
75
86
  apiRef.current.setRowChildrenExpansion(id, true);
76
87
  apiRef.current.dataSource.setChildrenLoading(id, false);
@@ -97,7 +108,23 @@ const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
97
108
  cache.set(key, response);
98
109
  });
99
110
  apiRef.current.setRowCount(getRowsResponse.rowCount === undefined ? -1 : getRowsResponse.rowCount);
100
- apiRef.current.updateServerRows(getRowsResponse.rows, rowNode.path);
111
+ // Remove existing outdated rows before setting the new ones
112
+ const rowsToDelete = [];
113
+ getRowsResponse.rows.forEach(row => {
114
+ const rowId = (0, _xDataGrid.gridRowIdSelector)(apiRef, row);
115
+ const treeNode = (0, _xDataGrid.gridRowNodeSelector)(apiRef, rowId);
116
+ if (treeNode) {
117
+ rowsToDelete.push({
118
+ id: rowId,
119
+ _action: 'delete'
120
+ });
121
+ }
122
+ });
123
+ if (rowsToDelete.length > 0) {
124
+ // TODO: Make this happen in a single pass by modifying the pre-processing of the rows
125
+ apiRef.current.updateNestedRows(rowsToDelete, rowNode.path);
126
+ }
127
+ apiRef.current.updateNestedRows(getRowsResponse.rows, rowNode.path);
101
128
  apiRef.current.setRowChildrenExpansion(id, true);
102
129
  } catch (error) {
103
130
  const childrenFetchError = error;
@@ -109,7 +136,7 @@ const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
109
136
  cause: childrenFetchError
110
137
  }));
111
138
  } else if (process.env.NODE_ENV !== 'production') {
112
- (0, _warning.warnOnce)(['MUI X: A call to `dataSource.getRows()` threw an error which was not handled because `unstable_onDataSourceError()` is missing.', 'To handle the error pass a callback to the `onDataSourceError` prop, for example `<DataGrid unstable_onDataSourceError={(error) => ...} />`.', 'For more detail, see https://mui.com/x/react-data-grid/server-side-data/#error-handling.'], 'error');
139
+ (0, _warning.warnOnce)(['MUI X: A call to `dataSource.getRows()` threw an error which was not handled because `onDataSourceError()` is missing.', 'To handle the error pass a callback to the `onDataSourceError` prop, for example `<DataGrid onDataSourceError={(error) => ...} />`.', 'For more detail, see https://mui.com/x/react-data-grid/server-side-data/#error-handling.'], 'error');
113
140
  }
114
141
  } finally {
115
142
  apiRef.current.dataSource.setChildrenLoading(id, false);
@@ -178,6 +205,7 @@ const useGridDataSourceBasePro = (apiRef, props, options = {}) => {
178
205
  public: dataSourceApi,
179
206
  private: dataSourcePrivateApi
180
207
  },
208
+ debouncedFetchRows,
181
209
  strategyProcessor,
182
210
  events,
183
211
  setStrategyAvailability,
@@ -36,7 +36,7 @@ const useGridDataSourcePro = (apiRef, props) => {
36
36
  (0, _xDataGrid.useGridApiMethod)(apiRef, api.private, 'private');
37
37
  (0, _internals.useGridRegisterStrategyProcessor)(apiRef, strategyProcessor.strategyName, strategyProcessor.group, strategyProcessor.processor);
38
38
  Object.entries(events).forEach(([event, handler]) => {
39
- (0, _xDataGrid.useGridApiEventHandler)(apiRef, event, handler);
39
+ (0, _xDataGrid.useGridEvent)(apiRef, event, handler);
40
40
  });
41
41
  React.useEffect(() => {
42
42
  setStrategyAvailability();
@@ -1,5 +1,5 @@
1
1
  import { RefObject } from '@mui/x-internals/types';
2
- import { GridRowId } from '@mui/x-data-grid';
2
+ import { GridKeyValue, GridRowId, GridRowTreeConfig } from '@mui/x-data-grid';
3
3
  import { GridPrivateApiPro } from "../../../models/index.js";
4
4
  export declare enum RequestStatus {
5
5
  QUEUED = 0,
@@ -26,4 +26,5 @@ export declare class NestedDataManager {
26
26
  clearPendingRequest: (id: GridRowId) => void;
27
27
  getRequestStatus: (id: GridRowId) => RequestStatus;
28
28
  getActiveRequestsCount: () => number;
29
- }
29
+ }
30
+ export declare const getGroupKeys: (tree: GridRowTreeConfig, rowId: GridRowId) => GridKeyValue[];
@@ -4,8 +4,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.RequestStatus = exports.NestedDataManager = void 0;
7
+ exports.getGroupKeys = exports.RequestStatus = exports.NestedDataManager = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _xDataGrid = require("@mui/x-data-grid");
9
10
  const MAX_CONCURRENT_REQUESTS = Infinity;
10
11
  let RequestStatus = exports.RequestStatus = /*#__PURE__*/function (RequestStatus) {
11
12
  RequestStatus[RequestStatus["QUEUED"] = 0] = "QUEUED";
@@ -86,4 +87,16 @@ class NestedDataManager {
86
87
  this.maxConcurrentRequests = maxConcurrentRequests;
87
88
  }
88
89
  }
89
- exports.NestedDataManager = NestedDataManager;
90
+ exports.NestedDataManager = NestedDataManager;
91
+ const getGroupKeys = (tree, rowId) => {
92
+ const rowNode = tree[rowId];
93
+ let currentNodeId = rowNode.parent;
94
+ const groupKeys = [];
95
+ while (currentNodeId && currentNodeId !== _xDataGrid.GRID_ROOT_GROUP_ID) {
96
+ const currentNode = tree[currentNodeId];
97
+ groupKeys.push(currentNode.groupingKey ?? '');
98
+ currentNodeId = currentNode.parent;
99
+ }
100
+ return groupKeys.reverse();
101
+ };
102
+ exports.getGroupKeys = getGroupKeys;
@@ -78,8 +78,8 @@ const useGridDetailPanel = (apiRef, props) => {
78
78
  apiRef.current.toggleDetailPanel(params.id);
79
79
  }
80
80
  }, [apiRef, props.getDetailPanelContent]);
81
- (0, _xDataGrid.useGridApiEventHandler)(apiRef, 'cellClick', handleCellClick);
82
- (0, _xDataGrid.useGridApiEventHandler)(apiRef, 'cellKeyDown', handleCellKeyDown);
81
+ (0, _xDataGrid.useGridEvent)(apiRef, 'cellClick', handleCellClick);
82
+ (0, _xDataGrid.useGridEvent)(apiRef, 'cellKeyDown', handleCellKeyDown);
83
83
  apiRef.current.registerControlState({
84
84
  stateId: 'detailPanels',
85
85
  propModel: props.detailPanelExpandedRowIds,
@@ -160,7 +160,7 @@ const useGridDetailPanel = (apiRef, props) => {
160
160
  });
161
161
  });
162
162
  }, [apiRef, props.getDetailPanelContent, props.getDetailPanelHeight]);
163
- (0, _xDataGrid.useGridApiEventHandler)(apiRef, 'sortedRowsSet', updateCaches);
163
+ (0, _xDataGrid.useGridEvent)(apiRef, 'sortedRowsSet', updateCaches);
164
164
  const previousGetDetailPanelContentProp = React.useRef(undefined);
165
165
  const previousGetDetailPanelHeightProp = React.useRef(undefined);
166
166
  const updateCachesIfNeeded = React.useCallback(() => {
@@ -108,6 +108,6 @@ const useGridInfiniteLoader = (apiRef, props) => {
108
108
  getInfiniteLoadingTriggerElement
109
109
  };
110
110
  (0, _xDataGrid.useGridApiMethod)(apiRef, infiniteLoaderPrivateApi, 'private');
111
- (0, _xDataGrid.useGridApiOptionHandler)(apiRef, 'rowsScrollEnd', props.onRowsScrollEnd);
111
+ (0, _xDataGrid.useGridEventPriority)(apiRef, 'rowsScrollEnd', props.onRowsScrollEnd);
112
112
  };
113
113
  exports.useGridInfiniteLoader = useGridInfiniteLoader;
@@ -7,4 +7,4 @@ import { DataGridProProcessedProps } from "../../../models/dataGridProProps.js";
7
7
  * @requires useGridDimensions (method) - can be after
8
8
  * @requires useGridScroll (method
9
9
  */
10
- export declare const useGridLazyLoader: (privateApiRef: RefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, "onFetchRows" | "rowsLoadingMode" | "pagination" | "paginationMode" | "experimentalFeatures">) => void;
10
+ export declare const useGridLazyLoader: (privateApiRef: RefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, "onFetchRows" | "rowsLoadingMode" | "pagination" | "paginationMode">) => void;
@@ -89,9 +89,9 @@ const useGridLazyLoader = (privateApiRef, props) => {
89
89
  };
90
90
  privateApiRef.current.publishEvent('fetchRows', fetchRowsParams);
91
91
  }, [privateApiRef, isDisabled, sortModel]);
92
- (0, _xDataGrid.useGridApiEventHandler)(privateApiRef, 'renderedRowsIntervalChange', handleRenderedRowsIntervalChange);
93
- (0, _xDataGrid.useGridApiEventHandler)(privateApiRef, 'sortModelChange', handleGridSortModelChange);
94
- (0, _xDataGrid.useGridApiEventHandler)(privateApiRef, 'filterModelChange', handleGridFilterModelChange);
95
- (0, _xDataGrid.useGridApiOptionHandler)(privateApiRef, 'fetchRows', props.onFetchRows);
92
+ (0, _xDataGrid.useGridEvent)(privateApiRef, 'renderedRowsIntervalChange', handleRenderedRowsIntervalChange);
93
+ (0, _xDataGrid.useGridEvent)(privateApiRef, 'sortModelChange', handleGridSortModelChange);
94
+ (0, _xDataGrid.useGridEvent)(privateApiRef, 'filterModelChange', handleGridFilterModelChange);
95
+ (0, _xDataGrid.useGridEventPriority)(privateApiRef, 'fetchRows', props.onFetchRows);
96
96
  };
97
97
  exports.useGridLazyLoader = useGridLazyLoader;
@@ -2,4 +2,4 @@ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridPrivateApiPro } from "../../../models/gridApiPro.js";
3
3
  import { DataGridProProcessedProps } from "../../../models/dataGridProProps.js";
4
4
  export declare const GRID_SKELETON_ROW_ROOT_ID = "auto-generated-skeleton-row-root";
5
- export declare const useGridLazyLoaderPreProcessors: (privateApiRef: RefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, "rowCount" | "rowsLoadingMode" | "experimentalFeatures">) => void;
5
+ export declare const useGridLazyLoaderPreProcessors: (privateApiRef: RefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, "rowCount" | "rowsLoadingMode">) => void;
@@ -2,5 +2,5 @@ import { RefObject } from '@mui/x-internals/types';
2
2
  import { GridStateInitializer } from '@mui/x-data-grid/internals';
3
3
  import { GridPrivateApiPro } from "../../../models/gridApiPro.js";
4
4
  import { DataGridProProcessedProps } from "../../../models/dataGridProProps.js";
5
- export declare const rowPinningStateInitializer: GridStateInitializer<Pick<DataGridProProcessedProps, 'pinnedRows' | 'getRowId' | 'experimentalFeatures'>>;
5
+ export declare const rowPinningStateInitializer: GridStateInitializer<Pick<DataGridProProcessedProps, 'pinnedRows' | 'getRowId'>>;
6
6
  export declare const useGridRowPinning: (apiRef: RefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, "pinnedRows" | "getRowId">) => void;