@mui/x-data-grid 5.8.0 → 5.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (626) hide show
  1. package/CHANGELOG.md +333 -66
  2. package/DataGrid/DataGrid.js +36 -2
  3. package/DataGrid/useDataGridComponent.js +3 -1
  4. package/DataGrid/useDataGridProps.js +2 -1
  5. package/LICENSE +21 -0
  6. package/README.md +7 -5
  7. package/colDef/gridActionsColDef.js +2 -1
  8. package/colDef/gridBooleanColDef.js +2 -1
  9. package/colDef/gridCheckboxSelectionColDef.js +1 -0
  10. package/colDef/gridDateColDef.js +4 -2
  11. package/colDef/gridNumericColDef.js +3 -2
  12. package/colDef/gridNumericOperators.d.ts +2 -0
  13. package/colDef/gridNumericOperators.js +11 -0
  14. package/colDef/gridSingleSelectColDef.js +3 -2
  15. package/colDef/gridSingleSelectOperators.d.ts +3 -0
  16. package/colDef/gridSingleSelectOperators.js +52 -0
  17. package/colDef/gridStringColDef.js +3 -2
  18. package/colDef/gridStringOperators.d.ts +2 -0
  19. package/colDef/gridStringOperators.js +12 -0
  20. package/components/GridFooter.d.ts +4 -2
  21. package/components/GridFooter.js +11 -2
  22. package/components/GridRow.d.ts +4 -0
  23. package/components/GridRow.js +58 -28
  24. package/components/GridRowCount.d.ts +4 -1
  25. package/components/GridRowCount.js +1 -0
  26. package/components/GridScrollArea.js +3 -4
  27. package/components/GridSelectedRowCount.d.ts +4 -1
  28. package/components/GridSelectedRowCount.js +2 -1
  29. package/components/base/GridBody.js +1 -2
  30. package/components/base/GridOverlays.js +5 -5
  31. package/components/cell/GridActionsCell.d.ts +5 -1
  32. package/components/cell/GridActionsCell.js +179 -21
  33. package/components/cell/GridActionsCellItem.d.ts +66 -4
  34. package/components/cell/GridActionsCellItem.js +7 -5
  35. package/components/cell/GridCell.d.ts +1 -0
  36. package/components/cell/GridCell.js +36 -15
  37. package/components/cell/GridEditBooleanCell.d.ts +15 -3
  38. package/components/cell/GridEditBooleanCell.js +101 -6
  39. package/components/cell/GridEditDateCell.d.ts +16 -4
  40. package/components/cell/GridEditDateCell.js +99 -5
  41. package/components/cell/GridEditInputCell.d.ts +11 -5
  42. package/components/cell/GridEditInputCell.js +30 -6
  43. package/components/cell/GridEditSingleSelectCell.d.ts +12 -4
  44. package/components/cell/GridEditSingleSelectCell.js +50 -18
  45. package/components/cell/index.d.ts +2 -0
  46. package/components/cell/index.js +2 -0
  47. package/components/columnHeaders/GridColumnHeaderItem.js +19 -23
  48. package/components/columnHeaders/GridColumnHeaders.d.ts +2 -1
  49. package/components/columnHeaders/GridColumnHeaders.js +1 -1
  50. package/components/columnHeaders/GridColumnHeadersInner.d.ts +2 -0
  51. package/components/columnSelection/GridCellCheckboxRenderer.d.ts +3 -3
  52. package/components/columnSelection/GridCellCheckboxRenderer.js +22 -6
  53. package/components/columnSelection/GridHeaderCheckbox.js +4 -5
  54. package/components/containers/GridFooterContainer.d.ts +8 -2
  55. package/components/containers/GridFooterContainer.js +11 -2
  56. package/components/containers/GridRootStyles.js +36 -1
  57. package/components/containers/GridToolbarContainer.d.ts +8 -2
  58. package/components/containers/GridToolbarContainer.js +12 -2
  59. package/components/menu/GridMenu.js +1 -0
  60. package/components/panel/GridPanel.js +1 -0
  61. package/components/panel/GridPanelContent.d.ts +8 -1
  62. package/components/panel/GridPanelContent.js +13 -2
  63. package/components/panel/GridPanelFooter.d.ts +8 -1
  64. package/components/panel/GridPanelFooter.js +13 -2
  65. package/components/panel/GridPanelHeader.d.ts +8 -1
  66. package/components/panel/GridPanelHeader.js +13 -2
  67. package/components/panel/filterPanel/GridFilterForm.js +14 -10
  68. package/components/panel/filterPanel/GridFilterInputBoolean.js +13 -8
  69. package/components/panel/filterPanel/GridFilterInputSingleSelect.js +22 -15
  70. package/components/panel/filterPanel/GridFilterInputValue.js +22 -15
  71. package/components/toolbar/GridToolbar.d.ts +12 -2
  72. package/components/toolbar/GridToolbar.js +30 -7
  73. package/components/toolbar/GridToolbarDensitySelector.js +1 -1
  74. package/components/toolbar/GridToolbarExport.d.ts +5 -4
  75. package/components/toolbar/GridToolbarExport.js +15 -20
  76. package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
  77. package/components/toolbar/GridToolbarQuickFilter.d.ts +20 -0
  78. package/components/toolbar/GridToolbarQuickFilter.js +88 -0
  79. package/components/toolbar/index.d.ts +3 -1
  80. package/components/toolbar/index.js +3 -2
  81. package/components/virtualization/GridVirtualScroller.d.ts +4 -1
  82. package/components/virtualization/GridVirtualScroller.js +2 -0
  83. package/components/virtualization/GridVirtualScrollerContent.d.ts +4 -1
  84. package/components/virtualization/GridVirtualScrollerContent.js +1 -3
  85. package/components/virtualization/GridVirtualScrollerRenderZone.d.ts +4 -1
  86. package/constants/defaultGridSlotsComponents.js +3 -2
  87. package/constants/gridClasses.d.ts +20 -0
  88. package/constants/gridClasses.js +1 -1
  89. package/constants/gridDetailPanelToggleField.d.ts +1 -0
  90. package/constants/gridDetailPanelToggleField.js +2 -0
  91. package/constants/localeTextConstants.js +8 -1
  92. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +39 -15
  93. package/hooks/core/pipeProcessing/index.d.ts +1 -0
  94. package/hooks/core/pipeProcessing/index.js +2 -1
  95. package/hooks/core/pipeProcessing/useGridPipeProcessing.d.ts +8 -3
  96. package/hooks/core/pipeProcessing/useGridPipeProcessing.js +53 -19
  97. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +3 -0
  98. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
  99. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +0 -3
  100. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
  101. package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +4 -4
  102. package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  103. package/hooks/core/useGridApiInitialization.js +3 -3
  104. package/hooks/core/useGridErrorHandler.js +1 -2
  105. package/hooks/core/useGridStateInitialization.js +1 -2
  106. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +0 -1
  107. package/hooks/features/columnHeaders/useGridColumnHeaders.js +81 -16
  108. package/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
  109. package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -1
  110. package/hooks/features/columns/gridColumnsUtils.d.ts +19 -1
  111. package/hooks/features/columns/gridColumnsUtils.js +61 -8
  112. package/hooks/features/columns/useGridColumnSpanning.d.ts +7 -0
  113. package/hooks/features/columns/useGridColumnSpanning.js +108 -0
  114. package/hooks/features/columns/useGridColumns.d.ts +1 -1
  115. package/hooks/features/columns/useGridColumns.js +30 -25
  116. package/hooks/features/dimensions/useGridDimensions.d.ts +1 -1
  117. package/hooks/features/dimensions/useGridDimensions.js +10 -11
  118. package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
  119. package/hooks/features/editRows/useGridCellEditing.new.js +151 -42
  120. package/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  121. package/hooks/features/editRows/useGridEditing.new.js +7 -3
  122. package/hooks/features/editRows/useGridEditing.old.js +4 -5
  123. package/hooks/features/editRows/useGridRowEditing.new.d.ts +1 -1
  124. package/hooks/features/editRows/useGridRowEditing.new.js +145 -57
  125. package/hooks/features/editRows/useGridRowEditing.old.js +21 -22
  126. package/hooks/features/events/useGridEvents.js +17 -18
  127. package/hooks/features/export/serializers/csvSerializer.js +5 -5
  128. package/hooks/features/export/useGridCsvExport.js +23 -16
  129. package/hooks/features/export/useGridPrintExport.js +22 -0
  130. package/hooks/features/export/utils.d.ts +3 -1
  131. package/hooks/features/export/utils.js +13 -0
  132. package/hooks/features/filter/gridFilterState.d.ts +1 -2
  133. package/hooks/features/filter/gridFilterState.js +3 -1
  134. package/hooks/features/filter/gridFilterUtils.d.ts +8 -0
  135. package/hooks/features/filter/gridFilterUtils.js +84 -2
  136. package/hooks/features/filter/useGridFilter.js +32 -15
  137. package/hooks/features/focus/useGridFocus.d.ts +1 -1
  138. package/hooks/features/focus/useGridFocus.js +48 -42
  139. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -0
  140. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +43 -12
  141. package/hooks/features/pagination/useGridPage.js +3 -4
  142. package/hooks/features/pagination/useGridPageSize.js +2 -3
  143. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  144. package/hooks/features/rows/gridRowsSelector.d.ts +2 -0
  145. package/hooks/features/rows/gridRowsSelector.js +2 -0
  146. package/hooks/features/rows/gridRowsState.d.ts +7 -7
  147. package/hooks/features/rows/gridRowsUtils.d.ts +2 -1
  148. package/hooks/features/rows/gridRowsUtils.js +25 -1
  149. package/hooks/features/rows/useGridRows.d.ts +2 -2
  150. package/hooks/features/rows/useGridRows.js +121 -61
  151. package/hooks/features/rows/useGridRowsMeta.js +6 -13
  152. package/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  153. package/hooks/features/scroll/useGridScroll.d.ts +2 -0
  154. package/hooks/features/scroll/useGridScroll.js +31 -4
  155. package/hooks/features/selection/useGridSelection.d.ts +1 -1
  156. package/hooks/features/selection/useGridSelection.js +15 -11
  157. package/hooks/features/sorting/useGridSorting.js +17 -18
  158. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +9 -0
  159. package/hooks/features/virtualization/useGridVirtualScroller.js +68 -32
  160. package/hooks/utils/useGridApiEventHandler.d.ts +4 -1
  161. package/hooks/utils/useGridApiEventHandler.js +22 -9
  162. package/hooks/utils/useGridNativeEventListener.js +1 -2
  163. package/hooks/utils/useGridSelector.js +1 -1
  164. package/index.d.ts +2 -0
  165. package/index.js +1 -1
  166. package/internals/index.d.ts +5 -1
  167. package/internals/index.js +6 -2
  168. package/legacy/DataGrid/DataGrid.js +36 -2
  169. package/legacy/DataGrid/useDataGridComponent.js +3 -1
  170. package/legacy/DataGrid/useDataGridProps.js +2 -1
  171. package/legacy/colDef/gridActionsColDef.js +2 -1
  172. package/legacy/colDef/gridBooleanColDef.js +2 -1
  173. package/legacy/colDef/gridCheckboxSelectionColDef.js +1 -0
  174. package/legacy/colDef/gridDateColDef.js +4 -2
  175. package/legacy/colDef/gridNumericColDef.js +3 -2
  176. package/legacy/colDef/gridNumericOperators.js +28 -18
  177. package/legacy/colDef/gridSingleSelectColDef.js +3 -2
  178. package/legacy/colDef/gridSingleSelectOperators.js +55 -6
  179. package/legacy/colDef/gridStringColDef.js +3 -2
  180. package/legacy/colDef/gridStringOperators.js +25 -14
  181. package/legacy/components/GridFooter.js +11 -2
  182. package/legacy/components/GridRow.js +56 -28
  183. package/legacy/components/GridRowCount.js +1 -0
  184. package/legacy/components/GridScrollArea.js +3 -4
  185. package/legacy/components/GridSelectedRowCount.js +2 -1
  186. package/legacy/components/base/GridBody.js +1 -2
  187. package/legacy/components/base/GridOverlays.js +5 -5
  188. package/legacy/components/cell/GridActionsCell.js +197 -27
  189. package/legacy/components/cell/GridActionsCellItem.js +7 -5
  190. package/legacy/components/cell/GridCell.js +37 -15
  191. package/legacy/components/cell/GridEditBooleanCell.js +132 -11
  192. package/legacy/components/cell/GridEditDateCell.js +148 -42
  193. package/legacy/components/cell/GridEditInputCell.js +62 -13
  194. package/legacy/components/cell/GridEditSingleSelectCell.js +65 -28
  195. package/legacy/components/cell/index.js +2 -0
  196. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +19 -23
  197. package/legacy/components/columnHeaders/GridColumnHeaders.js +2 -3
  198. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +23 -6
  199. package/legacy/components/columnSelection/GridHeaderCheckbox.js +4 -5
  200. package/legacy/components/containers/GridFooterContainer.js +11 -2
  201. package/legacy/components/containers/GridRootStyles.js +26 -5
  202. package/legacy/components/containers/GridToolbarContainer.js +12 -2
  203. package/legacy/components/menu/GridMenu.js +1 -0
  204. package/legacy/components/panel/GridPanel.js +1 -0
  205. package/legacy/components/panel/GridPanelContent.js +13 -2
  206. package/legacy/components/panel/GridPanelFooter.js +13 -2
  207. package/legacy/components/panel/GridPanelHeader.js +13 -2
  208. package/legacy/components/panel/filterPanel/GridFilterForm.js +14 -10
  209. package/legacy/components/panel/filterPanel/GridFilterInputBoolean.js +13 -8
  210. package/legacy/components/panel/filterPanel/GridFilterInputSingleSelect.js +22 -17
  211. package/legacy/components/panel/filterPanel/GridFilterInputValue.js +22 -17
  212. package/legacy/components/toolbar/GridToolbar.js +31 -6
  213. package/legacy/components/toolbar/GridToolbarDensitySelector.js +1 -1
  214. package/legacy/components/toolbar/GridToolbarExport.js +18 -19
  215. package/legacy/components/toolbar/GridToolbarQuickFilter.js +103 -0
  216. package/legacy/components/toolbar/index.js +3 -2
  217. package/legacy/components/virtualization/GridVirtualScroller.js +2 -0
  218. package/legacy/components/virtualization/GridVirtualScrollerContent.js +1 -3
  219. package/legacy/constants/defaultGridSlotsComponents.js +3 -2
  220. package/legacy/constants/gridClasses.js +1 -1
  221. package/legacy/constants/gridDetailPanelToggleField.js +2 -0
  222. package/legacy/constants/localeTextConstants.js +8 -1
  223. package/legacy/hooks/core/pipeProcessing/index.js +2 -1
  224. package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +60 -24
  225. package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
  226. package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
  227. package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  228. package/legacy/hooks/core/useGridApiInitialization.js +3 -3
  229. package/legacy/hooks/core/useGridErrorHandler.js +1 -2
  230. package/legacy/hooks/core/useGridStateInitialization.js +1 -2
  231. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +94 -16
  232. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
  233. package/legacy/hooks/features/columns/gridColumnsUtils.js +79 -22
  234. package/legacy/hooks/features/columns/useGridColumnSpanning.js +106 -0
  235. package/legacy/hooks/features/columns/useGridColumns.js +30 -25
  236. package/legacy/hooks/features/dimensions/useGridDimensions.js +10 -11
  237. package/legacy/hooks/features/editRows/useGridCellEditing.new.js +225 -89
  238. package/legacy/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  239. package/legacy/hooks/features/editRows/useGridEditing.new.js +7 -3
  240. package/legacy/hooks/features/editRows/useGridEditing.old.js +4 -5
  241. package/legacy/hooks/features/editRows/useGridRowEditing.new.js +157 -65
  242. package/legacy/hooks/features/editRows/useGridRowEditing.old.js +20 -21
  243. package/legacy/hooks/features/events/useGridEvents.js +17 -18
  244. package/legacy/hooks/features/export/serializers/csvSerializer.js +5 -5
  245. package/legacy/hooks/features/export/useGridCsvExport.js +24 -17
  246. package/legacy/hooks/features/export/useGridPrintExport.js +22 -0
  247. package/legacy/hooks/features/export/utils.js +14 -0
  248. package/legacy/hooks/features/filter/gridFilterState.js +3 -1
  249. package/legacy/hooks/features/filter/gridFilterUtils.js +96 -2
  250. package/legacy/hooks/features/filter/useGridFilter.js +32 -15
  251. package/legacy/hooks/features/focus/useGridFocus.js +50 -44
  252. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +43 -11
  253. package/legacy/hooks/features/pagination/useGridPage.js +3 -4
  254. package/legacy/hooks/features/pagination/useGridPageSize.js +2 -3
  255. package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  256. package/legacy/hooks/features/rows/gridRowsSelector.js +6 -0
  257. package/legacy/hooks/features/rows/gridRowsUtils.js +27 -1
  258. package/legacy/hooks/features/rows/useGridRows.js +131 -61
  259. package/legacy/hooks/features/rows/useGridRowsMeta.js +6 -13
  260. package/legacy/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  261. package/legacy/hooks/features/scroll/useGridScroll.js +31 -4
  262. package/legacy/hooks/features/selection/useGridSelection.js +15 -11
  263. package/legacy/hooks/features/sorting/useGridSorting.js +12 -15
  264. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +79 -42
  265. package/legacy/hooks/utils/useGridApiEventHandler.js +20 -9
  266. package/legacy/hooks/utils/useGridNativeEventListener.js +1 -2
  267. package/legacy/hooks/utils/useGridSelector.js +1 -1
  268. package/legacy/index.js +1 -1
  269. package/legacy/internals/index.js +6 -2
  270. package/legacy/locales/arSD.js +8 -1
  271. package/legacy/locales/bgBG.js +8 -1
  272. package/legacy/locales/csCZ.js +7 -0
  273. package/legacy/locales/daDK.js +8 -1
  274. package/legacy/locales/deDE.js +10 -3
  275. package/legacy/locales/elGR.js +7 -0
  276. package/legacy/locales/esES.js +7 -0
  277. package/legacy/locales/faIR.js +8 -1
  278. package/legacy/locales/fiFI.js +7 -0
  279. package/legacy/locales/frFR.js +7 -0
  280. package/legacy/locales/heIL.js +8 -1
  281. package/legacy/locales/huHU.js +127 -0
  282. package/legacy/locales/index.js +1 -0
  283. package/legacy/locales/itIT.js +7 -0
  284. package/legacy/locales/jaJP.js +7 -0
  285. package/legacy/locales/koKR.js +7 -0
  286. package/legacy/locales/nlNL.js +7 -0
  287. package/legacy/locales/plPL.js +8 -1
  288. package/legacy/locales/ptBR.js +8 -1
  289. package/legacy/locales/ruRU.js +7 -0
  290. package/legacy/locales/skSK.js +7 -0
  291. package/legacy/locales/trTR.js +8 -1
  292. package/legacy/locales/ukUA.js +7 -0
  293. package/legacy/locales/viVN.js +7 -0
  294. package/legacy/locales/zhCN.js +7 -0
  295. package/legacy/models/api/gridColumnSpanning.js +1 -0
  296. package/legacy/models/events/gridEvents.js +10 -3
  297. package/legacy/models/gridColumnSpanning.js +1 -0
  298. package/legacy/models/index.js +4 -3
  299. package/legacy/utils/createSelector.js +18 -2
  300. package/legacy/utils/exportAs.js +1 -1
  301. package/locales/arSD.js +8 -1
  302. package/locales/bgBG.js +8 -1
  303. package/locales/csCZ.js +7 -0
  304. package/locales/daDK.js +8 -1
  305. package/locales/deDE.js +10 -3
  306. package/locales/elGR.js +7 -0
  307. package/locales/esES.js +7 -0
  308. package/locales/faIR.js +8 -1
  309. package/locales/fiFI.js +7 -0
  310. package/locales/frFR.js +7 -0
  311. package/locales/heIL.js +8 -1
  312. package/locales/huHU.d.ts +2 -0
  313. package/locales/huHU.js +115 -0
  314. package/locales/index.d.ts +1 -0
  315. package/locales/index.js +1 -0
  316. package/locales/itIT.js +7 -0
  317. package/locales/jaJP.js +7 -0
  318. package/locales/koKR.js +7 -0
  319. package/locales/nlNL.js +7 -0
  320. package/locales/plPL.js +8 -1
  321. package/locales/ptBR.js +8 -1
  322. package/locales/ruRU.js +7 -0
  323. package/locales/skSK.js +7 -0
  324. package/locales/trTR.js +8 -1
  325. package/locales/ukUA.js +7 -0
  326. package/locales/viVN.js +7 -0
  327. package/locales/zhCN.js +7 -0
  328. package/models/api/gridApiCommon.d.ts +2 -1
  329. package/models/api/gridColumnSpanning.d.ts +28 -0
  330. package/models/api/gridColumnSpanning.js +1 -0
  331. package/models/api/gridCoreApi.d.ts +10 -0
  332. package/models/api/gridEditingApi.d.ts +72 -7
  333. package/models/api/gridFilterApi.d.ts +5 -0
  334. package/models/api/gridFocusApi.d.ts +1 -0
  335. package/models/api/gridLocaleTextApi.d.ts +5 -0
  336. package/models/api/gridRowApi.d.ts +34 -0
  337. package/models/api/index.d.ts +1 -1
  338. package/models/colDef/gridColDef.d.ts +18 -0
  339. package/models/events/gridEventLookup.d.ts +296 -11
  340. package/models/events/gridEvents.d.ts +10 -258
  341. package/models/events/gridEvents.js +10 -3
  342. package/models/gridColumnSpanning.d.ts +12 -0
  343. package/models/gridColumnSpanning.js +1 -0
  344. package/models/gridEditRowModel.d.ts +1 -1
  345. package/models/gridExport.d.ts +29 -2
  346. package/models/gridFilterModel.d.ts +11 -0
  347. package/models/gridFilterOperator.d.ts +1 -1
  348. package/models/gridIconSlotsComponent.d.ts +5 -0
  349. package/models/gridStateCommunity.d.ts +0 -2
  350. package/models/index.d.ts +1 -1
  351. package/models/index.js +4 -3
  352. package/models/params/gridCellParams.d.ts +12 -2
  353. package/models/params/gridRowParams.d.ts +5 -0
  354. package/models/props/DataGridProps.d.ts +57 -29
  355. package/modern/DataGrid/DataGrid.js +36 -2
  356. package/modern/DataGrid/useDataGridComponent.js +3 -1
  357. package/modern/DataGrid/useDataGridProps.js +2 -1
  358. package/modern/colDef/gridActionsColDef.js +2 -1
  359. package/modern/colDef/gridBooleanColDef.js +2 -1
  360. package/modern/colDef/gridCheckboxSelectionColDef.js +1 -0
  361. package/modern/colDef/gridDateColDef.js +4 -2
  362. package/modern/colDef/gridNumericColDef.js +3 -2
  363. package/modern/colDef/gridNumericOperators.js +11 -0
  364. package/modern/colDef/gridSingleSelectColDef.js +3 -2
  365. package/modern/colDef/gridSingleSelectOperators.js +52 -0
  366. package/modern/colDef/gridStringColDef.js +3 -2
  367. package/modern/colDef/gridStringOperators.js +12 -0
  368. package/modern/components/GridFooter.js +11 -2
  369. package/modern/components/GridRow.js +56 -26
  370. package/modern/components/GridRowCount.js +1 -0
  371. package/modern/components/GridScrollArea.js +3 -4
  372. package/modern/components/GridSelectedRowCount.js +2 -1
  373. package/modern/components/base/GridBody.js +1 -2
  374. package/modern/components/base/GridOverlays.js +5 -5
  375. package/modern/components/cell/GridActionsCell.js +179 -21
  376. package/modern/components/cell/GridActionsCellItem.js +7 -5
  377. package/modern/components/cell/GridCell.js +36 -15
  378. package/modern/components/cell/GridEditBooleanCell.js +101 -6
  379. package/modern/components/cell/GridEditDateCell.js +99 -5
  380. package/modern/components/cell/GridEditInputCell.js +30 -6
  381. package/modern/components/cell/GridEditSingleSelectCell.js +48 -16
  382. package/modern/components/cell/index.js +2 -0
  383. package/modern/components/columnHeaders/GridColumnHeaderItem.js +19 -23
  384. package/modern/components/columnHeaders/GridColumnHeaders.js +1 -1
  385. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +22 -6
  386. package/modern/components/columnSelection/GridHeaderCheckbox.js +4 -5
  387. package/modern/components/containers/GridFooterContainer.js +11 -2
  388. package/modern/components/containers/GridRootStyles.js +36 -1
  389. package/modern/components/containers/GridToolbarContainer.js +12 -2
  390. package/modern/components/menu/GridMenu.js +1 -0
  391. package/modern/components/panel/GridPanel.js +1 -0
  392. package/modern/components/panel/GridPanelContent.js +13 -2
  393. package/modern/components/panel/GridPanelFooter.js +13 -2
  394. package/modern/components/panel/GridPanelHeader.js +13 -2
  395. package/modern/components/panel/filterPanel/GridFilterForm.js +10 -6
  396. package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +11 -6
  397. package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +20 -13
  398. package/modern/components/panel/filterPanel/GridFilterInputValue.js +20 -13
  399. package/modern/components/toolbar/GridToolbar.js +30 -7
  400. package/modern/components/toolbar/GridToolbarDensitySelector.js +1 -1
  401. package/modern/components/toolbar/GridToolbarExport.js +15 -20
  402. package/modern/components/toolbar/GridToolbarQuickFilter.js +86 -0
  403. package/modern/components/toolbar/index.js +3 -2
  404. package/modern/components/virtualization/GridVirtualScroller.js +2 -0
  405. package/modern/components/virtualization/GridVirtualScrollerContent.js +1 -3
  406. package/modern/constants/defaultGridSlotsComponents.js +3 -2
  407. package/modern/constants/gridClasses.js +1 -1
  408. package/modern/constants/gridDetailPanelToggleField.js +2 -0
  409. package/modern/constants/localeTextConstants.js +8 -1
  410. package/modern/hooks/core/pipeProcessing/index.js +2 -1
  411. package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +53 -19
  412. package/modern/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
  413. package/modern/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
  414. package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  415. package/modern/hooks/core/useGridApiInitialization.js +3 -3
  416. package/modern/hooks/core/useGridErrorHandler.js +1 -2
  417. package/modern/hooks/core/useGridStateInitialization.js +1 -2
  418. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +81 -16
  419. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
  420. package/modern/hooks/features/columns/gridColumnsUtils.js +61 -8
  421. package/modern/hooks/features/columns/useGridColumnSpanning.js +106 -0
  422. package/modern/hooks/features/columns/useGridColumns.js +30 -25
  423. package/modern/hooks/features/dimensions/useGridDimensions.js +10 -11
  424. package/modern/hooks/features/editRows/useGridCellEditing.new.js +149 -42
  425. package/modern/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  426. package/modern/hooks/features/editRows/useGridEditing.new.js +7 -3
  427. package/modern/hooks/features/editRows/useGridEditing.old.js +4 -5
  428. package/modern/hooks/features/editRows/useGridRowEditing.new.js +143 -57
  429. package/modern/hooks/features/editRows/useGridRowEditing.old.js +21 -22
  430. package/modern/hooks/features/events/useGridEvents.js +17 -18
  431. package/modern/hooks/features/export/serializers/csvSerializer.js +5 -5
  432. package/modern/hooks/features/export/useGridCsvExport.js +21 -16
  433. package/modern/hooks/features/export/useGridPrintExport.js +20 -0
  434. package/modern/hooks/features/export/utils.js +13 -0
  435. package/modern/hooks/features/filter/gridFilterState.js +3 -1
  436. package/modern/hooks/features/filter/gridFilterUtils.js +80 -2
  437. package/modern/hooks/features/filter/useGridFilter.js +32 -15
  438. package/modern/hooks/features/focus/useGridFocus.js +48 -42
  439. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +41 -12
  440. package/modern/hooks/features/pagination/useGridPage.js +3 -4
  441. package/modern/hooks/features/pagination/useGridPageSize.js +2 -3
  442. package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  443. package/modern/hooks/features/rows/gridRowsSelector.js +2 -0
  444. package/modern/hooks/features/rows/gridRowsUtils.js +23 -1
  445. package/modern/hooks/features/rows/useGridRows.js +121 -61
  446. package/modern/hooks/features/rows/useGridRowsMeta.js +6 -13
  447. package/modern/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  448. package/modern/hooks/features/scroll/useGridScroll.js +29 -4
  449. package/modern/hooks/features/selection/useGridSelection.js +15 -11
  450. package/modern/hooks/features/sorting/useGridSorting.js +17 -18
  451. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +68 -28
  452. package/modern/hooks/utils/useGridApiEventHandler.js +20 -9
  453. package/modern/hooks/utils/useGridNativeEventListener.js +1 -2
  454. package/modern/hooks/utils/useGridSelector.js +1 -1
  455. package/modern/index.js +1 -1
  456. package/modern/internals/index.js +6 -2
  457. package/modern/locales/arSD.js +8 -1
  458. package/modern/locales/bgBG.js +8 -1
  459. package/modern/locales/csCZ.js +7 -0
  460. package/modern/locales/daDK.js +8 -1
  461. package/modern/locales/deDE.js +10 -3
  462. package/modern/locales/elGR.js +7 -0
  463. package/modern/locales/esES.js +7 -0
  464. package/modern/locales/faIR.js +8 -1
  465. package/modern/locales/fiFI.js +7 -0
  466. package/modern/locales/frFR.js +7 -0
  467. package/modern/locales/heIL.js +8 -1
  468. package/modern/locales/huHU.js +115 -0
  469. package/modern/locales/index.js +1 -0
  470. package/modern/locales/itIT.js +7 -0
  471. package/modern/locales/jaJP.js +7 -0
  472. package/modern/locales/koKR.js +7 -0
  473. package/modern/locales/nlNL.js +7 -0
  474. package/modern/locales/plPL.js +8 -1
  475. package/modern/locales/ptBR.js +8 -1
  476. package/modern/locales/ruRU.js +7 -0
  477. package/modern/locales/skSK.js +7 -0
  478. package/modern/locales/trTR.js +8 -1
  479. package/modern/locales/ukUA.js +7 -0
  480. package/modern/locales/viVN.js +7 -0
  481. package/modern/locales/zhCN.js +7 -0
  482. package/modern/models/api/gridColumnSpanning.js +1 -0
  483. package/modern/models/events/gridEvents.js +10 -3
  484. package/modern/models/gridColumnSpanning.js +1 -0
  485. package/modern/models/index.js +4 -3
  486. package/modern/utils/createSelector.js +20 -2
  487. package/modern/utils/exportAs.js +1 -1
  488. package/node/DataGrid/DataGrid.js +36 -2
  489. package/node/DataGrid/useDataGridComponent.js +4 -1
  490. package/node/DataGrid/useDataGridProps.js +2 -1
  491. package/node/colDef/gridActionsColDef.js +2 -1
  492. package/node/colDef/gridBooleanColDef.js +2 -1
  493. package/node/colDef/gridCheckboxSelectionColDef.js +1 -0
  494. package/node/colDef/gridDateColDef.js +4 -2
  495. package/node/colDef/gridNumericColDef.js +2 -1
  496. package/node/colDef/gridNumericOperators.js +15 -1
  497. package/node/colDef/gridSingleSelectColDef.js +2 -1
  498. package/node/colDef/gridSingleSelectOperators.js +56 -1
  499. package/node/colDef/gridStringColDef.js +2 -1
  500. package/node/colDef/gridStringOperators.js +16 -1
  501. package/node/components/GridFooter.js +10 -1
  502. package/node/components/GridRow.js +59 -29
  503. package/node/components/GridRowCount.js +1 -0
  504. package/node/components/GridScrollArea.js +3 -5
  505. package/node/components/GridSelectedRowCount.js +2 -1
  506. package/node/components/base/GridBody.js +1 -3
  507. package/node/components/base/GridOverlays.js +4 -5
  508. package/node/components/cell/GridActionsCell.js +181 -21
  509. package/node/components/cell/GridActionsCellItem.js +7 -4
  510. package/node/components/cell/GridCell.js +35 -14
  511. package/node/components/cell/GridEditBooleanCell.js +100 -5
  512. package/node/components/cell/GridEditDateCell.js +98 -4
  513. package/node/components/cell/GridEditInputCell.js +30 -6
  514. package/node/components/cell/GridEditSingleSelectCell.js +50 -18
  515. package/node/components/cell/index.js +26 -0
  516. package/node/components/columnHeaders/GridColumnHeaderItem.js +19 -24
  517. package/node/components/columnHeaders/GridColumnHeaders.js +1 -1
  518. package/node/components/columnSelection/GridCellCheckboxRenderer.js +22 -7
  519. package/node/components/columnSelection/GridHeaderCheckbox.js +4 -6
  520. package/node/components/containers/GridFooterContainer.js +10 -1
  521. package/node/components/containers/GridRootStyles.js +36 -1
  522. package/node/components/containers/GridToolbarContainer.js +11 -1
  523. package/node/components/menu/GridMenu.js +1 -0
  524. package/node/components/panel/GridPanel.js +1 -0
  525. package/node/components/panel/GridPanelContent.js +11 -1
  526. package/node/components/panel/GridPanelFooter.js +11 -1
  527. package/node/components/panel/GridPanelHeader.js +11 -1
  528. package/node/components/panel/filterPanel/GridFilterForm.js +15 -10
  529. package/node/components/panel/filterPanel/GridFilterInputBoolean.js +14 -8
  530. package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +23 -15
  531. package/node/components/panel/filterPanel/GridFilterInputValue.js +23 -15
  532. package/node/components/toolbar/GridToolbar.js +32 -7
  533. package/node/components/toolbar/GridToolbarDensitySelector.js +1 -1
  534. package/node/components/toolbar/GridToolbarExport.js +14 -19
  535. package/node/components/toolbar/GridToolbarQuickFilter.js +111 -0
  536. package/node/components/toolbar/index.js +42 -11
  537. package/node/components/virtualization/GridVirtualScroller.js +2 -0
  538. package/node/components/virtualization/GridVirtualScrollerContent.js +1 -3
  539. package/node/constants/defaultGridSlotsComponents.js +2 -1
  540. package/node/constants/gridClasses.js +1 -1
  541. package/node/constants/gridDetailPanelToggleField.js +9 -0
  542. package/node/constants/localeTextConstants.js +8 -1
  543. package/node/hooks/core/pipeProcessing/index.js +13 -0
  544. package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +51 -20
  545. package/node/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +42 -0
  546. package/node/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -3
  547. package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -8
  548. package/node/hooks/core/useGridApiInitialization.js +3 -4
  549. package/node/hooks/core/useGridErrorHandler.js +1 -3
  550. package/node/hooks/core/useGridStateInitialization.js +1 -3
  551. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +85 -17
  552. package/node/hooks/features/columnMenu/useGridColumnMenu.js +3 -4
  553. package/node/hooks/features/columns/gridColumnsUtils.js +65 -9
  554. package/node/hooks/features/columns/useGridColumnSpanning.js +128 -0
  555. package/node/hooks/features/columns/useGridColumns.js +29 -25
  556. package/node/hooks/features/dimensions/useGridDimensions.js +10 -12
  557. package/node/hooks/features/editRows/useGridCellEditing.new.js +151 -42
  558. package/node/hooks/features/editRows/useGridCellEditing.old.js +20 -22
  559. package/node/hooks/features/editRows/useGridEditing.new.js +6 -2
  560. package/node/hooks/features/editRows/useGridEditing.old.js +4 -6
  561. package/node/hooks/features/editRows/useGridRowEditing.new.js +143 -57
  562. package/node/hooks/features/editRows/useGridRowEditing.old.js +21 -23
  563. package/node/hooks/features/events/useGridEvents.js +17 -19
  564. package/node/hooks/features/export/serializers/csvSerializer.js +5 -5
  565. package/node/hooks/features/export/useGridCsvExport.js +26 -17
  566. package/node/hooks/features/export/useGridPrintExport.js +25 -0
  567. package/node/hooks/features/export/utils.js +19 -2
  568. package/node/hooks/features/filter/gridFilterState.js +3 -1
  569. package/node/hooks/features/filter/gridFilterUtils.js +92 -3
  570. package/node/hooks/features/filter/useGridFilter.js +33 -16
  571. package/node/hooks/features/focus/useGridFocus.js +48 -43
  572. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +44 -13
  573. package/node/hooks/features/pagination/useGridPage.js +3 -5
  574. package/node/hooks/features/pagination/useGridPageSize.js +2 -4
  575. package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -8
  576. package/node/hooks/features/rows/gridRowsSelector.js +5 -1
  577. package/node/hooks/features/rows/gridRowsUtils.js +29 -1
  578. package/node/hooks/features/rows/useGridRows.js +122 -61
  579. package/node/hooks/features/rows/useGridRowsMeta.js +6 -14
  580. package/node/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  581. package/node/hooks/features/scroll/useGridScroll.js +32 -3
  582. package/node/hooks/features/selection/useGridSelection.js +16 -12
  583. package/node/hooks/features/sorting/useGridSorting.js +17 -19
  584. package/node/hooks/features/virtualization/useGridVirtualScroller.js +73 -33
  585. package/node/hooks/utils/useGridApiEventHandler.js +22 -10
  586. package/node/hooks/utils/useGridNativeEventListener.js +1 -3
  587. package/node/hooks/utils/useGridSelector.js +1 -1
  588. package/node/index.js +1 -1
  589. package/node/internals/index.js +47 -3
  590. package/node/locales/arSD.js +8 -1
  591. package/node/locales/bgBG.js +8 -1
  592. package/node/locales/csCZ.js +7 -0
  593. package/node/locales/daDK.js +8 -1
  594. package/node/locales/deDE.js +10 -3
  595. package/node/locales/elGR.js +7 -0
  596. package/node/locales/esES.js +7 -0
  597. package/node/locales/faIR.js +8 -1
  598. package/node/locales/fiFI.js +7 -0
  599. package/node/locales/frFR.js +7 -0
  600. package/node/locales/heIL.js +8 -1
  601. package/node/locales/huHU.js +125 -0
  602. package/node/locales/index.js +13 -0
  603. package/node/locales/itIT.js +7 -0
  604. package/node/locales/jaJP.js +7 -0
  605. package/node/locales/koKR.js +7 -0
  606. package/node/locales/nlNL.js +7 -0
  607. package/node/locales/plPL.js +8 -1
  608. package/node/locales/ptBR.js +8 -1
  609. package/node/locales/ruRU.js +7 -0
  610. package/node/locales/skSK.js +7 -0
  611. package/node/locales/trTR.js +8 -1
  612. package/node/locales/ukUA.js +7 -0
  613. package/node/locales/viVN.js +7 -0
  614. package/node/locales/zhCN.js +7 -0
  615. package/node/models/api/gridColumnSpanning.js +5 -0
  616. package/node/models/events/gridEvents.js +10 -3
  617. package/node/models/gridColumnSpanning.js +5 -0
  618. package/node/models/index.js +0 -13
  619. package/node/utils/createSelector.js +25 -4
  620. package/node/utils/exportAs.js +1 -1
  621. package/package.json +4 -4
  622. package/utils/createSelector.d.ts +2 -1
  623. package/utils/createSelector.js +20 -2
  624. package/utils/domUtils.d.ts +2 -2
  625. package/utils/exportAs.d.ts +2 -2
  626. package/utils/exportAs.js +1 -1
