@mui/x-data-grid 5.7.0 → 5.10.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 (524) hide show
  1. package/CHANGELOG.md +241 -53
  2. package/DataGrid/DataGrid.d.ts +8 -3
  3. package/DataGrid/DataGrid.js +28 -5
  4. package/DataGrid/useDataGridComponent.js +5 -5
  5. package/DataGrid/useDataGridProps.d.ts +2 -1
  6. package/LICENSE +21 -0
  7. package/README.md +6 -4
  8. package/colDef/gridBooleanColDef.d.ts +1 -1
  9. package/colDef/gridBooleanOperators.d.ts +1 -1
  10. package/colDef/gridDateColDef.d.ts +5 -9
  11. package/colDef/gridDateColDef.js +2 -2
  12. package/colDef/gridDateOperators.d.ts +1 -1
  13. package/{models/colDef → colDef}/gridDefaultColumnTypes.d.ts +1 -1
  14. package/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
  15. package/colDef/gridNumericColDef.d.ts +1 -1
  16. package/colDef/gridNumericOperators.d.ts +2 -2
  17. package/colDef/gridStringColDef.d.ts +1 -1
  18. package/colDef/gridStringOperators.d.ts +1 -1
  19. package/colDef/index.d.ts +1 -0
  20. package/colDef/index.js +2 -1
  21. package/components/GridRow.d.ts +4 -0
  22. package/components/GridRow.js +55 -24
  23. package/components/base/GridOverlays.js +4 -3
  24. package/components/cell/GridActionsCell.d.ts +5 -1
  25. package/components/cell/GridActionsCell.js +170 -21
  26. package/components/cell/GridActionsCellItem.d.ts +66 -4
  27. package/components/cell/GridActionsCellItem.js +7 -5
  28. package/components/cell/GridCell.d.ts +5 -4
  29. package/components/cell/GridCell.js +30 -9
  30. package/components/cell/GridEditInputCell.js +3 -3
  31. package/components/cell/GridEditSingleSelectCell.js +24 -15
  32. package/components/columnHeaders/GridColumnHeaderFilterIconButton.d.ts +12 -0
  33. package/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
  34. package/components/columnHeaders/GridColumnHeaderItem.js +9 -12
  35. package/components/columnHeaders/GridColumnHeaders.d.ts +0 -1
  36. package/components/columnHeaders/GridColumnHeaders.js +1 -1
  37. package/components/columnHeaders/index.d.ts +1 -0
  38. package/components/columnHeaders/index.js +1 -0
  39. package/components/columnSelection/GridCellCheckboxRenderer.d.ts +3 -3
  40. package/components/columnSelection/GridCellCheckboxRenderer.js +22 -5
  41. package/components/columnSelection/GridHeaderCheckbox.d.ts +1 -1
  42. package/components/containers/GridRoot.js +29 -17
  43. package/components/containers/GridRootStyles.js +36 -1
  44. package/components/menu/GridMenu.js +1 -0
  45. package/components/menu/columnMenu/GridColumnMenu.js +1 -1
  46. package/components/panel/GridPanel.d.ts +2 -2
  47. package/components/panel/GridPanel.js +1 -0
  48. package/components/panel/GridPreferencesPanel.js +1 -1
  49. package/components/panel/filterPanel/GridFilterForm.js +14 -10
  50. package/components/panel/filterPanel/GridFilterInputBoolean.js +13 -8
  51. package/components/panel/filterPanel/GridFilterInputSingleSelect.js +22 -15
  52. package/components/panel/filterPanel/GridFilterInputValue.js +22 -15
  53. package/components/toolbar/GridToolbarDensitySelector.js +1 -1
  54. package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
  55. package/components/virtualization/GridVirtualScroller.js +2 -0
  56. package/components/virtualization/GridVirtualScrollerContent.js +1 -3
  57. package/constants/defaultGridSlotsComponents.js +4 -2
  58. package/constants/gridClasses.d.ts +35 -3
  59. package/constants/gridClasses.js +1 -1
  60. package/constants/gridDetailPanelToggleField.d.ts +1 -0
  61. package/constants/gridDetailPanelToggleField.js +2 -0
  62. package/constants/localeTextConstants.js +3 -1
  63. package/hooks/core/index.d.ts +1 -1
  64. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +85 -0
  65. package/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
  66. package/hooks/core/pipeProcessing/index.d.ts +4 -0
  67. package/hooks/core/pipeProcessing/index.js +4 -0
  68. package/hooks/core/pipeProcessing/useGridPipeProcessing.d.ts +32 -0
  69. package/hooks/core/pipeProcessing/useGridPipeProcessing.js +108 -0
  70. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +3 -0
  71. package/{modern/hooks/core/preProcessing/useGridRegisterPreProcessor.js → hooks/core/pipeProcessing/useGridRegisterPipeApplier.js} +2 -6
  72. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +4 -0
  73. package/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeProcessor.js} +2 -6
  74. package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +27 -16
  75. package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
  76. package/hooks/core/useGridInitialization.js +2 -2
  77. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +0 -1
  78. package/hooks/features/columnHeaders/useGridColumnHeaders.js +77 -11
  79. package/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
  80. package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -1
  81. package/hooks/features/columns/gridColumnsSelector.d.ts +6 -6
  82. package/hooks/features/columns/gridColumnsUtils.d.ts +22 -4
  83. package/hooks/features/columns/gridColumnsUtils.js +105 -20
  84. package/hooks/features/columns/useGridColumnSpanning.d.ts +7 -0
  85. package/hooks/features/columns/useGridColumnSpanning.js +109 -0
  86. package/hooks/features/columns/useGridColumns.d.ts +1 -1
  87. package/hooks/features/columns/useGridColumns.js +55 -40
  88. package/hooks/features/dimensions/gridDimensionsApi.d.ts +5 -0
  89. package/hooks/features/dimensions/useGridDimensions.js +5 -4
  90. package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
  91. package/hooks/features/editRows/useGridCellEditing.new.js +40 -17
  92. package/hooks/features/editRows/useGridEditing.new.js +7 -3
  93. package/hooks/features/editRows/useGridRowEditing.new.d.ts +1 -1
  94. package/hooks/features/editRows/useGridRowEditing.new.js +44 -21
  95. package/hooks/features/events/useGridEvents.d.ts +1 -1
  96. package/hooks/features/events/useGridEvents.js +2 -0
  97. package/hooks/features/filter/gridFilterSelector.d.ts +3 -9
  98. package/hooks/features/filter/useGridFilter.js +18 -13
  99. package/hooks/features/focus/useGridFocus.js +19 -9
  100. package/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.d.ts +3 -5
  101. package/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +66 -13
  102. package/hooks/features/pagination/gridPaginationSelector.d.ts +1 -3
  103. package/hooks/features/pagination/useGridPage.js +9 -4
  104. package/hooks/features/pagination/useGridPageSize.js +3 -3
  105. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +18 -5
  106. package/hooks/features/rows/gridRowsSelector.d.ts +2 -1
  107. package/hooks/features/rows/gridRowsSelector.js +1 -0
  108. package/hooks/features/rows/gridRowsState.d.ts +4 -0
  109. package/hooks/features/rows/gridRowsUtils.d.ts +8 -0
  110. package/hooks/features/rows/gridRowsUtils.js +11 -0
  111. package/hooks/features/rows/index.d.ts +1 -0
  112. package/hooks/features/rows/index.js +1 -1
  113. package/hooks/features/rows/useGridRows.d.ts +2 -2
  114. package/hooks/features/rows/useGridRows.js +27 -7
  115. package/hooks/features/rows/useGridRowsMeta.js +7 -14
  116. package/hooks/features/scroll/useGridScroll.d.ts +2 -0
  117. package/hooks/features/scroll/useGridScroll.js +27 -14
  118. package/hooks/features/selection/gridSelectionSelector.d.ts +1 -3
  119. package/hooks/features/selection/useGridSelection.d.ts +4 -2
  120. package/hooks/features/selection/useGridSelection.js +75 -27
  121. package/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
  122. package/hooks/features/sorting/gridSortingSelector.d.ts +1 -3
  123. package/hooks/features/sorting/gridSortingUtils.d.ts +1 -2
  124. package/hooks/features/sorting/useGridSorting.js +13 -13
  125. package/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
  126. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +9 -0
  127. package/hooks/features/virtualization/useGridVirtualScroller.js +64 -27
  128. package/hooks/utils/useGridRootProps.d.ts +1 -1
  129. package/hooks/utils/useGridVisibleRows.d.ts +2 -2
  130. package/index.js +1 -1
  131. package/internals/index.d.ts +4 -6
  132. package/internals/index.js +3 -3
  133. package/legacy/DataGrid/DataGrid.js +28 -5
  134. package/legacy/DataGrid/useDataGridComponent.js +5 -5
  135. package/legacy/colDef/gridDateColDef.js +2 -2
  136. package/legacy/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
  137. package/legacy/colDef/index.js +2 -1
  138. package/legacy/components/GridRow.js +53 -24
  139. package/legacy/components/base/GridOverlays.js +4 -3
  140. package/legacy/components/cell/GridActionsCell.js +188 -27
  141. package/legacy/components/cell/GridActionsCellItem.js +7 -5
  142. package/legacy/components/cell/GridCell.js +31 -9
  143. package/legacy/components/cell/GridEditInputCell.js +3 -3
  144. package/legacy/components/cell/GridEditSingleSelectCell.js +35 -26
  145. package/legacy/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
  146. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +9 -12
  147. package/legacy/components/columnHeaders/GridColumnHeaders.js +2 -3
  148. package/legacy/components/columnHeaders/index.js +1 -0
  149. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +23 -5
  150. package/legacy/components/containers/GridRoot.js +34 -17
  151. package/legacy/components/containers/GridRootStyles.js +26 -5
  152. package/legacy/components/menu/GridMenu.js +1 -0
  153. package/legacy/components/menu/columnMenu/GridColumnMenu.js +1 -1
  154. package/legacy/components/panel/GridPanel.js +1 -0
  155. package/legacy/components/panel/GridPreferencesPanel.js +1 -1
  156. package/legacy/components/panel/filterPanel/GridFilterForm.js +14 -10
  157. package/legacy/components/panel/filterPanel/GridFilterInputBoolean.js +13 -8
  158. package/legacy/components/panel/filterPanel/GridFilterInputSingleSelect.js +22 -17
  159. package/legacy/components/panel/filterPanel/GridFilterInputValue.js +22 -17
  160. package/legacy/components/toolbar/GridToolbarDensitySelector.js +1 -1
  161. package/legacy/components/virtualization/GridVirtualScroller.js +2 -0
  162. package/legacy/components/virtualization/GridVirtualScrollerContent.js +1 -3
  163. package/legacy/constants/defaultGridSlotsComponents.js +4 -2
  164. package/legacy/constants/gridClasses.js +1 -1
  165. package/legacy/constants/gridDetailPanelToggleField.js +2 -0
  166. package/legacy/constants/localeTextConstants.js +3 -1
  167. package/legacy/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
  168. package/legacy/hooks/core/pipeProcessing/index.js +4 -0
  169. package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +119 -0
  170. package/legacy/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeApplier.js} +2 -6
  171. package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +27 -0
  172. package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
  173. package/legacy/hooks/core/useGridInitialization.js +2 -2
  174. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +90 -11
  175. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
  176. package/legacy/hooks/features/columns/gridColumnsUtils.js +120 -32
  177. package/legacy/hooks/features/columns/useGridColumnSpanning.js +107 -0
  178. package/legacy/hooks/features/columns/useGridColumns.js +55 -40
  179. package/legacy/hooks/features/dimensions/useGridDimensions.js +5 -4
  180. package/legacy/hooks/features/editRows/useGridCellEditing.new.js +36 -15
  181. package/legacy/hooks/features/editRows/useGridEditing.new.js +7 -3
  182. package/legacy/hooks/features/editRows/useGridRowEditing.new.js +53 -30
  183. package/legacy/hooks/features/events/useGridEvents.js +2 -0
  184. package/legacy/hooks/features/filter/useGridFilter.js +18 -13
  185. package/legacy/hooks/features/focus/useGridFocus.js +19 -9
  186. package/legacy/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +66 -12
  187. package/legacy/hooks/features/pagination/useGridPage.js +11 -4
  188. package/legacy/hooks/features/pagination/useGridPageSize.js +3 -3
  189. package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +18 -5
  190. package/legacy/hooks/features/rows/gridRowsSelector.js +3 -0
  191. package/legacy/hooks/features/rows/gridRowsUtils.js +13 -0
  192. package/legacy/hooks/features/rows/index.js +1 -1
  193. package/legacy/hooks/features/rows/useGridRows.js +35 -9
  194. package/legacy/hooks/features/rows/useGridRowsMeta.js +7 -14
  195. package/legacy/hooks/features/scroll/useGridScroll.js +27 -14
  196. package/legacy/hooks/features/selection/useGridSelection.js +77 -27
  197. package/legacy/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
  198. package/legacy/hooks/features/sorting/useGridSorting.js +8 -10
  199. package/legacy/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
  200. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +75 -37
  201. package/legacy/index.js +1 -1
  202. package/legacy/internals/index.js +3 -3
  203. package/legacy/locales/arSD.js +3 -1
  204. package/legacy/locales/bgBG.js +3 -1
  205. package/legacy/locales/csCZ.js +2 -0
  206. package/legacy/locales/daDK.js +37 -31
  207. package/legacy/locales/deDE.js +3 -1
  208. package/legacy/locales/elGR.js +2 -0
  209. package/legacy/locales/esES.js +2 -0
  210. package/legacy/locales/faIR.js +3 -1
  211. package/legacy/locales/fiFI.js +2 -0
  212. package/legacy/locales/frFR.js +2 -0
  213. package/legacy/locales/heIL.js +3 -1
  214. package/legacy/locales/huHU.js +122 -0
  215. package/legacy/locales/index.js +1 -0
  216. package/legacy/locales/itIT.js +2 -0
  217. package/legacy/locales/jaJP.js +2 -0
  218. package/legacy/locales/koKR.js +2 -0
  219. package/legacy/locales/nlNL.js +2 -0
  220. package/legacy/locales/plPL.js +3 -1
  221. package/legacy/locales/ptBR.js +3 -1
  222. package/legacy/locales/ruRU.js +2 -0
  223. package/legacy/locales/skSK.js +2 -0
  224. package/legacy/locales/trTR.js +3 -1
  225. package/legacy/locales/ukUA.js +2 -0
  226. package/legacy/locales/viVN.js +2 -0
  227. package/legacy/locales/zhCN.js +2 -0
  228. package/{modern/hooks/core/preProcessing/gridPreProcessingApi.js → legacy/models/api/gridColumnSpanning.js} +0 -0
  229. package/legacy/models/colDef/index.js +1 -2
  230. package/legacy/models/events/gridEvents.js +10 -3
  231. package/legacy/models/gridColumnSpanning.js +1 -0
  232. package/legacy/models/gridRows.js +1 -33
  233. package/legacy/models/index.js +2 -2
  234. package/legacy/models/params/gridPreferencePanelParams.js +1 -0
  235. package/legacy/models/params/index.js +2 -1
  236. package/locales/arSD.js +3 -1
  237. package/locales/bgBG.js +3 -1
  238. package/locales/csCZ.js +2 -0
  239. package/locales/daDK.js +33 -31
  240. package/locales/deDE.js +3 -1
  241. package/locales/elGR.js +2 -0
  242. package/locales/esES.js +2 -0
  243. package/locales/faIR.js +3 -1
  244. package/locales/fiFI.js +2 -0
  245. package/locales/frFR.js +2 -0
  246. package/locales/heIL.js +3 -1
  247. package/locales/huHU.d.ts +2 -0
  248. package/locales/huHU.js +110 -0
  249. package/locales/index.d.ts +1 -0
  250. package/locales/index.js +1 -0
  251. package/locales/itIT.js +2 -0
  252. package/locales/jaJP.js +2 -0
  253. package/locales/koKR.js +2 -0
  254. package/locales/nlNL.js +2 -0
  255. package/locales/plPL.js +3 -1
  256. package/locales/ptBR.js +3 -1
  257. package/locales/ruRU.js +2 -0
  258. package/locales/skSK.js +2 -0
  259. package/locales/trTR.js +3 -1
  260. package/locales/ukUA.js +2 -0
  261. package/locales/viVN.js +2 -0
  262. package/locales/zhCN.js +2 -0
  263. package/models/api/gridApiCommon.d.ts +3 -2
  264. package/models/api/gridColumnSpanning.d.ts +28 -0
  265. package/models/api/gridColumnSpanning.js +1 -0
  266. package/models/api/gridEditingApi.d.ts +51 -5
  267. package/models/api/gridLocaleTextApi.d.ts +1 -0
  268. package/models/api/gridParamsApi.d.ts +5 -5
  269. package/models/api/gridRowApi.d.ts +8 -2
  270. package/models/colDef/gridColDef.d.ts +38 -28
  271. package/models/colDef/index.d.ts +0 -1
  272. package/models/colDef/index.js +1 -2
  273. package/models/events/gridEventLookup.d.ts +30 -9
  274. package/models/events/gridEvents.d.ts +50 -17
  275. package/models/events/gridEvents.js +10 -3
  276. package/models/gridCell.d.ts +1 -0
  277. package/models/gridColumnSpanning.d.ts +12 -0
  278. package/models/gridColumnSpanning.js +1 -0
  279. package/models/gridEditRowModel.d.ts +1 -1
  280. package/models/gridFilterOperator.d.ts +3 -2
  281. package/models/gridIconSlotsComponent.d.ts +5 -0
  282. package/models/gridRows.d.ts +10 -18
  283. package/models/gridRows.js +1 -31
  284. package/models/gridSlotsComponent.d.ts +5 -0
  285. package/models/gridSlotsComponentsProps.d.ts +1 -0
  286. package/models/gridSortModel.d.ts +3 -4
  287. package/models/index.d.ts +1 -1
  288. package/models/index.js +2 -2
  289. package/models/params/gridCellParams.d.ts +25 -15
  290. package/models/params/gridColumnHeaderParams.d.ts +3 -2
  291. package/models/params/gridEditCellParams.d.ts +2 -3
  292. package/models/params/gridPreferencePanelParams.d.ts +3 -0
  293. package/models/params/gridPreferencePanelParams.js +1 -0
  294. package/models/params/gridRowParams.d.ts +12 -8
  295. package/models/params/gridValueOptionsParams.d.ts +3 -3
  296. package/models/params/index.d.ts +1 -0
  297. package/models/params/index.js +2 -1
  298. package/models/props/DataGridProps.d.ts +37 -17
  299. package/modern/DataGrid/DataGrid.js +28 -5
  300. package/modern/DataGrid/useDataGridComponent.js +5 -5
  301. package/modern/colDef/gridDateColDef.js +2 -2
  302. package/modern/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
  303. package/modern/colDef/index.js +2 -1
  304. package/modern/components/GridRow.js +53 -22
  305. package/modern/components/base/GridOverlays.js +4 -3
  306. package/modern/components/cell/GridActionsCell.js +168 -21
  307. package/modern/components/cell/GridActionsCellItem.js +7 -5
  308. package/modern/components/cell/GridCell.js +30 -9
  309. package/modern/components/cell/GridEditInputCell.js +3 -3
  310. package/modern/components/cell/GridEditSingleSelectCell.js +22 -13
  311. package/modern/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
  312. package/modern/components/columnHeaders/GridColumnHeaderItem.js +7 -10
  313. package/modern/components/columnHeaders/GridColumnHeaders.js +1 -1
  314. package/modern/components/columnHeaders/index.js +1 -0
  315. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +22 -5
  316. package/modern/components/containers/GridRoot.js +29 -17
  317. package/modern/components/containers/GridRootStyles.js +36 -1
  318. package/modern/components/menu/GridMenu.js +1 -0
  319. package/modern/components/menu/columnMenu/GridColumnMenu.js +1 -1
  320. package/modern/components/panel/GridPanel.js +1 -0
  321. package/modern/components/panel/GridPreferencesPanel.js +1 -1
  322. package/modern/components/panel/filterPanel/GridFilterForm.js +10 -6
  323. package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +11 -6
  324. package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +20 -13
  325. package/modern/components/panel/filterPanel/GridFilterInputValue.js +20 -13
  326. package/modern/components/toolbar/GridToolbarDensitySelector.js +1 -1
  327. package/modern/components/virtualization/GridVirtualScroller.js +2 -0
  328. package/modern/components/virtualization/GridVirtualScrollerContent.js +1 -3
  329. package/modern/constants/defaultGridSlotsComponents.js +4 -2
  330. package/modern/constants/gridClasses.js +1 -1
  331. package/modern/constants/gridDetailPanelToggleField.js +2 -0
  332. package/modern/constants/localeTextConstants.js +3 -1
  333. package/modern/hooks/core/pipeProcessing/gridPipeProcessingApi.js +1 -0
  334. package/modern/hooks/core/pipeProcessing/index.js +4 -0
  335. package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +108 -0
  336. package/modern/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
  337. package/modern/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +27 -0
  338. package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
  339. package/modern/hooks/core/useGridInitialization.js +2 -2
  340. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +77 -11
  341. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
  342. package/modern/hooks/features/columns/gridColumnsUtils.js +105 -20
  343. package/modern/hooks/features/columns/useGridColumnSpanning.js +107 -0
  344. package/modern/hooks/features/columns/useGridColumns.js +55 -40
  345. package/modern/hooks/features/dimensions/useGridDimensions.js +5 -4
  346. package/modern/hooks/features/editRows/useGridCellEditing.new.js +40 -17
  347. package/modern/hooks/features/editRows/useGridEditing.new.js +7 -3
  348. package/modern/hooks/features/editRows/useGridRowEditing.new.js +44 -21
  349. package/modern/hooks/features/events/useGridEvents.js +2 -0
  350. package/modern/hooks/features/filter/useGridFilter.js +18 -13
  351. package/modern/hooks/features/focus/useGridFocus.js +19 -9
  352. package/modern/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +64 -13
  353. package/modern/hooks/features/pagination/useGridPage.js +9 -4
  354. package/modern/hooks/features/pagination/useGridPageSize.js +3 -3
  355. package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +18 -5
  356. package/modern/hooks/features/rows/gridRowsSelector.js +1 -0
  357. package/modern/hooks/features/rows/gridRowsUtils.js +11 -0
  358. package/modern/hooks/features/rows/index.js +1 -1
  359. package/modern/hooks/features/rows/useGridRows.js +25 -5
  360. package/modern/hooks/features/rows/useGridRowsMeta.js +7 -14
  361. package/modern/hooks/features/scroll/useGridScroll.js +25 -10
  362. package/modern/hooks/features/selection/useGridSelection.js +75 -27
  363. package/modern/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
  364. package/modern/hooks/features/sorting/useGridSorting.js +13 -13
  365. package/modern/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
  366. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +64 -23
  367. package/modern/index.js +1 -1
  368. package/modern/internals/index.js +3 -3
  369. package/modern/locales/arSD.js +3 -1
  370. package/modern/locales/bgBG.js +3 -1
  371. package/modern/locales/csCZ.js +2 -0
  372. package/modern/locales/daDK.js +33 -31
  373. package/modern/locales/deDE.js +3 -1
  374. package/modern/locales/elGR.js +2 -0
  375. package/modern/locales/esES.js +2 -0
  376. package/modern/locales/faIR.js +3 -1
  377. package/modern/locales/fiFI.js +2 -0
  378. package/modern/locales/frFR.js +2 -0
  379. package/modern/locales/heIL.js +3 -1
  380. package/modern/locales/huHU.js +110 -0
  381. package/modern/locales/index.js +1 -0
  382. package/modern/locales/itIT.js +2 -0
  383. package/modern/locales/jaJP.js +2 -0
  384. package/modern/locales/koKR.js +2 -0
  385. package/modern/locales/nlNL.js +2 -0
  386. package/modern/locales/plPL.js +3 -1
  387. package/modern/locales/ptBR.js +3 -1
  388. package/modern/locales/ruRU.js +2 -0
  389. package/modern/locales/skSK.js +2 -0
  390. package/modern/locales/trTR.js +3 -1
  391. package/modern/locales/ukUA.js +2 -0
  392. package/modern/locales/viVN.js +2 -0
  393. package/modern/locales/zhCN.js +2 -0
  394. package/modern/models/api/gridColumnSpanning.js +1 -0
  395. package/modern/models/colDef/index.js +1 -2
  396. package/modern/models/events/gridEvents.js +10 -3
  397. package/modern/models/gridColumnSpanning.js +1 -0
  398. package/modern/models/gridRows.js +1 -31
  399. package/modern/models/index.js +2 -2
  400. package/modern/models/params/gridPreferencePanelParams.js +1 -0
  401. package/modern/models/params/index.js +2 -1
  402. package/node/DataGrid/DataGrid.js +28 -5
  403. package/node/DataGrid/useDataGridComponent.js +6 -6
  404. package/node/colDef/gridDateColDef.js +2 -2
  405. package/node/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
  406. package/node/colDef/index.js +13 -0
  407. package/node/components/GridRow.js +56 -24
  408. package/node/components/base/GridOverlays.js +3 -2
  409. package/node/components/cell/GridActionsCell.js +172 -21
  410. package/node/components/cell/GridActionsCellItem.js +7 -4
  411. package/node/components/cell/GridCell.js +30 -9
  412. package/node/components/cell/GridEditInputCell.js +3 -3
  413. package/node/components/cell/GridEditSingleSelectCell.js +25 -15
  414. package/node/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +23 -5
  415. package/node/components/columnHeaders/GridColumnHeaderItem.js +9 -13
  416. package/node/components/columnHeaders/GridColumnHeaders.js +1 -1
  417. package/node/components/columnHeaders/index.js +13 -0
  418. package/node/components/columnSelection/GridCellCheckboxRenderer.js +22 -5
  419. package/node/components/containers/GridRoot.js +28 -17
  420. package/node/components/containers/GridRootStyles.js +36 -1
  421. package/node/components/menu/GridMenu.js +1 -0
  422. package/node/components/menu/columnMenu/GridColumnMenu.js +1 -1
  423. package/node/components/panel/GridPanel.js +1 -0
  424. package/node/components/panel/GridPreferencesPanel.js +1 -1
  425. package/node/components/panel/filterPanel/GridFilterForm.js +15 -10
  426. package/node/components/panel/filterPanel/GridFilterInputBoolean.js +14 -8
  427. package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +23 -15
  428. package/node/components/panel/filterPanel/GridFilterInputValue.js +23 -15
  429. package/node/components/toolbar/GridToolbarDensitySelector.js +1 -1
  430. package/node/components/virtualization/GridVirtualScroller.js +2 -0
  431. package/node/components/virtualization/GridVirtualScrollerContent.js +1 -3
  432. package/node/constants/defaultGridSlotsComponents.js +3 -1
  433. package/node/constants/gridClasses.js +1 -1
  434. package/node/constants/gridDetailPanelToggleField.js +9 -0
  435. package/node/constants/localeTextConstants.js +3 -1
  436. package/node/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
  437. package/node/hooks/core/pipeProcessing/index.js +57 -0
  438. package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +124 -0
  439. package/node/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeApplier.js} +4 -7
  440. package/node/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +42 -0
  441. package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
  442. package/node/hooks/core/useGridInitialization.js +2 -2
  443. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +81 -11
  444. package/node/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
  445. package/node/hooks/features/columns/gridColumnsUtils.js +114 -25
  446. package/node/hooks/features/columns/useGridColumnSpanning.js +130 -0
  447. package/node/hooks/features/columns/useGridColumns.js +55 -40
  448. package/node/hooks/features/dimensions/useGridDimensions.js +5 -4
  449. package/node/hooks/features/editRows/useGridCellEditing.new.js +42 -17
  450. package/node/hooks/features/editRows/useGridEditing.new.js +6 -2
  451. package/node/hooks/features/editRows/useGridRowEditing.new.js +45 -21
  452. package/node/hooks/features/events/useGridEvents.js +2 -0
  453. package/node/hooks/features/filter/useGridFilter.js +18 -13
  454. package/node/hooks/features/focus/useGridFocus.js +19 -9
  455. package/node/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +69 -13
  456. package/node/hooks/features/pagination/useGridPage.js +8 -3
  457. package/node/hooks/features/pagination/useGridPageSize.js +3 -3
  458. package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +20 -5
  459. package/node/hooks/features/rows/gridRowsSelector.js +3 -1
  460. package/node/hooks/features/rows/gridRowsUtils.js +18 -0
  461. package/node/hooks/features/rows/index.js +15 -1
  462. package/node/hooks/features/rows/useGridRows.js +29 -9
  463. package/node/hooks/features/rows/useGridRowsMeta.js +7 -15
  464. package/node/hooks/features/scroll/useGridScroll.js +28 -14
  465. package/node/hooks/features/selection/useGridSelection.js +75 -26
  466. package/node/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
  467. package/node/hooks/features/sorting/useGridSorting.js +13 -13
  468. package/node/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
  469. package/node/hooks/features/virtualization/useGridVirtualScroller.js +69 -27
  470. package/node/index.js +1 -1
  471. package/node/internals/index.js +12 -12
  472. package/node/locales/arSD.js +3 -1
  473. package/node/locales/bgBG.js +3 -1
  474. package/node/locales/csCZ.js +2 -0
  475. package/node/locales/daDK.js +33 -31
  476. package/node/locales/deDE.js +3 -1
  477. package/node/locales/elGR.js +2 -0
  478. package/node/locales/esES.js +2 -0
  479. package/node/locales/faIR.js +3 -1
  480. package/node/locales/fiFI.js +2 -0
  481. package/node/locales/frFR.js +2 -0
  482. package/node/locales/heIL.js +3 -1
  483. package/node/locales/huHU.js +120 -0
  484. package/node/locales/index.js +13 -0
  485. package/node/locales/itIT.js +2 -0
  486. package/node/locales/jaJP.js +2 -0
  487. package/node/locales/koKR.js +2 -0
  488. package/node/locales/nlNL.js +2 -0
  489. package/node/locales/plPL.js +3 -1
  490. package/node/locales/ptBR.js +3 -1
  491. package/node/locales/ruRU.js +2 -0
  492. package/node/locales/skSK.js +2 -0
  493. package/node/locales/trTR.js +3 -1
  494. package/node/locales/ukUA.js +2 -0
  495. package/node/locales/viVN.js +2 -0
  496. package/node/locales/zhCN.js +2 -0
  497. package/node/models/api/gridColumnSpanning.js +5 -0
  498. package/node/models/colDef/index.js +0 -13
  499. package/node/models/events/gridEvents.js +10 -3
  500. package/node/models/gridColumnSpanning.js +5 -0
  501. package/node/models/gridRows.js +1 -34
  502. package/node/models/index.js +13 -13
  503. package/node/models/params/gridPreferencePanelParams.js +5 -0
  504. package/node/models/params/index.js +13 -0
  505. package/package.json +4 -4
  506. package/utils/domUtils.d.ts +2 -2
  507. package/components/columnHeaders/ColumnHeaderFilterIcon.d.ts +0 -5
  508. package/hooks/core/preProcessing/gridPreProcessingApi.d.ts +0 -67
  509. package/hooks/core/preProcessing/index.d.ts +0 -3
  510. package/hooks/core/preProcessing/index.js +0 -3
  511. package/hooks/core/preProcessing/useGridPreProcessing.d.ts +0 -6
  512. package/hooks/core/preProcessing/useGridPreProcessing.js +0 -53
  513. package/hooks/core/preProcessing/useGridRegisterPreProcessor.d.ts +0 -7
  514. package/hooks/features/keyboard/useGridKeyboard.d.ts +0 -10
  515. package/hooks/features/keyboard/useGridKeyboard.js +0 -70
  516. package/legacy/hooks/core/preProcessing/index.js +0 -3
  517. package/legacy/hooks/core/preProcessing/useGridPreProcessing.js +0 -62
  518. package/legacy/hooks/features/keyboard/useGridKeyboard.js +0 -70
  519. package/modern/hooks/core/preProcessing/index.js +0 -3
  520. package/modern/hooks/core/preProcessing/useGridPreProcessing.js +0 -53
  521. package/modern/hooks/features/keyboard/useGridKeyboard.js +0 -70
  522. package/node/hooks/core/preProcessing/index.js +0 -44
  523. package/node/hooks/core/preProcessing/useGridPreProcessing.js +0 -72
  524. package/node/hooks/features/keyboard/useGridKeyboard.js +0 -91
