@mui/x-data-grid 7.18.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 (143) hide show
  1. package/CHANGELOG.md +110 -0
  2. package/DataGrid/DataGrid.js +5 -0
  3. package/components/cell/GridCell.js +7 -8
  4. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -1
  5. package/components/columnSelection/GridCellCheckboxRenderer.js +12 -4
  6. package/components/columnSelection/GridHeaderCheckbox.d.ts +1 -1
  7. package/components/containers/GridRoot.js +1 -1
  8. package/components/containers/GridRootStyles.js +32 -23
  9. package/components/containers/GridToolbarContainer.js +1 -1
  10. package/components/menu/GridMenu.js +1 -1
  11. package/components/panel/GridPanel.d.ts +1 -1
  12. package/components/panel/GridPanel.js +1 -1
  13. package/components/panel/GridPanelContent.js +1 -1
  14. package/components/panel/GridPanelFooter.js +1 -1
  15. package/components/panel/GridPanelHeader.js +1 -1
  16. package/components/panel/GridPanelWrapper.js +1 -1
  17. package/components/panel/filterPanel/filterPanelUtils.d.ts +1 -1
  18. package/components/toolbar/GridToolbarQuickFilter.js +1 -1
  19. package/components/virtualization/GridBottomContainer.d.ts +1 -1
  20. package/components/virtualization/GridBottomContainer.js +18 -1
  21. package/components/virtualization/GridMainContainer.js +3 -1
  22. package/components/virtualization/GridTopContainer.d.ts +1 -1
  23. package/components/virtualization/GridTopContainer.js +1 -1
  24. package/components/virtualization/GridVirtualScrollbar.js +1 -7
  25. package/components/virtualization/GridVirtualScroller.js +1 -0
  26. package/components/virtualization/GridVirtualScrollerFiller.js +3 -4
  27. package/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +4 -4
  28. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -1
  29. package/hooks/features/columnResize/columnResizeSelector.d.ts +1 -1
  30. package/hooks/features/columns/gridColumnsSelector.d.ts +12 -12
  31. package/hooks/features/columns/gridColumnsUtils.js +3 -2
  32. package/hooks/features/density/densitySelector.d.ts +1 -1
  33. package/hooks/features/editing/useGridCellEditing.js +1 -1
  34. package/hooks/features/editing/useGridRowEditing.js +1 -1
  35. package/hooks/features/filter/gridFilterSelector.d.ts +17 -17
  36. package/hooks/features/focus/gridFocusStateSelector.d.ts +8 -8
  37. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.d.ts +3 -3
  38. package/hooks/features/keyboardNavigation/utils.d.ts +1 -1
  39. package/hooks/features/pagination/gridPaginationSelector.d.ts +9 -9
  40. package/hooks/features/rowSelection/gridRowSelectionSelector.d.ts +3 -3
  41. package/hooks/features/rowSelection/useGridRowSelection.d.ts +1 -1
  42. package/hooks/features/rowSelection/useGridRowSelection.js +105 -29
  43. package/hooks/features/rowSelection/utils.d.ts +10 -0
  44. package/hooks/features/rowSelection/utils.js +156 -1
  45. package/hooks/features/rows/gridRowSpanningSelectors.d.ts +3 -3
  46. package/hooks/features/rows/gridRowsSelector.d.ts +14 -14
  47. package/hooks/features/rows/useGridRows.d.ts +1 -1
  48. package/hooks/features/rows/useGridRows.js +7 -1
  49. package/hooks/features/scroll/useGridScroll.js +19 -19
  50. package/hooks/features/sorting/gridSortingSelector.d.ts +4 -4
  51. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +5 -5
  52. package/hooks/utils/useGridVisibleRows.d.ts +2 -2
  53. package/index.js +1 -1
  54. package/internals/index.d.ts +1 -0
  55. package/internals/index.js +1 -0
  56. package/locales/bgBG.js +8 -9
  57. package/locales/deDE.js +4 -4
  58. package/locales/frFR.js +4 -4
  59. package/locales/hrHR.d.ts +1 -1
  60. package/locales/hrHR.js +69 -46
  61. package/locales/jaJP.js +1 -2
  62. package/locales/ptPT.d.ts +1 -1
  63. package/locales/ptPT.js +4 -4
  64. package/locales/viVN.js +20 -20
  65. package/locales/zhHK.d.ts +1 -1
  66. package/models/gridRowSelectionModel.d.ts +4 -0
  67. package/models/props/DataGridProps.d.ts +20 -1
  68. package/modern/DataGrid/DataGrid.js +5 -0
  69. package/modern/components/cell/GridCell.js +7 -8
  70. package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -1
  71. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +12 -4
  72. package/modern/components/containers/GridRoot.js +1 -1
  73. package/modern/components/containers/GridRootStyles.js +32 -23
  74. package/modern/components/containers/GridToolbarContainer.js +1 -1
  75. package/modern/components/menu/GridMenu.js +1 -1
  76. package/modern/components/panel/GridPanel.js +1 -1
  77. package/modern/components/panel/GridPanelContent.js +1 -1
  78. package/modern/components/panel/GridPanelFooter.js +1 -1
  79. package/modern/components/panel/GridPanelHeader.js +1 -1
  80. package/modern/components/panel/GridPanelWrapper.js +1 -1
  81. package/modern/components/toolbar/GridToolbarQuickFilter.js +1 -1
  82. package/modern/components/virtualization/GridBottomContainer.js +18 -1
  83. package/modern/components/virtualization/GridMainContainer.js +3 -1
  84. package/modern/components/virtualization/GridTopContainer.js +1 -1
  85. package/modern/components/virtualization/GridVirtualScrollbar.js +1 -7
  86. package/modern/components/virtualization/GridVirtualScroller.js +1 -0
  87. package/modern/components/virtualization/GridVirtualScrollerFiller.js +3 -4
  88. package/modern/hooks/features/columns/gridColumnsUtils.js +3 -2
  89. package/modern/hooks/features/editing/useGridCellEditing.js +1 -1
  90. package/modern/hooks/features/editing/useGridRowEditing.js +1 -1
  91. package/modern/hooks/features/rowSelection/useGridRowSelection.js +105 -29
  92. package/modern/hooks/features/rowSelection/utils.js +156 -1
  93. package/modern/hooks/features/rows/useGridRows.js +7 -1
  94. package/modern/hooks/features/scroll/useGridScroll.js +19 -19
  95. package/modern/index.js +1 -1
  96. package/modern/internals/index.js +1 -0
  97. package/modern/locales/bgBG.js +8 -9
  98. package/modern/locales/deDE.js +4 -4
  99. package/modern/locales/frFR.js +4 -4
  100. package/modern/locales/hrHR.js +69 -46
  101. package/modern/locales/jaJP.js +1 -2
  102. package/modern/locales/ptPT.js +4 -4
  103. package/modern/locales/viVN.js +20 -20
  104. package/modern/utils/createSelector.js +6 -0
  105. package/node/DataGrid/DataGrid.js +5 -0
  106. package/node/components/cell/GridCell.js +7 -8
  107. package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -1
  108. package/node/components/columnSelection/GridCellCheckboxRenderer.js +12 -4
  109. package/node/components/containers/GridRoot.js +1 -1
  110. package/node/components/containers/GridRootStyles.js +32 -23
  111. package/node/components/containers/GridToolbarContainer.js +1 -1
  112. package/node/components/menu/GridMenu.js +1 -1
  113. package/node/components/panel/GridPanel.js +1 -1
  114. package/node/components/panel/GridPanelContent.js +1 -1
  115. package/node/components/panel/GridPanelFooter.js +1 -1
  116. package/node/components/panel/GridPanelHeader.js +1 -1
  117. package/node/components/panel/GridPanelWrapper.js +1 -1
  118. package/node/components/toolbar/GridToolbarQuickFilter.js +1 -1
  119. package/node/components/virtualization/GridBottomContainer.js +18 -1
  120. package/node/components/virtualization/GridMainContainer.js +3 -1
  121. package/node/components/virtualization/GridTopContainer.js +1 -1
  122. package/node/components/virtualization/GridVirtualScrollbar.js +1 -7
  123. package/node/components/virtualization/GridVirtualScroller.js +1 -0
  124. package/node/components/virtualization/GridVirtualScrollerFiller.js +3 -4
  125. package/node/hooks/features/columns/gridColumnsUtils.js +3 -2
  126. package/node/hooks/features/editing/useGridCellEditing.js +1 -1
  127. package/node/hooks/features/editing/useGridRowEditing.js +1 -1
  128. package/node/hooks/features/rowSelection/useGridRowSelection.js +102 -26
  129. package/node/hooks/features/rowSelection/utils.js +160 -1
  130. package/node/hooks/features/rows/useGridRows.js +7 -1
  131. package/node/hooks/features/scroll/useGridScroll.js +19 -19
  132. package/node/index.js +1 -1
  133. package/node/internals/index.js +23 -15
  134. package/node/locales/bgBG.js +8 -9
  135. package/node/locales/deDE.js +4 -4
  136. package/node/locales/frFR.js +4 -4
  137. package/node/locales/hrHR.js +69 -46
  138. package/node/locales/jaJP.js +1 -2
  139. package/node/locales/ptPT.js +4 -4
  140. package/node/locales/viVN.js +20 -20
  141. package/node/utils/createSelector.js +6 -0
  142. package/package.json +1 -1
  143. package/utils/createSelector.js +6 -0
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;
@@ -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[];
@@ -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
  /**
@@ -784,10 +790,23 @@ export interface DataGridPropsWithoutDefaultValue<R extends GridValidRowModel =
784
790
  }
785
791
  export interface DataGridProSharedPropsWithDefaultValue {
786
792
  /**
787
- * If `true`, enables the data grid filtering on header feature.
793
+ * If `true`, the header filters feature is enabled.
788
794
  * @default false
789
795
  */
