@mui/x-data-grid 5.9.0 → 5.11.1

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 (519) hide show
  1. package/CHANGELOG.md +284 -10
  2. package/DataGrid/DataGrid.js +35 -1
  3. package/DataGrid/useDataGridProps.js +2 -1
  4. package/README.md +5 -4
  5. package/colDef/gridActionsColDef.js +2 -1
  6. package/colDef/gridBooleanColDef.js +2 -1
  7. package/colDef/gridCheckboxSelectionColDef.js +1 -0
  8. package/colDef/gridDateColDef.js +4 -2
  9. package/colDef/gridNumericColDef.js +3 -2
  10. package/colDef/gridNumericOperators.d.ts +2 -0
  11. package/colDef/gridNumericOperators.js +11 -0
  12. package/colDef/gridSingleSelectColDef.js +3 -2
  13. package/colDef/gridSingleSelectOperators.d.ts +3 -0
  14. package/colDef/gridSingleSelectOperators.js +52 -0
  15. package/colDef/gridStringColDef.js +3 -2
  16. package/colDef/gridStringOperators.d.ts +2 -0
  17. package/colDef/gridStringOperators.js +12 -0
  18. package/components/GridFooter.d.ts +4 -2
  19. package/components/GridFooter.js +11 -2
  20. package/components/GridRow.js +9 -5
  21. package/components/GridRowCount.d.ts +4 -1
  22. package/components/GridRowCount.js +1 -0
  23. package/components/GridScrollArea.js +3 -4
  24. package/components/GridSelectedRowCount.d.ts +4 -1
  25. package/components/GridSelectedRowCount.js +2 -1
  26. package/components/base/GridBody.js +1 -2
  27. package/components/base/GridOverlays.js +2 -3
  28. package/components/cell/GridActionsCell.js +13 -4
  29. package/components/cell/GridCell.js +8 -8
  30. package/components/cell/GridEditBooleanCell.d.ts +15 -3
  31. package/components/cell/GridEditBooleanCell.js +101 -6
  32. package/components/cell/GridEditDateCell.d.ts +16 -4
  33. package/components/cell/GridEditDateCell.js +99 -5
  34. package/components/cell/GridEditInputCell.d.ts +11 -5
  35. package/components/cell/GridEditInputCell.js +29 -5
  36. package/components/cell/GridEditSingleSelectCell.d.ts +12 -4
  37. package/components/cell/GridEditSingleSelectCell.js +28 -5
  38. package/components/cell/index.d.ts +2 -0
  39. package/components/cell/index.js +2 -0
  40. package/components/columnHeaders/GridColumnHeaderItem.js +15 -16
  41. package/components/columnHeaders/GridColumnHeaders.d.ts +2 -0
  42. package/components/columnHeaders/GridColumnHeadersInner.d.ts +2 -0
  43. package/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
  44. package/components/columnSelection/GridHeaderCheckbox.js +4 -5
  45. package/components/containers/GridFooterContainer.d.ts +8 -2
  46. package/components/containers/GridFooterContainer.js +11 -2
  47. package/components/containers/GridRoot.js +25 -5
  48. package/components/containers/GridRootStyles.js +36 -1
  49. package/components/containers/GridToolbarContainer.d.ts +8 -2
  50. package/components/containers/GridToolbarContainer.js +12 -2
  51. package/components/menu/GridMenu.js +1 -0
  52. package/components/panel/GridPanelContent.d.ts +8 -1
  53. package/components/panel/GridPanelContent.js +13 -2
  54. package/components/panel/GridPanelFooter.d.ts +8 -1
  55. package/components/panel/GridPanelFooter.js +13 -2
  56. package/components/panel/GridPanelHeader.d.ts +8 -1
  57. package/components/panel/GridPanelHeader.js +13 -2
  58. package/components/toolbar/GridToolbar.d.ts +12 -2
  59. package/components/toolbar/GridToolbar.js +30 -7
  60. package/components/toolbar/GridToolbarExport.d.ts +5 -4
  61. package/components/toolbar/GridToolbarExport.js +15 -20
  62. package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
  63. package/components/toolbar/GridToolbarQuickFilter.d.ts +20 -0
  64. package/components/toolbar/GridToolbarQuickFilter.js +87 -0
  65. package/components/toolbar/index.d.ts +3 -1
  66. package/components/toolbar/index.js +3 -2
  67. package/components/virtualization/GridVirtualScroller.d.ts +4 -1
  68. package/components/virtualization/GridVirtualScrollerContent.d.ts +4 -1
  69. package/components/virtualization/GridVirtualScrollerRenderZone.d.ts +4 -1
  70. package/constants/defaultGridSlotsComponents.js +4 -2
  71. package/constants/gridClasses.d.ts +32 -0
  72. package/constants/gridClasses.js +1 -1
  73. package/constants/localeTextConstants.js +8 -1
  74. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +11 -0
  75. package/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -9
  76. package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +4 -4
  77. package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  78. package/hooks/core/useGridApiInitialization.js +3 -3
  79. package/hooks/core/useGridErrorHandler.js +1 -2
  80. package/hooks/core/useGridStateInitialization.js +1 -2
  81. package/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -6
  82. package/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
  83. package/hooks/features/columns/useGridColumnSpanning.js +1 -2
  84. package/hooks/features/columns/useGridColumns.d.ts +1 -1
  85. package/hooks/features/columns/useGridColumns.js +8 -9
  86. package/hooks/features/dimensions/useGridDimensions.d.ts +1 -1
  87. package/hooks/features/dimensions/useGridDimensions.js +8 -9
  88. package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
  89. package/hooks/features/editRows/useGridCellEditing.new.js +133 -32
  90. package/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  91. package/hooks/features/editRows/useGridEditing.old.js +4 -5
  92. package/hooks/features/editRows/useGridRowEditing.new.d.ts +1 -1
  93. package/hooks/features/editRows/useGridRowEditing.new.js +122 -42
  94. package/hooks/features/editRows/useGridRowEditing.old.js +21 -22
  95. package/hooks/features/events/useGridEvents.js +17 -18
  96. package/hooks/features/export/serializers/csvSerializer.js +5 -5
  97. package/hooks/features/export/useGridCsvExport.js +23 -16
  98. package/hooks/features/export/useGridPrintExport.js +22 -0
  99. package/hooks/features/export/utils.d.ts +3 -1
  100. package/hooks/features/export/utils.js +13 -0
  101. package/hooks/features/filter/gridFilterState.d.ts +1 -2
  102. package/hooks/features/filter/gridFilterState.js +3 -1
  103. package/hooks/features/filter/gridFilterUtils.d.ts +8 -0
  104. package/hooks/features/filter/gridFilterUtils.js +84 -2
  105. package/hooks/features/filter/useGridFilter.js +20 -8
  106. package/hooks/features/focus/useGridFocus.d.ts +1 -1
  107. package/hooks/features/focus/useGridFocus.js +29 -33
  108. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -5
  109. package/hooks/features/pagination/useGridPage.js +3 -4
  110. package/hooks/features/pagination/useGridPageSize.js +2 -3
  111. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  112. package/hooks/features/rows/gridRowsSelector.d.ts +1 -0
  113. package/hooks/features/rows/gridRowsSelector.js +1 -0
  114. package/hooks/features/rows/gridRowsState.d.ts +16 -11
  115. package/hooks/features/rows/gridRowsUtils.d.ts +14 -1
  116. package/hooks/features/rows/gridRowsUtils.js +79 -1
  117. package/hooks/features/rows/useGridRows.js +148 -128
  118. package/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  119. package/hooks/features/scroll/useGridScroll.js +6 -1
  120. package/hooks/features/selection/useGridSelection.d.ts +1 -1
  121. package/hooks/features/selection/useGridSelection.js +13 -10
  122. package/hooks/features/sorting/useGridSorting.js +8 -9
  123. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -0
  124. package/hooks/features/virtualization/useGridVirtualScroller.js +14 -5
  125. package/hooks/utils/useGridApiEventHandler.d.ts +4 -1
  126. package/hooks/utils/useGridApiEventHandler.js +22 -9
  127. package/hooks/utils/useGridNativeEventListener.js +1 -2
  128. package/hooks/utils/useGridSelector.js +1 -1
  129. package/index.d.ts +2 -0
  130. package/index.js +1 -1
  131. package/internals/index.d.ts +4 -1
  132. package/internals/index.js +5 -2
  133. package/legacy/DataGrid/DataGrid.js +35 -1
  134. package/legacy/DataGrid/useDataGridProps.js +2 -1
  135. package/legacy/colDef/gridActionsColDef.js +2 -1
  136. package/legacy/colDef/gridBooleanColDef.js +2 -1
  137. package/legacy/colDef/gridCheckboxSelectionColDef.js +1 -0
  138. package/legacy/colDef/gridDateColDef.js +4 -2
  139. package/legacy/colDef/gridNumericColDef.js +3 -2
  140. package/legacy/colDef/gridNumericOperators.js +28 -18
  141. package/legacy/colDef/gridSingleSelectColDef.js +3 -2
  142. package/legacy/colDef/gridSingleSelectOperators.js +55 -6
  143. package/legacy/colDef/gridStringColDef.js +3 -2
  144. package/legacy/colDef/gridStringOperators.js +25 -14
  145. package/legacy/components/GridFooter.js +11 -2
  146. package/legacy/components/GridRow.js +9 -5
  147. package/legacy/components/GridRowCount.js +1 -0
  148. package/legacy/components/GridScrollArea.js +3 -4
  149. package/legacy/components/GridSelectedRowCount.js +2 -1
  150. package/legacy/components/base/GridBody.js +1 -2
  151. package/legacy/components/base/GridOverlays.js +2 -3
  152. package/legacy/components/cell/GridActionsCell.js +13 -4
  153. package/legacy/components/cell/GridCell.js +8 -8
  154. package/legacy/components/cell/GridEditBooleanCell.js +132 -11
  155. package/legacy/components/cell/GridEditDateCell.js +148 -42
  156. package/legacy/components/cell/GridEditInputCell.js +61 -12
  157. package/legacy/components/cell/GridEditSingleSelectCell.js +41 -13
  158. package/legacy/components/cell/index.js +2 -0
  159. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +15 -16
  160. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
  161. package/legacy/components/columnSelection/GridHeaderCheckbox.js +4 -5
  162. package/legacy/components/containers/GridFooterContainer.js +11 -2
  163. package/legacy/components/containers/GridRoot.js +23 -5
  164. package/legacy/components/containers/GridRootStyles.js +26 -5
  165. package/legacy/components/containers/GridToolbarContainer.js +12 -2
  166. package/legacy/components/menu/GridMenu.js +1 -0
  167. package/legacy/components/panel/GridPanelContent.js +13 -2
  168. package/legacy/components/panel/GridPanelFooter.js +13 -2
  169. package/legacy/components/panel/GridPanelHeader.js +13 -2
  170. package/legacy/components/toolbar/GridToolbar.js +31 -6
  171. package/legacy/components/toolbar/GridToolbarExport.js +18 -19
  172. package/legacy/components/toolbar/GridToolbarQuickFilter.js +102 -0
  173. package/legacy/components/toolbar/index.js +3 -2
  174. package/legacy/constants/defaultGridSlotsComponents.js +4 -2
  175. package/legacy/constants/gridClasses.js +1 -1
  176. package/legacy/constants/localeTextConstants.js +8 -1
  177. package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -10
  178. package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  179. package/legacy/hooks/core/useGridApiInitialization.js +3 -3
  180. package/legacy/hooks/core/useGridErrorHandler.js +1 -2
  181. package/legacy/hooks/core/useGridStateInitialization.js +1 -2
  182. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -6
  183. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
  184. package/legacy/hooks/features/columns/useGridColumnSpanning.js +1 -2
  185. package/legacy/hooks/features/columns/useGridColumns.js +8 -9
  186. package/legacy/hooks/features/dimensions/useGridDimensions.js +8 -9
  187. package/legacy/hooks/features/editRows/useGridCellEditing.new.js +213 -83
  188. package/legacy/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  189. package/legacy/hooks/features/editRows/useGridEditing.old.js +4 -5
  190. package/legacy/hooks/features/editRows/useGridRowEditing.new.js +126 -42
  191. package/legacy/hooks/features/editRows/useGridRowEditing.old.js +20 -21
  192. package/legacy/hooks/features/events/useGridEvents.js +17 -18
  193. package/legacy/hooks/features/export/serializers/csvSerializer.js +5 -5
  194. package/legacy/hooks/features/export/useGridCsvExport.js +24 -17
  195. package/legacy/hooks/features/export/useGridPrintExport.js +22 -0
  196. package/legacy/hooks/features/export/utils.js +14 -0
  197. package/legacy/hooks/features/filter/gridFilterState.js +3 -1
  198. package/legacy/hooks/features/filter/gridFilterUtils.js +96 -2
  199. package/legacy/hooks/features/filter/useGridFilter.js +20 -8
  200. package/legacy/hooks/features/focus/useGridFocus.js +31 -35
  201. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -5
  202. package/legacy/hooks/features/pagination/useGridPage.js +3 -4
  203. package/legacy/hooks/features/pagination/useGridPageSize.js +2 -3
  204. package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  205. package/legacy/hooks/features/rows/gridRowsSelector.js +3 -0
  206. package/legacy/hooks/features/rows/gridRowsUtils.js +82 -1
  207. package/legacy/hooks/features/rows/useGridRows.js +164 -131
  208. package/legacy/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  209. package/legacy/hooks/features/scroll/useGridScroll.js +6 -1
  210. package/legacy/hooks/features/selection/useGridSelection.js +13 -10
  211. package/legacy/hooks/features/sorting/useGridSorting.js +8 -9
  212. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +14 -5
  213. package/legacy/hooks/utils/useGridApiEventHandler.js +20 -9
  214. package/legacy/hooks/utils/useGridNativeEventListener.js +1 -2
  215. package/legacy/hooks/utils/useGridSelector.js +1 -1
  216. package/legacy/index.js +1 -1
  217. package/legacy/internals/index.js +5 -2
  218. package/legacy/locales/arSD.js +8 -1
  219. package/legacy/locales/bgBG.js +8 -1
  220. package/legacy/locales/csCZ.js +7 -0
  221. package/legacy/locales/daDK.js +8 -1
  222. package/legacy/locales/deDE.js +10 -3
  223. package/legacy/locales/elGR.js +7 -0
  224. package/legacy/locales/esES.js +7 -0
  225. package/legacy/locales/faIR.js +8 -1
  226. package/legacy/locales/fiFI.js +7 -0
  227. package/legacy/locales/frFR.js +7 -0
  228. package/legacy/locales/heIL.js +8 -1
  229. package/legacy/locales/huHU.js +8 -1
  230. package/legacy/locales/itIT.js +7 -0
  231. package/legacy/locales/jaJP.js +7 -0
  232. package/legacy/locales/koKR.js +7 -0
  233. package/legacy/locales/nlNL.js +7 -0
  234. package/legacy/locales/plPL.js +8 -1
  235. package/legacy/locales/ptBR.js +8 -1
  236. package/legacy/locales/ruRU.js +7 -0
  237. package/legacy/locales/skSK.js +7 -0
  238. package/legacy/locales/trTR.js +8 -1
  239. package/legacy/locales/ukUA.js +7 -0
  240. package/legacy/locales/viVN.js +7 -0
  241. package/legacy/locales/zhCN.js +7 -0
  242. package/legacy/models/events/gridEvents.js +8 -0
  243. package/legacy/models/index.js +4 -3
  244. package/legacy/utils/createSelector.js +18 -2
  245. package/legacy/utils/exportAs.js +1 -1
  246. package/locales/arSD.js +8 -1
  247. package/locales/bgBG.js +8 -1
  248. package/locales/csCZ.js +7 -0
  249. package/locales/daDK.js +8 -1
  250. package/locales/deDE.js +10 -3
  251. package/locales/elGR.js +7 -0
  252. package/locales/esES.js +7 -0
  253. package/locales/faIR.js +8 -1
  254. package/locales/fiFI.js +7 -0
  255. package/locales/frFR.js +7 -0
  256. package/locales/heIL.js +8 -1
  257. package/locales/huHU.js +8 -1
  258. package/locales/itIT.js +7 -0
  259. package/locales/jaJP.js +7 -0
  260. package/locales/koKR.js +7 -0
  261. package/locales/nlNL.js +7 -0
  262. package/locales/plPL.js +8 -1
  263. package/locales/ptBR.js +8 -1
  264. package/locales/ruRU.js +7 -0
  265. package/locales/skSK.js +7 -0
  266. package/locales/trTR.js +8 -1
  267. package/locales/ukUA.js +7 -0
  268. package/locales/viVN.js +7 -0
  269. package/locales/zhCN.js +7 -0
  270. package/models/api/gridCoreApi.d.ts +10 -0
  271. package/models/api/gridEditingApi.d.ts +23 -4
  272. package/models/api/gridFilterApi.d.ts +5 -0
  273. package/models/api/gridFocusApi.d.ts +1 -0
  274. package/models/api/gridLocaleTextApi.d.ts +5 -0
  275. package/models/api/gridRowApi.d.ts +34 -0
  276. package/models/api/index.d.ts +1 -1
  277. package/models/colDef/gridColDef.d.ts +13 -0
  278. package/models/events/gridEventLookup.d.ts +293 -3
  279. package/models/events/gridEvents.d.ts +8 -251
  280. package/models/events/gridEvents.js +8 -0
  281. package/models/gridExport.d.ts +29 -2
  282. package/models/gridFilterModel.d.ts +11 -0
  283. package/models/gridFilterOperator.d.ts +1 -1
  284. package/models/gridIconSlotsComponent.d.ts +10 -0
  285. package/models/gridStateCommunity.d.ts +0 -2
  286. package/models/index.d.ts +1 -1
  287. package/models/index.js +4 -3
  288. package/models/props/DataGridProps.d.ts +56 -28
  289. package/modern/DataGrid/DataGrid.js +35 -1
  290. package/modern/DataGrid/useDataGridProps.js +2 -1
  291. package/modern/colDef/gridActionsColDef.js +2 -1
  292. package/modern/colDef/gridBooleanColDef.js +2 -1
  293. package/modern/colDef/gridCheckboxSelectionColDef.js +1 -0
  294. package/modern/colDef/gridDateColDef.js +4 -2
  295. package/modern/colDef/gridNumericColDef.js +3 -2
  296. package/modern/colDef/gridNumericOperators.js +11 -0
  297. package/modern/colDef/gridSingleSelectColDef.js +3 -2
  298. package/modern/colDef/gridSingleSelectOperators.js +52 -0
  299. package/modern/colDef/gridStringColDef.js +3 -2
  300. package/modern/colDef/gridStringOperators.js +12 -0
  301. package/modern/components/GridFooter.js +11 -2
  302. package/modern/components/GridRow.js +9 -5
  303. package/modern/components/GridRowCount.js +1 -0
  304. package/modern/components/GridScrollArea.js +3 -4
  305. package/modern/components/GridSelectedRowCount.js +2 -1
  306. package/modern/components/base/GridBody.js +1 -2
  307. package/modern/components/base/GridOverlays.js +2 -3
  308. package/modern/components/cell/GridActionsCell.js +14 -3
  309. package/modern/components/cell/GridCell.js +8 -8
  310. package/modern/components/cell/GridEditBooleanCell.js +101 -6
  311. package/modern/components/cell/GridEditDateCell.js +99 -5
  312. package/modern/components/cell/GridEditInputCell.js +29 -5
  313. package/modern/components/cell/GridEditSingleSelectCell.js +28 -5
  314. package/modern/components/cell/index.js +2 -0
  315. package/modern/components/columnHeaders/GridColumnHeaderItem.js +15 -16
  316. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
  317. package/modern/components/columnSelection/GridHeaderCheckbox.js +4 -5
  318. package/modern/components/containers/GridFooterContainer.js +11 -2
  319. package/modern/components/containers/GridRoot.js +25 -3
  320. package/modern/components/containers/GridRootStyles.js +36 -1
  321. package/modern/components/containers/GridToolbarContainer.js +12 -2
  322. package/modern/components/menu/GridMenu.js +1 -0
  323. package/modern/components/panel/GridPanelContent.js +13 -2
  324. package/modern/components/panel/GridPanelFooter.js +13 -2
  325. package/modern/components/panel/GridPanelHeader.js +13 -2
  326. package/modern/components/toolbar/GridToolbar.js +30 -7
  327. package/modern/components/toolbar/GridToolbarExport.js +15 -20
  328. package/modern/components/toolbar/GridToolbarQuickFilter.js +85 -0
  329. package/modern/components/toolbar/index.js +3 -2
  330. package/modern/constants/defaultGridSlotsComponents.js +4 -2
  331. package/modern/constants/gridClasses.js +1 -1
  332. package/modern/constants/localeTextConstants.js +8 -1
  333. package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -9
  334. package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  335. package/modern/hooks/core/useGridApiInitialization.js +3 -3
  336. package/modern/hooks/core/useGridErrorHandler.js +1 -2
  337. package/modern/hooks/core/useGridStateInitialization.js +1 -2
  338. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -6
  339. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
  340. package/modern/hooks/features/columns/useGridColumnSpanning.js +1 -2
  341. package/modern/hooks/features/columns/useGridColumns.js +8 -9
  342. package/modern/hooks/features/dimensions/useGridDimensions.js +8 -9
  343. package/modern/hooks/features/editRows/useGridCellEditing.new.js +131 -32
  344. package/modern/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  345. package/modern/hooks/features/editRows/useGridEditing.old.js +4 -5
  346. package/modern/hooks/features/editRows/useGridRowEditing.new.js +120 -42
  347. package/modern/hooks/features/editRows/useGridRowEditing.old.js +21 -22
  348. package/modern/hooks/features/events/useGridEvents.js +17 -18
  349. package/modern/hooks/features/export/serializers/csvSerializer.js +5 -5
  350. package/modern/hooks/features/export/useGridCsvExport.js +21 -16
  351. package/modern/hooks/features/export/useGridPrintExport.js +20 -0
  352. package/modern/hooks/features/export/utils.js +13 -0
  353. package/modern/hooks/features/filter/gridFilterState.js +3 -1
  354. package/modern/hooks/features/filter/gridFilterUtils.js +80 -2
  355. package/modern/hooks/features/filter/useGridFilter.js +20 -8
  356. package/modern/hooks/features/focus/useGridFocus.js +29 -33
  357. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -5
  358. package/modern/hooks/features/pagination/useGridPage.js +3 -4
  359. package/modern/hooks/features/pagination/useGridPageSize.js +2 -3
  360. package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  361. package/modern/hooks/features/rows/gridRowsSelector.js +1 -0
  362. package/modern/hooks/features/rows/gridRowsUtils.js +77 -1
  363. package/modern/hooks/features/rows/useGridRows.js +148 -128
  364. package/modern/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  365. package/modern/hooks/features/scroll/useGridScroll.js +6 -1
  366. package/modern/hooks/features/selection/useGridSelection.js +13 -10
  367. package/modern/hooks/features/sorting/useGridSorting.js +8 -9
  368. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +14 -5
  369. package/modern/hooks/utils/useGridApiEventHandler.js +20 -9
  370. package/modern/hooks/utils/useGridNativeEventListener.js +1 -2
  371. package/modern/hooks/utils/useGridSelector.js +1 -1
  372. package/modern/index.js +1 -1
  373. package/modern/internals/index.js +5 -2
  374. package/modern/locales/arSD.js +8 -1
  375. package/modern/locales/bgBG.js +8 -1
  376. package/modern/locales/csCZ.js +7 -0
  377. package/modern/locales/daDK.js +8 -1
  378. package/modern/locales/deDE.js +10 -3
  379. package/modern/locales/elGR.js +7 -0
  380. package/modern/locales/esES.js +7 -0
  381. package/modern/locales/faIR.js +8 -1
  382. package/modern/locales/fiFI.js +7 -0
  383. package/modern/locales/frFR.js +7 -0
  384. package/modern/locales/heIL.js +8 -1
  385. package/modern/locales/huHU.js +8 -1
  386. package/modern/locales/itIT.js +7 -0
  387. package/modern/locales/jaJP.js +7 -0
  388. package/modern/locales/koKR.js +7 -0
  389. package/modern/locales/nlNL.js +7 -0
  390. package/modern/locales/plPL.js +8 -1
  391. package/modern/locales/ptBR.js +8 -1
  392. package/modern/locales/ruRU.js +7 -0
  393. package/modern/locales/skSK.js +7 -0
  394. package/modern/locales/trTR.js +8 -1
  395. package/modern/locales/ukUA.js +7 -0
  396. package/modern/locales/viVN.js +7 -0
  397. package/modern/locales/zhCN.js +7 -0
  398. package/modern/models/events/gridEvents.js +8 -0
  399. package/modern/models/index.js +4 -3
  400. package/modern/utils/createSelector.js +20 -2
  401. package/modern/utils/exportAs.js +1 -1
  402. package/node/DataGrid/DataGrid.js +35 -1
  403. package/node/DataGrid/useDataGridProps.js +2 -1
  404. package/node/colDef/gridActionsColDef.js +2 -1
  405. package/node/colDef/gridBooleanColDef.js +2 -1
  406. package/node/colDef/gridCheckboxSelectionColDef.js +1 -0
  407. package/node/colDef/gridDateColDef.js +4 -2
  408. package/node/colDef/gridNumericColDef.js +2 -1
  409. package/node/colDef/gridNumericOperators.js +15 -1
  410. package/node/colDef/gridSingleSelectColDef.js +2 -1
  411. package/node/colDef/gridSingleSelectOperators.js +56 -1
  412. package/node/colDef/gridStringColDef.js +2 -1
  413. package/node/colDef/gridStringOperators.js +16 -1
  414. package/node/components/GridFooter.js +10 -1
  415. package/node/components/GridRow.js +9 -6
  416. package/node/components/GridRowCount.js +1 -0
  417. package/node/components/GridScrollArea.js +3 -5
  418. package/node/components/GridSelectedRowCount.js +2 -1
  419. package/node/components/base/GridBody.js +1 -3
  420. package/node/components/base/GridOverlays.js +2 -4
  421. package/node/components/cell/GridActionsCell.js +13 -4
  422. package/node/components/cell/GridCell.js +7 -7
  423. package/node/components/cell/GridEditBooleanCell.js +100 -5
  424. package/node/components/cell/GridEditDateCell.js +98 -4
  425. package/node/components/cell/GridEditInputCell.js +29 -5
  426. package/node/components/cell/GridEditSingleSelectCell.js +28 -6
  427. package/node/components/cell/index.js +26 -0
  428. package/node/components/columnHeaders/GridColumnHeaderItem.js +15 -17
  429. package/node/components/columnSelection/GridCellCheckboxRenderer.js +2 -4
  430. package/node/components/columnSelection/GridHeaderCheckbox.js +4 -6
  431. package/node/components/containers/GridFooterContainer.js +10 -1
  432. package/node/components/containers/GridRoot.js +24 -3
  433. package/node/components/containers/GridRootStyles.js +36 -1
  434. package/node/components/containers/GridToolbarContainer.js +11 -1
  435. package/node/components/menu/GridMenu.js +1 -0
  436. package/node/components/panel/GridPanelContent.js +11 -1
  437. package/node/components/panel/GridPanelFooter.js +11 -1
  438. package/node/components/panel/GridPanelHeader.js +11 -1
  439. package/node/components/toolbar/GridToolbar.js +32 -7
  440. package/node/components/toolbar/GridToolbarExport.js +14 -19
  441. package/node/components/toolbar/GridToolbarQuickFilter.js +109 -0
  442. package/node/components/toolbar/index.js +42 -11
  443. package/node/constants/defaultGridSlotsComponents.js +3 -1
  444. package/node/constants/gridClasses.js +1 -1
  445. package/node/constants/localeTextConstants.js +8 -1
  446. package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -8
  447. package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -8
  448. package/node/hooks/core/useGridApiInitialization.js +3 -4
  449. package/node/hooks/core/useGridErrorHandler.js +1 -3
  450. package/node/hooks/core/useGridStateInitialization.js +1 -3
  451. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -7
  452. package/node/hooks/features/columnMenu/useGridColumnMenu.js +3 -4
  453. package/node/hooks/features/columns/useGridColumnSpanning.js +1 -3
  454. package/node/hooks/features/columns/useGridColumns.js +8 -10
  455. package/node/hooks/features/dimensions/useGridDimensions.js +8 -10
  456. package/node/hooks/features/editRows/useGridCellEditing.new.js +133 -32
  457. package/node/hooks/features/editRows/useGridCellEditing.old.js +20 -22
  458. package/node/hooks/features/editRows/useGridEditing.old.js +4 -6
  459. package/node/hooks/features/editRows/useGridRowEditing.new.js +122 -43
  460. package/node/hooks/features/editRows/useGridRowEditing.old.js +21 -23
  461. package/node/hooks/features/events/useGridEvents.js +17 -19
  462. package/node/hooks/features/export/serializers/csvSerializer.js +5 -5
  463. package/node/hooks/features/export/useGridCsvExport.js +26 -17
  464. package/node/hooks/features/export/useGridPrintExport.js +25 -0
  465. package/node/hooks/features/export/utils.js +19 -2
  466. package/node/hooks/features/filter/gridFilterState.js +3 -1
  467. package/node/hooks/features/filter/gridFilterUtils.js +92 -3
  468. package/node/hooks/features/filter/useGridFilter.js +21 -9
  469. package/node/hooks/features/focus/useGridFocus.js +29 -34
  470. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -6
  471. package/node/hooks/features/pagination/useGridPage.js +3 -5
  472. package/node/hooks/features/pagination/useGridPageSize.js +2 -4
  473. package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -8
  474. package/node/hooks/features/rows/gridRowsSelector.js +3 -1
  475. package/node/hooks/features/rows/gridRowsUtils.js +95 -1
  476. package/node/hooks/features/rows/useGridRows.js +150 -126
  477. package/node/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  478. package/node/hooks/features/scroll/useGridScroll.js +6 -1
  479. package/node/hooks/features/selection/useGridSelection.js +13 -11
  480. package/node/hooks/features/sorting/useGridSorting.js +8 -10
  481. package/node/hooks/features/virtualization/useGridVirtualScroller.js +14 -6
  482. package/node/hooks/utils/useGridApiEventHandler.js +22 -10
  483. package/node/hooks/utils/useGridNativeEventListener.js +1 -3
  484. package/node/hooks/utils/useGridSelector.js +1 -1
  485. package/node/index.js +1 -1
  486. package/node/internals/index.js +39 -3
  487. package/node/locales/arSD.js +8 -1
  488. package/node/locales/bgBG.js +8 -1
  489. package/node/locales/csCZ.js +7 -0
  490. package/node/locales/daDK.js +8 -1
  491. package/node/locales/deDE.js +10 -3
  492. package/node/locales/elGR.js +7 -0
  493. package/node/locales/esES.js +7 -0
  494. package/node/locales/faIR.js +8 -1
  495. package/node/locales/fiFI.js +7 -0
  496. package/node/locales/frFR.js +7 -0
  497. package/node/locales/heIL.js +8 -1
  498. package/node/locales/huHU.js +8 -1
  499. package/node/locales/itIT.js +7 -0
  500. package/node/locales/jaJP.js +7 -0
  501. package/node/locales/koKR.js +7 -0
  502. package/node/locales/nlNL.js +7 -0
  503. package/node/locales/plPL.js +8 -1
  504. package/node/locales/ptBR.js +8 -1
  505. package/node/locales/ruRU.js +7 -0
  506. package/node/locales/skSK.js +7 -0
  507. package/node/locales/trTR.js +8 -1
  508. package/node/locales/ukUA.js +7 -0
  509. package/node/locales/viVN.js +7 -0
  510. package/node/locales/zhCN.js +7 -0
  511. package/node/models/events/gridEvents.js +8 -0
  512. package/node/models/index.js +0 -13
  513. package/node/utils/createSelector.js +25 -4
  514. package/node/utils/exportAs.js +1 -1
  515. package/package.json +3 -2
  516. package/utils/createSelector.d.ts +2 -1
  517. package/utils/createSelector.js +20 -2
  518. package/utils/exportAs.d.ts +2 -2
  519. package/utils/exportAs.js +1 -1
