@mui/x-data-grid 5.15.2 → 5.17.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 (286) hide show
  1. package/CHANGELOG.md +177 -2
  2. package/DataGrid/DataGrid.js +3 -1
  3. package/DataGrid/useDataGridComponent.js +5 -0
  4. package/README.md +2 -1
  5. package/components/DataGridColumnHeaders.js +4 -3
  6. package/components/ErrorBoundary.d.ts +1 -0
  7. package/components/GridAutoSizer.js +7 -0
  8. package/components/GridRow.d.ts +2 -1
  9. package/components/GridRow.js +136 -85
  10. package/components/base/GridBody.js +8 -5
  11. package/components/base/GridOverlays.js +4 -7
  12. package/components/cell/GridActionsCellItem.d.ts +2 -2
  13. package/components/cell/GridBooleanCell.js +2 -1
  14. package/components/cell/GridEditBooleanCell.js +2 -1
  15. package/components/cell/GridEditDateCell.js +3 -2
  16. package/components/cell/GridEditInputCell.js +2 -1
  17. package/components/cell/GridEditSingleSelectCell.js +11 -2
  18. package/components/cell/GridSkeletonCell.d.ts +12 -0
  19. package/components/cell/GridSkeletonCell.js +60 -0
  20. package/components/cell/index.d.ts +1 -0
  21. package/components/cell/index.js +2 -1
  22. package/components/columnHeaders/GridColumnGroupHeader.d.ts +14 -0
  23. package/components/columnHeaders/GridColumnGroupHeader.js +122 -0
  24. package/components/columnHeaders/GridColumnHeaderItem.js +55 -71
  25. package/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  26. package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +32 -0
  27. package/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
  28. package/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
  29. package/components/containers/GridOverlay.js +7 -1
  30. package/components/containers/GridRoot.js +3 -3
  31. package/components/containers/GridRootStyles.js +16 -2
  32. package/components/menu/GridMenu.d.ts +3 -2
  33. package/components/menu/GridMenu.js +1 -0
  34. package/components/menu/columnMenu/GridColumnHeaderMenu.d.ts +1 -1
  35. package/components/panel/GridColumnsPanel.d.ts +6 -1
  36. package/components/panel/GridColumnsPanel.js +38 -6
  37. package/components/panel/GridPanel.d.ts +1 -1
  38. package/components/panel/GridPanel.js +1 -0
  39. package/components/panel/filterPanel/GridFilterForm.d.ts +4 -0
  40. package/components/panel/filterPanel/GridFilterForm.js +5 -0
  41. package/components/panel/filterPanel/GridFilterInputMultipleValue.d.ts +1 -1
  42. package/components/panel/filterPanel/GridFilterPanel.d.ts +4 -0
  43. package/components/panel/filterPanel/GridFilterPanel.js +5 -0
  44. package/components/toolbar/GridToolbarColumnsButton.d.ts +1 -1
  45. package/components/toolbar/GridToolbarDensitySelector.d.ts +1 -1
  46. package/components/toolbar/GridToolbarExportContainer.d.ts +1 -1
  47. package/constants/defaultGridSlotsComponents.js +2 -1
  48. package/constants/gridClasses.d.ts +24 -0
  49. package/constants/gridClasses.js +1 -1
  50. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -1
  51. package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +7 -0
  52. package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
  53. package/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +7 -0
  54. package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
  55. package/hooks/features/columnGrouping/index.d.ts +2 -0
  56. package/hooks/features/columnGrouping/index.js +2 -0
  57. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +24 -0
  58. package/hooks/features/columnGrouping/useGridColumnGrouping.js +153 -0
  59. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.d.ts +4 -0
  60. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
  61. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +7 -6
  62. package/hooks/features/columnHeaders/useGridColumnHeaders.js +204 -9
  63. package/hooks/features/density/densitySelector.d.ts +2 -0
  64. package/hooks/features/density/densitySelector.js +3 -1
  65. package/hooks/features/density/densityState.d.ts +1 -0
  66. package/hooks/features/density/useGridDensity.d.ts +1 -1
  67. package/hooks/features/density/useGridDensity.js +45 -9
  68. package/hooks/features/dimensions/useGridDimensions.js +4 -4
  69. package/hooks/features/export/useGridPrintExport.js +3 -3
  70. package/hooks/features/filter/gridFilterSelector.d.ts +3 -3
  71. package/hooks/features/filter/gridFilterUtils.d.ts +1 -1
  72. package/hooks/features/filter/gridFilterUtils.js +55 -54
  73. package/hooks/features/filter/useGridFilter.js +1 -1
  74. package/hooks/features/index.d.ts +1 -0
  75. package/hooks/features/index.js +1 -0
  76. package/hooks/features/pagination/gridPaginationSelector.d.ts +1 -1
  77. package/hooks/features/rows/gridRowsSelector.d.ts +1 -1
  78. package/hooks/features/rows/useGridParamsApi.js +1 -1
  79. package/hooks/features/rows/useGridRows.js +65 -8
  80. package/hooks/features/rows/useGridRowsMeta.js +36 -16
  81. package/hooks/features/selection/gridSelectionSelector.d.ts +1 -1
  82. package/hooks/features/sorting/gridSortingSelector.d.ts +1 -1
  83. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -2
  84. package/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
  85. package/hooks/utils/useGridNativeEventListener.d.ts +1 -1
  86. package/hooks/utils/useGridNativeEventListener.js +2 -2
  87. package/hooks/utils/useGridVisibleRows.d.ts +2 -2
  88. package/index.js +1 -1
  89. package/internals/index.d.ts +2 -0
  90. package/internals/index.js +2 -0
  91. package/legacy/DataGrid/DataGrid.js +3 -1
  92. package/legacy/DataGrid/useDataGridComponent.js +5 -0
  93. package/legacy/components/DataGridColumnHeaders.js +4 -3
  94. package/legacy/components/GridAutoSizer.js +7 -0
  95. package/legacy/components/GridRow.js +138 -85
  96. package/legacy/components/base/GridBody.js +8 -5
  97. package/legacy/components/base/GridOverlays.js +4 -7
  98. package/legacy/components/cell/GridBooleanCell.js +2 -1
  99. package/legacy/components/cell/GridEditBooleanCell.js +2 -1
  100. package/legacy/components/cell/GridEditDateCell.js +3 -2
  101. package/legacy/components/cell/GridEditInputCell.js +2 -1
  102. package/legacy/components/cell/GridEditSingleSelectCell.js +11 -2
  103. package/legacy/components/cell/GridSkeletonCell.js +57 -0
  104. package/legacy/components/cell/index.js +2 -1
  105. package/legacy/components/columnHeaders/GridColumnGroupHeader.js +120 -0
  106. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +78 -88
  107. package/legacy/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  108. package/legacy/components/columnHeaders/GridGenericColumnHeaderItem.js +112 -0
  109. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
  110. package/legacy/components/containers/GridOverlay.js +7 -1
  111. package/legacy/components/containers/GridRoot.js +3 -3
  112. package/legacy/components/containers/GridRootStyles.js +14 -5
  113. package/legacy/components/menu/GridMenu.js +1 -0
  114. package/legacy/components/panel/GridColumnsPanel.js +41 -6
  115. package/legacy/components/panel/GridPanel.js +1 -0
  116. package/legacy/components/panel/filterPanel/GridFilterForm.js +5 -0
  117. package/legacy/components/panel/filterPanel/GridFilterPanel.js +5 -0
  118. package/legacy/constants/defaultGridSlotsComponents.js +2 -1
  119. package/legacy/constants/gridClasses.js +1 -1
  120. package/legacy/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
  121. package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +12 -0
  122. package/legacy/hooks/features/columnGrouping/index.js +2 -0
  123. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +151 -0
  124. package/legacy/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
  125. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +213 -12
  126. package/legacy/hooks/features/density/densitySelector.js +6 -0
  127. package/legacy/hooks/features/density/useGridDensity.js +44 -6
  128. package/legacy/hooks/features/dimensions/useGridDimensions.js +4 -4
  129. package/legacy/hooks/features/export/useGridPrintExport.js +3 -3
  130. package/legacy/hooks/features/filter/gridFilterUtils.js +61 -56
  131. package/legacy/hooks/features/filter/useGridFilter.js +1 -1
  132. package/legacy/hooks/features/index.js +1 -0
  133. package/legacy/hooks/features/rows/useGridParamsApi.js +1 -1
  134. package/legacy/hooks/features/rows/useGridRows.js +73 -8
  135. package/legacy/hooks/features/rows/useGridRowsMeta.js +45 -18
  136. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +31 -13
  137. package/legacy/hooks/utils/useGridNativeEventListener.js +2 -2
  138. package/legacy/index.js +1 -1
  139. package/legacy/internals/index.js +2 -0
  140. package/legacy/models/api/gridColumnGroupingApi.js +1 -0
  141. package/legacy/models/events/gridEvents.js +2 -0
  142. package/legacy/models/gridColumnGrouping.js +6 -0
  143. package/legacy/models/index.js +2 -1
  144. package/legacy/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
  145. package/legacy/models/params/index.js +2 -1
  146. package/legacy/utils/utils.js +18 -0
  147. package/models/api/gridApiCommon.d.ts +2 -1
  148. package/models/api/gridColumnGroupingApi.d.ts +19 -0
  149. package/models/api/gridColumnGroupingApi.js +1 -0
  150. package/models/api/gridDensityApi.d.ts +2 -1
  151. package/models/api/gridParamsApi.d.ts +1 -1
  152. package/models/api/gridRowApi.d.ts +6 -0
  153. package/models/api/gridRowsMetaApi.d.ts +6 -1
  154. package/models/colDef/gridColDef.d.ts +15 -1
  155. package/models/events/gridEventLookup.d.ts +7 -1
  156. package/models/events/gridEvents.d.ts +3 -1
  157. package/models/events/gridEvents.js +2 -0
  158. package/models/gridColumnGrouping.d.ts +67 -0
  159. package/models/gridColumnGrouping.js +6 -0
  160. package/models/gridRows.d.ts +5 -5
  161. package/models/gridSlotsComponent.d.ts +5 -0
  162. package/models/gridStateCommunity.d.ts +2 -1
  163. package/models/index.d.ts +1 -0
  164. package/models/index.js +2 -1
  165. package/models/params/gridCellParams.d.ts +7 -2
  166. package/models/params/gridMenuParams.d.ts +1 -2
  167. package/models/params/gridRenderedRowsIntervalChangeParams.d.ts +10 -0
  168. package/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
  169. package/models/params/index.d.ts +1 -0
  170. package/models/params/index.js +2 -1
  171. package/models/props/DataGridProps.d.ts +7 -1
  172. package/modern/DataGrid/DataGrid.js +3 -1
  173. package/modern/DataGrid/useDataGridComponent.js +5 -0
  174. package/modern/components/DataGridColumnHeaders.js +4 -3
  175. package/modern/components/GridAutoSizer.js +7 -0
  176. package/modern/components/GridRow.js +133 -84
  177. package/modern/components/base/GridBody.js +8 -5
  178. package/modern/components/base/GridOverlays.js +4 -7
  179. package/modern/components/cell/GridBooleanCell.js +2 -1
  180. package/modern/components/cell/GridEditBooleanCell.js +2 -1
  181. package/modern/components/cell/GridEditDateCell.js +3 -2
  182. package/modern/components/cell/GridEditInputCell.js +2 -1
  183. package/modern/components/cell/GridEditSingleSelectCell.js +11 -2
  184. package/modern/components/cell/GridSkeletonCell.js +60 -0
  185. package/modern/components/cell/index.js +2 -1
  186. package/modern/components/columnHeaders/GridColumnGroupHeader.js +120 -0
  187. package/modern/components/columnHeaders/GridColumnHeaderItem.js +53 -69
  188. package/modern/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  189. package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
  190. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
  191. package/modern/components/containers/GridOverlay.js +7 -1
  192. package/modern/components/containers/GridRoot.js +3 -3
  193. package/modern/components/containers/GridRootStyles.js +16 -2
  194. package/modern/components/menu/GridMenu.js +1 -0
  195. package/modern/components/panel/GridColumnsPanel.js +38 -6
  196. package/modern/components/panel/GridPanel.js +1 -0
  197. package/modern/components/panel/filterPanel/GridFilterForm.js +5 -0
  198. package/modern/components/panel/filterPanel/GridFilterPanel.js +5 -0
  199. package/modern/constants/defaultGridSlotsComponents.js +2 -1
  200. package/modern/constants/gridClasses.js +1 -1
  201. package/modern/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
  202. package/modern/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
  203. package/modern/hooks/features/columnGrouping/index.js +2 -0
  204. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +145 -0
  205. package/modern/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +29 -0
  206. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -9
  207. package/modern/hooks/features/density/densitySelector.js +3 -1
  208. package/modern/hooks/features/density/useGridDensity.js +37 -9
  209. package/modern/hooks/features/dimensions/useGridDimensions.js +4 -4
  210. package/modern/hooks/features/export/useGridPrintExport.js +3 -3
  211. package/modern/hooks/features/filter/gridFilterUtils.js +54 -53
  212. package/modern/hooks/features/filter/useGridFilter.js +1 -1
  213. package/modern/hooks/features/index.js +1 -0
  214. package/modern/hooks/features/rows/useGridParamsApi.js +1 -1
  215. package/modern/hooks/features/rows/useGridRows.js +65 -8
  216. package/modern/hooks/features/rows/useGridRowsMeta.js +36 -16
  217. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
  218. package/modern/hooks/utils/useGridNativeEventListener.js +2 -2
  219. package/modern/index.js +1 -1
  220. package/modern/internals/index.js +2 -0
  221. package/modern/models/api/gridColumnGroupingApi.js +1 -0
  222. package/modern/models/events/gridEvents.js +2 -0
  223. package/modern/models/gridColumnGrouping.js +6 -0
  224. package/modern/models/index.js +2 -1
  225. package/modern/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
  226. package/modern/models/params/index.js +2 -1
  227. package/modern/utils/utils.js +16 -0
  228. package/node/DataGrid/DataGrid.js +3 -1
  229. package/node/DataGrid/useDataGridComponent.js +7 -0
  230. package/node/components/DataGridColumnHeaders.js +4 -3
  231. package/node/components/GridAutoSizer.js +7 -0
  232. package/node/components/GridRow.js +136 -77
  233. package/node/components/base/GridBody.js +7 -4
  234. package/node/components/base/GridOverlays.js +3 -6
  235. package/node/components/cell/GridBooleanCell.js +2 -1
  236. package/node/components/cell/GridEditBooleanCell.js +2 -1
  237. package/node/components/cell/GridEditDateCell.js +3 -2
  238. package/node/components/cell/GridEditInputCell.js +2 -1
  239. package/node/components/cell/GridEditSingleSelectCell.js +11 -2
  240. package/node/components/cell/GridSkeletonCell.js +81 -0
  241. package/node/components/cell/index.js +13 -0
  242. package/node/components/columnHeaders/GridColumnGroupHeader.js +141 -0
  243. package/node/components/columnHeaders/GridColumnHeaderItem.js +53 -72
  244. package/node/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  245. package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +126 -0
  246. package/node/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
  247. package/node/components/containers/GridOverlay.js +7 -1
  248. package/node/components/containers/GridRoot.js +4 -4
  249. package/node/components/containers/GridRootStyles.js +16 -2
  250. package/node/components/menu/GridMenu.js +1 -0
  251. package/node/components/panel/GridColumnsPanel.js +36 -5
  252. package/node/components/panel/GridPanel.js +1 -0
  253. package/node/components/panel/filterPanel/GridFilterForm.js +5 -0
  254. package/node/components/panel/filterPanel/GridFilterPanel.js +5 -0
  255. package/node/constants/defaultGridSlotsComponents.js +1 -0
  256. package/node/constants/gridClasses.js +1 -1
  257. package/node/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +5 -0
  258. package/node/hooks/features/columnGrouping/gridColumnGroupsSelector.js +18 -0
  259. package/node/hooks/features/columnGrouping/index.js +18 -0
  260. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +182 -0
  261. package/node/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +55 -0
  262. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +207 -8
  263. package/node/hooks/features/density/densitySelector.js +6 -2
  264. package/node/hooks/features/density/useGridDensity.js +48 -9
  265. package/node/hooks/features/dimensions/useGridDimensions.js +3 -3
  266. package/node/hooks/features/export/useGridPrintExport.js +2 -2
  267. package/node/hooks/features/filter/gridFilterUtils.js +55 -55
  268. package/node/hooks/features/filter/useGridFilter.js +1 -1
  269. package/node/hooks/features/index.js +13 -0
  270. package/node/hooks/features/rows/useGridParamsApi.js +1 -1
  271. package/node/hooks/features/rows/useGridRows.js +60 -7
  272. package/node/hooks/features/rows/useGridRowsMeta.js +35 -15
  273. package/node/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
  274. package/node/hooks/utils/useGridNativeEventListener.js +2 -2
  275. package/node/index.js +1 -1
  276. package/node/internals/index.js +22 -0
  277. package/node/models/api/gridColumnGroupingApi.js +5 -0
  278. package/node/models/events/gridEvents.js +2 -0
  279. package/node/models/gridColumnGrouping.js +13 -0
  280. package/node/models/index.js +13 -0
  281. package/node/models/params/gridRenderedRowsIntervalChangeParams.js +5 -0
  282. package/node/models/params/index.js +13 -0
  283. package/node/utils/utils.js +18 -0
  284. package/package.json +3 -3
  285. package/utils/utils.d.ts +1 -0
  286. package/utils/utils.js +16 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,181 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 5.17.0