790
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;
791
810
  }
792
811
  export interface DataGridProSharedPropsWithoutDefaultValue {
793
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,11 +118,11 @@ const GridCell = /*#__PURE__*/React.forwardRef(function GridCell(props, ref) {
118
118
  const result = apiRef.current.getCellParams(rowId, field);
119
119
  result.api = apiRef.current;
120
120
  return result;
121
- } catch (e) {
122
- if (e instanceof MissingRowIdError) {
121
+ } catch (error) {
122
+ if (error instanceof MissingRowIdError) {
123
123
  return EMPTY_CELL_PARAMS;
124
124
  }
125
- throw e;
125
+ throw error;
126
126
  }
127
127
  }, objectShallowCompare);
128
128
  const isSelected = useGridSelector(apiRef, () => apiRef.current.unstable_applyPipeProcessors('isCellSelected', false, {
@@ -255,10 +255,9 @@ const GridCell = /*#__PURE__*/React.forwardRef(function GridCell(props, ref) {
255
255
  return /*#__PURE__*/_jsx("div", {
256
256
  "data-colindex": colIndex,
257
257
  role: "presentation",
258
- style: _extends({}, style, {
259
- minWidth: 'var(--width)',
260
- maxWidth: 'var(--width)'
261
- })
258
+ style: _extends({
259
+ width: 'var(--width)'
260
+ }, style)
262
261
  });
263
262
  }
264
263
  if (cellParams === EMPTY_CELL_PARAMS) {
@@ -315,7 +314,7 @@ const GridCell = /*#__PURE__*/React.forwardRef(function GridCell(props, ref) {
315
314
  };
316
315
  return /*#__PURE__*/_jsx("div", _extends({
317
316
  ref: handleRef,
318
- className: clsx(className, classNames, classes.root),
317
+ className: clsx(classes.root, classNames, className),
319
318
  role: "gridcell",
320
319
  "data-field": field,
321
320
  "data-colindex": colIndex,
@@ -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"
@@ -1,12 +1,14 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["field", "id", "value", "formattedValue", "row", "rowNode", "colDef", "isEditable", "cellMode", "hasFocus", "tabIndex", "api"];
3
+ const _excluded = ["field", "id", "formattedValue", "row", "rowNode", "colDef", "isEditable", "cellMode", "hasFocus", "tabIndex", "api"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { unstable_composeClasses as composeClasses, unstable_useForkRef as useForkRef } from '@mui/utils';
7
7
  import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
8
8
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
9
9
  import { getDataGridUtilityClass } from "../../constants/gridClasses.js";
10
+ import { useGridSelector } from "../../hooks/utils/useGridSelector.js";
11
+ import { getCheckboxPropsSelector } from "../../hooks/features/rowSelection/utils.js";
10
12
  import { jsx as _jsx } from "react/jsx-runtime";
11
13
  const useUtilityClasses = ownerState => {
12
14
  const {
@@ -21,7 +23,6 @@ const GridCellCheckboxForwardRef = /*#__PURE__*/React.forwardRef(function GridCe
21
23
  const {
22
24
  field,
23
25
  id,
24
- value: isChecked,
25
26
  rowNode,
26
27
  hasFocus,
27
28
  tabIndex
@@ -69,21 +70,28 @@ const GridCellCheckboxForwardRef = /*#__PURE__*/React.forwardRef(function GridCe
69
70
  event.stopPropagation();
70
71
  }
71
72
  }, []);
73
+ const isSelectable = apiRef.current.isRowSelectable(id);
74
+ const checkboxPropsSelector = getCheckboxPropsSelector(id, rootProps.rowSelectionPropagation?.parents ?? false);
75
+ const {
76
+ isIndeterminate,
77
+ isChecked
78
+ } = useGridSelector(apiRef, checkboxPropsSelector);
72
79
  if (rowNode.type === 'footer' || rowNode.type === 'pinnedRow') {
73
80
  return null;
74
81
  }
75
- const isSelectable = apiRef.current.isRowSelectable(id);
76
82
  const label = apiRef.current.getLocaleText(isChecked ? 'checkboxSelectionUnselectRow' : 'checkboxSelectionSelectRow');
83
+ const checked = rootProps.indeterminateCheckboxAction === 'select' ? isChecked && !isIndeterminate : isChecked;
77
84
  return /*#__PURE__*/_jsx(rootProps.slots.baseCheckbox, _extends({
78
85
  ref: handleRef,
79
86
  tabIndex: tabIndex,
80
- checked: isChecked,
87
+ checked: checked,
81
88
  onChange: handleChange,
82
89
  className: classes.root,
83
90
  inputProps: {
84
91
  'aria-label': label
85
92
  },
86
93
  onKeyDown: handleKeyDown,
94
+ indeterminate: isIndeterminate,
87
95
  disabled: !isSelectable,
88
96
  touchRippleRef: rippleRef /* FIXME: typing error */
89
97
  }, rootProps.slotProps?.baseCheckbox, other));
@@ -46,7 +46,7 @@ const GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {
46
46
  }
47
47
  return /*#__PURE__*/_jsx(GridRootStyles, _extends({
48
48
  ref: handleRef,
49
- className: clsx(className, classes.root),
49
+ className: clsx(classes.root, className),
50
50
  ownerState: ownerState
51
51
  }, other));
52
52
  });
@@ -170,14 +170,28 @@ export const GridRootStyles = styled('div', {
170
170
  const hoverOpacity = (t.vars || t).palette.action.hoverOpacity;
171
171
  const hoverColor = (t.vars || t).palette.action.hover;
172
172
  const selectedOpacity = (t.vars || t).palette.action.selectedOpacity;
173
+ const selectedHoverOpacity = t.vars ? `calc(${hoverOpacity} + ${selectedOpacity})` // TODO: Improve type
174
+ : hoverOpacity + selectedOpacity;
173
175
  const selectedBackground = t.vars ? `rgba(${t.vars.palette.primary.mainChannel} / ${selectedOpacity})` : alpha(t.palette.primary.main, selectedOpacity);
174
- const selectedHoverBackground = t.vars ? `rgba(${t.vars.palette.primary.mainChannel} / calc(
175
- ${t.vars.palette.action.selectedOpacity} +
176
- ${t.vars.palette.action.hoverOpacity}
177
- ))` : alpha(t.palette.primary.main, t.palette.action.selectedOpacity + t.palette.action.hoverOpacity);
178
- const pinnedHoverBackground = t.vars ? hoverColor : blend(pinnedBackground, hoverColor, hoverOpacity);
179
- const pinnedSelectedBackground = t.vars ? selectedBackground : blend(pinnedBackground, selectedBackground, selectedOpacity);
180
- const pinnedSelectedHoverBackground = t.vars ? hoverColor : blend(pinnedSelectedBackground, hoverColor, hoverOpacity);
176
+ const selectedHoverBackground = t.vars ? `rgba(${t.vars.palette.primary.mainChannel} / ${selectedHoverOpacity})` : alpha(t.palette.primary.main, selectedHoverOpacity);
177
+ const blendFn = t.vars ? blendCssVars : blend;
178
+ const getPinnedBackgroundStyles = backgroundColor => ({
179
+ [`& .${c['cell--pinnedLeft']}, & .${c['cell--pinnedRight']}`]: {
180
+ backgroundColor,
181
+ '&.Mui-selected': {
182
+ backgroundColor: blendFn(backgroundColor, selectedBackground, selectedOpacity),
183
+ '&:hover': {
184
+ backgroundColor: blendFn(backgroundColor, selectedBackground, selectedHoverOpacity)
185
+ }
186
+ }
187
+ }
188
+ });
189
+ const pinnedBackgroundColor = blendFn(pinnedBackground, hoverColor, hoverOpacity);
190
+ const pinnedHoverStyles = getPinnedBackgroundStyles(pinnedBackgroundColor);
191
+ const pinnedSelectedBackgroundColor = blendFn(pinnedBackground, selectedBackground, selectedOpacity);
192
+ const pinnedSelectedStyles = getPinnedBackgroundStyles(pinnedSelectedBackgroundColor);
193
+ const pinnedSelectedHoverBackgroundColor = blendFn(pinnedBackground, selectedHoverBackground, selectedHoverOpacity);
194
+ const pinnedSelectedHoverStyles = getPinnedBackgroundStyles(pinnedSelectedHoverBackgroundColor);
181
195
  const selectedStyles = {
182
196
  backgroundColor: selectedBackground,
183
197
  '&:hover': {
@@ -617,24 +631,15 @@ export const GridRootStyles = styled('div', {
617
631
  [`& .${c['cell--pinnedLeft']}, & .${c['cell--pinnedRight']}`]: {
618
632
  position: 'sticky',
619
633
  zIndex: 3,
620
- background: 'var(--DataGrid-pinnedBackground)'
634
+ background: 'var(--DataGrid-pinnedBackground)',
635
+ '&.Mui-selected': {
636
+ backgroundColor: pinnedSelectedBackgroundColor
637
+ }
621
638
  },
622
639
  [`& .${c.virtualScrollerContent} .${c.row}`]: {
623
- '&:hover': {
624
- [`& .${c['cell--pinnedLeft']}, & .${c['cell--pinnedRight']}`]: {
625
- backgroundColor: pinnedHoverBackground
626
- }
627
- },
628
- [`&.Mui-selected`]: {
629
- [`& .${c['cell--pinnedLeft']}, & .${c['cell--pinnedRight']}`]: {
630
- backgroundColor: pinnedSelectedBackground
631
- },
632
- '&:hover': {
633
- [`& .${c['cell--pinnedLeft']}, & .${c['cell--pinnedRight']}`]: {
634
- backgroundColor: pinnedSelectedHoverBackground
635
- }
636
- }
637
- }
640
+ '&:hover': pinnedHoverStyles,
641
+ '&.Mui-selected': pinnedSelectedStyles,
642
+ '&.Mui-selected:hover': pinnedSelectedHoverStyles
638
643
  },
639
644
  [`& .${c.cellOffsetLeft}`]: {
640
645
  flex: '0 0 auto',
@@ -747,4 +752,8 @@ function blend(background, overlay, opacity, gamma = 1) {
747
752
  type: 'rgb',
748
753
  values: rgb
749
754
  });
755
+ }
756
+ const removeOpacity = color => `rgb(from ${color} r g b / 1)`;
757
+ function blendCssVars(background, overlay, opacity) {
758
+ return `color-mix(in srgb,${background}, ${removeOpacity(overlay)} calc(${opacity} * 100%))`;
750
759
  }
@@ -44,7 +44,7 @@ const GridToolbarContainer = /*#__PURE__*/React.forwardRef(function GridToolbarC
44
44
  }
45
45
  return /*#__PURE__*/_jsx(GridToolbarContainerRoot, _extends({
46
46
  ref: ref,
47
- className: clsx(className, classes.root),
47
+ className: clsx(classes.root, className),
48
48
  ownerState: rootProps
49
49
  }, other, {
50
50
  children: children
@@ -85,7 +85,7 @@ function GridMenu(props) {
85
85
  };
86
86
  return /*#__PURE__*/_jsx(GridMenuRoot, _extends({
87
87
  as: rootProps.slots.basePopper,
88
- className: clsx(className, classes.root),
88
+ className: clsx(classes.root, className),
89
89
  ownerState: rootProps,
90
90
  open: open,
91
91
  anchorEl: target,
@@ -84,7 +84,7 @@ const GridPanel = /*#__PURE__*/React.forwardRef((props, ref) => {
84
84
  return /*#__PURE__*/_jsx(GridPanelRoot, _extends({
85
85
  ref: ref,
86
86
  placement: "bottom-start",
87
- className: clsx(className, classes.panel),
87
+ className: clsx(classes.panel, className),
88
88
  ownerState: rootProps,
89
89
  anchorEl: anchorEl,
90
90
  modifiers: modifiers
@@ -37,7 +37,7 @@ function GridPanelContent(props) {
37
37
  const rootProps = useGridRootProps();
38
38
  const classes = useUtilityClasses(rootProps);
39
39
  return /*#__PURE__*/_jsx(GridPanelContentRoot, _extends({
40
- className: clsx(className, classes.root),
40
+ className: clsx(classes.root, className),
41
41
  ownerState: rootProps
42
42
  }, other));
43
43
  }
@@ -37,7 +37,7 @@ function GridPanelFooter(props) {
37
37
  const rootProps = useGridRootProps();
38
38
  const classes = useUtilityClasses(rootProps);
39
39
  return /*#__PURE__*/_jsx(GridPanelFooterRoot, _extends({
40
- className: clsx(className, classes.root),
40
+ className: clsx(classes.root, className),
41
41
  ownerState: rootProps
42
42
  }, other));
43
43
  }
@@ -35,7 +35,7 @@ function GridPanelHeader(props) {
35
35
  const rootProps = useGridRootProps();
36
36
  const classes = useUtilityClasses(rootProps);
37
37
  return /*#__PURE__*/_jsx(GridPanelHeaderRoot, _extends({
38
- className: clsx(className, classes.root),
38
+ className: clsx(classes.root, className),
39
39
  ownerState: rootProps
40
40
  }, other));
41
41
  }
@@ -48,7 +48,7 @@ const GridPanelWrapper = /*#__PURE__*/React.forwardRef(function GridPanelWrapper
48
48
  children: /*#__PURE__*/_jsx(GridPanelWrapperRoot, _extends({
49
49
  ref: ref,
50
50
  tabIndex: -1,
51
- className: clsx(className, classes.root),
51
+ className: clsx(classes.root, className),
52
52
  ownerState: rootProps
53
53
  }, other))
54
54
  }));
@@ -93,7 +93,7 @@ function GridToolbarQuickFilter(props) {
93
93
  variant: "standard",
94
94
  value: searchValue,
95
95
  onChange: handleSearchValueChange,
96
- className: clsx(className, classes.root),
96
+ className: clsx(classes.root, className),
97
97
  placeholder: apiRef.current.getLocaleText('toolbarQuickFilterPlaceholder'),
98
98
  "aria-label": apiRef.current.getLocaleText('toolbarQuickFilterLabel'),
99
99
  type: "search"