@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
@@ -6,17 +6,16 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.EMPTY_DETAIL_PANELS = void 0;
8
8
  exports.areRenderContextsEqual = areRenderContextsEqual;
9
+ exports.computeOffsetLeft = computeOffsetLeft;
9
10
  exports.useGridVirtualScroller = void 0;
10
11
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
12
  var React = _interopRequireWildcard(require("react"));
12
13
  var ReactDOM = _interopRequireWildcard(require("react-dom"));
13
14
  var _utils = require("@mui/utils");
14
15
  var _styles = require("@mui/material/styles");
15
- var _reselect = require("reselect");
16
16
  var _useGridPrivateApiContext = require("../../utils/useGridPrivateApiContext");
17
17
  var _useGridRootProps = require("../../utils/useGridRootProps");
18
18
  var _useGridSelector = require("../../utils/useGridSelector");
19
- var _useLazyRef = require("../../utils/useLazyRef");
20
19
  var _useResizeObserver = require("../../utils/useResizeObserver");
21
20
  var _useRunOnce = require("../../utils/useRunOnce");
22
21
  var _gridColumnsSelector = require("../columns/gridColumnsSelector");
@@ -24,7 +23,8 @@ var _gridDimensionsSelectors = require("../dimensions/gridDimensionsSelectors");
24
23
  var _gridRowsSelector = require("../rows/gridRowsSelector");
25
24
  var _gridFocusStateSelector = require("../focus/gridFocusStateSelector");
26
25
  var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
27
- var _utils2 = require("../../../utils/utils");
26
+ var _utils2 = require("../../utils");
27
+ var _utils3 = require("../../../utils/utils");
28
28
  var _gridRowSelectionSelector = require("../rowSelection/gridRowSelectionSelector");
29
29
  var _gridRowsMetaSelector = require("../rows/gridRowsMetaSelector");
30
30
  var _gridColumnsUtils = require("../columns/gridColumnsUtils");
@@ -60,40 +60,29 @@ const useGridVirtualScroller = () => {
60
60
  const scrollbarHorizontalRef = React.useRef(null);
61
61
  const contentHeight = dimensions.contentSize.height;
62
62
  const columnsTotalWidth = dimensions.columnsTotalWidth;
63
+ const hasColSpan = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridHasColSpanSelector);
63
64
  (0, _useResizeObserver.useResizeObserver)(mainRef, () => apiRef.current.resize());
64
65
  const previousContext = React.useRef(_useGridVirtualization.EMPTY_RENDER_CONTEXT);
65
66
  const previousRowContext = React.useRef(_useGridVirtualization.EMPTY_RENDER_CONTEXT);
66
- const offsets = (0, _useGridSelector.useGridSelector)(apiRef, _gridVirtualizationSelectors.gridOffsetsSelector);
67
67
  const renderContext = (0, _useGridSelector.useGridSelector)(apiRef, _gridVirtualizationSelectors.gridRenderContextSelector);
68
68
  const scrollPosition = React.useRef({
69
69
  top: 0,
70
70
  left: 0
71
71
  }).current;
72
72
  const prevTotalWidth = React.useRef(columnsTotalWidth);
