@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
@@ -29,6 +29,12 @@ var _gridRowsMetaSelector = require("../rows/gridRowsMetaSelector");
29
29
 
30
30
  var _utils2 = require("./utils");
31
31
 
32
+ var _pipeProcessing = require("../../core/pipeProcessing");
33
+
34
+ var _GridToolbarExport = require("../../../components/toolbar/GridToolbarExport");
35
+
36
+ var _jsxRuntime = require("react/jsx-runtime");
37
+
32
38
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
39
 
34
40
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -246,6 +252,25 @@ const useGridPrintExport = (apiRef, props) => {
246
252
  exportDataAsPrint
247
253
  };
248
254
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, printExportApi, 'GridPrintExportApi');
255
+ /**
256
+ * PRE-PROCESSING
257
+ */
258
+
259
+ const addExportMenuButtons = React.useCallback((initialValue, options) => {
260
+ var _options$printOptions;
261
+
262
+ if ((_options$printOptions = options.printOptions) != null && _options$printOptions.disableToolbarButton) {
263
+ return initialValue;
264
+ }
265
+
266
+ return [...initialValue, {
267
+ component: /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridToolbarExport.GridPrintExportMenuItem, {
268
+ options: options.printOptions
269
+ }),
270
+ componentName: 'printExport'
271
+ }];
272
+ }, []);
273
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'exportMenu', addExportMenuButtons);
249
274
  };
250
275
 
251
276
  exports.useGridPrintExport = useGridPrintExport;
@@ -3,10 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getColumnsToExport = void 0;
6
+ exports.getColumnsToExport = exports.defaultGetRowsToExport = void 0;
7
7
 
8
8
  var _columns = require("../columns");
9
9
 