@@ -1,5 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
+ import PropTypes from 'prop-types';
3
4
  import { unstable_composeClasses as composeClasses } from '@mui/material';
4
5
  import IconButton from '@mui/material/IconButton';
5
6
  import Badge from '@mui/material/Badge';
@@ -22,9 +23,11 @@ const useUtilityClasses = ownerState => {
22
23
  return composeClasses(slots, getDataGridUtilityClass, classes);
23
24
  };
24
25
 
25
- export function ColumnHeaderFilterIcon(props) {
26
+ function GridColumnHeaderFilterIconButton(props) {
26
27
  const {
27
- counter
28
+ counter,
29
+ field,
30
+ onClick
28
31
  } = props;
29
32
  const apiRef = useGridApiContext();
30
33
  const rootProps = useGridRootProps();
@@ -47,7 +50,11 @@ export function ColumnHeaderFilterIcon(props) {
47
50
  } else {
48
51
  apiRef.current.showFilterPanel();
49
52
  }
50
- }, [apiRef]);
53
+
54
+ if (onClick) {
55
+ onClick(apiRef.current.getColumnHeaderParams(field), event);
56
+ }
57
+ }, [apiRef, field, onClick]);
51
58
 
52
59
  if (!counter) {
53
60
  return null;
@@ -77,4 +84,15 @@ export function ColumnHeaderFilterIcon(props) {
77
84
  }), counter === 1 && iconButton]
