@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,4 +1,3 @@
1
- import { GridEvents } from '../../../models/events';
2
1
  import { useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
3
2
 
4
3
  /**
@@ -6,21 +5,21 @@ import { useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
6
5
  * @requires useGridColumns (event) - can be after, async only
7
6
  */
8
7
  export function useGridEvents(apiRef, props) {
9
- useGridApiOptionHandler(apiRef, GridEvents.columnHeaderClick, props.onColumnHeaderClick);
10
- useGridApiOptionHandler(apiRef, GridEvents.columnHeaderDoubleClick, props.onColumnHeaderDoubleClick);
11
- useGridApiOptionHandler(apiRef, GridEvents.columnHeaderOver, props.onColumnHeaderOver);
12
- useGridApiOptionHandler(apiRef, GridEvents.columnHeaderOut, props.onColumnHeaderOut);
13
- useGridApiOptionHandler(apiRef, GridEvents.columnHeaderEnter, props.onColumnHeaderEnter);
14
- useGridApiOptionHandler(apiRef, GridEvents.columnHeaderLeave, props.onColumnHeaderLeave);
15
- useGridApiOptionHandler(apiRef, GridEvents.columnOrderChange, props.onColumnOrderChange);
16
- useGridApiOptionHandler(apiRef, GridEvents.cellClick, props.onCellClick);
17
- useGridApiOptionHandler(apiRef, GridEvents.cellDoubleClick, props.onCellDoubleClick);
18
- useGridApiOptionHandler(apiRef, GridEvents.cellKeyDown, props.onCellKeyDown);
19
- useGridApiOptionHandler(apiRef, GridEvents.cellFocusOut, props.onCellFocusOut);
20
- useGridApiOptionHandler(apiRef, GridEvents.preferencePanelClose, props.onPreferencePanelClose);
21
- useGridApiOptionHandler(apiRef, GridEvents.preferencePanelOpen, props.onPreferencePanelOpen);
22
- useGridApiOptionHandler(apiRef, GridEvents.rowDoubleClick, props.onRowDoubleClick);
23
- useGridApiOptionHandler(apiRef, GridEvents.rowClick, props.onRowClick);
24
- useGridApiOptionHandler(apiRef, GridEvents.componentError, props.onError);
25
- useGridApiOptionHandler(apiRef, GridEvents.stateChange, props.onStateChange);
8
+ useGridApiOptionHandler(apiRef, 'columnHeaderClick', props.onColumnHeaderClick);
9
+ useGridApiOptionHandler(apiRef, 'columnHeaderDoubleClick', props.onColumnHeaderDoubleClick);
10
+ useGridApiOptionHandler(apiRef, 'columnHeaderOver', props.onColumnHeaderOver);
11
+ useGridApiOptionHandler(apiRef, 'columnHeaderOut', props.onColumnHeaderOut);
12
+ useGridApiOptionHandler(apiRef, 'columnHeaderEnter', props.onColumnHeaderEnter);
13
+ useGridApiOptionHandler(apiRef, 'columnHeaderLeave', props.onColumnHeaderLeave);
14
+ useGridApiOptionHandler(apiRef, 'columnOrderChange', props.onColumnOrderChange);
15
+ useGridApiOptionHandler(apiRef, 'cellClick', props.onCellClick);
16
+ useGridApiOptionHandler(apiRef, 'cellDoubleClick', props.onCellDoubleClick);
17
+ useGridApiOptionHandler(apiRef, 'cellKeyDown', props.onCellKeyDown);
18
+ useGridApiOptionHandler(apiRef, 'cellFocusOut', props.onCellFocusOut);
19
+ useGridApiOptionHandler(apiRef, 'preferencePanelClose', props.onPreferencePanelClose);
20
+ useGridApiOptionHandler(apiRef, 'preferencePanelOpen', props.onPreferencePanelOpen);
21
+ useGridApiOptionHandler(apiRef, 'rowDoubleClick', props.onRowDoubleClick);
22
+ useGridApiOptionHandler(apiRef, 'rowClick', props.onRowClick);
23
+ useGridApiOptionHandler(apiRef, 'componentError', props.onError);
24
+ useGridApiOptionHandler(apiRef, 'stateChange', props.onStateChange);
26
25
  }
@@ -1,7 +1,7 @@
1
1
  import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../../colDef';
2
2
  import { buildWarning } from '../../../../utils/warning';
3
3
 
4
- var serialiseCellValue = function serialiseCellValue(value, delimiterCharacter) {
4
+ var serializeCellValue = function serializeCellValue(value, delimiterCharacter) {
5
5
  if (typeof value === 'string') {
6
6
  var formattedValue = value.replace(/"/g, '""'); // Make sure value containing delimiter or line break won't be split into multiple rows
7
7
 
@@ -19,7 +19,7 @@ var serialiseCellValue = function serialiseCellValue(value, delimiterCharacter)
19
19
 
20
20
  var objectFormattedValueWarning = buildWarning(['MUI: When the value of a field is an object or a `renderCell` is provided, the CSV export might not display the value correctly.', 'You can provide a `valueFormatter` with a string representation to be used.']);
21
21
 
22
- var serialiseRow = function serialiseRow(id, columns, getCellParams, delimiterCharacter) {
22
+ var serializeRow = function serializeRow(id, columns, getCellParams, delimiterCharacter) {
23
23
  return columns.map(function (column) {
24
24
  var cellParams = getCellParams(id, column.field);
25
25
 
@@ -29,7 +29,7 @@ var serialiseRow = function serialiseRow(id, columns, getCellParams, delimiterCh
29
29
  }
30
30
  }
31
31
 
32
- return serialiseCellValue(cellParams.formattedValue, delimiterCharacter);
32
+ return serializeCellValue(cellParams.formattedValue, delimiterCharacter);
33
33
  });
34
34
  };
35
35
 
@@ -40,7 +40,7 @@ export function buildCSV(options) {
40
40
  delimiterCharacter = options.delimiterCharacter,
41
41
  includeHeaders = options.includeHeaders;
42
42
  var CSVBody = rowIds.reduce(function (acc, id) {
43
- return "".concat(acc).concat(serialiseRow(id, columns, getCellParams, delimiterCharacter).join(delimiterCharacter), "\r\n");
43
+ return "".concat(acc).concat(serializeRow(id, columns, getCellParams, delimiterCharacter).join(delimiterCharacter), "\r\n");
44
44
  }, '').trim();
45
45
 
46
46
  if (!includeHeaders) {
@@ -50,7 +50,7 @@ export function buildCSV(options) {
50
50
  var CSVHead = "".concat(columns.filter(function (column) {
51
51
  return column.field !== GRID_CHECKBOX_SELECTION_COL_DEF.field;
52
52
  }).map(function (column) {
53
- return serialiseCellValue(column.headerName || column.field, delimiterCharacter);
53
+ return serializeCellValue(column.headerName || column.field, delimiterCharacter);
54
54
  }).join(delimiterCharacter), "\r\n");
55
55
  return "".concat(CSVHead).concat(CSVBody).trim();
56
56
  }
@@ -1,24 +1,12 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
1
2
  import * as React from 'react';
2
3
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
3
- import { gridFilteredSortedRowIdsSelector } from '../filter';
4
4
  import { useGridLogger } from '../../utils/useGridLogger';
5
5
  import { exportAs } from '../../../utils/exportAs';
6
6
  import { buildCSV } from './serializers/csvSerializer';
7
- import { getColumnsToExport } from './utils';
8
-
9
- var defaultGetRowsToExport = function defaultGetRowsToExport(_ref) {
10
- var apiRef = _ref.apiRef;
11
- var filteredSortedRowIds = gridFilteredSortedRowIdsSelector(apiRef);
12
- var selectedRows = apiRef.current.getSelectedRows();
13
-
14
- if (selectedRows.size > 0) {
15
- return filteredSortedRowIds.filter(function (id) {
16
- return selectedRows.has(id);
17
- });
18
- }
19
-
20
- return filteredSortedRowIds;
21
- };
7
+ import { getColumnsToExport, defaultGetRowsToExport } from './utils';
8
+ import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
9
+ import { GridCsvExportMenuItem } from '../../../components/toolbar/GridToolbarExport';
22
10
  /**
23
11
  * @requires useGridColumns (state)
24
12
  * @requires useGridFilter (state)
@@ -27,7 +15,7 @@ var defaultGetRowsToExport = function defaultGetRowsToExport(_ref) {
27
15
  * @requires useGridParamsApi (method)
28
16
  */
29
17
 
30
-
18
+ import { jsx as _jsx } from "react/jsx-runtime";
31
19
  export var useGridCsvExport = function useGridCsvExport(apiRef) {
32
20
  var logger = useGridLogger(apiRef, 'useGridCsvExport');
33
21
  var getDataAsCsv = React.useCallback(function () {
@@ -64,4 +52,23 @@ export var useGridCsvExport = function useGridCsvExport(apiRef) {
64
52
  exportDataAsCsv: exportDataAsCsv
65
53
  };
66
54
  useGridApiMethod(apiRef, csvExportApi, 'GridCsvExportApi');
55
+ /**
56
+ * PRE-PROCESSING
57
+ */
58
+
59
+ var addExportMenuButtons = React.useCallback(function (initialValue, options) {
60
+ var _options$csvOptions;
61
+
62
+ if ((_options$csvOptions = options.csvOptions) != null && _options$csvOptions.disableToolbarButton) {
63
+ return initialValue;
64
+ }
65
+
66
+ return [].concat(_toConsumableArray(initialValue), [{
67
+ component: /*#__PURE__*/_jsx(GridCsvExportMenuItem, {
68
+ options: options.csvOptions
69
+ }),
70
+ componentName: 'csvExport'
71
+ }]);
72
+ }, []);
73
+ useGridRegisterPipeProcessor(apiRef, 'exportMenu', addExportMenuButtons);
67
74
  };
@@ -12,6 +12,9 @@ import { gridClasses } from '../../../constants/gridClasses';
12
12
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
13
13
  import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
14
14
  import { getColumnsToExport } from './utils';
15
+ import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
16
+ import { GridPrintExportMenuItem } from '../../../components/toolbar/GridToolbarExport';
17
+ import { jsx as _jsx } from "react/jsx-runtime";
15
18
 
16
19
  /**
17
20
  * @requires useGridColumns (state)
@@ -262,4 +265,23 @@ export var useGridPrintExport = function useGridPrintExport(apiRef, props) {
262
265
  exportDataAsPrint: exportDataAsPrint
263
266
  };
264
267
  useGridApiMethod(apiRef, printExportApi, 'GridPrintExportApi');
268
+ /**
269
+ * PRE-PROCESSING
270
+ */
271
+
272
+ var addExportMenuButtons = React.useCallback(function (initialValue, options) {
273
+ var _options$printOptions;
274
+
275
+ if ((_options$printOptions = options.printOptions) != null && _options$printOptions.disableToolbarButton) {
276
+ return initialValue;
277
+ }
278
+
279
+ return [].concat(_toConsumableArray(initialValue), [{
280
+ component: /*#__PURE__*/_jsx(GridPrintExportMenuItem, {
281
+ options: options.printOptions
282
+ }),
283
+ componentName: 'printExport'
284
+ }]);
285
+ }, []);
286
+ useGridRegisterPipeProcessor(apiRef, 'exportMenu', addExportMenuButtons);
265
287
  };
@@ -1,4 +1,5 @@
1
1
  import { gridColumnDefinitionsSelector, gridVisibleColumnDefinitionsSelector } from '../columns';
2
+ import { gridFilteredSortedRowIdsSelector } from '../filter';
2
3
  export var getColumnsToExport = function getColumnsToExport(_ref) {
3
4
  var apiRef = _ref.apiRef,
4
5
  options = _ref.options;
@@ -18,4 +19,17 @@ export var getColumnsToExport = function getColumnsToExport(_ref) {
18
19
  return validColumns.filter(function (column) {
19
20
  return !column.disableExport;
20
21
  });
22
+ };
23
+ export var defaultGetRowsToExport = function defaultGetRowsToExport(_ref2) {
24
+ var apiRef = _ref2.apiRef;
25
+ var filteredSortedRowIds = gridFilteredSortedRowIdsSelector(apiRef);
26
+ var selectedRows = apiRef.current.getSelectedRows();
27
+
28
+ if (selectedRows.size > 0) {
29
+ return filteredSortedRowIds.filter(function (id) {
30
+ return selectedRows.has(id);
31
+ });
32
+ }
33
+
34
+ return filteredSortedRowIds;
21
35
  };
@@ -2,6 +2,8 @@ import { GridLinkOperator } from '../../../models/gridFilterItem';
2
2
  export var getDefaultGridFilterModel = function getDefaultGridFilterModel() {
3
3
  return {
4
4
  items: [],
5
- linkOperator: GridLinkOperator.And
5
+ linkOperator: GridLinkOperator.And,
6
+ quickFilterValues: [],
7
+ quickFilterLogicOperator: GridLinkOperator.And
6
8
  };
7
9
  };
@@ -1,6 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import { GridLinkOperator } from '../../../models';
3
3
  import { buildWarning } from '../../../utils/warning';
4
+ import { gridColumnFieldsSelector } from '../columns';
4
5
 
5
6
  /**
6
7
  * Adds default values to the optional fields of a filter items.
@@ -86,7 +87,7 @@ export var mergeStateWithFilterModel = function mergeStateWithFilterModel(filter
86
87
  * @returns {GridAggregatedFilterItemApplier | null} A method that checks if a row is matching the current filter model. If `null`, we consider that all the rows are matching the filters.
87
88
  */
88
89
 
89
- export var buildAggregatedFilterApplier = function buildAggregatedFilterApplier(filterModel, apiRef) {
90
+ export var buildAggregatedFilterItemsApplier = function buildAggregatedFilterItemsApplier(filterModel, apiRef) {
90
91
  var items = filterModel.items,
91
92
  _filterModel$linkOper = filterModel.linkOperator,
92
93
  linkOperator = _filterModel$linkOper === void 0 ? GridLinkOperator.And : _filterModel$linkOper;
@@ -160,7 +161,7 @@ export var buildAggregatedFilterApplier = function buildAggregatedFilterApplier(
160
161
 
161
162
  return function (rowId, shouldApplyFilter) {
162
163
  var filteredAppliers = shouldApplyFilter ? appliers.filter(function (applier) {
163
- return shouldApplyFilter(applier.item);
164
+ return shouldApplyFilter(applier.item.columnField);
164
165
  }) : appliers; // Return `false` as soon as we have a failing filter
165
166
 
166
167
  if (linkOperator === GridLinkOperator.And) {
@@ -174,4 +175,97 @@ export var buildAggregatedFilterApplier = function buildAggregatedFilterApplier(
174
175
  return applier.fn(rowId);
175
176
  });
176
177
  };
178
+ };
179
+ /**
180
+ * Generates a method to easily check if a row is matching the current quick filter.
181
+ * @param {any[]} values The model with which we want to filter the rows.
182
+ * @param {React.MutableRefObject<GridApiCommunity>} apiRef The API of the grid.
183
+ * @returns {GridAggregatedFilterItemApplier | null} A method that checks if a row is matching the current filter model. If `null`, we consider that all the rows are matching the filters.
184
+ */
185
+
186
+ export var buildAggregatedQuickFilterApplier = function buildAggregatedQuickFilterApplier(filterModel, apiRef) {
187
+ var _filterModel$quickFil = filterModel.quickFilterValues,
188
+ quickFilterValues = _filterModel$quickFil === void 0 ? [] : _filterModel$quickFil,
189
+ _filterModel$quickFil2 = filterModel.quickFilterLogicOperator,
190
+ quickFilterLogicOperator = _filterModel$quickFil2 === void 0 ? GridLinkOperator.And : _filterModel$quickFil2;
191
+
192
+ if (quickFilterValues.length === 0) {
193
+ return null;
194
+ }
195
+
196
+ var columnsFields = gridColumnFieldsSelector(apiRef);
197
+ var appliersPerColumnField = {};
198
+ columnsFields.forEach(function (field) {
199
+ var column = apiRef.current.getColumn(field);
200
+ var getApplyQuickFilterFn = column == null ? void 0 : column.getApplyQuickFilterFn;
201
+
202
+ if (!getApplyQuickFilterFn) {
203
+ return;
204
+ }
205
+
206
+ appliersPerColumnField[field] = quickFilterValues.map(function (value) {
207
+ return getApplyQuickFilterFn(value, column, apiRef);
208
+ });
209
+ }); // If some value does not have an applier we ignore them
210
+
211
+ var sanitizedQuickFilterValues = quickFilterValues.filter(function (value, index) {
212
+ return Object.keys(appliersPerColumnField).some(function (field) {
213
+ return appliersPerColumnField[field][index] != null;
214
+ });
215
+ });
216
+ return function (rowId, shouldApplyFilter) {
217
+ var usedCellParams = {};
218
+ Object.keys(appliersPerColumnField).forEach(function (columnField) {
219
+ if (!shouldApplyFilter || shouldApplyFilter(columnField)) {
220
+ usedCellParams[columnField] = apiRef.current.getCellParams(rowId, columnField);
221
+ }
222
+ }); // Return `false` as soon as we have a quick filter value that does not match any column
223
+
224
+ if (quickFilterLogicOperator === GridLinkOperator.And) {
225
+ return sanitizedQuickFilterValues.every(function (value, index) {
226
+ return Object.keys(appliersPerColumnField).some(function (field) {
227
+ var _appliersPerColumnFie, _appliersPerColumnFie2;
228
+
229
+ if (appliersPerColumnField[field][index] == null) {
230
+ return false;
231
+ }
232
+
233
+ return (_appliersPerColumnFie = (_appliersPerColumnFie2 = appliersPerColumnField[field])[index]) == null ? void 0 : _appliersPerColumnFie.call(_appliersPerColumnFie2, usedCellParams[field]);
234
+ });
235
+ });
236
+ } // Return `true` as soon as we have have a quick filter value that match any column
237
+
238
+
239
+ return sanitizedQuickFilterValues.some(function (value, index) {
240
+ return Object.keys(appliersPerColumnField).some(function (field) {
241
+ var _appliersPerColumnFie3, _appliersPerColumnFie4;
242
+
243
+ if (appliersPerColumnField[field][index] == null) {
244
+ return false;
245
+ }
246
+
247
+ return (_appliersPerColumnFie3 = (_appliersPerColumnFie4 = appliersPerColumnField[field])[index]) == null ? void 0 : _appliersPerColumnFie3.call(_appliersPerColumnFie4, usedCellParams[field]);
248
+ });
249
+ });
250
+ };
251
+ };
252
+ export var buildAggregatedFilterApplier = function buildAggregatedFilterApplier(filterModel, apiRef) {
253
+ var isRowMatchingFilterItems = buildAggregatedFilterItemsApplier(filterModel, apiRef);
254
+ var isRowMatchingQuickFilter = buildAggregatedQuickFilterApplier(filterModel, apiRef);
255
+
256
+ if (isRowMatchingFilterItems == null && isRowMatchingQuickFilter == null) {
257
+ return null;
258
+ }
259
+
260
+ if (isRowMatchingFilterItems == null) {
261
+ return isRowMatchingQuickFilter;
262
+ }
263
+
264
+ if (isRowMatchingQuickFilter == null) {
265
+ return isRowMatchingFilterItems;
266
+ }
267
+
268
+ return function (rowId, shouldApplyFilter) {
269
+ return isRowMatchingFilterItems(rowId, shouldApplyFilter) && isRowMatchingQuickFilter(rowId, shouldApplyFilter);
270
+ };
177
271
  };
@@ -1,7 +1,6 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import * as React from 'react';
4
- import { GridEvents } from '../../../models/events';
5
4
  import { GridFeatureModeConstant } from '../../../models/gridFeatureMode';
6
5
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
7
6
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
@@ -15,6 +14,7 @@ import { gridRowIdsSelector } from '../rows';
15
14
  import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
16
15
  import { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from '../../core/strategyProcessing';
17
16
  import { buildAggregatedFilterApplier, sanitizeFilterModel, mergeStateWithFilterModel } from './gridFilterUtils';
17
+ import { isDeepEqual } from '../../../utils/utils';
18
18
  import { jsx as _jsx } from "react/jsx-runtime";
19
19
  export var filterStateInitializer = function filterStateInitializer(state, props, apiRef) {
20
20
  var _ref, _props$filterModel, _props$initialState, _props$initialState$f;
@@ -43,13 +43,9 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
43
43
  propModel: props.filterModel,
44
44
  propOnChange: props.onFilterModelChange,
45
45
  stateSelector: gridFilterModelSelector,
46
- changeEvent: GridEvents.filterModelChange
46
+ changeEvent: 'filterModelChange'
47
47
  });
48
- /**
49
- * API METHODS
50
- */
51
-
52
- var applyFilters = React.useCallback(function () {
48
+ var updateFilteredRows = React.useCallback(function () {
53
49
  apiRef.current.setState(function (state) {
54
50
  var filterModel = gridFilterModelSelector(state, apiRef.current.instanceId);
55
51
  var isRowMatchingFilters = props.filterMode === GridFeatureModeConstant.client ? buildAggregatedFilterApplier(filterModel, apiRef) : null;
@@ -60,9 +56,16 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
60
56
  filter: _extends({}, state.filter, filteringResult)
61
57
  });
62
58
  });
63
- apiRef.current.publishEvent(GridEvents.visibleRowsSet);
59
+ apiRef.current.publishEvent('filteredRowsSet');
60
+ }, [props.filterMode, apiRef]);
61
+ /**
62
+ * API METHODS
63
+ */
64
+
65
+ var applyFilters = React.useCallback(function () {
66
+ updateFilteredRows();
64
67
  apiRef.current.forceUpdate();
65
- }, [apiRef, props.filterMode]);
68
+ }, [apiRef, updateFilteredRows]);
66
69
  var upsertFilterItem = React.useCallback(function (item) {
67
70
  var filterModel = gridFilterModelSelector(apiRef);
68
71
 
@@ -143,6 +146,17 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
143
146
  linkOperator: linkOperator
144
147
  }));
145
148
  }, [apiRef]);
149
+ var setQuickFilterValues = React.useCallback(function (values) {
150
+ var filterModel = gridFilterModelSelector(apiRef);
151
+
152
+ if (isDeepEqual(filterModel.quickFilterValues, values)) {
153
+ return;
154
+ }
155
+
156
+ apiRef.current.setFilterModel(_extends({}, filterModel, {
157
+ quickFilterValues: _toConsumableArray(values)
158
+ }));
159
+ }, [apiRef]);
146
160
  var setFilterModel = React.useCallback(function (model) {
147
161
  var currentModel = gridFilterModelSelector(apiRef);
148
162
 
@@ -166,7 +180,8 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
166
180
  setFilterModel: setFilterModel,
167
181
  showFilterPanel: showFilterPanel,
168
182
  hideFilterPanel: hideFilterPanel,
169
- getVisibleRowModels: getVisibleRowModels
183
+ getVisibleRowModels: getVisibleRowModels,
184
+ setQuickFilterValues: setQuickFilterValues
170
185
  };
171
186
  useGridApiMethod(apiRef, filterApi, 'GridFilterApi');
172
187
  /**
@@ -260,11 +275,13 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
260
275
  if (methodName === 'filtering') {
261
276
  apiRef.current.unstable_applyFilters();
262
277
  }
263
- }, [apiRef]);
264
- useGridApiEventHandler(apiRef, GridEvents.rowsSet, apiRef.current.unstable_applyFilters);
265
- useGridApiEventHandler(apiRef, GridEvents.rowExpansionChange, apiRef.current.unstable_applyFilters);
266
- useGridApiEventHandler(apiRef, GridEvents.columnsChange, handleColumnsChange);
267
- useGridApiEventHandler(apiRef, GridEvents.activeStrategyProcessorChange, handleStrategyProcessorChange);
278
+ }, [apiRef]); // Do not call `apiRef.current.forceUpdate` to avoid re-render before updating the sorted rows.
279
+ // Otherwise, the state is not consistent during the render
280
+
281
+ useGridApiEventHandler(apiRef, 'rowsSet', updateFilteredRows);
282
+ useGridApiEventHandler(apiRef, 'rowExpansionChange', apiRef.current.unstable_applyFilters);
283
+ useGridApiEventHandler(apiRef, 'columnsChange', handleColumnsChange);
284
+ useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
268
285
  /**
269
286
  * 1ST RENDER
270
287
  */
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { ownerDocument } from '@mui/material/utils';
4
- import { GridEvents } from '../../../models/events';
5
4
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
6
5
  import { useGridLogger } from '../../utils/useGridLogger';
7
6
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
@@ -32,14 +31,9 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
32
31
  var logger = useGridLogger(apiRef, 'useGridFocus');
33
32
  var lastClickedCell = React.useRef(null);
34
33
  var setCellFocus = React.useCallback(function (id, field) {
35
- // The row might have been deleted
36
- if (!apiRef.current.getRow(id)) {
37
- return;
38
- }
39
-
40
34
  var focusedCell = gridFocusCellSelector(apiRef);
41
35
 
42
- if ((focusedCell == null ? void 0 : focusedCell.id) === id && focusedCell.field === field) {
36
+ if ((focusedCell == null ? void 0 : focusedCell.id) === id && (focusedCell == null ? void 0 : focusedCell.field) === field) {
43
37
  return;
44
38
  }
45
39
 
@@ -62,15 +56,20 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
62
56
  }
63
57
  });
64
58
  });
65
- apiRef.current.forceUpdate();
66
- apiRef.current.publishEvent(GridEvents.cellFocusIn, apiRef.current.getCellParams(id, field));
59
+ apiRef.current.forceUpdate(); // The row might have been deleted
60
+
61
+ if (!apiRef.current.getRow(id)) {
62
+ return;
63
+ }
64
+
65
+ apiRef.current.publishEvent('cellFocusIn', apiRef.current.getCellParams(id, field));
67
66
  }, [apiRef, logger]);
68
67
  var setColumnHeaderFocus = React.useCallback(function (field) {
69
68
  var event = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
70
69
  var cell = gridFocusCellSelector(apiRef);
71
70
 
72
71
  if (cell) {
73
- apiRef.current.publishEvent(GridEvents.cellFocusOut, apiRef.current.getCellParams(cell.id, cell.field), event);
72
+ apiRef.current.publishEvent('cellFocusOut', apiRef.current.getCellParams(cell.id, cell.field), event);
74
73
  }
75
74
 
76
75
  apiRef.current.setState(function (state) {
@@ -105,21 +104,31 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
105
104
  rowIndexToFocus += 1;
106
105
  }
107
106
 
107
+ var currentPage = getVisibleRows(apiRef, {
108
+ pagination: props.pagination,
109
+ paginationMode: props.paginationMode
110
+ });
111
+
108
112
  if (columnIndexToFocus >= visibleColumns.length) {
109
- // Go to next row if we are at the last column
113
+ // Go to next row if we are after the last column
110
114
  rowIndexToFocus += 1;
111
- columnIndexToFocus = 0;
115
+
116
+ if (rowIndexToFocus < currentPage.rows.length) {
117
+ // Go to first column of the next row if there's one more row
118
+ columnIndexToFocus = 0;
119
+ }
112
120
  } else if (columnIndexToFocus < 0) {
113
- // Go to previous row if we are at the first column
121
+ // Go to previous row if we are before the first column
114
122
  rowIndexToFocus -= 1;
115
- columnIndexToFocus = visibleColumns.length - 1;
123
+
124
+ if (rowIndexToFocus >= 0) {
125
+ // Go to last column of the previous if there's one more row
126
+ columnIndexToFocus = visibleColumns.length - 1;
127
+ }
116
128
  }
117
129
 
118
- var currentPage = getVisibleRows(apiRef, {
119
- pagination: props.pagination,
120
- paginationMode: props.paginationMode
121
- });
122
- rowIndexToFocus = clamp(rowIndexToFocus, currentPage.range.firstRowIndex, currentPage.range.lastRowIndex);
130
+ rowIndexToFocus = clamp(rowIndexToFocus, 0, currentPage.rows.length - 1);
131
+ columnIndexToFocus = clamp(columnIndexToFocus, 0, visibleColumns.length - 1);
123
132
  var rowToFocus = currentPage.rows[rowIndexToFocus];
124
133
  var columnToFocus = visibleColumns[columnIndexToFocus];
125
134
  apiRef.current.setCellFocus(rowToFocus.id, columnToFocus.field);
@@ -190,7 +199,7 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
190
199
  // Publishes an event to notify that the focus was lost
191
200
 
192
201
 
193
- apiRef.current.publishEvent(GridEvents.cellFocusOut, apiRef.current.getCellParams(focusedCell.id, focusedCell.field), event);
202
+ apiRef.current.publishEvent('cellFocusOut', apiRef.current.getCellParams(focusedCell.id, focusedCell.field), event);
194
203
 
195
204
  if (cellParams) {
196
205
  apiRef.current.setCellFocus(cellParams.id, cellParams.field);
@@ -217,29 +226,25 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
217
226
  apiRef.current.setCellFocus(params.id, params.field);
218
227
  }
219
228
  }, [apiRef]);
229
+ var handleRowSet = React.useCallback(function () {
230
+ var cell = gridFocusCellSelector(apiRef); // If the focused cell is in a row which does not exist anymore, then remove the focus
231
+
232
+ if (cell && !apiRef.current.getRow(cell.id)) {
233
+ apiRef.current.setState(function (state) {
234
+ return _extends({}, state, {
235
+ focus: {
236
+ cell: null,
237
+ columnHeader: null
238
+ }
239
+ });
240
+ });
241
+ }
242
+ }, [apiRef]);
220
243
  useGridApiMethod(apiRef, {
221
244
  setCellFocus: setCellFocus,
222
245
  setColumnHeaderFocus: setColumnHeaderFocus,
223
246
  unstable_moveFocusToRelativeCell: moveFocusToRelativeCell
224
247
  }, 'GridFocusApi');
225
- React.useEffect(function () {
226
- var cell = gridFocusCellSelector(apiRef);
227
-
228
- if (cell) {
229
- var updatedRow = apiRef.current.getRow(cell.id);
230
-
231
- if (!updatedRow) {
232
- apiRef.current.setState(function (state) {
233
- return _extends({}, state, {
234
- focus: {
235
- cell: null,
236
- columnHeader: null
237
- }
238
- });
239
- });
240
- }
241
- }
242
- }, [apiRef, props.rows]);
243
248
  React.useEffect(function () {
244
249
  var doc = ownerDocument(apiRef.current.rootElementRef.current);
245
250
  doc.addEventListener('click', handleDocumentClick);
@@ -247,10 +252,11 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
247
252
  doc.removeEventListener('click', handleDocumentClick);
248
253
  };
249
254
  }, [apiRef, handleDocumentClick]);
250
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderBlur, handleBlur);
251
- useGridApiEventHandler(apiRef, GridEvents.cellDoubleClick, handleCellDoubleClick);
252
- useGridApiEventHandler(apiRef, GridEvents.cellMouseUp, handleCellMouseUp);
253
- useGridApiEventHandler(apiRef, GridEvents.cellKeyDown, handleCellKeyDown);
254
- useGridApiEventHandler(apiRef, GridEvents.cellModeChange, handleCellModeChange);
255
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderFocus, handleColumnHeaderFocus);
255
+ useGridApiEventHandler(apiRef, 'columnHeaderBlur', handleBlur);
256
+ useGridApiEventHandler(apiRef, 'cellDoubleClick', handleCellDoubleClick);
257
+ useGridApiEventHandler(apiRef, 'cellMouseUp', handleCellMouseUp);
258
+ useGridApiEventHandler(apiRef, 'cellKeyDown', handleCellKeyDown);
259
+ useGridApiEventHandler(apiRef, 'cellModeChange', handleCellModeChange);
260
+ useGridApiEventHandler(apiRef, 'columnHeaderFocus', handleColumnHeaderFocus);
261
+ useGridApiEventHandler(apiRef, 'rowsSet', handleRowSet);
256
262
  };