7
+
8
+ _Sep 2, 2022_
9
+
10
+ 🎉 We are excited to finally introduce a stable release (v5.0.0) for the `@mui/x-date-pickers` and `@mui/x-date-pickers-pro` packages!
11
+
12
+ If you are still using picker components from the `lab`, take a look at the [migration guide](https://mui.com/x/react-date-pickers/migration-lab/).
13
+
14
+ We'd like to offer a big thanks to the 9 contributors who made this release possible. Here are some highlights ✨:
15
+
16
+ - 🎁 Implement Lazy loading (#5214) @DanailH
17
+
18
+ Pro users now can try the experimental lazy loading feature.
19
+ In a few steps, you can load your data on demand, as the rows are displayed.
20
+
21
+ To enable this feature, add `experimentalFeatures={{ lazyLoading: true }}`.
22
+ Lazy Loading requires a few other settings.
23
+ See the [documentation](https://mui.com/x/react-data-grid/row-updates/#lazy-loading) to explore the example in detail.
24
+
25
+ - 🚀 Improve `pickers` focus management (#5820) @alexfauquette
26
+ - 🎉 Enable disabling `day` on date range picker depending on `position` (#5773) @alexfauquette
27
+ - ✨ Various improvements
28
+ - 📚 Documentation improvements
29
+ - 🐞 Bugfixes
30
+
31
+ ### `@mui/x-data-grid@v5.17.0` / `@mui/x-data-grid-pro@v5.17.0` / `@mui/x-data-grid-premium@v5.17.0`
32
+
33
+ #### Changes
34
+
35
+ - [DataGrid] Add `sort` prop to columns panel slot (#5888) @gavbrennan
36
+ - [DataGrid] Do not throw if `fieldToFocus` cannot be found (#5871) @cherniavskii
37
+ - [DataGrid] Support `getRowId` in the `replaceRows` method (#5988) @flaviendelangle
38
+ - [DataGridPro] Add class name to row with open detail panel (#5924) @m4theushw
39
+ - [DataGridPro] Fix crash when using `pinnedRows` + `getRowClassName` props and `rows=[]` (#5851) @cherniavskii
40
+ - [DataGridPro] Fix filtering with inactive filter items (#5993) @alexfauquette
41
+ - [DataGridPro] Implement Lazy loading (#5214) @DanailH
42
+ - [DataGridPro] Support pinned columns and dynamic row height (#5782) @m4theushw
43
+ - [DataGridPremium] Add state initializer for column groups (#5963) @alexfauquette
44
+ - [DataGridPremium] Update grouping when `groupingValueGetter` changes (#5919) @flaviendelangle
45
+ - [DataGridPremium] Use the aggregated value on tree data real groups (#5953) @flaviendelangle
46
+
47
+ ### `@mui/x-date-pickers@v5.0.0` / `@mui/x-date-pickers-pro@v5.0.0`
48
+
49
+ #### Changes
50
+
51
+ - [DatePicker] Improve focus management (#5820) @alexfauquette
52
+ - [DateRangePicker] Enable disabling `day` depending on `position` (#5773) @alexfauquette
53
+ - [DateTimePicker] Create a new `tabs` component slot (#5972) @LukasTy
54
+ - [pickers] Do not forward validation props to the DOM on field components (#5971) @flaviendelangle
55
+ - [pickers] Do not hardcode `date-fns` elements in field components (#5975) @flaviendelangle
56
+ - [pickers] Do not require `date-fns` in `@mui/x-date-pickers-pro` (#5941) @flaviendelangle
57
+ - [pickers] Fix mobile picker not opening on label click (#5651) @LukasTy
58
+ - [pickers] Improve DOM event management on `useField` (#5901) @flaviendelangle
59
+ - [pickers] Include `community` package `themeAugmentation` in `pro` package types (#5969) @LukasTy
60
+ - [pickers] Rename `DateRangeField` into `SingleInputDateRangeField` (#5961) @flaviendelangle
61
+ - [pickers] Support `isSameError` on field components (#5984) @flaviendelangle
62
+
63
+ ### Docs
64
+
65
+ - [docs] Add `description` and `default` to pickers slots (#5893) @alexfauquette
66
+ - [docs] Fix typo (#5945) @wettopa
67
+ - [docs] Fix typo `onYearPicker` to `onYearChange` (#5954) @alexfauquette
68
+ - [docs] Update `GridCellParams`'s `value` description (#5849) @cherniavskii
69
+ - [docs] Update `README.md` to match Introduction section of the docs (#5754) @samuelsycamore
70
+
71
+ ### Core
72
+
73
+ - [core] Fix typo (#5990) @flaviendelangle
74
+ - [core] Remove old babel resolve rule (#5939) @oliviertassinari
75
+ - [core] Remove outdated TODO (#5956) @flaviendelangle
76
+ - [core] Upgrade monorepo (#5960) @cherniavskii
77
+ - [core] Fix statics (#5986) @DanailH
78
+ - [core] Remove unused dependencies (#5937) @oliviertassinari
79
+ - [license] Remove CLI (#5757) @flaviendelangle
80
+ - [test] Fix time zone sensitive test (#5955) @LukasTy
81
+ - [test] Use `userEvent.mousePress` instead of `fireClickEvent` (#5920) @cherniavskii
82
+
83
+ ## 5.16.0
84
+
85
+ _Aug 25, 2022_
86
+
87
+ We'd like to offer a big thanks to the 11 contributors who made this release possible. Here are some highlights ✨:
88
+
89
+ - 🎁 Introduce column grouping for data grid (#5133) @alexfauquette
90
+
91
+ You can now group columns using the `columnGroupingModel` prop. This lets you to display more structured data.
92
+
93
+ <img src="https://user-images.githubusercontent.com/45398769/186178366-4fba66b2-bf90-4c7a-9d83-940a7fc78704.png" width="800" />
94
+
95
+ To enable this feature, add `experimentalFeatures={{ columnGrouping: true }}`.
96
+ The grouping header can be fully customized.
97
+ See the [documentation](https://mui.com/x/react-data-grid/column-groups/) to explore everything it has to offer.
98
+
99
+ - 🐞 Bugfixes
100
+ - 🌏 New locales for pickers thanks to @tesseractjh and @drastus
101
+
102
+ ### `@mui/x-data-grid@v5.16.0` / `@mui/x-data-grid-pro@v5.16.0` / `@mui/x-data-grid-premium@v5.16.0`
103
+
104
+ #### Changes
105
+
106
+ - [DataGrid] Implement column grouping (#5133) @alexfauquette
107
+ - [DataGrid] Handle `disableVirtualization` prop change (#5889) @cherniavskii
108
+ - [DataGrid] Improve `GridRowModel` typing (#5734) @cherniavskii
109
+ - [DataGrid] Update deprecation note for `GridColDef` `hide` property (#5886) @cherniavskii
110
+
111
+ ### `@mui/x-date-pickers@v5.0.0-beta.7` / `@mui/x-date-pickers-pro@v5.0.0-beta.7`
112
+
113
+ #### Changes
114
+
115
+ - [DatePicker] Fix to pass down `className` prop provided on DatePicker to `renderInput` (#5471) @CruseCtrl
116
+ - [DatePicker] Improve `a11y` support (#5809) @LukasTy
117
+ - [pickers] Add `PaperContent` component slot (#5801) @LukasTy
118
+ - [pickers] Add a breaking change section in the migration guide (#5805) @alexfauquette
119
+ - [pickers] Add new translations to `localeText` (#5143) @alexfauquette
120
+ - [pickers] Document components slots (#4657) @flaviendelangle
121
+ - [pickers] Add new unstable field components (#5504) @flaviendelangle
122
+ - [pickers] Fallback to default `minDate` / `maxDate` when `null` value is passed (#5397) @flaviendelangle
123
+ - [l10n] Add Korean (ko-KR) locale (#5854) @tesseractjh
124
+ - [l10n] Add Polish (pl-PL) locale (#5833) @drastus
125
+
126
+ ### Docs
127
+
128
+ - [docs] Fix typo in `migration from lab` (#5277) @chuckwired
129
+ - [docs] Use `dayjs` instead of `date-fns` in doc examples (#5481) @flaviendelangle
130
+
131
+ ### Core
132
+
133
+ - [core] Clarify the scope of the license key used for tests and documentation (#5824) @oliviertassinari
134
+ - [core] Fix Typescript error on field hooks (#5892) @flaviendelangle
135
+ - [core] Memoize `columns` in `useDemoData` hook (#5848) @cherniavskii
136
+ - [core] Remove Firefox from the BrowserStack list (#5874) @DanailH
137
+ - [core] Small changes to the release script (#5840) @m4theushw
138
+
139
+ ## 5.15.3
140
+
141
+ _Aug 18, 2022_
142
+
143
+ We'd like to offer a big thanks to the 9 contributors who made this release possible. Here are some highlights ✨:
144
+
145
+ - 📚 Documentation improvements
146
+ - 🐞 Bugfixes
147
+
148
+ ### `@mui/x-data-grid@v5.15.3` / `@mui/x-data-grid-pro@v5.15.3` / `@mui/x-data-grid-premium@v5.15.3`
149
+
150
+ #### Changes
151
+
152
+ - [DataGrid] Fix <kbd>Enter</kbd> causing Select to re-open when commiting value (#5756) @m4theushw
153
+ - [DataGrid] Fix `GridOverlays` bypassing pointer events (#5674) @philjones88
154
+
155
+ ### `@mui/x-date-pickers@v5.0.0-beta.6` / `@mui/x-date-picker-pro@v5.0.0-beta.6`
156
+
157
+ #### Changes
158
+
159
+ - [DatePicker] Support click on day outside of current month (#5768) @alexfauquette
160
+ - [pickers] Extend `PickersActionBarProps` with `DialogActionProps` (#5798) @LukasTy
161
+
162
+ ### Docs
163
+
164
+ - [docs] Fix API anchor link scroll top (#5795) @oliviertassinari
165
+ - [docs] Fix contradiction in the free trial clause (#5732) @oliviertassinari
166
+ - [docs] Fix default value of the DataGrid `logLevel` prop to false (#5784) @HwangTaehyun
167
+ - [docs] Fix typo on the row height page (#5772) @flaviendelangle
168
+ - [docs] Improve "upgrading plans" documentation. (#5683) @joserodolfofreitas
169
+ - [docs] Link the license docs before pricing (#5726) @oliviertassinari
170
+ - [docs] Update packages README files (#5835) @cherniavskii
171
+ - [docs] Use `InputBase` for pickers inputs (#5597) @cherniavskii
172
+
173
+ ### Core
174
+
175
+ - [core] Upgrade monorepo (#5771, #5797) @cherniavskii
176
+ - [core] Various TS improvements (#5556) @flaviendelangle
177
+ - [license] Give more context in the missing license (#5731) @oliviertassinari
178
+ - [license] Only log an error type once (#5730) @oliviertassinari
179
+ - [test] Increase timeout to take print screenshot (#5799) @m4theushw
180
+
6
181
  ## 5.15.2
7
182
 
8
183
  _Aug 11, 2022_
@@ -13,7 +188,7 @@ We'd like to offer a big thanks to the 7 contributors who made this release poss
13
188
  - 📚 Documentation improvements
14
189
  - 🐞 Bugfixes
15
190
 
16
- ### `@mui/x-data-grid@5.15.2` / `@mui/x-data-grid-pro@5.15.2` / `@mui/x-data-grid-premium@5.15.2`
191
+ ### `@mui/x-data-grid@v5.15.2` / `@mui/x-data-grid-pro@v5.15.2` / `@mui/x-data-grid-premium@v5.15.2`
17
192
 
18
193
  #### Changes
19
194
 
@@ -487,7 +662,7 @@ We'd like to offer a big thanks to the 15 contributors who made this release pos
487
662
 
488
663
  **MonthPicker**: The prop `onMonthChange` has been removed, you can use `onChange` instead since every change is a month change
489
664
 
490
- **YearPicker**: The prop `onYearPicker` has been removed, you can use `onChange` instead since every change is a year change
665
+ **YearPicker**: The prop `onYearChange` has been removed, you can use `onChange` instead since every change is a year change
491
666
 
492
667
  **DayPicker**: The prop `isDateDisabled` has been removed, you can now use the same validation props as for the other components (`maxDate`, `minDate`, `shouldDisableDate`, `disableFuture` and `disablePast`)
493
668
 
@@ -79,6 +79,7 @@ DataGridRaw.propTypes = {
79
79
  * @default 3
80
80
  */
81
81
  columnBuffer: PropTypes.number,
82
+ columnGroupingModel: PropTypes.arrayOf(PropTypes.object),
82
83
 
83
84
  /**
84
85
  * Set of columns of type [[GridColumns]].
@@ -194,6 +195,7 @@ DataGridRaw.propTypes = {
194
195
  * For each feature, if the flag is not explicitly set to `true`, the feature will be fully disabled and any property / method call will not have any effect.
195
196
  */
196
197
  experimentalFeatures: PropTypes.shape({
198
+ columnGrouping: PropTypes.bool,
197
199
  newEditingApi: PropTypes.bool,
198
200
  preventCommitWhileValidating: PropTypes.bool,
199
201
  warnIfFocusStateIsNotSynced: PropTypes.bool
@@ -347,7 +349,7 @@ DataGridRaw.propTypes = {
347
349
 
348
350
  /**
349
351
  * Allows to pass the logging level or false to turn off logging.
350
- * @default "debug"
352
+ * @default "error" ("warn" in dev mode)
351
353
  */
352
354
  logLevel: PropTypes.oneOf(['debug', 'error', 'info', 'warn', false]),
353
355
 
@@ -25,6 +25,8 @@ import { useGridDimensions } from '../hooks/features/dimensions/useGridDimension
25
25
  import { rowsMetaStateInitializer, useGridRowsMeta } from '../hooks/features/rows/useGridRowsMeta';
26
26
  import { useGridStatePersistence } from '../hooks/features/statePersistence/useGridStatePersistence';
27
27
  import { useGridColumnSpanning } from '../hooks/features/columns/useGridColumnSpanning';
28
+ import { useGridColumnGrouping, columnGroupsStateInitializer } from '../hooks/features/columnGrouping/useGridColumnGrouping';
29
+ import { useGridColumnGroupingPreProcessors } from '../hooks/features/columnGrouping/useGridColumnGroupingPreProcessors';
28
30
  export const useDataGridComponent = props => {
29
31
  var _props$experimentalFe, _props$experimentalFe2;
30
32
 
@@ -33,6 +35,7 @@ export const useDataGridComponent = props => {
33
35
  * Register all pre-processors called during state initialization here.
34
36
  */
35
37
 
38
+ useGridColumnGroupingPreProcessors(apiRef, props);
36
39
  useGridSelectionPreProcessors(apiRef, props);
37
40
  useGridRowsPreProcessors(apiRef);
38
41
  /**
@@ -41,6 +44,7 @@ export const useDataGridComponent = props => {
41
44
 
42
45
  useGridInitializeState(selectionStateInitializer, apiRef, props);
43
46
  useGridInitializeState(columnsStateInitializer, apiRef, props);
47
+ useGridInitializeState(columnGroupsStateInitializer, apiRef, props);
44
48
  useGridInitializeState(rowsStateInitializer, apiRef, props);
45
49
  useGridInitializeState((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.newEditingApi ? editingStateInitializer_new : editingStateInitializer_old, apiRef, props);
46
50
  useGridInitializeState(focusStateInitializer, apiRef, props);
@@ -57,6 +61,7 @@ export const useDataGridComponent = props => {
57
61
  useGridRows(apiRef, props);
58
62
  useGridParamsApi(apiRef);
59
63
  useGridColumnSpanning(apiRef);
64
+ useGridColumnGrouping(apiRef, props);
60
65
  const useGridEditing = (_props$experimentalFe2 = props.experimentalFeatures) != null && _props$experimentalFe2.newEditingApi ? useGridEditing_new : useGridEditing_old;
61
66
  useGridEditing(apiRef, props);
62
67
  useGridFocus(apiRef, props);
package/README.md CHANGED
@@ -21,7 +21,8 @@ This component has the following peer dependencies that you will need to install
21
21
  "peerDependencies": {
22
22
  "@mui/material": "^5.4.1",
23
23
  "@mui/system": "^5.4.1",
24
- "react": "^17.0.2 || ^18.0.0"
24
+ "react": "^17.0.2 || ^18.0.0",
25
+ "react-dom": "^17.0.2 || ^18.0.0"
25
26
  },
26
27
  ```
27
28
 
@@ -18,7 +18,8 @@ export const DataGridColumnHeaders = /*#__PURE__*/React.forwardRef(function Grid
18
18
  isDragging,
19
19
  getRootProps,
20
20
  getInnerProps,
21
- getColumns
21
+ getColumnHeaders,
22
+ getColumnGroupHeaders
22
23
  } = useGridColumnHeaders({
23
24
  innerRef
24
25
  });
@@ -27,10 +28,10 @@ export const DataGridColumnHeaders = /*#__PURE__*/React.forwardRef(function Grid
27
28
  }, getRootProps(other), {
28
29
  children: [/*#__PURE__*/_jsx(GridScrollArea, {
29
30
  scrollDirection: "left"
30
- }), /*#__PURE__*/_jsx(GridColumnHeadersInner, _extends({
31
+ }), /*#__PURE__*/_jsxs(GridColumnHeadersInner, _extends({
31
32
  isDragging: isDragging
32
33
  }, getInnerProps(), {
33
- children: getColumns()
34
+ children: [getColumnGroupHeaders(), getColumnHeaders()]
34
35
  })), /*#__PURE__*/_jsx(GridScrollArea, {
35
36
  scrollDirection: "right"
36
37
  })]
@@ -8,6 +8,7 @@ export interface ErrorBoundaryProps {
8
8
  api: React.MutableRefObject<GridApiCommunity>;
9
9
  hasError: boolean;
10
10
  componentProps?: any[];
11
+ children?: React.ReactNode;
11
12
  }
12
13
  export declare class ErrorBoundary extends React.Component<ErrorBoundaryProps, any> {
13
14
  static getDerivedStateFromError(error: Error): {
@@ -106,6 +106,13 @@ process.env.NODE_ENV !== "production" ? GridAutoSizer.propTypes = {
106
106
  // | To update them edit the TypeScript types and run "yarn proptypes" |
107
107
  // ----------------------------------------------------------------------
108
108
 
109
+ /**
110
+ * Function responsible for rendering children.
111
+ * @param {AutoSizerSize} size The grid's size.
112
+ * @returns {React.ReactNode} The children to render.
113
+ */
114
+ children: PropTypes.func.isRequired,
115
+
109
116
  /**
110
117
  * Default height to use for initial render; useful for SSR.
111
118
  * @default null
@@ -13,7 +13,6 @@ export interface GridRowProps {
13
13
  index: number;
14
14
  rowHeight: number | 'auto';
15
15
  containerWidth: number;
16
- row: GridRowModel;
17
16
  firstColumnToRender: number;
18
17
  lastColumnToRender: number;
19
18
  visibleColumns: GridStateColDef[];
@@ -21,6 +20,8 @@ export interface GridRowProps {
21
20
  cellFocus: GridCellIdentifier | null;
22
21
  cellTabIndex: GridCellIdentifier | null;
23
22
  editRowsState: GridEditRowsModel;
23
+ position: 'left' | 'center' | 'right';
24
+ row?: GridRowModel;
24
25
  isLastVisible?: boolean;
25
26
  onClick?: React.MouseEventHandler<HTMLDivElement>;
26
27
  onDoubleClick?: React.MouseEventHandler<HTMLDivElement>;
@@ -1,10 +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 = ["selected", "rowId", "row", "index", "style", "rowHeight", "className", "visibleColumns", "renderedColumns", "containerWidth", "firstColumnToRender", "lastColumnToRender", "cellFocus", "cellTabIndex", "editRowsState", "isLastVisible", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave"];
4
-
5
- /* eslint-disable jsx-a11y/click-events-have-key-events */
6
-
7
- /* eslint-disable jsx-a11y/interactive-supports-focus */
3
+ const _excluded = ["selected", "rowId", "row", "index", "style", "position", "rowHeight", "className", "visibleColumns", "renderedColumns", "containerWidth", "firstColumnToRender", "lastColumnToRender", "cellFocus", "cellTabIndex", "editRowsState", "isLastVisible", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave"];
8
4
  import * as React from 'react';
9
5
  import PropTypes from 'prop-types';
10
6
  import clsx from 'clsx';
@@ -22,6 +18,8 @@ import { GRID_ACTIONS_COLUMN_TYPE } from '../colDef/gridActionsColDef';
22
18
  import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../constants/gridDetailPanelToggleField';
23
19
  import { gridSortModelSelector } from '../hooks/features/sorting/gridSortingSelector';
24
20
  import { gridRowTreeDepthSelector } from '../hooks/features/rows/gridRowsSelector';
21
+ import { gridDensityHeaderGroupingMaxDepthSelector } from '../hooks/features/density/densitySelector';
22
+ import { randomNumberBetween } from '../utils/utils';
25
23
  import { jsx as _jsx } from "react/jsx-runtime";
26
24
  import { jsxs as _jsxs } from "react/jsx-runtime";
27
25
 
@@ -65,6 +63,7 @@ function GridRow(props) {
65
63
  row,
66
64
  index,
67
65
  style: styleProp,
66
+ position,
68
67
  rowHeight,
69
68
  className,
70
69
  visibleColumns,
@@ -82,8 +81,6 @@ function GridRow(props) {
82
81
  } = props,
83
82
  other = _objectWithoutPropertiesLoose(props, _excluded);
84
83
 
85
- const ariaRowIndex = index + 2; // 1 for the header row and 1 as it's 1-based
86
-
87
84
  const apiRef = useGridApiContext();
88
85
  const ref = React.useRef(null);
89
86
  const rootProps = useGridRootProps();
@@ -91,6 +88,9 @@ function GridRow(props) {
91
88
  const columnsTotalWidth = useGridSelector(apiRef, gridColumnsTotalWidthSelector);
92
89
  const sortModel = useGridSelector(apiRef, gridSortModelSelector);
93
90
  const treeDepth = useGridSelector(apiRef, gridRowTreeDepthSelector);
91
+ const headerGroupingMaxDepth = useGridSelector(apiRef, gridDensityHeaderGroupingMaxDepthSelector);
92
+ const ariaRowIndex = index + headerGroupingMaxDepth + 2; // 1 for the header row and 1 as it's 1-based
93
+
94
94
  const {
95
95
  hasScrollX,
96
96
  hasScrollY
@@ -110,9 +110,9 @@ function GridRow(props) {
110
110
  React.useLayoutEffect(() => {
111
111
  if (rowHeight === 'auto' && ref.current && typeof ResizeObserver === 'undefined') {
112
112
  // Fallback for IE
113
- apiRef.current.unstable_storeRowHeightMeasurement(rowId, ref.current.clientHeight);
113
+ apiRef.current.unstable_storeRowHeightMeasurement(rowId, ref.current.clientHeight, position);
114
114
  }
115
- }, [apiRef, rowHeight, rowId]);
115
+ }, [apiRef, rowHeight, rowId, position]);
116
116
  React.useLayoutEffect(() => {
117
117
  if (currentPage.range) {
118
118
  // The index prop is relative to the rows from all pages. As example, the index prop of the
@@ -137,11 +137,11 @@ function GridRow(props) {
137
137
  const resizeObserver = new ResizeObserver(entries => {
138
138
  const [entry] = entries;
139
139
  const height = entry.borderBoxSize && entry.borderBoxSize.length > 0 ? entry.borderBoxSize[0].blockSize : entry.contentRect.height;
140
- apiRef.current.unstable_storeRowHeightMeasurement(rowId, height);
140
+ apiRef.current.unstable_storeRowHeightMeasurement(rowId, height, position);
141
141
  });
142
142
  resizeObserver.observe(rootElement);
143
143
  return () => resizeObserver.disconnect();
144
- }, [apiRef, currentPage.range, index, rowHeight, rowId]);
144
+ }, [apiRef, currentPage.range, index, rowHeight, rowId, position]);
145
145
  const publish = React.useCallback((eventName, propHandler) => event => {
146
146
  // Ignore portal
147
147
  // The target is not an element when triggered by a Select inside the cell
@@ -197,47 +197,9 @@ function GridRow(props) {
197
197
 
198
198
  publish('rowClick', onClick)(event);
199
199
  }, [apiRef, onClick, publish, rowId]);
200
+ const getCell = React.useCallback((column, cellProps) => {
201
+ var _rootProps$components;
200
202
 
201
- const style = _extends({}, styleProp, {
202
- maxHeight: rowHeight === 'auto' ? 'none' : rowHeight,
203
- // max-height doesn't support "auto"
204
- minHeight: rowHeight
205
- });
206
-
207
- const sizes = apiRef.current.unstable_getRowInternalSizes(rowId);
208
-
209
- if (sizes != null && sizes.spacingTop) {
210
- const property = rootProps.rowSpacingType === 'border' ? 'borderTopWidth' : 'marginTop';
211
- style[property] = sizes.spacingTop;
212
- }
213
-
214
- if (sizes != null && sizes.spacingBottom) {
215
- const property = rootProps.rowSpacingType === 'border' ? 'borderBottomWidth' : 'marginBottom';
216
- style[property] = sizes.spacingBottom;
217
- }
218
-
219
- let rowClassName = null;
220
-
221
- if (typeof rootProps.getRowClassName === 'function') {
222
- const indexRelativeToCurrentPage = index - currentPage.range.firstRowIndex;
223
-
224
- const rowParams = _extends({}, apiRef.current.getRowParams(rowId), {
225
- isFirstVisible: indexRelativeToCurrentPage === 0,
226
- isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,
227
- indexRelativeToCurrentPage
228
- });
229
-
230
- rowClassName = rootProps.getRowClassName(rowParams);
231
- }
232
-
233
- const cells = [];
234
-
235
- for (let i = 0; i < renderedColumns.length; i += 1) {
236
- const column = renderedColumns[i];
237
- const indexRelativeToAllColumns = firstColumnToRender + i;
238
- const isLastColumn = indexRelativeToAllColumns === visibleColumns.length - 1;
239
- const removeLastBorderRight = isLastColumn && hasScrollX && !hasScrollY;
240
- const showRightBorder = !isLastColumn ? rootProps.showCellRightBorder : !removeLastBorderRight && rootProps.disableExtendRowFullWidth;
241
203
  const cellParams = apiRef.current.getCellParams(rowId, column.field);
242
204
  const classNames = [];
243
205
  const disableDragEvents = rootProps.disableColumnReorder && column.disableReorder || !rootProps.rowReordering && !!sortModel.length && treeDepth > 1 && Object.keys(editRowsState).length > 0;
@@ -287,53 +249,141 @@ function GridRow(props) {
287
249
 
288
250
  const hasFocus = cellFocus !== null && cellFocus.id === rowId && cellFocus.field === column.field;
289
251
  const tabIndex = cellTabIndex !== null && cellTabIndex.id === rowId && cellTabIndex.field === column.field && cellParams.cellMode === 'view' ? 0 : -1;
252
+ return /*#__PURE__*/_jsx(rootProps.components.Cell, _extends({
253
+ value: cellParams.value,
254
+ field: column.field,
255
+ width: cellProps.width,
256
+ rowId: rowId,
257
+ height: rowHeight,
258
+ showRightBorder: cellProps.showRightBorder,
259
+ formattedValue: cellParams.formattedValue,
260
+ align: column.align || 'left',
261
+ cellMode: cellParams.cellMode,
262
+ colIndex: cellProps.indexRelativeToAllColumns,
263
+ isEditable: cellParams.isEditable,
264
+ hasFocus: hasFocus,
265
+ tabIndex: tabIndex,
266
+ className: clsx(classNames),
267
+ colSpan: cellProps.colSpan,
268
+ disableDragEvents: disableDragEvents
269
+ }, (_rootProps$components = rootProps.componentsProps) == null ? void 0 : _rootProps$components.cell, {
270
+ children: content
271
+ }), column.field);
272
+ }, [apiRef, cellTabIndex, editRowsState, cellFocus, rootProps, row, rowHeight, rowId, treeDepth, sortModel.length]);
273
+ const sizes = apiRef.current.unstable_getRowInternalSizes(rowId);
274
+ let minHeight = rowHeight;
275
+
276
+ if (minHeight === 'auto' && sizes) {
277
+ let numberOfBaseSizes = 0;
278
+ const maximumSize = Object.entries(sizes).reduce((acc, [key, size]) => {
279
+ const isBaseHeight = /^base[A-Z]/.test(key);
280
+
281
+ if (!isBaseHeight) {
282
+ return acc;
283
+ }
284
+
285
+ numberOfBaseSizes += 1;
286
+
287
+ if (size > acc) {
288
+ return size;
289
+ }
290
+
291
+ return acc;
292
+ }, 0);
293
+
294
+ if (maximumSize > 0 && numberOfBaseSizes > 1) {
295
+ minHeight = maximumSize;
296
+ }
297
+ }
298
+
299
+ const style = _extends({}, styleProp, {
300
+ maxHeight: rowHeight === 'auto' ? 'none' : rowHeight,
301
+ // max-height doesn't support "auto"
302
+ minHeight
303
+ });
304
+
305
+ if (sizes != null && sizes.spacingTop) {
306
+ const property = rootProps.rowSpacingType === 'border' ? 'borderTopWidth' : 'marginTop';
307
+ style[property] = sizes.spacingTop;
308
+ }
309
+
310
+ if (sizes != null && sizes.spacingBottom) {
311
+ const property = rootProps.rowSpacingType === 'border' ? 'borderBottomWidth' : 'marginBottom';
312
+ style[property] = sizes.spacingBottom;
313
+ }
314
+
315
+ const rowClassNames = apiRef.current.unstable_applyPipeProcessors('rowClassName', [], rowId);
316
+
317
+ if (typeof rootProps.getRowClassName === 'function') {
318
+ var _currentPage$range;
319
+
320
+ const indexRelativeToCurrentPage = index - (((_currentPage$range = currentPage.range) == null ? void 0 : _currentPage$range.firstRowIndex) || 0);
321
+
322
+ const rowParams = _extends({}, apiRef.current.getRowParams(rowId), {
323
+ isFirstVisible: indexRelativeToCurrentPage === 0,
324
+ isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,
325
+ indexRelativeToCurrentPage
326
+ });
327
+
328
+ rowClassNames.push(rootProps.getRowClassName(rowParams));
329
+ }
330
+
331
+ const randomNumber = randomNumberBetween(10000, 20, 80);
332
+ const cells = [];
333
+
334
+ for (let i = 0; i < renderedColumns.length; i += 1) {
335
+ const column = renderedColumns[i];
336
+ const indexRelativeToAllColumns = firstColumnToRender + i;
337
+ const isLastColumn = indexRelativeToAllColumns === visibleColumns.length - 1;
338
+ const removeLastBorderRight = isLastColumn && hasScrollX && !hasScrollY;
339
+ const showRightBorder = !isLastColumn ? rootProps.showCellRightBorder : !removeLastBorderRight && rootProps.disableExtendRowFullWidth;
290
340
  const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, indexRelativeToAllColumns);
291
341
 
292
342
  if (cellColSpanInfo && !cellColSpanInfo.spannedByColSpan) {
293
- var _rootProps$components;
294
-
295
- const {
296
- colSpan,
297
- width
298
- } = cellColSpanInfo.cellProps;
299
- cells.push( /*#__PURE__*/_jsx(rootProps.components.Cell, _extends({
300
- value: cellParams.value,
301
- field: column.field,
302
- width: width,
303
- rowId: rowId,
304
- height: rowHeight,
305
- showRightBorder: showRightBorder,
306
- formattedValue: cellParams.formattedValue,
307
- align: column.align || 'left',
308
- cellMode: cellParams.cellMode,
309
- colIndex: indexRelativeToAllColumns,
310
- isEditable: cellParams.isEditable,
311
- hasFocus: hasFocus,
312
- tabIndex: tabIndex,
313
- className: clsx(classNames),
314
- colSpan: colSpan,
315
- disableDragEvents: disableDragEvents
316
- }, (_rootProps$components = rootProps.componentsProps) == null ? void 0 : _rootProps$components.cell, {
317
- children: content
318
- }), column.field));
343
+ if (row) {
344
+ const {
345
+ colSpan,
346
+ width
347
+ } = cellColSpanInfo.cellProps;
348
+ const cellProps = {
349
+ width,
350
+ colSpan,
351
+ showRightBorder,
352
+ indexRelativeToAllColumns
353
+ };
354
+ cells.push(getCell(column, cellProps));
355
+ } else {
356
+ const {
357
+ width
358
+ } = cellColSpanInfo.cellProps;
359
+ const contentWidth = Math.round(randomNumber());
360
+ cells.push( /*#__PURE__*/_jsx(rootProps.components.SkeletonCell, {
361
+ width: width,
362
+ contentWidth: contentWidth,
363
+ field: column.field,
364
+ align: column.align
365
+ }, column.field));
366
+ }
319
367
  }
320
368
  }
321
369
 
322
370
  const emptyCellWidth = containerWidth - columnsTotalWidth;
371
+ const eventHandlers = row ? {
372
+ onClick: publishClick,
373
+ onDoubleClick: publish('rowDoubleClick', onDoubleClick),
374
+ onMouseEnter: publish('rowMouseEnter', onMouseEnter),
375
+ onMouseLeave: publish('rowMouseLeave', onMouseLeave)
376
+ } : null;
323
377
  return /*#__PURE__*/_jsxs("div", _extends({
324
378
  ref: ref,
325
379
  "data-id": rowId,
326
380
  "data-rowindex": index,
327
381
  role: "row",
328
- className: clsx(rowClassName, classes.root, className),
382
+ className: clsx(...rowClassNames, classes.root, className),
329
383
  "aria-rowindex": ariaRowIndex,
330
384
  "aria-selected": selected,
331
- style: style,
332
- onClick: publishClick,
333
- onDoubleClick: publish('rowDoubleClick', onDoubleClick),
334
- onMouseEnter: publish('rowMouseEnter', onMouseEnter),
335
- onMouseLeave: publish('rowMouseLeave', onMouseLeave)
336
- }, other, {
385
+ style: style
386
+ }, eventHandlers, other, {
337
387
  children: [cells, emptyCellWidth > 0 && /*#__PURE__*/_jsx(EmptyCell, {
338
388
  width: emptyCellWidth
339
389
  })]
@@ -358,8 +408,9 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
358
408
  index: PropTypes.number.isRequired,
359
409
  isLastVisible: PropTypes.bool,
360
410
  lastColumnToRender: PropTypes.number.isRequired,
411
+ position: PropTypes.oneOf(['center', 'left', 'right']).isRequired,
361
412
  renderedColumns: PropTypes.arrayOf(PropTypes.object).isRequired,
362
- row: PropTypes.any.isRequired,
413
+ row: PropTypes.object,
363
414
  rowHeight: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]).isRequired,
364
415
  rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
365
416
  selected: PropTypes.bool.isRequired,