@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
@@ -3,7 +3,6 @@ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutPr
3
3
  import _toPropertyKey from "@babel/runtime/helpers/esm/toPropertyKey";
4
4
  import * as React from 'react';
5
5
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
6
- import { GridEvents } from '../../../models/events';
7
6
  export var GRID_DEFAULT_STRATEGY = 'none';
8
7
  export var GRID_STRATEGIES_PROCESSORS = {
9
8
  rowTreeCreation: 'rowTree',
@@ -26,7 +25,7 @@ export var GRID_STRATEGIES_PROCESSORS = {
26
25
  * The plugin containing the custom logic must use:
27
26
  *
28
27
  * - `useGridRegisterStrategyProcessor` to register their processor.
29
- * When the processor of the active strategy changes, it will fire `GridEvents.activeStrategyProcessorChange` to re-apply the processor.
28
+ * When the processor of the active strategy changes, it will fire `"activeStrategyProcessorChange"` to re-apply the processor.
30
29
  *
31
30
  * - `apiRef.current.unstable_setStrategyAvailability` to tell if their strategy can be used.
32
31
  *
@@ -36,12 +35,12 @@ export var GRID_STRATEGIES_PROCESSORS = {
36
35
  *
37
36
  * - `apiRef.current.unstable_applyStrategyProcessor` to run the processor of the active strategy for a given processor name.
38
37
  *
39
- * - `GridEvents.strategyAvailabilityChange` to update something when the active strategy changes.
38
+ * - the "strategyAvailabilityChange" event to update something when the active strategy changes.
40
39
  * Warning: Be careful not to apply the processor several times.
41
- * For instance `GridEvents.rowsSet` is fired by `useGridRows` whenever the active strategy changes.
40
+ * For instance "rowsSet" is fired by `useGridRows` whenever the active strategy changes.
42
41
  * So listening to both would most likely run your logic twice.
43
42
  *
44
- * - `GridEvents.activeStrategyProcessorChange` to update something when the processor of the active strategy changes.
43
+ * - The "activeStrategyProcessorChange" event to update something when the processor of the active strategy changes.
45
44
  *
46
45
  * =====================================================================================================================
47
46
  *
@@ -76,7 +75,7 @@ export var useGridStrategyProcessing = function useGridStrategyProcessing(apiRef
76
75
  }
77
76
 
78
77
  if (strategyName === apiRef.current.unstable_getActiveStrategy(GRID_STRATEGIES_PROCESSORS[processorName])) {
79
- apiRef.current.publishEvent(GridEvents.activeStrategyProcessorChange, processorName);
78
+ apiRef.current.publishEvent('activeStrategyProcessorChange', processorName);
80
79
  }
81
80
 
82
81
  return cleanup;
@@ -118,7 +117,7 @@ export var useGridStrategyProcessing = function useGridStrategyProcessing(apiRef
118
117
  group: strategyGroup,
119
118
  isAvailable: isAvailable
120
119
  });
121
- apiRef.current.publishEvent(GridEvents.strategyAvailabilityChange);
120
+ apiRef.current.publishEvent('strategyAvailabilityChange');
122
121
  }, [apiRef]);
