@mui/x-data-grid 7.0.0-beta.3 → 7.0.0-beta.5

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 (531) hide show
  1. package/CHANGELOG.md +357 -22
  2. package/DataGrid/DataGrid.js +2 -0
  3. package/colDef/gridActionsColDef.js +1 -0
  4. package/colDef/gridBooleanColDef.js +1 -0
  5. package/colDef/gridBooleanOperators.js +1 -1
  6. package/colDef/gridCheckboxSelectionColDef.js +1 -0
  7. package/components/GridRow.d.ts +7 -9
  8. package/components/GridRow.js +36 -47
  9. package/components/GridScrollbarFillerCell.js +6 -21
  10. package/components/cell/GridCell.d.ts +2 -1
  11. package/components/cell/GridCell.js +17 -15
  12. package/components/cell/GridSkeletonCell.d.ts +3 -2
  13. package/components/cell/GridSkeletonCell.js +14 -6
  14. package/components/columnSelection/GridCellCheckboxRenderer.js +7 -6
  15. package/components/columnsManagement/GridColumnsManagement.js +1 -1
  16. package/components/containers/GridRootStyles.js +59 -21
  17. package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +8 -2
  18. package/components/virtualization/GridBottomContainer.js +1 -1
  19. package/components/virtualization/GridTopContainer.js +1 -1
  20. package/components/virtualization/GridVirtualScroller.js +2 -2
  21. package/components/virtualization/GridVirtualScrollerRenderZone.js +9 -3
  22. package/constants/gridClasses.d.ts +24 -8
  23. package/constants/gridClasses.js +1 -1
  24. package/hooks/features/clipboard/useGridClipboard.js +1 -1
  25. package/hooks/features/columnHeaders/useGridColumnHeaders.js +11 -8
  26. package/hooks/features/columns/gridColumnsSelector.d.ts +6 -0
  27. package/hooks/features/columns/gridColumnsSelector.js +8 -1
  28. package/hooks/features/columns/useGridColumns.js +4 -0
  29. package/hooks/features/editing/useGridCellEditing.js +3 -4
  30. package/hooks/features/editing/useGridRowEditing.js +4 -6
  31. package/hooks/features/filter/useGridFilter.js +2 -2
  32. package/hooks/features/rows/useGridRows.js +8 -4
  33. package/hooks/features/rows/useGridRowsMeta.js +5 -13
  34. package/hooks/features/sorting/gridSortingUtils.js +9 -1
  35. package/hooks/features/sorting/useGridSorting.js +1 -2
  36. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +0 -9
  37. package/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -7
  38. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +3 -0
  39. package/hooks/features/virtualization/useGridVirtualScroller.js +82 -138
  40. package/hooks/features/virtualization/useGridVirtualization.d.ts +0 -8
  41. package/hooks/features/virtualization/useGridVirtualization.js +1 -6
  42. package/hooks/utils/useTimeout.d.ts +5 -3
  43. package/hooks/utils/useTimeout.js +13 -5
  44. package/index.js +1 -1
  45. package/internals/index.d.ts +1 -1
  46. package/internals/index.js +1 -1
  47. package/models/colDef/gridColDef.d.ts +13 -0
  48. package/modern/DataGrid/DataGrid.js +2 -0
  49. package/modern/colDef/gridActionsColDef.js +1 -0
  50. package/modern/colDef/gridBooleanColDef.js +1 -0
  51. package/modern/colDef/gridBooleanOperators.js +1 -1
  52. package/modern/colDef/gridCheckboxSelectionColDef.js +1 -0
  53. package/modern/components/GridRow.js +35 -46
  54. package/modern/components/GridScrollbarFillerCell.js +6 -21
  55. package/modern/components/cell/GridCell.js +17 -15
  56. package/modern/components/cell/GridSkeletonCell.js +14 -6
  57. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +7 -6
  58. package/modern/components/columnsManagement/GridColumnsManagement.js +1 -1
  59. package/modern/components/containers/GridRootStyles.js +59 -21
  60. package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +8 -2
  61. package/modern/components/virtualization/GridBottomContainer.js +1 -1
  62. package/modern/components/virtualization/GridTopContainer.js +1 -1
  63. package/modern/components/virtualization/GridVirtualScroller.js +2 -2
  64. package/modern/components/virtualization/GridVirtualScrollerRenderZone.js +8 -3
  65. package/modern/constants/gridClasses.js +1 -1
  66. package/modern/hooks/features/clipboard/useGridClipboard.js +1 -1
  67. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +11 -8
  68. package/modern/hooks/features/columns/gridColumnsSelector.js +8 -1
  69. package/modern/hooks/features/columns/useGridColumns.js +2 -0
  70. package/modern/hooks/features/editing/useGridCellEditing.js +3 -4
  71. package/modern/hooks/features/editing/useGridRowEditing.js +4 -6
  72. package/modern/hooks/features/filter/useGridFilter.js +2 -2
  73. package/modern/hooks/features/rows/useGridRows.js +8 -4
  74. package/modern/hooks/features/rows/useGridRowsMeta.js +5 -13
  75. package/modern/hooks/features/sorting/gridSortingUtils.js +9 -1
  76. package/modern/hooks/features/sorting/useGridSorting.js +1 -2
  77. package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -7
  78. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +80 -136
  79. package/modern/hooks/features/virtualization/useGridVirtualization.js +1 -6
  80. package/modern/hooks/utils/useTimeout.js +13 -5
  81. package/modern/index.js +1 -1
  82. package/modern/internals/index.js +1 -1
  83. package/modern/utils/keyboardUtils.js +20 -11
  84. package/modern/utils/utils.js +9 -0
  85. package/node/DataGrid/DataGrid.js +1 -0
  86. package/node/colDef/gridActionsColDef.js +1 -0
  87. package/node/colDef/gridBooleanColDef.js +1 -0
  88. package/node/colDef/gridBooleanOperators.js +1 -1
  89. package/node/colDef/gridCheckboxSelectionColDef.js +1 -0
  90. package/node/components/GridRow.js +35 -46
  91. package/node/components/GridScrollbarFillerCell.js +5 -20
  92. package/node/components/cell/GridCell.js +17 -15
  93. package/node/components/cell/GridSkeletonCell.js +15 -7
  94. package/node/components/columnSelection/GridCellCheckboxRenderer.js +7 -6
  95. package/node/components/columnsManagement/GridColumnsManagement.js +1 -1
  96. package/node/components/containers/GridRootStyles.js +59 -21
  97. package/node/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +8 -2
  98. package/node/components/virtualization/GridBottomContainer.js +1 -1
  99. package/node/components/virtualization/GridTopContainer.js +1 -1
  100. package/node/components/virtualization/GridVirtualScroller.js +2 -2
  101. package/node/components/virtualization/GridVirtualScrollerRenderZone.js +7 -2
  102. package/node/constants/gridClasses.js +1 -1
  103. package/node/hooks/features/clipboard/useGridClipboard.js +1 -1
  104. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +8 -5
  105. package/node/hooks/features/columns/gridColumnsSelector.js +9 -2
  106. package/node/hooks/features/columns/useGridColumns.js +2 -0
  107. package/node/hooks/features/editing/useGridCellEditing.js +2 -3
  108. package/node/hooks/features/editing/useGridRowEditing.js +3 -5
  109. package/node/hooks/features/filter/useGridFilter.js +2 -2
  110. package/node/hooks/features/rows/useGridRows.js +8 -4
  111. package/node/hooks/features/rows/useGridRowsMeta.js +5 -13
  112. package/node/hooks/features/sorting/gridSortingUtils.js +9 -1
  113. package/node/hooks/features/sorting/useGridSorting.js +1 -2
  114. package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +1 -8
  115. package/node/hooks/features/virtualization/useGridVirtualScroller.js +81 -136
  116. package/node/hooks/features/virtualization/useGridVirtualization.js +2 -7
  117. package/node/hooks/utils/useTimeout.js +13 -4
  118. package/node/index.js +1 -1
  119. package/node/internals/index.js +7 -0
  120. package/node/utils/keyboardUtils.js +25 -20
  121. package/node/utils/utils.js +12 -1
  122. package/package.json +1 -1
  123. package/utils/keyboardUtils.d.ts +7 -6
  124. package/utils/keyboardUtils.js +20 -11
  125. package/utils/utils.d.ts +4 -0
  126. package/utils/utils.js +9 -0
  127. package/legacy/DataGrid/DataGrid.js +0 -664
  128. package/legacy/DataGrid/index.js +0 -2
  129. package/legacy/DataGrid/useDataGridComponent.js +0 -81
  130. package/legacy/DataGrid/useDataGridProps.js +0 -98
  131. package/legacy/colDef/gridActionsColDef.js +0 -18
  132. package/legacy/colDef/gridBooleanColDef.js +0 -42
  133. package/legacy/colDef/gridBooleanOperators.js +0 -16
  134. package/legacy/colDef/gridCheckboxSelectionColDef.js +0 -33
  135. package/legacy/colDef/gridDateColDef.js +0 -62
  136. package/legacy/colDef/gridDateOperators.js +0 -115
  137. package/legacy/colDef/gridDefaultColumnTypes.js +0 -19
  138. package/legacy/colDef/gridNumericColDef.js +0 -19
  139. package/legacy/colDef/gridNumericOperators.js +0 -145
  140. package/legacy/colDef/gridSingleSelectColDef.js +0 -64
  141. package/legacy/colDef/gridSingleSelectOperators.js +0 -46
  142. package/legacy/colDef/gridStringColDef.js +0 -27
  143. package/legacy/colDef/gridStringOperators.js +0 -112
  144. package/legacy/colDef/index.js +0 -13
  145. package/legacy/components/GridApiContext.js +0 -5
  146. package/legacy/components/GridColumnHeaders.js +0 -94
  147. package/legacy/components/GridDetailPanels.js +0 -4
  148. package/legacy/components/GridFooter.js +0 -42
  149. package/legacy/components/GridHeader.js +0 -13
  150. package/legacy/components/GridHeaders.js +0 -53
  151. package/legacy/components/GridLoadingOverlay.js +0 -21
  152. package/legacy/components/GridNoResultsOverlay.js +0 -14
  153. package/legacy/components/GridNoRowsOverlay.js +0 -23
  154. package/legacy/components/GridPagination.js +0 -85
  155. package/legacy/components/GridPinnedRows.js +0 -4
  156. package/legacy/components/GridRow.js +0 -465
  157. package/legacy/components/GridRowCount.js +0 -63
  158. package/legacy/components/GridScrollbarFillerCell.js +0 -34
  159. package/legacy/components/GridSelectedRowCount.js +0 -66
  160. package/legacy/components/base/GridBody.js +0 -2
  161. package/legacy/components/base/GridFooterPlaceholder.js +0 -12
  162. package/legacy/components/base/GridOverlays.js +0 -122
  163. package/legacy/components/base/index.js +0 -3
  164. package/legacy/components/cell/GridActionsCell.js +0 -294
  165. package/legacy/components/cell/GridActionsCellItem.js +0 -69
  166. package/legacy/components/cell/GridBooleanCell.js +0 -121
  167. package/legacy/components/cell/GridCell.js +0 -350
  168. package/legacy/components/cell/GridEditBooleanCell.js +0 -174
  169. package/legacy/components/cell/GridEditDateCell.js +0 -230
  170. package/legacy/components/cell/GridEditInputCell.js +0 -198
  171. package/legacy/components/cell/GridEditSingleSelectCell.js +0 -231
  172. package/legacy/components/cell/GridSkeletonCell.js +0 -52
  173. package/legacy/components/cell/index.js +0 -9
  174. package/legacy/components/columnHeaders/ColumnHeaderMenuIcon.js +0 -59
  175. package/legacy/components/columnHeaders/GridBaseColumnHeaders.js +0 -41
  176. package/legacy/components/columnHeaders/GridColumnGroupHeader.js +0 -132
  177. package/legacy/components/columnHeaders/GridColumnHeaderFilterIconButton.js +0 -93
  178. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +0 -212
  179. package/legacy/components/columnHeaders/GridColumnHeaderSeparator.js +0 -71
  180. package/legacy/components/columnHeaders/GridColumnHeaderSortIcon.js +0 -79
  181. package/legacy/components/columnHeaders/GridColumnHeaderTitle.js +0 -84
  182. package/legacy/components/columnHeaders/GridColumnHeadersInner.js +0 -55
  183. package/legacy/components/columnHeaders/GridGenericColumnHeaderItem.js +0 -107
  184. package/legacy/components/columnHeaders/GridIconButtonContainer.js +0 -41
  185. package/legacy/components/columnHeaders/index.js +0 -5
  186. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +0 -160
  187. package/legacy/components/columnSelection/GridHeaderCheckbox.js +0 -134
  188. package/legacy/components/columnSelection/index.js +0 -2
  189. package/legacy/components/columnsManagement/GridColumnsManagement.js +0 -307
  190. package/legacy/components/columnsManagement/index.js +0 -1
  191. package/legacy/components/columnsManagement/utils.js +0 -22
  192. package/legacy/components/containers/GridFooterContainer.js +0 -50
  193. package/legacy/components/containers/GridOverlay.js +0 -52
  194. package/legacy/components/containers/GridRoot.js +0 -79
  195. package/legacy/components/containers/GridRootStyles.js +0 -395
  196. package/legacy/components/containers/GridToolbarContainer.js +0 -59
  197. package/legacy/components/containers/index.js +0 -4
  198. package/legacy/components/index.js +0 -19
  199. package/legacy/components/menu/GridMenu.js +0 -132
  200. package/legacy/components/menu/columnMenu/GridColumnHeaderMenu.js +0 -61
  201. package/legacy/components/menu/columnMenu/GridColumnMenu.js +0 -81
  202. package/legacy/components/menu/columnMenu/GridColumnMenuContainer.js +0 -56
  203. package/legacy/components/menu/columnMenu/GridColumnMenuItemProps.js +0 -1
  204. package/legacy/components/menu/columnMenu/GridColumnMenuProps.js +0 -1
  205. package/legacy/components/menu/columnMenu/index.js +0 -9
  206. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuColumnsItem.js +0 -21
  207. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.js +0 -41
  208. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.js +0 -60
  209. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.js +0 -41
  210. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +0 -80
  211. package/legacy/components/menu/columnMenu/menuItems/index.js +0 -5
  212. package/legacy/components/menu/index.js +0 -2
  213. package/legacy/components/panel/GridColumnsPanel.js +0 -22
  214. package/legacy/components/panel/GridPanel.js +0 -137
  215. package/legacy/components/panel/GridPanelContent.js +0 -49
  216. package/legacy/components/panel/GridPanelFooter.js +0 -50
  217. package/legacy/components/panel/GridPanelHeader.js +0 -48
  218. package/legacy/components/panel/GridPanelWrapper.js +0 -64
  219. package/legacy/components/panel/GridPreferencesPanel.js +0 -26
  220. package/legacy/components/panel/filterPanel/GridFilterForm.js +0 -528
  221. package/legacy/components/panel/filterPanel/GridFilterInputBoolean.js +0 -118
  222. package/legacy/components/panel/filterPanel/GridFilterInputDate.js +0 -121
  223. package/legacy/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -116
  224. package/legacy/components/panel/filterPanel/GridFilterInputMultipleValue.js +0 -102
  225. package/legacy/components/panel/filterPanel/GridFilterInputSingleSelect.js +0 -149
  226. package/legacy/components/panel/filterPanel/GridFilterInputValue.js +0 -106
  227. package/legacy/components/panel/filterPanel/GridFilterInputValueProps.js +0 -1
  228. package/legacy/components/panel/filterPanel/GridFilterPanel.js +0 -264
  229. package/legacy/components/panel/filterPanel/filterPanelUtils.js +0 -22
  230. package/legacy/components/panel/filterPanel/index.js +0 -9
  231. package/legacy/components/panel/index.js +0 -7
  232. package/legacy/components/reexportable.js +0 -1
  233. package/legacy/components/toolbar/GridToolbar.js +0 -64
  234. package/legacy/components/toolbar/GridToolbarColumnsButton.js +0 -68
  235. package/legacy/components/toolbar/GridToolbarDensitySelector.js +0 -142
  236. package/legacy/components/toolbar/GridToolbarExport.js +0 -80
  237. package/legacy/components/toolbar/GridToolbarExportContainer.js +0 -105
  238. package/legacy/components/toolbar/GridToolbarFilterButton.js +0 -136
  239. package/legacy/components/toolbar/GridToolbarQuickFilter.js +0 -164
  240. package/legacy/components/toolbar/index.js +0 -7
  241. package/legacy/components/virtualization/GridBottomContainer.js +0 -25
  242. package/legacy/components/virtualization/GridMainContainer.js +0 -20
  243. package/legacy/components/virtualization/GridTopContainer.js +0 -35
  244. package/legacy/components/virtualization/GridVirtualScrollbar.js +0 -129
  245. package/legacy/components/virtualization/GridVirtualScroller.js +0 -93
  246. package/legacy/components/virtualization/GridVirtualScrollerContent.js +0 -35
  247. package/legacy/components/virtualization/GridVirtualScrollerFiller.js +0 -70
  248. package/legacy/components/virtualization/GridVirtualScrollerRenderZone.js +0 -49
  249. package/legacy/constants/defaultGridSlotsComponents.js +0 -33
  250. package/legacy/constants/envConstants.js +0 -19
  251. package/legacy/constants/gridClasses.js +0 -5
  252. package/legacy/constants/gridDetailPanelToggleField.js +0 -2
  253. package/legacy/constants/index.js +0 -3
  254. package/legacy/constants/localeTextConstants.js +0 -158
  255. package/legacy/context/GridContextProvider.js +0 -21
  256. package/legacy/context/GridRootPropsContext.js +0 -6
  257. package/legacy/context/index.js +0 -1
  258. package/legacy/hooks/core/gridCoreSelector.js +0 -7
  259. package/legacy/hooks/core/index.js +0 -1
  260. package/legacy/hooks/core/pipeProcessing/gridPipeProcessingApi.js +0 -1
  261. package/legacy/hooks/core/pipeProcessing/index.js +0 -4
  262. package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +0 -114
  263. package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +0 -26
  264. package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -26
  265. package/legacy/hooks/core/strategyProcessing/gridStrategyProcessingApi.js +0 -1
  266. package/legacy/hooks/core/strategyProcessing/index.js +0 -3
  267. package/legacy/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.js +0 -18
  268. package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +0 -116
  269. package/legacy/hooks/core/useGridApiInitialization.js +0 -124
  270. package/legacy/hooks/core/useGridInitialization.js +0 -26
  271. package/legacy/hooks/core/useGridLocaleText.js +0 -12
  272. package/legacy/hooks/core/useGridLoggerFactory.js +0 -51
  273. package/legacy/hooks/core/useGridRefs.js +0 -13
  274. package/legacy/hooks/core/useGridStateInitialization.js +0 -106
  275. package/legacy/hooks/core/useGridTheme.js +0 -21
  276. package/legacy/hooks/features/clipboard/useGridClipboard.js +0 -92
  277. package/legacy/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +0 -1
  278. package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +0 -24
  279. package/legacy/hooks/features/columnGrouping/gridColumnGroupsUtils.js +0 -92
  280. package/legacy/hooks/features/columnGrouping/index.js +0 -2
  281. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +0 -140
  282. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +0 -272
  283. package/legacy/hooks/features/columnMenu/columnMenuInterfaces.js +0 -1
  284. package/legacy/hooks/features/columnMenu/columnMenuSelector.js +0 -3
  285. package/legacy/hooks/features/columnMenu/index.js +0 -2
  286. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +0 -108
  287. package/legacy/hooks/features/columnMenu/useGridColumnMenuSlots.js +0 -71
  288. package/legacy/hooks/features/columns/gridColumnsInterfaces.js +0 -9
  289. package/legacy/hooks/features/columns/gridColumnsSelector.js +0 -174
  290. package/legacy/hooks/features/columns/gridColumnsUtils.js +0 -338
  291. package/legacy/hooks/features/columns/index.js +0 -2
  292. package/legacy/hooks/features/columns/useGridColumnSpanning.js +0 -105
  293. package/legacy/hooks/features/columns/useGridColumns.js +0 -319
  294. package/legacy/hooks/features/density/densitySelector.js +0 -10
  295. package/legacy/hooks/features/density/densityState.js +0 -1
  296. package/legacy/hooks/features/density/index.js +0 -2
  297. package/legacy/hooks/features/density/useGridDensity.js +0 -48
  298. package/legacy/hooks/features/dimensions/gridDimensionsApi.js +0 -1
  299. package/legacy/hooks/features/dimensions/gridDimensionsSelectors.js +0 -3
  300. package/legacy/hooks/features/dimensions/index.js +0 -2
  301. package/legacy/hooks/features/dimensions/useGridDimensions.js +0 -302
  302. package/legacy/hooks/features/editing/gridEditingSelectors.js +0 -4
  303. package/legacy/hooks/features/editing/useGridCellEditing.js +0 -456
  304. package/legacy/hooks/features/editing/useGridEditing.js +0 -145
  305. package/legacy/hooks/features/editing/useGridRowEditing.js +0 -567
  306. package/legacy/hooks/features/events/useGridEvents.js +0 -23
  307. package/legacy/hooks/features/export/serializers/csvSerializer.js +0 -155
  308. package/legacy/hooks/features/export/useGridCsvExport.js +0 -75
  309. package/legacy/hooks/features/export/useGridPrintExport.js +0 -313
  310. package/legacy/hooks/features/export/utils.js +0 -49
  311. package/legacy/hooks/features/filter/gridFilterSelector.js +0 -165
  312. package/legacy/hooks/features/filter/gridFilterState.js +0 -20
  313. package/legacy/hooks/features/filter/gridFilterUtils.js +0 -330
  314. package/legacy/hooks/features/filter/index.js +0 -2
  315. package/legacy/hooks/features/filter/useGridFilter.js +0 -378
  316. package/legacy/hooks/features/focus/gridFocusState.js +0 -1
  317. package/legacy/hooks/features/focus/gridFocusStateSelector.js +0 -31
  318. package/legacy/hooks/features/focus/index.js +0 -2
  319. package/legacy/hooks/features/focus/useGridFocus.js +0 -408
  320. package/legacy/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +0 -10
  321. package/legacy/hooks/features/headerFiltering/index.js +0 -1
  322. package/legacy/hooks/features/headerFiltering/useGridHeaderFiltering.js +0 -93
  323. package/legacy/hooks/features/index.js +0 -16
  324. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +0 -565
  325. package/legacy/hooks/features/pagination/gridPaginationInterfaces.js +0 -1
  326. package/legacy/hooks/features/pagination/gridPaginationSelector.js +0 -115
  327. package/legacy/hooks/features/pagination/gridPaginationUtils.js +0 -31
  328. package/legacy/hooks/features/pagination/index.js +0 -2
  329. package/legacy/hooks/features/pagination/useGridPagination.js +0 -175
  330. package/legacy/hooks/features/preferencesPanel/gridPreferencePanelSelector.js +0 -3
  331. package/legacy/hooks/features/preferencesPanel/gridPreferencePanelState.js +0 -1
  332. package/legacy/hooks/features/preferencesPanel/gridPreferencePanelsValue.js +0 -6
  333. package/legacy/hooks/features/preferencesPanel/index.js +0 -3
  334. package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +0 -125
  335. package/legacy/hooks/features/rowSelection/gridRowSelectionSelector.js +0 -19
  336. package/legacy/hooks/features/rowSelection/index.js +0 -1
  337. package/legacy/hooks/features/rowSelection/useGridRowSelection.js +0 -419
  338. package/legacy/hooks/features/rowSelection/useGridRowSelectionPreProcessors.js +0 -45
  339. package/legacy/hooks/features/rowSelection/utils.js +0 -8
  340. package/legacy/hooks/features/rows/gridRowsInterfaces.js +0 -1
  341. package/legacy/hooks/features/rows/gridRowsMetaSelector.js +0 -3
  342. package/legacy/hooks/features/rows/gridRowsMetaState.js +0 -1
  343. package/legacy/hooks/features/rows/gridRowsSelector.js +0 -90
  344. package/legacy/hooks/features/rows/gridRowsUtils.js +0 -294
  345. package/legacy/hooks/features/rows/index.js +0 -4
  346. package/legacy/hooks/features/rows/useGridParamsApi.js +0 -142
  347. package/legacy/hooks/features/rows/useGridRows.js +0 -466
  348. package/legacy/hooks/features/rows/useGridRowsMeta.js +0 -236
  349. package/legacy/hooks/features/rows/useGridRowsPreProcessors.js +0 -82
  350. package/legacy/hooks/features/scroll/useGridScroll.js +0 -133
  351. package/legacy/hooks/features/sorting/gridSortingSelector.js +0 -56
  352. package/legacy/hooks/features/sorting/gridSortingState.js +0 -1
  353. package/legacy/hooks/features/sorting/gridSortingUtils.js +0 -154
  354. package/legacy/hooks/features/sorting/index.js +0 -2
  355. package/legacy/hooks/features/sorting/useGridSorting.js +0 -276
  356. package/legacy/hooks/features/statePersistence/gridStatePersistenceInterface.js +0 -1
  357. package/legacy/hooks/features/statePersistence/index.js +0 -1
  358. package/legacy/hooks/features/statePersistence/useGridStatePersistence.js +0 -25
  359. package/legacy/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -61
  360. package/legacy/hooks/features/virtualization/index.js +0 -2
  361. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +0 -646
  362. package/legacy/hooks/features/virtualization/useGridVirtualization.js +0 -63
  363. package/legacy/hooks/index.js +0 -3
  364. package/legacy/hooks/utils/index.js +0 -9
  365. package/legacy/hooks/utils/useFirstRender.js +0 -8
  366. package/legacy/hooks/utils/useGridApiContext.js +0 -9
  367. package/legacy/hooks/utils/useGridApiEventHandler.js +0 -105
  368. package/legacy/hooks/utils/useGridApiMethod.js +0 -11
  369. package/legacy/hooks/utils/useGridApiRef.js +0 -7
  370. package/legacy/hooks/utils/useGridAriaAttributes.js +0 -25
  371. package/legacy/hooks/utils/useGridInitializeState.js +0 -8
  372. package/legacy/hooks/utils/useGridLogger.js +0 -10
  373. package/legacy/hooks/utils/useGridNativeEventListener.js +0 -32
  374. package/legacy/hooks/utils/useGridPrivateApiContext.js +0 -12
  375. package/legacy/hooks/utils/useGridRootProps.js +0 -9
  376. package/legacy/hooks/utils/useGridSelector.js +0 -54
  377. package/legacy/hooks/utils/useGridVisibleRows.js +0 -42
  378. package/legacy/hooks/utils/useLazyRef.js +0 -11
  379. package/legacy/hooks/utils/useOnMount.js +0 -7
  380. package/legacy/hooks/utils/useResizeObserver.js +0 -36
  381. package/legacy/hooks/utils/useRunOnce.js +0 -18
  382. package/legacy/hooks/utils/useTimeout.js +0 -38
  383. package/legacy/index.js +0 -38
  384. package/legacy/internals/index.js +0 -68
  385. package/legacy/internals/utils/computeSlots.js +0 -17
  386. package/legacy/internals/utils/index.js +0 -3
  387. package/legacy/internals/utils/propValidation.js +0 -21
  388. package/legacy/internals/utils/useProps.js +0 -32
  389. package/legacy/joy/icons.js +0 -432
  390. package/legacy/joy/index.js +0 -2
  391. package/legacy/joy/joySlots.js +0 -420
  392. package/legacy/locales/arSD.js +0 -160
  393. package/legacy/locales/beBY.js +0 -184
  394. package/legacy/locales/bgBG.js +0 -160
  395. package/legacy/locales/coreLocales.js +0 -62
  396. package/legacy/locales/csCZ.js +0 -181
  397. package/legacy/locales/daDK.js +0 -160
  398. package/legacy/locales/deDE.js +0 -160
  399. package/legacy/locales/elGR.js +0 -160
  400. package/legacy/locales/enUS.js +0 -4
  401. package/legacy/locales/esES.js +0 -160
  402. package/legacy/locales/faIR.js +0 -160
  403. package/legacy/locales/fiFI.js +0 -160
  404. package/legacy/locales/frFR.js +0 -160
  405. package/legacy/locales/heIL.js +0 -160
  406. package/legacy/locales/hrHR.js +0 -160
  407. package/legacy/locales/huHU.js +0 -160
  408. package/legacy/locales/index.js +0 -35
  409. package/legacy/locales/itIT.js +0 -160
  410. package/legacy/locales/jaJP.js +0 -160
  411. package/legacy/locales/koKR.js +0 -162
  412. package/legacy/locales/nbNO.js +0 -162
  413. package/legacy/locales/nlNL.js +0 -160
  414. package/legacy/locales/plPL.js +0 -163
  415. package/legacy/locales/ptBR.js +0 -160
  416. package/legacy/locales/ptPT.js +0 -160
  417. package/legacy/locales/roRO.js +0 -160
  418. package/legacy/locales/ruRU.js +0 -181
  419. package/legacy/locales/skSK.js +0 -181
  420. package/legacy/locales/svSE.js +0 -160
  421. package/legacy/locales/trTR.js +0 -161
  422. package/legacy/locales/ukUA.js +0 -182
  423. package/legacy/locales/urPK.js +0 -160
  424. package/legacy/locales/viVN.js +0 -160
  425. package/legacy/locales/zhCN.js +0 -160
  426. package/legacy/locales/zhHK.js +0 -160
  427. package/legacy/locales/zhTW.js +0 -160
  428. package/legacy/material/components/MUISelectOption.js +0 -14
  429. package/legacy/material/icons/GridColumnUnsortedIcon.js +0 -16
  430. package/legacy/material/icons/index.js +0 -89
  431. package/legacy/material/index.js +0 -69
  432. package/legacy/models/api/gridApiCommon.js +0 -1
  433. package/legacy/models/api/gridApiCommunity.js +0 -1
  434. package/legacy/models/api/gridCallbackDetails.js +0 -1
  435. package/legacy/models/api/gridColumnApi.js +0 -1
  436. package/legacy/models/api/gridColumnGroupingApi.js +0 -1
  437. package/legacy/models/api/gridColumnMenuApi.js +0 -1
  438. package/legacy/models/api/gridColumnSpanning.js +0 -1
  439. package/legacy/models/api/gridCoreApi.js +0 -1
  440. package/legacy/models/api/gridCsvExportApi.js +0 -1
  441. package/legacy/models/api/gridDensityApi.js +0 -1
  442. package/legacy/models/api/gridEditingApi.js +0 -1
  443. package/legacy/models/api/gridFilterApi.js +0 -1
  444. package/legacy/models/api/gridFocusApi.js +0 -1
  445. package/legacy/models/api/gridHeaderFilteringApi.js +0 -1
  446. package/legacy/models/api/gridLocaleTextApi.js +0 -1
  447. package/legacy/models/api/gridLoggerApi.js +0 -1
  448. package/legacy/models/api/gridParamsApi.js +0 -1
  449. package/legacy/models/api/gridPreferencesPanelApi.js +0 -1
  450. package/legacy/models/api/gridPrintExportApi.js +0 -1
  451. package/legacy/models/api/gridRowApi.js +0 -1
  452. package/legacy/models/api/gridRowSelectionApi.js +0 -1
  453. package/legacy/models/api/gridRowsMetaApi.js +0 -1
  454. package/legacy/models/api/gridScrollApi.js +0 -1
  455. package/legacy/models/api/gridSortApi.js +0 -1
  456. package/legacy/models/api/gridStateApi.js +0 -1
  457. package/legacy/models/api/gridVirtualizationApi.js +0 -1
  458. package/legacy/models/api/index.js +0 -16
  459. package/legacy/models/colDef/gridColDef.js +0 -1
  460. package/legacy/models/colDef/gridColType.js +0 -1
  461. package/legacy/models/colDef/gridColumnTypesRecord.js +0 -1
  462. package/legacy/models/colDef/index.js +0 -6
  463. package/legacy/models/controlStateItem.js +0 -1
  464. package/legacy/models/cursorCoordinates.js +0 -1
  465. package/legacy/models/elementSize.js +0 -1
  466. package/legacy/models/events/gridEventListener.js +0 -1
  467. package/legacy/models/events/gridEventLookup.js +0 -1
  468. package/legacy/models/events/gridEventPublisher.js +0 -1
  469. package/legacy/models/events/index.js +0 -3
  470. package/legacy/models/gridApiCaches.js +0 -1
  471. package/legacy/models/gridCell.js +0 -1
  472. package/legacy/models/gridCellClass.js +0 -1
  473. package/legacy/models/gridColumnGrouping.js +0 -11
  474. package/legacy/models/gridColumnHeaderClass.js +0 -1
  475. package/legacy/models/gridColumnSpanning.js +0 -1
  476. package/legacy/models/gridDensity.js +0 -1
  477. package/legacy/models/gridEditRowModel.js +0 -16
  478. package/legacy/models/gridExport.js +0 -1
  479. package/legacy/models/gridFeatureMode.js +0 -1
  480. package/legacy/models/gridFilterItem.js +0 -11
  481. package/legacy/models/gridFilterModel.js +0 -1
  482. package/legacy/models/gridFilterOperator.js +0 -1
  483. package/legacy/models/gridHeaderFilteringModel.js +0 -1
  484. package/legacy/models/gridIconSlotsComponent.js +0 -1
  485. package/legacy/models/gridPaginationProps.js +0 -1
  486. package/legacy/models/gridRenderContextProps.js +0 -1
  487. package/legacy/models/gridRowSelectionModel.js +0 -1
  488. package/legacy/models/gridRows.js +0 -1
  489. package/legacy/models/gridSlotsComponent.js +0 -1
  490. package/legacy/models/gridSlotsComponentsProps.js +0 -1
  491. package/legacy/models/gridSortModel.js +0 -1
  492. package/legacy/models/gridStateCommunity.js +0 -1
  493. package/legacy/models/index.js +0 -29
  494. package/legacy/models/logger.js +0 -1
  495. package/legacy/models/muiEvent.js +0 -1
  496. package/legacy/models/params/gridCellParams.js +0 -1
  497. package/legacy/models/params/gridColumnGroupHeaderParams.js +0 -1
  498. package/legacy/models/params/gridColumnHeaderParams.js +0 -1
  499. package/legacy/models/params/gridColumnOrderChangeParams.js +0 -1
  500. package/legacy/models/params/gridColumnResizeParams.js +0 -1
  501. package/legacy/models/params/gridEditCellParams.js +0 -27
  502. package/legacy/models/params/gridHeaderSelectionCheckboxParams.js +0 -1
  503. package/legacy/models/params/gridMenuParams.js +0 -1
  504. package/legacy/models/params/gridPreferencePanelParams.js +0 -1
  505. package/legacy/models/params/gridRowParams.js +0 -44
  506. package/legacy/models/params/gridRowSelectionCheckboxParams.js +0 -1
  507. package/legacy/models/params/gridScrollParams.js +0 -1
  508. package/legacy/models/params/gridValueOptionsParams.js +0 -1
  509. package/legacy/models/params/index.js +0 -13
  510. package/legacy/models/props/DataGridProps.js +0 -1
  511. package/legacy/themeAugmentation/index.js +0 -4
  512. package/legacy/themeAugmentation/overrides.js +0 -1
  513. package/legacy/themeAugmentation/props.js +0 -1
  514. package/legacy/utils/EventManager.js +0 -91
  515. package/legacy/utils/Store.js +0 -34
  516. package/legacy/utils/cleanupTracking/CleanupTracking.js +0 -1
  517. package/legacy/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -29
  518. package/legacy/utils/cleanupTracking/TimerBasedCleanupTracking.js +0 -52
  519. package/legacy/utils/createControllablePromise.js +0 -11
  520. package/legacy/utils/createSelector.js +0 -120
  521. package/legacy/utils/doesSupportPreventScroll.js +0 -13
  522. package/legacy/utils/domUtils.js +0 -49
  523. package/legacy/utils/exportAs.js +0 -40
  524. package/legacy/utils/fastMemo.js +0 -5
  525. package/legacy/utils/fastObjectShallowCompare.js +0 -32
  526. package/legacy/utils/getGridLocalization.js +0 -15
  527. package/legacy/utils/getPublicApiRef.js +0 -5
  528. package/legacy/utils/index.js +0 -1
  529. package/legacy/utils/keyboardUtils.js +0 -60
  530. package/legacy/utils/utils.js +0 -189
  531. package/legacy/utils/warning.js +0 -25
