@mui/x-data-grid 7.17.0 → 7.19.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 (203) hide show
  1. package/CHANGELOG.md +208 -5
  2. package/DataGrid/DataGrid.js +16 -1
  3. package/DataGrid/useDataGridComponent.js +3 -0
  4. package/DataGrid/useDataGridProps.js +2 -1
  5. package/components/GridRow.js +1 -0
  6. package/components/cell/GridCell.js +33 -9
  7. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -1
  8. package/components/columnSelection/GridCellCheckboxRenderer.js +12 -4
  9. package/components/columnSelection/GridHeaderCheckbox.d.ts +1 -1
  10. package/components/containers/GridRoot.js +1 -1
  11. package/components/containers/GridRootStyles.js +32 -23
  12. package/components/containers/GridToolbarContainer.js +1 -1
  13. package/components/menu/GridMenu.js +1 -1
  14. package/components/panel/GridPanel.d.ts +1 -1
  15. package/components/panel/GridPanel.js +1 -1
  16. package/components/panel/GridPanelContent.js +1 -1
  17. package/components/panel/GridPanelFooter.js +1 -1
  18. package/components/panel/GridPanelHeader.js +1 -1
  19. package/components/panel/GridPanelWrapper.js +1 -1
  20. package/components/panel/filterPanel/filterPanelUtils.d.ts +1 -1
  21. package/components/toolbar/GridToolbarQuickFilter.js +1 -1
  22. package/components/virtualization/GridBottomContainer.d.ts +1 -1
  23. package/components/virtualization/GridBottomContainer.js +18 -1
  24. package/components/virtualization/GridMainContainer.js +3 -1
  25. package/components/virtualization/GridTopContainer.d.ts +1 -1
  26. package/components/virtualization/GridTopContainer.js +1 -1
  27. package/components/virtualization/GridVirtualScrollbar.js +1 -7
  28. package/components/virtualization/GridVirtualScroller.js +1 -0
  29. package/components/virtualization/GridVirtualScrollerFiller.js +3 -4
  30. package/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +4 -4
  31. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -2
  32. package/hooks/features/columnHeaders/useGridColumnHeaders.js +11 -11
  33. package/hooks/features/columnResize/columnResizeSelector.d.ts +1 -1
  34. package/hooks/features/columnResize/useGridColumnResize.js +6 -6
  35. package/hooks/features/columns/gridColumnsSelector.d.ts +12 -12
  36. package/hooks/features/columns/gridColumnsUtils.js +3 -2
  37. package/hooks/features/density/densitySelector.d.ts +1 -1
  38. package/hooks/features/dimensions/gridDimensionsApi.d.ts +4 -0
  39. package/hooks/features/dimensions/useGridDimensions.d.ts +1 -1
  40. package/hooks/features/dimensions/useGridDimensions.js +4 -1
  41. package/hooks/features/editing/useGridCellEditing.js +3 -19
  42. package/hooks/features/editing/useGridRowEditing.js +7 -2
  43. package/hooks/features/editing/utils.d.ts +2 -0
  44. package/hooks/features/editing/utils.js +15 -0
  45. package/hooks/features/export/useGridPrintExport.js +2 -1
  46. package/hooks/features/filter/gridFilterSelector.d.ts +17 -17
  47. package/hooks/features/focus/gridFocusStateSelector.d.ts +8 -8
  48. package/hooks/features/focus/useGridFocus.js +2 -1
  49. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.d.ts +3 -3
  50. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +10 -46
  51. package/hooks/features/keyboardNavigation/utils.d.ts +17 -0
  52. package/hooks/features/keyboardNavigation/utils.js +58 -0
  53. package/hooks/features/pagination/gridPaginationSelector.d.ts +9 -9
  54. package/hooks/features/rowSelection/gridRowSelectionSelector.d.ts +3 -3
  55. package/hooks/features/rowSelection/useGridRowSelection.d.ts +1 -1
  56. package/hooks/features/rowSelection/useGridRowSelection.js +105 -29
  57. package/hooks/features/rowSelection/utils.d.ts +10 -0
  58. package/hooks/features/rowSelection/utils.js +156 -1
  59. package/hooks/features/rows/gridRowSpanningSelectors.d.ts +4 -0
  60. package/hooks/features/rows/gridRowSpanningSelectors.js +5 -0
  61. package/hooks/features/rows/gridRowSpanningUtils.d.ts +10 -0
  62. package/hooks/features/rows/gridRowSpanningUtils.js +42 -0
  63. package/hooks/features/rows/gridRowsSelector.d.ts +14 -14
  64. package/hooks/features/rows/useGridRowSpanning.d.ts +27 -0
  65. package/hooks/features/rows/useGridRowSpanning.js +257 -0
  66. package/hooks/features/rows/useGridRows.d.ts +1 -1
  67. package/hooks/features/rows/useGridRows.js +7 -1
  68. package/hooks/features/scroll/useGridScroll.js +19 -19
  69. package/hooks/features/sorting/gridSortingSelector.d.ts +4 -4
  70. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +5 -5
  71. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -1
  72. package/hooks/features/virtualization/useGridVirtualScroller.js +17 -7
  73. package/hooks/utils/useGridApiEventHandler.js +0 -1
  74. package/hooks/utils/useGridVisibleRows.d.ts +2 -2
  75. package/index.js +1 -1
  76. package/internals/index.d.ts +2 -0
  77. package/internals/index.js +2 -0
  78. package/locales/bgBG.js +8 -9
  79. package/locales/deDE.js +4 -4
  80. package/locales/frFR.js +4 -4
  81. package/locales/hrHR.d.ts +1 -1
  82. package/locales/hrHR.js +69 -46
  83. package/locales/jaJP.js +1 -2
  84. package/locales/ptPT.d.ts +1 -1
  85. package/locales/ptPT.js +4 -4
  86. package/locales/viVN.js +20 -20
  87. package/locales/zhHK.d.ts +1 -1
  88. package/models/colDef/gridColDef.d.ts +4 -0
  89. package/models/gridRowSelectionModel.d.ts +4 -0
  90. package/models/gridStateCommunity.d.ts +2 -0
  91. package/models/props/DataGridProps.d.ts +30 -1
  92. package/modern/DataGrid/DataGrid.js +16 -1
  93. package/modern/DataGrid/useDataGridComponent.js +3 -0
  94. package/modern/DataGrid/useDataGridProps.js +2 -1
  95. package/modern/components/GridRow.js +1 -0
  96. package/modern/components/cell/GridCell.js +33 -9
  97. package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -1
  98. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +12 -4
  99. package/modern/components/containers/GridRoot.js +1 -1
  100. package/modern/components/containers/GridRootStyles.js +32 -23
  101. package/modern/components/containers/GridToolbarContainer.js +1 -1
  102. package/modern/components/menu/GridMenu.js +1 -1
  103. package/modern/components/panel/GridPanel.js +1 -1
  104. package/modern/components/panel/GridPanelContent.js +1 -1
  105. package/modern/components/panel/GridPanelFooter.js +1 -1
  106. package/modern/components/panel/GridPanelHeader.js +1 -1
  107. package/modern/components/panel/GridPanelWrapper.js +1 -1
  108. package/modern/components/toolbar/GridToolbarQuickFilter.js +1 -1
  109. package/modern/components/virtualization/GridBottomContainer.js +18 -1
  110. package/modern/components/virtualization/GridMainContainer.js +3 -1
  111. package/modern/components/virtualization/GridTopContainer.js +1 -1
  112. package/modern/components/virtualization/GridVirtualScrollbar.js +1 -7
  113. package/modern/components/virtualization/GridVirtualScroller.js +1 -0
  114. package/modern/components/virtualization/GridVirtualScrollerFiller.js +3 -4
  115. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +11 -11
  116. package/modern/hooks/features/columnResize/useGridColumnResize.js +6 -6
  117. package/modern/hooks/features/columns/gridColumnsUtils.js +3 -2
  118. package/modern/hooks/features/dimensions/useGridDimensions.js +4 -1
  119. package/modern/hooks/features/editing/useGridCellEditing.js +3 -19
  120. package/modern/hooks/features/editing/useGridRowEditing.js +7 -2
  121. package/modern/hooks/features/editing/utils.js +15 -0
  122. package/modern/hooks/features/export/useGridPrintExport.js +2 -1
  123. package/modern/hooks/features/focus/useGridFocus.js +2 -1
  124. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +10 -46
  125. package/modern/hooks/features/keyboardNavigation/utils.js +58 -0
  126. package/modern/hooks/features/rowSelection/useGridRowSelection.js +105 -29
  127. package/modern/hooks/features/rowSelection/utils.js +156 -1
  128. package/modern/hooks/features/rows/gridRowSpanningSelectors.js +5 -0
  129. package/modern/hooks/features/rows/gridRowSpanningUtils.js +42 -0
  130. package/modern/hooks/features/rows/useGridRowSpanning.js +257 -0
  131. package/modern/hooks/features/rows/useGridRows.js +7 -1
  132. package/modern/hooks/features/scroll/useGridScroll.js +19 -19
  133. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +17 -7
  134. package/modern/hooks/utils/useGridApiEventHandler.js +0 -1
  135. package/modern/index.js +1 -1
  136. package/modern/internals/index.js +2 -0
  137. package/modern/locales/bgBG.js +8 -9
  138. package/modern/locales/deDE.js +4 -4
  139. package/modern/locales/frFR.js +4 -4
  140. package/modern/locales/hrHR.js +69 -46
  141. package/modern/locales/jaJP.js +1 -2
  142. package/modern/locales/ptPT.js +4 -4
  143. package/modern/locales/viVN.js +20 -20
  144. package/modern/utils/createSelector.js +6 -0
  145. package/modern/utils/domUtils.js +12 -12
  146. package/node/DataGrid/DataGrid.js +16 -1
  147. package/node/DataGrid/useDataGridComponent.js +3 -0
  148. package/node/DataGrid/useDataGridProps.js +2 -1
  149. package/node/components/GridRow.js +1 -0
  150. package/node/components/cell/GridCell.js +33 -9
  151. package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -1
  152. package/node/components/columnSelection/GridCellCheckboxRenderer.js +12 -4
  153. package/node/components/containers/GridRoot.js +1 -1
  154. package/node/components/containers/GridRootStyles.js +32 -23
  155. package/node/components/containers/GridToolbarContainer.js +1 -1
  156. package/node/components/menu/GridMenu.js +1 -1
  157. package/node/components/panel/GridPanel.js +1 -1
  158. package/node/components/panel/GridPanelContent.js +1 -1
  159. package/node/components/panel/GridPanelFooter.js +1 -1
  160. package/node/components/panel/GridPanelHeader.js +1 -1
  161. package/node/components/panel/GridPanelWrapper.js +1 -1
  162. package/node/components/toolbar/GridToolbarQuickFilter.js +1 -1
  163. package/node/components/virtualization/GridBottomContainer.js +18 -1
  164. package/node/components/virtualization/GridMainContainer.js +3 -1
  165. package/node/components/virtualization/GridTopContainer.js +1 -1
  166. package/node/components/virtualization/GridVirtualScrollbar.js +1 -7
  167. package/node/components/virtualization/GridVirtualScroller.js +1 -0
  168. package/node/components/virtualization/GridVirtualScrollerFiller.js +3 -4
  169. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +11 -11
  170. package/node/hooks/features/columnResize/useGridColumnResize.js +6 -6
  171. package/node/hooks/features/columns/gridColumnsUtils.js +3 -2
  172. package/node/hooks/features/dimensions/useGridDimensions.js +4 -1
  173. package/node/hooks/features/editing/useGridCellEditing.js +3 -19
  174. package/node/hooks/features/editing/useGridRowEditing.js +7 -2
  175. package/node/hooks/features/editing/utils.js +22 -0
  176. package/node/hooks/features/export/useGridPrintExport.js +2 -1
  177. package/node/hooks/features/focus/useGridFocus.js +2 -1
  178. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +16 -53
  179. package/node/hooks/features/keyboardNavigation/utils.js +68 -0
  180. package/node/hooks/features/rowSelection/useGridRowSelection.js +102 -26
  181. package/node/hooks/features/rowSelection/utils.js +160 -1
  182. package/node/hooks/features/rows/gridRowSpanningSelectors.js +11 -0
  183. package/node/hooks/features/rows/gridRowSpanningUtils.js +52 -0
  184. package/node/hooks/features/rows/useGridRowSpanning.js +267 -0
  185. package/node/hooks/features/rows/useGridRows.js +7 -1
  186. package/node/hooks/features/scroll/useGridScroll.js +19 -19
  187. package/node/hooks/features/virtualization/useGridVirtualScroller.js +17 -7
  188. package/node/hooks/utils/useGridApiEventHandler.js +0 -1
  189. package/node/index.js +1 -1
  190. package/node/internals/index.js +38 -15
  191. package/node/locales/bgBG.js +8 -9
  192. package/node/locales/deDE.js +4 -4
  193. package/node/locales/frFR.js +4 -4
  194. package/node/locales/hrHR.js +69 -46
  195. package/node/locales/jaJP.js +1 -2
  196. package/node/locales/ptPT.js +4 -4
  197. package/node/locales/viVN.js +20 -20
  198. package/node/utils/createSelector.js +6 -0
  199. package/node/utils/domUtils.js +12 -12
  200. package/package.json +3 -3
  201. package/utils/createSelector.js +6 -0
  202. package/utils/domUtils.d.ts +4 -4
  203. package/utils/domUtils.js +12 -12