10
+ var _filter = require("../filter");
11
+
10
12
  const getColumnsToExport = ({
11
13
  apiRef,
12
14
  options
@@ -21,4 +23,19 @@ const getColumnsToExport = ({
21
23
  return validColumns.filter(column => !column.disableExport);
22
24
  };
23
25
 
24
- exports.getColumnsToExport = getColumnsToExport;
26
+ exports.getColumnsToExport = getColumnsToExport;
27
+
28
+ const defaultGetRowsToExport = ({
29
+ apiRef
30
+ }) => {
31
+ const filteredSortedRowIds = (0, _filter.gridFilteredSortedRowIdsSelector)(apiRef);
32
+ const selectedRows = apiRef.current.getSelectedRows();
33
+
34
+ if (selectedRows.size > 0) {
35
+ return filteredSortedRowIds.filter(id => selectedRows.has(id));
36
+ }
37
+
38
+ return filteredSortedRowIds;
39
+ };
40
+
41
+ exports.defaultGetRowsToExport = defaultGetRowsToExport;
@@ -9,7 +9,9 @@ var _gridFilterItem = require("../../../models/gridFilterItem");
9
9
 
10
10
  const getDefaultGridFilterModel = () => ({
11
11
  items: [],
12
- linkOperator: _gridFilterItem.GridLinkOperator.And
12
+ linkOperator: _gridFilterItem.GridLinkOperator.And,
13
+ quickFilterValues: [],
14
+ quickFilterLogicOperator: _gridFilterItem.GridLinkOperator.And
13
15
  });
14
16
 
15
17
  exports.getDefaultGridFilterModel = getDefaultGridFilterModel;
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.sanitizeFilterModel = exports.mergeStateWithFilterModel = exports.buildAggregatedFilterApplier = void 0;
8
+ exports.sanitizeFilterModel = exports.mergeStateWithFilterModel = exports.buildAggregatedQuickFilterApplier = exports.buildAggregatedFilterItemsApplier = exports.buildAggregatedFilterApplier = void 0;
9
9
 
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
 
@@ -13,6 +13,8 @@ var _models = require("../../../models");
13
13
 
14
14
  var _warning = require("../../../utils/warning");
15
15
 
16
+ var _columns = require("../columns");
17
+
16
18
  /**
17
19
  * Adds default values to the optional fields of a filter items.
18
20
  * @param {GridFilterItem} item The raw filter item.
@@ -94,7 +96,7 @@ const mergeStateWithFilterModel = (filterModel, disableMultipleColumnsFiltering,
94
96
 
95
97
  exports.mergeStateWithFilterModel = mergeStateWithFilterModel;
96
98
 
97
- const buildAggregatedFilterApplier = (filterModel, apiRef) => {
99
+ const buildAggregatedFilterItemsApplier = (filterModel, apiRef) => {
98
100
  const {
99
101
  items,
100
102
  linkOperator = _models.GridLinkOperator.And
@@ -161,7 +163,7 @@ const buildAggregatedFilterApplier = (filterModel, apiRef) => {
161
163
  }
162
164
 
163
165
  return (rowId, shouldApplyFilter) => {
164
- const filteredAppliers = shouldApplyFilter ? appliers.filter(applier => shouldApplyFilter(applier.item)) : appliers; // Return `false` as soon as we have a failing filter
166
+ const filteredAppliers = shouldApplyFilter ? appliers.filter(applier => shouldApplyFilter(applier.item.columnField)) : appliers; // Return `false` as soon as we have a failing filter
165
167
 
166
168
  if (linkOperator === _models.GridLinkOperator.And) {
167
169
  return filteredAppliers.every(applier => applier.fn(rowId));
@@ -171,5 +173,92 @@ const buildAggregatedFilterApplier = (filterModel, apiRef) => {
171
173
  return filteredAppliers.some(applier => applier.fn(rowId));
172
174
  };
173
175
  };
176
+ /**
177
+ * Generates a method to easily check if a row is matching the current quick filter.
178
+ * @param {any[]} values The model with which we want to filter the rows.
179
+ * @param {React.MutableRefObject<GridApiCommunity>} apiRef The API of the grid.
180
+ * @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.
181
+ */
182
+
183
+
184
+ exports.buildAggregatedFilterItemsApplier = buildAggregatedFilterItemsApplier;
185
+
186
+ const buildAggregatedQuickFilterApplier = (filterModel, apiRef) => {
187
+ const {
188
+ quickFilterValues = [],
189
+ quickFilterLogicOperator = _models.GridLinkOperator.And
190
+ } = filterModel;
191
+
192
+ if (quickFilterValues.length === 0) {
193
+ return null;
194
+ }
195
+
196
+ const columnsFields = (0, _columns.gridColumnFieldsSelector)(apiRef);
197
+ const appliersPerColumnField = {};
198
+ columnsFields.forEach(field => {
199
+ const column = apiRef.current.getColumn(field);
200
+ const getApplyQuickFilterFn = column == null ? void 0 : column.getApplyQuickFilterFn;
201
+
202
+ if (!getApplyQuickFilterFn) {
203
+ return;
204
+ }
205
+
206
+ appliersPerColumnField[field] = quickFilterValues.map(value => getApplyQuickFilterFn(value, column, apiRef));
207
+ }); // If some value does not have an applier we ignore them
208
+
209
+ const sanitizedQuickFilterValues = quickFilterValues.filter((value, index) => Object.keys(appliersPerColumnField).some(field => appliersPerColumnField[field][index] != null));
210
+ return (rowId, shouldApplyFilter) => {
211
+ const usedCellParams = {};
212
+ Object.keys(appliersPerColumnField).forEach(columnField => {
213
+ if (!shouldApplyFilter || shouldApplyFilter(columnField)) {
214
+ usedCellParams[columnField] = apiRef.current.getCellParams(rowId, columnField);
215
+ }
216
+ }); // Return `false` as soon as we have a quick filter value that does not match any column
217
+
218
+ if (quickFilterLogicOperator === _models.GridLinkOperator.And) {
219
+ return sanitizedQuickFilterValues.every((value, index) => Object.keys(appliersPerColumnField).some(field => {
220
+ var _appliersPerColumnFie, _appliersPerColumnFie2;
221
+
222
+ if (appliersPerColumnField[field][index] == null) {
223
+ return false;
224
+ }
225
+
226
+ return (_appliersPerColumnFie = (_appliersPerColumnFie2 = appliersPerColumnField[field])[index]) == null ? void 0 : _appliersPerColumnFie.call(_appliersPerColumnFie2, usedCellParams[field]);
227
+ }));
228
+ } // Return `true` as soon as we have have a quick filter value that match any column
229
+
230
+
231
+ return sanitizedQuickFilterValues.some((value, index) => Object.keys(appliersPerColumnField).some(field => {
232
+ var _appliersPerColumnFie3, _appliersPerColumnFie4;
233
+
234
+ if (appliersPerColumnField[field][index] == null) {
235
+ return false;
236
+ }
237
+
238
+ return (_appliersPerColumnFie3 = (_appliersPerColumnFie4 = appliersPerColumnField[field])[index]) == null ? void 0 : _appliersPerColumnFie3.call(_appliersPerColumnFie4, usedCellParams[field]);
239
+ }));
240
+ };
241
+ };
242
+
243
+ exports.buildAggregatedQuickFilterApplier = buildAggregatedQuickFilterApplier;
244
+
245
+ const buildAggregatedFilterApplier = (filterModel, apiRef) => {
246
+ const isRowMatchingFilterItems = buildAggregatedFilterItemsApplier(filterModel, apiRef);
247
+ const isRowMatchingQuickFilter = buildAggregatedQuickFilterApplier(filterModel, apiRef);
248
+
249
+ if (isRowMatchingFilterItems == null && isRowMatchingQuickFilter == null) {
250
+ return null;
251
+ }
252
+
253
+ if (isRowMatchingFilterItems == null) {
254
+ return isRowMatchingQuickFilter;
255
+ }
256
+
257
+ if (isRowMatchingQuickFilter == null) {
258
+ return isRowMatchingFilterItems;
259
+ }
260
+
261
+ return (rowId, shouldApplyFilter) => isRowMatchingFilterItems(rowId, shouldApplyFilter) && isRowMatchingQuickFilter(rowId, shouldApplyFilter);
262
+ };
174
263
 
175
264
  exports.buildAggregatedFilterApplier = buildAggregatedFilterApplier;
@@ -11,8 +11,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
11
 
12
12
  var React = _interopRequireWildcard(require("react"));
13
13
 
14
- var _events = require("../../../models/events");
15
-
16
14
  var _gridFeatureMode = require("../../../models/gridFeatureMode");
17
15
 
18
16
  var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
@@ -39,6 +37,8 @@ var _strategyProcessing = require("../../core/strategyProcessing");
39
37
 
40
38
  var _gridFilterUtils = require("./gridFilterUtils");
41
39
 
40
+ var _utils = require("../../../utils/utils");
41
+
42
42
  var _jsxRuntime = require("react/jsx-runtime");
43
43
 
44
44
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -75,13 +75,9 @@ const useGridFilter = (apiRef, props) => {
75
75
  propModel: props.filterModel,
76
76
  propOnChange: props.onFilterModelChange,
77
77
  stateSelector: _gridFilterSelector.gridFilterModelSelector,
78
- changeEvent: _events.GridEvents.filterModelChange
78
+ changeEvent: 'filterModelChange'
79
79
  });
80
- /**
81
- * API METHODS
82
- */
83
-
84
- const applyFilters = React.useCallback(() => {
80
+ const updateFilteredRows = React.useCallback(() => {
85
81
  apiRef.current.setState(state => {
86
82
  const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(state, apiRef.current.instanceId);
87
83
  const isRowMatchingFilters = props.filterMode === _gridFeatureMode.GridFeatureModeConstant.client ? (0, _gridFilterUtils.buildAggregatedFilterApplier)(filterModel, apiRef) : null;
@@ -92,9 +88,16 @@ const useGridFilter = (apiRef, props) => {
92
88
  filter: (0, _extends2.default)({}, state.filter, filteringResult)
93
89
  });
94
90
  });
95
- apiRef.current.publishEvent(_events.GridEvents.visibleRowsSet);
91
+ apiRef.current.publishEvent('filteredRowsSet');
92
+ }, [props.filterMode, apiRef]);
93
+ /**
94
+ * API METHODS
95
+ */
96
+
97
+ const applyFilters = React.useCallback(() => {
98
+ updateFilteredRows();
96
99
  apiRef.current.forceUpdate();
97
- }, [apiRef, props.filterMode]);
100
+ }, [apiRef, updateFilteredRows]);
98
101
  const upsertFilterItem = React.useCallback(item => {
99
102
  const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
100
103
  const items = [...filterModel.items];
@@ -165,6 +168,17 @@ const useGridFilter = (apiRef, props) => {
165
168
  linkOperator
166
169
  }));
167
170
  }, [apiRef]);
