@mui/x-data-grid 6.0.0-beta.4 → 6.0.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 (521) hide show
  1. package/CHANGELOG.md +204 -29
  2. package/DataGrid/DataGrid.js +10 -2
  3. package/DataGrid/useDataGridProps.js +25 -18
  4. package/colDef/gridSingleSelectColDef.js +13 -4
  5. package/components/GridColumnHeaders.d.ts +7 -0
  6. package/components/GridColumnHeaders.js +108 -0
  7. package/components/GridFooter.d.ts +1 -1
  8. package/components/GridFooter.js +2 -2
  9. package/components/GridHeader.js +2 -2
  10. package/components/GridLoadingOverlay.d.ts +1 -1
  11. package/components/GridNoResultsOverlay.d.ts +1 -1
  12. package/components/GridNoRowsOverlay.d.ts +1 -1
  13. package/components/GridRow.d.ts +13 -7
  14. package/components/GridRow.js +49 -31
  15. package/components/GridRowCount.d.ts +1 -1
  16. package/components/GridRowCount.js +4 -6
  17. package/components/GridScrollArea.js +4 -3
  18. package/components/GridSelectedRowCount.d.ts +1 -1
  19. package/components/GridSelectedRowCount.js +4 -6
  20. package/components/base/GridBody.d.ts +1 -4
  21. package/components/base/GridBody.js +43 -5
  22. package/components/base/GridFooterPlaceholder.js +2 -2
  23. package/components/base/GridOverlays.js +7 -7
  24. package/components/cell/GridActionsCell.js +4 -4
  25. package/components/cell/GridActionsCellItem.js +3 -3
  26. package/components/cell/GridBooleanCell.js +1 -1
  27. package/components/cell/GridCell.d.ts +2 -5
  28. package/components/cell/GridCell.js +14 -12
  29. package/components/cell/GridEditBooleanCell.js +3 -3
  30. package/components/cell/GridEditInputCell.js +3 -6
  31. package/components/cell/GridEditSingleSelectCell.d.ts +2 -8
  32. package/components/cell/GridEditSingleSelectCell.js +32 -16
  33. package/components/columnHeaders/ColumnHeaderMenuIcon.js +4 -4
  34. package/components/columnHeaders/GridBaseColumnHeaders.d.ts +7 -0
  35. package/{modern/components/columnHeaders/GridColumnHeaders.js → components/columnHeaders/GridBaseColumnHeaders.js} +14 -20
  36. package/components/columnHeaders/GridColumnHeaderFilterIconButton.js +6 -6
  37. package/components/columnHeaders/GridColumnHeaderItem.js +5 -5
  38. package/components/columnHeaders/GridColumnHeaderSeparator.js +1 -1
  39. package/components/columnHeaders/GridColumnHeaderSortIcon.js +7 -7
  40. package/components/columnHeaders/GridColumnHeaderTitle.js +10 -14
  41. package/components/columnHeaders/GridColumnHeadersInner.d.ts +1 -1
  42. package/components/columnHeaders/GridColumnHeadersInner.js +6 -6
  43. package/components/columnHeaders/GridIconButtonContainer.js +4 -6
  44. package/components/columnSelection/GridCellCheckboxRenderer.js +3 -3
  45. package/components/columnSelection/GridHeaderCheckbox.js +3 -3
  46. package/components/containers/GridFooterContainer.d.ts +1 -1
  47. package/components/containers/GridFooterContainer.js +10 -15
  48. package/components/containers/GridMainContainer.js +3 -5
  49. package/components/containers/GridOverlay.d.ts +1 -2
  50. package/components/containers/GridOverlay.js +7 -11
  51. package/components/containers/GridRoot.js +4 -5
  52. package/components/containers/GridRootStyles.d.ts +5 -1
  53. package/components/containers/GridRootStyles.js +7 -3
  54. package/components/containers/GridToolbarContainer.d.ts +1 -1
  55. package/components/containers/GridToolbarContainer.js +4 -6
  56. package/components/index.d.ts +1 -1
  57. package/components/index.js +1 -1
  58. package/components/menu/GridMenu.js +5 -7
  59. package/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.js +1 -1
  60. package/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.js +1 -1
  61. package/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.js +1 -1
  62. package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +2 -2
  63. package/components/panel/GridColumnsPanel.js +16 -18
  64. package/components/panel/GridPanel.d.ts +6 -2
  65. package/components/panel/GridPanel.js +4 -0
  66. package/components/panel/GridPanelContent.d.ts +1 -1
  67. package/components/panel/GridPanelContent.js +4 -6
  68. package/components/panel/GridPanelFooter.d.ts +1 -1
  69. package/components/panel/GridPanelFooter.js +4 -6
  70. package/components/panel/GridPanelHeader.d.ts +1 -1
  71. package/components/panel/GridPanelHeader.js +4 -6
  72. package/components/panel/GridPanelWrapper.js +3 -5
  73. package/components/panel/GridPreferencesPanel.js +4 -4
  74. package/components/panel/filterPanel/GridFilterForm.js +50 -45
  75. package/components/panel/filterPanel/GridFilterInputBoolean.js +14 -11
  76. package/components/panel/filterPanel/GridFilterInputDate.js +4 -5
  77. package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.d.ts +2 -8
  78. package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +28 -20
  79. package/components/panel/filterPanel/GridFilterInputMultipleValue.js +3 -3
  80. package/components/panel/filterPanel/GridFilterInputSingleSelect.d.ts +2 -8
  81. package/components/panel/filterPanel/GridFilterInputSingleSelect.js +53 -25
  82. package/components/panel/filterPanel/GridFilterInputValue.js +4 -5
  83. package/components/panel/filterPanel/GridFilterPanel.d.ts +5 -3
  84. package/components/panel/filterPanel/GridFilterPanel.js +35 -11
  85. package/components/panel/filterPanel/filterPanelUtils.d.ts +1 -2
  86. package/components/panel/filterPanel/filterPanelUtils.js +3 -9
  87. package/components/toolbar/GridToolbarColumnsButton.js +4 -4
  88. package/components/toolbar/GridToolbarDensitySelector.js +9 -9
  89. package/components/toolbar/GridToolbarExportContainer.js +4 -4
  90. package/components/toolbar/GridToolbarFilterButton.js +9 -11
  91. package/components/toolbar/GridToolbarQuickFilter.js +8 -7
  92. package/components/virtualization/GridVirtualScroller.d.ts +1 -1
  93. package/components/virtualization/GridVirtualScroller.js +4 -6
  94. package/components/virtualization/GridVirtualScrollerContent.d.ts +1 -1
  95. package/components/virtualization/GridVirtualScrollerContent.js +4 -4
  96. package/components/virtualization/GridVirtualScrollerRenderZone.d.ts +1 -1
  97. package/components/virtualization/GridVirtualScrollerRenderZone.js +4 -6
  98. package/constants/defaultGridSlotsComponents.js +5 -54
  99. package/constants/localeTextConstants.js +1 -0
  100. package/hooks/core/useGridLocaleText.js +2 -4
  101. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +22 -1
  102. package/hooks/features/columnHeaders/useGridColumnHeaders.js +19 -26
  103. package/hooks/features/columns/useGridColumns.d.ts +1 -1
  104. package/hooks/features/columns/useGridColumns.js +5 -5
  105. package/hooks/features/filter/useGridFilter.d.ts +1 -1
  106. package/hooks/features/filter/useGridFilter.js +5 -5
  107. package/hooks/features/statePersistence/gridStatePersistenceInterface.d.ts +2 -0
  108. package/hooks/features/virtualization/useGridVirtualScroller.js +36 -19
  109. package/index.d.ts +3 -0
  110. package/index.js +5 -1
  111. package/internals/index.d.ts +4 -1
  112. package/internals/index.js +3 -2
  113. package/internals/utils/computeSlots.d.ts +6 -0
  114. package/internals/utils/computeSlots.js +17 -0
  115. package/internals/utils/index.d.ts +2 -0
  116. package/internals/utils/index.js +2 -0
  117. package/internals/utils/slotsMigration.d.ts +4 -0
  118. package/internals/utils/slotsMigration.js +13 -0
  119. package/legacy/DataGrid/DataGrid.js +10 -2
  120. package/legacy/DataGrid/useDataGridProps.js +21 -20
  121. package/legacy/colDef/gridSingleSelectColDef.js +13 -4
  122. package/legacy/components/GridColumnHeaders.js +106 -0
  123. package/legacy/components/GridFooter.js +2 -2
  124. package/legacy/components/GridHeader.js +2 -2
  125. package/legacy/components/GridRow.js +47 -31
  126. package/legacy/components/GridRowCount.js +4 -6
  127. package/legacy/components/GridScrollArea.js +4 -3
  128. package/legacy/components/GridSelectedRowCount.js +4 -6
  129. package/legacy/components/base/GridBody.js +43 -5
  130. package/legacy/components/base/GridFooterPlaceholder.js +2 -2
  131. package/legacy/components/base/GridOverlays.js +7 -7
  132. package/legacy/components/cell/GridActionsCell.js +4 -4
  133. package/legacy/components/cell/GridActionsCellItem.js +3 -3
  134. package/legacy/components/cell/GridBooleanCell.js +2 -2
  135. package/legacy/components/cell/GridCell.js +14 -12
  136. package/legacy/components/cell/GridEditBooleanCell.js +3 -3
  137. package/legacy/components/cell/GridEditInputCell.js +3 -6
  138. package/legacy/components/cell/GridEditSingleSelectCell.js +40 -23
  139. package/legacy/components/columnHeaders/ColumnHeaderMenuIcon.js +4 -4
  140. package/legacy/components/columnHeaders/{GridColumnHeaders.js → GridBaseColumnHeaders.js} +14 -19
  141. package/legacy/components/columnHeaders/GridColumnHeaderFilterIconButton.js +6 -6
  142. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +5 -5
  143. package/legacy/components/columnHeaders/GridColumnHeaderSeparator.js +1 -1
  144. package/legacy/components/columnHeaders/GridColumnHeaderSortIcon.js +7 -7
  145. package/legacy/components/columnHeaders/GridColumnHeaderTitle.js +12 -17
  146. package/legacy/components/columnHeaders/GridColumnHeadersInner.js +6 -6
  147. package/legacy/components/columnHeaders/GridIconButtonContainer.js +4 -6
  148. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +3 -3
  149. package/legacy/components/columnSelection/GridHeaderCheckbox.js +3 -3
  150. package/legacy/components/containers/GridFooterContainer.js +10 -15
  151. package/legacy/components/containers/GridMainContainer.js +3 -5
  152. package/legacy/components/containers/GridOverlay.js +12 -17
  153. package/legacy/components/containers/GridRoot.js +5 -6
  154. package/legacy/components/containers/GridRootStyles.js +7 -3
  155. package/legacy/components/containers/GridToolbarContainer.js +4 -6
  156. package/legacy/components/index.js +1 -1
  157. package/legacy/components/menu/GridMenu.js +5 -7
  158. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.js +1 -1
  159. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.js +1 -1
  160. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.js +1 -1
  161. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +2 -2
  162. package/legacy/components/panel/GridColumnsPanel.js +16 -20
  163. package/legacy/components/panel/GridPanel.js +4 -0
  164. package/legacy/components/panel/GridPanelContent.js +4 -6
  165. package/legacy/components/panel/GridPanelFooter.js +4 -6
  166. package/legacy/components/panel/GridPanelHeader.js +4 -6
  167. package/legacy/components/panel/GridPanelWrapper.js +3 -5
  168. package/legacy/components/panel/GridPreferencesPanel.js +4 -4
  169. package/legacy/components/panel/filterPanel/GridFilterForm.js +50 -45
  170. package/legacy/components/panel/filterPanel/GridFilterInputBoolean.js +14 -11
  171. package/legacy/components/panel/filterPanel/GridFilterInputDate.js +4 -5
  172. package/legacy/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +32 -26
  173. package/legacy/components/panel/filterPanel/GridFilterInputMultipleValue.js +3 -3
  174. package/legacy/components/panel/filterPanel/GridFilterInputSingleSelect.js +52 -27
  175. package/legacy/components/panel/filterPanel/GridFilterInputValue.js +4 -5
  176. package/legacy/components/panel/filterPanel/GridFilterPanel.js +36 -10
  177. package/legacy/components/panel/filterPanel/filterPanelUtils.js +3 -9
  178. package/legacy/components/toolbar/GridToolbarColumnsButton.js +4 -4
  179. package/legacy/components/toolbar/GridToolbarDensitySelector.js +9 -9
  180. package/legacy/components/toolbar/GridToolbarExportContainer.js +4 -4
  181. package/legacy/components/toolbar/GridToolbarFilterButton.js +9 -11
  182. package/legacy/components/toolbar/GridToolbarQuickFilter.js +8 -7
  183. package/legacy/components/virtualization/GridVirtualScroller.js +4 -6
  184. package/legacy/components/virtualization/GridVirtualScrollerContent.js +4 -4
  185. package/legacy/components/virtualization/GridVirtualScrollerRenderZone.js +4 -6
  186. package/legacy/constants/defaultGridSlotsComponents.js +5 -54
  187. package/legacy/constants/localeTextConstants.js +1 -0
  188. package/legacy/hooks/core/useGridLocaleText.js +2 -4
  189. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +19 -26
  190. package/legacy/hooks/features/columns/useGridColumns.js +5 -5
  191. package/legacy/hooks/features/filter/useGridFilter.js +5 -5
  192. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +34 -17
  193. package/legacy/index.js +5 -1
  194. package/legacy/internals/index.js +3 -2
  195. package/legacy/internals/utils/computeSlots.js +16 -0
  196. package/legacy/internals/utils/index.js +2 -0
  197. package/legacy/internals/utils/slotsMigration.js +14 -0
  198. package/legacy/locales/arSD.js +15 -19
  199. package/legacy/locales/beBY.js +1 -0
  200. package/legacy/locales/bgBG.js +1 -0
  201. package/legacy/locales/csCZ.js +25 -32
  202. package/legacy/locales/daDK.js +1 -0
  203. package/legacy/locales/deDE.js +1 -0
  204. package/legacy/locales/elGR.js +1 -0
  205. package/legacy/locales/esES.js +2 -1
  206. package/legacy/locales/faIR.js +1 -0
  207. package/legacy/locales/fiFI.js +1 -0
  208. package/legacy/locales/frFR.js +1 -0
  209. package/legacy/locales/heIL.js +1 -0
  210. package/legacy/locales/huHU.js +1 -0
  211. package/legacy/locales/itIT.js +1 -0
  212. package/legacy/locales/jaJP.js +1 -0
  213. package/legacy/locales/koKR.js +1 -0
  214. package/legacy/locales/nbNO.js +1 -0
  215. package/legacy/locales/nlNL.js +1 -0
  216. package/legacy/locales/plPL.js +1 -0
  217. package/legacy/locales/ptBR.js +1 -0
  218. package/legacy/locales/roRO.js +1 -0
  219. package/legacy/locales/ruRU.js +1 -0
  220. package/legacy/locales/skSK.js +1 -0
  221. package/legacy/locales/svSE.js +1 -0
  222. package/legacy/locales/trTR.js +1 -0
  223. package/legacy/locales/ukUA.js +1 -0
  224. package/legacy/locales/urPK.js +1 -0
  225. package/legacy/locales/viVN.js +1 -0
  226. package/legacy/locales/zhCN.js +1 -0
  227. package/legacy/locales/zhTW.js +1 -0
  228. package/legacy/material/components/MUISelectOption.js +14 -0
  229. package/legacy/{components/columnHeaders → material/icons}/GridColumnUnsortedIcon.js +1 -1
  230. package/legacy/{components → material}/icons/index.js +7 -1
  231. package/legacy/material/index.js +65 -0
  232. package/legacy/models/gridFilterItem.js +2 -0
  233. package/legacy/models/params/gridRowParams.js +4 -0
  234. package/locales/arSD.js +15 -19
  235. package/locales/beBY.js +1 -0
  236. package/locales/bgBG.js +1 -0
  237. package/locales/csCZ.js +24 -31
  238. package/locales/daDK.js +1 -0
  239. package/locales/deDE.js +1 -0
  240. package/locales/elGR.js +1 -0
  241. package/locales/esES.js +2 -1
  242. package/locales/faIR.js +1 -0
  243. package/locales/fiFI.js +1 -0
  244. package/locales/frFR.js +1 -0
  245. package/locales/heIL.js +1 -0
  246. package/locales/huHU.js +1 -0
  247. package/locales/itIT.js +1 -0
  248. package/locales/jaJP.js +1 -0
  249. package/locales/koKR.js +1 -0
  250. package/locales/nbNO.js +1 -0
  251. package/locales/nlNL.js +1 -0
  252. package/locales/plPL.js +1 -0
  253. package/locales/ptBR.js +1 -0
  254. package/locales/roRO.js +1 -0
  255. package/locales/ruRU.js +1 -0
  256. package/locales/skSK.js +1 -0
  257. package/locales/svSE.js +1 -0
  258. package/locales/trTR.js +1 -0
  259. package/locales/ukUA.js +1 -0
  260. package/locales/urPK.js +1 -0
  261. package/locales/viVN.js +1 -0
  262. package/locales/zhCN.js +1 -0
  263. package/locales/zhTW.js +1 -0
  264. package/material/components/MUISelectOption.d.ts +3 -0
  265. package/material/components/MUISelectOption.js +16 -0
  266. package/{components/columnHeaders → material/icons}/GridColumnUnsortedIcon.js +1 -1
  267. package/{components → material}/icons/index.d.ts +6 -0
  268. package/{components → material}/icons/index.js +7 -1
  269. package/material/index.d.ts +57 -0
  270. package/material/index.js +65 -0
  271. package/material/package.json +6 -0
  272. package/models/api/gridLocaleTextApi.d.ts +1 -0
  273. package/models/colDef/gridColDef.d.ts +19 -1
  274. package/models/gridExport.d.ts +4 -0
  275. package/models/gridFilterItem.d.ts +2 -0
  276. package/models/gridFilterItem.js +2 -0
  277. package/models/gridFilterModel.d.ts +2 -0
  278. package/models/gridFilterOperator.d.ts +2 -0
  279. package/models/gridIconSlotsComponent.d.ts +22 -2
  280. package/models/gridSlotsComponent.d.ts +18 -1
  281. package/models/gridSlotsComponentsProps.d.ts +103 -23
  282. package/models/params/gridRowParams.d.ts +6 -0
  283. package/models/params/gridRowParams.js +4 -0
  284. package/models/props/DataGridProps.d.ts +13 -2
  285. package/modern/DataGrid/DataGrid.js +10 -2
  286. package/modern/DataGrid/useDataGridProps.js +21 -17
  287. package/modern/colDef/gridSingleSelectColDef.js +13 -4
  288. package/modern/components/GridColumnHeaders.js +108 -0
  289. package/modern/components/GridFooter.js +1 -1
  290. package/modern/components/GridHeader.js +1 -1
  291. package/modern/components/GridRow.js +49 -28
  292. package/modern/components/GridRowCount.js +4 -6
  293. package/modern/components/GridScrollArea.js +4 -3
  294. package/modern/components/GridSelectedRowCount.js +4 -6
  295. package/modern/components/base/GridBody.js +43 -5
  296. package/modern/components/base/GridFooterPlaceholder.js +1 -1
  297. package/modern/components/base/GridOverlays.js +4 -4
  298. package/modern/components/cell/GridActionsCell.js +3 -3
  299. package/modern/components/cell/GridActionsCellItem.js +2 -2
  300. package/modern/components/cell/GridBooleanCell.js +1 -1
  301. package/modern/components/cell/GridCell.js +14 -12
  302. package/modern/components/cell/GridEditBooleanCell.js +2 -2
  303. package/modern/components/cell/GridEditInputCell.js +3 -6
  304. package/modern/components/cell/GridEditSingleSelectCell.js +30 -15
  305. package/modern/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
  306. package/{components/columnHeaders/GridColumnHeaders.js → modern/components/columnHeaders/GridBaseColumnHeaders.js} +14 -20
  307. package/modern/components/columnHeaders/GridColumnHeaderFilterIconButton.js +5 -5
  308. package/modern/components/columnHeaders/GridColumnHeaderItem.js +4 -4
  309. package/modern/components/columnHeaders/GridColumnHeaderSeparator.js +1 -1
  310. package/modern/components/columnHeaders/GridColumnHeaderSortIcon.js +6 -6
  311. package/modern/components/columnHeaders/GridColumnHeaderTitle.js +9 -13
  312. package/modern/components/columnHeaders/GridColumnHeadersInner.js +6 -6
  313. package/modern/components/columnHeaders/GridIconButtonContainer.js +4 -6
  314. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +2 -2
  315. package/modern/components/columnSelection/GridHeaderCheckbox.js +2 -2
  316. package/modern/components/containers/GridFooterContainer.js +10 -15
  317. package/modern/components/containers/GridMainContainer.js +3 -5
  318. package/modern/components/containers/GridOverlay.js +7 -11
  319. package/modern/components/containers/GridRoot.js +4 -5
  320. package/modern/components/containers/GridRootStyles.js +7 -3
  321. package/modern/components/containers/GridToolbarContainer.js +4 -6
  322. package/modern/components/index.js +1 -1
  323. package/modern/components/menu/GridMenu.js +4 -6
  324. package/modern/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.js +1 -1
  325. package/modern/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.js +1 -1
  326. package/modern/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.js +1 -1
  327. package/modern/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +2 -2
  328. package/modern/components/panel/GridColumnsPanel.js +14 -16
  329. package/modern/components/panel/GridPanel.js +4 -0
  330. package/modern/components/panel/GridPanelContent.js +4 -6
  331. package/modern/components/panel/GridPanelFooter.js +4 -6
  332. package/modern/components/panel/GridPanelHeader.js +4 -6
  333. package/modern/components/panel/GridPanelWrapper.js +3 -5
  334. package/modern/components/panel/GridPreferencesPanel.js +3 -3
  335. package/modern/components/panel/filterPanel/GridFilterForm.js +49 -44
  336. package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +13 -10
  337. package/modern/components/panel/filterPanel/GridFilterInputDate.js +3 -4
  338. package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +24 -17
  339. package/modern/components/panel/filterPanel/GridFilterInputMultipleValue.js +2 -2
  340. package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +52 -24
  341. package/modern/components/panel/filterPanel/GridFilterInputValue.js +3 -4
  342. package/modern/components/panel/filterPanel/GridFilterPanel.js +34 -10
  343. package/modern/components/panel/filterPanel/filterPanelUtils.js +3 -9
  344. package/modern/components/toolbar/GridToolbarColumnsButton.js +3 -3
  345. package/modern/components/toolbar/GridToolbarDensitySelector.js +8 -8
  346. package/modern/components/toolbar/GridToolbarExportContainer.js +3 -3
  347. package/modern/components/toolbar/GridToolbarFilterButton.js +8 -10
  348. package/modern/components/toolbar/GridToolbarQuickFilter.js +7 -6
  349. package/modern/components/virtualization/GridVirtualScroller.js +4 -6
  350. package/modern/components/virtualization/GridVirtualScrollerContent.js +4 -4
  351. package/modern/components/virtualization/GridVirtualScrollerRenderZone.js +4 -6
  352. package/modern/constants/defaultGridSlotsComponents.js +5 -54
  353. package/modern/constants/localeTextConstants.js +1 -0
  354. package/modern/hooks/core/useGridLocaleText.js +2 -4
  355. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +19 -26
  356. package/modern/hooks/features/columns/useGridColumns.js +3 -3
  357. package/modern/hooks/features/filter/useGridFilter.js +3 -3
  358. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +34 -18
  359. package/modern/index.js +5 -1
  360. package/modern/internals/index.js +3 -2
  361. package/modern/internals/utils/computeSlots.js +17 -0
  362. package/modern/internals/utils/index.js +2 -0
  363. package/modern/internals/utils/slotsMigration.js +13 -0
  364. package/modern/locales/arSD.js +15 -19
  365. package/modern/locales/beBY.js +1 -0
  366. package/modern/locales/bgBG.js +1 -0
  367. package/modern/locales/csCZ.js +24 -31
  368. package/modern/locales/daDK.js +1 -0
  369. package/modern/locales/deDE.js +1 -0
  370. package/modern/locales/elGR.js +1 -0
  371. package/modern/locales/esES.js +2 -1
  372. package/modern/locales/faIR.js +1 -0
  373. package/modern/locales/fiFI.js +1 -0
  374. package/modern/locales/frFR.js +1 -0
  375. package/modern/locales/heIL.js +1 -0
  376. package/modern/locales/huHU.js +1 -0
  377. package/modern/locales/itIT.js +1 -0
  378. package/modern/locales/jaJP.js +1 -0
  379. package/modern/locales/koKR.js +1 -0
  380. package/modern/locales/nbNO.js +1 -0
  381. package/modern/locales/nlNL.js +1 -0
  382. package/modern/locales/plPL.js +1 -0
  383. package/modern/locales/ptBR.js +1 -0
  384. package/modern/locales/roRO.js +1 -0
  385. package/modern/locales/ruRU.js +1 -0
  386. package/modern/locales/skSK.js +1 -0
  387. package/modern/locales/svSE.js +1 -0
  388. package/modern/locales/trTR.js +1 -0
  389. package/modern/locales/ukUA.js +1 -0
  390. package/modern/locales/urPK.js +1 -0
  391. package/modern/locales/viVN.js +1 -0
  392. package/modern/locales/zhCN.js +1 -0
  393. package/modern/locales/zhTW.js +1 -0
  394. package/modern/material/components/MUISelectOption.js +16 -0
  395. package/modern/{components/columnHeaders → material/icons}/GridColumnUnsortedIcon.js +1 -1
  396. package/modern/{components → material}/icons/index.js +7 -1
  397. package/modern/material/index.js +65 -0
  398. package/modern/models/gridFilterItem.js +2 -0
  399. package/modern/models/params/gridRowParams.js +4 -0
  400. package/node/DataGrid/DataGrid.js +10 -2
  401. package/node/DataGrid/useDataGridProps.js +21 -17
  402. package/node/colDef/gridSingleSelectColDef.js +12 -3
  403. package/node/components/GridColumnHeaders.js +116 -0
  404. package/node/components/GridFooter.js +1 -1
  405. package/node/components/GridHeader.js +1 -1
  406. package/node/components/GridRow.js +49 -28
  407. package/node/components/GridRowCount.js +5 -7
  408. package/node/components/GridScrollArea.js +5 -4
  409. package/node/components/GridSelectedRowCount.js +5 -7
  410. package/node/components/base/GridBody.js +43 -5
  411. package/node/components/base/GridFooterPlaceholder.js +1 -1
  412. package/node/components/base/GridOverlays.js +6 -6
  413. package/node/components/cell/GridActionsCell.js +3 -3
  414. package/node/components/cell/GridActionsCellItem.js +2 -2
  415. package/node/components/cell/GridBooleanCell.js +1 -1
  416. package/node/components/cell/GridCell.js +14 -11
  417. package/node/components/cell/GridEditBooleanCell.js +2 -2
  418. package/node/components/cell/GridEditInputCell.js +3 -6
  419. package/node/components/cell/GridEditSingleSelectCell.js +28 -14
  420. package/node/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
  421. package/node/components/columnHeaders/{GridColumnHeaders.js → GridBaseColumnHeaders.js} +17 -23
  422. package/node/components/columnHeaders/GridColumnHeaderFilterIconButton.js +5 -5
  423. package/node/components/columnHeaders/GridColumnHeaderItem.js +4 -4
  424. package/node/components/columnHeaders/GridColumnHeaderSeparator.js +1 -1
  425. package/node/components/columnHeaders/GridColumnHeaderSortIcon.js +6 -6
  426. package/node/components/columnHeaders/GridColumnHeaderTitle.js +10 -14
  427. package/node/components/columnHeaders/GridColumnHeadersInner.js +7 -7
  428. package/node/components/columnHeaders/GridIconButtonContainer.js +5 -7
  429. package/node/components/columnSelection/GridCellCheckboxRenderer.js +2 -2
  430. package/node/components/columnSelection/GridHeaderCheckbox.js +2 -2
  431. package/node/components/containers/GridFooterContainer.js +11 -16
  432. package/node/components/containers/GridMainContainer.js +4 -6
  433. package/node/components/containers/GridOverlay.js +8 -12
  434. package/node/components/containers/GridRoot.js +4 -5
  435. package/node/components/containers/GridRootStyles.js +7 -3
  436. package/node/components/containers/GridToolbarContainer.js +5 -7
  437. package/node/components/index.js +1 -1
  438. package/node/components/menu/GridMenu.js +4 -6
  439. package/node/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.js +1 -1
  440. package/node/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.js +1 -1
  441. package/node/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.js +1 -1
  442. package/node/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +2 -2
  443. package/node/components/panel/GridColumnsPanel.js +14 -16
  444. package/node/components/panel/GridPanel.js +4 -0
  445. package/node/components/panel/GridPanelContent.js +5 -7
  446. package/node/components/panel/GridPanelFooter.js +5 -7
  447. package/node/components/panel/GridPanelHeader.js +5 -7
  448. package/node/components/panel/GridPanelWrapper.js +3 -5
  449. package/node/components/panel/GridPreferencesPanel.js +3 -3
  450. package/node/components/panel/filterPanel/GridFilterForm.js +48 -44
  451. package/node/components/panel/filterPanel/GridFilterInputBoolean.js +13 -10
  452. package/node/components/panel/filterPanel/GridFilterInputDate.js +3 -4
  453. package/node/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +23 -16
  454. package/node/components/panel/filterPanel/GridFilterInputMultipleValue.js +2 -2
  455. package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +50 -23
  456. package/node/components/panel/filterPanel/GridFilterInputValue.js +3 -4
  457. package/node/components/panel/filterPanel/GridFilterPanel.js +34 -10
  458. package/node/components/panel/filterPanel/filterPanelUtils.js +3 -10
  459. package/node/components/toolbar/GridToolbarColumnsButton.js +3 -3
  460. package/node/components/toolbar/GridToolbarDensitySelector.js +8 -8
  461. package/node/components/toolbar/GridToolbarExportContainer.js +3 -3
  462. package/node/components/toolbar/GridToolbarFilterButton.js +8 -10
  463. package/node/components/toolbar/GridToolbarQuickFilter.js +7 -6
  464. package/node/components/virtualization/GridVirtualScroller.js +5 -7
  465. package/node/components/virtualization/GridVirtualScrollerContent.js +5 -5
  466. package/node/components/virtualization/GridVirtualScrollerRenderZone.js +5 -7
  467. package/node/constants/defaultGridSlotsComponents.js +4 -53
  468. package/node/constants/localeTextConstants.js +1 -0
  469. package/node/hooks/core/useGridLocaleText.js +2 -4
  470. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +21 -28
  471. package/node/hooks/features/columns/useGridColumns.js +3 -3
  472. package/node/hooks/features/filter/useGridFilter.js +3 -3
  473. package/node/hooks/features/virtualization/useGridVirtualScroller.js +33 -16
  474. package/node/index.js +9 -1
  475. package/node/internals/index.js +94 -4
  476. package/node/internals/utils/computeSlots.js +23 -0
  477. package/node/internals/utils/index.js +27 -0
  478. package/node/internals/utils/slotsMigration.js +21 -0
  479. package/node/locales/arSD.js +15 -19
  480. package/node/locales/beBY.js +1 -0
  481. package/node/locales/bgBG.js +1 -0
  482. package/node/locales/csCZ.js +24 -31
  483. package/node/locales/daDK.js +1 -0
  484. package/node/locales/deDE.js +1 -0
  485. package/node/locales/elGR.js +1 -0
  486. package/node/locales/esES.js +2 -1
  487. package/node/locales/faIR.js +1 -0
  488. package/node/locales/fiFI.js +1 -0
  489. package/node/locales/frFR.js +1 -0
  490. package/node/locales/heIL.js +1 -0
  491. package/node/locales/huHU.js +1 -0
  492. package/node/locales/itIT.js +1 -0
  493. package/node/locales/jaJP.js +1 -0
  494. package/node/locales/koKR.js +1 -0
  495. package/node/locales/nbNO.js +1 -0
  496. package/node/locales/nlNL.js +1 -0
  497. package/node/locales/plPL.js +1 -0
  498. package/node/locales/ptBR.js +1 -0
  499. package/node/locales/roRO.js +1 -0
  500. package/node/locales/ruRU.js +1 -0
  501. package/node/locales/skSK.js +1 -0
  502. package/node/locales/svSE.js +1 -0
  503. package/node/locales/trTR.js +1 -0
  504. package/node/locales/ukUA.js +1 -0
  505. package/node/locales/urPK.js +1 -0
  506. package/node/locales/viVN.js +1 -0
  507. package/node/locales/zhCN.js +1 -0
  508. package/node/locales/zhTW.js +1 -0
  509. package/node/{components/DataGridColumnHeaders.js → material/components/MUISelectOption.js} +13 -35
  510. package/node/{components/columnHeaders → material/icons}/GridColumnUnsortedIcon.js +1 -1
  511. package/node/{components → material}/icons/index.js +10 -2
  512. package/node/material/index.js +73 -0
  513. package/node/models/gridFilterItem.js +2 -0
  514. package/node/models/params/gridRowParams.js +4 -0
  515. package/package.json +1 -1
  516. package/components/DataGridColumnHeaders.d.ts +0 -6
  517. package/components/DataGridColumnHeaders.js +0 -38
  518. package/components/columnHeaders/GridColumnHeaders.d.ts +0 -7
  519. package/legacy/components/DataGridColumnHeaders.js +0 -36
  520. package/modern/components/DataGridColumnHeaders.js +0 -38
  521. /package/{components/columnHeaders → material/icons}/GridColumnUnsortedIcon.d.ts +0 -0