78
85
  })
79
86
  }));
80
- }
87
+ }
88
+
89
+ process.env.NODE_ENV !== "production" ? GridColumnHeaderFilterIconButton.propTypes = {
90
+ // ----------------------------- Warning --------------------------------
91
+ // | These PropTypes are generated from the TypeScript type definitions |
92
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
93
+ // ----------------------------------------------------------------------
94
+ counter: PropTypes.number,
95
+ field: PropTypes.string.isRequired,
96
+ onClick: PropTypes.func
97
+ } : void 0;
98
+ export { GridColumnHeaderFilterIconButton };
@@ -10,7 +10,6 @@ import { GridColumnHeaderSortIcon } from './GridColumnHeaderSortIcon';
10
10
  import { GridColumnHeaderTitle } from './GridColumnHeaderTitle';
11
11
  import { GridColumnHeaderSeparator } from './GridColumnHeaderSeparator';
12
12
  import { ColumnHeaderMenuIcon } from './ColumnHeaderMenuIcon';
13
- import { ColumnHeaderFilterIcon } from './ColumnHeaderFilterIcon';
14
13
  import { GridColumnHeaderMenu } from '../menu/columnMenu/GridColumnHeaderMenu';
15
14
  import { getDataGridUtilityClass } from '../../constants/gridClasses';