171
+ const setQuickFilterValues = React.useCallback(values => {
172
+ const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
173
+
174
+ if ((0, _utils.isDeepEqual)(filterModel.quickFilterValues, values)) {
175
+ return;
176
+ }
177
+
178
+ apiRef.current.setFilterModel((0, _extends2.default)({}, filterModel, {
179
+ quickFilterValues: [...values]
180
+ }));
181
+ }, [apiRef]);
168
182
  const setFilterModel = React.useCallback(model => {
169
183
  const currentModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
170
184
 
@@ -186,7 +200,8 @@ const useGridFilter = (apiRef, props) => {
186
200
  setFilterModel,
187
201
  showFilterPanel,
188
202
  hideFilterPanel,
189
- getVisibleRowModels
203
+ getVisibleRowModels,
204
+ setQuickFilterValues
190
205
  };
191
206
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, filterApi, 'GridFilterApi');
192
207
  /**
@@ -278,11 +293,13 @@ const useGridFilter = (apiRef, props) => {
278
293
  if (methodName === 'filtering') {
279
294
  apiRef.current.unstable_applyFilters();
280
295
  }
281
- }, [apiRef]);
282
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.rowsSet, apiRef.current.unstable_applyFilters);
283
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.rowExpansionChange, apiRef.current.unstable_applyFilters);
284
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.columnsChange, handleColumnsChange);
285
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.activeStrategyProcessorChange, handleStrategyProcessorChange);
296
+ }, [apiRef]); // Do not call `apiRef.current.forceUpdate` to avoid re-render before updating the sorted rows.
297
+ // Otherwise, the state is not consistent during the render
298
+
299
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowsSet', updateFilteredRows);
300
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowExpansionChange', apiRef.current.unstable_applyFilters);
301
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnsChange', handleColumnsChange);
302
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
286
303
  /**
287
304
  * 1ST RENDER
288
305
  */
@@ -13,8 +13,6 @@ var React = _interopRequireWildcard(require("react"));
13
13
 
14
14
  var _utils = require("@mui/material/utils");
15
15
 
16
- var _events = require("../../../models/events");
17
-
18
16
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
19
17
 
20
18
  var _useGridLogger = require("../../utils/useGridLogger");
@@ -58,14 +56,9 @@ const useGridFocus = (apiRef, props) => {
58
56
  const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridFocus');
59
57
  const lastClickedCell = React.useRef(null);
60
58
  const setCellFocus = React.useCallback((id, field) => {
61
- // The row might have been deleted
62
- if (!apiRef.current.getRow(id)) {
63
- return;
64
- }
65
-
66
59
  const focusedCell = (0, _gridFocusStateSelector.gridFocusCellSelector)(apiRef);
67
60
 
68
- if ((focusedCell == null ? void 0 : focusedCell.id) === id && focusedCell.field === field) {
61
+ if ((focusedCell == null ? void 0 : focusedCell.id) === id && (focusedCell == null ? void 0 : focusedCell.field) === field) {
69
62
  return;
70
63
  }
71
64
 
@@ -88,14 +81,19 @@ const useGridFocus = (apiRef, props) => {
88
81
  }
89
82
  });
90
83
  });
91
- apiRef.current.forceUpdate();
92
- apiRef.current.publishEvent(_events.GridEvents.cellFocusIn, apiRef.current.getCellParams(id, field));
84
+ apiRef.current.forceUpdate(); // The row might have been deleted
85
+
86
+ if (!apiRef.current.getRow(id)) {
87
+ return;
88
+ }
89
+
90
+ apiRef.current.publishEvent('cellFocusIn', apiRef.current.getCellParams(id, field));
93
91
  }, [apiRef, logger]);