@@ -3,7 +3,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  const _excluded = ["className"];
4
4
  import * as React from 'react';
5
5
  import clsx from 'clsx';
6
- import { styled } from '@mui/material/styles';
6
+ import { styled } from '@mui/system';
7
7
  import { unstable_composeClasses as composeClasses } from '@mui/utils';
8
8
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
9
9
  import { getDataGridUtilityClass } from '../../constants/gridClasses';
@@ -36,13 +36,11 @@ const GridVirtualScroller = /*#__PURE__*/React.forwardRef(function GridVirtualSc
36
36
  } = props,
37
37
  other = _objectWithoutPropertiesLoose(props, _excluded);
38
38
  const rootProps = useGridRootProps();
39
- const ownerState = {
40
- classes: rootProps.classes
41
- };
42
- const classes = useUtilityClasses(ownerState);
39
+ const classes = useUtilityClasses(rootProps);
43
40
  return /*#__PURE__*/_jsx(VirtualScrollerRoot, _extends({
44
41
  ref: ref,
45
- className: clsx(classes.root, className)
42
+ className: clsx(classes.root, className),
43
+ ownerState: rootProps
46
44
  }, other));
47
45
  });
48
46
  export { GridVirtualScroller };
@@ -3,7 +3,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  const _excluded = ["className", "style"];
4
4
  import * as React from 'react';