@@ -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,7 +43,7 @@ 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
48
  var updateFilteredRows = React.useCallback(function () {
49
49
  apiRef.current.setState(function (state) {
@@ -56,7 +56,7 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
56
56
  filter: _extends({}, state.filter, filteringResult)
57
57
  });
58
58
  });
59
- apiRef.current.publishEvent(GridEvents.filteredRowsSet);
59
+ apiRef.current.publishEvent('filteredRowsSet');
60
60
  }, [props.filterMode, apiRef]);
61
61
  /**
62
62
  * API METHODS
@@ -146,6 +146,17 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
146
146
  linkOperator: linkOperator
147
147
  }));
148
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]);
149
160
  var setFilterModel = React.useCallback(function (model) {
150
161
  var currentModel = gridFilterModelSelector(apiRef);
151
162
 
@@ -169,7 +180,8 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
169
180
  setFilterModel: setFilterModel,
170
181
  showFilterPanel: showFilterPanel,
171
182
  hideFilterPanel: hideFilterPanel,
172
- getVisibleRowModels: getVisibleRowModels
183
+ getVisibleRowModels: getVisibleRowModels,
184
+ setQuickFilterValues: setQuickFilterValues
173
185
  };
174
186
  useGridApiMethod(apiRef, filterApi, 'GridFilterApi');
175
187
  /**
@@ -266,10 +278,10 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
266
278
  }, [apiRef]); // Do not call `apiRef.current.forceUpdate` to avoid re-render before updating the sorted rows.
267
279
  // Otherwise, the state is not consistent during the render
268
280
 
269
- useGridApiEventHandler(apiRef, GridEvents.rowsSet, updateFilteredRows);
270
- useGridApiEventHandler(apiRef, GridEvents.rowExpansionChange, apiRef.current.unstable_applyFilters);
271
- useGridApiEventHandler(apiRef, GridEvents.columnsChange, handleColumnsChange);
272
- useGridApiEventHandler(apiRef, GridEvents.activeStrategyProcessorChange, handleStrategyProcessorChange);
281
+ useGridApiEventHandler(apiRef, 'rowsSet', updateFilteredRows);
282
+ useGridApiEventHandler(apiRef, 'rowExpansionChange', apiRef.current.unstable_applyFilters);
283
+ useGridApiEventHandler(apiRef, 'columnsChange', handleColumnsChange);
284
+ useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
273
285
  /**
274
286
  * 1ST RENDER
275
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) {
@@ -200,7 +199,7 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
200
199
  // Publishes an event to notify that the focus was lost
201
200
 
202
201
 
203
- 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);
204
203
 
205
204
  if (cellParams) {
206
205
  apiRef.current.setCellFocus(cellParams.id, cellParams.field);
@@ -227,29 +226,25 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
227
226
  apiRef.current.setCellFocus(params.id, params.field);
228
227
  }
229
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]);
230
243
  useGridApiMethod(apiRef, {
231
244
  setCellFocus: setCellFocus,
232
245
  setColumnHeaderFocus: setColumnHeaderFocus,
233
246
  unstable_moveFocusToRelativeCell: moveFocusToRelativeCell
234
247
  }, 'GridFocusApi');
235
- React.useEffect(function () {
236
- var cell = gridFocusCellSelector(apiRef);
237
-
238
- if (cell) {
239
- var updatedRow = apiRef.current.getRow(cell.id);
240
-
241
- if (!updatedRow) {
242
- apiRef.current.setState(function (state) {
243
- return _extends({}, state, {
244
- focus: {
245
- cell: null,
246
- columnHeader: null
247
- }
248
- });
249
- });
250
- }
251
- }
252
- }, [apiRef, props.rows]);
253
248
  React.useEffect(function () {
254
249
  var doc = ownerDocument(apiRef.current.rootElementRef.current);
255
250
  doc.addEventListener('click', handleDocumentClick);
@@ -257,10 +252,11 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
257
252
  doc.removeEventListener('click', handleDocumentClick);
258
253
  };
259
254
  }, [apiRef, handleDocumentClick]);
260
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderBlur, handleBlur);
261
- useGridApiEventHandler(apiRef, GridEvents.cellDoubleClick, handleCellDoubleClick);
262
- useGridApiEventHandler(apiRef, GridEvents.cellMouseUp, handleCellMouseUp);
263
- useGridApiEventHandler(apiRef, GridEvents.cellKeyDown, handleCellKeyDown);
264
- useGridApiEventHandler(apiRef, GridEvents.cellModeChange, handleCellModeChange);
265
- 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);
266
262
  };
@@ -1,5 +1,4 @@
1
1
  import * as React from 'react';
2
- import { GridEvents } from '../../../models/events';
3
2
  import { gridVisibleColumnDefinitionsSelector } from '../columns/gridColumnsSelector';
4
3
  import { useGridLogger } from '../../utils/useGridLogger';
5
4
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
@@ -319,10 +318,10 @@ export var useGridKeyboardNavigation = function useGridKeyboardNavigation(apiRef
319
318
  var cellParams = apiRef.current.getCellParams(params.id, params.field);
320
319
 
321
320
  if (cellParams.cellMode !== GridCellModes.Edit && isNavigationKey(event.key)) {
322
- apiRef.current.publishEvent(GridEvents.cellNavigationKeyDown, cellParams, event);
321
+ apiRef.current.publishEvent('cellNavigationKeyDown', cellParams, event);
323
322
  }
324
323
  }, [apiRef]);
325
- useGridApiEventHandler(apiRef, GridEvents.cellNavigationKeyDown, handleCellNavigationKeyDown);
326
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderKeyDown, handleColumnHeaderKeyDown);
327
- useGridApiEventHandler(apiRef, GridEvents.cellKeyDown, handleCellKeyDown);
324
+ useGridApiEventHandler(apiRef, 'cellNavigationKeyDown', handleCellNavigationKeyDown);
325
+ useGridApiEventHandler(apiRef, 'columnHeaderKeyDown', handleColumnHeaderKeyDown);
326
+ useGridApiEventHandler(apiRef, 'cellKeyDown', handleCellKeyDown);
328
327
  };
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { useGridLogger, useGridSelector, useGridApiMethod, useGridApiEventHandler } from '../../utils';
4
- import { GridEvents } from '../../../models/events';
5
4
  import { gridVisibleTopLevelRowCountSelector } from '../filter';
6
5
  import { gridPageSelector, gridPageSizeSelector } from './gridPaginationSelector';
7
6
  import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
@@ -49,7 +48,7 @@ export var useGridPage = function useGridPage(apiRef, props) {
49
48
  propModel: props.page,
50
49
  propOnChange: props.onPageChange,
51
50
  stateSelector: gridPageSelector,
52
- changeEvent: GridEvents.pageChange
51
+ changeEvent: 'pageChange'
53
52
  });
54
53
  /**
55
54
  * API METHODS
@@ -120,8 +119,8 @@ export var useGridPage = function useGridPage(apiRef, props) {
120
119
  });
121
120
  };
122
121
 
123
- useGridApiEventHandler(apiRef, GridEvents.pageSizeChange, handlePageSizeChange);
124
- useGridApiEventHandler(apiRef, GridEvents.pageChange, handlePageChange);
122
+ useGridApiEventHandler(apiRef, 'pageSizeChange', handlePageSizeChange);
123
+ useGridApiEventHandler(apiRef, 'pageChange', handlePageChange);
125
124
  /**
126
125
  * EFFECTS
127
126
  */