94
92
  const setColumnHeaderFocus = React.useCallback((field, event = {}) => {
95
93
  const cell = (0, _gridFocusStateSelector.gridFocusCellSelector)(apiRef);
96
94
 
97
95
  if (cell) {
98
- apiRef.current.publishEvent(_events.GridEvents.cellFocusOut, apiRef.current.getCellParams(cell.id, cell.field), event);
96
+ apiRef.current.publishEvent('cellFocusOut', apiRef.current.getCellParams(cell.id, cell.field), event);
99
97
  }
100
98
 
101
99
  apiRef.current.setState(state => {
@@ -130,21 +128,31 @@ const useGridFocus = (apiRef, props) => {
130
128
  rowIndexToFocus += 1;
131
129
  }
132
130
 
131
+ const currentPage = (0, _useGridVisibleRows.getVisibleRows)(apiRef, {
132
+ pagination: props.pagination,
133
+ paginationMode: props.paginationMode
134
+ });
135
+
133
136
  if (columnIndexToFocus >= visibleColumns.length) {
134
- // Go to next row if we are at the last column
137
+ // Go to next row if we are after the last column
135
138
  rowIndexToFocus += 1;
136
- columnIndexToFocus = 0;
139
+
140
+ if (rowIndexToFocus < currentPage.rows.length) {
141
+ // Go to first column of the next row if there's one more row
142
+ columnIndexToFocus = 0;
143
+ }
137
144
  } else if (columnIndexToFocus < 0) {
138
- // Go to previous row if we are at the first column
145
+ // Go to previous row if we are before the first column
139
146
  rowIndexToFocus -= 1;
140
- columnIndexToFocus = visibleColumns.length - 1;
147
+
148
+ if (rowIndexToFocus >= 0) {
149
+ // Go to last column of the previous if there's one more row
150
+ columnIndexToFocus = visibleColumns.length - 1;
151
+ }
141
152
  }
142
153
 
143
- const currentPage = (0, _useGridVisibleRows.getVisibleRows)(apiRef, {
144
- pagination: props.pagination,
145
- paginationMode: props.paginationMode
146
- });
147
- rowIndexToFocus = (0, _utils2.clamp)(rowIndexToFocus, currentPage.range.firstRowIndex, currentPage.range.lastRowIndex);
154
+ rowIndexToFocus = (0, _utils2.clamp)(rowIndexToFocus, 0, currentPage.rows.length - 1);
155
+ columnIndexToFocus = (0, _utils2.clamp)(columnIndexToFocus, 0, visibleColumns.length - 1);
148
156
  const rowToFocus = currentPage.rows[rowIndexToFocus];
149
157
  const columnToFocus = visibleColumns[columnIndexToFocus];
150
158
  apiRef.current.setCellFocus(rowToFocus.id, columnToFocus.field);
@@ -214,7 +222,7 @@ const useGridFocus = (apiRef, props) => {
214
222
  // Publishes an event to notify that the focus was lost
215
223
 
216
224
 
217
- apiRef.current.publishEvent(_events.GridEvents.cellFocusOut, apiRef.current.getCellParams(focusedCell.id, focusedCell.field), event);
225
+ apiRef.current.publishEvent('cellFocusOut', apiRef.current.getCellParams(focusedCell.id, focusedCell.field), event);
218
226
 
219
227
  if (cellParams) {
220
228
  apiRef.current.setCellFocus(cellParams.id, cellParams.field);
@@ -239,27 +247,23 @@ const useGridFocus = (apiRef, props) => {
239
247
  apiRef.current.setCellFocus(params.id, params.field);
240
248
  }
241
249
  }, [apiRef]);
250
+ const handleRowSet = React.useCallback(() => {
251
+ const cell = (0, _gridFocusStateSelector.gridFocusCellSelector)(apiRef); // If the focused cell is in a row which does not exist anymore, then remove the focus
252
+
253
+ if (cell && !apiRef.current.getRow(cell.id)) {
254
+ apiRef.current.setState(state => (0, _extends2.default)({}, state, {
255
+ focus: {
256
+ cell: null,
257
+ columnHeader: null
258
+ }
259
+ }));
260
+ }
261
+ }, [apiRef]);
242
262
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, {
243
263
  setCellFocus,
244
264
  setColumnHeaderFocus,
245
265
  unstable_moveFocusToRelativeCell: moveFocusToRelativeCell
246
266
  }, 'GridFocusApi');
247
- React.useEffect(() => {
248
- const cell = (0, _gridFocusStateSelector.gridFocusCellSelector)(apiRef);
249
-
250
- if (cell) {
251
- const updatedRow = apiRef.current.getRow(cell.id);
252
-
253
- if (!updatedRow) {
254
- apiRef.current.setState(state => (0, _extends2.default)({}, state, {
255
- focus: {
256
- cell: null,
257
- columnHeader: null
258
- }
259
- }));
260
- }
261
- }
262
- }, [apiRef, props.rows]);
263
267
  React.useEffect(() => {
264
268
  const doc = (0, _utils.ownerDocument)(apiRef.current.rootElementRef.current);
265
269
  doc.addEventListener('click', handleDocumentClick);
@@ -267,12 +271,13 @@ const useGridFocus = (apiRef, props) => {
267
271
  doc.removeEventListener('click', handleDocumentClick);
268
272
  };
269
273
  }, [apiRef, handleDocumentClick]);
270
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.columnHeaderBlur, handleBlur);
271
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.cellDoubleClick, handleCellDoubleClick);
272
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.cellMouseUp, handleCellMouseUp);
273
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.cellKeyDown, handleCellKeyDown);
274
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.cellModeChange, handleCellModeChange);
275
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.columnHeaderFocus, handleColumnHeaderFocus);
274
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderBlur', handleBlur);
275
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'cellDoubleClick', handleCellDoubleClick);
276
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'cellMouseUp', handleCellMouseUp);
277
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'cellKeyDown', handleCellKeyDown);
278
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'cellModeChange', handleCellModeChange);
279
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderFocus', handleColumnHeaderFocus);
280
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowsSet', handleRowSet);
276
281
  };