5
5
  import clsx from 'clsx';
6
- import { styled } from '@mui/material/styles';
6
+ import { styled } from '@mui/system';
7
7
  import { unstable_composeClasses as composeClasses } from '@mui/utils';
8
8
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
9
9
  import { getDataGridUtilityClass } from '../../constants/gridClasses';
@@ -30,14 +30,14 @@ const GridVirtualScrollerContent = /*#__PURE__*/React.forwardRef(function GridVi
30
30
  } = props,
31
31
  other = _objectWithoutPropertiesLoose(props, _excluded);
32
32
  const rootProps = useGridRootProps();
33
- const ownerState = {
34
- classes: rootProps.classes,
33
+ const ownerState = _extends({}, rootProps, {
35
34
  overflowedContent: !rootProps.autoHeight && style?.minHeight === 'auto'
36
- };
35
+ });
37
36
  const classes = useUtilityClasses(ownerState);
38
37
  return /*#__PURE__*/_jsx(VirtualScrollerContentRoot, _extends({
39
38
  ref: ref,
40
39
  className: clsx(classes.root, className),
40
+ ownerState: ownerState,
41
41
  style: style
42
42
  }, other));
43
43
  });
@@ -3,7 +3,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  const _excluded = ["className"];
4
4
  import * as React from 'react';