@@ -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 { useGridLogger, useGridApiMethod, useGridApiEventHandler, useGridSelector } from '../../utils';
5
4
  import { gridPageSizeSelector } from './gridPaginationSelector';
6
5
  import { gridDensityRowHeightSelector } from '../density';
@@ -33,7 +32,7 @@ export var useGridPageSize = function useGridPageSize(apiRef, props) {
33
32
  propModel: props.pageSize,
34
33
  propOnChange: props.onPageSizeChange,
35
34
  stateSelector: gridPageSizeSelector,
36
- changeEvent: GridEvents.pageSizeChange
35
+ changeEvent: 'pageSizeChange'
37
36
  });
38
37
  /**
39
38
  * API METHODS
@@ -106,7 +105,7 @@ export var useGridPageSize = function useGridPageSize(apiRef, props) {
106
105
  var maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
107
106
  apiRef.current.setPageSize(maximumPageSizeWithoutScrollBar);
108
107
  }, [apiRef, props.autoPageSize, rowHeight]);
109
- useGridApiEventHandler(apiRef, GridEvents.viewportInnerSizeChange, handleUpdateAutoPageSize);
108
+ useGridApiEventHandler(apiRef, 'viewportInnerSizeChange', handleUpdateAutoPageSize);
110
109
  /**
111
110
  * EFFECTS
112
111
  */