123
122
  var strategyProcessingApi = {
124
123
  unstable_registerStrategyProcessor: registerStrategyProcessor,
@@ -1,5 +1,4 @@
1
1
  import * as React from 'react';
2
- import { GridEvents } from '../../models/events';
3
2
  import { useGridApiMethod } from '../utils/useGridApiMethod';
4
3
  import { GridSignature } from '../utils/useGridApiEventHandler';
5
4
  import { EventManager } from '../../utils/EventManager';
@@ -15,6 +14,7 @@ export function useGridApiInitialization(inputApiRef, props) {
15
14
  if (!apiRef.current) {
16
15
  apiRef.current = {
17
16
  unstable_eventManager: new EventManager(),
17
+ unstable_caches: {},
18
18
  state: {},
19
19
  instanceId: globalId
20
20
  };
@@ -52,7 +52,7 @@ export function useGridApiInitialization(inputApiRef, props) {
52
52
  };
53
53
  }, [apiRef]);
54
54
  var showError = React.useCallback(function (args) {
55
- apiRef.current.publishEvent(GridEvents.componentError, args);
55
+ apiRef.current.publishEvent('componentError', args);
56
56
  }, [apiRef]);
57
57
  useGridApiMethod(apiRef, {
58
58
  subscribeEvent: subscribeEvent,
@@ -62,7 +62,7 @@ export function useGridApiInitialization(inputApiRef, props) {
62
62
  React.useEffect(function () {
63
63
  var api = apiRef.current;
64
64
  return function () {
65
- api.publishEvent(GridEvents.unmount);
65
+ api.publishEvent('unmount');
66
66
  };
67
67
  }, [apiRef]);
68
68
  return apiRef;
@@ -1,6 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
- import { GridEvents } from '../../models/events';
4
3
  import { useGridApiEventHandler } from '../utils/useGridApiEventHandler';
5
4
  export function useGridErrorHandler(apiRef, props) {
6
5
  var handleError = React.useCallback(function (args) {
@@ -14,5 +13,5 @@ export function useGridErrorHandler(apiRef, props) {
14
13
  React.useEffect(function () {
15
14
  handleError(props.error);
16
15
  }, [handleError, props.error]);
17
- useGridApiEventHandler(apiRef, GridEvents.componentError, handleError);
16
+ useGridApiEventHandler(apiRef, 'componentError', handleError);
18
17
  }
@@ -4,7 +4,6 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
4
  var _excluded = ["stateId"];
5
5
  import * as React from 'react';
6
6
  import { GridSignature } from '../utils/useGridApiEventHandler';
7
- import { GridEvents } from '../../models/events';
8
7
  import { useGridApiMethod } from '../utils';
9
8
  import { isFunction } from '../../utils/utils';
10
9
  export var useGridStateInitialization = function useGridStateInitialization(apiRef, props) {
@@ -71,7 +70,7 @@ export var useGridStateInitialization = function useGridStateInitialization(apiR
71
70
  apiRef.current.state = newState;
72
71
 
73
72
  if (apiRef.current.publishEvent) {
74
- apiRef.current.publishEvent(GridEvents.stateChange, newState);
73
+ apiRef.current.publishEvent('stateChange', newState);
75
74
  }
76
75
  }
77
76
 
@@ -1,7 +1,9 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
3
  import * as React from 'react';
4
+ import * as ReactDOM from 'react-dom';
4
5
  import { useForkRef } from '@mui/material/utils';
6
+ import { defaultMemoize } from 'reselect';
5
7
  import { useGridApiContext } from '../../utils/useGridApiContext';
6
8
  import { useGridSelector } from '../../utils/useGridSelector';
7
9
  import { gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector } from '../columns/gridColumnsSelector';
@@ -12,9 +14,16 @@ import { gridSortColumnLookupSelector } from '../sorting/gridSortingSelector';
12
14
  import { gridColumnMenuSelector } from '../columnMenu/columnMenuSelector';
13
15
  import { useGridRootProps } from '../../utils/useGridRootProps';
14
16
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
15
- import { GridEvents } from '../../../models/events';
16
17
  import { GridColumnHeaderItem } from '../../../components/columnHeaders/GridColumnHeaderItem';
18
+ import { getFirstColumnIndexToRender } from '../columns/gridColumnsUtils';
19
+ import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
20
+ import { getRenderableIndexes } from '../virtualization/useGridVirtualScroller';
17
21
  import { jsx as _jsx } from "react/jsx-runtime";
22
+
23
+ function isUIEvent(event) {
24
+ return !!event.target;
25
+ }
26
+
18
27
  export var useGridColumnHeaders = function useGridColumnHeaders(props) {
19
28
  var innerRefProp = props.innerRef,
20
29
  _props$minColumnIndex = props.minColumnIndex,
@@ -51,15 +60,48 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
51
60
 
52
61
  var prevRenderContext = React.useRef(renderContext);
53
62
  var prevScrollLeft = React.useRef(0);
63
+ var currentPage = useGridVisibleRows(apiRef, rootProps);
54
64
  React.useEffect(function () {
55
65
  apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
56
- }, [apiRef]);
66
+ }, [apiRef]); // memoize `getFirstColumnIndexToRender`, since it's called on scroll
67
+
68
+ var getFirstColumnIndexToRenderRef = React.useRef(defaultMemoize(getFirstColumnIndexToRender, {
69
+ equalityCheck: function equalityCheck(a, b) {
70
+ return ['firstColumnIndex', 'minColumnIndex', 'columnBuffer'].every(function (key) {
71
+ return a[key] === b[key];
72
+ });
73
+ }
74
+ }));
57
75
  var updateInnerPosition = React.useCallback(function (nextRenderContext) {
58
- var firstColumnToRender = Math.max(nextRenderContext.firstColumnIndex - rootProps.columnBuffer, minColumnIndex);
76
+ var _getRenderableIndexes = getRenderableIndexes({
77
+ firstIndex: nextRenderContext.firstRowIndex,
78
+ lastIndex: nextRenderContext.lastRowIndex,
79
+ minFirstIndex: 0,
80
+ maxLastIndex: currentPage.rows.length,
81
+ buffer: rootProps.rowBuffer
82
+ }),
83
+ _getRenderableIndexes2 = _slicedToArray(_getRenderableIndexes, 2),
84
+ firstRowToRender = _getRenderableIndexes2[0],
85
+ lastRowToRender = _getRenderableIndexes2[1];
86
+
87
+ var firstColumnToRender = getFirstColumnIndexToRenderRef.current({
88
+ firstColumnIndex: nextRenderContext.firstColumnIndex,
89
+ minColumnIndex: minColumnIndex,
90
+ columnBuffer: rootProps.columnBuffer,
91
+ firstRowToRender: firstRowToRender,
92
+ lastRowToRender: lastRowToRender,
93
+ apiRef: apiRef,
94
+ visibleRows: currentPage.rows
95
+ });
59
96
  var offset = firstColumnToRender > 0 ? prevScrollLeft.current - columnPositions[firstColumnToRender] : prevScrollLeft.current;
60
97
  innerRef.current.style.transform = "translate3d(".concat(-offset, "px, 0px, 0px)");
61
- }, [columnPositions, minColumnIndex, rootProps.columnBuffer]);
62
- var handleScroll = React.useCallback(function (_ref) {
98
+ }, [columnPositions, minColumnIndex, rootProps.columnBuffer, apiRef, currentPage.rows, rootProps.rowBuffer]);
99
+ React.useLayoutEffect(function () {
100
+ if (renderContext) {
101
+ updateInnerPosition(renderContext);
102
+ }
103
+ }, [renderContext, updateInnerPosition]);
104
+ var handleScroll = React.useCallback(function (_ref, event) {
63
105
  var _prevRenderContext$cu, _prevRenderContext$cu2;
64
106
 
65
107
  var left = _ref.left,
@@ -76,15 +118,32 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
76
118
  return;
77
119
  }
78
120
 
79
- prevScrollLeft.current = left;
121
+ prevScrollLeft.current = left; // We can only update the position when we guarantee that the render context has been
122
+ // rendered. This is achieved using ReactDOM.flushSync or when the context doesn't change.
123
+
124
+ var canUpdateInnerPosition = false;
80
125
 
81
126
  if (nextRenderContext !== prevRenderContext.current || !prevRenderContext.current) {
82
- setRenderContext(nextRenderContext);
127
+ // ReactDOM.flushSync cannot be called on `scroll` events fired inside effects
128
+ if (isUIEvent(event)) {
129
+ // To prevent flickering, the inner position can only be updated after the new context has
130
+ // been rendered. ReactDOM.flushSync ensures that the state changes will happen before
131
+ // updating the position.
132
+ ReactDOM.flushSync(function () {
133
+ setRenderContext(nextRenderContext);
134
+ });
135
+ canUpdateInnerPosition = true;
136
+ } else {
137
+ setRenderContext(nextRenderContext);
138
+ }
139
+
83
140
  prevRenderContext.current = nextRenderContext;
141
+ } else {
142
+ canUpdateInnerPosition = true;
84
143
  } // Pass directly the render context to avoid waiting for the next render
85
144
 
86
145
 
87
- if (nextRenderContext) {
146
+ if (nextRenderContext && canUpdateInnerPosition) {
88
147
  updateInnerPosition(nextRenderContext);
89
148
  }
90
149
  }, [updateInnerPosition]);
@@ -100,11 +159,11 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
100
159
  var handleColumnReorderStop = React.useCallback(function () {
101
160
  return setDragCol('');
102
161
  }, []);
103
- useGridApiEventHandler(apiRef, GridEvents.columnResizeStart, handleColumnResizeStart);
104
- useGridApiEventHandler(apiRef, GridEvents.columnResizeStop, handleColumnResizeStop);
105
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragStart, handleColumnReorderStart);
106
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragEnd, handleColumnReorderStop);
107
- useGridApiEventHandler(apiRef, GridEvents.rowsScroll, handleScroll);
162
+ useGridApiEventHandler(apiRef, 'columnResizeStart', handleColumnResizeStart);
163
+ useGridApiEventHandler(apiRef, 'columnResizeStop', handleColumnResizeStop);
164
+ useGridApiEventHandler(apiRef, 'columnHeaderDragStart', handleColumnReorderStart);
165
+ useGridApiEventHandler(apiRef, 'columnHeaderDragEnd', handleColumnReorderStop);
166
+ useGridApiEventHandler(apiRef, 'rowsScroll', handleScroll);
108
167
 
109
168
  var getColumns = function getColumns(params) {
110
169
  var other = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -122,7 +181,27 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
122
181
  }
123
182
 
124
183
  var columns = [];
125
- var firstColumnToRender = Math.max(nextRenderContext.firstColumnIndex - rootProps.columnBuffer, minFirstColumn);
184
+
185
+ var _getRenderableIndexes3 = getRenderableIndexes({
186
+ firstIndex: nextRenderContext.firstRowIndex,
187
+ lastIndex: nextRenderContext.lastRowIndex,
188
+ minFirstIndex: 0,
189
+ maxLastIndex: currentPage.rows.length,
190
+ buffer: rootProps.rowBuffer
191
+ }),
192
+ _getRenderableIndexes4 = _slicedToArray(_getRenderableIndexes3, 2),
193
+ firstRowToRender = _getRenderableIndexes4[0],
194
+ lastRowToRender = _getRenderableIndexes4[1];
195
+
196
+ var firstColumnToRender = getFirstColumnIndexToRenderRef.current({
197
+ firstColumnIndex: nextRenderContext.firstColumnIndex,
198
+ minColumnIndex: minFirstColumn,
199
+ columnBuffer: rootProps.columnBuffer,
200
+ apiRef: apiRef,
201
+ firstRowToRender: firstRowToRender,
202
+ lastRowToRender: lastRowToRender,
203
+ visibleRows: currentPage.rows
204
+ });
126
205
  var lastColumnToRender = Math.min(nextRenderContext.lastColumnIndex + rootProps.columnBuffer, maxLastColumn);
127
206
  var renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
128
207
 
@@ -146,7 +225,7 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
146
225
  extendRowFullWidth: !rootProps.disableExtendRowFullWidth,
147
226
  hasFocus: hasFocus,
148
227
  tabIndex: tabIndex
149
- }, other), i));
228
+ }, other), column.field));
150
229
  }