5
5
  import clsx from 'clsx';
6
- import { styled } from '@mui/material/styles';
6
+ import { styled } from '@mui/system';
7
7
  import { unstable_composeClasses as composeClasses } from '@mui/utils';
8
8
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
9
9
  import { getDataGridUtilityClass } from '../../constants/gridClasses';
@@ -33,13 +33,11 @@ const GridVirtualScrollerRenderZone = /*#__PURE__*/React.forwardRef(function Gri
33
33
  } = props,
34
34
  other = _objectWithoutPropertiesLoose(props, _excluded);
35
35
  const rootProps = useGridRootProps();
36
- const ownerState = {
37
- classes: rootProps.classes
38
- };
39
- const classes = useUtilityClasses(ownerState);
36
+ const classes = useUtilityClasses(rootProps);
40
37
  return /*#__PURE__*/_jsx(VirtualScrollerRenderZoneRoot, _extends({
41
38
  ref: ref,
42
- className: clsx(classes.root, className)
39
+ className: clsx(classes.root, className),
40
+ ownerState: rootProps
43
41
  }, other));
44
42
  });
45
43
  export { GridVirtualScrollerRenderZone };
@@ -1,64 +1,15 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import MUICheckbox from '@mui/material/Checkbox';
3
- import MUITextField from '@mui/material/TextField';
4
- import MUIFormControl from '@mui/material/FormControl';
5
- import MUISelect from '@mui/material/Select';
6
- import MUISwitch from '@mui/material/Switch';
7
- import MUIButton from '@mui/material/Button';
8
- import MUIIconButton from '@mui/material/IconButton';
9
- import MUITooltip from '@mui/material/Tooltip';
10
- import MUIPopper from '@mui/material/Popper';
11
- import { GridArrowDownwardIcon, GridArrowUpwardIcon, GridCell, GridSkeletonCell, GridCheckIcon, GridCloseIcon, GridColumnIcon, GridColumnsPanel, GridFilterAltIcon, GridFilterListIcon, GridFilterPanel, GridFooter, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridPreferencesPanel, GridRow, GridSaveAltIcon, GridSeparatorIcon, GridTableRowsIcon, GridTripleDotsVerticalIcon, GridViewHeadlineIcon, GridViewStreamIcon, GridMoreVertIcon, GridExpandMoreIcon, GridKeyboardArrowRight, GridAddIcon, GridRemoveIcon, GridDragIcon, GridColumnHeaderFilterIconButton, GridSearchIcon, GridVisibilityOffIcon, GridViewColumnIcon, GridClearIcon } from '../components';
2
+ import { GridCell, GridSkeletonCell, GridColumnsPanel, GridFilterPanel, GridFooter, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridPreferencesPanel, GridRow, GridColumnHeaderFilterIconButton } from '../components';
3
+ import { GridColumnHeaders } from '../components/GridColumnHeaders';
12
4
  import { GridColumnMenu } from '../components/menu/columnMenu/GridColumnMenu';