@@ -1,646 +0,0 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
- import _extends from "@babel/runtime/helpers/esm/extends";
3
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
- import * as React from 'react';
5
- import * as ReactDOM from 'react-dom';
6
- import { unstable_useEnhancedEffect as useEnhancedEffect, unstable_useEventCallback as useEventCallback } from '@mui/utils';
7
- import { useTheme } from '@mui/material/styles';
8
- import { defaultMemoize } from 'reselect';
9
- import { useGridPrivateApiContext } from '../../utils/useGridPrivateApiContext';
10
- import { useGridRootProps } from '../../utils/useGridRootProps';
11
- import { useGridSelector } from '../../utils/useGridSelector';
12
- import { useLazyRef } from '../../utils/useLazyRef';
13
- import { useResizeObserver } from '../../utils/useResizeObserver';
14
- import { useRunOnce } from '../../utils/useRunOnce';
15
- import { gridVisibleColumnDefinitionsSelector, gridVisiblePinnedColumnDefinitionsSelector, gridColumnPositionsSelector } from '../columns/gridColumnsSelector';
16
- import { gridDimensionsSelector } from '../dimensions/gridDimensionsSelectors';
17
- import { gridPinnedRowsSelector } from '../rows/gridRowsSelector';
18
- import { gridFocusCellSelector, gridTabIndexCellSelector } from '../focus/gridFocusStateSelector';
19
- import { useGridVisibleRows, getVisibleRows } from '../../utils/useGridVisibleRows';
20
- import { clamp } from '../../../utils/utils';
21
- import { selectedIdsLookupSelector } from '../rowSelection/gridRowSelectionSelector';
22
- import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
23
- import { getFirstNonSpannedColumnToRender } from '../columns/gridColumnsUtils';
24
- import { getMinimalContentHeight } from '../rows/gridRowsUtils';
25
- import { gridOffsetsSelector, gridRenderContextSelector, gridVirtualizationEnabledSelector, gridVirtualizationColumnEnabledSelector } from './gridVirtualizationSelectors';
26
- import { EMPTY_RENDER_CONTEXT } from './useGridVirtualization';
27
- import { jsx as _jsx } from "react/jsx-runtime";
28
- export var EMPTY_DETAIL_PANELS = Object.freeze(new Map());
29
- export var useGridVirtualScroller = function useGridVirtualScroller() {
30
- var apiRef = useGridPrivateApiContext();
31
- var rootProps = useGridRootProps();
32
- var visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
33
- var enabled = useGridSelector(apiRef, gridVirtualizationEnabledSelector);
34
- var enabledForColumns = useGridSelector(apiRef, gridVirtualizationColumnEnabledSelector);
35
- var dimensions = useGridSelector(apiRef, gridDimensionsSelector);
36
- var outerSize = dimensions.viewportOuterSize;
37
- var pinnedRows = useGridSelector(apiRef, gridPinnedRowsSelector);
38
- var pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
39
- var hasBottomPinnedRows = pinnedRows.bottom.length > 0;
40
- var _React$useState = React.useState(EMPTY_DETAIL_PANELS),
41
- _React$useState2 = _slicedToArray(_React$useState, 2),
42
- panels = _React$useState2[0],
43
- setPanels = _React$useState2[1];
44
- var theme = useTheme();
45
- var cellFocus = useGridSelector(apiRef, gridFocusCellSelector);
46
- var cellTabIndex = useGridSelector(apiRef, gridTabIndexCellSelector);
47
- var rowsMeta = useGridSelector(apiRef, gridRowsMetaSelector);
48
- var selectedRowsLookup = useGridSelector(apiRef, selectedIdsLookupSelector);
49
- var currentPage = useGridVisibleRows(apiRef, rootProps);
50
- var gridRootRef = apiRef.current.rootElementRef;
51
- var mainRef = apiRef.current.mainElementRef;
52
- var scrollerRef = apiRef.current.virtualScrollerRef;
53
- var scrollbarVerticalRef = React.useRef(null);
54
- var scrollbarHorizontalRef = React.useRef(null);
55
- var contentHeight = dimensions.contentSize.height;
56
- var columnsTotalWidth = dimensions.columnsTotalWidth;
57
- useResizeObserver(mainRef, function () {
58
- return apiRef.current.resize();
59
- });
60
- var previousContext = React.useRef(EMPTY_RENDER_CONTEXT);
61
- var previousRowContext = React.useRef(EMPTY_RENDER_CONTEXT);
62
- var offsets = useGridSelector(apiRef, gridOffsetsSelector);
63
- var renderContext = useGridSelector(apiRef, gridRenderContextSelector);
64
- var scrollPosition = React.useRef({
65
- top: 0,
66
- left: 0
67
- }).current;
68
- var prevTotalWidth = React.useRef(columnsTotalWidth);
69
- var getRenderedColumns = useLazyRef(createGetRenderedColumns).current;
70
- var indexOfRowWithFocusedCell = React.useMemo(function () {
71
- if (cellFocus !== null) {
72
- return currentPage.rows.findIndex(function (row) {
73
- return row.id === cellFocus.id;
74
- });
75
- }
76
- return -1;
77
- }, [cellFocus, currentPage.rows]);
78
- var indexOfColumnWithFocusedCell = React.useMemo(function () {
79
- if (cellFocus !== null) {
80
- return visibleColumns.findIndex(function (column) {
81
- return column.field === cellFocus.field;
82
- });
83
- }
84
- return -1;
85
- }, [cellFocus, visibleColumns]);
86
- var updateRenderContext = React.useCallback(function (nextRenderContext, rawRenderContext) {
87
- if (areRenderContextsEqual(nextRenderContext, apiRef.current.state.virtualization.renderContext)) {
88
- return;
89
- }
90
- var didRowsIntervalChange = nextRenderContext.firstRowIndex !== previousRowContext.current.firstRowIndex || nextRenderContext.lastRowIndex !== previousRowContext.current.lastRowIndex;
91
- var nextOffsets = computeOffsets(apiRef, nextRenderContext, theme.direction, pinnedColumns.left.length);
92
- apiRef.current.setState(function (state) {
93
- return _extends({}, state, {
94
- virtualization: _extends({}, state.virtualization, {
95
- renderContext: nextRenderContext,
96
- offsets: nextOffsets
97
- })
98
- });
99
- });
100
-
101
- // The lazy-loading hook is listening to `renderedRowsIntervalChange`,
102
- // but only does something if the dimensions are also available.
103
- // So we wait until we have valid dimensions before publishing the first event.
104
- if (dimensions.isReady && didRowsIntervalChange) {
105
- previousRowContext.current = nextRenderContext;
106
- apiRef.current.publishEvent('renderedRowsIntervalChange', nextRenderContext);
107
- }
108
- previousContext.current = rawRenderContext;
109
- prevTotalWidth.current = dimensions.columnsTotalWidth;
110
- }, [apiRef, pinnedColumns.left.length, theme.direction, dimensions.isReady, dimensions.columnsTotalWidth]);
111
- var triggerUpdateRenderContext = function triggerUpdateRenderContext() {
112
- var inputs = inputsSelector(apiRef, rootProps, enabled, enabledForColumns);
113
- var _computeRenderContext = computeRenderContext(inputs, scrollPosition),
114
- _computeRenderContext2 = _slicedToArray(_computeRenderContext, 2),
115
- nextRenderContext = _computeRenderContext2[0],
116
- rawRenderContext = _computeRenderContext2[1];
117
-
118
- // Since previous render, we have scrolled...
119
- var topRowsScrolled = Math.abs(rawRenderContext.firstRowIndex - previousContext.current.firstRowIndex);
120
- var bottomRowsScrolled = Math.abs(rawRenderContext.lastRowIndex - previousContext.current.lastRowIndex);
121
- var topColumnsScrolled = Math.abs(rawRenderContext.firstColumnIndex - previousContext.current.firstColumnIndex);
122
- var bottomColumnsScrolled = Math.abs(rawRenderContext.lastColumnIndex - previousContext.current.lastColumnIndex);
123
- var shouldUpdate = topRowsScrolled >= rootProps.rowThreshold || bottomRowsScrolled >= rootProps.rowThreshold || topColumnsScrolled >= rootProps.columnThreshold || bottomColumnsScrolled >= rootProps.columnThreshold || prevTotalWidth.current !== dimensions.columnsTotalWidth;
124
- if (!shouldUpdate) {
125
- return previousContext.current;
126
- }
127
-
128
- // Prevents batching render context changes
129
- ReactDOM.flushSync(function () {
130
- updateRenderContext(nextRenderContext, rawRenderContext);
131
- });
132
- return nextRenderContext;
133
- };
134
- var forceUpdateRenderContext = function forceUpdateRenderContext() {
135
- var inputs = inputsSelector(apiRef, rootProps, enabled, enabledForColumns);
136
- var _computeRenderContext3 = computeRenderContext(inputs, scrollPosition),
137
- _computeRenderContext4 = _slicedToArray(_computeRenderContext3, 2),
138
- nextRenderContext = _computeRenderContext4[0],
139
- rawRenderContext = _computeRenderContext4[1];
140
- updateRenderContext(nextRenderContext, rawRenderContext);
141
- };
142
- var handleScroll = useEventCallback(function (event) {
143
- var _event$currentTarget = event.currentTarget,
144
- scrollTop = _event$currentTarget.scrollTop,
145
- scrollLeft = _event$currentTarget.scrollLeft;
146
- scrollPosition.top = scrollTop;
147
- scrollPosition.left = scrollLeft;
148
-
149
- // On iOS and macOS, negative offsets are possible when swiping past the start
150
- if (scrollTop < 0) {
151
- return;
152
- }
153
- if (theme.direction === 'ltr') {
154
- if (scrollLeft < 0) {
155
- return;
156
- }
157
- }
158
- if (theme.direction === 'rtl') {
159
- if (scrollLeft > 0) {
160
- return;
161
- }
162
- }
163
- var nextRenderContext = triggerUpdateRenderContext();
164
- apiRef.current.publishEvent('scrollPositionChange', {
165
- top: scrollTop,
166
- left: scrollLeft,
167
- renderContext: nextRenderContext
168
- });
169
- });
170
- var handleWheel = useEventCallback(function (event) {
171
- apiRef.current.publishEvent('virtualScrollerWheel', {}, event);
172
- });
173
- var handleTouchMove = useEventCallback(function (event) {
174
- apiRef.current.publishEvent('virtualScrollerTouchMove', {}, event);
175
- });
176
- var minFirstColumn = pinnedColumns.left.length;
177
- var maxLastColumn = visibleColumns.length - pinnedColumns.right.length;
178
- var getRows = function getRows() {
179
- var _params$rows, _rootProps$slotProps;
180
- var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
181
- var isLastSection = !hasBottomPinnedRows && params.position === undefined || hasBottomPinnedRows && params.position === 'bottom';
182
- var isPinnedSection = params.position !== undefined;
183
- var rowIndexOffset;
184
- // FIXME: Why is the switch check exhaustiveness not validated with typescript-eslint?
185
- // eslint-disable-next-line default-case
186
- switch (params.position) {
187
- case 'top':
188
- rowIndexOffset = 0;
189
- break;
190
- case 'bottom':
191
- rowIndexOffset = pinnedRows.top.length + currentPage.rows.length;
192
- break;
193
- case undefined:
194
- rowIndexOffset = pinnedRows.top.length;
195
- break;
196
- }
197
- var firstRowToRender = renderContext.firstRowIndex;
198
- var lastRowToRender = renderContext.lastRowIndex;
199
- var firstColumnToRender = renderContext.firstColumnIndex;
200
- var lastColumnToRender = renderContext.lastColumnIndex;
201
- if (!params.rows && !currentPage.range) {
202
- return [];
203
- }
204
- var renderedRows = (_params$rows = params.rows) != null ? _params$rows : currentPage.rows.slice(firstRowToRender, lastRowToRender);
205
-
206
- // If the selected row is not within the current range of rows being displayed,
207
- // we need to render it at either the top or bottom of the rows,
208
- // depending on whether it is above or below the range.
209
- var isRowWithFocusedCellNotInRange = false;
210
- if (!isPinnedSection && indexOfRowWithFocusedCell > -1 && (firstRowToRender > indexOfRowWithFocusedCell || lastRowToRender < indexOfRowWithFocusedCell)) {
211
- isRowWithFocusedCellNotInRange = true;
212
- var rowWithFocusedCell = currentPage.rows[indexOfRowWithFocusedCell];
213
- if (indexOfRowWithFocusedCell > firstRowToRender) {
214
- renderedRows.push(rowWithFocusedCell);
215
- } else {
216
- renderedRows.unshift(rowWithFocusedCell);
217
- }
218
- }
219
- var isColumnWihFocusedCellNotInRange = false;
220
- if (!isPinnedSection && (firstColumnToRender > indexOfColumnWithFocusedCell || lastColumnToRender < indexOfColumnWithFocusedCell)) {
221
- isColumnWihFocusedCellNotInRange = true;
222
- }
223
- var _getRenderedColumns = getRenderedColumns(visibleColumns, firstColumnToRender, lastColumnToRender, minFirstColumn, maxLastColumn, isColumnWihFocusedCellNotInRange ? indexOfColumnWithFocusedCell : -1),
224
- focusedCellColumnIndexNotInRange = _getRenderedColumns.focusedCellColumnIndexNotInRange,
225
- renderedColumns = _getRenderedColumns.renderedColumns;
226
- renderedRows.forEach(function (row) {
227
- apiRef.current.calculateColSpan({
228
- rowId: row.id,
229
- minFirstColumn: minFirstColumn,
230
- maxLastColumn: maxLastColumn,
231
- columns: visibleColumns
232
- });
233
- if (pinnedColumns.left.length > 0) {
234
- apiRef.current.calculateColSpan({
235
- rowId: row.id,
236
- minFirstColumn: 0,
237
- maxLastColumn: pinnedColumns.left.length,
238
- columns: visibleColumns
239
- });
240
- }
241
- if (pinnedColumns.right.length > 0) {
242
- apiRef.current.calculateColSpan({
243
- rowId: row.id,
244
- minFirstColumn: visibleColumns.length - pinnedColumns.right.length,
245
- maxLastColumn: visibleColumns.length,
246
- columns: visibleColumns
247
- });
248
- }
249
- });
250
- var rows = [];
251
- var rowProps = (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.row;
252
- var isRowWithFocusedCellRendered = false;
253
- for (var i = 0; i < renderedRows.length; i += 1) {
254
- var _currentPage$range;
255
- var _renderedRows$i = renderedRows[i],
256
- id = _renderedRows$i.id,
257
- model = _renderedRows$i.model;
258
- var rowIndexInPage = ((currentPage == null || (_currentPage$range = currentPage.range) == null ? void 0 : _currentPage$range.firstRowIndex) || 0) + firstRowToRender + i;
259
- var index = rowIndexOffset + rowIndexInPage;
260
- if (isRowWithFocusedCellNotInRange && (cellFocus == null ? void 0 : cellFocus.id) === id) {
261
- index = indexOfRowWithFocusedCell;
262
- isRowWithFocusedCellRendered = true;
263
- } else if (isRowWithFocusedCellRendered) {
264
- index -= 1;
265
- }
266
- var isRowNotVisible = isRowWithFocusedCellNotInRange && cellFocus.id === id;
267
- var baseRowHeight = !apiRef.current.rowHasAutoHeight(id) ? apiRef.current.unstable_getRowHeight(id) : 'auto';
268
- var isSelected = void 0;
269
- if (selectedRowsLookup[id] == null) {
270
- isSelected = false;
271
- } else {
272
- isSelected = apiRef.current.isRowSelectable(id);
273
- }
274
- var isFirstVisible = false;
275
- if (params.position === undefined) {
276
- isFirstVisible = rowIndexInPage === 0;
277
- }
278
- var isLastVisible = false;
279
- if (isLastSection) {
280
- if (!isPinnedSection) {
281
- var lastIndex = currentPage.rows.length - 1;
282
- var isLastVisibleRowIndex = isRowWithFocusedCellNotInRange ? firstRowToRender + i === lastIndex + 1 : firstRowToRender + i === lastIndex;
283
- if (isLastVisibleRowIndex) {
284
- isLastVisible = true;
285
- }
286
- } else {
287
- isLastVisible = i === renderedRows.length - 1;
288
- }
289
- }
290
- var focusedCell = cellFocus !== null && cellFocus.id === id ? cellFocus.field : null;
291
- var columnWithFocusedCellNotInRange = focusedCellColumnIndexNotInRange !== undefined && visibleColumns[focusedCellColumnIndexNotInRange];
292
- var renderedColumnsWithFocusedCell = columnWithFocusedCellNotInRange && focusedCell ? [columnWithFocusedCellNotInRange].concat(_toConsumableArray(renderedColumns)) : renderedColumns;
293
- var tabbableCell = null;
294
- if (cellTabIndex !== null && cellTabIndex.id === id) {
295
- var cellParams = apiRef.current.getCellParams(id, cellTabIndex.field);
296
- tabbableCell = cellParams.cellMode === 'view' ? cellTabIndex.field : null;
297
- }
298
- rows.push( /*#__PURE__*/_jsx(rootProps.slots.row, _extends({
299
- row: model,
300
- rowId: id,
301
- index: index,
302
- rowHeight: baseRowHeight,
303
- focusedCell: focusedCell,
304
- tabbableCell: tabbableCell,
305
- focusedCellColumnIndexNotInRange: focusedCellColumnIndexNotInRange,
306
- renderedColumns: renderedColumnsWithFocusedCell,
307
- visibleColumns: visibleColumns,
308
- pinnedColumns: pinnedColumns,
309
- firstColumnToRender: firstColumnToRender,
310
- lastColumnToRender: lastColumnToRender,
311
- selected: isSelected,
312
- offsets: offsets,
313
- dimensions: dimensions,
314
- isFirstVisible: isFirstVisible,
315
- isLastVisible: isLastVisible,
316
- isNotVisible: isRowNotVisible
317
- }, rowProps), id));
318
- var panel = panels.get(id);
319
- if (panel) {
320
- rows.push(panel);
321
- }
322
- }
323
- return rows;
324
- };
325
- var needsHorizontalScrollbar = outerSize.width && columnsTotalWidth >= outerSize.width;
326
- var scrollerStyle = React.useMemo(function () {
327
- return {
328
- overflowX: !needsHorizontalScrollbar ? 'hidden' : undefined,
329
- overflowY: rootProps.autoHeight ? 'hidden' : undefined
330
- };
331
- }, [needsHorizontalScrollbar, rootProps.autoHeight]);
332
- var contentSize = React.useMemo(function () {
333
- // In cases where the columns exceed the available width,
334
- // the horizontal scrollbar should be shown even when there're no rows.
335
- // Keeping 1px as minimum height ensures that the scrollbar will visible if necessary.
336
- var height = Math.max(contentHeight, 1);
337
- var size = {
338
- width: needsHorizontalScrollbar ? columnsTotalWidth : 'auto',
339
- height: height
340
- };
341
- if (rootProps.autoHeight) {
342
- if (currentPage.rows.length === 0) {
343
- size.height = getMinimalContentHeight(apiRef); // Give room to show the overlay when there no rows.
344
- } else {
345
- size.height = contentHeight;
346
- }
347
- }
348
- return size;
349
- }, [apiRef, columnsTotalWidth, contentHeight, needsHorizontalScrollbar, rootProps.autoHeight, currentPage.rows.length]);
350
- React.useEffect(function () {
351
- apiRef.current.publishEvent('virtualScrollerContentSizeChange');
352
- }, [apiRef, contentSize]);
353
- useEnhancedEffect(function () {
354
- // FIXME: Is this really necessary?
355
- apiRef.current.resize();
356
- }, [apiRef, rowsMeta.currentPageTotalHeight]);
357
- useEnhancedEffect(function () {
358
- if (enabled) {
359
- // TODO a scroll reset should not be necessary
360
- scrollerRef.current.scrollLeft = 0;
361
- scrollerRef.current.scrollTop = 0;
362
- }
363
- }, [enabled, gridRootRef, scrollerRef]);
364
- useRunOnce(outerSize.width !== 0, function () {
365
- var inputs = inputsSelector(apiRef, rootProps, enabled, enabledForColumns);
366
- var _computeRenderContext5 = computeRenderContext(inputs, scrollPosition),
367
- _computeRenderContext6 = _slicedToArray(_computeRenderContext5, 2),
368
- initialRenderContext = _computeRenderContext6[0],
369
- rawRenderContext = _computeRenderContext6[1];
370
- updateRenderContext(initialRenderContext, rawRenderContext);
371
- apiRef.current.publishEvent('scrollPositionChange', {
372
- top: scrollPosition.top,
373
- left: scrollPosition.left,
374
- renderContext: initialRenderContext
375
- });
376
- });
377
- apiRef.current.register('private', {
378
- updateRenderContext: forceUpdateRenderContext
379
- });
380
- return {
381
- renderContext: renderContext,
382
- setPanels: setPanels,
383
- getRows: getRows,
384
- getContainerProps: function getContainerProps() {
385
- return {
386
- ref: mainRef
387
- };
388
- },
389
- getScrollerProps: function getScrollerProps() {
390
- return {
391
- ref: scrollerRef,
392
- tabIndex: -1,
393
- onScroll: handleScroll,
394
- onWheel: handleWheel,
395
- onTouchMove: handleTouchMove,
396
- style: scrollerStyle,
397
- role: 'presentation'
398
- };
399
- },
400
- getContentProps: function getContentProps() {
401
- return {
402
- style: contentSize,
403
- role: 'presentation'
404
- };
405
- },
406
- getRenderZoneProps: function getRenderZoneProps() {
407
- return {
408
- role: 'rowgroup'
409
- };
410
- },
411
- getScrollbarVerticalProps: function getScrollbarVerticalProps() {
412
- return {
413
- ref: scrollbarVerticalRef,
414
- role: 'presentation'
415
- };
416
- },
417
- getScrollbarHorizontalProps: function getScrollbarHorizontalProps() {
418
- return {
419
- ref: scrollbarHorizontalRef,
420
- role: 'presentation'
421
- };
422
- }
423
- };
424
- };
425
- function createGetRenderedColumns() {
426
- return defaultMemoize(function (columns, firstColumnToRender, lastColumnToRender, minFirstColumn, maxLastColumn, indexOfColumnWithFocusedCell) {
427
- // If the selected column is not within the current range of columns being displayed,
428
- // we need to render it at either the left or right of the columns,
429
- // depending on whether it is above or below the range.
430
- var focusedCellColumnIndexNotInRange;
431
- var renderedColumns = columns.slice(firstColumnToRender, lastColumnToRender);
432
- if (indexOfColumnWithFocusedCell > -1) {
433
- // check if it is not on the left pinned column.
434
- if (firstColumnToRender > indexOfColumnWithFocusedCell && indexOfColumnWithFocusedCell >= minFirstColumn) {
435
- focusedCellColumnIndexNotInRange = indexOfColumnWithFocusedCell;
436
- }
437
- // check if it is not on the right pinned column.
438
- else if (lastColumnToRender < indexOfColumnWithFocusedCell && indexOfColumnWithFocusedCell < maxLastColumn) {
439
- focusedCellColumnIndexNotInRange = indexOfColumnWithFocusedCell;
440
- }
441
- }
442
- return {
443
- focusedCellColumnIndexNotInRange: focusedCellColumnIndexNotInRange,
444
- renderedColumns: renderedColumns
445
- };
446
- });
447
- }
448
- function inputsSelector(apiRef, rootProps, enabled, enabledForColumns) {
449
- var dimensions = gridDimensionsSelector(apiRef.current.state);
450
- var currentPage = getVisibleRows(apiRef, rootProps);
451
- return {
452
- enabled: enabled,
453
- enabledForColumns: enabledForColumns,
454
- apiRef: apiRef,
455
- autoHeight: rootProps.autoHeight,
456
- rowBuffer: rootProps.rowBuffer,
457
- columnBuffer: rootProps.columnBuffer,
458
- leftPinnedWidth: dimensions.leftPinnedWidth,
459
- columnsTotalWidth: dimensions.columnsTotalWidth,
460
- viewportInnerWidth: dimensions.viewportInnerSize.width,
461
- viewportInnerHeight: dimensions.viewportInnerSize.height,
462
- rowsMeta: gridRowsMetaSelector(apiRef.current.state),
463
- columnPositions: gridColumnPositionsSelector(apiRef),
464
- rows: currentPage.rows,
465
- range: currentPage.range,
466
- pinnedColumns: gridVisiblePinnedColumnDefinitionsSelector(apiRef),
467
- visibleColumns: gridVisibleColumnDefinitionsSelector(apiRef)
468
- };
469
- }
470
- function computeRenderContext(inputs, scrollPosition) {
471
- var renderContext;
472
- if (!inputs.enabled) {
473
- renderContext = {
474
- firstRowIndex: 0,
475
- lastRowIndex: inputs.rows.length,
476
- firstColumnIndex: 0,
477
- lastColumnIndex: inputs.visibleColumns.length
478
- };
479
- } else {
480
- var top = scrollPosition.top,
481
- left = scrollPosition.left;
482
- var realLeft = Math.abs(left) + inputs.leftPinnedWidth;
483
-
484
- // Clamp the value because the search may return an index out of bounds.
485
- // In the last index, this is not needed because Array.slice doesn't include it.
486
- var firstRowIndex = Math.min(getNearestIndexToRender(inputs, top), inputs.rowsMeta.positions.length - 1);
487
- var lastRowIndex = inputs.autoHeight ? firstRowIndex + inputs.rows.length : getNearestIndexToRender(inputs, top + inputs.viewportInnerHeight);
488
- var firstColumnIndex = 0;
489
- var lastColumnIndex = inputs.columnPositions.length;
490
- if (inputs.enabledForColumns) {
491
- var hasRowWithAutoHeight = false;
492
- var _getIndexesToRender = getIndexesToRender({
493
- firstIndex: firstRowIndex,
494
- lastIndex: lastRowIndex,
495
- minFirstIndex: 0,
496
- maxLastIndex: inputs.rows.length,
497
- buffer: inputs.rowBuffer
498
- }),
499
- _getIndexesToRender2 = _slicedToArray(_getIndexesToRender, 2),
500
- firstRowToRender = _getIndexesToRender2[0],
501
- lastRowToRender = _getIndexesToRender2[1];
502
- for (var i = firstRowToRender; i < lastRowToRender && !hasRowWithAutoHeight; i += 1) {
503
- var row = inputs.rows[i];
504
- hasRowWithAutoHeight = inputs.apiRef.current.rowHasAutoHeight(row.id);
505
- }
506
- if (!hasRowWithAutoHeight) {
507
- firstColumnIndex = binarySearch(realLeft, inputs.columnPositions, {
508
- atStart: true,
509
- lastPosition: inputs.columnsTotalWidth
510
- });
511
- lastColumnIndex = binarySearch(realLeft + inputs.viewportInnerWidth, inputs.columnPositions);
512
- }
513
- }
514
- renderContext = {
515
- firstRowIndex: firstRowIndex,
516
- lastRowIndex: lastRowIndex,
517
- firstColumnIndex: firstColumnIndex,
518
- lastColumnIndex: lastColumnIndex
519
- };
520
- }
521
- var actualRenderContext = deriveRenderContext(inputs.apiRef, inputs.rowBuffer, inputs.columnBuffer, inputs.rows, inputs.pinnedColumns, inputs.visibleColumns, renderContext);
522
- return [actualRenderContext, renderContext];
523
- }
524
- function getNearestIndexToRender(inputs, offset) {
525
- var _inputs$range, _inputs$range2;
526
- var lastMeasuredIndexRelativeToAllRows = inputs.apiRef.current.getLastMeasuredRowIndex();
527
- var allRowsMeasured = lastMeasuredIndexRelativeToAllRows === Infinity;
528
- if ((_inputs$range = inputs.range) != null && _inputs$range.lastRowIndex && !allRowsMeasured) {
529
- // Check if all rows in this page are already measured
530
- allRowsMeasured = lastMeasuredIndexRelativeToAllRows >= inputs.range.lastRowIndex;
531
- }
532
- var lastMeasuredIndexRelativeToCurrentPage = clamp(lastMeasuredIndexRelativeToAllRows - (((_inputs$range2 = inputs.range) == null ? void 0 : _inputs$range2.firstRowIndex) || 0), 0, inputs.rowsMeta.positions.length);
533
- if (allRowsMeasured || inputs.rowsMeta.positions[lastMeasuredIndexRelativeToCurrentPage] >= offset) {
534
- // If all rows were measured (when no row has "auto" as height) or all rows before the offset
535
- // were measured, then use a binary search because it's faster.
536
- return binarySearch(offset, inputs.rowsMeta.positions);
537
- }
538
-
539
- // Otherwise, use an exponential search.
540
- // If rows have "auto" as height, their positions will be based on estimated heights.
541
- // In this case, we can skip several steps until we find a position higher than the offset.
542
- // Inspired by https://github.com/bvaughn/react-virtualized/blob/master/source/Grid/utils/CellSizeAndPositionManager.js
543
- return exponentialSearch(offset, inputs.rowsMeta.positions, lastMeasuredIndexRelativeToCurrentPage);
544
- }
545
-
546
- /**
547
- * Accepts as input a raw render context (the area visible in the viewport) and adds
548
- * computes the actual render context based on pinned elements, buffer dimensions and
549
- * spanning.
550
- */
551
- function deriveRenderContext(apiRef, rowBuffer, columnBuffer, rows, pinnedColumns, visibleColumns, nextRenderContext) {
552
- var _getIndexesToRender3 = getIndexesToRender({
553
- firstIndex: nextRenderContext.firstRowIndex,
554
- lastIndex: nextRenderContext.lastRowIndex,
555
- minFirstIndex: 0,
556
- maxLastIndex: rows.length,
557
- buffer: rowBuffer
558
- }),
559
- _getIndexesToRender4 = _slicedToArray(_getIndexesToRender3, 2),
560
- firstRowToRender = _getIndexesToRender4[0],
561
- lastRowToRender = _getIndexesToRender4[1];
562
- var _getIndexesToRender5 = getIndexesToRender({
563
- firstIndex: nextRenderContext.firstColumnIndex,
564
- lastIndex: nextRenderContext.lastColumnIndex,
565
- minFirstIndex: pinnedColumns.left.length,
566
- maxLastIndex: visibleColumns.length - pinnedColumns.right.length,
567
- buffer: columnBuffer
568
- }),
569
- _getIndexesToRender6 = _slicedToArray(_getIndexesToRender5, 2),
570
- initialFirstColumnToRender = _getIndexesToRender6[0],
571
- lastColumnToRender = _getIndexesToRender6[1];
572
- var firstColumnToRender = getFirstNonSpannedColumnToRender({
573
- firstColumnToRender: initialFirstColumnToRender,
574
- apiRef: apiRef,
575
- firstRowToRender: firstRowToRender,
576
- lastRowToRender: lastRowToRender,
577
- visibleRows: rows
578
- });
579
- return {
580
- firstRowIndex: firstRowToRender,
581
- lastRowIndex: lastRowToRender,
582
- firstColumnIndex: firstColumnToRender,
583
- lastColumnIndex: lastColumnToRender
584
- };
585
- }
586
- /**
587
- * Use binary search to avoid looping through all possible positions.
588
- * The `options.atStart` provides the possibility to match for the first element that
589
- * intersects the screen, even if said element's start position is before `offset`. In
590
- * other words, we search for `offset + width`.
591
- */
592
- function binarySearch(offset, positions) {
593
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
594
- var sliceStart = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
595
- var sliceEnd = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : positions.length;
596
- if (positions.length <= 0) {
597
- return -1;
598
- }
599
- if (sliceStart >= sliceEnd) {
600
- return sliceStart;
601
- }
602
- var pivot = sliceStart + Math.floor((sliceEnd - sliceStart) / 2);
603
- var position = positions[pivot];
604
- var isBefore;
605
- if (options != null && options.atStart) {
606
- var width = (pivot === positions.length - 1 ? options.lastPosition : positions[pivot + 1]) - position;
607
- isBefore = offset - width < position;
608
- } else {
609
- isBefore = offset <= position;
610
- }
611
- return isBefore ? binarySearch(offset, positions, options, sliceStart, pivot) : binarySearch(offset, positions, options, pivot + 1, sliceEnd);
612
- }
613
- function exponentialSearch(offset, positions, index) {
614
- var interval = 1;
615
- while (index < positions.length && Math.abs(positions[index]) < offset) {
616
- index += interval;
617
- interval *= 2;
618
- }
619
- return binarySearch(offset, positions, undefined, Math.floor(index / 2), Math.min(index, positions.length));
620
- }
621
- function getIndexesToRender(_ref) {
622
- var firstIndex = _ref.firstIndex,
623
- lastIndex = _ref.lastIndex,
624
- buffer = _ref.buffer,
625
- minFirstIndex = _ref.minFirstIndex,
626
- maxLastIndex = _ref.maxLastIndex;
627
- return [clamp(firstIndex - buffer, minFirstIndex, maxLastIndex), clamp(lastIndex + buffer, minFirstIndex, maxLastIndex)];
628
- }
629
- export function areRenderContextsEqual(context1, context2) {
630
- if (context1 === context2) {
631
- return true;
632
- }
633
- return context1.firstRowIndex === context2.firstRowIndex && context1.lastRowIndex === context2.lastRowIndex && context1.firstColumnIndex === context2.firstColumnIndex && context1.lastColumnIndex === context2.lastColumnIndex;
634
- }
635
- function computeOffsets(apiRef, renderContext, direction, pinnedLeftLength) {
636
- var _rowPositions$renderC, _columnPositions$rend, _columnPositions$pinn;
637
- var factor = direction === 'ltr' ? 1 : -1;
638
- var rowPositions = gridRowsMetaSelector(apiRef.current.state).positions;
639
- var columnPositions = gridColumnPositionsSelector(apiRef);
640
- var top = (_rowPositions$renderC = rowPositions[renderContext.firstRowIndex]) != null ? _rowPositions$renderC : 0;
641
- var left = factor * ((_columnPositions$rend = columnPositions[renderContext.firstColumnIndex]) != null ? _columnPositions$rend : 0) - ((_columnPositions$pinn = columnPositions[pinnedLeftLength]) != null ? _columnPositions$pinn : 0);
642
- return {
643
- top: top,
644
- left: left
645
- };
646
- }