277
282
 
278
283
  exports.useGridFocus = useGridFocus;
@@ -7,8 +7,6 @@ exports.useGridKeyboardNavigation = void 0;
7
7
 
8
8
  var React = _interopRequireWildcard(require("react"));
9
9
 
10
- var _events = require("../../../models/events");
11
-
12
10
  var _gridColumnsSelector = require("../columns/gridColumnsSelector");
13
11
 
14
12
  var _useGridLogger = require("../../utils/useGridLogger");
@@ -27,6 +25,8 @@ var _gridEditRowModel = require("../../../models/gridEditRowModel");
27
25
 
28
26
  var _keyboardUtils = require("../../../utils/keyboardUtils");
29
27
 
28
+ var _gridDetailPanelToggleField = require("../../../constants/gridDetailPanelToggleField");
29
+
30
30
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
31
 
32
32
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -38,20 +38,39 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
38
38
  * @requires useGridDimensions (method) - can be after
39
39
  * @requires useGridFocus (method) - can be after
40
40
  * @requires useGridScroll (method) - can be after
41
+ * @requires useGridColumnSpanning (method) - can be after
41
42
  */
42
43
  const useGridKeyboardNavigation = (apiRef, props) => {
43
44
  const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridKeyboardNavigation');
44
45
  const currentPage = (0, _useGridVisibleRows.useGridVisibleRows)(apiRef, props);
45
- const goToCell = React.useCallback((colIndex, rowIndex) => {
46
+ /**
47
+ * @param {number} colIndex Index of the column to focus
48
+ * @param {number} rowIndex index of the row to focus
49
+ * @param {string} closestColumnToUse Which closest column cell to use when the cell is spanned by `colSpan`.
50
+ */
51
+
52
+ const goToCell = React.useCallback((colIndex, rowIndex, closestColumnToUse = 'left') => {
53
+ var _visibleSortedRows$ro;
54
+
55
+ const visibleSortedRows = (0, _gridFilterSelector.gridVisibleSortedRowEntriesSelector)(apiRef);
56
+ const rowId = (_visibleSortedRows$ro = visibleSortedRows[rowIndex]) == null ? void 0 : _visibleSortedRows$ro.id;
57
+ const nextCellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, colIndex);
58
+
59
+ if (nextCellColSpanInfo && nextCellColSpanInfo.spannedByColSpan) {
60
+ if (closestColumnToUse === 'left') {
61
+ colIndex = nextCellColSpanInfo.leftVisibleCellIndex;
62
+ } else if (closestColumnToUse === 'right') {
63
+ colIndex = nextCellColSpanInfo.rightVisibleCellIndex;
64
+ }
65
+ }
66
+
46
67
  logger.debug(`Navigating to cell row ${rowIndex}, col ${colIndex}`);
47
68
  apiRef.current.scrollToIndexes({
48
69
  colIndex,
49
70
  rowIndex
50
71
  });
51
72
  const field = apiRef.current.getVisibleColumns()[colIndex].field;
52
- const visibleSortedRows = (0, _gridFilterSelector.gridVisibleSortedRowEntriesSelector)(apiRef);
53
- const node = visibleSortedRows[rowIndex];
54
- apiRef.current.setCellFocus(node.id, field);
73
+ apiRef.current.setCellFocus(rowId, field);
55
74
  }, [apiRef, logger]);
56
75
  const goToHeader = React.useCallback((colIndex, event) => {
57
76
  logger.debug(`Navigating to header col ${colIndex}`);
@@ -104,7 +123,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
104
123
  case 'ArrowRight':
105
124
  {
106
125
  if (colIndexBefore < lastColIndex) {
107
- goToCell(colIndexBefore + 1, rowIndexBefore);
126
+ goToCell(colIndexBefore + 1, rowIndexBefore, 'right');
108
127
  }
109
128
 
110
129
  break;
@@ -123,9 +142,9 @@ const useGridKeyboardNavigation = (apiRef, props) => {
123
142
  {
124
143
  // "Tab" is only triggered by the row / cell editing feature
125
144
  if (event.shiftKey && colIndexBefore > firstColIndex) {
126
- goToCell(colIndexBefore - 1, rowIndexBefore);
145
+ goToCell(colIndexBefore - 1, rowIndexBefore, 'left');
127
146
  } else if (!event.shiftKey && colIndexBefore < lastColIndex) {
128
- goToCell(colIndexBefore + 1, rowIndexBefore);
147
+ goToCell(colIndexBefore + 1, rowIndexBefore, 'right');
129
148
  }
130
149
 
131
150
  break;
@@ -133,6 +152,18 @@ const useGridKeyboardNavigation = (apiRef, props) => {
133
152
 
134
153
  case ' ':
135
154
  {
155
+ const field = params.field;
156
+
157
+ if (field === _gridDetailPanelToggleField.GRID_DETAIL_PANEL_TOGGLE_FIELD) {
158
+ break;
159
+ }
160
+
161
+ const colDef = params.colDef;
162
+
163
+ if (colDef && colDef.type === 'treeDataGroup') {
164
+ break;
165
+ }
166
+
136
167
  if (!event.shiftKey && rowIndexBefore < lastRowIndexInPage) {
137
168
  goToCell(colIndexBefore, Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage));
138
169
  }
@@ -305,12 +336,12 @@ const useGridKeyboardNavigation = (apiRef, props) => {
305
336
  const cellParams = apiRef.current.getCellParams(params.id, params.field);
306
337
 
307
338
  if (cellParams.cellMode !== _gridEditRowModel.GridCellModes.Edit && (0, _keyboardUtils.isNavigationKey)(event.key)) {
308
- apiRef.current.publishEvent(_events.GridEvents.cellNavigationKeyDown, cellParams, event);
339
+ apiRef.current.publishEvent('cellNavigationKeyDown', cellParams, event);
309
340
  }
310
341
  }, [apiRef]);
311
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.cellNavigationKeyDown, handleCellNavigationKeyDown);
312
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.columnHeaderKeyDown, handleColumnHeaderKeyDown);
313
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.cellKeyDown, handleCellKeyDown);
342
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'cellNavigationKeyDown', handleCellNavigationKeyDown);
343
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderKeyDown', handleColumnHeaderKeyDown);
344
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'cellKeyDown', handleCellKeyDown);
314
345
  };
315
346
 
316
347
  exports.useGridKeyboardNavigation = useGridKeyboardNavigation;
@@ -13,8 +13,6 @@ var React = _interopRequireWildcard(require("react"));
13
13
 
14
14
  var _utils = require("../../utils");
15
15
 
16
- var _events = require("../../../models/events");
17
-
18
16
  var _filter = require("../filter");
19
17
 
20
18
  var _gridPaginationSelector = require("./gridPaginationSelector");
@@ -68,7 +66,7 @@ const useGridPage = (apiRef, props) => {
68
66
  propModel: props.page,
69
67
  propOnChange: props.onPageChange,
70
68
  stateSelector: _gridPaginationSelector.gridPageSelector,
71
- changeEvent: _events.GridEvents.pageChange
69
+ changeEvent: 'pageChange'
72
70
  });