13
- import { GridColumnUnsortedIcon } from '../components/columnHeaders/GridColumnUnsortedIcon';
14
5
  import { GridNoResultsOverlay } from '../components/GridNoResultsOverlay';
15
- const DEFAULT_GRID_ICON_SLOTS_COMPONENTS = {
16
- BooleanCellTrueIcon: GridCheckIcon,
17
- BooleanCellFalseIcon: GridCloseIcon,
18
- ColumnMenuIcon: GridTripleDotsVerticalIcon,
19
- OpenFilterButtonIcon: GridFilterListIcon,
20
- FilterPanelDeleteIcon: GridCloseIcon,
21
- ColumnFilteredIcon: GridFilterAltIcon,
22
- ColumnSelectorIcon: GridColumnIcon,
23
- ColumnUnsortedIcon: GridColumnUnsortedIcon,
24
- ColumnSortedAscendingIcon: GridArrowUpwardIcon,
25
- ColumnSortedDescendingIcon: GridArrowDownwardIcon,
26
- ColumnResizeIcon: GridSeparatorIcon,
27
- DensityCompactIcon: GridViewHeadlineIcon,
28
- DensityStandardIcon: GridTableRowsIcon,
29
- DensityComfortableIcon: GridViewStreamIcon,
30
- ExportIcon: GridSaveAltIcon,
31
- MoreActionsIcon: GridMoreVertIcon,
32
- TreeDataCollapseIcon: GridExpandMoreIcon,
33
- TreeDataExpandIcon: GridKeyboardArrowRight,
34
- GroupingCriteriaCollapseIcon: GridExpandMoreIcon,
35
- GroupingCriteriaExpandIcon: GridKeyboardArrowRight,
36
- DetailPanelExpandIcon: GridAddIcon,
37
- DetailPanelCollapseIcon: GridRemoveIcon,
38
- RowReorderIcon: GridDragIcon,
39
- QuickFilterIcon: GridSearchIcon,
40
- QuickFilterClearIcon: GridCloseIcon,
41
- ColumnMenuHideIcon: GridVisibilityOffIcon,
42
- ColumnMenuSortAscendingIcon: GridArrowUpwardIcon,
43
- ColumnMenuSortDescendingIcon: GridArrowDownwardIcon,
44
- ColumnMenuFilterIcon: GridFilterAltIcon,
45
- ColumnMenuManageColumnsIcon: GridViewColumnIcon,
46
- ColumnMenuClearIcon: GridClearIcon
47
- };
48
- export const DATA_GRID_DEFAULT_SLOTS_COMPONENTS = _extends({}, DEFAULT_GRID_ICON_SLOTS_COMPONENTS, {
49
- BaseCheckbox: MUICheckbox,
50
- BaseTextField: MUITextField,
51
- BaseFormControl: MUIFormControl,
52
- BaseSelect: MUISelect,
53
- BaseSwitch: MUISwitch,
54
- BaseButton: MUIButton,
55
- BaseIconButton: MUIIconButton,
56
- BaseTooltip: MUITooltip,
57
- BasePopper: MUIPopper,
6
+ import materialSlots from '../material';
7
+ export const DATA_GRID_DEFAULT_SLOTS_COMPONENTS = _extends({}, materialSlots, {
58
8
  Cell: GridCell,
59
9
  SkeletonCell: GridSkeletonCell,
60
10
  ColumnHeaderFilterIconButton: GridColumnHeaderFilterIconButton,
61
11
  ColumnMenu: GridColumnMenu,
12
+ ColumnHeaders: GridColumnHeaders,
62
13
  Footer: GridFooter,
63
14
  Toolbar: null,
64
15
  PreferencesPanel: GridPreferencesPanel,
@@ -35,6 +35,7 @@ export const GRID_DEFAULT_LOCALE_TEXT = {
35
35
  columnsPanelHideAllButton: 'Hide all',
36
36
  // Filter panel text
37
37
  filterPanelAddFilter: 'Add filter',
38
+ filterPanelRemoveAll: 'Remove all',
38
39
  filterPanelDeleteIconLabel: 'Delete',
39
40
  filterPanelLogicOperator: 'Logic operator',
40
41
  filterPanelOperator: 'Operator',
@@ -1,5 +1,4 @@
1
1
  import * as React from 'react';
2
- import { useGridApiMethod } from '../utils/useGridApiMethod';
3
2
  export const useGridLocaleText = (apiRef, props) => {
4
3
  const getLocaleText = React.useCallback(key => {
5
4
  if (props.localeText[key] == null) {
@@ -7,8 +6,7 @@ export const useGridLocaleText = (apiRef, props) => {
7
6
  }
8
7
  return props.localeText[key];
9
8
  }, [props.localeText]);
10
- const localeTextApi = {
9
+ apiRef.current.register('public', {
11
10
  getLocaleText
12
- };
13
- useGridApiMethod(apiRef, localeTextApi, 'public');
11
+ });
14
12
  };
@@ -2,16 +2,9 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import * as ReactDOM from 'react-dom';
4
4
  import { unstable_useForkRef as useForkRef } from '@mui/utils';
5
- import { styled, useTheme } from '@mui/material/styles';
5
+ import { styled, useTheme } from '@mui/system';
6
6
  import { defaultMemoize } from 'reselect';
7
7
  import { useGridPrivateApiContext } from '../../utils/useGridPrivateApiContext';
8
- import { useGridSelector } from '../../utils/useGridSelector';
9
- import { gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector, gridColumnVisibilityModelSelector } from '../columns/gridColumnsSelector';
10
- import { gridTabIndexColumnHeaderSelector, gridTabIndexCellSelector, gridFocusColumnHeaderSelector, unstable_gridFocusColumnGroupHeaderSelector, unstable_gridTabIndexColumnGroupHeaderSelector } from '../focus/gridFocusStateSelector';
11
- import { gridDensityFactorSelector } from '../density/densitySelector';
12
- import { gridFilterActiveItemsLookupSelector } from '../filter/gridFilterSelector';
13
- import { gridSortColumnLookupSelector } from '../sorting/gridSortingSelector';
14
- import { gridColumnMenuSelector } from '../columnMenu/columnMenuSelector';
15
8
  import { useGridRootProps } from '../../utils/useGridRootProps';
16
9
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
17
10
  import { GridColumnHeaderItem } from '../../../components/columnHeaders/GridColumnHeaderItem';
@@ -19,7 +12,6 @@ import { getFirstColumnIndexToRender, getTotalHeaderHeight } from '../columns/gr
19
12
  import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
20
13
  import { getRenderableIndexes } from '../virtualization/useGridVirtualScroller';
21
14
  import { GridColumnGroupHeader } from '../../../components/columnHeaders/GridColumnGroupHeader';
22
- import { gridColumnGroupsHeaderMaxDepthSelector, gridColumnGroupsHeaderStructureSelector } from '../columnGrouping/gridColumnGroupsSelector';
23
15
  import { jsx as _jsx } from "react/jsx-runtime";
24
16
  const GridColumnHeaderRow = styled('div', {
25
17
  name: 'MuiDataGrid',
@@ -34,26 +26,26 @@ function isUIEvent(event) {
34
26
  export const useGridColumnHeaders = props => {
35
27
  const {
36
28
  innerRef: innerRefProp,
37
- minColumnIndex = 0
29
+ minColumnIndex = 0,
30
+ visibleColumns,
31
+ sortColumnLookup,
32
+ filterColumnLookup,
33
+ columnPositions,
34
+ columnHeaderTabIndexState,
35
+ columnGroupHeaderTabIndexState,
36
+ columnHeaderFocus,
37
+ columnGroupHeaderFocus,
38
+ densityFactor,
39
+ headerGroupingMaxDepth,
40
+ columnMenuState,
41
+ columnVisibility,
42
+ columnGroupsHeaderStructure,
43
+ hasOtherElementInTabSequence
38
44
  } = props;
39
45
  const theme = useTheme();
40
46
  const [dragCol, setDragCol] = React.useState('');
41
47
  const [resizeCol, setResizeCol] = React.useState('');
42
48
  const apiRef = useGridPrivateApiContext();
43
- const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
44
- const columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector);
45
- const columnHeaderTabIndexState = useGridSelector(apiRef, gridTabIndexColumnHeaderSelector);
46
- const cellTabIndexState = useGridSelector(apiRef, gridTabIndexCellSelector);
47
- const columnGroupHeaderTabIndexState = useGridSelector(apiRef, unstable_gridTabIndexColumnGroupHeaderSelector);
48
- const columnHeaderFocus = useGridSelector(apiRef, gridFocusColumnHeaderSelector);
49
- const columnGroupHeaderFocus = useGridSelector(apiRef, unstable_gridFocusColumnGroupHeaderSelector);
50
- const densityFactor = useGridSelector(apiRef, gridDensityFactorSelector);
51
- const headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector);
52
- const filterColumnLookup = useGridSelector(apiRef, gridFilterActiveItemsLookupSelector);
53
- const sortColumnLookup = useGridSelector(apiRef, gridSortColumnLookupSelector);
54
- const columnMenuState = useGridSelector(apiRef, gridColumnMenuSelector);
55
- const columnVisibility = useGridSelector(apiRef, gridColumnVisibilityModelSelector);
56
- const columnGroupsHeaderStructure = useGridSelector(apiRef, gridColumnGroupsHeaderStructureSelector);
57
49
  const rootProps = useGridRootProps();
58
50
  const innerRef = React.useRef(null);
59
51
  const handleInnerRef = useForkRef(innerRefProp, innerRef);
@@ -198,8 +190,7 @@ export const useGridColumnHeaders = props => {
198
190
  const colDef = renderedColumns[i];
199
191
  const columnIndex = firstColumnToRender + i;
200
192
  const isFirstColumn = columnIndex === 0;
201
- const hasTabbableElement = !(columnGroupHeaderTabIndexState === null && columnHeaderTabIndexState === null && cellTabIndexState === null);
202
- const tabIndex = columnHeaderTabIndexState !== null && columnHeaderTabIndexState.field === colDef.field || isFirstColumn && !hasTabbableElement ? 0 : -1;
193
+ const tabIndex = columnHeaderTabIndexState !== null && columnHeaderTabIndexState.field === colDef.field || isFirstColumn && !hasOtherElementInTabSequence ? 0 : -1;
203
194
  const hasFocus = columnHeaderFocus !== null && columnHeaderFocus.field === colDef.field;
204
195
  const open = columnMenuState.open && columnMenuState.field === colDef.field;
205
196
  columns.push( /*#__PURE__*/_jsx(GridColumnHeaderItem, _extends({}, sortColumnLookup[colDef.field], {
@@ -217,6 +208,7 @@ export const useGridColumnHeaders = props => {
217
208
  return /*#__PURE__*/_jsx(GridColumnHeaderRow, {
218
209
  role: "row",
219
210
  "aria-rowindex": headerGroupingMaxDepth + 1,
211
+ ownerState: rootProps,
220
212
  children: columns
221
213
  });
222
214
  };
@@ -285,6 +277,7 @@ export const useGridColumnHeaders = props => {
285
277
  },
286
278
  role: "row",
287
279
  "aria-rowindex": depthIndex + 1,
280
+ ownerState: rootProps,
288
281
  children: depthInfo.elements.map(({
289
282
  groupId,
290
283
  width,
@@ -217,11 +217,11 @@ export function useGridColumns(apiRef, props) {
217
217
  }, [apiRef, columnTypes]);
218
218
  const preferencePanelPreProcessing = React.useCallback((initialValue, value) => {
219
219
  if (value === GridPreferencePanelsValue.columns) {
220
- const ColumnsPanel = props.components.ColumnsPanel;
221
- return /*#__PURE__*/_jsx(ColumnsPanel, _extends({}, props.componentsProps?.columnsPanel));
220
+ const ColumnsPanel = props.slots.columnsPanel;
221
+ return /*#__PURE__*/_jsx(ColumnsPanel, _extends({}, props.slotProps?.columnsPanel));
222
222
  }
223
223
  return initialValue;
224
- }, [props.components.ColumnsPanel, props.componentsProps?.columnsPanel]);
224
+ }, [props.slots.columnsPanel, props.slotProps?.columnsPanel]);
225
225
  const addColumnMenuItems = React.useCallback(columnMenuItems => {
226
226
  if (props.disableColumnSelector) {
227
227
  return columnMenuItems;
@@ -225,11 +225,11 @@ export const useGridFilter = (apiRef, props) => {
225
225
  }, [apiRef, props.disableMultipleColumnsFiltering]);
226
226
  const preferencePanelPreProcessing = React.useCallback((initialValue, value) => {
227
227
  if (value === GridPreferencePanelsValue.filters) {
228
- const FilterPanel = props.components.FilterPanel;
229
- return /*#__PURE__*/_jsx(FilterPanel, _extends({}, props.componentsProps?.filterPanel));
228
+ const FilterPanel = props.slots.filterPanel;
229
+ return /*#__PURE__*/_jsx(FilterPanel, _extends({}, props.slotProps?.filterPanel));
230
230
  }
231
231
  return initialValue;
232
- }, [props.components.FilterPanel, props.componentsProps?.filterPanel]);
232
+ }, [props.slots.filterPanel, props.slotProps?.filterPanel]);
233
233
  const flatFilteringMethod = React.useCallback(params => {
234
234
  if (props.filterMode === 'client' && params.isRowMatchingFilters) {
235
235
  const tree = gridRowTreeSelector(apiRef);
@@ -7,12 +7,12 @@ import * as React from 'react';
7
7
  import * as ReactDOM from 'react-dom';
8
8
  import { unstable_useForkRef as useForkRef, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';
9
9
  import { useTheme } from '@mui/material/styles';
10
+ import { defaultMemoize } from 'reselect';
10
11
  import { useGridPrivateApiContext } from '../../utils/useGridPrivateApiContext';
11
12
  import { useGridRootProps } from '../../utils/useGridRootProps';
12
13
  import { useGridSelector } from '../../utils/useGridSelector';
13
14
  import { gridVisibleColumnDefinitionsSelector, gridColumnsTotalWidthSelector, gridColumnPositionsSelector } from '../columns/gridColumnsSelector';
14
15
  import { gridFocusCellSelector, gridTabIndexCellSelector } from '../focus/gridFocusStateSelector';
15
- import { gridEditRowsStateSelector } from '../editing/gridEditingSelectors';
16
16
  import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
17
17
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
18
18
  import { clamp } from '../../../utils/utils';
@@ -20,9 +20,8 @@ import { selectedIdsLookupSelector } from '../rowSelection/gridRowSelectionSelec
20
20
  import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
21
21
  import { getFirstNonSpannedColumnToRender } from '../columns/gridColumnsUtils';
22
22
  import { getMinimalContentHeight } from '../rows/gridRowsUtils';
23
-
24
- // Uses binary search to avoid looping through all possible positions
25
23
  import { jsx as _jsx } from "react/jsx-runtime";
24
+ // Uses binary search to avoid looping through all possible positions
26
25
  export function binarySearch(offset, positions, sliceStart = 0, sliceEnd = positions.length) {
27
26
  if (positions.length <= 0) {
28
27
  return -1;
@@ -75,7 +74,6 @@ export const useGridVirtualScroller = props => {
75
74
  const cellFocus = useGridSelector(apiRef, gridFocusCellSelector);
76
75
  const cellTabIndex = useGridSelector(apiRef, gridTabIndexCellSelector);
77
76
  const rowsMeta = useGridSelector(apiRef, gridRowsMetaSelector);
78
- const editRowsState = useGridSelector(apiRef, gridEditRowsStateSelector);
79
77
  const selectedRowsLookup = useGridSelector(apiRef, selectedIdsLookupSelector);
80
78
  const currentPage = useGridVisibleRows(apiRef, rootProps);
81
79
  const renderZoneRef = React.useRef(null);
@@ -92,6 +90,12 @@ export const useGridVirtualScroller = props => {
92
90
  height: null
93
91
  });
94
92
  const prevTotalWidth = React.useRef(columnsTotalWidth);
93
+ const rowStyleCache = React.useRef({});
94
+ const prevGetRowProps = React.useRef();
95
+ const prevRootRowStyle = React.useRef();
96
+ const getRenderedColumnsRef = React.useRef(defaultMemoize((columns, firstColumnToRender, lastColumnToRender) => {
97
+ return columns.slice(firstColumnToRender, lastColumnToRender);
98
+ }));
95
99
  const getNearestIndexToRender = React.useCallback(offset => {
96
100
  const lastMeasuredIndexRelativeToAllRows = apiRef.current.getLastMeasuredRowIndex();
97
101
  let allRowsMeasured = lastMeasuredIndexRelativeToAllRows === Infinity;
@@ -359,7 +363,16 @@ export const useGridVirtualScroller = props => {
359
363
  lastRowToRender,
360
364
  visibleRows: currentPage.rows
361
365
  });
362
- const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
366
+ const renderedColumns = getRenderedColumnsRef.current(visibleColumns, firstColumnToRender, lastColumnToRender);
367
+ const _ref = rootProps.slotProps?.row || {},
368
+ {
369
+ style: rootRowStyle
370
+ } = _ref,
371
+ rootRowProps = _objectWithoutPropertiesLoose(_ref, _excluded);
372
+ const invalidatesCachedRowStyle = prevGetRowProps.current !== getRowProps || prevRootRowStyle.current !== rootRowStyle;
373
+ if (invalidatesCachedRowStyle) {
374
+ rowStyleCache.current = {};
375
+ }
363
376
  const rows = [];
364
377
  for (let i = 0; i < renderedRows.length; i += 1) {
365
378
  const {
@@ -374,26 +387,27 @@ export const useGridVirtualScroller = props => {
374
387
  } else {
375
388
  isSelected = apiRef.current.isRowSelectable(id);
376
389
  }
377
- const _ref = rootProps.componentsProps?.row || {},
378
- {
379
- style: rootRowStyle
380
- } = _ref,
381
- rootRowProps = _objectWithoutPropertiesLoose(_ref, _excluded);
390
+ const focusedCell = cellFocus !== null && cellFocus.id === id ? cellFocus.field : null;
391
+ let tabbableCell = null;
392
+ if (cellTabIndex !== null && cellTabIndex.id === id) {
393
+ const cellParams = apiRef.current.getCellParams(id, cellTabIndex.field);
394
+ tabbableCell = cellParams.cellMode === 'view' ? cellTabIndex.field : null;
395
+ }
382
396
  const _ref2 = typeof getRowProps === 'function' && getRowProps(id, model) || {},
383
397
  {
384
398
  style: rowStyle
385
399
  } = _ref2,
386
400
  rowProps = _objectWithoutPropertiesLoose(_ref2, _excluded2);
387
- rows.push( /*#__PURE__*/_jsx(rootProps.components.Row, _extends({
401
+ if (!rowStyleCache.current[id]) {
402
+ const style = _extends({}, rowStyle, rootRowStyle);
403
+ rowStyleCache.current[id] = style;
404
+ }
405
+ rows.push( /*#__PURE__*/_jsx(rootProps.slots.row, _extends({
388
406
  row: model,
389
407
  rowId: id,
390
408
  rowHeight: baseRowHeight,
391
- cellFocus: cellFocus // TODO move to inside the row
392
- ,
393
- cellTabIndex: cellTabIndex // TODO move to inside the row
394
- ,
395
- editRowsState: editRowsState // TODO move to inside the row
396
- ,
409
+ focusedCell: focusedCell,
410
+ tabbableCell: tabbableCell,
397
411
  renderedColumns: renderedColumns,
398
412
  visibleColumns: visibleColumns,
399
413
  firstColumnToRender: firstColumnToRender,
@@ -404,9 +418,11 @@ export const useGridVirtualScroller = props => {
404
418
  isLastVisible: lastVisibleRowIndex,
405
419
  position: position
406
420
  }, rowProps, rootRowProps, {
407
- style: _extends({}, rowStyle, rootRowStyle)
421
+ style: rowStyleCache.current[id]
408
422
  }), id));
409
423
  }
424
+ prevGetRowProps.current = getRowProps;
425
+ prevRootRowStyle.current = rootRowStyle;
410
426
  return rows;
411
427
  };
412
428
  const needsHorizontalScrollbar = containerDimensions.width && columnsTotalWidth > containerDimensions.width;
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v6.0.0-beta.4
2
+ * @mui/x-data-grid v6.0.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -17,6 +17,8 @@ export * from './models';
17
17
  export * from './context';
18
18
  export * from './colDef';
19
19
  export * from './utils';
20
+ export { GridColumnHeaders } from './components/GridColumnHeaders';
21
+
20
22
  /**
21
23
  * Reexportable components.
22
24
  */
@@ -24,4 +26,6 @@ export { GridColumnMenu, GRID_COLUMN_MENU_COMPONENTS, GRID_COLUMN_MENU_COMPONENT
24
26
 
25
27
  /**
26
28
  * The full grid API.
29
+ * @demos
30
+ * - [API object](/x/react-data-grid/api-object/)
27
31
  */
@@ -1,7 +1,7 @@
1
1
  export { GridVirtualScroller } from '../components/virtualization/GridVirtualScroller';
2
2
  export { GridVirtualScrollerContent } from '../components/virtualization/GridVirtualScrollerContent';
3
3
  export { GridVirtualScrollerRenderZone } from '../components/virtualization/GridVirtualScrollerRenderZone';
4
- export { GridColumnHeaders } from '../components/columnHeaders/GridColumnHeaders';
4
+ export { GridBaseColumnHeaders } from '../components/columnHeaders/GridBaseColumnHeaders';
5
5
  export { GridColumnHeadersInner } from '../components/columnHeaders/GridColumnHeadersInner';
6
6
  export { DATA_GRID_DEFAULT_SLOTS_COMPONENTS } from '../constants/defaultGridSlotsComponents';
7
7
  export { useGridRegisterPipeProcessor } from '../hooks/core/pipeProcessing';
@@ -50,4 +50,5 @@ export { isNavigationKey } from '../utils/keyboardUtils';
50
50
  export { clamp, isDeepEqual, isNumber, isFunction, isObject } from '../utils/utils';
51
51
  export { buildWarning } from '../utils/warning';
52
52
  export { exportAs } from '../utils/exportAs';
53
- export { useGridPrivateApiContext } from '../hooks/utils/useGridPrivateApiContext';
53
+ export { useGridPrivateApiContext } from '../hooks/utils/useGridPrivateApiContext';
54
+ export * from './utils';
@@ -0,0 +1,17 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import { uncapitalizeObjectKeys } from './slotsMigration';
3
+
4
+ // TODO v7: Remove `components` and usages of `UncapitalizeObjectKeys` type
5
+ // after converting keys in Grid(Pro|Premium)SlotsComponent to camelCase.
6
+ // https://github.com/mui/mui-x/issues/7940
7
+ export function computeSlots({
8
+ defaultSlots,
9
+ slots,
10
+ components
11
+ }) {
12
+ const overrides = slots ?? (components ? uncapitalizeObjectKeys(components) : null);
13
+ if (!overrides || Object.keys(overrides).length === 0) {
14
+ return defaultSlots;
15
+ }
16
+ return _extends({}, defaultSlots, overrides);
17
+ }
@@ -0,0 +1,2 @@
1
+ export * from './computeSlots';
2
+ export * from './slotsMigration';
@@ -0,0 +1,13 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ // TODO v7: This file exist only to simplify typing between
3
+ // components/componentsProps and slots/slotProps
4
+ // Should be deleted when components/componentsProps are removed
5
+
6
+ export const uncapitalizeObjectKeys = capitalizedObject => {
7
+ if (capitalizedObject === undefined) {
8
+ return undefined;
9
+ }
10
+ return Object.keys(capitalizedObject).reduce((acc, key) => _extends({}, acc, {
11
+ [`${key.charAt(0).toLowerCase()}${key.slice(1)}`]: capitalizedObject[key]
12
+ }), {});
13
+ };
@@ -20,17 +20,15 @@ const arSDGrid = {
20
20
  toolbarFiltersTooltipShow: 'اظهر المرشِحات',
21
21
  toolbarFiltersTooltipActive: count => count !== 1 ? `${count} من المرشِحات النشطة` : `مرشِح نشط`,
22
22
  // Quick filter toolbar field
23
- // toolbarQuickFilterPlaceholder: 'Search…',
24
- // toolbarQuickFilterLabel: 'Search',
25
- // toolbarQuickFilterDeleteIconLabel: 'Clear',
26
-
23
+ toolbarQuickFilterPlaceholder: 'بحث...',
24
+ toolbarQuickFilterLabel: 'بحث',
25
+ toolbarQuickFilterDeleteIconLabel: 'أزال',
27
26
  // Export selector toolbar button text
28
27
  toolbarExport: 'تصدير',
29
28
  toolbarExportLabel: 'تصدير',
30
29
  toolbarExportCSV: 'تنزيل كملف CSV',
31
- // toolbarExportPrint: 'Print',
32
- // toolbarExportExcel: 'Download as Excel',
33
-
30
+ toolbarExportPrint: 'طباعة',
31
+ toolbarExportExcel: 'تحميل كملف الإكسل',
34
32
  // Columns panel text
35
33
  columnsPanelTextFieldLabel: 'البحث عن العمود',
36
34
  columnsPanelTextFieldPlaceholder: 'عنوان العمود',
@@ -39,6 +37,7 @@ const arSDGrid = {
39
37
  columnsPanelHideAllButton: 'إخفاء الكل',
40
38
  // Filter panel text
41
39
  filterPanelAddFilter: 'إضافة مرشِح',
40
+ // filterPanelRemoveAll: 'Remove all',
42
41
  filterPanelDeleteIconLabel: 'حذف',
43
42
  filterPanelLogicOperator: 'عامل منطقي',
44
43
  filterPanelOperator: 'عامل',
@@ -108,20 +107,17 @@ const arSDGrid = {
108
107
  groupColumn: name => `تجميع حسب ${name}`,
109
108
  unGroupColumn: name => `إيقاف التجميع حسب ${name}`,
110
109
  // Master/detail
111
- // detailPanelToggle: 'Detail panel toggle',
110
+ detailPanelToggle: 'اظهار/اخفاء لوحة التفاصيل',
112
111
  expandDetailPanel: 'توسيع',
113
- collapseDetailPanel: 'طوي'
114
-
112
+ collapseDetailPanel: 'طوي',
115
113
  // Row reordering text
116
- // rowReorderingHeaderName: 'Row reordering',
117
-
114
+ rowReorderingHeaderName: 'أعادة ترتيب الصفوف',
118
115
  // Aggregation
119
- // aggregationMenuItemHeader: 'Aggregation',
120
- // aggregationFunctionLabelSum: 'sum',
121
- // aggregationFunctionLabelAvg: 'avg',
122
- // aggregationFunctionLabelMin: 'min',
123
- // aggregationFunctionLabelMax: 'max',
124
- // aggregationFunctionLabelSize: 'size',
116
+ aggregationMenuItemHeader: 'الدلالات الحسابية',
117
+ aggregationFunctionLabelSum: 'مجموع',
118
+ aggregationFunctionLabelAvg: 'معدل',
119
+ aggregationFunctionLabelMin: 'الحد الادنى',
120
+ aggregationFunctionLabelMax: 'الحد الاقصى',
121
+ aggregationFunctionLabelSize: 'الحجم'
125
122
  };
126
-
127
123
  export const arSD = getGridLocalization(arSDGrid, arSDCore);
@@ -51,6 +51,7 @@ const beBYGrid = {
51
51
  columnsPanelHideAllButton: 'Схаваць усе',
52
52
  // Filter panel text
53
53
  filterPanelAddFilter: 'Дадаць фільтр',
54
+ // filterPanelRemoveAll: 'Remove all',
54
55
  filterPanelDeleteIconLabel: 'Выдаліць',
55
56
  filterPanelLogicOperator: 'Лагічныя аператары',
56
57
  filterPanelOperator: 'Аператары',
@@ -39,6 +39,7 @@ const bgBGGrid = {
39
39
  columnsPanelHideAllButton: 'Скрий Всички',
40
40
  // Filter panel text
41
41
  filterPanelAddFilter: 'Добави Филтър',
42
+ // filterPanelRemoveAll: 'Remove all',
42
43
  filterPanelDeleteIconLabel: 'Изтрий',
43
44
  // filterPanelLogicOperator: 'Logic operator',
44
45
  filterPanelOperator: 'Оператори',