@mui/x-data-grid 7.23.5 → 7.24.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 (249) hide show
  1. package/CHANGELOG.md +159 -0
  2. package/DataGrid/DataGrid.js +4 -5
  3. package/DataGrid/useDataGridComponent.d.ts +1 -1
  4. package/DataGrid/useDataGridComponent.js +1 -1
  5. package/components/GridHeaders.js +2 -2
  6. package/components/GridRow.d.ts +5 -9
  7. package/components/GridRow.js +28 -105
  8. package/components/GridSkeletonLoadingOverlay.js +18 -18
  9. package/components/cell/GridActionsCellItem.d.ts +3 -3
  10. package/components/cell/GridCell.d.ts +9 -16
  11. package/components/cell/GridCell.js +17 -35
  12. package/components/cell/GridEditDateCell.js +1 -1
  13. package/components/cell/GridEditInputCell.js +1 -1
  14. package/components/cell/GridEditSingleSelectCell.js +2 -2
  15. package/components/columnHeaders/ColumnHeaderMenuIcon.d.ts +1 -1
  16. package/components/columnHeaders/GridColumnGroupHeader.d.ts +5 -5
  17. package/components/columnHeaders/GridColumnGroupHeader.js +7 -10
  18. package/components/columnHeaders/GridColumnHeaderItem.d.ts +5 -5
  19. package/components/columnHeaders/GridColumnHeaderItem.js +13 -12
  20. package/components/columnSelection/GridCellCheckboxRenderer.js +4 -3
  21. package/components/columnSelection/GridHeaderCheckbox.js +6 -2
  22. package/components/containers/GridRoot.d.ts +2 -2
  23. package/components/containers/GridRoot.js +14 -6
  24. package/components/containers/GridRootStyles.js +1 -0
  25. package/components/panel/GridPanel.d.ts +1 -1
  26. package/components/panel/filterPanel/GridFilterInputValue.js +7 -10
  27. package/components/panel/filterPanel/GridFilterInputValueProps.d.ts +1 -1
  28. package/components/virtualization/GridVirtualScrollbar.js +11 -12
  29. package/components/virtualization/GridVirtualScroller.js +4 -4
  30. package/context/GridContextProvider.d.ts +1 -1
  31. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +1 -1
  32. package/hooks/core/pipeProcessing/useGridPipeProcessing.d.ts +1 -1
  33. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +1 -1
  34. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +1 -1
  35. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +1 -1
  36. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +1 -1
  37. package/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.d.ts +1 -1
  38. package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +1 -1
  39. package/hooks/core/useGridApiInitialization.d.ts +1 -1
  40. package/hooks/core/useGridApiInitialization.js +2 -2
  41. package/hooks/core/useGridInitialization.d.ts +1 -1
  42. package/hooks/core/useGridIsRtl.d.ts +1 -1
  43. package/hooks/core/useGridLocaleText.d.ts +1 -1
  44. package/hooks/core/useGridLoggerFactory.d.ts +1 -1
  45. package/hooks/core/useGridRefs.d.ts +1 -1
  46. package/hooks/core/useGridStateInitialization.d.ts +1 -1
  47. package/hooks/features/clipboard/useGridClipboard.d.ts +1 -1
  48. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -1
  49. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +5 -7
  50. package/hooks/features/columnHeaders/useGridColumnHeaders.js +34 -76
  51. package/hooks/features/columnMenu/useGridColumnMenu.d.ts +1 -1
  52. package/hooks/features/columnResize/useGridColumnResize.d.ts +1 -1
  53. package/hooks/features/columnResize/useGridColumnResize.js +8 -6
  54. package/hooks/features/columns/gridColumnsUtils.d.ts +3 -3
  55. package/hooks/features/columns/useGridColumnSpanning.d.ts +1 -1
  56. package/hooks/features/columns/useGridColumns.d.ts +1 -1
  57. package/hooks/features/density/useGridDensity.d.ts +1 -1
  58. package/hooks/features/dimensions/useGridDimensions.d.ts +1 -1
  59. package/hooks/features/dimensions/useGridDimensions.js +1 -1
  60. package/hooks/features/editing/useGridCellEditing.d.ts +1 -1
  61. package/hooks/features/editing/useGridEditing.d.ts +1 -1
  62. package/hooks/features/editing/useGridRowEditing.d.ts +1 -1
  63. package/hooks/features/editing/useGridRowEditing.js +1 -1
  64. package/hooks/features/events/useGridEvents.d.ts +1 -1
  65. package/hooks/features/export/serializers/csvSerializer.d.ts +1 -1
  66. package/hooks/features/export/useGridCsvExport.d.ts +1 -1
  67. package/hooks/features/export/useGridPrintExport.d.ts +1 -1
  68. package/hooks/features/export/useGridPrintExport.js +1 -1
  69. package/hooks/features/export/utils.d.ts +1 -1
  70. package/hooks/features/filter/gridFilterSelector.js +6 -1
  71. package/hooks/features/filter/gridFilterUtils.d.ts +6 -6
  72. package/hooks/features/filter/gridFilterUtils.js +3 -3
  73. package/hooks/features/filter/useGridFilter.d.ts +1 -1
  74. package/hooks/features/focus/useGridFocus.d.ts +1 -1
  75. package/hooks/features/headerFiltering/useGridHeaderFiltering.d.ts +1 -1
  76. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
  77. package/hooks/features/keyboardNavigation/utils.d.ts +2 -2
  78. package/hooks/features/listView/useGridListView.d.ts +1 -1
  79. package/hooks/features/pagination/gridPaginationInterfaces.d.ts +3 -0
  80. package/hooks/features/pagination/gridPaginationSelector.d.ts +20 -1
  81. package/hooks/features/pagination/gridPaginationSelector.js +39 -1
  82. package/hooks/features/pagination/useGridPagination.d.ts +2 -2
  83. package/hooks/features/pagination/useGridPagination.js +5 -3
  84. package/hooks/features/pagination/useGridPaginationMeta.d.ts +1 -1
  85. package/hooks/features/pagination/useGridPaginationModel.d.ts +1 -1
  86. package/hooks/features/pagination/useGridPaginationModel.js +23 -1
  87. package/hooks/features/pagination/useGridRowCount.d.ts +1 -1
  88. package/hooks/features/preferencesPanel/useGridPreferencesPanel.d.ts +1 -1
  89. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +2 -2
  90. package/hooks/features/rowSelection/useGridRowSelection.d.ts +1 -1
  91. package/hooks/features/rowSelection/useGridRowSelectionPreProcessors.d.ts +1 -1
  92. package/hooks/features/rowSelection/utils.d.ts +2 -2
  93. package/hooks/features/rows/gridRowSpanningUtils.d.ts +1 -1
  94. package/hooks/features/rows/gridRowsSelector.js +1 -1
  95. package/hooks/features/rows/gridRowsUtils.d.ts +3 -3
  96. package/hooks/features/rows/useGridParamsApi.d.ts +1 -1
  97. package/hooks/features/rows/useGridRowSpanning.d.ts +1 -1
  98. package/hooks/features/rows/useGridRows.d.ts +1 -1
  99. package/hooks/features/rows/useGridRows.js +2 -2
  100. package/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
  101. package/hooks/features/rows/useGridRowsPreProcessors.d.ts +1 -1
  102. package/hooks/features/scroll/useGridScroll.d.ts +1 -1
  103. package/hooks/features/sorting/gridSortingUtils.d.ts +2 -2
  104. package/hooks/features/sorting/gridSortingUtils.js +2 -2
  105. package/hooks/features/sorting/useGridSorting.d.ts +1 -1
  106. package/hooks/features/statePersistence/useGridStatePersistence.d.ts +1 -1
  107. package/hooks/features/virtualization/gridFocusedVirtualCellSelector.d.ts +6 -0
  108. package/hooks/features/virtualization/gridFocusedVirtualCellSelector.js +42 -0
  109. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +5 -4
  110. package/hooks/features/virtualization/useGridVirtualScroller.js +96 -43
  111. package/hooks/features/virtualization/useGridVirtualization.d.ts +1 -1
  112. package/hooks/utils/useGridApiContext.d.ts +1 -1
  113. package/hooks/utils/useGridApiEventHandler.d.ts +3 -3
  114. package/hooks/utils/useGridApiEventHandler.js +1 -1
  115. package/hooks/utils/useGridApiMethod.d.ts +1 -1
  116. package/hooks/utils/useGridApiRef.d.ts +1 -1
  117. package/hooks/utils/useGridInitializeState.d.ts +2 -2
  118. package/hooks/utils/useGridLogger.d.ts +1 -1
  119. package/hooks/utils/useGridNativeEventListener.d.ts +1 -1
  120. package/hooks/utils/useGridPrivateApiContext.d.ts +1 -1
  121. package/hooks/utils/useGridSelector.d.ts +2 -2
  122. package/hooks/utils/useGridVisibleRows.d.ts +7 -5
  123. package/hooks/utils/useGridVisibleRows.js +5 -28
  124. package/index.js +1 -1
  125. package/internals/constants.d.ts +6 -0
  126. package/internals/constants.js +8 -1
  127. package/internals/index.d.ts +1 -0
  128. package/internals/index.js +1 -0
  129. package/internals/utils/attachPinnedStyle.d.ts +2 -0
  130. package/internals/utils/attachPinnedStyle.js +9 -0
  131. package/internals/utils/getPinnedCellOffset.d.ts +3 -3
  132. package/internals/utils/getPinnedCellOffset.js +6 -7
  133. package/internals/utils/index.d.ts +1 -0
  134. package/internals/utils/index.js +2 -1
  135. package/locales/urPK.js +9 -10
  136. package/models/api/gridCoreApi.d.ts +7 -7
  137. package/models/api/gridDensityApi.d.ts +1 -1
  138. package/models/colDef/gridColDef.d.ts +8 -8
  139. package/models/events/gridEventLookup.d.ts +6 -1
  140. package/models/gridExport.d.ts +1 -1
  141. package/models/gridFilterOperator.d.ts +1 -1
  142. package/models/gridStateCommunity.d.ts +4 -0
  143. package/models/props/DataGridProps.d.ts +1 -1
  144. package/modern/DataGrid/DataGrid.js +4 -5
  145. package/modern/DataGrid/useDataGridComponent.js +1 -1
  146. package/modern/components/GridHeaders.js +2 -2
  147. package/modern/components/GridRow.js +28 -105
  148. package/modern/components/GridSkeletonLoadingOverlay.js +18 -18
  149. package/modern/components/cell/GridCell.js +17 -35
  150. package/modern/components/cell/GridEditDateCell.js +1 -1
  151. package/modern/components/cell/GridEditInputCell.js +1 -1
  152. package/modern/components/cell/GridEditSingleSelectCell.js +2 -2
  153. package/modern/components/columnHeaders/GridColumnGroupHeader.js +7 -10
  154. package/modern/components/columnHeaders/GridColumnHeaderItem.js +13 -12
  155. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +4 -3
  156. package/modern/components/columnSelection/GridHeaderCheckbox.js +6 -2
  157. package/modern/components/containers/GridRoot.js +14 -6
  158. package/modern/components/containers/GridRootStyles.js +1 -0
  159. package/modern/components/panel/filterPanel/GridFilterInputValue.js +7 -10
  160. package/modern/components/virtualization/GridVirtualScrollbar.js +11 -12
  161. package/modern/components/virtualization/GridVirtualScroller.js +4 -4
  162. package/modern/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +1 -1
  163. package/modern/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +1 -1
  164. package/modern/hooks/core/useGridApiInitialization.js +2 -2
  165. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +34 -76
  166. package/modern/hooks/features/columnResize/useGridColumnResize.js +8 -6
  167. package/modern/hooks/features/dimensions/useGridDimensions.js +1 -1
  168. package/modern/hooks/features/editing/useGridRowEditing.js +1 -1
  169. package/modern/hooks/features/export/useGridPrintExport.js +1 -1
  170. package/modern/hooks/features/filter/gridFilterSelector.js +6 -1
  171. package/modern/hooks/features/filter/gridFilterUtils.js +3 -3
  172. package/modern/hooks/features/pagination/gridPaginationSelector.js +39 -1
  173. package/modern/hooks/features/pagination/useGridPagination.js +5 -3
  174. package/modern/hooks/features/pagination/useGridPaginationModel.js +23 -1
  175. package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +2 -2
  176. package/modern/hooks/features/rows/gridRowsSelector.js +1 -1
  177. package/modern/hooks/features/rows/useGridRows.js +2 -2
  178. package/modern/hooks/features/sorting/gridSortingUtils.js +2 -2
  179. package/modern/hooks/features/virtualization/gridFocusedVirtualCellSelector.js +42 -0
  180. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +96 -43
  181. package/modern/hooks/utils/useGridApiEventHandler.js +1 -1
  182. package/modern/hooks/utils/useGridVisibleRows.js +5 -28
  183. package/modern/index.js +1 -1
  184. package/modern/internals/constants.js +8 -1
  185. package/modern/internals/index.js +1 -0
  186. package/modern/internals/utils/attachPinnedStyle.js +9 -0
  187. package/modern/internals/utils/getPinnedCellOffset.js +6 -7
  188. package/modern/internals/utils/index.js +2 -1
  189. package/modern/locales/urPK.js +9 -10
  190. package/modern/utils/cellBorderUtils.js +5 -5
  191. package/modern/utils/domUtils.js +7 -2
  192. package/modern/utils/rtlFlipSide.js +22 -0
  193. package/node/DataGrid/DataGrid.js +2 -3
  194. package/node/DataGrid/useDataGridComponent.js +1 -1
  195. package/node/components/GridHeaders.js +2 -2
  196. package/node/components/GridRow.js +27 -104
  197. package/node/components/GridSkeletonLoadingOverlay.js +17 -17
  198. package/node/components/cell/GridCell.js +18 -36
  199. package/node/components/cell/GridEditDateCell.js +1 -1
  200. package/node/components/cell/GridEditInputCell.js +1 -1
  201. package/node/components/cell/GridEditSingleSelectCell.js +2 -2
  202. package/node/components/columnHeaders/GridColumnGroupHeader.js +7 -10
  203. package/node/components/columnHeaders/GridColumnHeaderItem.js +13 -12
  204. package/node/components/columnSelection/GridCellCheckboxRenderer.js +3 -2
  205. package/node/components/columnSelection/GridHeaderCheckbox.js +6 -2
  206. package/node/components/containers/GridRoot.js +14 -6
  207. package/node/components/containers/GridRootStyles.js +1 -0
  208. package/node/components/panel/filterPanel/GridFilterInputValue.js +7 -10
  209. package/node/components/virtualization/GridVirtualScrollbar.js +11 -12
  210. package/node/components/virtualization/GridVirtualScroller.js +4 -4
  211. package/node/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +1 -1
  212. package/node/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +1 -1
  213. package/node/hooks/core/useGridApiInitialization.js +2 -2
  214. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +32 -74
  215. package/node/hooks/features/columnResize/useGridColumnResize.js +8 -6
  216. package/node/hooks/features/dimensions/useGridDimensions.js +1 -1
  217. package/node/hooks/features/editing/useGridRowEditing.js +1 -1
  218. package/node/hooks/features/export/useGridPrintExport.js +1 -1
  219. package/node/hooks/features/filter/gridFilterSelector.js +6 -1
  220. package/node/hooks/features/filter/gridFilterUtils.js +3 -3
  221. package/node/hooks/features/pagination/gridPaginationSelector.js +41 -3
  222. package/node/hooks/features/pagination/useGridPagination.js +5 -3
  223. package/node/hooks/features/pagination/useGridPaginationModel.js +23 -1
  224. package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +2 -2
  225. package/node/hooks/features/rows/gridRowsSelector.js +1 -1
  226. package/node/hooks/features/rows/useGridRows.js +1 -1
  227. package/node/hooks/features/sorting/gridSortingUtils.js +2 -2
  228. package/node/hooks/features/virtualization/gridFocusedVirtualCellSelector.js +49 -0
  229. package/node/hooks/features/virtualization/useGridVirtualScroller.js +96 -43
  230. package/node/hooks/utils/useGridApiEventHandler.js +1 -1
  231. package/node/hooks/utils/useGridVisibleRows.js +3 -28
  232. package/node/index.js +1 -1
  233. package/node/internals/constants.js +9 -2
  234. package/node/internals/index.js +12 -0
  235. package/node/internals/utils/attachPinnedStyle.js +15 -0
  236. package/node/internals/utils/getPinnedCellOffset.js +6 -7
  237. package/node/internals/utils/index.js +11 -0
  238. package/node/locales/urPK.js +9 -10
  239. package/node/utils/cellBorderUtils.js +5 -5
  240. package/node/utils/domUtils.js +7 -2
  241. package/node/utils/rtlFlipSide.js +29 -0
  242. package/package.json +2 -2
  243. package/utils/cellBorderUtils.d.ts +3 -3
  244. package/utils/cellBorderUtils.js +5 -5
  245. package/utils/createSelector.d.ts +2 -2
  246. package/utils/domUtils.js +7 -2
  247. package/utils/getPublicApiRef.d.ts +1 -1
  248. package/utils/rtlFlipSide.d.ts +2 -0
  249. package/utils/rtlFlipSide.js +22 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,165 @@
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
+ ## 7.24.0
7
+
8
+ _Jan 17, 2025_
9
+
10
+ We'd like to offer a big thanks to the 8 contributors who made this release possible. Here are some highlights ✨:
11
+
12
+ - 🔄 Data Grid [Scroll restoration](https://next.mui.com/x/react-data-grid/scrolling/#scroll-restoration)
13
+ - 🐞 Bugfixes
14
+
15
+ Special thanks go out to the community contributors who have helped make this release possible:
16
+ @lauri865, @AxharKhan.
17
+ Following are all team members who have contributed to this release:
18
+ @KenanYusuf, @arminmeh, @cherniavskii, @michelengelen, @samuelsycamore, @LukasTy.
19
+
20
+ <!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
21
+
22
+ ### Data Grid
23
+
24
+ #### `@mui/x-data-grid@7.24.0`
25
+
26
+ - [DataGrid] Fix resizing right pinned column (#16193) @KenanYusuf
27
+ - [DataGrid] Improve scrollbar deadzone with overlay scrollbars (#16212) @lauri865
28
+ - [DataGrid] Scroll restoration (#16208) @lauri865
29
+ - [DataGrid] Fix row, cell and header memoizations (#16195) @lauri865
30
+ - [l10n] Improve Urdu (ur-PK) locale (#16081) @AxharKhan
31
+
32
+ #### `@mui/x-data-grid-pro@7.24.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
33
+
34
+ Same changes as in `@mui/x-data-grid@7.24.0`, plus:
35
+
36
+ - [DataGridPro] Add test for column pinning with disabled column virtualization (#16196) @cherniavskii
37
+ - [DataGridPro] Fix width of right-pinned column group during resize (#16207) @cherniavskii
38
+
39
+ #### `@mui/x-data-grid-premium@7.24.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
40
+
41
+ Same changes as in `@mui/x-data-grid-pro@7.24.0`.
42
+
43
+ ### Date and Time Pickers
44
+
45
+ #### `@mui/x-date-pickers@7.24.0`
46
+
47
+ Internal changes.
48
+
49
+ #### `@mui/x-date-pickers-pro@7.24.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
50
+
51
+ Same changes as in `@mui/x-date-pickers@7.24.0`.
52
+
53
+ ### Charts
54
+
55
+ #### `@mui/x-charts@7.24.0`
56
+
57
+ Internal changes.
58
+
59
+ #### `@mui/x-charts-pro@7.24.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
60
+
61
+ Same changes as in `@mui/x-charts@7.24.0`.
62
+
63
+ ### Tree View
64
+
65
+ #### `@mui/x-tree-view@7.24.0`
66
+
67
+ Internal changes.
68
+
69
+ #### `@mui/x-tree-view-pro@7.24.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
70
+
71
+ Same changes as in `@mui/x-tree-view@7.24.0`.
72
+
73
+ ### Docs
74
+
75
+ - [docs] Copyedit the Data Grid cell selection page (#16213) @samuelsycamore
76
+ - [docs] Fix demo rendering issue on Codesandbox (#16129) @arminmeh
77
+
78
+ ### Core
79
+
80
+ - [core] Type all references as `RefObject` (#16125) @arminmeh
81
+ - [code-infra] Refactor `react` and `react-dom` definitions to simplify dep resolving (#16214) @LukasTy
82
+ - [infra] Improve cherry-pick action target list (#16188) @michelengelen
83
+ - [test] Fix flaky column pinning unit test (#16209) @cherniavskii
84
+
85
+ ## 7.23.6
86
+
87
+ _Jan 9, 2025_
88
+
89
+ We'd like to offer a big thanks to the 11 contributors who made this release possible. Here are some highlights ✨:
90
+
91
+ - 🌍 Add Chinese (Taiwan) (zh-TW) locale on the Date and Time Pickers
92
+ - 🌍 Improve Norwegian (nb-NO) locale on the Date and Time Pickers
93
+ - 🌍 Improve Dutch (nl-NL) locale on the Data Grid
94
+ - 🐞 Bugfixes
95
+
96
+ Special thanks go out to the community contributors who have helped make this release possible:
97
+ @josteinjhauge, @derek-0000, @nusr, @k-rajat19, @tomashauser.
98
+ Following are all team members who have contributed to this release:
99
+ @flaviendelangle, @LukasTy, @MBilalShafi, @arminmeh, @oliviertassinari, @cherniavskii.
100
+
101
+ <!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
102
+
103
+ ### Data Grid
104
+
105
+ #### `@mui/x-data-grid@7.23.6`
106
+
107
+ - [DataGrid] Improve React 19 support (#16048) @LukasTy
108
+ - [DataGrid] Add `name` attribute to selection checkboxes (#16041) @derek-0000
109
+ - [DataGrid] Fix number filter field formatting values while typing (#16068) @arminmeh
110
+ - [DataGrid] Fix select all checkbox state reset with server side data (#16039) @MBilalShafi
111
+
112
+ #### `@mui/x-data-grid-pro@7.23.6` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
113
+
114
+ Same changes as in `@mui/x-data-grid@7.23.6`.
115
+
116
+ #### `@mui/x-data-grid-premium@7.23.6` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
117
+
118
+ Same changes as in `@mui/x-data-grid-pro@7.23.6`.
119
+
120
+ ### Date and Time Pickers
121
+
122
+ #### `@mui/x-date-pickers@7.23.6`
123
+
124
+ - [pickers] Improve React 19 support (#16048) @LukasTy
125
+ - [l10n] Add Chinese (Taiwan) (zh-TW) locale (#16057) @nusr
126
+ - [l10n] Improve Norwegian (nb-NO) locale (#16083) @josteinjhauge
127
+ - [pickers] Support `date-fns-jalali` v4 (#16013) @LukasTy
128
+
129
+ #### `@mui/x-date-pickers-pro@7.23.6` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
130
+
131
+ Same changes as in `@mui/x-date-pickers@7.23.6`.
132
+
133
+ ### Charts
134
+
135
+ #### `@mui/x-charts@7.23.6`
136
+
137
+ - [charts] Improve React 19 support (#16048) @LukasTy
138
+ - [charts] Fix 301 redirection in the API documentation @oliviertassinari
139
+
140
+ #### `@mui/x-charts-pro@7.23.6` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
141
+
142
+ Same changes as in `@mui/x-charts@7.23.6`.
143
+
144
+ ### Tree View
145
+
146
+ #### `@mui/x-tree-view@7.23.6`
147
+
148
+ - [TreeView] Improve React 19 support (#16048) @LukasTy
149
+
150
+ #### `@mui/x-tree-view-pro@7.23.6` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
151
+
152
+ Same changes as in `@mui/x-tree-view@7.23.6`.
153
+
154
+ ### Docs
155
+
156
+ - [docs] Fix `EditingWithDatePickers` demo (#16047) @k-rajat19
157
+ - [docs] Fix doc warning for automatic children selection on tree view (#16037) @flaviendelangle
158
+ - [docs] Fix non-existing "adapter" property of `LocalizationProvider` (#16088) @tomashauser
159
+
160
+ ### Core
161
+
162
+ - [core] Clarify the release strategy (#16012) @MBilalShafi
163
+ - [core] Update the `release:version` docs (#16040) @cherniavskii
164
+
6
165
  ## 7.23.5
7
166
 
8
167
  _Dec 27, 2024_
@@ -4,14 +4,14 @@ import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { forwardRef } from '@mui/x-internals/forwardRef';
7
- import { GridBody, GridFooterPlaceholder, GridHeader, GridRoot } from "../components/index.js";
7
+ import { GridRoot } from "../components/index.js";
8
8
  import { useGridAriaAttributes } from "../hooks/utils/useGridAriaAttributes.js";
9
9
  import { useGridRowAriaAttributes } from "../hooks/features/rows/useGridRowAriaAttributes.js";
10
10
  import { GridContextProvider } from "../context/GridContextProvider.js";
11
11
  import { useDataGridComponent } from "./useDataGridComponent.js";
12
12
  import { useDataGridProps } from "./useDataGridProps.js";
13
13
  import { propValidatorsDataGrid, validateProps } from "../internals/utils/propValidation.js";
14
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
+ import { jsx as _jsx } from "react/jsx-runtime";
15
15
  const configuration = {
16
16
  hooks: {
17
17
  useGridAriaAttributes,
@@ -34,13 +34,12 @@ const DataGridRaw = forwardRef(function DataGrid(inProps, ref) {
34
34
  privateApiRef: privateApiRef,
35
35
  configuration: configuration,
36
36
  props: props,
37
- children: /*#__PURE__*/_jsxs(GridRoot, _extends({
37
+ children: /*#__PURE__*/_jsx(GridRoot, _extends({
38
38
  className: props.className,
39
39
  style: props.style,
40
40
  sx: props.sx
41
41
  }, props.forwardedProps, props.slotProps?.root, {
42
- ref: ref,
43
- children: [/*#__PURE__*/_jsx(GridHeader, {}), /*#__PURE__*/_jsx(GridBody, {}), /*#__PURE__*/_jsx(GridFooterPlaceholder, {})]
42
+ ref: ref
44
43
  }))
45
44
  });
46
45
  });
@@ -1,3 +1,3 @@
1
1
  import { DataGridProcessedProps } from '../models/props/DataGridProps';
2
2
  import { GridApiCommunity, GridPrivateApiCommunity } from '../models/api/gridApiCommunity';
3
- export declare const useDataGridComponent: (inputApiRef: React.MutableRefObject<GridApiCommunity> | undefined, props: DataGridProcessedProps) => import("react").MutableRefObject<GridPrivateApiCommunity>;
3
+ export declare const useDataGridComponent: (inputApiRef: React.RefObject<GridApiCommunity> | undefined, props: DataGridProcessedProps) => import("react").RefObject<GridPrivateApiCommunity>;
@@ -44,6 +44,7 @@ export const useDataGridComponent = (inputApiRef, props) => {
44
44
  useGridInitializeState(dimensionsStateInitializer, apiRef, props);
45
45
  useGridInitializeState(rowSelectionStateInitializer, apiRef, props);
46
46
  useGridInitializeState(columnsStateInitializer, apiRef, props);
47
+ useGridInitializeState(paginationStateInitializer, apiRef, props);
47
48
  useGridInitializeState(rowsStateInitializer, apiRef, props);
48
49
  useGridInitializeState(editingStateInitializer, apiRef, props);
49
50
  useGridInitializeState(focusStateInitializer, apiRef, props);
@@ -53,7 +54,6 @@ export const useDataGridComponent = (inputApiRef, props) => {
53
54
  useGridInitializeState(rowSpanningStateInitializer, apiRef, props);
54
55
  useGridInitializeState(densityStateInitializer, apiRef, props);
55
56
  useGridInitializeState(columnResizeStateInitializer, apiRef, props);
56
- useGridInitializeState(paginationStateInitializer, apiRef, props);
57
57
  useGridInitializeState(rowsMetaStateInitializer, apiRef, props);
58
58
  useGridInitializeState(columnMenuStateInitializer, apiRef, props);
59
59
  useGridInitializeState(columnGroupsStateInitializer, apiRef, props);
@@ -18,7 +18,7 @@ function GridHeaders() {
18
18
  const filterColumnLookup = useGridSelector(apiRef, gridFilterActiveItemsLookupSelector);
19
19
  const sortColumnLookup = useGridSelector(apiRef, gridSortColumnLookupSelector);
20
20
  const columnHeaderTabIndexState = useGridSelector(apiRef, gridTabIndexColumnHeaderSelector);
21
- const cellTabIndexState = useGridSelector(apiRef, gridTabIndexCellSelector);
21
+ const hasNoCellTabIndexState = useGridSelector(apiRef, () => gridTabIndexCellSelector(apiRef) === null);
22
22
  const columnGroupHeaderTabIndexState = useGridSelector(apiRef, gridTabIndexColumnGroupHeaderSelector);
23
23
  const columnHeaderFocus = useGridSelector(apiRef, gridFocusColumnHeaderSelector);
24
24
  const columnGroupHeaderFocus = useGridSelector(apiRef, gridFocusColumnGroupHeaderSelector);
@@ -26,7 +26,7 @@ function GridHeaders() {
26
26
  const columnMenuState = useGridSelector(apiRef, gridColumnMenuSelector);
27
27
  const columnVisibility = useGridSelector(apiRef, gridColumnVisibilityModelSelector);
28
28
  const columnGroupsHeaderStructure = useGridSelector(apiRef, gridColumnGroupsHeaderStructureSelector);
29
- const hasOtherElementInTabSequence = !(columnGroupHeaderTabIndexState === null && columnHeaderTabIndexState === null && cellTabIndexState === null);
29
+ const hasOtherElementInTabSequence = !(columnGroupHeaderTabIndexState === null && columnHeaderTabIndexState === null && hasNoCellTabIndexState);
30
30
  const columnsContainerRef = apiRef.current.columnHeadersContainerRef;
31
31
  return /*#__PURE__*/_jsx(rootProps.slots.columnHeaders, _extends({
32
32
  ref: columnsContainerRef,
@@ -2,8 +2,6 @@ import * as React from 'react';
2
2
  import { GridRowId, GridRowModel } from '../models/gridRows';
3
3
  import { GridPinnedColumns } from '../hooks/features/columns';
4
4
  import type { GridStateColDef } from '../models/colDef/gridColDef';
5
- import type { GridRenderContext } from '../models/params/gridScrollParams';
6
- import type { GridDimensions } from '../hooks/features/dimensions';
7
5
  export interface GridRowProps extends React.HTMLAttributes<HTMLDivElement> {
8
6
  row: GridRowModel;
9
7
  rowId: GridRowId;
@@ -16,8 +14,9 @@ export interface GridRowProps extends React.HTMLAttributes<HTMLDivElement> {
16
14
  rowHeight: number | 'auto';
17
15
  offsetTop: number | undefined;
18
16
  offsetLeft: number;
19
- dimensions: GridDimensions;
20
- renderContext: GridRenderContext;
17
+ columnsTotalWidth: number;
18
+ firstColumnIndex: number;
19
+ lastColumnIndex: number;
21
20
  visibleColumns: GridStateColDef[];
22
21
  pinnedColumns: GridPinnedColumns;
23
22
  /**
@@ -25,15 +24,12 @@ export interface GridRowProps extends React.HTMLAttributes<HTMLDivElement> {
25
24
  * If `null`, no cell in this row has focus.
26
25
  */
27
26
  focusedColumnIndex: number | undefined;
28
- /**
29
- * Determines which cell should be tabbable by having tabIndex=0.
30
- * If `null`, no cell in this row is in the tab sequence.
31
- */
32
- tabbableCell: string | null;
33
27
  isFirstVisible: boolean;
34
28
  isLastVisible: boolean;
35
29
  isNotVisible: boolean;
36
30
  showBottomBorder: boolean;
31
+ scrollbarWidth: number;
32
+ gridHasFiller: boolean;
37
33
  onClick?: React.MouseEventHandler<HTMLDivElement>;
38
34
  onDoubleClick?: React.MouseEventHandler<HTMLDivElement>;
39
35
  onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["selected", "rowId", "row", "index", "style", "rowHeight", "className", "visibleColumns", "pinnedColumns", "offsetTop", "offsetLeft", "dimensions", "renderContext", "focusedColumnIndex", "isFirstVisible", "isLastVisible", "isNotVisible", "showBottomBorder", "tabbableCell", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave", "onMouseOut", "onMouseOver"];
3
+ const _excluded = ["selected", "rowId", "row", "index", "style", "rowHeight", "className", "visibleColumns", "pinnedColumns", "offsetTop", "offsetLeft", "columnsTotalWidth", "firstColumnIndex", "lastColumnIndex", "focusedColumnIndex", "isFirstVisible", "isLastVisible", "isNotVisible", "showBottomBorder", "scrollbarWidth", "gridHasFiller", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave", "onMouseOut", "onMouseOver"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import clsx from 'clsx';
@@ -11,44 +11,22 @@ import { GridEditModes, GridRowModes, GridCellModes } from "../models/gridEditRo
11
11
  import { gridClasses } from "../constants/gridClasses.js";
12
12
  import { composeGridClasses } from "../utils/composeGridClasses.js";
13
13
  import { useGridRootProps } from "../hooks/utils/useGridRootProps.js";
14
+ import { shouldCellShowLeftBorder, shouldCellShowRightBorder } from "../utils/cellBorderUtils.js";
14
15
  import { gridColumnPositionsSelector } from "../hooks/features/columns/gridColumnsSelector.js";
15
16
  import { useGridSelector, objectShallowCompare } from "../hooks/utils/useGridSelector.js";
16
17
  import { useGridVisibleRows } from "../hooks/utils/useGridVisibleRows.js";
17
18
  import { findParentElementFromClassName, isEventTargetInPortal } from "../utils/domUtils.js";
18
19
  import { GRID_CHECKBOX_SELECTION_COL_DEF } from "../colDef/gridCheckboxSelectionColDef.js";
19
20
  import { GRID_ACTIONS_COLUMN_TYPE } from "../colDef/gridActionsColDef.js";
20
- import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from "../internals/constants.js";
21
+ import { GRID_DETAIL_PANEL_TOGGLE_FIELD, PinnedColumnPosition } from "../internals/constants.js";
21
22
  import { gridSortModelSelector } from "../hooks/features/sorting/gridSortingSelector.js";
22
23
  import { gridRowMaximumTreeDepthSelector } from "../hooks/features/rows/gridRowsSelector.js";
23
24
  import { gridEditRowsStateSelector } from "../hooks/features/editing/gridEditingSelectors.js";
24
- import { PinnedPosition, gridPinnedColumnPositionLookup } from "./cell/GridCell.js";
25
25
  import { GridScrollbarFillerCell as ScrollbarFiller } from "./GridScrollbarFillerCell.js";
26
26
  import { getPinnedCellOffset } from "../internals/utils/getPinnedCellOffset.js";
27
27
  import { useGridConfiguration } from "../hooks/utils/useGridConfiguration.js";
28
28
  import { useGridPrivateApiContext } from "../hooks/utils/useGridPrivateApiContext.js";
29
- import { gridVirtualizationColumnEnabledSelector } from "../hooks/index.js";
30
29
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
31
- function EmptyCell({
32
- width
33
- }) {
34
- if (!width) {
35
- return null;
36
- }
37
- return /*#__PURE__*/_jsx("div", {
38
- role: "presentation",
39
- className: clsx(gridClasses.cell, gridClasses.cellEmpty),
40
- style: {
41
- '--width': `${width}px`
42
- }
43
- });
44
- }
45
- process.env.NODE_ENV !== "production" ? EmptyCell.propTypes = {
46
- // ----------------------------- Warning --------------------------------
47
- // | These PropTypes are generated from the TypeScript type definitions |
48
- // | To update them edit the TypeScript types and run "pnpm proptypes" |
49
- // ----------------------------------------------------------------------
50
- width: PropTypes.number.isRequired
51
- } : void 0;
52
30
  const GridRow = forwardRef(function GridRow(props, refProp) {
53
31
  const {
54
32
  selected,
@@ -61,13 +39,16 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
61
39
  visibleColumns,
62
40
  pinnedColumns,
63
41
  offsetLeft,
64
- dimensions,
65
- renderContext,
42
+ columnsTotalWidth,
43
+ firstColumnIndex,
44
+ lastColumnIndex,
66
45
  focusedColumnIndex,
67
46
  isFirstVisible,
68
47
  isLastVisible,
69
48
  isNotVisible,
70
49
  showBottomBorder,
50
+ scrollbarWidth,
51
+ gridHasFiller,
71
52
  onClick,
72
53
  onDoubleClick,
73
54
  onMouseEnter,
@@ -87,14 +68,11 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
87
68
  const editRowsState = useGridSelector(apiRef, gridEditRowsStateSelector);
88
69
  const handleRef = useForkRef(ref, refProp);
89
70
  const rowNode = apiRef.current.getRowNode(rowId);
90
- const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
91
- const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;
92
71
  const editing = apiRef.current.getRowMode(rowId) === GridRowModes.Edit;
93
72
  const editable = rootProps.editMode === GridEditModes.Row;
94
- const hasColumnVirtualization = useGridSelector(apiRef, gridVirtualizationColumnEnabledSelector);
95
73
  const hasFocusCell = focusedColumnIndex !== undefined;
96
- const hasVirtualFocusCellLeft = hasFocusCell && focusedColumnIndex >= pinnedColumns.left.length && focusedColumnIndex < renderContext.firstColumnIndex;
97
- const hasVirtualFocusCellRight = hasFocusCell && focusedColumnIndex < visibleColumns.length - pinnedColumns.right.length && focusedColumnIndex >= renderContext.lastColumnIndex;
74
+ const hasVirtualFocusCellLeft = hasFocusCell && focusedColumnIndex >= pinnedColumns.left.length && focusedColumnIndex < firstColumnIndex;
75
+ const hasVirtualFocusCellRight = hasFocusCell && focusedColumnIndex < visibleColumns.length - pinnedColumns.right.length && focusedColumnIndex >= lastColumnIndex;
98
76
  const classes = composeGridClasses(rootProps.classes, {
99
77
  root: ['row', selected && 'selected', editable && 'row--editable', editing && 'row--editing', isFirstVisible && 'row--firstVisible', isLastVisible && 'row--lastVisible', showBottomBorder && 'row--borderBottom', rowHeight === 'auto' && 'row--dynamicHeight']
100
78
  });
@@ -210,14 +188,14 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
210
188
  });
211
189
  rowClassNames.push(rootProps.getRowClassName(rowParams));
212
190
  }
213
- const getCell = (column, indexInSection, indexRelativeToAllColumns, sectionLength, pinnedPosition = PinnedPosition.NONE) => {
191
+ const getCell = (column, indexInSection, indexRelativeToAllColumns, sectionLength, pinnedPosition = PinnedColumnPosition.NONE) => {
214
192
  const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, indexRelativeToAllColumns);
215
193
  if (cellColSpanInfo?.spannedByColSpan) {
216
194
  return null;
217
195
  }
218
196
  const width = cellColSpanInfo?.cellProps.width ?? column.computedWidth;
219
197
  const colSpan = cellColSpanInfo?.cellProps.colSpan ?? 1;
220
- const pinnedOffset = getPinnedCellOffset(gridPinnedColumnPositionLookup[pinnedPosition], column.computedWidth, indexRelativeToAllColumns, columnPositions, dimensions);
198
+ const pinnedOffset = getPinnedCellOffset(pinnedPosition, column.computedWidth, indexRelativeToAllColumns, columnPositions, columnsTotalWidth, scrollbarWidth);
221
199
  if (rowNode?.type === 'skeletonRow') {
222
200
  return /*#__PURE__*/_jsx(slots.skeletonCell, {
223
201
  type: column.type,
@@ -236,7 +214,9 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
236
214
  const canReorderColumn = !(disableColumnReorder || column.disableReorder);
237
215
  const canReorderRow = rowReordering && !sortModel.length && treeDepth <= 1 && !isEditingRows;
238
216
  const disableDragEvents = !(canReorderColumn || isReorderCell && canReorderRow);
239
- const cellIsNotVisible = pinnedPosition === PinnedPosition.VIRTUAL;
217
+ const cellIsNotVisible = pinnedPosition === PinnedColumnPosition.VIRTUAL;
218
+ const showLeftBorder = shouldCellShowLeftBorder(pinnedPosition, indexInSection);
219
+ const showRightBorder = shouldCellShowRightBorder(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);
240
220
  return /*#__PURE__*/_jsx(slots.cell, _extends({
241
221
  column: column,
242
222
  width: width,
@@ -249,9 +229,8 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
249
229
  isNotVisible: cellIsNotVisible,
250
230
  pinnedOffset: pinnedOffset,
251
231
  pinnedPosition: pinnedPosition,
252
- sectionIndex: indexInSection,
253
- sectionLength: sectionLength,
254
- gridHasFiller: gridHasFiller
232
+ showLeftBorder: showLeftBorder,
233
+ showRightBorder: showRightBorder
255
234
  }, slotProps?.cell), column.field);
256
235
  };
257
236
 
@@ -262,25 +241,16 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
262
241
  }
263
242
  const leftCells = pinnedColumns.left.map((column, i) => {
264
243
  const indexRelativeToAllColumns = i;
265
- return getCell(column, i, indexRelativeToAllColumns, pinnedColumns.left.length, PinnedPosition.LEFT);
244
+ return getCell(column, i, indexRelativeToAllColumns, pinnedColumns.left.length, PinnedColumnPosition.LEFT);
266
245
  });
267
246
  const rightCells = pinnedColumns.right.map((column, i) => {
268
247
  const indexRelativeToAllColumns = visibleColumns.length - pinnedColumns.right.length + i;
269
- return getCell(column, i, indexRelativeToAllColumns, pinnedColumns.right.length, PinnedPosition.RIGHT);
248
+ return getCell(column, i, indexRelativeToAllColumns, pinnedColumns.right.length, PinnedColumnPosition.RIGHT);
270
249
  });
271
250
  const middleColumnsLength = visibleColumns.length - pinnedColumns.left.length - pinnedColumns.right.length;
272
251
  const cells = [];
273
252
  if (hasVirtualFocusCellLeft) {
274
- cells.push(getCell(visibleColumns[focusedColumnIndex], focusedColumnIndex - pinnedColumns.left.length, focusedColumnIndex, middleColumnsLength, PinnedPosition.VIRTUAL));
275
- }
276
- let firstColumnIndex;
277
- let lastColumnIndex;
278
- if (!rootProps.disableVirtualization && !hasColumnVirtualization) {
279
- firstColumnIndex = 0;
280
- lastColumnIndex = visibleColumns.length;
281
- } else {
282
- firstColumnIndex = renderContext.firstColumnIndex;
283
- lastColumnIndex = renderContext.lastColumnIndex;
253
+ cells.push(getCell(visibleColumns[focusedColumnIndex], focusedColumnIndex - pinnedColumns.left.length, focusedColumnIndex, middleColumnsLength, PinnedColumnPosition.VIRTUAL));
284
254
  }
285
255
  for (let i = firstColumnIndex; i < lastColumnIndex; i += 1) {
286
256
  const column = visibleColumns[i];
@@ -291,7 +261,7 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
291
261
  cells.push(getCell(column, indexInSection, i, middleColumnsLength));
292
262
  }
293
263
  if (hasVirtualFocusCellRight) {
294
- cells.push(getCell(visibleColumns[focusedColumnIndex], focusedColumnIndex - pinnedColumns.left.length, focusedColumnIndex, middleColumnsLength, PinnedPosition.VIRTUAL));
264
+ cells.push(getCell(visibleColumns[focusedColumnIndex], focusedColumnIndex - pinnedColumns.left.length, focusedColumnIndex, middleColumnsLength, PinnedColumnPosition.VIRTUAL));
295
265
  }
296
266
  const eventHandlers = row ? {
297
267
  onClick: publishClick,
@@ -301,8 +271,6 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
301
271
  onMouseOut: publish('rowMouseOut', onMouseOut),
302
272
  onMouseOver: publish('rowMouseOver', onMouseOver)
303
273
  } : null;
304
- const expandedWidth = dimensions.viewportOuterSize.width - dimensions.columnsTotalWidth - scrollbarWidth;
305
- const emptyCellWidth = Math.max(0, expandedWidth);
306
274
  return /*#__PURE__*/_jsxs("div", _extends({
307
275
  "data-id": rowId,
308
276
  "data-rowindex": index,
@@ -317,11 +285,9 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
317
285
  style: {
318
286
  width: offsetLeft
319
287
  }
320
- }), cells, emptyCellWidth > 0 && /*#__PURE__*/_jsx(EmptyCell, {
321
- width: emptyCellWidth
322
- }), rightCells.length > 0 && /*#__PURE__*/_jsx("div", {
288
+ }), cells, /*#__PURE__*/_jsx("div", {
323
289
  role: "presentation",
324
- className: gridClasses.filler
290
+ className: clsx(gridClasses.cell, gridClasses.cellEmpty)
325
291
  }), rightCells, scrollbarWidth !== 0 && /*#__PURE__*/_jsx(ScrollbarFiller, {
326
292
  pinnedRight: pinnedColumns.right.length > 0
327
293
  })]
@@ -332,48 +298,14 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
332
298
  // | These PropTypes are generated from the TypeScript type definitions |
333
299
  // | To update them edit the TypeScript types and run "pnpm proptypes" |
334
300
  // ----------------------------------------------------------------------
335
- dimensions: PropTypes.shape({
336
- bottomContainerHeight: PropTypes.number.isRequired,
337
- columnsTotalWidth: PropTypes.number.isRequired,
338
- contentSize: PropTypes.shape({
339
- height: PropTypes.number.isRequired,
340
- width: PropTypes.number.isRequired
341
- }).isRequired,
342
- groupHeaderHeight: PropTypes.number.isRequired,
343
- hasScrollX: PropTypes.bool.isRequired,
344
- hasScrollY: PropTypes.bool.isRequired,
345
- headerFilterHeight: PropTypes.number.isRequired,
346
- headerHeight: PropTypes.number.isRequired,
347
- headersTotalHeight: PropTypes.number.isRequired,
348
- isReady: PropTypes.bool.isRequired,
349
- leftPinnedWidth: PropTypes.number.isRequired,
350
- minimumSize: PropTypes.shape({
351
- height: PropTypes.number.isRequired,
352
- width: PropTypes.number.isRequired
353
- }).isRequired,
354
- rightPinnedWidth: PropTypes.number.isRequired,
355
- root: PropTypes.shape({
356
- height: PropTypes.number.isRequired,
357
- width: PropTypes.number.isRequired
358
- }).isRequired,
359
- rowHeight: PropTypes.number.isRequired,
360
- rowWidth: PropTypes.number.isRequired,
361
- scrollbarSize: PropTypes.number.isRequired,
362
- topContainerHeight: PropTypes.number.isRequired,
363
- viewportInnerSize: PropTypes.shape({
364
- height: PropTypes.number.isRequired,
365
- width: PropTypes.number.isRequired
366
- }).isRequired,
367
- viewportOuterSize: PropTypes.shape({
368
- height: PropTypes.number.isRequired,
369
- width: PropTypes.number.isRequired
370
- }).isRequired
371
- }).isRequired,
301
+ columnsTotalWidth: PropTypes.number.isRequired,
302
+ firstColumnIndex: PropTypes.number.isRequired,
372
303
  /**
373
304
  * Determines which cell has focus.
374
305
  * If `null`, no cell in this row has focus.
375
306
  */
376
307
  focusedColumnIndex: PropTypes.number,
308
+ gridHasFiller: PropTypes.bool.isRequired,
377
309
  /**
378
310
  * Index of the row in the whole sorted and filtered dataset.
379
311
  * If some rows above have expanded children, this index also take those children into account.
@@ -382,6 +314,7 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
382
314
  isFirstVisible: PropTypes.bool.isRequired,
383
315
  isLastVisible: PropTypes.bool.isRequired,
384
316
  isNotVisible: PropTypes.bool.isRequired,
317
+ lastColumnIndex: PropTypes.number.isRequired,
385
318
  offsetLeft: PropTypes.number.isRequired,
386
319
  offsetTop: PropTypes.number,
387
320
  onClick: PropTypes.func,
@@ -389,22 +322,12 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
389
322
  onMouseEnter: PropTypes.func,
390
323
  onMouseLeave: PropTypes.func,
391
324
  pinnedColumns: PropTypes.object.isRequired,
392
- renderContext: PropTypes.shape({
393
- firstColumnIndex: PropTypes.number.isRequired,
394
- firstRowIndex: PropTypes.number.isRequired,
395
- lastColumnIndex: PropTypes.number.isRequired,
396
- lastRowIndex: PropTypes.number.isRequired
397
- }).isRequired,
398
325
  row: PropTypes.object.isRequired,
399
326
  rowHeight: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]).isRequired,
400
327
  rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
328
+ scrollbarWidth: PropTypes.number.isRequired,
401
329
  selected: PropTypes.bool.isRequired,
402
330
  showBottomBorder: PropTypes.bool.isRequired,
403
- /**
404
- * Determines which cell should be tabbable by having tabIndex=0.
405
- * If `null`, no cell in this row is in the tab sequence.
406
- */
407
- tabbableCell: PropTypes.string,
408
331
  visibleColumns: PropTypes.arrayOf(PropTypes.object).isRequired
409
332
  } : void 0;
410
333
  const MemoizedGridRow = fastMemo(GridRow);
@@ -4,15 +4,19 @@ import clsx from 'clsx';
4
4
  import { styled } from '@mui/system';
5
5
  import useForkRef from '@mui/utils/useForkRef';
6
6
  import composeClasses from '@mui/utils/composeClasses';
7
+ import { useRtl } from '@mui/system/RtlProvider';
7
8
  import { forwardRef } from '@mui/x-internals/forwardRef';
8
9
  import { useGridApiContext } from "../hooks/utils/useGridApiContext.js";
9
10
  import { useGridRootProps } from "../hooks/utils/useGridRootProps.js";
10
- import { GridPinnedColumnPosition, gridColumnPositionsSelector, gridColumnsTotalWidthSelector, gridDimensionsSelector, gridVisibleColumnDefinitionsSelector, gridVisiblePinnedColumnDefinitionsSelector, useGridApiEventHandler, useGridSelector } from "../hooks/index.js";
11
+ import { gridColumnPositionsSelector, gridColumnsTotalWidthSelector, gridDimensionsSelector, gridVisibleColumnDefinitionsSelector, gridVisiblePinnedColumnDefinitionsSelector, useGridApiEventHandler, useGridSelector } from "../hooks/index.js";
12
+ import { PinnedColumnPosition } from "../internals/constants.js";
11
13
  import { getDataGridUtilityClass, gridClasses } from "../constants/gridClasses.js";
12
14
  import { getPinnedCellOffset } from "../internals/utils/getPinnedCellOffset.js";
13
15
  import { shouldCellShowLeftBorder, shouldCellShowRightBorder } from "../utils/cellBorderUtils.js";
14
16
  import { escapeOperandAttributeSelector } from "../utils/domUtils.js";
15
17
  import { GridScrollbarFillerCell } from "./GridScrollbarFillerCell.js";
18
+ import { rtlFlipSide } from "../utils/rtlFlipSide.js";
19
+ import { attachPinnedStyle } from "../internals/utils/index.js";
16
20
  import { jsx as _jsx } from "react/jsx-runtime";
17
21
  const SkeletonOverlay = styled('div', {
18
22
  name: 'MuiDataGrid',
@@ -40,6 +44,7 @@ const GridSkeletonLoadingOverlay = forwardRef(function GridSkeletonLoadingOverla
40
44
  const {
41
45
  slots
42
46
  } = rootProps;
47
+ const isRtl = useRtl();
43
48
  const classes = useUtilityClasses({
44
49
  classes: rootProps.classes
45
50
  });
@@ -55,18 +60,12 @@ const GridSkeletonLoadingOverlay = forwardRef(function GridSkeletonLoadingOverla
55
60
  const allVisibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
56
61
  const columns = React.useMemo(() => allVisibleColumns.slice(0, inViewportCount), [allVisibleColumns, inViewportCount]);
57
62
  const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
58
- const getPinnedStyle = React.useCallback((computedWidth, index, position) => {
59
- const pinnedOffset = getPinnedCellOffset(position, computedWidth, index, positions, dimensions);
60
- return {
61
- [position]: pinnedOffset
62
- };
63
- }, [dimensions, positions]);
64
63
  const getPinnedPosition = React.useCallback(field => {
65
64
  if (pinnedColumns.left.findIndex(col => col.field === field) !== -1) {
66
- return GridPinnedColumnPosition.LEFT;
65
+ return PinnedColumnPosition.LEFT;
67
66
  }
68
67
  if (pinnedColumns.right.findIndex(col => col.field === field) !== -1) {
69
- return GridPinnedColumnPosition.RIGHT;
68
+ return PinnedColumnPosition.RIGHT;
70
69
  }
71
70
  return undefined;
72
71
  }, [pinnedColumns.left, pinnedColumns.right]);
@@ -77,13 +76,15 @@ const GridSkeletonLoadingOverlay = forwardRef(function GridSkeletonLoadingOverla
77
76
  for (let colIndex = 0; colIndex < columns.length; colIndex += 1) {
78
77
  const column = columns[colIndex];
79
78
  const pinnedPosition = getPinnedPosition(column.field);
80
- const isPinnedLeft = pinnedPosition === GridPinnedColumnPosition.LEFT;
81
- const isPinnedRight = pinnedPosition === GridPinnedColumnPosition.RIGHT;
82
- const sectionLength = pinnedPosition ? pinnedColumns[pinnedPosition].length // pinned section
79
+ const isPinnedLeft = pinnedPosition === PinnedColumnPosition.LEFT;
80
+ const isPinnedRight = pinnedPosition === PinnedColumnPosition.RIGHT;
81
+ const pinnedSide = rtlFlipSide(pinnedPosition, isRtl);
82
+ const sectionLength = pinnedSide ? pinnedColumns[pinnedSide].length // pinned section
83
83
  : columns.length - pinnedColumns.left.length - pinnedColumns.right.length; // middle section
84
- const sectionIndex = pinnedPosition ? pinnedColumns[pinnedPosition].findIndex(col => col.field === column.field) // pinned section
84
+ const sectionIndex = pinnedSide ? pinnedColumns[pinnedSide].findIndex(col => col.field === column.field) // pinned section
85
85
  : colIndex - pinnedColumns.left.length; // middle section
86
- const pinnedStyle = pinnedPosition && getPinnedStyle(column.computedWidth, colIndex, pinnedPosition);
86
+ const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
87
+ const pinnedStyle = attachPinnedStyle({}, isRtl, pinnedPosition, getPinnedCellOffset(pinnedPosition, column.computedWidth, colIndex, positions, dimensions.columnsTotalWidth, scrollbarWidth));
87
88
  const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;
88
89
  const showRightBorder = shouldCellShowRightBorder(pinnedPosition, sectionIndex, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);
89
90
  const showLeftBorder = shouldCellShowLeftBorder(pinnedPosition, sectionIndex);
@@ -97,7 +98,6 @@ const GridSkeletonLoadingOverlay = forwardRef(function GridSkeletonLoadingOverla
97
98
  width: emptyCellWidth,
98
99
  empty: true
99
100
  }, `skeleton-filler-column-${i}`);
100
- const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
101
101
  const hasScrollbarFiller = isLastColumn && scrollbarWidth !== 0;
102
102
  if (hasFillerBefore) {
103
103
  rowCells.push(emptyCell);
@@ -129,7 +129,7 @@ const GridSkeletonLoadingOverlay = forwardRef(function GridSkeletonLoadingOverla
129
129
  }, `skeleton-row-${i}`));
130
130
  }
131
131
  return array;
132
- }, [slots, columns, pinnedColumns, skeletonRowsCount, rootProps.showCellVerticalBorder, dimensions.columnsTotalWidth, dimensions.viewportOuterSize.width, dimensions.rowHeight, dimensions.hasScrollY, dimensions.scrollbarSize, getPinnedPosition, getPinnedStyle]);
132
+ }, [slots, columns, pinnedColumns, skeletonRowsCount, rootProps.showCellVerticalBorder, dimensions, positions, getPinnedPosition, isRtl]);
133
133
 
134
134
  // Sync the column resize of the overlay columns with the grid
135
135
  const handleColumnResize = params => {
@@ -143,8 +143,8 @@ const GridSkeletonLoadingOverlay = forwardRef(function GridSkeletonLoadingOverla
143
143
  }
144
144
  const resizedColIndex = columns.findIndex(col => col.field === colDef.field);
145
145
  const pinnedPosition = getPinnedPosition(colDef.field);
146
- const isPinnedLeft = pinnedPosition === GridPinnedColumnPosition.LEFT;
147
- const isPinnedRight = pinnedPosition === GridPinnedColumnPosition.RIGHT;
146
+ const isPinnedLeft = pinnedPosition === PinnedColumnPosition.LEFT;
147
+ const isPinnedRight = pinnedPosition === PinnedColumnPosition.RIGHT;
148
148
  const currentWidth = getComputedStyle(cells[0]).getPropertyValue('--width');
149
149
  const delta = parseInt(currentWidth, 10) - width;
150
150
  if (cells) {