73
71
  /**
74
72
  * API METHODS
@@ -137,8 +135,8 @@ const useGridPage = (apiRef, props) => {
137
135
  rowIndex: (0, _gridPaginationSelector.gridPageSelector)(apiRef) * (0, _gridPaginationSelector.gridPageSizeSelector)(apiRef)
138
136
  });
139
137
 
140
- (0, _utils.useGridApiEventHandler)(apiRef, _events.GridEvents.pageSizeChange, handlePageSizeChange);
141
- (0, _utils.useGridApiEventHandler)(apiRef, _events.GridEvents.pageChange, handlePageChange);
138
+ (0, _utils.useGridApiEventHandler)(apiRef, 'pageSizeChange', handlePageSizeChange);
139
+ (0, _utils.useGridApiEventHandler)(apiRef, 'pageChange', handlePageChange);
142
140
  /**
143
141
  * EFFECTS
144
142
  */
@@ -11,8 +11,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
11
 
12
12
  var React = _interopRequireWildcard(require("react"));
13
13
 
14
- var _events = require("../../../models/events");
15
-
16
14
  var _utils = require("../../utils");
17
15
 
18
16
  var _gridPaginationSelector = require("./gridPaginationSelector");
@@ -49,7 +47,7 @@ const useGridPageSize = (apiRef, props) => {
49
47
  propModel: props.pageSize,
50
48
  propOnChange: props.onPageSizeChange,
51
49
  stateSelector: _gridPaginationSelector.gridPageSizeSelector,
52
- changeEvent: _events.GridEvents.pageSizeChange
50
+ changeEvent: 'pageSizeChange'
53
51
  });
54
52
  /**
55
53
  * API METHODS
@@ -122,7 +120,7 @@ const useGridPageSize = (apiRef, props) => {
122
120
  const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
123
121
  apiRef.current.setPageSize(maximumPageSizeWithoutScrollBar);
124
122
  }, [apiRef, props.autoPageSize, rowHeight]);
125
- (0, _utils.useGridApiEventHandler)(apiRef, _events.GridEvents.viewportInnerSizeChange, handleUpdateAutoPageSize);
123
+ (0, _utils.useGridApiEventHandler)(apiRef, 'viewportInnerSizeChange', handleUpdateAutoPageSize);
126
124
  /**
127
125
  * EFFECTS
128
126
  */