@@ -1,6 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
- import { GridEvents } from '../../../models/events';
4
3
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
5
4
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
6
5
  import { useGridLogger } from '../../utils/useGridLogger';
@@ -13,6 +12,7 @@ import { GRID_CHECKBOX_SELECTION_COL_DEF, GRID_ACTIONS_COLUMN_TYPE } from '../..
13
12
  import { GridCellModes } from '../../../models/gridEditRowModel';
14
13
  import { isKeyboardEvent, isNavigationKey } from '../../../utils/keyboardUtils';
15
14
  import { getVisibleRows, useGridVisibleRows } from '../../utils/useGridVisibleRows';
15
+ import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../../../constants/gridDetailPanelToggleField';
16
16
 
17
17
  const getSelectionModelPropValue = (selectionModelProp, prevSelectionModel) => {
18
18
  if (selectionModelProp == null) {
@@ -55,7 +55,7 @@ export const useGridSelection = (apiRef, props) => {
55
55
  propModel: propSelectionModel,
56
56
  propOnChange: props.onSelectionModelChange,
57
57
  stateSelector: gridSelectionStateSelector,
58
- changeEvent: GridEvents.selectionChange
58
+ changeEvent: 'selectionChange'
59
59
  });
60
60
  const {
61
61
  checkboxSelection,
@@ -197,6 +197,10 @@ export const useGridSelection = (apiRef, props) => {
197
197
  */
198
198
 
199
199
  const removeOutdatedSelection = React.useCallback(() => {
200
+ if (props.keepNonExistentRowsSelected) {
201
+ return;
202
+ }
203
+
200
204
  const currentSelection = gridSelectionStateSelector(apiRef.current.state);
201
205
  const rowsLookup = gridRowsLookupSelector(apiRef); // We clone the existing object to avoid mutating the same object returned by the selector to others part of the project
202
206
 
@@ -213,12 +217,12 @@ export const useGridSelection = (apiRef, props) => {
213
217
  if (hasChanged) {
214
218
  apiRef.current.setSelectionModel(Object.values(selectionLookup));
215
219
  }
216
- }, [apiRef]);
220
+ }, [apiRef, props.keepNonExistentRowsSelected]);
217
221
  const handleSingleRowSelection = React.useCallback((id, event) => {
218
222
  const hasCtrlKey = event.metaKey || event.ctrlKey; // multiple selection is only allowed if:
219
223
  // - it is a checkboxSelection
220
224
  // - it is a keyboard selection
221
- // - CTRL is pressed
225
+ // - Ctrl is pressed
222
226
 
223
227
  const isMultipleSelectionDisabled = !checkboxSelection && !hasCtrlKey && !isKeyboardEvent(event);
224
228
  const resetSelection = !canHaveMultipleSelection || isMultipleSelectionDisabled;
@@ -240,7 +244,7 @@ export const useGridSelection = (apiRef, props) => {
240
244
  return;
241
245
  }
242
246
 
243
- if (params.field === '__detail_panel_toggle__') {
247
+ if (params.field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {
244
248
  // click to open the detail panel should not select the row
245
249
  return;
246
250
  }
@@ -348,12 +352,12 @@ export const useGridSelection = (apiRef, props) => {
348
352
  selectRows(apiRef.current.getAllRowIds(), true);
349
353
  }
350
354
  }, [apiRef, handleSingleRowSelection, selectRows, visibleRows.rows, canHaveMultipleSelection]);
351
- useGridApiEventHandler(apiRef, GridEvents.visibleRowsSet, removeOutdatedSelection);
352
- useGridApiEventHandler(apiRef, GridEvents.cellClick, handleCellClick);
353
- useGridApiEventHandler(apiRef, GridEvents.rowSelectionCheckboxChange, handleRowSelectionCheckboxChange);
354
- useGridApiEventHandler(apiRef, GridEvents.headerSelectionCheckboxChange, handleHeaderSelectionCheckboxChange);
355
- useGridApiEventHandler(apiRef, GridEvents.cellMouseDown, preventSelectionOnShift);
356
- useGridApiEventHandler(apiRef, GridEvents.cellKeyDown, handleCellKeyDown);
355
+ useGridApiEventHandler(apiRef, 'sortedRowsSet', removeOutdatedSelection);
356
+ useGridApiEventHandler(apiRef, 'cellClick', handleCellClick);
357
+ useGridApiEventHandler(apiRef, 'rowSelectionCheckboxChange', handleRowSelectionCheckboxChange);
358
+ useGridApiEventHandler(apiRef, 'headerSelectionCheckboxChange', handleHeaderSelectionCheckboxChange);
359
+ useGridApiEventHandler(apiRef, 'cellMouseDown', preventSelectionOnShift);
360
+ useGridApiEventHandler(apiRef, 'cellKeyDown', handleCellKeyDown);
357
361
  /**
358
362
  * EFFECTS
359
363
  */
@@ -1,6 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
- import { GridEvents } from '../../../models/events';
4
3
  import { GridFeatureModeConstant } from '../../../models/gridFeatureMode';
5
4
  import { isEnterKey } from '../../../utils/keyboardUtils';
6
5
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
@@ -36,7 +35,7 @@ export const useGridSorting = (apiRef, props) => {
36
35
  propModel: props.sortModel,
37
36
  propOnChange: props.onSortModelChange,
38
37
  stateSelector: gridSortModelSelector,
39
- changeEvent: GridEvents.sortModelChange
38
+ changeEvent: 'sortModelChange'
40
39
  });
41
40
  const upsertSortModel = React.useCallback((field, sortItem) => {
42
41
  const sortModel = gridSortModelSelector(apiRef);
@@ -80,17 +79,16 @@ export const useGridSorting = (apiRef, props) => {
80
79
  */
81
80
 
82
81
  const applySorting = React.useCallback(() => {
83
- if (props.sortingMode === GridFeatureModeConstant.server) {
84
- logger.debug('Skipping sorting rows as sortingMode = server');
85
- apiRef.current.setState(state => _extends({}, state, {
86
- sorting: _extends({}, state.sorting, {
87
- sortedRows: gridRowIdsSelector(state, apiRef.current.instanceId)
88
- })
89
- }));
90
- return;
91
- }
92
-
93
82
  apiRef.current.setState(state => {
83
+ if (props.sortingMode === GridFeatureModeConstant.server) {
84
+ logger.debug('Skipping sorting rows as sortingMode = server');
85
+ return _extends({}, state, {
86
+ sorting: _extends({}, state.sorting, {
87
+ sortedRows: gridRowIdsSelector(state, apiRef.current.instanceId)
88
+ })
89
+ });
90
+ }
91
+
94
92
  const sortModel = gridSortModelSelector(state, apiRef.current.instanceId);
95
93
  const sortRowList = buildAggregatedSortingApplier(sortModel, apiRef);
96
94
  const sortedRows = apiRef.current.unstable_applyStrategyProcessor('sorting', {
@@ -102,6 +100,7 @@ export const useGridSorting = (apiRef, props) => {
102
100
  })
103
101
  });
104
102
  });
103
+ apiRef.current.publishEvent('sortedRowsSet');
105
104
  apiRef.current.forceUpdate();
106
105
  }, [apiRef, logger, props.sortingMode]);
107
106
  const setSortModel = React.useCallback(model => {
@@ -204,7 +203,7 @@ export const useGridSorting = (apiRef, props) => {
204
203
  const handleColumnHeaderKeyDown = React.useCallback(({
205
204
  colDef
206
205
  }, event) => {
207
- // CTRL + Enter opens the column menu
206
+ // Ctrl + Enter opens the column menu
208
207
  if (isEnterKey(event.key) && !event.ctrlKey && !event.metaKey) {
209
208
  sortColumn(colDef, undefined, event.shiftKey);
210
209
  }
@@ -227,11 +226,11 @@ export const useGridSorting = (apiRef, props) => {
227
226
  apiRef.current.applySorting();
228
227
  }
229
228
  }, [apiRef]);
230
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderClick, handleColumnHeaderClick);
231
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderKeyDown, handleColumnHeaderKeyDown);
232
- useGridApiEventHandler(apiRef, GridEvents.rowsSet, apiRef.current.applySorting);
233
- useGridApiEventHandler(apiRef, GridEvents.columnsChange, handleColumnsChange);
234
- useGridApiEventHandler(apiRef, GridEvents.activeStrategyProcessorChange, handleStrategyProcessorChange);
229
+ useGridApiEventHandler(apiRef, 'columnHeaderClick', handleColumnHeaderClick);
230
+ useGridApiEventHandler(apiRef, 'columnHeaderKeyDown', handleColumnHeaderKeyDown);
231
+ useGridApiEventHandler(apiRef, 'rowsSet', apiRef.current.applySorting);
232
+ useGridApiEventHandler(apiRef, 'columnsChange', handleColumnsChange);
233
+ useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
235
234
  /**
236
235
  * 1ST RENDER
237
236
  */
@@ -2,6 +2,13 @@ import * as React from 'react';
2
2
  import { GridRenderContext } from '../../../models';
3
3
  import { GridRowId, GridRowModel } from '../../../models/gridRows';
4
4
  export declare function getIndexFromScroll(offset: number, positions: number[], sliceStart?: number, sliceEnd?: number): number;
5
+ export declare const getRenderableIndexes: ({ firstIndex, lastIndex, buffer, minFirstIndex, maxLastIndex, }: {
6
+ firstIndex: number;
7
+ lastIndex: number;
8
+ buffer: number;
9
+ minFirstIndex: number;
10
+ maxLastIndex: number;
11
+ }) => number[];
5
12
  interface UseGridVirtualScrollerProps {
6
13
  ref: React.Ref<HTMLDivElement>;
7
14
  disableVirtualization?: boolean;
@@ -27,6 +34,8 @@ export declare const useGridVirtualScroller: (props: UseGridVirtualScrollerProps
27
34
  }) => {
28
35
  ref: React.Ref<HTMLDivElement>;
29
36
  onScroll: (event: React.UIEvent) => void;
37
+ onWheel: (event: React.WheelEvent) => void;
38
+ onTouchMove: (event: React.TouchEvent) => void;
30
39
  style: {
31
40
  accentColor?: import("csstype").Property.AccentColor | undefined;
32
41
  alignContent?: import("csstype").Property.AlignContent | undefined;
@@ -2,6 +2,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  const _excluded = ["style"];
4
4
  import * as React from 'react';
5
+ import * as ReactDOM from 'react-dom';
5
6
  import { useForkRef } from '@mui/material/utils';
6
7
  import { useGridApiContext } from '../../utils/useGridApiContext';
7
8
  import { useGridRootProps } from '../../utils/useGridRootProps';
@@ -11,13 +12,13 @@ import { gridDensityRowHeightSelector } from '../density/densitySelector';
11
12
  import { gridFocusCellSelector, gridTabIndexCellSelector } from '../focus/gridFocusStateSelector';
12
13
  import { gridEditRowsStateSelector } from '../editRows/gridEditRowsSelector';
13
14
  import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
14
- import { GridEvents } from '../../../models/events';
15
15
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
16
16
  import { clamp } from '../../../utils/utils';
17
17
  import { selectedIdsLookupSelector } from '../selection/gridSelectionSelector';
18
18
  import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
19
+ import { getFirstNonSpannedColumnToRender } from '../columns/gridColumnsUtils'; // Uses binary search to avoid looping through all possible positions
20
+
19
21
  import { jsx as _jsx } from "react/jsx-runtime";
20
- // Uses binary search to avoid looping through all possible positions
21
22
  export function getIndexFromScroll(offset, positions, sliceStart = 0, sliceEnd = positions.length) {
22
23
  if (positions.length <= 0) {
23
24
  return -1;
@@ -31,9 +32,16 @@ export function getIndexFromScroll(offset, positions, sliceStart = 0, sliceEnd =
31
32
  const itemOffset = positions[pivot];
32
33
  return offset <= itemOffset ? getIndexFromScroll(offset, positions, sliceStart, pivot) : getIndexFromScroll(offset, positions, pivot + 1, sliceEnd);
33
34
  }
35
+ export const getRenderableIndexes = ({
36
+ firstIndex,
37
+ lastIndex,
38
+ buffer,
39
+ minFirstIndex,
40
+ maxLastIndex
41
+ }) => {
42
+ return [clamp(firstIndex - buffer, minFirstIndex, maxLastIndex), clamp(lastIndex + buffer, minFirstIndex, maxLastIndex)];
43
+ };
34
44
  export const useGridVirtualScroller = props => {
35
- var _currentPage$range2;
36
-
37
45
  const apiRef = useGridApiContext();
38
46
  const rootProps = useGridRootProps();
39
47
  const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
@@ -107,35 +115,29 @@ export const useGridVirtualScroller = props => {
107
115
  setContainerWidth(rootRef.current.clientWidth);
108
116
  }
109
117
  }, []);
110
- useGridApiEventHandler(apiRef, GridEvents.resize, handleResize);
111
-
112
- const getRenderableIndexes = ({
113
- firstIndex,
114
- lastIndex,
115
- buffer,
116
- minFirstIndex,
117
- maxLastIndex
118
- }) => {
119
- return [clamp(firstIndex - buffer, minFirstIndex, maxLastIndex), clamp(lastIndex + buffer, minFirstIndex, maxLastIndex)];
120
- };
121
-
118
+ useGridApiEventHandler(apiRef, 'resize', handleResize);
122
119
  const updateRenderZonePosition = React.useCallback(nextRenderContext => {
123
- var _currentPage$range;
124
-
125
- const [firstRowToRender] = getRenderableIndexes({
120
+ const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
126
121
  firstIndex: nextRenderContext.firstRowIndex,
127
122
  lastIndex: nextRenderContext.lastRowIndex,
128
123
  minFirstIndex: 0,
129
- maxLastIndex: ((_currentPage$range = currentPage.range) == null ? void 0 : _currentPage$range.lastRowIndex) || 0,
124
+ maxLastIndex: currentPage.rows.length,
130
125
  buffer: rootProps.rowBuffer
131
126
  });
132
- const [firstColumnToRender] = getRenderableIndexes({
127
+ const [initialFirstColumnToRender] = getRenderableIndexes({
133
128
  firstIndex: nextRenderContext.firstColumnIndex,
134
129
  lastIndex: nextRenderContext.lastColumnIndex,
135
130
  minFirstIndex: renderZoneMinColumnIndex,
136
131
  maxLastIndex: renderZoneMaxColumnIndex,
137
132
  buffer: rootProps.columnBuffer
138
133
  });
134
+ const firstColumnToRender = getFirstNonSpannedColumnToRender({
135
+ firstColumnToRender: initialFirstColumnToRender,
136
+ apiRef,
137
+ firstRowToRender,
138
+ lastRowToRender,
139
+ visibleRows: currentPage.rows
140
+ });
139
141
  const top = gridRowsMetaSelector(apiRef.current.state).positions[firstRowToRender];
140
142
  const left = gridColumnPositionsSelector(apiRef)[firstColumnToRender]; // Call directly the selector because it might be outdated when this method is called
141
143
 
@@ -147,19 +149,22 @@ export const useGridVirtualScroller = props => {
147
149
  left
148
150
  });
149
151
  }
150
- }, [apiRef, (_currentPage$range2 = currentPage.range) == null ? void 0 : _currentPage$range2.lastRowIndex, onRenderZonePositioning, renderZoneMaxColumnIndex, renderZoneMinColumnIndex, rootProps.columnBuffer, rootProps.rowBuffer]);
152
+ }, [apiRef, currentPage.rows, onRenderZonePositioning, renderZoneMinColumnIndex, renderZoneMaxColumnIndex, rootProps.columnBuffer, rootProps.rowBuffer]);
153
+ React.useLayoutEffect(() => {
154
+ if (renderContext) {
155
+ updateRenderZonePosition(renderContext);
156
+ }
157
+ }, [renderContext, updateRenderZonePosition]);
151
158
  const updateRenderContext = React.useCallback(nextRenderContext => {
152
159
  setRenderContext(nextRenderContext);
153
- updateRenderZonePosition(nextRenderContext);
154
160
  prevRenderContext.current = nextRenderContext;
155
- }, [setRenderContext, prevRenderContext, updateRenderZonePosition]);
161
+ }, [setRenderContext, prevRenderContext]);
156
162
  React.useEffect(() => {
157
163
  if (containerWidth == null) {
158
164
  return;
159
165
  }
160
166
 
161
167
  const initialRenderContext = computeRenderContext();
162
- prevRenderContext.current = initialRenderContext;
163
168
  updateRenderContext(initialRenderContext);
164
169
  const {
165
170
  top,
@@ -170,7 +175,7 @@ export const useGridVirtualScroller = props => {
170
175
  left,
171
176
  renderContext: initialRenderContext
172
177
  };
173
- apiRef.current.publishEvent(GridEvents.rowsScroll, params);
178
+ apiRef.current.publishEvent('rowsScroll', params);
174
179
  }, [apiRef, computeRenderContext, containerWidth, updateRenderContext]);
175
180
 
176
181
  const handleScroll = event => {
@@ -193,18 +198,29 @@ export const useGridVirtualScroller = props => {
193
198
  const bottomColumnsScrolledSincePreviousRender = Math.abs(nextRenderContext.lastColumnIndex - prevRenderContext.current.lastColumnIndex);
194
199
  const shouldSetState = topRowsScrolledSincePreviousRender >= rootProps.rowThreshold || bottomRowsScrolledSincePreviousRender >= rootProps.rowThreshold || topColumnsScrolledSincePreviousRender >= rootProps.columnThreshold || bottomColumnsScrolledSincePreviousRender >= rootProps.columnThreshold || prevTotalWidth.current !== columnsTotalWidth; // TODO v6: rename event to a wider name, it's not only fired for row scrolling
195
200
 
196
- apiRef.current.publishEvent(GridEvents.rowsScroll, {
201
+ apiRef.current.publishEvent('rowsScroll', {
197
202
  top: scrollTop,
198
203
  left: scrollLeft,
199
204
  renderContext: shouldSetState ? nextRenderContext : prevRenderContext.current
200
- });
205
+ }, event);
201
206
 
202
207
  if (shouldSetState) {
203
- updateRenderContext(nextRenderContext);
208
+ // Prevents batching render context changes
209
+ ReactDOM.flushSync(() => {
210
+ updateRenderContext(nextRenderContext);
211
+ });
204
212
  prevTotalWidth.current = columnsTotalWidth;
205
213
  }
206
214
  };
207
215
 
216
+ const handleWheel = event => {
217
+ apiRef.current.publishEvent('virtualScrollerWheel', {}, event);
218
+ };
219
+
220
+ const handleTouchMove = event => {
221
+ apiRef.current.publishEvent('virtualScrollerTouchMove', {}, event);
222
+ };
223
+
208
224
  const getRows = (params = {
209
225
  renderContext
210
226
  }) => {
@@ -228,14 +244,32 @@ export const useGridVirtualScroller = props => {
228
244
  maxLastIndex: currentPage.rows.length,
229
245
  buffer: rowBuffer
230
246
  });
231
- const [firstColumnToRender, lastColumnToRender] = getRenderableIndexes({
247
+ const renderedRows = [];
248
+
249
+ for (let i = firstRowToRender; i < lastRowToRender; i += 1) {
250
+ const row = currentPage.rows[i];
251
+ renderedRows.push(row);
252
+ apiRef.current.unstable_calculateColSpan({
253
+ rowId: row.id,
254
+ minFirstColumn,
255
+ maxLastColumn
256
+ });
257
+ }
258
+
259
+ const [initialFirstColumnToRender, lastColumnToRender] = getRenderableIndexes({
232
260
  firstIndex: nextRenderContext.firstColumnIndex,
233
261
  lastIndex: nextRenderContext.lastColumnIndex,
234
262
  minFirstIndex: minFirstColumn,
235
263
  maxLastIndex: maxLastColumn,
236
264
  buffer: columnBuffer
237
265
  });
238
- const renderedRows = currentPage.rows.slice(firstRowToRender, lastRowToRender);
266
+ const firstColumnToRender = getFirstNonSpannedColumnToRender({
267
+ firstColumnToRender: initialFirstColumnToRender,
268
+ apiRef,
269
+ firstRowToRender,
270
+ lastRowToRender,
271
+ visibleRows: currentPage.rows
272
+ });
239
273
  const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
240
274
  const rows = [];
241
275
 
@@ -307,7 +341,7 @@ export const useGridVirtualScroller = props => {
307
341
  return size;
308
342
  }, [rootRef, columnsTotalWidth, rowsMeta.currentPageTotalHeight, currentPage.rows.length, needsHorizontalScrollbar, rootProps.autoHeight, rowHeight]);
309
343
  React.useEffect(() => {
310
- apiRef.current.publishEvent(GridEvents.virtualScrollerContentSizeChange);
344
+ apiRef.current.publishEvent('virtualScrollerContentSizeChange');
311
345
  }, [apiRef, contentSize]);
312
346
 
313
347
  if (rootProps.autoHeight && currentPage.rows.length === 0) {
@@ -337,6 +371,8 @@ export const useGridVirtualScroller = props => {
337
371
  return _extends({
338
372
  ref: handleRef,
339
373
  onScroll: handleScroll,
374
+ onWheel: handleWheel,
375
+ onTouchMove: handleTouchMove,
340
376
  style: _extends({}, style, rootStyle)
341
377
  }, other);
342
378
  },
@@ -11,7 +11,10 @@ declare enum GridSignature {
11
11
  DataGrid = "DataGrid",
12
12
  DataGridPro = "DataGridPro"
13
13
  }
14
- export declare function createUseGridApiEventHandler(registry: CleanupTracking): <Api extends GridApiCommon, E extends keyof import("../../models").GridEventLookup>(apiRef: React.MutableRefObject<Api>, eventName: E, handler?: GridEventListener<E> | undefined, options?: EventListenerOptions | undefined) => void;
14
+ interface RegistryContainer {
15
+ registry: CleanupTracking | null;
16
+ }
17
+ export declare function createUseGridApiEventHandler(registryContainer: RegistryContainer): <Api extends GridApiCommon, E extends keyof import("../../models").GridEventLookup>(apiRef: React.MutableRefObject<Api>, eventName: E, handler?: GridEventListener<E> | undefined, options?: EventListenerOptions | undefined) => void;
15
18
  export declare const unstable_resetCleanupTracking: () => void;
16
19
  export declare const useGridApiEventHandler: <Api extends GridApiCommon, E extends keyof import("../../models").GridEventLookup>(apiRef: React.MutableRefObject<Api>, eventName: E, handler?: GridEventListener<E> | undefined, options?: EventListenerOptions | undefined) => void;
17
20
  export declare function useGridApiOptionHandler<Api extends GridApiCommon, E extends GridEventsStr>(apiRef: React.MutableRefObject<Api>, eventName: E, handler?: GridEventListener<E>): void;
@@ -6,20 +6,25 @@ import { FinalizationRegistryBasedCleanupTracking } from '../../utils/cleanupTra
6
6
  * Signal to the underlying logic what version of the public component API
7
7
  * of the data grid is exposed.
8
8
  */
9
- var GridSignature; // We use class to make it easier to detect in heap snapshots by name
9
+ var GridSignature;
10
10
 
11
11
  (function (GridSignature) {
12
12
  GridSignature["DataGrid"] = "DataGrid";
13
13
  GridSignature["DataGridPro"] = "DataGridPro";
14
14
  })(GridSignature || (GridSignature = {}));
15
15
 
16
+ // We use class to make it easier to detect in heap snapshots by name
16
17
  class ObjectToBeRetainedByReact {} // Based on https://github.com/Bnaya/use-dispose-uncommitted/blob/main/src/finalization-registry-based-impl.ts
17
18
  // Check https://github.com/facebook/react/issues/15317 to get more information
18
19
 
19
20
 
20
- export function createUseGridApiEventHandler(registry) {
21
+ export function createUseGridApiEventHandler(registryContainer) {
21
22
  let cleanupTokensCounter = 0;
22
23
  return function useGridApiEventHandler(apiRef, eventName, handler, options) {
24
+ if (registryContainer.registry === null) {
25
+ registryContainer.registry = typeof FinalizationRegistry !== 'undefined' ? new FinalizationRegistryBasedCleanupTracking() : new TimerBasedCleanupTracking();
26
+ }
27
+
23
28
  const [objectRetainedByReact] = React.useState(new ObjectToBeRetainedByReact());
24
29
  const subscription = React.useRef(null);
25
30
  const handlerRef = React.useRef();
@@ -40,7 +45,7 @@ export function createUseGridApiEventHandler(registry) {
40
45
  cleanupTokenRef.current = {
41
46
  cleanupToken: cleanupTokensCounter
42
47
  };
43
- registry.register(objectRetainedByReact, // The callback below will be called once this reference stops being retained
48
+ registryContainer.registry.register(objectRetainedByReact, // The callback below will be called once this reference stops being retained
44
49
  () => {
45
50
  var _subscription$current;
46
51
 
@@ -53,7 +58,7 @@ export function createUseGridApiEventHandler(registry) {
53
58
  subscription.current = null;
54
59
 
55
60
  if (cleanupTokenRef.current) {
56
- registry.unregister(cleanupTokenRef.current);
61
+ registryContainer.registry.unregister(cleanupTokenRef.current);
57
62
  cleanupTokenRef.current = null;
58
63
  }
59
64
  }
@@ -71,10 +76,10 @@ export function createUseGridApiEventHandler(registry) {
71
76
  subscription.current = apiRef.current.subscribeEvent(eventName, enhancedHandler, options);
72
77
  }
73
78
 
74
- if (cleanupTokenRef.current && registry) {
79
+ if (cleanupTokenRef.current && registryContainer.registry) {
75
80
  // If the effect was called, it means that this render was committed
76
81
  // so we can trust the cleanup function to remove the listener.
77
- registry.unregister(cleanupTokenRef.current);
82
+ registryContainer.registry.unregister(cleanupTokenRef.current);
78
83
  cleanupTokenRef.current = null;
79
84
  }
80
85
 
@@ -87,10 +92,18 @@ export function createUseGridApiEventHandler(registry) {
87
92
  }, [apiRef, eventName, options]);
88
93
  };
89
94
  }
90
- const registry = typeof FinalizationRegistry !== 'undefined' ? new FinalizationRegistryBasedCleanupTracking() : new TimerBasedCleanupTracking(); // eslint-disable-next-line @typescript-eslint/naming-convention
95
+ const registryContainer = {
96
+ registry: null
97
+ }; // TODO: move to @mui/x-data-grid/internals
98
+ // eslint-disable-next-line @typescript-eslint/naming-convention
91
99
 
92
- export const unstable_resetCleanupTracking = () => registry.reset();
93
- export const useGridApiEventHandler = createUseGridApiEventHandler(registry);
100
+ export const unstable_resetCleanupTracking = () => {
101
+ var _registryContainer$re;
102
+
103
+ (_registryContainer$re = registryContainer.registry) == null ? void 0 : _registryContainer$re.reset();
104
+ registryContainer.registry = null;
105
+ };
106
+ export const useGridApiEventHandler = createUseGridApiEventHandler(registryContainer);
94
107
  const optionsSubscriberOptions = {
95
108
  isFirst: true
96
109
  };
@@ -1,5 +1,4 @@
1
1
  import * as React from 'react';
2
- import { GridEvents } from '../../models/events';
3
2
  import { isFunction } from '../../utils/utils';
4
3
  import { useGridLogger } from './useGridLogger';
5
4
  export const useGridNativeEventListener = (apiRef, ref, eventName, handler, options) => {
@@ -32,7 +31,7 @@ export const useGridNativeEventListener = (apiRef, ref, eventName, handler, opti
32
31
  boundElem.removeEventListener(eventName, wrapHandler, options);
33
32
  };
34
33
 
35
- apiRef.current.subscribeEvent(GridEvents.unmount, unsubscribe);
34
+ apiRef.current.subscribeEvent('unmount', unsubscribe);
36
35
  }
37
36
  }, [ref, wrapHandler, eventName, added, logger, options, apiRef]);
38
37
  };
@@ -1,7 +1,7 @@
1
1
  import { buildWarning } from '../../utils/warning';
2
2
 
3
3
  function isOutputSelector(selector) {
4
- return selector.cache;
4
+ return selector.acceptsApiRef;
5
5
  }
6
6
 
7
7
  const stateNotInitializedWarning = buildWarning(['MUI: `useGridSelector` has been called before the initialization of the state.', 'This hook can only be used inside the context of the grid.']);
package/index.d.ts CHANGED
@@ -14,6 +14,8 @@ export * from './context';
14
14
  export * from './colDef';
15
15
  export * from './utils';
16
16
  export type { DataGridProps, GridExperimentalFeatures } from './models/props/DataGridProps';
17
+ export type { GridToolbarExportProps } from './components/toolbar/GridToolbarExport';
18
+ export type { GridExportFormat, GridExportExtension } from './models/gridExport';
17
19
  /**
18
20
  * The full grid API.
19
21
  */
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v5.8.0
1
+ /** @license MUI v5.11.0
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -12,6 +12,7 @@ export { useGridClipboard } from '../hooks/features/clipboard/useGridClipboard';
12
12
  export { useGridColumnHeaders } from '../hooks/features/columnHeaders/useGridColumnHeaders';
13
13
  export { useGridColumnMenu, columnMenuStateInitializer, } from '../hooks/features/columnMenu/useGridColumnMenu';
14
14
  export { useGridColumns, columnsStateInitializer } from '../hooks/features/columns/useGridColumns';
15
+ export { useGridColumnSpanning } from '../hooks/features/columns/useGridColumnSpanning';
15
16
  export type { GridColumnRawLookup, GridColumnsRawState, GridHydrateColumnsValue, } from '../hooks/features/columns/gridColumnsInterfaces';
16
17
  export { useGridDensity, densityStateInitializer } from '../hooks/features/density/useGridDensity';
17
18
  export { useGridCsvExport } from '../hooks/features/export/useGridCsvExport';
@@ -43,8 +44,11 @@ export { useGridVisibleRows } from '../hooks/utils/useGridVisibleRows';
43
44
  export { useGridInitializeState } from '../hooks/utils/useGridInitializeState';
44
45
  export type { GridStateInitializer } from '../hooks/utils/useGridInitializeState';
45
46
  export type { GridExperimentalFeatures, DataGridPropsWithoutDefaultValue, DataGridPropsWithDefaultValues, DataGridPropsWithComplexDefaultValueAfterProcessing, DataGridPropsWithComplexDefaultValueBeforeProcessing, } from '../models/props/DataGridProps';
46
- export { createSelector } from '../utils/createSelector';
47
+ export { getColumnsToExport, defaultGetRowsToExport } from '../hooks/features/export/utils';
48
+ export { createSelector, unstable_resetCreateSelectorCache } from '../utils/createSelector';
47
49
  export { findParentElementFromClassName } from '../utils/domUtils';
48
50
  export { isNavigationKey } from '../utils/keyboardUtils';
49
51
  export { clamp, isDeepEqual } from '../utils/utils';
52
+ export { buildWarning } from '../utils/warning';
53
+ export { exportAs } from '../utils/exportAs';
50
54
  export type { GridApiCommunity } from '../models/api/gridApiCommunity';
@@ -10,6 +10,7 @@ export { useGridClipboard } from '../hooks/features/clipboard/useGridClipboard';
10
10
  export { useGridColumnHeaders } from '../hooks/features/columnHeaders/useGridColumnHeaders';
11
11
  export { useGridColumnMenu, columnMenuStateInitializer } from '../hooks/features/columnMenu/useGridColumnMenu';
12
12
  export { useGridColumns, columnsStateInitializer } from '../hooks/features/columns/useGridColumns';
13
+ export { useGridColumnSpanning } from '../hooks/features/columns/useGridColumnSpanning';
13
14
  export { useGridDensity, densityStateInitializer } from '../hooks/features/density/useGridDensity';
14
15
  export { useGridCsvExport } from '../hooks/features/export/useGridCsvExport';
15
16
  export { useGridPrintExport } from '../hooks/features/export/useGridPrintExport';
@@ -34,7 +35,10 @@ export { useGridStatePersistence } from '../hooks/features/statePersistence/useG
34
35
  export { useGridVirtualScroller } from '../hooks/features/virtualization/useGridVirtualScroller';
35
36
  export { useGridVisibleRows } from '../hooks/utils/useGridVisibleRows';
36
37
  export { useGridInitializeState } from '../hooks/utils/useGridInitializeState';
37
- export { createSelector } from '../utils/createSelector';
38
+ export { getColumnsToExport, defaultGetRowsToExport } from '../hooks/features/export/utils';
39
+ export { createSelector, unstable_resetCreateSelectorCache } from '../utils/createSelector';
38
40
  export { findParentElementFromClassName } from '../utils/domUtils';
39
41
  export { isNavigationKey } from '../utils/keyboardUtils';
40
- export { clamp, isDeepEqual } from '../utils/utils';
42
+ export { clamp, isDeepEqual } from '../utils/utils';
43
+ export { buildWarning } from '../utils/warning';
44
+ export { exportAs } from '../utils/exportAs';
@@ -58,6 +58,11 @@ DataGridRaw.propTypes = {
58
58
  */
59
59
  autoPageSize: PropTypes.bool,
60
60
 
61
+ /**
62
+ * Controls the modes of the cells.
63
+ */
64
+ cellModesModel: PropTypes.object,
65
+
61
66
  /**
62
67
  * If `true`, the grid get a first column with a checkbox that allows to select rows.
63
68
  * @default false
@@ -207,7 +212,9 @@ DataGridRaw.propTypes = {
207
212
  operatorValue: PropTypes.string,
208
213
  value: PropTypes.any
209
214
  })).isRequired,
210
- linkOperator: PropTypes.oneOf(['and', 'or'])
215
+ linkOperator: PropTypes.oneOf(['and', 'or']),
216
+ quickFilterLogicOperator: PropTypes.oneOf(['and', 'or']),
217
+ quickFilterValues: PropTypes.array
211
218
  }),
212
219
 
213
220
  /**
@@ -295,6 +302,14 @@ DataGridRaw.propTypes = {
295
302
  */
296
303
  isRowSelectable: PropTypes.func,
297
304
 
305
+ /**
306
+ * If `true`, the selection model will retain selected rows that do not exist.
307
+ * Useful when using server side pagination and row selections need to be retained
308
+ * when changing pages.
309
+ * @default false
310
+ */
311
+ keepNonExistentRowsSelected: PropTypes.bool,
312
+
298
313
  /**
299
314
  * If `true`, a loading overlay is displayed.
300
315
  */
@@ -382,6 +397,13 @@ DataGridRaw.propTypes = {
382
397
  */
383
398
  onCellKeyDown: PropTypes.func,
384
399
 
400
+ /**
401
+ * Callback fired when the `cellModesModel` prop changes.
402
+ * @param {GridCellModesModel} cellModesModel Object containig which cells are in "edit" mode.
403
+ * @param {GridCallbackDetails} details Additional details for this callback.
404
+ */
405
+ onCellModesModelChange: PropTypes.func,
406
+
385
407
  /**
386
408
  * Callback fired when a click event comes from a column header element.
387
409
  * @param {GridColumnHeaderParams} params With all properties from [[GridColumnHeaderParams]].
@@ -460,7 +482,7 @@ DataGridRaw.propTypes = {
460
482
  * @param {GridEditCellPropsParams} params With all properties from [[GridEditCellPropsParams]].
461
483
  * @param {MuiEvent<React.SyntheticEvent>} event The event that caused this prop to be called.
462
484
  * @param {GridCallbackDetails} details Additional details for this callback.
463
- * @deprecated use `preProcessEditCellProps` from the [`GridColDef`](/api/data-grid/grid-col-def/)
485
+ * @deprecated use `preProcessEditCellProps` from the [`GridColDef`](/x/api/data-grid/grid-col-def/)
464
486
  */
465
487
  onEditCellPropsChange: PropTypes.func,
466
488
 
@@ -568,6 +590,13 @@ DataGridRaw.propTypes = {
568
590
  */
569
591
  onRowEditStop: PropTypes.func,
570
592
 
593
+ /**
594
+ * Callback fired when the `rowModesModel` prop changes.
595
+ * @param {GridRowModesModel} rowModesModel Object containig which rows are in "edit" mode.
596
+ * @param {GridCallbackDetails} details Additional details for this callback.
597
+ */
598
+ onRowModesModelChange: PropTypes.func,
599
+
571
600
  /**
572
601
  * Callback fired when the selection state of one or multiple rows changes.
573
602
  * @param {GridSelectionModel} selectionModel With all the row ids [[GridSelectionModel]].
@@ -653,6 +682,11 @@ DataGridRaw.propTypes = {
653
682
  */
654
683
  rowHeight: PropTypes.number,
655
684
 
685
+ /**
686
+ * Controls the modes of the rows.
687
+ */
688
+ rowModesModel: PropTypes.object,
689
+
656
690
  /**
657
691
  * Set of rows of type [[GridRowsProp]].
658
692
  */