73
- const getRenderedColumns = (0, _useLazyRef.useLazyRef)(createGetRenderedColumns).current;
74
- const indexOfRowWithFocusedCell = React.useMemo(() => {
75
- if (cellFocus !== null) {
76
- return currentPage.rows.findIndex(row => row.id === cellFocus.id);
77
- }
78
- return -1;
79
- }, [cellFocus, currentPage.rows]);
80
- const indexOfColumnWithFocusedCell = React.useMemo(() => {
81
- if (cellFocus !== null) {
82
- return visibleColumns.findIndex(column => column.field === cellFocus.field);
83
- }
84
- return -1;
85
- }, [cellFocus, visibleColumns]);
73
+ const focusedCell = {
74
+ rowIndex: React.useMemo(() => cellFocus ? currentPage.rows.findIndex(row => row.id === cellFocus.id) : -1, [cellFocus, currentPage.rows]),
75
+ columnIndex: React.useMemo(() => cellFocus ? visibleColumns.findIndex(column => column.field === cellFocus.field) : -1, [cellFocus, visibleColumns])
76
+ };
86
77
  const updateRenderContext = React.useCallback((nextRenderContext, rawRenderContext) => {
87
78
  if (areRenderContextsEqual(nextRenderContext, apiRef.current.state.virtualization.renderContext)) {
88
79
  return;
89
80
  }
90
81
  const didRowsIntervalChange = nextRenderContext.firstRowIndex !== previousRowContext.current.firstRowIndex || nextRenderContext.lastRowIndex !== previousRowContext.current.lastRowIndex;
91
- const nextOffsets = computeOffsets(apiRef, nextRenderContext, theme.direction, pinnedColumns.left.length);
92
82
  apiRef.current.setState(state => {
93
83
  return (0, _extends2.default)({}, state, {
94
84
  virtualization: (0, _extends2.default)({}, state.virtualization, {
95
- renderContext: nextRenderContext,
96
- offsets: nextOffsets
85
+ renderContext: nextRenderContext
97
86
  })
98
87
  });
99
88
  });
@@ -107,7 +96,7 @@ const useGridVirtualScroller = () => {
107
96
  }
108
97
  previousContext.current = rawRenderContext;
109
98
  prevTotalWidth.current = dimensions.columnsTotalWidth;
110
- }, [apiRef, pinnedColumns.left.length, theme.direction, dimensions.isReady, dimensions.columnsTotalWidth]);
99
+ }, [apiRef, dimensions.isReady, dimensions.columnsTotalWidth]);
111
100
  const triggerUpdateRenderContext = () => {
112
101
  const inputs = inputsSelector(apiRef, rootProps, enabled, enabledForColumns);
113
102
  const [nextRenderContext, rawRenderContext] = computeRenderContext(inputs, scrollPosition);
@@ -168,9 +157,12 @@ const useGridVirtualScroller = () => {
168
157
  const handleTouchMove = (0, _utils.unstable_useEventCallback)(event => {
169
158
  apiRef.current.publishEvent('virtualScrollerTouchMove', {}, event);
170
159
  });
171
- const minFirstColumn = pinnedColumns.left.length;
172
- const maxLastColumn = visibleColumns.length - pinnedColumns.right.length;
173
160
  const getRows = (params = {}) => {
161
+ if (!params.rows && !currentPage.range) {
162
+ return [];
163
+ }
164
+ const columnPositions = (0, _gridColumnsSelector.gridColumnPositionsSelector)(apiRef);
165
+ const currentRenderContext = params.renderContext ?? renderContext;
174
166
  const isLastSection = !hasBottomPinnedRows && params.position === undefined || hasBottomPinnedRows && params.position === 'bottom';
175
167
  const isPinnedSection = params.position !== undefined;
176
168
  let rowIndexOffset;
@@ -187,77 +179,57 @@ const useGridVirtualScroller = () => {
187
179
  rowIndexOffset = pinnedRows.top.length;
188
180
  break;
189
181
  }
190
- const firstRowToRender = renderContext.firstRowIndex;
191
- const lastRowToRender = renderContext.lastRowIndex;
192
- const firstColumnToRender = renderContext.firstColumnIndex;
193
- const lastColumnToRender = renderContext.lastColumnIndex;
194
- if (!params.rows && !currentPage.range) {
195
- return [];
196
- }
197
- const renderedRows = params.rows ?? currentPage.rows.slice(firstRowToRender, lastRowToRender);
198
-
199
- // If the selected row is not within the current range of rows being displayed,
200
- // we need to render it at either the top or bottom of the rows,
201
- // depending on whether it is above or below the range.
202
- let isRowWithFocusedCellNotInRange = false;
203
- if (!isPinnedSection && indexOfRowWithFocusedCell > -1 && (firstRowToRender > indexOfRowWithFocusedCell || lastRowToRender < indexOfRowWithFocusedCell)) {
204
- isRowWithFocusedCellNotInRange = true;
205
- const rowWithFocusedCell = currentPage.rows[indexOfRowWithFocusedCell];
206
- if (indexOfRowWithFocusedCell > firstRowToRender) {
207
- renderedRows.push(rowWithFocusedCell);
208
- } else {
209
- renderedRows.unshift(rowWithFocusedCell);
210
- }
211
- }
212
- let isColumnWihFocusedCellNotInRange = false;
213
- if (!isPinnedSection && (firstColumnToRender > indexOfColumnWithFocusedCell || lastColumnToRender < indexOfColumnWithFocusedCell)) {
214
- isColumnWihFocusedCellNotInRange = true;
215
- }
216
- const {
217
- focusedCellColumnIndexNotInRange,
218
- renderedColumns
219
- } = getRenderedColumns(visibleColumns, firstColumnToRender, lastColumnToRender, minFirstColumn, maxLastColumn, isColumnWihFocusedCellNotInRange ? indexOfColumnWithFocusedCell : -1);
220
- renderedRows.forEach(row => {
221
- apiRef.current.calculateColSpan({
222
- rowId: row.id,
223
- minFirstColumn,
224
- maxLastColumn,
225
- columns: visibleColumns
226
- });
227
- if (pinnedColumns.left.length > 0) {
228
- apiRef.current.calculateColSpan({
229
- rowId: row.id,
230
- minFirstColumn: 0,
231
- maxLastColumn: pinnedColumns.left.length,
232
- columns: visibleColumns
233
- });
182
+ const rowModels = params.rows ?? currentPage.rows;
183
+ const firstRowToRender = currentRenderContext.firstRowIndex;
184
+ const lastRowToRender = Math.min(currentRenderContext.lastRowIndex, rowModels.length);
185
+ const rowIndexes = params.rows ? (0, _utils3.range)(0, params.rows.length) : (0, _utils3.range)(firstRowToRender, lastRowToRender);
186
+ let virtualRowIndex = -1;
187
+ if (!isPinnedSection && focusedCell.rowIndex !== -1) {
188
+ if (focusedCell.rowIndex < firstRowToRender) {
189
+ virtualRowIndex = focusedCell.rowIndex;
190
+ rowIndexes.unshift(virtualRowIndex);
234
191
  }
235
- if (pinnedColumns.right.length > 0) {
236
- apiRef.current.calculateColSpan({
237
- rowId: row.id,
238
- minFirstColumn: visibleColumns.length - pinnedColumns.right.length,
239
- maxLastColumn: visibleColumns.length,
240
- columns: visibleColumns
241
- });
192
+ if (focusedCell.rowIndex >= lastRowToRender) {
193
+ virtualRowIndex = focusedCell.rowIndex;
194
+ rowIndexes.push(virtualRowIndex);
242
195
  }
243
- });
196
+ }
244
197
  const rows = [];
245
198
  const rowProps = rootProps.slotProps?.row;
246
- let isRowWithFocusedCellRendered = false;
247
- for (let i = 0; i < renderedRows.length; i += 1) {
199
+ rowIndexes.forEach(rowIndexInPage => {
248
200
  const {
249
201
  id,
250
202
  model
251
- } = renderedRows[i];
252
- const rowIndexInPage = (currentPage?.range?.firstRowIndex || 0) + firstRowToRender + i;
253
- let index = rowIndexOffset + rowIndexInPage;
254
- if (isRowWithFocusedCellNotInRange && cellFocus?.id === id) {
255
- index = indexOfRowWithFocusedCell;
256
- isRowWithFocusedCellRendered = true;
257
- } else if (isRowWithFocusedCellRendered) {
258
- index -= 1;
203
+ } = rowModels[rowIndexInPage];
204
+
205
+ // NOTE: This is an expensive feature, the colSpan code could be optimized.
206
+ if (hasColSpan) {
207
+ const minFirstColumn = pinnedColumns.left.length;
208
+ const maxLastColumn = visibleColumns.length - pinnedColumns.right.length;
209
+ apiRef.current.calculateColSpan({
210
+ rowId: id,
211
+ minFirstColumn,
212
+ maxLastColumn,
213
+ columns: visibleColumns
214
+ });
215
+ if (pinnedColumns.left.length > 0) {
216
+ apiRef.current.calculateColSpan({
217
+ rowId: id,
218
+ minFirstColumn: 0,
219
+ maxLastColumn: pinnedColumns.left.length,
220
+ columns: visibleColumns
221
+ });
222
+ }
223
+ if (pinnedColumns.right.length > 0) {
224
+ apiRef.current.calculateColSpan({
225
+ rowId: id,
226
+ minFirstColumn: visibleColumns.length - pinnedColumns.right.length,
227
+ maxLastColumn: visibleColumns.length,
228
+ columns: visibleColumns
229
+ });
230
+ }
259
231
  }
260
- const isRowNotVisible = isRowWithFocusedCellNotInRange && cellFocus.id === id;
232
+ const hasFocus = cellFocus?.id === id;
261
233
  const baseRowHeight = !apiRef.current.rowHasAutoHeight(id) ? apiRef.current.unstable_getRowHeight(id) : 'auto';
262
234
  let isSelected;
263
235
  if (selectedRowsLookup[id] == null) {
@@ -273,47 +245,46 @@ const useGridVirtualScroller = () => {
273
245
  if (isLastSection) {
274
246
  if (!isPinnedSection) {
275
247
  const lastIndex = currentPage.rows.length - 1;
276
- const isLastVisibleRowIndex = isRowWithFocusedCellNotInRange ? firstRowToRender + i === lastIndex + 1 : firstRowToRender + i === lastIndex;
248
+ const isLastVisibleRowIndex = rowIndexInPage === lastIndex;
277
249
  if (isLastVisibleRowIndex) {
278
250
  isLastVisible = true;
279
251
  }
280
252
  } else {
281
- isLastVisible = i === renderedRows.length - 1;
253
+ isLastVisible = rowIndexInPage === rowModels.length - 1;
282
254
  }
283
255
  }
284
- const focusedCell = cellFocus !== null && cellFocus.id === id ? cellFocus.field : null;
285
- const columnWithFocusedCellNotInRange = focusedCellColumnIndexNotInRange !== undefined && visibleColumns[focusedCellColumnIndexNotInRange];
286
- const renderedColumnsWithFocusedCell = columnWithFocusedCellNotInRange && focusedCell ? [columnWithFocusedCellNotInRange, ...renderedColumns] : renderedColumns;
256
+ const isVirtualRow = rowIndexInPage === virtualRowIndex;
257
+ const isNotVisible = isVirtualRow;
287
258
  let tabbableCell = null;
288
259
  if (cellTabIndex !== null && cellTabIndex.id === id) {
289
260
  const cellParams = apiRef.current.getCellParams(id, cellTabIndex.field);
290
261
  tabbableCell = cellParams.cellMode === 'view' ? cellTabIndex.field : null;
291
262
  }
263
+ const offsetLeft = computeOffsetLeft(columnPositions, currentRenderContext, theme.direction, pinnedColumns.left.length);
264
+ const rowIndex = (currentPage?.range?.firstRowIndex || 0) + rowIndexOffset + rowIndexInPage;
292
265
  rows.push( /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.row, (0, _extends2.default)({
293
266
  row: model,
294
267
  rowId: id,
295
- index: index,
268
+ index: rowIndex,
269
+ selected: isSelected,
270
+ offsetTop: params.rows ? undefined : rowsMeta.positions[rowIndexInPage],
271
+ offsetLeft: offsetLeft,
272
+ dimensions: dimensions,
296
273
  rowHeight: baseRowHeight,
297
- focusedCell: focusedCell,
298
274
  tabbableCell: tabbableCell,
299
- focusedCellColumnIndexNotInRange: focusedCellColumnIndexNotInRange,
300
- renderedColumns: renderedColumnsWithFocusedCell,
301
- visibleColumns: visibleColumns,
302
275
  pinnedColumns: pinnedColumns,
303
- firstColumnToRender: firstColumnToRender,
304
- lastColumnToRender: lastColumnToRender,
305
- selected: isSelected,
306
- offsets: offsets,
307
- dimensions: dimensions,
276
+ visibleColumns: visibleColumns,
277
+ renderContext: currentRenderContext,
278
+ focusedColumnIndex: hasFocus ? focusedCell.columnIndex : undefined,
308
279
  isFirstVisible: isFirstVisible,
309
280
  isLastVisible: isLastVisible,
310
- isNotVisible: isRowNotVisible
281
+ isNotVisible: isNotVisible
311
282
  }, rowProps), id));
312
283
  const panel = panels.get(id);
313
284
  if (panel) {
314
285
  rows.push(panel);
315
286
  }
316
- }
287
+ });
317
288
  return rows;
318
289
  };
319
290
  const needsHorizontalScrollbar = outerSize.width && columnsTotalWidth >= outerSize.width;
@@ -366,6 +337,9 @@ const useGridVirtualScroller = () => {
366
337
  apiRef.current.register('private', {
367
338
  updateRenderContext: forceUpdateRenderContext
368
339
  });
340
+ (0, _utils2.useGridApiEventHandler)(apiRef, 'columnsChange', forceUpdateRenderContext);
341
+ (0, _utils2.useGridApiEventHandler)(apiRef, 'filteredRowsSet', forceUpdateRenderContext);
342
+ (0, _utils2.useGridApiEventHandler)(apiRef, 'rowExpansionChange', forceUpdateRenderContext);
369
343
  return {
370
344
  renderContext,
371
345
  setPanels,
@@ -400,29 +374,6 @@ const useGridVirtualScroller = () => {
400
374
  };
401
375
  };
402
376
  exports.useGridVirtualScroller = useGridVirtualScroller;
403
- function createGetRenderedColumns() {
404
- return (0, _reselect.defaultMemoize)((columns, firstColumnToRender, lastColumnToRender, minFirstColumn, maxLastColumn, indexOfColumnWithFocusedCell) => {
405
- // If the selected column is not within the current range of columns being displayed,
406
- // we need to render it at either the left or right of the columns,
407
- // depending on whether it is above or below the range.
408
- let focusedCellColumnIndexNotInRange;
409
- const renderedColumns = columns.slice(firstColumnToRender, lastColumnToRender);
410
- if (indexOfColumnWithFocusedCell > -1) {
411
- // check if it is not on the left pinned column.
412
- if (firstColumnToRender > indexOfColumnWithFocusedCell && indexOfColumnWithFocusedCell >= minFirstColumn) {
413
- focusedCellColumnIndexNotInRange = indexOfColumnWithFocusedCell;
414
- }
415
- // check if it is not on the right pinned column.
416
- else if (lastColumnToRender < indexOfColumnWithFocusedCell && indexOfColumnWithFocusedCell < maxLastColumn) {
417
- focusedCellColumnIndexNotInRange = indexOfColumnWithFocusedCell;
418
- }
419
- }
420
- return {
421
- focusedCellColumnIndexNotInRange,
422
- renderedColumns
423
- };
424
- });
425
- }
426
377
  function inputsSelector(apiRef, rootProps, enabled, enabledForColumns) {
427
378
  const dimensions = (0, _gridDimensionsSelectors.gridDimensionsSelector)(apiRef.current.state);
428
379
  const currentPage = (0, _useGridVisibleRows.getVisibleRows)(apiRef, rootProps);
@@ -505,7 +456,7 @@ function getNearestIndexToRender(inputs, offset) {
505
456
  // Check if all rows in this page are already measured
506
457
  allRowsMeasured = lastMeasuredIndexRelativeToAllRows >= inputs.range.lastRowIndex;
507
458
  }
508
- const lastMeasuredIndexRelativeToCurrentPage = (0, _utils2.clamp)(lastMeasuredIndexRelativeToAllRows - (inputs.range?.firstRowIndex || 0), 0, inputs.rowsMeta.positions.length);
459
+ const lastMeasuredIndexRelativeToCurrentPage = (0, _utils3.clamp)(lastMeasuredIndexRelativeToAllRows - (inputs.range?.firstRowIndex || 0), 0, inputs.rowsMeta.positions.length);
509
460
  if (allRowsMeasured || inputs.rowsMeta.positions[lastMeasuredIndexRelativeToCurrentPage] >= offset) {
510
461
  // If all rows were measured (when no row has "auto" as height) or all rows before the offset
511
462
  // were measured, then use a binary search because it's faster.
@@ -592,7 +543,7 @@ function getIndexesToRender({
592
543
  minFirstIndex,
593
544
  maxLastIndex
594
545
  }) {
595
- return [(0, _utils2.clamp)(firstIndex - buffer, minFirstIndex, maxLastIndex), (0, _utils2.clamp)(lastIndex + buffer, minFirstIndex, maxLastIndex)];
546
+ return [(0, _utils3.clamp)(firstIndex - buffer, minFirstIndex, maxLastIndex), (0, _utils3.clamp)(lastIndex + buffer, minFirstIndex, maxLastIndex)];
596
547
  }
597
548
  function areRenderContextsEqual(context1, context2) {
598
549
  if (context1 === context2) {
@@ -600,14 +551,8 @@ function areRenderContextsEqual(context1, context2) {
600
551
  }
601
552
  return context1.firstRowIndex === context2.firstRowIndex && context1.lastRowIndex === context2.lastRowIndex && context1.firstColumnIndex === context2.firstColumnIndex && context1.lastColumnIndex === context2.lastColumnIndex;
602
553
  }
603
- function computeOffsets(apiRef, renderContext, direction, pinnedLeftLength) {
554
+ function computeOffsetLeft(columnPositions, renderContext, direction, pinnedLeftLength) {
604
555
  const factor = direction === 'ltr' ? 1 : -1;
605
- const rowPositions = (0, _gridRowsMetaSelector.gridRowsMetaSelector)(apiRef.current.state).positions;
606
- const columnPositions = (0, _gridColumnsSelector.gridColumnPositionsSelector)(apiRef);
607
- const top = rowPositions[renderContext.firstRowIndex] ?? 0;
608
556
  const left = factor * (columnPositions[renderContext.firstColumnIndex] ?? 0) - (columnPositions[pinnedLeftLength] ?? 0);
609
- return {
610
- top,
611
- left
612
- };
557
+ return left;
613
558
  }
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.EMPTY_RENDER_CONTEXT = exports.EMPTY_OFFSETS = void 0;
7
+ exports.EMPTY_RENDER_CONTEXT = void 0;
8
8
  exports.useGridVirtualization = useGridVirtualization;
9
9
  exports.virtualizationStateInitializer = void 0;
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
@@ -12,10 +12,6 @@ var React = _interopRequireWildcard(require("react"));
12
12
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
13
13
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
14
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
- const EMPTY_OFFSETS = exports.EMPTY_OFFSETS = {
16
- top: 0,
17
- left: 0
18
- };
19
15
  const EMPTY_RENDER_CONTEXT = exports.EMPTY_RENDER_CONTEXT = {
20
16
  firstRowIndex: 0,
21
17
  lastRowIndex: 0,
@@ -26,8 +22,7 @@ const virtualizationStateInitializer = (state, props) => {
26
22
  const virtualization = {
27
23
  enabled: !props.disableVirtualization,
28
24
  enabledForColumns: true,
29
- renderContext: EMPTY_RENDER_CONTEXT,
30
- offsets: EMPTY_OFFSETS
25
+ renderContext: EMPTY_RENDER_CONTEXT
31
26
  };
32
27
  return (0, _extends2.default)({}, state, {
33
28
  virtualization
@@ -1,18 +1,20 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
7
+ exports.Timeout = void 0;
6
8
  exports.useTimeout = useTimeout;
7
9
  var _useLazyRef = require("./useLazyRef");
8
10
  var _useOnMount = require("./useOnMount");
9
11
  class Timeout {
10
12
  constructor() {
11
- this.currentId = 0;
13
+ this.currentId = null;
12
14
  this.clear = () => {
13
- if (this.currentId !== 0) {
15
+ if (this.currentId !== null) {
14
16
  clearTimeout(this.currentId);
15
- this.currentId = 0;
17
+ this.currentId = null;
16
18
  }
17
19
  };
18
20
  this.disposeEffect = () => {
@@ -22,11 +24,18 @@ class Timeout {
22
24
  static create() {
23
25
  return new Timeout();
24
26
  }
27
+ /**
28
+ * Executes `fn` after `delay`, clearing any previously scheduled call.
29
+ */
25
30
  start(delay, fn) {
26
31
  this.clear();
27
- this.currentId = setTimeout(fn, delay);
32
+ this.currentId = setTimeout(() => {
33
+ this.currentId = null;
34
+ fn();
35
+ }, delay);
28
36
  }
29
37
  }
38
+ exports.Timeout = Timeout;
30
39
  function useTimeout() {
31
40
  const timeout = (0, _useLazyRef.useLazyRef)(Timeout.create).current;
32
41
  (0, _useOnMount.useOnMount)(timeout.disposeEffect);
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v7.0.0-beta.3
2
+ * @mui/x-data-grid v7.0.0-beta.5
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -85,6 +85,7 @@ var _exportNames = {
85
85
  getActiveElement: true,
86
86
  isEventTargetInPortal: true,
87
87
  isNavigationKey: true,
88
+ isPasteShortcut: true,
88
89
  buildWarning: true,
89
90
  exportAs: true,
90
91
  useGridPrivateApiContext: true,
@@ -330,6 +331,12 @@ Object.defineProperty(exports, "isNavigationKey", {
330
331
  return _keyboardUtils.isNavigationKey;
331
332
  }
332
333
  });
334
+ Object.defineProperty(exports, "isPasteShortcut", {
335
+ enumerable: true,
336
+ get: function () {
337
+ return _keyboardUtils.isPasteShortcut;
338
+ }
339
+ });
333
340
  Object.defineProperty(exports, "isSingleSelectColDef", {
334
341
  enumerable: true,
335
342
  get: function () {
@@ -3,24 +3,20 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.isPageKeys = exports.isNavigationKey = exports.isMultipleKey = exports.isKeyboardEvent = exports.isHomeOrEndKeys = exports.isHideMenuKey = exports.isEscapeKey = exports.isEnterKey = exports.isDeleteKeys = exports.isCellExitEditModeKeys = exports.isCellEnterEditModeKeys = exports.isCellEditCommitKeys = exports.isArrowKeys = exports.GRID_MULTIPLE_SELECTION_KEYS = exports.GRID_CELL_EXIT_EDIT_MODE_KEYS = exports.GRID_CELL_EDIT_COMMIT_KEYS = void 0;
6
+ exports.isNavigationKey = exports.isMultipleKey = exports.isKeyboardEvent = exports.isHideMenuKey = exports.isEscapeKey = exports.isCellExitEditModeKeys = exports.isCellEnterEditModeKeys = exports.isCellEditCommitKeys = exports.GRID_MULTIPLE_SELECTION_KEYS = exports.GRID_CELL_EXIT_EDIT_MODE_KEYS = exports.GRID_CELL_EDIT_COMMIT_KEYS = void 0;
7
+ exports.isPasteShortcut = isPasteShortcut;
7
8
  exports.isPrintableKey = isPrintableKey;
8
- exports.isTabKey = exports.isSpaceKey = void 0;
9
- const isEscapeKey = key => key === 'Escape'; // TODO remove
9
+ exports.isTabKey = void 0;
10
+ /**
11
+ * @deprecated there is no meaninfuly logic abstracted, use event.key directly.
12
+ */
13
+ const isEscapeKey = key => key === 'Escape';
14
+
15
+ /**
16
+ * @deprecated there is no meaninfuly logic abstracted, use event.key directly.
17
+ */
10
18
  exports.isEscapeKey = isEscapeKey;
11
- const isEnterKey = key => key === 'Enter'; // TODO remove
12
- exports.isEnterKey = isEnterKey;
13
- const isTabKey = key => key === 'Tab'; // TODO remove
14
- exports.isTabKey = isTabKey;
15
- const isSpaceKey = key => key === ' ';
16
- exports.isSpaceKey = isSpaceKey;
17
- const isArrowKeys = key => key.indexOf('Arrow') === 0;
18
- exports.isArrowKeys = isArrowKeys;
19
- const isHomeOrEndKeys = key => key === 'Home' || key === 'End';
20
- exports.isHomeOrEndKeys = isHomeOrEndKeys;
21
- const isPageKeys = key => key.indexOf('Page') === 0;
22
- exports.isPageKeys = isPageKeys;
23
- const isDeleteKeys = key => key === 'Delete' || key === 'Backspace';
19
+ const isTabKey = key => key === 'Tab';
24
20
 
25
21
  // Non printable keys have a name, e.g. "ArrowRight", see the whole list:
26
22
  // https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values
@@ -29,7 +25,7 @@ const isDeleteKeys = key => key === 'Delete' || key === 'Backspace';
29
25
  // However, we also need to ignore shortcuts, for example: select all:
30
26
  // - Windows: Ctrl+A, event.ctrlKey is true
31
27
  // - macOS: ⌘ Command+A, event.metaKey is true
32
- exports.isDeleteKeys = isDeleteKeys;
28
+ exports.isTabKey = isTabKey;
33
29
  function isPrintableKey(event) {
34
30
  return event.key.length === 1 && !event.ctrlKey && !event.metaKey;
35
31
  }
@@ -38,15 +34,24 @@ const GRID_CELL_EXIT_EDIT_MODE_KEYS = exports.GRID_CELL_EXIT_EDIT_MODE_KEYS = ['
38
34
  const GRID_CELL_EDIT_COMMIT_KEYS = exports.GRID_CELL_EDIT_COMMIT_KEYS = ['Enter', 'Tab'];
39
35
  const isMultipleKey = key => GRID_MULTIPLE_SELECTION_KEYS.indexOf(key) > -1;
40
36
  exports.isMultipleKey = isMultipleKey;
41
- const isCellEnterEditModeKeys = event => isEnterKey(event.key) || isDeleteKeys(event.key) || isPrintableKey(event);
37
+ const isCellEnterEditModeKeys = event => isPrintableKey(event) || event.key === 'Enter' || event.key === 'Backspace' || event.key === 'Delete';
42
38
  exports.isCellEnterEditModeKeys = isCellEnterEditModeKeys;
43
39
  const isCellExitEditModeKeys = key => GRID_CELL_EXIT_EDIT_MODE_KEYS.indexOf(key) > -1;
44
40
  exports.isCellExitEditModeKeys = isCellExitEditModeKeys;
45
41
  const isCellEditCommitKeys = key => GRID_CELL_EDIT_COMMIT_KEYS.indexOf(key) > -1;
46
42
  exports.isCellEditCommitKeys = isCellEditCommitKeys;
47
- const isNavigationKey = key => isHomeOrEndKeys(key) || isArrowKeys(key) || isPageKeys(key) || isSpaceKey(key);
43
+ const isNavigationKey = key => key.indexOf('Arrow') === 0 || key.indexOf('Page') === 0 || key === ' ' || key === 'Home' || key === 'End';
48
44
  exports.isNavigationKey = isNavigationKey;
49
45
  const isKeyboardEvent = event => !!event.key;
50
46
  exports.isKeyboardEvent = isKeyboardEvent;
51
47
  const isHideMenuKey = key => isTabKey(key) || isEscapeKey(key);
52
- exports.isHideMenuKey = isHideMenuKey;
48
+
49
+ // In theory, on macOS, ctrl + v doesn't trigger a paste, so the function should return false.
50
+ // However, maybe it's overkill to fix, so let's be lazy.
51
+ exports.isHideMenuKey = isHideMenuKey;
52
+ function isPasteShortcut(event) {
53
+ if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'v' && !event.shiftKey && !event.altKey) {
54
+ return true;
55
+ }
56
+ return false;
57
+ }
@@ -13,6 +13,7 @@ exports.isNumber = isNumber;
13
13
  exports.isObject = isObject;
14
14
  exports.localStorageAvailable = localStorageAvailable;
15
15
  exports.randomNumberBetween = randomNumberBetween;
16
+ exports.range = range;
16
17
  function isNumber(value) {
17
18
  return typeof value === 'number' && !Number.isNaN(value);
18
19
  }
@@ -45,6 +46,16 @@ function escapeRegExp(value) {
45
46
  */
46
47
  const clamp = (value, min, max) => Math.max(min, Math.min(max, value));
47
48
 
49
+ /**
50
+ * Create an array containing the range [from, to[
51
+ */
52
+ exports.clamp = clamp;
53
+ function range(from, to) {
54
+ return Array.from({
55
+ length: to - from
56
+ }).map((_, i) => from + i);
57
+ }
58
+
48
59
  /**
49
60
  * Based on `fast-deep-equal`
50
61
  *
@@ -71,7 +82,7 @@ const clamp = (value, min, max) => Math.max(min, Math.min(max, value));
71
82
  * SOFTWARE.
72
83
  * We only type the public interface to avoid dozens of `as` in the function.
73
84
  */
74
- exports.clamp = clamp;
85
+
75
86
  function isDeepEqual(a, b) {
76
87
  if (a === b) {
77
88
  return true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-data-grid",
3
- "version": "7.0.0-beta.3",
3
+ "version": "7.0.0-beta.5",
4
4
  "description": "The community edition of the data grid component (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./node/index.js",
@@ -1,12 +1,12 @@
1
1
  import * as React from 'react';
2
+ /**
3
+ * @deprecated there is no meaninfuly logic abstracted, use event.key directly.
4
+ */
2
5
  export declare const isEscapeKey: (key: string) => boolean;
3
- export declare const isEnterKey: (key: string) => boolean;
6
+ /**
7
+ * @deprecated there is no meaninfuly logic abstracted, use event.key directly.
8
+ */
4
9
  export declare const isTabKey: (key: string) => boolean;
5
- export declare const isSpaceKey: (key: string) => boolean;
6
- export declare const isArrowKeys: (key: string) => boolean;
7
- export declare const isHomeOrEndKeys: (key: string) => boolean;
8
- export declare const isPageKeys: (key: string) => boolean;
9
- export declare const isDeleteKeys: (key: string) => boolean;
10
10
  export declare function isPrintableKey(event: React.KeyboardEvent<HTMLElement>): boolean;
11
11
  export declare const GRID_MULTIPLE_SELECTION_KEYS: string[];
12
12
  export declare const GRID_CELL_EXIT_EDIT_MODE_KEYS: string[];
@@ -18,3 +18,4 @@ export declare const isCellEditCommitKeys: (key: string) => boolean;
18
18
  export declare const isNavigationKey: (key: string) => boolean;
19
19
  export declare const isKeyboardEvent: (event: any) => event is React.KeyboardEvent<HTMLElement>;
20
20
  export declare const isHideMenuKey: (key: React.KeyboardEvent['key']) => boolean;
21
+ export declare function isPasteShortcut(event: React.KeyboardEvent): boolean;
@@ -1,12 +1,12 @@
1
- export const isEscapeKey = key => key === 'Escape'; // TODO remove
2
- export const isEnterKey = key => key === 'Enter'; // TODO remove
3
- export const isTabKey = key => key === 'Tab'; // TODO remove
1
+ /**
2
+ * @deprecated there is no meaninfuly logic abstracted, use event.key directly.
3
+ */
4
+ export const isEscapeKey = key => key === 'Escape';
4
5
 
5
- export const isSpaceKey = key => key === ' ';
6
- export const isArrowKeys = key => key.indexOf('Arrow') === 0;
7
- export const isHomeOrEndKeys = key => key === 'Home' || key === 'End';
8
- export const isPageKeys = key => key.indexOf('Page') === 0;
9
- export const isDeleteKeys = key => key === 'Delete' || key === 'Backspace';
6
+ /**
7
+ * @deprecated there is no meaninfuly logic abstracted, use event.key directly.
8
+ */
9
+ export const isTabKey = key => key === 'Tab';
10
10
 
11
11
  // Non printable keys have a name, e.g. "ArrowRight", see the whole list:
12
12
  // https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values
@@ -22,9 +22,18 @@ export const GRID_MULTIPLE_SELECTION_KEYS = ['Meta', 'Control', 'Shift'];
22
22
  export const GRID_CELL_EXIT_EDIT_MODE_KEYS = ['Enter', 'Escape', 'Tab'];
23
23
  export const GRID_CELL_EDIT_COMMIT_KEYS = ['Enter', 'Tab'];
24
24
  export const isMultipleKey = key => GRID_MULTIPLE_SELECTION_KEYS.indexOf(key) > -1;
25
- export const isCellEnterEditModeKeys = event => isEnterKey(event.key) || isDeleteKeys(event.key) || isPrintableKey(event);
25
+ export const isCellEnterEditModeKeys = event => isPrintableKey(event) || event.key === 'Enter' || event.key === 'Backspace' || event.key === 'Delete';
26
26
  export const isCellExitEditModeKeys = key => GRID_CELL_EXIT_EDIT_MODE_KEYS.indexOf(key) > -1;
27
27
  export const isCellEditCommitKeys = key => GRID_CELL_EDIT_COMMIT_KEYS.indexOf(key) > -1;
28
- export const isNavigationKey = key => isHomeOrEndKeys(key) || isArrowKeys(key) || isPageKeys(key) || isSpaceKey(key);
28
+ export const isNavigationKey = key => key.indexOf('Arrow') === 0 || key.indexOf('Page') === 0 || key === ' ' || key === 'Home' || key === 'End';
29
29
  export const isKeyboardEvent = event => !!event.key;
30
- export const isHideMenuKey = key => isTabKey(key) || isEscapeKey(key);
30
+ export const isHideMenuKey = key => isTabKey(key) || isEscapeKey(key);
31
+
32
+ // In theory, on macOS, ctrl + v doesn't trigger a paste, so the function should return false.
33
+ // However, maybe it's overkill to fix, so let's be lazy.
34
+ export function isPasteShortcut(event) {
35
+ if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'v' && !event.shiftKey && !event.altKey) {
36
+ return true;
37
+ }
38
+ return false;
39
+ }