package/locales/frFR.js CHANGED
@@ -47,9 +47,9 @@ const frFRGrid = {
47
47
  filterPanelInputPlaceholder: 'Filtrer la valeur',
48
48
  // Filter operators text
49
49
  filterOperatorContains: 'contient',
50
- // filterOperatorDoesNotContain: 'does not contain',
50
+ filterOperatorDoesNotContain: 'ne contient pas',
51
51
  filterOperatorEquals: 'est égal à',
52
- // filterOperatorDoesNotEqual: 'does not equal',
52
+ filterOperatorDoesNotEqual: "n'est pas égal à",
53
53
  filterOperatorStartsWith: 'commence par',
54
54
  filterOperatorEndsWith: 'se termine par',
55
55
  filterOperatorIs: 'est',
@@ -69,9 +69,9 @@ const frFRGrid = {
69
69
  'filterOperator<=': '<=',
70
70
  // Header filter operators text
71
71
  headerFilterOperatorContains: 'Contient',
72
- // headerFilterOperatorDoesNotContain: 'Does not contain',
72
+ headerFilterOperatorDoesNotContain: 'Ne contient pas',
73
73
  headerFilterOperatorEquals: 'Est égal à',
74
- // headerFilterOperatorDoesNotEqual: 'Does not equal',
74
+ headerFilterOperatorDoesNotEqual: "N'est pas égal à",
75
75
  headerFilterOperatorStartsWith: 'Commence par',
76
76
  headerFilterOperatorEndsWith: 'Se termine par',
77
77
  headerFilterOperatorIs: 'Est',
package/locales/hrHR.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const hrHR: import("../utils/getGridLocalization").Localization;
1
+ export declare const hrHR: import("../internals").Localization;
package/locales/hrHR.js CHANGED
@@ -7,50 +7,57 @@ const hrHRGrid = {
7
7
  // Density selector toolbar button text
8
8
  toolbarDensity: 'Gustoća',
9
9
  toolbarDensityLabel: 'Gustoća',
10
- toolbarDensityCompact: 'Kompaktan',
11
- toolbarDensityStandard: 'Standard',
10
+ toolbarDensityCompact: 'Kompaktno',
11
+ toolbarDensityStandard: 'Standardno',
12
12
  toolbarDensityComfortable: 'Udobno',
13
13
  // Columns selector toolbar button text
14
14
  toolbarColumns: 'Stupci',
15
15
  toolbarColumnsLabel: 'Odaberite stupce',
16
16
  // Filters toolbar button text
17
17
  toolbarFilters: 'Filteri',
18
- toolbarFiltersLabel: 'Prikaži filtre',
19
- toolbarFiltersTooltipHide: 'Sakrij filtre',
20
- toolbarFiltersTooltipShow: 'Prikaži filtre',
21
- toolbarFiltersTooltipActive: count => count !== 1 ? `${count} aktivnih filtara` : `${count} aktivni filter`,
18
+ toolbarFiltersLabel: 'Prikaži filtere',
19
+ toolbarFiltersTooltipHide: 'Sakrij filtere',
20
+ toolbarFiltersTooltipShow: 'Prikaži filtere',
21
+ toolbarFiltersTooltipActive: count => {
22
+ if (count === 1) {
23
+ return `${count} aktivan filter`;
24
+ }
25
+ if (count < 5) {
26
+ return `${count} aktivna filtera`;
27
+ }
28
+ return `${count} aktivnih filtera`;
29
+ },
22
30
  // Quick filter toolbar field
23
31
  toolbarQuickFilterPlaceholder: 'Traži…',
24
32
  toolbarQuickFilterLabel: 'traži',
25
- toolbarQuickFilterDeleteIconLabel: 'Čisto',
33
+ toolbarQuickFilterDeleteIconLabel: 'Obriši',
26
34
  // Export selector toolbar button text
27
35
  toolbarExport: 'Izvoz',
28
36
  toolbarExportLabel: 'Izvoz',
29
37
  toolbarExportCSV: 'Preuzmi kao CSV',
30
- toolbarExportPrint: 'Ispis',
31
- toolbarExportExcel: 'Preuzmite kao Excel',
38
+ toolbarExportPrint: 'Štampaj',
39
+ toolbarExportExcel: 'Preuzmi kao Excel',
32
40
  // Columns management text
33
- // columnsManagementSearchTitle: 'Search',
34
- // columnsManagementNoColumns: 'No columns',
35
- // columnsManagementShowHideAllText: 'Show/Hide All',
36
- // columnsManagementReset: 'Reset',
37
-
41
+ columnsManagementSearchTitle: 'Traži',
42
+ columnsManagementNoColumns: 'Nema stupaca',
43
+ columnsManagementShowHideAllText: 'Prikaži/Sakrij sve',
44
+ columnsManagementReset: 'Ponovno namjesti',
38
45
  // Filter panel text
39
- filterPanelAddFilter: 'Dodajte filter',
40
- filterPanelRemoveAll: 'Ukloniti sve',
41
- filterPanelDeleteIconLabel: 'Izbrisati',
46
+ filterPanelAddFilter: 'Dodaj filter',
47
+ filterPanelRemoveAll: 'Ukloni sve',
48
+ filterPanelDeleteIconLabel: 'Obriši',
42
49
  filterPanelLogicOperator: 'Logički operator',
43
- filterPanelOperator: 'Operater',
50
+ filterPanelOperator: 'Operator',
44
51
  filterPanelOperatorAnd: 'I',
45
52
  filterPanelOperatorOr: 'Ili',
46
- filterPanelColumns: 'Stupci',
53
+ filterPanelColumns: 'Stupac',
47
54
  filterPanelInputLabel: 'Vrijednost',
48
- filterPanelInputPlaceholder: 'Vrijednost filtra',
55
+ filterPanelInputPlaceholder: 'Vrijednost filtera',
49
56
  // Filter operators text
50
57
  filterOperatorContains: 'sadrži',
51
- // filterOperatorDoesNotContain: 'does not contain',
52
- filterOperatorEquals: 'jednaki',
53
- // filterOperatorDoesNotEqual: 'does not equal',
58
+ filterOperatorDoesNotContain: 'ne sadrži',
59
+ filterOperatorEquals: 'je jednak',
60
+ filterOperatorDoesNotEqual: 'nije jednak',
54
61
  filterOperatorStartsWith: 'počinje sa',
55
62
  filterOperatorEndsWith: 'završava sa',
56
63
  filterOperatorIs: 'je',
@@ -59,8 +66,8 @@ const hrHRGrid = {
59
66
  filterOperatorOnOrAfter: 'je na ili poslije',
60
67
  filterOperatorBefore: 'je prije',
61
68
  filterOperatorOnOrBefore: 'je na ili prije',
62
- filterOperatorIsEmpty: 'prazno je',
63
- filterOperatorIsNotEmpty: 'nije prazna',
69
+ filterOperatorIsEmpty: 'je prazno',
70
+ filterOperatorIsNotEmpty: 'nije prazno',
64
71
  filterOperatorIsAnyOf: 'je bilo koji od',
65
72
  'filterOperator=': '=',
66
73
  'filterOperator!=': '!=',
@@ -70,20 +77,20 @@ const hrHRGrid = {
70
77
  'filterOperator<=': '<=',
71
78
  // Header filter operators text
72
79
  headerFilterOperatorContains: 'Sadrži',
73
- // headerFilterOperatorDoesNotContain: 'Does not contain',
80
+ headerFilterOperatorDoesNotContain: 'Ne sadrži',
74
81
  headerFilterOperatorEquals: 'Jednako',
75
- // headerFilterOperatorDoesNotEqual: 'Does not equal',
82
+ headerFilterOperatorDoesNotEqual: 'Nije jednako',
76
83
  headerFilterOperatorStartsWith: 'Počinje sa',
77
- headerFilterOperatorEndsWith: 'Završava s',
84
+ headerFilterOperatorEndsWith: 'Završava sa',
78
85
  headerFilterOperatorIs: 'Je',
79
86
  headerFilterOperatorNot: 'Nije',
80
87
  headerFilterOperatorAfter: 'Je poslije',
81
88
  headerFilterOperatorOnOrAfter: 'Je uključeno ili poslije',
82
- headerFilterOperatorBefore: 'Je li prije',
83
- headerFilterOperatorOnOrBefore: 'Uključeno je ili prije',
84
- headerFilterOperatorIsEmpty: 'Prazno je',
85
- headerFilterOperatorIsNotEmpty: 'Nije prazna',
86
- headerFilterOperatorIsAnyOf: 'Je li bilo koji od',
89
+ headerFilterOperatorBefore: 'Je prije',
90
+ headerFilterOperatorOnOrBefore: 'Je uključeno ili prije',
91
+ headerFilterOperatorIsEmpty: 'Je prazno',
92
+ headerFilterOperatorIsNotEmpty: 'Nije prazno',
93
+ headerFilterOperatorIsAnyOf: 'Je bilo koji od',
87
94
  'headerFilterOperator=': 'Jednako',
88
95
  'headerFilterOperator!=': 'Nije jednako',
89
96
  'headerFilterOperator>': 'Veći od',
@@ -92,32 +99,48 @@ const hrHRGrid = {
92
99
  'headerFilterOperator<=': 'Manje od ili jednako',
93
100
  // Filter values text
94
101
  filterValueAny: 'bilo koji',
95
- filterValueTrue: 'pravi',
96
- filterValueFalse: 'lažno',
102
+ filterValueTrue: 'tačno',
103
+ filterValueFalse: 'netačno',
97
104
  // Column menu text
98
- columnMenuLabel: 'Jelovnik ',
105
+ columnMenuLabel: 'Izbornik',
99
106
  columnMenuShowColumns: 'Prikaži stupce',
100
107
  columnMenuManageColumns: 'Upravljanje stupcima',
101
- columnMenuFilter: 'filtar',
108
+ columnMenuFilter: 'Filter',
102
109
  columnMenuHideColumn: 'Sakrij stupac',
103
110
  columnMenuUnsort: 'Poništi sortiranje',
104
111
  columnMenuSortAsc: 'Poredaj uzlazno',
105
- columnMenuSortDesc: 'Poredaj silaznim redom',
112
+ columnMenuSortDesc: 'Poredaj silazno',
106
113
  // Column header text
107
- columnHeaderFiltersTooltipActive: count => count !== 1 ? `${count} aktivnih filtara` : `${count} aktivni filter`,
108
- columnHeaderFiltersLabel: 'Prikaži filtre',
109
- columnHeaderSortIconLabel: 'Vrsta',
114
+ columnHeaderFiltersTooltipActive: count => {
115
+ if (count === 1) {
116
+ return `${count} aktivan filter`;
117
+ }
118
+ if (count < 5) {
119
+ return `${count} aktivna filtera`;
120
+ }
121
+ return `${count} aktivnih filtera`;
122
+ },
123
+ columnHeaderFiltersLabel: 'Prikaži filtere',
124
+ columnHeaderSortIconLabel: 'Poredaj',
110
125
  // Rows selected footer text
111
- footerRowSelected: count => count !== 1 ? `Odabrano je ${count.toLocaleString()} redaka` : `${count.toLocaleString()} redak odabran`,
126
+ footerRowSelected: count => {
127
+ if (count === 1) {
128
+ return `Odabran je ${count.toLocaleString()} redak`;
129
+ }
130
+ if (count < 5) {
131
+ return `Odabrana su ${count.toLocaleString()} retka`;
132
+ }
133
+ return `Odabrano je ${count.toLocaleString()} redaka`;
134
+ },
112
135
  // Total row amount footer text
113
136
  footerTotalRows: 'Ukupno redaka:',
114
137
  // Total visible row amount footer text
115
138
  footerTotalVisibleRows: (visibleCount, totalCount) => `${visibleCount.toLocaleString()} od ${totalCount.toLocaleString()}`,
116
139
  // Checkbox selection text
117
- checkboxSelectionHeaderName: 'Odabir potvrdnog okvira',
140
+ checkboxSelectionHeaderName: 'Odabir redaka',
118
141
  checkboxSelectionSelectAllRows: 'Odaberite sve retke',
119
142
  checkboxSelectionUnselectAllRows: 'Poništi odabir svih redaka',
120
- checkboxSelectionSelectRow: 'Odaberite red',
143
+ checkboxSelectionSelectRow: 'Odaberite redak',
121
144
  checkboxSelectionUnselectRow: 'Poništi odabir retka',
122
145
  // Boolean cell text
123
146
  booleanCellTrueLabel: 'Da',
@@ -129,7 +152,7 @@ const hrHRGrid = {
129
152
  pinToRight: 'Prikvači desno',
130
153
  unpin: 'Otkvači',
131
154
  // Tree Data
132
- treeDataGroupingHeaderName: 'Group',
155
+ treeDataGroupingHeaderName: 'Skupina',
133
156
  treeDataExpand: 'vidjeti djecu',
134
157
  treeDataCollapse: 'sakriti djecu',
135
158
  // Grouping columns
@@ -139,7 +162,7 @@ const hrHRGrid = {
139
162
  // Master/detail
140
163
  detailPanelToggle: 'Prebacivanje ploče s detaljima',
141
164
  expandDetailPanel: 'Proširiti',
142
- collapseDetailPanel: 'Kolaps',
165
+ collapseDetailPanel: 'Skupiti',
143
166
  // Row reordering text
144
167
  rowReorderingHeaderName: 'Promjena redoslijeda',
145
168
  // Aggregation
package/locales/jaJP.js CHANGED
@@ -33,8 +33,7 @@ const jaJPGrid = {
33
33
  columnsManagementSearchTitle: '検索',
34
34
  columnsManagementNoColumns: 'カラムなし',
35
35
  columnsManagementShowHideAllText: 'すべて表示/非表示',
36
- // columnsManagementReset: 'Reset',
37
-
36
+ columnsManagementReset: 'リセット',
38
37
  // Filter panel text
39
38
  filterPanelAddFilter: 'フィルター追加',
40
39
  filterPanelRemoveAll: 'すべて削除',
package/locales/ptPT.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const ptPT: import("../utils/getGridLocalization").Localization;
1
+ export declare const ptPT: import("../internals").Localization;
package/locales/ptPT.js CHANGED
@@ -47,9 +47,9 @@ const ptPTGrid = {
47
47
  filterPanelInputPlaceholder: 'Valor do filtro',
48
48
  // Filter operators text
49
49
  filterOperatorContains: 'contém',
50
- // filterOperatorDoesNotContain: 'does not contain',
50
+ filterOperatorDoesNotContain: 'não contém',
51
51
  filterOperatorEquals: 'é igual a',
52
- // filterOperatorDoesNotEqual: 'does not equal',
52
+ filterOperatorDoesNotEqual: 'não é igual a',
53
53
  filterOperatorStartsWith: 'começa com',
54
54
  filterOperatorEndsWith: 'termina com',
55
55
  filterOperatorIs: 'é',
@@ -69,9 +69,9 @@ const ptPTGrid = {
69
69
  'filterOperator<=': '<=',
70
70
  // Header filter operators text
71
71
  headerFilterOperatorContains: 'Contém',
72
- // headerFilterOperatorDoesNotContain: 'Does not contain',
72
+ headerFilterOperatorDoesNotContain: 'Não contém',
73
73
  headerFilterOperatorEquals: 'É igual a',
74
- // headerFilterOperatorDoesNotEqual: 'Does not equal',
74
+ headerFilterOperatorDoesNotEqual: 'Não é igual',
75
75
  headerFilterOperatorStartsWith: 'Começa com',
76
76
  headerFilterOperatorEndsWith: 'Termina com',
77
77
  headerFilterOperatorIs: 'É',
package/locales/viVN.js CHANGED
@@ -46,21 +46,21 @@ const viVNGrid = {
46
46
  filterPanelInputLabel: 'Giá trị',
47
47
  filterPanelInputPlaceholder: 'Lọc giá trị',
48
48
  // Filter operators text
49
- filterOperatorContains: 'Chứa',
50
- // filterOperatorDoesNotContain: 'does not contain',
51
- filterOperatorEquals: 'Bằng',
52
- // filterOperatorDoesNotEqual: 'does not equal',
53
- filterOperatorStartsWith: 'Bắt đầu bằng',
54
- filterOperatorEndsWith: 'Kết thúc bằng',
55
- filterOperatorIs: '',
56
- filterOperatorNot: 'Không là',
57
- filterOperatorAfter: 'Trước',
49
+ filterOperatorContains: 'chứa',
50
+ filterOperatorDoesNotContain: 'không chứa',
51
+ filterOperatorEquals: 'bằng',
52
+ filterOperatorDoesNotEqual: 'không bằng',
53
+ filterOperatorStartsWith: 'bắt đầu với',
54
+ filterOperatorEndsWith: 'kết thúc với',
55
+ filterOperatorIs: '',
56
+ filterOperatorNot: 'không phải là',
57
+ filterOperatorAfter: 'sau',
58
58
  filterOperatorOnOrAfter: 'bằng hoặc sau',
59
- filterOperatorBefore: 'Sau',
59
+ filterOperatorBefore: 'trước',
60
60
  filterOperatorOnOrBefore: 'bằng hoặc trước',
61
- filterOperatorIsEmpty: 'Rỗng',
62
- filterOperatorIsNotEmpty: 'Khác rỗng',
63
- filterOperatorIsAnyOf: 'Bất kỳ',
61
+ filterOperatorIsEmpty: 'rỗng',
62
+ filterOperatorIsNotEmpty: 'khác rỗng',
63
+ filterOperatorIsAnyOf: ' một trong',
64
64
  'filterOperator=': '=',
65
65
  'filterOperator!=': '!=',
66
66
  'filterOperator>': '>',
@@ -69,20 +69,20 @@ const viVNGrid = {
69
69
  'filterOperator<=': '<=',
70
70
  // Header filter operators text
71
71
  headerFilterOperatorContains: 'Chứa',
72
- // headerFilterOperatorDoesNotContain: 'Does not contain',
72
+ headerFilterOperatorDoesNotContain: 'Không chứa',
73
73
  headerFilterOperatorEquals: 'Bằng',
74
- // headerFilterOperatorDoesNotEqual: 'Does not equal',
74
+ headerFilterOperatorDoesNotEqual: 'Không bằng',
75
75
  headerFilterOperatorStartsWith: 'Bắt đầu với',
76
76
  headerFilterOperatorEndsWith: 'Kết thúc với',
77
- headerFilterOperatorIs: '',
78
- headerFilterOperatorNot: 'Không là',
77
+ headerFilterOperatorIs: '',
78
+ headerFilterOperatorNot: 'Không phải là',
79
79
  headerFilterOperatorAfter: 'Sau',
80
- headerFilterOperatorOnOrAfter: 'Đang hoặc sau',
80
+ headerFilterOperatorOnOrAfter: 'Bằng hoặc sau',
81
81
  headerFilterOperatorBefore: 'Trước',
82
- headerFilterOperatorOnOrBefore: 'Đang hoặc trước',
82
+ headerFilterOperatorOnOrBefore: 'Bằng hoặc trước',
83
83
  headerFilterOperatorIsEmpty: 'Rỗng',
84
84
  headerFilterOperatorIsNotEmpty: 'Khác rỗng',
85
- headerFilterOperatorIsAnyOf: 'Bất kỳ',
85
+ headerFilterOperatorIsAnyOf: ' một trong',
86
86
  'headerFilterOperator=': 'Bằng',
87
87
  'headerFilterOperator!=': 'Khác',
88
88
  'headerFilterOperator>': 'Lớn hơn',
package/locales/zhHK.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const zhHK: import("../utils/getGridLocalization").Localization;
1
+ export declare const zhHK: import("../internals").Localization;
@@ -129,6 +129,10 @@ export interface GridBaseColDef<R extends GridValidRowModel = GridValidRowModel,
129
129
  * Function that allows to get a specific data instead of field to render in the cell.
130
130
  */
131
131
  valueGetter?: GridValueGetter<R, V, F>;
132
+ /**
133
+ * Function that allows to provide a specific value to be used in row spanning.
134
+ */
135
+ rowSpanValueGetter?: GridValueGetter<R, V, F>;
132
136
  /**
133
137
  * Function that allows to customize how the entered value is stored in the row.
134
138
  * It only works with cell/row editing.
@@ -1,3 +1,7 @@
1
1
  import { GridRowId } from './gridRows';
2
+ export type GridRowSelectionPropagation = {
3
+ descendants?: boolean;
4
+ parents?: boolean;
5
+ };
2
6
  export type GridInputRowSelectionModel = readonly GridRowId[] | GridRowId;
3
7
  export type GridRowSelectionModel = readonly GridRowId[];
@@ -5,6 +5,7 @@ import { GridHeaderFilteringState } from './gridHeaderFilteringModel';
5
5
  import type { GridRowSelectionModel } from './gridRowSelectionModel';
6
6
  import type { GridVisibleRowsLookupState } from '../hooks/features/filter/gridFilterState';
7
7
  import type { GridColumnResizeState } from '../hooks/features/columnResize';
8
+ import type { GridRowSpanningState } from '../hooks/features/rows/useGridRowSpanning';
8
9
  /**
9
10
  * The state of `DataGrid`.
10
11
  */
@@ -30,6 +31,7 @@ export interface GridStateCommunity {
30
31
  density: GridDensityState;
31
32
  virtualization: GridVirtualizationState;
32
33
  columnResize: GridColumnResizeState;
34
+ rowSpanning: GridRowSpanningState;
33
35
  }
34
36
  /**
35
37
  * The initial state of `DataGrid`.
@@ -26,6 +26,7 @@ import { GridColumnGroupingModel } from '../gridColumnGrouping';
26
26
  import { GridPaginationMeta, GridPaginationModel } from '../gridPaginationProps';
27
27
  import type { GridAutosizeOptions } from '../../hooks/features/columnResize';
28
28
  import type { GridDataSource } from '../gridDataSource';
29
+ import type { GridRowSelectionPropagation } from '../gridRowSelectionModel';
29
30
  export interface GridExperimentalFeatures {
30
31
  /**
31
32
  * Emits a warning if the cell receives focus without also syncing the focus state.
@@ -75,6 +76,11 @@ export interface DataGridPropsWithDefaultValues<R extends GridValidRowModel = an
75
76
  /**
76
77
  * If `true`, the Data Grid height is dynamic and follows the number of rows in the Data Grid.
77
78
  * @default false
79
+ * @deprecated Use flex parent container instead: https://mui.com/x/react-data-grid/layout/#flex-parent-container
80
+ * @example
81
+ * <div style={{ display: 'flex', flexDirection: 'column' }}>
82
+ * <DataGrid />
83
+ * </div>
78
84
  */
79
85
  autoHeight: boolean;
80
86
  /**
@@ -357,6 +363,11 @@ export interface DataGridPropsWithDefaultValues<R extends GridValidRowModel = an
357
363
  * @default false
358
364
  */
359
365
  disableAutosize: boolean;
366
+ /**
367
+ * If `true`, the Data Grid will auto span the cells over the rows having the same value.
368
+ * @default false
369
+ */
370
+ unstable_rowSpanning: boolean;
360
371
  }
361
372
  /**
362
373
  * The `DataGrid` props with no default value.
@@ -748,6 +759,11 @@ export interface DataGridPropsWithoutDefaultValue<R extends GridValidRowModel =
748
759
  */
749
760
  onProcessRowUpdateError?: (error: any) => void;
750
761
  columnGroupingModel?: GridColumnGroupingModel;
762
+ /**
763
+ * Sets the height in pixels of the column group headers in the Data Grid.
764
+ * Inherits the `columnHeaderHeight` value if not set.
765
+ */
766
+ columnGroupHeaderHeight?: number;
751
767
  /**
752
768
  * Callback called when the data is copied to the clipboard.
753
769
  * @param {string} data The data copied to the clipboard.
@@ -774,10 +790,23 @@ export interface DataGridPropsWithoutDefaultValue<R extends GridValidRowModel =
774
790
  }
775
791
  export interface DataGridProSharedPropsWithDefaultValue {
776
792
  /**
777
- * If `true`, enables the data grid filtering on header feature.
793
+ * If `true`, the header filters feature is enabled.
778
794
  * @default false
779
795
  */
780
796
  headerFilters: boolean;
797
+ /**
798
+ * When `rowSelectionPropagation.descendants` is set to `true`.
799
+ * - Selecting a parent will auto-select all its filtered descendants.
800
+ * - Deselecting a parent will auto-deselect all its filtered descendants.
801
+ *
802
+ * When `rowSelectionPropagation.parents=true`
803
+ * - Selecting all descendants of a parent would auto-select it.
804
+ * - Deselecting a descendant of a selected parent would deselect the parent.
805
+ *
806
+ * Works with tree data and row grouping on the client-side only.
807
+ * @default { parents: false, descendants: false }
808
+ */
809
+ rowSelectionPropagation: GridRowSelectionPropagation;
781
810
  }
782
811
  export interface DataGridProSharedPropsWithoutDefaultValue {
783
812
  /**
@@ -73,6 +73,11 @@ DataGridRaw.propTypes = {
73
73
  /**
74
74
  * If `true`, the Data Grid height is dynamic and follows the number of rows in the Data Grid.
75
75
  * @default false
76
+ * @deprecated Use flex parent container instead: https://mui.com/x/react-data-grid/layout/#flex-parent-container
77
+ * @example
78
+ * <div style={{ display: 'flex', flexDirection: 'column' }}>
79
+ * <DataGrid />
80
+ * </div>
76
81
  */
77
82
  autoHeight: PropTypes.bool,
78
83
  /**
@@ -118,6 +123,11 @@ DataGridRaw.propTypes = {
118
123
  * @default 150
119
124
  */
120
125
  columnBufferPx: PropTypes.number,
126
+ /**
127
+ * Sets the height in pixels of the column group headers in the Data Grid.
128
+ * Inherits the `columnHeaderHeight` value if not set.
129
+ */
130
+ columnGroupHeaderHeight: PropTypes.number,
121
131
  columnGroupingModel: PropTypes.arrayOf(PropTypes.object),
122
132
  /**
123
133
  * Sets the height in pixel of the column headers in the Data Grid.
@@ -743,5 +753,10 @@ DataGridRaw.propTypes = {
743
753
  /**
744
754
  * The system prop that allows defining system overrides as well as additional CSS styles.
745
755
  */
746
- sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
756
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
757
+ /**
758
+ * If `true`, the Data Grid will auto span the cells over the rows having the same value.
759
+ * @default false
760
+ */
761
+ unstable_rowSpanning: PropTypes.bool
747
762
  };
@@ -27,6 +27,7 @@ import { useGridColumnSpanning } from "../hooks/features/columns/useGridColumnSp
27
27
  import { useGridColumnGrouping, columnGroupsStateInitializer } from "../hooks/features/columnGrouping/useGridColumnGrouping.js";
28
28
  import { useGridVirtualization, virtualizationStateInitializer } from "../hooks/features/virtualization/index.js";
29
29
  import { columnResizeStateInitializer, useGridColumnResize } from "../hooks/features/columnResize/useGridColumnResize.js";
30
+ import { rowSpanningStateInitializer, useGridRowSpanning } from "../hooks/features/rows/useGridRowSpanning.js";
30
31
  export const useDataGridComponent = (inputApiRef, props) => {
31
32
  const apiRef = useGridInitialization(inputApiRef, props);
32
33
 
@@ -48,6 +49,7 @@ export const useDataGridComponent = (inputApiRef, props) => {
48
49
  useGridInitializeState(sortingStateInitializer, apiRef, props);
49
50
  useGridInitializeState(preferencePanelStateInitializer, apiRef, props);
50
51
  useGridInitializeState(filterStateInitializer, apiRef, props);
52
+ useGridInitializeState(rowSpanningStateInitializer, apiRef, props);
51
53
  useGridInitializeState(densityStateInitializer, apiRef, props);
52
54
  useGridInitializeState(columnResizeStateInitializer, apiRef, props);
53
55
  useGridInitializeState(paginationStateInitializer, apiRef, props);
@@ -59,6 +61,7 @@ export const useDataGridComponent = (inputApiRef, props) => {
59
61
  useGridRowSelection(apiRef, props);
60
62
  useGridColumns(apiRef, props);
61
63
  useGridRows(apiRef, props);
64
+ useGridRowSpanning(apiRef, props);
62
65
  useGridParamsApi(apiRef);
63
66
  useGridColumnSpanning(apiRef);
64
67
  useGridColumnGrouping(apiRef, props);
@@ -73,7 +73,8 @@ export const DATA_GRID_PROPS_DEFAULT_VALUES = {
73
73
  showColumnVerticalBorder: false,
74
74
  sortingMode: 'client',
75
75
  sortingOrder: ['asc', 'desc', null],
76
- throttleRowsMs: 0
76
+ throttleRowsMs: 0,
77
+ unstable_rowSpanning: false
77
78
  };
78
79
  const defaultSlots = DATA_GRID_DEFAULT_SLOTS_COMPONENTS;
79
80
  export const useDataGridProps = inProps => {
@@ -338,6 +338,7 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
338
338
  height: PropTypes.number.isRequired,
339
339
  width: PropTypes.number.isRequired
340
340
  }).isRequired,
341
+ groupHeaderHeight: PropTypes.number.isRequired,
341
342
  hasScrollX: PropTypes.bool.isRequired,
342
343
  hasScrollY: PropTypes.bool.isRequired,
343
344
  headerFilterHeight: PropTypes.number.isRequired,
@@ -7,6 +7,7 @@ import PropTypes from 'prop-types';
7
7
  import clsx from 'clsx';
8
8
  import { unstable_useForkRef as useForkRef, unstable_composeClasses as composeClasses, unstable_ownerDocument as ownerDocument, unstable_capitalize as capitalize } from '@mui/utils';
9
9
  import { fastMemo } from '@mui/x-internals/fastMemo';
10
+ import { useRtl } from '@mui/system/RtlProvider';
10
11
  import { doesSupportPreventScroll } from "../../utils/doesSupportPreventScroll.js";
11
12
  import { getDataGridUtilityClass, gridClasses } from "../../constants/gridClasses.js";
12
13
  import { GridCellModes } from "../../models/index.js";
@@ -17,6 +18,7 @@ import { gridFocusCellSelector } from "../../hooks/features/focus/gridFocusState
17
18
  import { MissingRowIdError } from "../../hooks/features/rows/useGridParamsApi.js";
18
19
  import { shouldCellShowLeftBorder, shouldCellShowRightBorder } from "../../utils/cellBorderUtils.js";
19
20
  import { GridPinnedColumnPosition } from "../../hooks/features/columns/gridColumnsInterfaces.js";
21
+ import { gridRowSpanningHiddenCellsSelector, gridRowSpanningSpannedCellsSelector } from "../../hooks/features/rows/gridRowSpanningSelectors.js";
20
22
  import { jsx as _jsx } from "react/jsx-runtime";
21
23
  export let PinnedPosition = /*#__PURE__*/function (PinnedPosition) {
22
24
  PinnedPosition[PinnedPosition["NONE"] = 0] = "NONE";
@@ -106,6 +108,7 @@ const GridCell = /*#__PURE__*/React.forwardRef(function GridCell(props, ref) {
106
108
  other = _objectWithoutPropertiesLoose(props, _excluded);
107
109
  const apiRef = useGridApiContext();
108
110
  const rootProps = useGridRootProps();
111
+ const isRtl = useRtl();
109
112
  const field = column.field;
110
113
  const cellParams = useGridSelector(apiRef, () => {
111
114
  // This is required because `.getCellParams` tries to get the `state.rows.tree` entry
@@ -115,17 +118,19 @@ const GridCell = /*#__PURE__*/React.forwardRef(function GridCell(props, ref) {
115
118
  const result = apiRef.current.getCellParams(rowId, field);
116
119
  result.api = apiRef.current;
117
120
  return result;
118
- } catch (e) {
119
- if (e instanceof MissingRowIdError) {
121
+ } catch (error) {
122
+ if (error instanceof MissingRowIdError) {
120
123
  return EMPTY_CELL_PARAMS;
121
124
  }
122
- throw e;
125
+ throw error;
123
126
  }
124
127
  }, objectShallowCompare);
125
128
  const isSelected = useGridSelector(apiRef, () => apiRef.current.unstable_applyPipeProcessors('isCellSelected', false, {
126
129
  id: rowId,
127
130
  field
128
131
  }));
132
+ const hiddenCells = useGridSelector(apiRef, gridRowSpanningHiddenCellsSelector);
133
+ const spannedCells = useGridSelector(apiRef, gridRowSpanningSpannedCellsSelector);
129
134
  const {
130
135
  cellMode,
131
136
  hasFocus,
@@ -198,6 +203,8 @@ const GridCell = /*#__PURE__*/React.forwardRef(function GridCell(props, ref) {
198
203
  propHandler(event);
199
204
  }
200
205
  }, [apiRef, field, rowId]);
206
+ const isCellRowSpanned = hiddenCells[rowId]?.[field] ?? false;
207
+ const rowSpan = spannedCells[rowId]?.[field] ?? 1;
201
208
  const style = React.useMemo(() => {
202
209
  if (isNotVisible) {
203
210
  return {
@@ -210,14 +217,21 @@ const GridCell = /*#__PURE__*/React.forwardRef(function GridCell(props, ref) {
210
217
  const cellStyle = _extends({
211
218
  '--width': `${width}px`
212
219
  }, styleProp);
213
- if (pinnedPosition === PinnedPosition.LEFT) {
214
- cellStyle.left = pinnedOffset;
220
+ const isLeftPinned = pinnedPosition === PinnedPosition.LEFT;
221
+ const isRightPinned = pinnedPosition === PinnedPosition.RIGHT;
222
+ if (isLeftPinned || isRightPinned) {
223
+ let side = isLeftPinned ? 'left' : 'right';
224
+ if (isRtl) {
225
+ side = isLeftPinned ? 'right' : 'left';
226
+ }
227
+ cellStyle[side] = pinnedOffset;
215
228
  }
216
- if (pinnedPosition === PinnedPosition.RIGHT) {
217
- cellStyle.right = pinnedOffset;
229
+ if (rowSpan > 1) {
230
+ cellStyle.height = `calc(var(--height) * ${rowSpan})`;
231
+ cellStyle.zIndex = 5;
218
232
  }
219
233
  return cellStyle;
220
- }, [width, isNotVisible, styleProp, pinnedOffset, pinnedPosition]);
234
+ }, [width, isNotVisible, styleProp, pinnedOffset, pinnedPosition, isRtl, rowSpan]);
221
235
  React.useEffect(() => {
222
236
  if (!hasFocus || cellMode === GridCellModes.Edit) {
223
237
  return;
@@ -237,6 +251,15 @@ const GridCell = /*#__PURE__*/React.forwardRef(function GridCell(props, ref) {
237
251
  }
238
252
  }
239
253
  }, [hasFocus, cellMode, apiRef]);
254
+ if (isCellRowSpanned) {
255
+ return /*#__PURE__*/_jsx("div", {
256
+ "data-colindex": colIndex,
257
+ role: "presentation",
258
+ style: _extends({
259
+ width: 'var(--width)'
260
+ }, style)
261
+ });
262
+ }
240
263
  if (cellParams === EMPTY_CELL_PARAMS) {
241
264
  return null;
242
265
  }
@@ -291,12 +314,13 @@ const GridCell = /*#__PURE__*/React.forwardRef(function GridCell(props, ref) {
291
314
  };
292
315
  return /*#__PURE__*/_jsx("div", _extends({
293
316
  ref: handleRef,
294
- className: clsx(className, classNames, classes.root),
317
+ className: clsx(classes.root, classNames, className),
295
318
  role: "gridcell",
296
319
  "data-field": field,
297
320
  "data-colindex": colIndex,
298
321
  "aria-colindex": colIndex + 1,
299
322
  "aria-colspan": colSpan,
323
+ "aria-rowspan": rowSpan,
300
324
  style: style,
301
325
  title: title,
302
326
  tabIndex: tabIndex,
@@ -36,7 +36,7 @@ export const GridBaseColumnHeaders = /*#__PURE__*/React.forwardRef(function Grid
36
36
  const classes = useUtilityClasses(rootProps);
37
37
  return /*#__PURE__*/_jsx(GridColumnHeadersRoot, _extends({
38
38
  ref: ref,
39
- className: clsx(className, classes.root),
39
+ className: clsx(classes.root, className),
40
40
  ownerState: rootProps
41
41
  }, other, {
42
42
  role: "presentation"