@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,5 @@
1
1
  import { gridColumnDefinitionsSelector, gridVisibleColumnDefinitionsSelector } from '../columns';
2
+ import { gridFilteredSortedRowIdsSelector } from '../filter';
2
3
  export const getColumnsToExport = ({
3
4
  apiRef,
4
5
  options
@@ -11,4 +12,16 @@ export const getColumnsToExport = ({
11
12
 
12
13
  const validColumns = options.allColumns ? columns : gridVisibleColumnDefinitionsSelector(apiRef);
13
14
  return validColumns.filter(column => !column.disableExport);
15
+ };
16
+ export const defaultGetRowsToExport = ({
17
+ apiRef
18
+ }) => {
19
+ const filteredSortedRowIds = gridFilteredSortedRowIdsSelector(apiRef);
20
+ const selectedRows = apiRef.current.getSelectedRows();
21
+
22
+ if (selectedRows.size > 0) {
23
+ return filteredSortedRowIds.filter(id => selectedRows.has(id));
24
+ }
25
+
26
+ return filteredSortedRowIds;
14
27
  };
@@ -1,4 +1,3 @@
1
- import { GridFilterItem } from '../../../models/gridFilterItem';
2
1
  import { GridFilterModel } from '../../../models/gridFilterModel';
3
2
  import { GridRowId } from '../../../models/gridRows';
4
3
  export declare const getDefaultGridFilterModel: () => GridFilterModel;
@@ -32,7 +31,7 @@ export interface GridFilterInitialState {
32
31
  * @param {GridRowId} rowId The id of the row we want to filter.
33
32
  * @param {(filterItem: GridFilterItem) => boolean} shouldApplyItem An optional callback to allow the filtering engine to only apply some items.
34
33
  */
35
- export declare type GridAggregatedFilterItemApplier = (rowId: GridRowId, shouldApplyItem?: (filterItem: GridFilterItem) => boolean) => boolean;
34
+ export declare type GridAggregatedFilterItemApplier = (rowId: GridRowId, shouldApplyItem?: (columnField: string) => boolean) => boolean;
36
35
  export interface GridFilteringMethodParams {
37
36
  isRowMatchingFilters: GridAggregatedFilterItemApplier | null;
38
37
  }
@@ -1,5 +1,7 @@
1
1
  import { GridLinkOperator } from '../../../models/gridFilterItem';
2
2
  export const getDefaultGridFilterModel = () => ({
3
3
  items: [],
4
- linkOperator: GridLinkOperator.And
4
+ linkOperator: GridLinkOperator.And,
5
+ quickFilterValues: [],
6
+ quickFilterLogicOperator: GridLinkOperator.And
5
7
  });
@@ -11,4 +11,12 @@ export declare const mergeStateWithFilterModel: (filterModel: GridFilterModel, d
11
11
  * @param {React.MutableRefObject<GridApiCommunity>} apiRef The API of the grid.
12
12
  * @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.
13
13
  */
14
+ export declare const buildAggregatedFilterItemsApplier: (filterModel: GridFilterModel, apiRef: React.MutableRefObject<GridApiCommunity>) => GridAggregatedFilterItemApplier | null;
15
+ /**
16
+ * Generates a method to easily check if a row is matching the current quick filter.
17
+ * @param {any[]} values The model with which we want to filter the rows.
18
+ * @param {React.MutableRefObject<GridApiCommunity>} apiRef The API of the grid.
19
+ * @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.
20
+ */
21
+ export declare const buildAggregatedQuickFilterApplier: (filterModel: GridFilterModel, apiRef: React.MutableRefObject<GridApiCommunity>) => GridAggregatedFilterItemApplier | null;
14
22
  export declare const buildAggregatedFilterApplier: (filterModel: GridFilterModel, apiRef: React.MutableRefObject<GridApiCommunity>) => GridAggregatedFilterItemApplier | null;
@@ -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.
@@ -76,7 +77,7 @@ export const mergeStateWithFilterModel = (filterModel, disableMultipleColumnsFil
76
77
  * @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.
77
78
  */
78
79
 
79
- export const buildAggregatedFilterApplier = (filterModel, apiRef) => {
80
+ export const buildAggregatedFilterItemsApplier = (filterModel, apiRef) => {
80
81
  const {
81
82
  items,
82
83
  linkOperator = GridLinkOperator.And
@@ -144,7 +145,7 @@ export const buildAggregatedFilterApplier = (filterModel, apiRef) => {
144
145
  }
145
146
 
146
147
  return (rowId, shouldApplyFilter) => {
147
- const filteredAppliers = shouldApplyFilter ? appliers.filter(applier => shouldApplyFilter(applier.item)) : appliers; // Return `false` as soon as we have a failing filter
148
+ const filteredAppliers = shouldApplyFilter ? appliers.filter(applier => shouldApplyFilter(applier.item.columnField)) : appliers; // Return `false` as soon as we have a failing filter
148
149
 
149
150
  if (linkOperator === GridLinkOperator.And) {
150
151
  return filteredAppliers.every(applier => applier.fn(rowId));
@@ -153,4 +154,85 @@ export const buildAggregatedFilterApplier = (filterModel, apiRef) => {
153
154
 
154
155
  return filteredAppliers.some(applier => applier.fn(rowId));
155
156
  };
157
+ };
158
+ /**
159
+ * Generates a method to easily check if a row is matching the current quick filter.
160
+ * @param {any[]} values The model with which we want to filter the rows.
161
+ * @param {React.MutableRefObject<GridApiCommunity>} apiRef The API of the grid.
162
+ * @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.
163
+ */
164
+
165
+ export const buildAggregatedQuickFilterApplier = (filterModel, apiRef) => {
166
+ const {
167
+ quickFilterValues = [],
168
+ quickFilterLogicOperator = GridLinkOperator.And
169
+ } = filterModel;
170
+
171
+ if (quickFilterValues.length === 0) {
172
+ return null;
173
+ }
174
+
175
+ const columnsFields = gridColumnFieldsSelector(apiRef);
176
+ const appliersPerColumnField = {};
177
+ columnsFields.forEach(field => {
178
+ const column = apiRef.current.getColumn(field);
179
+ const getApplyQuickFilterFn = column == null ? void 0 : column.getApplyQuickFilterFn;
180
+
181
+ if (!getApplyQuickFilterFn) {
182
+ return;
183
+ }
184
+
185
+ appliersPerColumnField[field] = quickFilterValues.map(value => getApplyQuickFilterFn(value, column, apiRef));
186
+ }); // If some value does not have an applier we ignore them
187
+
188
+ const sanitizedQuickFilterValues = quickFilterValues.filter((value, index) => Object.keys(appliersPerColumnField).some(field => appliersPerColumnField[field][index] != null));
189
+ return (rowId, shouldApplyFilter) => {
190
+ const usedCellParams = {};
191
+ Object.keys(appliersPerColumnField).forEach(columnField => {
192
+ if (!shouldApplyFilter || shouldApplyFilter(columnField)) {
193
+ usedCellParams[columnField] = apiRef.current.getCellParams(rowId, columnField);
194
+ }
195
+ }); // Return `false` as soon as we have a quick filter value that does not match any column
196
+
197
+ if (quickFilterLogicOperator === GridLinkOperator.And) {
198
+ return sanitizedQuickFilterValues.every((value, index) => Object.keys(appliersPerColumnField).some(field => {
199
+ var _appliersPerColumnFie, _appliersPerColumnFie2;
200
+
201
+ if (appliersPerColumnField[field][index] == null) {
202
+ return false;
203
+ }
204
+
205
+ return (_appliersPerColumnFie = (_appliersPerColumnFie2 = appliersPerColumnField[field])[index]) == null ? void 0 : _appliersPerColumnFie.call(_appliersPerColumnFie2, usedCellParams[field]);
206
+ }));
207
+ } // Return `true` as soon as we have have a quick filter value that match any column
208
+
209
+
210
+ return sanitizedQuickFilterValues.some((value, index) => Object.keys(appliersPerColumnField).some(field => {
211
+ var _appliersPerColumnFie3, _appliersPerColumnFie4;
212
+
213
+ if (appliersPerColumnField[field][index] == null) {
214
+ return false;
215
+ }
216
+
217
+ return (_appliersPerColumnFie3 = (_appliersPerColumnFie4 = appliersPerColumnField[field])[index]) == null ? void 0 : _appliersPerColumnFie3.call(_appliersPerColumnFie4, usedCellParams[field]);
218
+ }));
219
+ };
220
+ };
221
+ export const buildAggregatedFilterApplier = (filterModel, apiRef) => {
222
+ const isRowMatchingFilterItems = buildAggregatedFilterItemsApplier(filterModel, apiRef);
223
+ const isRowMatchingQuickFilter = buildAggregatedQuickFilterApplier(filterModel, apiRef);
224
+
225
+ if (isRowMatchingFilterItems == null && isRowMatchingQuickFilter == null) {
226
+ return null;
227
+ }
228
+
229
+ if (isRowMatchingFilterItems == null) {
230
+ return isRowMatchingQuickFilter;
231
+ }
232
+
233
+ if (isRowMatchingQuickFilter == null) {
234
+ return isRowMatchingFilterItems;
235
+ }
236
+
237
+ return (rowId, shouldApplyFilter) => isRowMatchingFilterItems(rowId, shouldApplyFilter) && isRowMatchingQuickFilter(rowId, shouldApplyFilter);
156
238
  };
@@ -1,6 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
- import { GridEvents } from '../../../models/events';
4
3
  import { GridFeatureModeConstant } from '../../../models/gridFeatureMode';
5
4
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
6
5
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
@@ -14,6 +13,7 @@ import { gridRowIdsSelector } from '../rows';
14
13
  import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
15
14
  import { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from '../../core/strategyProcessing';
16
15
  import { buildAggregatedFilterApplier, sanitizeFilterModel, mergeStateWithFilterModel } from './gridFilterUtils';
16
+ import { isDeepEqual } from '../../../utils/utils';
17
17
  import { jsx as _jsx } from "react/jsx-runtime";
18
18
  export const filterStateInitializer = (state, props, apiRef) => {
19
19
  var _ref, _props$filterModel, _props$initialState, _props$initialState$f;
@@ -42,13 +42,9 @@ export const useGridFilter = (apiRef, props) => {
42
42
  propModel: props.filterModel,
43
43
  propOnChange: props.onFilterModelChange,
44
44
  stateSelector: gridFilterModelSelector,
45
- changeEvent: GridEvents.filterModelChange
45
+ changeEvent: 'filterModelChange'
46
46
  });
47
- /**
48
- * API METHODS
49
- */
50
-
51
- const applyFilters = React.useCallback(() => {
47
+ const updateFilteredRows = React.useCallback(() => {
52
48
  apiRef.current.setState(state => {
53
49
  const filterModel = gridFilterModelSelector(state, apiRef.current.instanceId);
54
50
  const isRowMatchingFilters = props.filterMode === GridFeatureModeConstant.client ? buildAggregatedFilterApplier(filterModel, apiRef) : null;
@@ -59,9 +55,16 @@ export const useGridFilter = (apiRef, props) => {
59
55
  filter: _extends({}, state.filter, filteringResult)
60
56
  });
61
57
  });
62
- apiRef.current.publishEvent(GridEvents.visibleRowsSet);
58
+ apiRef.current.publishEvent('filteredRowsSet');
59
+ }, [props.filterMode, apiRef]);
60
+ /**
61
+ * API METHODS
62
+ */
63
+
64
+ const applyFilters = React.useCallback(() => {
65
+ updateFilteredRows();
63
66
  apiRef.current.forceUpdate();
64
- }, [apiRef, props.filterMode]);
67
+ }, [apiRef, updateFilteredRows]);
65
68
  const upsertFilterItem = React.useCallback(item => {
66
69
  const filterModel = gridFilterModelSelector(apiRef);
67
70
  const items = [...filterModel.items];
@@ -132,6 +135,17 @@ export const useGridFilter = (apiRef, props) => {
132
135
  linkOperator
133
136
  }));
134
137
  }, [apiRef]);
138
+ const setQuickFilterValues = React.useCallback(values => {
139
+ const filterModel = gridFilterModelSelector(apiRef);
140
+
141
+ if (isDeepEqual(filterModel.quickFilterValues, values)) {
142
+ return;
143
+ }
144
+
145
+ apiRef.current.setFilterModel(_extends({}, filterModel, {
146
+ quickFilterValues: [...values]
147
+ }));
148
+ }, [apiRef]);
135
149
  const setFilterModel = React.useCallback(model => {
136
150
  const currentModel = gridFilterModelSelector(apiRef);
137
151
 
@@ -153,7 +167,8 @@ export const useGridFilter = (apiRef, props) => {
153
167
  setFilterModel,
154
168
  showFilterPanel,
155
169
  hideFilterPanel,
156
- getVisibleRowModels
170
+ getVisibleRowModels,
171
+ setQuickFilterValues
157
172
  };
158
173
  useGridApiMethod(apiRef, filterApi, 'GridFilterApi');
159
174
  /**
@@ -245,11 +260,13 @@ export const useGridFilter = (apiRef, props) => {
245
260
  if (methodName === 'filtering') {
246
261
  apiRef.current.unstable_applyFilters();
247
262
  }
248
- }, [apiRef]);
249
- useGridApiEventHandler(apiRef, GridEvents.rowsSet, apiRef.current.unstable_applyFilters);
250
- useGridApiEventHandler(apiRef, GridEvents.rowExpansionChange, apiRef.current.unstable_applyFilters);
251
- useGridApiEventHandler(apiRef, GridEvents.columnsChange, handleColumnsChange);
252
- useGridApiEventHandler(apiRef, GridEvents.activeStrategyProcessorChange, handleStrategyProcessorChange);
263
+ }, [apiRef]); // Do not call `apiRef.current.forceUpdate` to avoid re-render before updating the sorted rows.
264
+ // Otherwise, the state is not consistent during the render
265
+
266
+ useGridApiEventHandler(apiRef, 'rowsSet', updateFilteredRows);
267
+ useGridApiEventHandler(apiRef, 'rowExpansionChange', apiRef.current.unstable_applyFilters);
268
+ useGridApiEventHandler(apiRef, 'columnsChange', handleColumnsChange);
269
+ useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
253
270
  /**
254
271
  * 1ST RENDER
255
272
  */
@@ -8,4 +8,4 @@ export declare const focusStateInitializer: GridStateInitializer;
8
8
  * @requires useGridRows (method)
9
9
  * @requires useGridEditing (event)
10
10
  */
11
- export declare const useGridFocus: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'rows' | 'pagination' | 'paginationMode'>) => void;
11
+ export declare const useGridFocus: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'pagination' | 'paginationMode'>) => void;
@@ -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';
@@ -30,14 +29,9 @@ export const useGridFocus = (apiRef, props) => {
30
29
  const logger = useGridLogger(apiRef, 'useGridFocus');
31
30
  const lastClickedCell = React.useRef(null);
32
31
  const setCellFocus = React.useCallback((id, field) => {
33
- // The row might have been deleted
34
- if (!apiRef.current.getRow(id)) {
35
- return;
36
- }
37
-
38
32
  const focusedCell = gridFocusCellSelector(apiRef);
39
33
 
40
- if ((focusedCell == null ? void 0 : focusedCell.id) === id && focusedCell.field === field) {
34
+ if ((focusedCell == null ? void 0 : focusedCell.id) === id && (focusedCell == null ? void 0 : focusedCell.field) === field) {
41
35
  return;
42
36
  }
43
37
 
@@ -60,14 +54,19 @@ export const useGridFocus = (apiRef, props) => {
60
54
  }
61
55
  });
62
56
  });
63
- apiRef.current.forceUpdate();
64
- apiRef.current.publishEvent(GridEvents.cellFocusIn, apiRef.current.getCellParams(id, field));
57
+ apiRef.current.forceUpdate(); // The row might have been deleted
58
+
59
+ if (!apiRef.current.getRow(id)) {
60
+ return;
61
+ }
62
+
63
+ apiRef.current.publishEvent('cellFocusIn', apiRef.current.getCellParams(id, field));
65
64
  }, [apiRef, logger]);
66
65
  const setColumnHeaderFocus = React.useCallback((field, event = {}) => {
67
66
  const cell = gridFocusCellSelector(apiRef);
68
67
 
69
68
  if (cell) {
70
- apiRef.current.publishEvent(GridEvents.cellFocusOut, apiRef.current.getCellParams(cell.id, cell.field), event);
69
+ apiRef.current.publishEvent('cellFocusOut', apiRef.current.getCellParams(cell.id, cell.field), event);
71
70
  }
72
71
 
73
72
  apiRef.current.setState(state => {
@@ -102,21 +101,31 @@ export const useGridFocus = (apiRef, props) => {
102
101
  rowIndexToFocus += 1;
103
102
  }
104
103
 
104
+ const currentPage = getVisibleRows(apiRef, {
105
+ pagination: props.pagination,
106
+ paginationMode: props.paginationMode
107
+ });
108
+
105
109
  if (columnIndexToFocus >= visibleColumns.length) {
106
- // Go to next row if we are at the last column
110
+ // Go to next row if we are after the last column
107
111
  rowIndexToFocus += 1;
108
- columnIndexToFocus = 0;
112
+
113
+ if (rowIndexToFocus < currentPage.rows.length) {
114
+ // Go to first column of the next row if there's one more row
115
+ columnIndexToFocus = 0;
116
+ }
109
117
  } else if (columnIndexToFocus < 0) {
110
- // Go to previous row if we are at the first column
118
+ // Go to previous row if we are before the first column
111
119
  rowIndexToFocus -= 1;
112
- columnIndexToFocus = visibleColumns.length - 1;
120
+
121
+ if (rowIndexToFocus >= 0) {
122
+ // Go to last column of the previous if there's one more row
123
+ columnIndexToFocus = visibleColumns.length - 1;
124
+ }
113
125
  }
114
126
 
115
- const currentPage = getVisibleRows(apiRef, {
116
- pagination: props.pagination,
117
- paginationMode: props.paginationMode
118
- });
119
- rowIndexToFocus = clamp(rowIndexToFocus, currentPage.range.firstRowIndex, currentPage.range.lastRowIndex);
127
+ rowIndexToFocus = clamp(rowIndexToFocus, 0, currentPage.rows.length - 1);
128
+ columnIndexToFocus = clamp(columnIndexToFocus, 0, visibleColumns.length - 1);
120
129
  const rowToFocus = currentPage.rows[rowIndexToFocus];
121
130
  const columnToFocus = visibleColumns[columnIndexToFocus];
122
131
  apiRef.current.setCellFocus(rowToFocus.id, columnToFocus.field);
@@ -186,7 +195,7 @@ export const useGridFocus = (apiRef, props) => {
186
195
  // Publishes an event to notify that the focus was lost
187
196
 
188
197
 
189
- apiRef.current.publishEvent(GridEvents.cellFocusOut, apiRef.current.getCellParams(focusedCell.id, focusedCell.field), event);
198
+ apiRef.current.publishEvent('cellFocusOut', apiRef.current.getCellParams(focusedCell.id, focusedCell.field), event);
190
199
 
191
200
  if (cellParams) {
192
201
  apiRef.current.setCellFocus(cellParams.id, cellParams.field);
@@ -211,27 +220,23 @@ export const useGridFocus = (apiRef, props) => {
211
220
  apiRef.current.setCellFocus(params.id, params.field);
212
221
  }
213
222
  }, [apiRef]);
223
+ const handleRowSet = React.useCallback(() => {
224
+ const cell = gridFocusCellSelector(apiRef); // If the focused cell is in a row which does not exist anymore, then remove the focus
225
+
226
+ if (cell && !apiRef.current.getRow(cell.id)) {
227
+ apiRef.current.setState(state => _extends({}, state, {
228
+ focus: {
229
+ cell: null,
230
+ columnHeader: null
231
+ }
232
+ }));
233
+ }
234
+ }, [apiRef]);
214
235
  useGridApiMethod(apiRef, {
215
236
  setCellFocus,
216
237
  setColumnHeaderFocus,
217
238
  unstable_moveFocusToRelativeCell: moveFocusToRelativeCell
218
239
  }, 'GridFocusApi');
219
- React.useEffect(() => {
220
- const cell = gridFocusCellSelector(apiRef);
221
-
222
- if (cell) {
223
- const updatedRow = apiRef.current.getRow(cell.id);
224
-
225
- if (!updatedRow) {
226
- apiRef.current.setState(state => _extends({}, state, {
227
- focus: {
228
- cell: null,
229
- columnHeader: null
230
- }
231
- }));
232
- }
233
- }
234
- }, [apiRef, props.rows]);
235
240
  React.useEffect(() => {
236
241
  const doc = ownerDocument(apiRef.current.rootElementRef.current);
237
242
  doc.addEventListener('click', handleDocumentClick);
@@ -239,10 +244,11 @@ export const useGridFocus = (apiRef, props) => {
239
244
  doc.removeEventListener('click', handleDocumentClick);
240
245
  };
241
246
  }, [apiRef, handleDocumentClick]);
242
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderBlur, handleBlur);
243
- useGridApiEventHandler(apiRef, GridEvents.cellDoubleClick, handleCellDoubleClick);
244
- useGridApiEventHandler(apiRef, GridEvents.cellMouseUp, handleCellMouseUp);
245
- useGridApiEventHandler(apiRef, GridEvents.cellKeyDown, handleCellKeyDown);
246
- useGridApiEventHandler(apiRef, GridEvents.cellModeChange, handleCellModeChange);
247
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderFocus, handleColumnHeaderFocus);
247
+ useGridApiEventHandler(apiRef, 'columnHeaderBlur', handleBlur);
248
+ useGridApiEventHandler(apiRef, 'cellDoubleClick', handleCellDoubleClick);
249
+ useGridApiEventHandler(apiRef, 'cellMouseUp', handleCellMouseUp);
250
+ useGridApiEventHandler(apiRef, 'cellKeyDown', handleCellKeyDown);
251
+ useGridApiEventHandler(apiRef, 'cellModeChange', handleCellModeChange);
252
+ useGridApiEventHandler(apiRef, 'columnHeaderFocus', handleColumnHeaderFocus);
253
+ useGridApiEventHandler(apiRef, 'rowsSet', handleRowSet);
248
254
  };
@@ -8,5 +8,6 @@ import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
8
8
  * @requires useGridDimensions (method) - can be after
9
9
  * @requires useGridFocus (method) - can be after
10
10
  * @requires useGridScroll (method) - can be after
11
+ * @requires useGridColumnSpanning (method) - can be after
11
12
  */
12
13
  export declare const useGridKeyboardNavigation: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'pagination' | 'paginationMode'>) => void;
@@ -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';
@@ -9,6 +8,7 @@ import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../colDef/gridCheckboxSel
9
8
  import { gridClasses } from '../../../constants/gridClasses';
10
9
  import { GridCellModes } from '../../../models/gridEditRowModel';
11
10
  import { isNavigationKey } from '../../../utils/keyboardUtils';
11
+ import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../../../constants/gridDetailPanelToggleField';
12
12
  /**
13
13
  * @requires useGridSorting (method) - can be after
14
14
  * @requires useGridFilter (state) - can be after
@@ -16,21 +16,40 @@ import { isNavigationKey } from '../../../utils/keyboardUtils';
16
16
  * @requires useGridDimensions (method) - can be after
17
17
  * @requires useGridFocus (method) - can be after
18
18
  * @requires useGridScroll (method) - can be after
19
+ * @requires useGridColumnSpanning (method) - can be after
19
20
  */
20
21
 
21
22
  export const useGridKeyboardNavigation = (apiRef, props) => {
22
23
  const logger = useGridLogger(apiRef, 'useGridKeyboardNavigation');
23
24
  const currentPage = useGridVisibleRows(apiRef, props);
24
- const goToCell = React.useCallback((colIndex, rowIndex) => {
25
+ /**
26
+ * @param {number} colIndex Index of the column to focus
27
+ * @param {number} rowIndex index of the row to focus
28
+ * @param {string} closestColumnToUse Which closest column cell to use when the cell is spanned by `colSpan`.
29
+ */
30
+
31
+ const goToCell = React.useCallback((colIndex, rowIndex, closestColumnToUse = 'left') => {
32
+ var _visibleSortedRows$ro;
33
+
34
+ const visibleSortedRows = gridVisibleSortedRowEntriesSelector(apiRef);
35
+ const rowId = (_visibleSortedRows$ro = visibleSortedRows[rowIndex]) == null ? void 0 : _visibleSortedRows$ro.id;
36
+ const nextCellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, colIndex);
37
+
38
+ if (nextCellColSpanInfo && nextCellColSpanInfo.spannedByColSpan) {
39
+ if (closestColumnToUse === 'left') {
40
+ colIndex = nextCellColSpanInfo.leftVisibleCellIndex;
41
+ } else if (closestColumnToUse === 'right') {
42
+ colIndex = nextCellColSpanInfo.rightVisibleCellIndex;
43
+ }
44
+ }
45
+
25
46
  logger.debug(`Navigating to cell row ${rowIndex}, col ${colIndex}`);
26
47
  apiRef.current.scrollToIndexes({
27
48
  colIndex,
28
49
  rowIndex
29
50
  });
30
51
  const field = apiRef.current.getVisibleColumns()[colIndex].field;
31
- const visibleSortedRows = gridVisibleSortedRowEntriesSelector(apiRef);
32
- const node = visibleSortedRows[rowIndex];
33
- apiRef.current.setCellFocus(node.id, field);
52
+ apiRef.current.setCellFocus(rowId, field);
34
53
  }, [apiRef, logger]);
35
54
  const goToHeader = React.useCallback((colIndex, event) => {
36
55
  logger.debug(`Navigating to header col ${colIndex}`);
@@ -83,7 +102,7 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
83
102
  case 'ArrowRight':
84
103
  {
85
104
  if (colIndexBefore < lastColIndex) {
86
- goToCell(colIndexBefore + 1, rowIndexBefore);
105
+ goToCell(colIndexBefore + 1, rowIndexBefore, 'right');
87
106
  }
88
107
 
89
108
  break;
@@ -102,9 +121,9 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
102
121
  {
103
122
  // "Tab" is only triggered by the row / cell editing feature
104
123
  if (event.shiftKey && colIndexBefore > firstColIndex) {
105
- goToCell(colIndexBefore - 1, rowIndexBefore);
124
+ goToCell(colIndexBefore - 1, rowIndexBefore, 'left');
106
125
  } else if (!event.shiftKey && colIndexBefore < lastColIndex) {
107
- goToCell(colIndexBefore + 1, rowIndexBefore);
126
+ goToCell(colIndexBefore + 1, rowIndexBefore, 'right');
108
127
  }
109
128
 
110
129
  break;
@@ -112,6 +131,18 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
112
131
 
113
132
  case ' ':
114
133
  {
134
+ const field = params.field;
135
+
136
+ if (field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {
137
+ break;
138
+ }
139
+
140
+ const colDef = params.colDef;
141
+
142
+ if (colDef && colDef.type === 'treeDataGroup') {
143
+ break;
144
+ }
145
+
115
146
  if (!event.shiftKey && rowIndexBefore < lastRowIndexInPage) {
116
147
  goToCell(colIndexBefore, Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage));
117
148
  }
@@ -284,10 +315,10 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
284
315
  const cellParams = apiRef.current.getCellParams(params.id, params.field);
285
316
 
286
317
  if (cellParams.cellMode !== GridCellModes.Edit && isNavigationKey(event.key)) {
287
- apiRef.current.publishEvent(GridEvents.cellNavigationKeyDown, cellParams, event);
318
+ apiRef.current.publishEvent('cellNavigationKeyDown', cellParams, event);
288
319
  }
289
320
  }, [apiRef]);
290
- useGridApiEventHandler(apiRef, GridEvents.cellNavigationKeyDown, handleCellNavigationKeyDown);
291
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderKeyDown, handleColumnHeaderKeyDown);
292
- useGridApiEventHandler(apiRef, GridEvents.cellKeyDown, handleCellKeyDown);
321
+ useGridApiEventHandler(apiRef, 'cellNavigationKeyDown', handleCellNavigationKeyDown);
322
+ useGridApiEventHandler(apiRef, 'columnHeaderKeyDown', handleColumnHeaderKeyDown);
323
+ useGridApiEventHandler(apiRef, 'cellKeyDown', handleCellKeyDown);
293
324
  };
@@ -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';
@@ -45,7 +44,7 @@ export const useGridPage = (apiRef, props) => {
45
44
  propModel: props.page,
46
45
  propOnChange: props.onPageChange,
47
46
  stateSelector: gridPageSelector,
48
- changeEvent: GridEvents.pageChange
47
+ changeEvent: 'pageChange'
49
48
  });
50
49
  /**
51
50
  * API METHODS
@@ -114,8 +113,8 @@ export const useGridPage = (apiRef, props) => {
114
113
  rowIndex: gridPageSelector(apiRef) * gridPageSizeSelector(apiRef)
115
114
  });
116
115
 
117
- useGridApiEventHandler(apiRef, GridEvents.pageSizeChange, handlePageSizeChange);
118
- useGridApiEventHandler(apiRef, GridEvents.pageChange, handlePageChange);
116
+ useGridApiEventHandler(apiRef, 'pageSizeChange', handlePageSizeChange);
117
+ useGridApiEventHandler(apiRef, 'pageChange', handlePageChange);
119
118
  /**
120
119
  * EFFECTS
121
120
  */
@@ -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';
@@ -27,7 +26,7 @@ export const useGridPageSize = (apiRef, props) => {
27
26
  propModel: props.pageSize,
28
27
  propOnChange: props.onPageSizeChange,
29
28
  stateSelector: gridPageSizeSelector,
30
- changeEvent: GridEvents.pageSizeChange
29
+ changeEvent: 'pageSizeChange'
31
30
  });
32
31
  /**
33
32
  * API METHODS
@@ -100,7 +99,7 @@ export const useGridPageSize = (apiRef, props) => {
100
99
  const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
101
100
  apiRef.current.setPageSize(maximumPageSizeWithoutScrollBar);
102
101
  }, [apiRef, props.autoPageSize, rowHeight]);
103
- useGridApiEventHandler(apiRef, GridEvents.viewportInnerSizeChange, handleUpdateAutoPageSize);
102
+ useGridApiEventHandler(apiRef, 'viewportInnerSizeChange', handleUpdateAutoPageSize);
104
103
  /**
105
104
  * EFFECTS
106
105
  */
@@ -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 const preferencePanelStateInitializer = (state, props) => {
10
8
  var _props$initialState$p, _props$initialState;
11
9
 
@@ -21,7 +19,6 @@ export const preferencePanelStateInitializer = (state, props) => {
21
19
 
22
20
  export const useGridPreferencesPanel = apiRef => {
23
21
  const logger = useGridLogger(apiRef, 'useGridPreferencesPanel');
24
- const preferencePanelState = useGridSelector(apiRef, gridPreferencePanelStateSelector);
25
22
  const hideTimeout = React.useRef();
26
23
  const immediateTimeout = React.useRef();
27
24
  /**
@@ -30,9 +27,10 @@ export const useGridPreferencesPanel = apiRef => {
30
27
 
31
28
  const hidePreferences = React.useCallback(() => {
32
29
  logger.debug('Hiding Preferences Panel');
30
+ const 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
  }
@@ -43,7 +41,7 @@ export const useGridPreferencesPanel = apiRef => {
43
41
  }
44
42
  }));
45
43
  apiRef.current.forceUpdate();
46
- }, [apiRef, logger, preferencePanelState.openedPanelValue]); // This is to prevent the preferences from closing when you open a select box or another panel,
44
+ }, [apiRef, logger]); // This is to prevent the preferences from closing when you open a select box or another panel,
47
45
  // The issue is in MUI core V4 => Fixed in V5
48
46
 
49
47
  const doNotHidePanel = React.useCallback(() => {
@@ -63,7 +61,7 @@ export const useGridPreferencesPanel = apiRef => {
63
61
  openedPanelValue: newValue
64
62
  })
65
63
  }));
66
- apiRef.current.publishEvent(GridEvents.preferencePanelOpen, {
64
+ apiRef.current.publishEvent('preferencePanelOpen', {
67
65
  openedPanelValue: newValue
68
66
  });
69
67
  apiRef.current.forceUpdate();