@@ -1,11 +1,9 @@
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 { useGridApiMethod } from '../../utils/useGridApiMethod';
5
4
  import { useGridLogger } from '../../utils/useGridLogger';
6
5
  import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
7
6
  import { gridPreferencePanelStateSelector } from './gridPreferencePanelSelector';
8
- import { useGridSelector } from '../../utils/useGridSelector';
9
7
  export var preferencePanelStateInitializer = function preferencePanelStateInitializer(state, props) {
10
8
  var _props$initialState$p, _props$initialState;
11
9
 
@@ -21,7 +19,6 @@ export var preferencePanelStateInitializer = function preferencePanelStateInitia
21
19
 
22
20
  export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
23
21
  var logger = useGridLogger(apiRef, 'useGridPreferencesPanel');
24
- var preferencePanelState = useGridSelector(apiRef, gridPreferencePanelStateSelector);
25
22
  var hideTimeout = React.useRef();
26
23
  var immediateTimeout = React.useRef();
27
24
  /**
@@ -30,9 +27,10 @@ export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
30
27
 
31
28
  var hidePreferences = React.useCallback(function () {
32
29
  logger.debug('Hiding Preferences Panel');
30
+ var preferencePanelState = gridPreferencePanelStateSelector(apiRef.current.state);
33
31
 
34
32
  if (preferencePanelState.openedPanelValue) {
35
- apiRef.current.publishEvent(GridEvents.preferencePanelClose, {
33
+ apiRef.current.publishEvent('preferencePanelClose', {
36
34
  openedPanelValue: preferencePanelState.openedPanelValue
37
35
  });
38
36
  }
@@ -45,7 +43,7 @@ export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
45
43
  });
46
44
  });
47
45
  apiRef.current.forceUpdate();
48
- }, [apiRef, logger, preferencePanelState.openedPanelValue]); // This is to prevent the preferences from closing when you open a select box or another panel,
46
+ }, [apiRef, logger]); // This is to prevent the preferences from closing when you open a select box or another panel,
49
47
  // The issue is in MUI core V4 => Fixed in V5
50
48
 
51
49
  var doNotHidePanel = React.useCallback(function () {
@@ -69,7 +67,7 @@ export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
69
67
  })
70
68
  });
71
69
  });
72
- apiRef.current.publishEvent(GridEvents.preferencePanelOpen, {
70
+ apiRef.current.publishEvent('preferencePanelOpen', {
73
71
  openedPanelValue: newValue
74
72
  });
75
73
  apiRef.current.forceUpdate();
@@ -14,6 +14,9 @@ export var gridTopLevelRowCountSelector = createSelector(gridRowsStateSelector,
14
14
  export var gridRowsLookupSelector = createSelector(gridRowsStateSelector, function (rows) {
15
15
  return rows.idRowsLookup;
16
16
  });
17
+ export var gridRowsIdToIdLookupSelector = createSelector(gridRowsStateSelector, function (rows) {
18
+ return rows.idToIdLookup;
19
+ });
17
20
  export var gridRowTreeSelector = createSelector(gridRowsStateSelector, function (rows) {
18
21
  return rows.tree;
19
22
  });
@@ -1,3 +1,8 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
+ var _excluded = ["rowsBeforePartialUpdates"];
5
+
1
6
  /**
2
7
  * A helper function to check if the id provided is valid.
3
8
  * @param {GridRowId} id Id as [[GridRowId]].
@@ -10,4 +15,80 @@ export function checkGridRowIdIsValid(id, row) {
10
15
  if (id == null) {
11
16
  throw new Error(['MUI: The data grid component requires all rows to have a unique `id` property.', 'Alternatively, you can use the `getRowId` prop to specify a custom id for each row.', detailErrorMessage, JSON.stringify(row)].join('\n'));
12
17
  }
13
- }
18
+ }
19
+ export var getRowIdFromRowModel = function getRowIdFromRowModel(rowModel, getRowId, detailErrorMessage) {
20
+ var id = getRowId ? getRowId(rowModel) : rowModel.id;
21
+ checkGridRowIdIsValid(id, rowModel, detailErrorMessage);
22
+ return id;
23
+ };
24
+ export var createRowsInternalCache = function createRowsInternalCache(_ref) {
25
+ var rows = _ref.rows,
26
+ getRowId = _ref.getRowId,
27
+ loading = _ref.loading;
28
+ var cache = {
29
+ rowsBeforePartialUpdates: rows,
30
+ loadingPropBeforePartialUpdates: loading,
31
+ idRowsLookup: {},
32
+ idToIdLookup: {},
33
+ ids: []
34
+ };
35
+
36
+ for (var i = 0; i < rows.length; i += 1) {
37
+ var row = rows[i];
38
+ var id = getRowIdFromRowModel(row, getRowId);
39
+ cache.idRowsLookup[id] = row;
40
+ cache.idToIdLookup[id] = id;
41
+ cache.ids.push(id);
42
+ }
43
+
44
+ return cache;
45
+ };
46
+ export var getRowsStateFromCache = function getRowsStateFromCache(_ref2) {
47
+ var apiRef = _ref2.apiRef,
48
+ previousTree = _ref2.previousTree,
49
+ rowCountProp = _ref2.rowCountProp,
50
+ loadingProp = _ref2.loadingProp;
51
+
52
+ var _apiRef$current$unsta = apiRef.current.unstable_caches.rows,
53
+ rowsBeforePartialUpdates = _apiRef$current$unsta.rowsBeforePartialUpdates,
54
+ cacheForGrouping = _objectWithoutProperties(_apiRef$current$unsta, _excluded);
55
+
56
+ var rowCount = rowCountProp != null ? rowCountProp : 0;
57
+ var groupingResponse = apiRef.current.unstable_applyStrategyProcessor('rowTreeCreation', _extends({}, cacheForGrouping, {
58
+ previousTree: previousTree
59
+ }));
60
+ var processedGroupingResponse = apiRef.current.unstable_applyPipeProcessors('hydrateRows', groupingResponse);
61
+ var dataTopLevelRowCount = processedGroupingResponse.treeDepth === 1 ? processedGroupingResponse.ids.length : Object.values(processedGroupingResponse.tree).filter(function (node) {
62
+ return node.parent == null;
63
+ }).length;
64
+ return _extends({}, processedGroupingResponse, {
65
+ groupingResponseBeforeRowHydration: groupingResponse,
66
+ loading: loadingProp,
67
+ totalRowCount: Math.max(rowCount, processedGroupingResponse.ids.length),
68
+ totalTopLevelRowCount: Math.max(rowCount, dataTopLevelRowCount)
69
+ });
70
+ };
71
+ export var getTreeNodeDescendants = function getTreeNodeDescendants(tree, parentId, skipAutoGeneratedRows) {
72
+ var _tree$parentId;
73
+
74
+ var children = (_tree$parentId = tree[parentId]) == null ? void 0 : _tree$parentId.children;
75
+
76
+ if (children == null) {
77
+ return [];
78
+ }
79
+
80
+ var validDescendants = [];
81
+
82
+ for (var i = 0; i < children.length; i += 1) {
83
+ var child = children[i];
84
+ var childNode = tree[child];
85
+
86
+ if (!skipAutoGeneratedRows || !childNode.isAutoGenerated) {
87
+ validDescendants.push(child);
88
+ }
89
+
90
+ validDescendants.push.apply(validDescendants, _toConsumableArray(getTreeNodeDescendants(tree, childNode.id, skipAutoGeneratedRows)));
91
+ }
92
+
93
+ return validDescendants;
94
+ };