151
230
 
152
231
  return columns;
@@ -161,7 +240,6 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
161
240
  renderContext: renderContext,
162
241
  getColumns: getColumns,
163
242
  isDragging: !!dragCol,
164
- updateInnerPosition: updateInnerPosition,
165
243
  getRootProps: function getRootProps() {
166
244
  var other = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
167
245
  return _extends({
@@ -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 } from '../../utils';
5
4
  import { gridColumnMenuSelector } from './columnMenuSelector';
6
5
  export var columnMenuStateInitializer = function columnMenuStateInitializer(state) {
@@ -80,6 +79,7 @@ export var useGridColumnMenu = function useGridColumnMenu(apiRef) {
80
79
  * EVENTS
81
80
  */
82
81
 
83
- useGridApiEventHandler(apiRef, GridEvents.columnResizeStart, hideColumnMenu);
84
- useGridApiEventHandler(apiRef, GridEvents.rowsScroll, hideColumnMenu);
82
+ useGridApiEventHandler(apiRef, 'columnResizeStart', hideColumnMenu);
83
+ useGridApiEventHandler(apiRef, 'virtualScrollerWheel', apiRef.current.hideColumnMenu);
84
+ useGridApiEventHandler(apiRef, 'virtualScrollerTouchMove', apiRef.current.hideColumnMenu);
85
85
  };
@@ -213,11 +213,25 @@ export var applyInitialState = function applyInitialState(columnsState, initialS
213
213
 
214
214
  var newColumnLookup = _extends({}, columnsState.lookup);
215
215
 
216
- for (var _i = 0; _i < columnsWithUpdatedDimensions.length; _i += 1) {
217
- var _field2 = columnsWithUpdatedDimensions[_i];
218
- newColumnLookup[_field2] = _extends({}, newColumnLookup[_field2], dimensions[_field2], {
216
+ var _loop = function _loop(_i) {
217
+ var field = columnsWithUpdatedDimensions[_i];
218
+
219
+ var newColDef = _extends({}, newColumnLookup[field], {
219
220
  hasBeenResized: true
220
221
  });
222
+
223
+ Object.entries(dimensions[field]).forEach(function (_ref5) {
224
+ var _ref6 = _slicedToArray(_ref5, 2),
225
+ key = _ref6[0],
226
+ value = _ref6[1];
227
+
228
+ newColDef[key] = value === -1 ? Infinity : value;
229
+ });
230
+ newColumnLookup[field] = newColDef;
231
+ };
232
+
233
+ for (var _i = 0; _i < columnsWithUpdatedDimensions.length; _i += 1) {
234
+ _loop(_i);
221
235
  }
222
236
 
223
237
  var newColumnsState = {
@@ -248,18 +262,18 @@ export var getGridColDef = function getGridColDef(columnTypes, type) {
248
262
 
249
263
  return columnTypes[type];
250
264
  };
251
- export var createColumnsState = function createColumnsState(_ref5) {
265
+ export var createColumnsState = function createColumnsState(_ref7) {
252
266
  var _apiRef$current$getRo, _apiRef$current$getRo2, _apiRef$current, _apiRef$current$getRo3;
253
267
 
254
- var apiRef = _ref5.apiRef,
255
- columnsToUpsert = _ref5.columnsToUpsert,
256
- initialState = _ref5.initialState,
257
- columnTypes = _ref5.columnTypes,
258
- _ref5$currentColumnVi = _ref5.currentColumnVisibilityModel,
259
- currentColumnVisibilityModel = _ref5$currentColumnVi === void 0 ? gridColumnVisibilityModelSelector(apiRef) : _ref5$currentColumnVi,
260
- shouldRegenColumnVisibilityModelFromColumns = _ref5.shouldRegenColumnVisibilityModelFromColumns,
261
- _ref5$keepOnlyColumns = _ref5.keepOnlyColumnsToUpsert,
262
- keepOnlyColumnsToUpsert = _ref5$keepOnlyColumns === void 0 ? false : _ref5$keepOnlyColumns;
268
+ var apiRef = _ref7.apiRef,
269
+ columnsToUpsert = _ref7.columnsToUpsert,
270
+ initialState = _ref7.initialState,
271
+ columnTypes = _ref7.columnTypes,
272
+ _ref7$currentColumnVi = _ref7.currentColumnVisibilityModel,
273
+ currentColumnVisibilityModel = _ref7$currentColumnVi === void 0 ? gridColumnVisibilityModelSelector(apiRef) : _ref7$currentColumnVi,
274
+ shouldRegenColumnVisibilityModelFromColumns = _ref7.shouldRegenColumnVisibilityModelFromColumns,
275
+ _ref7$keepOnlyColumns = _ref7.keepOnlyColumnsToUpsert,
276
+ keepOnlyColumnsToUpsert = _ref7$keepOnlyColumns === void 0 ? false : _ref7$keepOnlyColumns;
263
277
  var isInsideStateInitializer = !apiRef.current.state.columns;
264
278
  var columnsStateWithoutColumnVisibilityModel;
265
279
 
@@ -304,18 +318,20 @@ export var createColumnsState = function createColumnsState(_ref5) {
304
318
  columnsStateWithoutColumnVisibilityModel.all.push(field);
305
319
  }
306
320
 
307
- var hasValidDimension = false;
308
-
309
- if (!existingState.hasBeenResized) {
310
- hasValidDimension = COLUMNS_DIMENSION_PROPERTIES.some(function (key) {
311
- return newColumn[key] !== undefined;
312
- });
313
- }
321
+ var hasBeenResized = existingState.hasBeenResized;
322
+ COLUMNS_DIMENSION_PROPERTIES.forEach(function (key) {
323
+ if (newColumn[key] !== undefined) {
324
+ hasBeenResized = true;
314
325
 
326
+ if (newColumn[key] === -1) {
327
+ newColumn[key] = Infinity;
328
+ }
329
+ }
330
+ });
315
331
  columnsStateWithoutColumnVisibilityModel.lookup[field] = _extends({}, existingState, {
316
332
  hide: newColumn.hide == null ? false : newColumn.hide
317
333
  }, newColumn, {
318
- hasBeenResized: existingState.hasBeenResized || hasValidDimension
334
+ hasBeenResized: hasBeenResized
319
335
  });
320
336
  });
321
337
 
@@ -409,4 +425,45 @@ export var mergeColumnsState = function mergeColumnsState(columnsState) {
409
425
  columns: columnsState
410
426
  });
411
427
  };
412
- };
428
+ };
429
+ export function getFirstNonSpannedColumnToRender(_ref8) {
430
+ var firstColumnToRender = _ref8.firstColumnToRender,
431
+ apiRef = _ref8.apiRef,
432
+ firstRowToRender = _ref8.firstRowToRender,
433
+ lastRowToRender = _ref8.lastRowToRender,
434
+ visibleRows = _ref8.visibleRows;
435
+ var firstNonSpannedColumnToRender = firstColumnToRender;
436
+
437
+ for (var i = firstRowToRender; i < lastRowToRender; i += 1) {
438
+ var row = visibleRows[i];
439
+
440
+ if (row) {
441
+ var rowId = visibleRows[i].id;
442
+ var cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, firstColumnToRender);
443
+
444
+ if (cellColSpanInfo && cellColSpanInfo.spannedByColSpan) {
445
+ firstNonSpannedColumnToRender = cellColSpanInfo.leftVisibleCellIndex;
446
+ }
447
+ }
448
+ }
449
+
450
+ return firstNonSpannedColumnToRender;
451
+ }
452
+ export function getFirstColumnIndexToRender(_ref9) {
453
+ var firstColumnIndex = _ref9.firstColumnIndex,
454
+ minColumnIndex = _ref9.minColumnIndex,
455
+ columnBuffer = _ref9.columnBuffer,
456
+ firstRowToRender = _ref9.firstRowToRender,
457
+ lastRowToRender = _ref9.lastRowToRender,
458
+ apiRef = _ref9.apiRef,
459
+ visibleRows = _ref9.visibleRows;
460
+ var initialFirstColumnToRender = Math.max(firstColumnIndex - columnBuffer, minColumnIndex);
461
+ var firstColumnToRender = getFirstNonSpannedColumnToRender({
462
+ firstColumnToRender: initialFirstColumnToRender,
463
+ apiRef: apiRef,
464
+ firstRowToRender: firstRowToRender,
465
+ lastRowToRender: lastRowToRender,
466
+ visibleRows: visibleRows
467
+ });
468
+ return firstColumnToRender;
469
+ }
@@ -0,0 +1,106 @@
1
+ import React from 'react';
2
+ import { useGridApiMethod } from '../../utils/useGridApiMethod';
3
+ import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
4
+
5
+ /**
6
+ * @requires useGridColumns (method, event)
7
+ * @requires useGridParamsApi (method)
8
+ */
9
+ export var useGridColumnSpanning = function useGridColumnSpanning(apiRef) {
10
+ var lookup = React.useRef({});
11
+ var setCellColSpanInfo = React.useCallback(function (rowId, columnIndex, cellColSpanInfo) {
12
+ var sizes = lookup.current;
13
+
14
+ if (!sizes[rowId]) {
15
+ sizes[rowId] = {};
16
+ }
17
+
18
+ sizes[rowId][columnIndex] = cellColSpanInfo;
19
+ }, []);
20
+ var getCellColSpanInfo = React.useCallback(function (rowId, columnIndex) {
21
+ var _lookup$current$rowId;
22
+
23
+ return (_lookup$current$rowId = lookup.current[rowId]) == null ? void 0 : _lookup$current$rowId[columnIndex];
24
+ }, []); // Calculate `colSpan` for the cell.
25
+
26
+ var calculateCellColSpan = React.useCallback(function (params) {
27
+ var columnIndex = params.columnIndex,
28
+ rowId = params.rowId,
29
+ minFirstColumnIndex = params.minFirstColumnIndex,
30
+ maxLastColumnIndex = params.maxLastColumnIndex;
31
+ var visibleColumns = apiRef.current.getVisibleColumns();
32
+ var columnsLength = visibleColumns.length;
33
+ var column = visibleColumns[columnIndex];
34
+ var colSpan = typeof column.colSpan === 'function' ? column.colSpan(apiRef.current.getCellParams(rowId, column.field)) : column.colSpan;
35
+
36
+ if (!colSpan || colSpan === 1) {
37
+ setCellColSpanInfo(rowId, columnIndex, {
38
+ spannedByColSpan: false,
39
+ cellProps: {
40
+ colSpan: 1,
41
+ width: column.computedWidth
42
+ }
43
+ });
44
+ return {
45
+ colSpan: 1
46
+ };
47
+ }
48
+
49
+ var width = column.computedWidth;
50
+
51
+ for (var j = 1; j < colSpan; j += 1) {
52
+ var nextColumnIndex = columnIndex + j; // Cells should be spanned only within their column section (left-pinned, right-pinned and unpinned).
53
+
54
+ if (nextColumnIndex >= minFirstColumnIndex && nextColumnIndex < maxLastColumnIndex) {
55
+ var nextColumn = visibleColumns[nextColumnIndex];
56
+ width += nextColumn.computedWidth;
57
+ setCellColSpanInfo(rowId, columnIndex + j, {
58
+ spannedByColSpan: true,
59
+ rightVisibleCellIndex: Math.min(columnIndex + colSpan, columnsLength - 1),
60
+ leftVisibleCellIndex: columnIndex
61
+ });
62
+ }
63
+
64
+ setCellColSpanInfo(rowId, columnIndex, {
65
+ spannedByColSpan: false,
66
+ cellProps: {
67
+ colSpan: colSpan,
68
+ width: width
69
+ }
70
+ });
71
+ }
72
+
73
+ return {
74
+ colSpan: colSpan
75
+ };
76
+ }, [apiRef, setCellColSpanInfo]); // Calculate `colSpan` for each cell in the row
77
+
78
+ var calculateColSpan = React.useCallback(function (_ref) {
79
+ var rowId = _ref.rowId,
80
+ minFirstColumn = _ref.minFirstColumn,
81
+ maxLastColumn = _ref.maxLastColumn;
82
+
83
+ for (var i = minFirstColumn; i < maxLastColumn; i += 1) {
84
+ var cellProps = calculateCellColSpan({
85
+ columnIndex: i,
86
+ rowId: rowId,
87
+ minFirstColumnIndex: minFirstColumn,
88
+ maxLastColumnIndex: maxLastColumn
89
+ });
90
+
91
+ if (cellProps.colSpan > 1) {
92
+ i += cellProps.colSpan - 1;
93
+ }
94
+ }
95
+ }, [calculateCellColSpan]);
96
+ var columnSpanningApi = {
97
+ unstable_getCellColSpanInfo: getCellColSpanInfo,
98
+ unstable_calculateColSpan: calculateColSpan
99
+ };
100
+ useGridApiMethod(apiRef, columnSpanningApi, 'GridColumnSpanningAPI');
101
+ var handleColumnReorderChange = React.useCallback(function () {
102
+ // `colSpan` needs to be recalculated after column reordering
103
+ lookup.current = {};
104
+ }, []);
105
+ useGridApiEventHandler(apiRef, 'columnOrderChange', handleColumnReorderChange);
106
+ };