16
15
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
@@ -142,9 +141,10 @@ function GridColumnHeaderItem(props) {
142
141
  const sortingOrder = column.sortingOrder ?? rootProps.sortingOrder;
143
142
 
144
143
  const columnTitleIconButtons = /*#__PURE__*/_jsxs(React.Fragment, {
145
- children: [!rootProps.disableColumnFilter && /*#__PURE__*/_jsx(ColumnHeaderFilterIcon, {
144
+ children: [!rootProps.disableColumnFilter && /*#__PURE__*/_jsx(rootProps.components.ColumnHeaderFilterIconButton, _extends({
145
+ field: column.field,
146
146
  counter: filterItemsCounter
147
- }), column.sortable && !column.hideSortIcons && /*#__PURE__*/_jsx(GridColumnHeaderSortIcon, {
147
+ }, rootProps.componentsProps?.columnHeaderFilterIconButton)), column.sortable && !column.hideSortIcons && /*#__PURE__*/_jsx(GridColumnHeaderSortIcon, {
148
148
  direction: sortDirection,
149
149
  index: sortIndex,
150
150
  sortingOrder: sortingOrder
@@ -156,14 +156,11 @@ function GridColumnHeaderItem(props) {
156
156
 
157
157
  if (hasFocus && !columnMenuState.open) {
158
158
  const focusableElement = headerCellRef.current.querySelector('[tabindex="0"]');
159
-
160
- if (focusableElement) {
161
- focusableElement.focus();
162
- } else {
163
- headerCellRef.current.focus();
164
- }
159
+ const elementToFocus = focusableElement || headerCellRef.current;
160
+ elementToFocus?.focus();
161
+ apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
165
162
  }
166
- });
163
+ }, [apiRef, hasFocus]);
167
164
  const headerClassName = typeof column.headerClassName === 'function' ? column.headerClassName({
168
165
  field: column.field,
169
166
  colDef: column
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["innerRef", "className"];
3
+ const _excluded = ["className"];
4
4
  import * as React from 'react';
5
5
  import clsx from 'clsx';
6
6
  import { unstable_composeClasses as composeClasses } from '@mui/material';
@@ -1,4 +1,5 @@
1
1
  export * from './GridColumnHeaderItem';
2
2
  export * from './GridColumnHeaderSeparator';
3
3
  export * from './GridColumnHeaderSortIcon';
4
+ export * from './GridColumnHeaderFilterIconButton';
4
5
  export * from './GridColumnHeaderTitle';
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["field", "id", "value", "formattedValue", "row", "rowNode", "colDef", "isEditable", "cellMode", "hasFocus", "tabIndex", "getValue"];
3
+ const _excluded = ["field", "id", "value", "formattedValue", "row", "rowNode", "colDef", "isEditable", "cellMode", "hasFocus", "tabIndex", "getValue", "api"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { unstable_composeClasses as composeClasses } from '@mui/material';
@@ -97,6 +97,12 @@ process.env.NODE_ENV !== "production" ? GridCellCheckboxForwardRef.propTypes = {
97
97
  // | To update them edit the TypeScript types and run "yarn proptypes" |
98
98
  // ----------------------------------------------------------------------
99
99
 
100
+ /**
101
+ * GridApi that let you manipulate the grid.
102
+ * @deprecated Use the `apiRef` returned by `useGridApiContext` or `useGridApiRef` (only available in `@mui/x-data-grid-pro`)
103
+ */
104
+ api: PropTypes.any.isRequired,
105
+
100
106
  /**
101
107
  * The mode of the cell.
102
108
  */
@@ -112,16 +118,27 @@ process.env.NODE_ENV !== "production" ? GridCellCheckboxForwardRef.propTypes = {
112
118
  */
113
119
  field: PropTypes.string.isRequired,
114
120
 
121
+ /**
122
+ * A ref allowing to set imperative focus.
123
+ * It can be passed to the element that should receive focus.
124
+ * @ignore - do not document.
125
+ */
126
+ focusElementRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
127
+ current: PropTypes.shape({
128
+ focus: PropTypes.func.isRequired
129
+ })
130
+ })]),
131
+
115
132
  /**
116
133
  * The cell value formatted with the column valueFormatter.
117
134
  */
118
- formattedValue: PropTypes.any.isRequired,
135
+ formattedValue: PropTypes.any,
119
136
 
120
137
  /**
121
138
  * Get the cell value of a row and field.
122
139
  * @param {GridRowId} id The row id.
123
140
  * @param {string} field The field.
124
- * @returns {GridCellValue} The cell value.
141
+ * @returns {any} The cell value.
125
142
  * @deprecated Use `params.row` to directly access the fields you want instead.
126
143
  */
127
144
  getValue: PropTypes.func.isRequired,
@@ -144,7 +161,7 @@ process.env.NODE_ENV !== "production" ? GridCellCheckboxForwardRef.propTypes = {
144
161
  /**
145
162
  * The row model of the row that the current cell belongs to.
146
163
  */
147
- row: PropTypes.any.isRequired,
164
+ row: PropTypes.object.isRequired,
148
165
 
149
166
  /**
150
167
  * The node of the row that the current cell belongs to.
@@ -159,7 +176,7 @@ process.env.NODE_ENV !== "production" ? GridCellCheckboxForwardRef.propTypes = {
159
176
  /**
160
177
  * The cell value, but if the column has valueGetter, use getValue.
161
178
  */
162
- value: PropTypes.any.isRequired
179
+ value: PropTypes.any
163
180
  } : void 0;
164
181
  export { GridCellCheckboxForwardRef };
165
182
  export const GridCellCheckboxRenderer = /*#__PURE__*/React.memo(GridCellCheckboxForwardRef);
@@ -4,8 +4,7 @@ const _excluded = ["children", "className"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import clsx from 'clsx';
7
- import { useForkRef } from '@mui/material/utils';
8
- import NoSsr from '@mui/material/NoSsr';
7
+ import { useForkRef, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/material/utils';
9
8
  import { GridRootStyles } from './GridRootStyles';
10
9
  import { gridVisibleColumnDefinitionsSelector } from '../../hooks/features/columns/gridColumnsSelector';
11
10
  import { useGridSelector } from '../../hooks/utils/useGridSelector';
@@ -28,21 +27,34 @@ const GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {
28
27
  const totalRowCount = useGridSelector(apiRef, gridRowCountSelector);
29
28
  const rootContainerRef = React.useRef(null);
30
29
  const handleRef = useForkRef(rootContainerRef, ref);
31
- apiRef.current.rootElementRef = rootContainerRef;
32
- return /*#__PURE__*/_jsx(NoSsr, {
33
- children: /*#__PURE__*/_jsx(GridRootStyles, _extends({
34
- ref: handleRef,
35
- className: clsx(className, rootProps.classes?.root, gridClasses.root, rootProps.autoHeight && gridClasses.autoHeight),
36
- role: "grid",
37
- "aria-colcount": visibleColumns.length,
38
- "aria-rowcount": totalRowCount,
39
- "aria-multiselectable": !rootProps.disableMultipleSelection,
40
- "aria-label": rootProps['aria-label'],
41
- "aria-labelledby": rootProps['aria-labelledby']
42
- }, other, {
43
- children: children
44
- }))
45
- });
30
+ apiRef.current.rootElementRef = rootContainerRef; // Our implementation of <NoSsr />
31
+
32
+ const [mountedState, setMountedState] = React.useState(false);
33
+ useEnhancedEffect(() => {
34
+ setMountedState(true);
35
+ }, []);
36
+ useEnhancedEffect(() => {
37
+ if (mountedState) {
38
+ apiRef.current.unstable_updateGridDimensionsRef();
39
+ }
40
+ }, [apiRef, mountedState]);
41
+
42
+ if (!mountedState) {
43
+ return null;
44
+ }
45
+
46
+ return /*#__PURE__*/_jsx(GridRootStyles, _extends({
47
+ ref: handleRef,
48
+ className: clsx(className, rootProps.classes?.root, gridClasses.root, rootProps.autoHeight && gridClasses.autoHeight),
49
+ role: "grid",
50
+ "aria-colcount": visibleColumns.length,
51
+ "aria-rowcount": totalRowCount,
52
+ "aria-multiselectable": !rootProps.disableMultipleSelection,
53
+ "aria-label": rootProps['aria-label'],
54
+ "aria-labelledby": rootProps['aria-labelledby']
55
+ }, other, {
56
+ children: children
57
+ }));
46
58
  });
47
59
  process.env.NODE_ENV !== "production" ? GridRoot.propTypes = {
48
60
  // ----------------------------- Warning --------------------------------
@@ -73,8 +73,16 @@ export const GridRootStyles = styled('div', {
73
73
  [`& .${gridClasses['row--editable']}`]: styles['row--editable']
74
74
  }, {
75
75
  [`& .${gridClasses['row--editing']}`]: styles['row--editing']
76
+ }, {
77
+ [`& .${gridClasses['row--dragging']}`]: styles['row--dragging']
76
78
  }, {
77
79
  [`& .${gridClasses.row}`]: styles.row
80
+ }, {
81
+ [`& .${gridClasses.rowReorderCellPlaceholder}`]: styles.rowReorderCellPlaceholder
82
+ }, {
83
+ [`& .${gridClasses.rowReorderCell}`]: styles.rowReorderCell
84
+ }, {
85
+ [`& .${gridClasses['rowReorderCell--draggable']}`]: styles['rowReorderCell--draggable']
78
86
  }, {
79
87
  [`& .${gridClasses.sortIcon}`]: styles.sortIcon
80
88
  }, {
@@ -309,6 +317,21 @@ export const GridRootStyles = styled('div', {
309
317
  alignItems: 'center',
310
318
  gridGap: theme.spacing(1)
311
319
  },
320
+ [`& .${gridClasses.rowReorderCell}`]: {
321
+ display: 'inline-flex',
322
+ flex: 1,
323
+ alignItems: 'center',
324
+ justifyContent: 'center',
325
+ opacity: theme.palette.action.disabledOpacity
326
+ },
327
+ [`& .${gridClasses['rowReorderCell--draggable']}`]: {
328
+ cursor: 'move',
329
+ opacity: 1
330
+ },
331
+ [`& .${gridClasses.rowReorderCellContainer}`]: {
332
+ padding: 0,
333
+ alignItems: 'stretch'
334
+ },
312
335
  [`& .${gridClasses.withBorder}`]: {
313
336
  borderRight: `1px solid ${borderColor}`
314
337
  },
@@ -325,12 +348,24 @@ export const GridRootStyles = styled('div', {
325
348
  display: 'flex',
326
349
  width: '100%'
327
350
  },
328
- [`& .${gridClasses['columnHeader--dragging']}`]: {
351
+ [`& .${gridClasses.rowReorderCellPlaceholder}`]: {
352
+ display: 'none'
353
+ },
354
+ [`& .${gridClasses['columnHeader--dragging']}, & .${gridClasses['row--dragging']}`]: {
329
355
  background: theme.palette.background.paper,
330
356
  padding: '0 12px',
331
357
  borderRadius: theme.shape.borderRadius,
332
358
  opacity: theme.palette.action.disabledOpacity
333
359
  },
360
+ [`& .${gridClasses['row--dragging']}`]: {
361
+ background: theme.palette.background.paper,
362
+ padding: '0 12px',
363
+ borderRadius: theme.shape.borderRadius,
364
+ opacity: theme.palette.action.disabledOpacity,
365
+ [`& .${gridClasses.rowReorderCellPlaceholder}`]: {
366
+ display: 'flex'
367
+ }
368
+ },
334
369
  [`& .${gridClasses.treeDataGroupingCell}`]: {
335
370
  display: 'flex',
336
371
  alignItems: 'center',
@@ -93,6 +93,7 @@ const GridMenu = props => {
93
93
  placement
94
94
  }) => /*#__PURE__*/_jsx(ClickAwayListener, {
95
95
  onClickAway: onClickAway,
96
+ mouseEvent: "onMouseDown",
96
97
  children: /*#__PURE__*/_jsx(Grow, _extends({}, TransitionProps, {
97
98
  style: {
98
99
  transformOrigin: transformOrigin[placement]
@@ -30,7 +30,7 @@ const GridColumnMenu = /*#__PURE__*/React.forwardRef(function GridColumnMenu(pro
30
30
  onClick: hideMenu,
31
31
  column: currentColumn
32
32
  })];
33
- const preProcessedButtons = apiRef.current.unstable_applyPreProcessors('columnMenu', defaultButtons, currentColumn);
33
+ const preProcessedButtons = apiRef.current.unstable_applyPipeProcessors('columnMenu', defaultButtons, currentColumn);
34
34
  return /*#__PURE__*/_jsx(GridColumnMenuContainer, _extends({
35
35
  ref: ref
36
36
  }, props, {
@@ -80,6 +80,7 @@ const GridPanel = /*#__PURE__*/React.forwardRef((props, ref) => {
80
80
  modifiers: modifiers
81
81
  }, other, {
82
82
  children: /*#__PURE__*/_jsx(ClickAwayListener, {
83
+ mouseEvent: "onMouseUp",
83
84
  onClickAway: handleClickAway,
84
85
  children: /*#__PURE__*/_jsx(GridPaperRoot, {
85
86
  className: classes.paper,
@@ -12,7 +12,7 @@ export const GridPreferencesPanel = /*#__PURE__*/React.forwardRef(function GridP
12
12
  const columns = useGridSelector(apiRef, gridColumnDefinitionsSelector);
13
13
  const rootProps = useGridRootProps();
14
14
  const preferencePanelState = useGridSelector(apiRef, gridPreferencePanelStateSelector);
15
- const panelContent = apiRef.current.unstable_applyPreProcessors('preferencePanel', null, preferencePanelState.openedPanelValue ?? GridPreferencePanelsValue.filters);
15
+ const panelContent = apiRef.current.unstable_applyPipeProcessors('preferencePanel', null, preferencePanelState.openedPanelValue ?? GridPreferencePanelsValue.filters);
16
16
  return /*#__PURE__*/_jsx(rootProps.components.Panel, _extends({
17
17
  ref: ref,
18
18
  as: rootProps.components.BasePopper,
@@ -3,6 +3,7 @@ import * as React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { unstable_composeClasses as composeClasses } from '@mui/material';
5
5
  import IconButton from '@mui/material/IconButton';
6
+ import MenuItem from '@mui/material/MenuItem';
6
7
  import InputLabel from '@mui/material/InputLabel';
7
8
  import FormControl from '@mui/material/FormControl';
8
9
  import { capitalize, unstable_useId as useId } from '@mui/material/utils';
@@ -136,6 +137,9 @@ function GridFilterForm(props) {
136
137
  const filterSelectorRef = React.useRef(null);
137
138
  const hasLinkOperatorColumn = hasMultipleFilters && linkOperators.length > 0;
138
139
  const baseFormControlProps = rootProps.componentsProps?.baseFormControl || {};
140
+ const baseSelectProps = rootProps.componentsProps?.baseSelect || {};
141
+ const isBaseSelectNative = baseSelectProps.native ?? true;
142
+ const OptionComponent = isBaseSelectNative ? 'option' : MenuItem;
139
143
  const sortedFilterableColumns = React.useMemo(() => {
140
144
  switch (columnsSort) {
141
145
  case 'asc':
@@ -245,9 +249,9 @@ function GridFilterForm(props) {
245
249
  value: multiFilterOperator,
246
250
  onChange: changeLinkOperator,
247
251
  disabled: !!disableMultiFilterOperator || linkOperators.length === 1,
248
- native: true
252
+ native: isBaseSelectNative
249
253
  }, rootProps.componentsProps?.baseSelect, {
250
- children: linkOperators.map(linkOperator => /*#__PURE__*/_jsx("option", {
254
+ children: linkOperators.map(linkOperator => /*#__PURE__*/_jsx(OptionComponent, {
251
255
  value: linkOperator.toString(),
252
256
  children: apiRef.current.getLocaleText(getLinkOperatorLocaleKey(linkOperator))
253
257
  }, linkOperator.toString()))
@@ -267,9 +271,9 @@ function GridFilterForm(props) {
267
271
  label: apiRef.current.getLocaleText('filterPanelColumns'),
268
272
  value: item.columnField || '',
269
273
  onChange: changeColumn,
270
- native: true
274
+ native: isBaseSelectNative
271
275
  }, rootProps.componentsProps?.baseSelect, {
272
- children: sortedFilterableColumns.map(col => /*#__PURE__*/_jsx("option", {
276
+ children: sortedFilterableColumns.map(col => /*#__PURE__*/_jsx(OptionComponent, {
273
277
  value: col.field,
274
278
  children: getColumnLabel(col)
275
279
  }, col.field))
@@ -289,10 +293,10 @@ function GridFilterForm(props) {
289
293
  id: operatorSelectId,
290
294
  value: item.operatorValue,
291
295
  onChange: changeOperator,
292
- native: true,
296
+ native: isBaseSelectNative,
293
297
  inputRef: filterSelectorRef
294
298
  }, rootProps.componentsProps?.baseSelect, {
295
- children: currentColumn?.filterOperators?.map(operator => /*#__PURE__*/_jsx("option", {
299
+ children: currentColumn?.filterOperators?.map(operator => /*#__PURE__*/_jsx(OptionComponent, {
296
300
  value: operator.value,
297
301
  children: operator.label || apiRef.current.getLocaleText(`filterOperator${capitalize(operator.value)}`)
298
302
  }, operator.value))
@@ -2,6 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  const _excluded = ["item", "applyValue", "apiRef", "focusElementRef"];
4
4
  import * as React from 'react';
5
+ import MenuItem from '@mui/material/MenuItem';
5
6
  import { useGridRootProps } from '../../../hooks/utils/useGridRootProps';
6
7
  import { jsx as _jsx } from "react/jsx-runtime";
7
8
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -16,6 +17,9 @@ export function GridFilterInputBoolean(props) {
16
17
 
17
18
  const [filterValueState, setFilterValueState] = React.useState(item.value || '');
18
19
  const rootProps = useGridRootProps();
20
+ const baseSelectProps = rootProps.componentsProps?.baseSelect || {};
21
+ const isSelectNative = baseSelectProps.native ?? true;
22
+ const OptionComponent = isSelectNative ? 'option' : MenuItem;
19
23
  const onFilterChange = React.useCallback(event => {
20
24
  const value = event.target.value;
21
25
  setFilterValueState(value);
@@ -32,21 +36,22 @@ export function GridFilterInputBoolean(props) {
32
36
  onChange: onFilterChange,
33
37
  variant: "standard",
34
38
  select: true,
35
- SelectProps: {
36
- native: true
37
- },
39
+ SelectProps: _extends({
40
+ native: isSelectNative,
41
+ displayEmpty: true
42
+ }, rootProps.componentsProps?.baseSelect),
38
43
  InputLabelProps: {
39
44
  shrink: true
40
45
  },
41
46
  inputRef: focusElementRef
42
47
  }, others, rootProps.componentsProps?.baseTextField, {
43
- children: [/*#__PURE__*/_jsx("option", {
48
+ children: [/*#__PURE__*/_jsx(OptionComponent, {
44
49
  value: "",
45
50
  children: apiRef.current.getLocaleText('filterValueAny')
46
- }), /*#__PURE__*/_jsx("option", {
51
+ }), /*#__PURE__*/_jsx(OptionComponent, {
47
52
  value: "true",
48
53
  children: apiRef.current.getLocaleText('filterValueTrue')
49
- }), /*#__PURE__*/_jsx("option", {
54
+ }), /*#__PURE__*/_jsx(OptionComponent, {
50
55
  value: "false",
51
56
  children: apiRef.current.getLocaleText('filterValueFalse')
52
57
  })]
@@ -4,6 +4,7 @@ const _excluded = ["item", "applyValue", "type", "apiRef", "focusElementRef"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { unstable_useId as useId } from '@mui/material/utils';
7
+ import MenuItem from '@mui/material/MenuItem';
7
8
  import { useGridRootProps } from '../../../hooks/utils/useGridRootProps';
8
9
  import { getValueFromValueOptions } from './filterPanelUtils';
9
10
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -12,21 +13,25 @@ const renderSingleSelectOptions = ({
12
13
  valueOptions,
13
14
  valueFormatter,
14
15
  field
15
- }, api) => {
16
+ }, api, OptionComponent) => {
16
17
  const iterableColumnValues = typeof valueOptions === 'function' ? ['', ...valueOptions({
17
18
  field
18
19
  })] : ['', ...(valueOptions || [])];
19
- return iterableColumnValues.map(option => typeof option === 'object' ? /*#__PURE__*/_jsx("option", {
20
- value: option.value,
21
- children: option.label
22
- }, option.value) : /*#__PURE__*/_jsx("option", {
23
- value: option,
24
- children: valueFormatter && option !== '' ? valueFormatter({
20
+ return iterableColumnValues.map(option => {
21
+ const isOptionTypeObject = typeof option === 'object';
22
+ const key = isOptionTypeObject ? option.value : option;
23
+ const value = isOptionTypeObject ? option.value : option;
24
+ const formattedValue = valueFormatter && option !== '' ? valueFormatter({
25
25
  value: option,
26
26
  field,
27
27
  api
28
- }) : option
29
- }, option));
28
+ }) : option;
29
+ const content = isOptionTypeObject ? option.label : formattedValue;
30
+ return /*#__PURE__*/_jsx(OptionComponent, {
31
+ value: value,
32
+ children: content
33
+ }, key);
34
+ });
30
35
  };
31
36
 
32
37
  function GridFilterInputSingleSelect(props) {
@@ -42,6 +47,8 @@ function GridFilterInputSingleSelect(props) {
42
47
  const [filterValueState, setFilterValueState] = React.useState(item.value ?? '');
43
48
  const id = useId();
44
49
  const rootProps = useGridRootProps();
50
+ const baseSelectProps = rootProps.componentsProps?.baseSelect || {};
51
+ const isSelectNative = baseSelectProps.native ?? true;
45
52
  const currentColumn = item.columnField ? apiRef.current.getColumn(item.columnField) : null;
46
53
  const currentValueOptions = React.useMemo(() => {
47
54
  return typeof currentColumn.valueOptions === 'function' ? currentColumn.valueOptions({
@@ -90,11 +97,11 @@ function GridFilterInputSingleSelect(props) {
90
97
  },
91
98
  inputRef: focusElementRef,
92
99
  select: true,
93
- SelectProps: {
94
- native: true
95
- }
100
+ SelectProps: _extends({
101
+ native: isSelectNative
102
+ }, rootProps.componentsProps?.baseSelect)
96
103
  }, others, rootProps.componentsProps?.baseTextField, {
97
- children: renderSingleSelectOptions(apiRef.current.getColumn(item.columnField), apiRef.current)
104
+ children: renderSingleSelectOptions(apiRef.current.getColumn(item.columnField), apiRef.current, isSelectNative ? 'option' : MenuItem)
98
105
  }));
99
106
  }
100
107
 
@@ -4,6 +4,7 @@ const _excluded = ["item", "applyValue", "type", "apiRef", "focusElementRef"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { unstable_useId as useId } from '@mui/material/utils';
7
+ import MenuItem from '@mui/material/MenuItem';
7
8
  import { GridLoadIcon } from '../../icons';
8
9
  import { useGridRootProps } from '../../../hooks/utils/useGridRootProps';
9
10
  import { getValueFromValueOptions } from './filterPanelUtils';
@@ -19,21 +20,25 @@ const renderSingleSelectOptions = ({
19
20
  valueOptions,
20
21
  valueFormatter,
21
22
  field
22
- }, api) => {
23
+ }, api, OptionComponent) => {
23
24
  const iterableColumnValues = typeof valueOptions === 'function' ? ['', ...valueOptions({
24
25
  field
25
26
  })] : ['', ...(valueOptions || [])];
26
- return iterableColumnValues.map(option => typeof option === 'object' ? /*#__PURE__*/_jsx("option", {
27
- value: option.value,
28
- children: option.label
29
- }, option.value) : /*#__PURE__*/_jsx("option", {
30
- value: option,
31
- children: valueFormatter && option !== '' ? valueFormatter({
27
+ return iterableColumnValues.map(option => {
28
+ const isOptionTypeObject = typeof option === 'object';
29
+ const key = isOptionTypeObject ? option.value : option;
30
+ const value = isOptionTypeObject ? option.value : option;
31
+ const formattedValue = valueFormatter && option !== '' ? valueFormatter({
32
32
  value: option,
33
33
  field,
34
34
  api
35
- }) : option
36
- }, option));
35
+ }) : option;
36
+ const content = isOptionTypeObject ? option.label : formattedValue;
37
+ return /*#__PURE__*/_jsx(OptionComponent, {
38
+ value: value,
39
+ children: content
40
+ }, key);
41
+ });
37
42
  };
38
43
 
39
44
  export const SUBMIT_FILTER_STROKE_TIME = 500;
@@ -57,12 +62,14 @@ function GridFilterInputValue(props) {
57
62
  const [applying, setIsApplying] = React.useState(false);
58
63
  const id = useId();
59
64
  const rootProps = useGridRootProps();
65
+ const baseSelectProps = rootProps.componentsProps?.baseSelect || {};
66
+ const isSelectNative = baseSelectProps.native ?? true;
60
67
  const singleSelectProps = type === 'singleSelect' ? {
61
68
  select: true,
62
- SelectProps: {
63
- native: true
64
- },
65
- children: renderSingleSelectOptions(apiRef.current.getColumn(item.columnField), apiRef.current)
69
+ SelectProps: _extends({
70
+ native: isSelectNative
71
+ }, rootProps.componentsProps?.baseSelect),
72
+ children: renderSingleSelectOptions(apiRef.current.getColumn(item.columnField), apiRef.current, isSelectNative ? 'option' : MenuItem)
66
73
  } : {};
67
74
  const onFilterChange = React.useCallback(event => {
68
75
  let value = event.target.value; // NativeSelect casts the value to a string.
@@ -99,7 +99,7 @@ export const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function
99
99
  "aria-label": apiRef.current.getLocaleText('toolbarDensityLabel'),
100
100
  "aria-expanded": open ? 'true' : undefined,
101
101
  "aria-haspopup": "menu",
102
- "aria-labelledby": densityMenuId,
102
+ "aria-controls": densityMenuId,
103
103
  id: densityButtonId
104
104
  }, other, {
105
105
  onClick: handleDensitySelectorOpen
@@ -25,6 +25,8 @@ const VirtualScrollerRoot = styled('div', {
25
25
  overridesResolver: (props, styles) => styles.virtualScroller
26
26
  })({
27
27
  overflow: 'auto',
28
+ // See https://github.com/mui/mui-x/issues/4360
29
+ position: 'relative',
28
30
  '@media print': {
29
31
  overflow: 'hidden'
30
32
  }
@@ -24,9 +24,7 @@ const VirtualScrollerContentRoot = styled('div', {
24
24
  name: 'MuiDataGrid',
25
25
  slot: 'VirtualScrollerContent',
26
26
  overridesResolver: (props, styles) => styles.virtualScrollerContent
27
- })({
28
- position: 'relative'
29
- });
27
+ })({});
30
28
  const GridVirtualScrollerContent = /*#__PURE__*/React.forwardRef(function GridVirtualScrollerContent(props, ref) {
31
29
  const {
32
30
  className,
@@ -7,7 +7,7 @@ import MUISwitch from '@mui/material/Switch';
7
7
  import MUIButton from '@mui/material/Button';
8
8
  import MUITooltip from '@mui/material/Tooltip';
9
9
  import MUIPopper from '@mui/material/Popper';
10
- import { GridArrowDownwardIcon, GridArrowUpwardIcon, GridCell, GridCheckIcon, GridCloseIcon, GridColumnIcon, GridColumnMenu, GridColumnsPanel, GridFilterAltIcon, GridFilterListIcon, GridFilterPanel, GridFooter, GridHeader, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridPreferencesPanel, GridRow, GridSaveAltIcon, GridSeparatorIcon, GridTableRowsIcon, GridTripleDotsVerticalIcon, GridViewHeadlineIcon, GridViewStreamIcon, GridMoreVertIcon, GridExpandMoreIcon, GridKeyboardArrowRight, GridAddIcon, GridRemoveIcon } from '../components';
10
+ import { GridArrowDownwardIcon, GridArrowUpwardIcon, GridCell, GridCheckIcon, GridCloseIcon, GridColumnIcon, GridColumnMenu, GridColumnsPanel, GridFilterAltIcon, GridFilterListIcon, GridFilterPanel, GridFooter, GridHeader, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridPreferencesPanel, GridRow, GridSaveAltIcon, GridSeparatorIcon, GridTableRowsIcon, GridTripleDotsVerticalIcon, GridViewHeadlineIcon, GridViewStreamIcon, GridMoreVertIcon, GridExpandMoreIcon, GridKeyboardArrowRight, GridAddIcon, GridRemoveIcon, GridDragIcon, GridColumnHeaderFilterIconButton } from '../components';
11
11
  import { GridColumnUnsortedIcon } from '../components/columnHeaders/GridColumnUnsortedIcon';
12
12
  import { ErrorOverlay } from '../components/ErrorOverlay';
13
13
  import { GridNoResultsOverlay } from '../components/GridNoResultsOverlay';
@@ -33,7 +33,8 @@ const DEFAULT_GRID_ICON_SLOTS_COMPONENTS = {
33
33
  GroupingCriteriaCollapseIcon: GridExpandMoreIcon,
34
34
  GroupingCriteriaExpandIcon: GridKeyboardArrowRight,
35
35
  DetailPanelExpandIcon: GridAddIcon,
36
- DetailPanelCollapseIcon: GridRemoveIcon
36
+ DetailPanelCollapseIcon: GridRemoveIcon,
37
+ RowReorderIcon: GridDragIcon
37
38
  };
38
39
  /**
39
40
  * TODO: Differentiate community and pro value and interface
@@ -49,6 +50,7 @@ export const DATA_GRID_DEFAULT_SLOTS_COMPONENTS = _extends({}, DEFAULT_GRID_ICON
49
50
  BaseTooltip: MUITooltip,
50
51
  BasePopper: MUIPopper,
51
52
  Cell: GridCell,
53
+ ColumnHeaderFilterIconButton: GridColumnHeaderFilterIconButton,
52
54
  ColumnMenu: GridColumnMenu,
53
55
  ErrorOverlay,
54
56
  Footer: GridFooter,