@mui/x-data-grid 8.0.0 → 8.1.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.
- package/CHANGELOG.md +106 -0
- package/components/GridRowCount.js +1 -2
- package/components/GridSelectedRowCount.js +1 -2
- package/components/GridSkeletonLoadingOverlay.js +1 -2
- package/components/base/GridOverlays.js +2 -4
- package/components/columnHeaders/GridBaseColumnHeaders.js +1 -2
- package/components/columnHeaders/GridColumnHeaderTitle.js +1 -2
- package/components/columnHeaders/GridIconButtonContainer.js +1 -2
- package/components/containers/GridFooterContainer.js +1 -2
- package/components/containers/GridRootStyles.js +14 -12
- package/components/panel/GridPanelFooter.js +1 -2
- package/components/panel/GridPanelHeader.js +1 -2
- package/components/panel/filterPanel/GridFilterForm.js +6 -12
- package/components/toolbar/GridToolbarFilterButton.js +1 -2
- package/components/virtualization/GridVirtualScrollerRenderZone.js +1 -2
- package/esm/components/GridRowCount.js +1 -2
- package/esm/components/GridSelectedRowCount.js +1 -2
- package/esm/components/GridSkeletonLoadingOverlay.js +1 -2
- package/esm/components/base/GridOverlays.js +2 -4
- package/esm/components/columnHeaders/GridBaseColumnHeaders.js +1 -2
- package/esm/components/columnHeaders/GridColumnHeaderTitle.js +1 -2
- package/esm/components/columnHeaders/GridIconButtonContainer.js +1 -2
- package/esm/components/containers/GridFooterContainer.js +1 -2
- package/esm/components/containers/GridRootStyles.js +14 -12
- package/esm/components/panel/GridPanelFooter.js +1 -2
- package/esm/components/panel/GridPanelHeader.js +1 -2
- package/esm/components/panel/filterPanel/GridFilterForm.js +6 -12
- package/esm/components/toolbar/GridToolbarFilterButton.js +1 -2
- package/esm/components/virtualization/GridVirtualScrollerRenderZone.js +1 -2
- package/esm/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -2
- package/esm/hooks/features/rowSelection/useGridRowSelection.js +7 -6
- package/esm/hooks/features/rows/useGridParamsApi.js +1 -1
- package/esm/index.js +1 -1
- package/esm/locales/hyAM.d.ts +2 -0
- package/esm/locales/hyAM.js +296 -0
- package/esm/locales/index.d.ts +1 -0
- package/esm/locales/index.js +1 -0
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -2
- package/hooks/features/rowSelection/useGridRowSelection.js +7 -6
- package/hooks/features/rows/useGridParamsApi.js +1 -1
- package/index.js +1 -1
- package/locales/hyAM.d.ts +2 -0
- package/locales/hyAM.js +302 -0
- package/locales/index.d.ts +1 -0
- package/locales/index.js +11 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,112 @@
|
|
|
5
5
|
All notable changes to this project will be documented in this file.
|
|
6
6
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
7
7
|
|
|
8
|
+
## 8.1.0
|
|
9
|
+
|
|
10
|
+
_Apr 24, 2025_
|
|
11
|
+
|
|
12
|
+
We'd like to offer a big thanks to the 14 contributors who made this release possible. Here are some highlights ✨:
|
|
13
|
+
|
|
14
|
+
- 📊 Add API to print a chart or export it as PDF: `apiRef.exportAsPrint`.
|
|
15
|
+
- 📚 Documentation improvements
|
|
16
|
+
- 🐞 Bugfixes
|
|
17
|
+
|
|
18
|
+
Special thanks go out to the community members for their valuable contributions:
|
|
19
|
+
@lhilgert9, @ArturAghakaryan, @sai6855.
|
|
20
|
+
Following are all team members who have contributed to this release:
|
|
21
|
+
@alexfauquette, @arminmeh, @bernardobelchior, @cherniavskii, @JCQuintas, @joserodolfofreitas, @KenanYusuf, @LukasTy, @mapache-salvaje, @oliviertassinari, @romgrk.
|
|
22
|
+
|
|
23
|
+
<!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
|
|
24
|
+
|
|
25
|
+
### Data Grid
|
|
26
|
+
|
|
27
|
+
#### `@mui/x-data-grid@8.1.0`
|
|
28
|
+
|
|
29
|
+
- [DataGrid] Allow row deselection with multiple rows selected (#17473) @arminmeh
|
|
30
|
+
- [DataGrid] Fix column title truncation on touch devices (#17375) @KenanYusuf
|
|
31
|
+
- [DataGrid] Remove internal usage of `material` prop (#17513) @KenanYusuf
|
|
32
|
+
- [DataGrid] Fix apiRef not being passed on onCellClick params (#17335) @sai6855
|
|
33
|
+
- [DataGrid] Add Armenian (hy-AM) locale (#17527) @ArturAghakaryan
|
|
34
|
+
|
|
35
|
+
#### `@mui/x-data-grid-pro@8.1.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
36
|
+
|
|
37
|
+
Same changes as in `@mui/x-data-grid@8.1.0`, plus:
|
|
38
|
+
|
|
39
|
+
- [DataGridPro] Fix locales.ts export (#17433) @lhilgert9
|
|
40
|
+
- [DataGridPro] Avoid proptypes warnings with header filters in React 17 (#17482) @cherniavskii
|
|
41
|
+
- [DataGridPro] Fix expandable rows detail content height updates (#17394) @arminmeh
|
|
42
|
+
|
|
43
|
+
#### `@mui/x-data-grid-premium@8.1.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
44
|
+
|
|
45
|
+
Same changes as in `@mui/x-data-grid-pro@8.1.0`.
|
|
46
|
+
|
|
47
|
+
### Date and Time Pickers
|
|
48
|
+
|
|
49
|
+
#### `@mui/x-date-pickers@8.1.0`
|
|
50
|
+
|
|
51
|
+
- [pickers] Improve `PickersInputBase` owner state typing (#17478) @LukasTy
|
|
52
|
+
|
|
53
|
+
#### `@mui/x-date-pickers-pro@8.1.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
54
|
+
|
|
55
|
+
Same changes as in `@mui/x-date-pickers@8.1.0`.
|
|
56
|
+
|
|
57
|
+
### Charts
|
|
58
|
+
|
|
59
|
+
- Add API to print a chart or export it as PDF: `apiRef.exportAsPrint`.
|
|
60
|
+
|
|
61
|
+
#### `@mui/x-charts@8.1.0`
|
|
62
|
+
|
|
63
|
+
- [charts] Add a localization provider (#17325) @alexfauquette
|
|
64
|
+
- [charts] Add codemod for replacing legend's hidden slot prop (#17392) @bernardobelchior
|
|
65
|
+
- [charts] Fix chart visual tests flakiness (#17469) @bernardobelchior
|
|
66
|
+
- [charts] Fix tooltip position (#17440) @alexfauquette
|
|
67
|
+
- [charts] Improve axis tooltip performances (#17398) @alexfauquette
|
|
68
|
+
- [charts] Move radar from under development to preview (#17418) @alexfauquette
|
|
69
|
+
- [charts] Advance time in charts regression tests (#17420) @bernardobelchior
|
|
70
|
+
- [charts] Fix charts visuals flakiness (#17472) @bernardobelchior
|
|
71
|
+
- [charts] Move `rafThrottle` on event handlers instead of setter (#17489) @bernardobelchior
|
|
72
|
+
|
|
73
|
+
#### `@mui/x-charts-pro@8.1.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
74
|
+
|
|
75
|
+
Same changes as in `@mui/x-charts@8.1.0`, plus:
|
|
76
|
+
|
|
77
|
+
- [charts-pro] Add export as PDF/print functionality (#17285) @bernardobelchior
|
|
78
|
+
- [charts-pro] Fix axis zoom being disabled when not specified in `initialZoom` (#17500) @bernardobelchior
|
|
79
|
+
|
|
80
|
+
### Tree View
|
|
81
|
+
|
|
82
|
+
#### `@mui/x-tree-view@8.1.0`
|
|
83
|
+
|
|
84
|
+
Internal changes.
|
|
85
|
+
|
|
86
|
+
#### `@mui/x-tree-view-pro@8.1.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
87
|
+
|
|
88
|
+
Same changes as in `@mui/x-tree-view@8.1.0`.
|
|
89
|
+
|
|
90
|
+
### Docs
|
|
91
|
+
|
|
92
|
+
- [docs] Fix AI Assistant Panel Trigger demo (#17426) @KenanYusuf
|
|
93
|
+
- [docs] Fix DataGrid's master-detail demo for one expanded detail panel at a time (#17471) @arminmeh
|
|
94
|
+
- [docs] Improve StackOverflow links (#17483) @oliviertassinari
|
|
95
|
+
- [docs] Refine charts demos (#17417) @alexfauquette
|
|
96
|
+
- [docs] Remove ad on paid docs pages (#17373) @oliviertassinari
|
|
97
|
+
- [docs] Serve migration guides in raw markdown format (#17210) @cherniavskii
|
|
98
|
+
- [docs] Fix heading structure (#17495) @oliviertassinari
|
|
99
|
+
- [docs] Revise the Row Grouping doc (#16217) @mapache-salvaje
|
|
100
|
+
- [docs] Fix ellipsis in the demo (#17476) @oliviertassinari
|
|
101
|
+
- [docs] Add docs information for Legend HTML (#17502) @alexfauquette
|
|
102
|
+
- [docs] Refine charts demos (#17417) @alexfauquette
|
|
103
|
+
- [tree view][docs] Copyedit the Tree View Overview page (#17498) @mapache-salvaje
|
|
104
|
+
|
|
105
|
+
### Core
|
|
106
|
+
|
|
107
|
+
- [core] Bump `@types/node` (#17444) @LukasTy
|
|
108
|
+
- [core] Remove `react-is` dependency (#17470) @LukasTy
|
|
109
|
+
- [core] Remove redundant `overridesResolver` in `styled` components (#17466) @romgrk
|
|
110
|
+
- [core] Update support table (#17425) @joserodolfofreitas
|
|
111
|
+
- [code-infra] Ditch `@babel/node` (#17446) @LukasTy
|
|
112
|
+
- [code-infra] Further remove `clock=fake` from pickers (#17253) @JCQuintas
|
|
113
|
+
|
|
8
114
|
## 8.0.0
|
|
9
115
|
|
|
10
116
|
_Apr 17, 2025_
|
|
@@ -31,8 +31,7 @@ const useUtilityClasses = ownerState => {
|
|
|
31
31
|
};
|
|
32
32
|
const GridRowCountRoot = (0, _system.styled)('div', {
|
|
33
33
|
name: 'MuiDataGrid',
|
|
34
|
-
slot: 'RowCount'
|
|
35
|
-
overridesResolver: (props, styles) => styles.rowCount
|
|
34
|
+
slot: 'RowCount'
|
|
36
35
|
})({
|
|
37
36
|
alignItems: 'center',
|
|
38
37
|
display: 'flex',
|
|
@@ -31,8 +31,7 @@ const useUtilityClasses = ownerState => {
|
|
|
31
31
|
};
|
|
32
32
|
const GridSelectedRowCountRoot = (0, _system.styled)('div', {
|
|
33
33
|
name: 'MuiDataGrid',
|
|
34
|
-
slot: 'SelectedRowCount'
|
|
35
|
-
overridesResolver: (props, styles) => styles.selectedRowCount
|
|
34
|
+
slot: 'SelectedRowCount'
|
|
36
35
|
})({
|
|
37
36
|
alignItems: 'center',
|
|
38
37
|
display: 'flex',
|
|
@@ -31,8 +31,7 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
31
31
|
const _excluded = ["skeletonRowsCount", "visibleColumns", "showFirstRowBorder"];
|
|
32
32
|
const SkeletonOverlay = (0, _system.styled)('div', {
|
|
33
33
|
name: 'MuiDataGrid',
|
|
34
|
-
slot: 'SkeletonLoadingOverlay'
|
|
35
|
-
overridesResolver: (props, styles) => styles.skeletonLoadingOverlay
|
|
34
|
+
slot: 'SkeletonLoadingOverlay'
|
|
36
35
|
})({
|
|
37
36
|
minWidth: '100%',
|
|
38
37
|
width: 'max-content',
|
|
@@ -22,8 +22,7 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
22
22
|
const GridOverlayWrapperRoot = (0, _system.styled)('div', {
|
|
23
23
|
name: 'MuiDataGrid',
|
|
24
24
|
slot: 'OverlayWrapper',
|
|
25
|
-
shouldForwardProp: prop => prop !== 'overlayType' && prop !== 'loadingOverlayVariant' && prop !== 'right'
|
|
26
|
-
overridesResolver: (props, styles) => styles.overlayWrapper
|
|
25
|
+
shouldForwardProp: prop => prop !== 'overlayType' && prop !== 'loadingOverlayVariant' && prop !== 'right'
|
|
27
26
|
})(({
|
|
28
27
|
overlayType,
|
|
29
28
|
loadingOverlayVariant,
|
|
@@ -47,8 +46,7 @@ loadingOverlayVariant !== 'skeleton' ? {
|
|
|
47
46
|
const GridOverlayWrapperInner = (0, _system.styled)('div', {
|
|
48
47
|
name: 'MuiDataGrid',
|
|
49
48
|
slot: 'OverlayWrapperInner',
|
|
50
|
-
shouldForwardProp: prop => prop !== 'overlayType' && prop !== 'loadingOverlayVariant'
|
|
51
|
-
overridesResolver: (props, styles) => styles.overlayWrapperInner
|
|
49
|
+
shouldForwardProp: prop => prop !== 'overlayType' && prop !== 'loadingOverlayVariant'
|
|
52
50
|
})({});
|
|
53
51
|
const useUtilityClasses = ownerState => {
|
|
54
52
|
const {
|
|
@@ -28,8 +28,7 @@ const useUtilityClasses = ownerState => {
|
|
|
28
28
|
};
|
|
29
29
|
const GridColumnHeadersRoot = (0, _system.styled)('div', {
|
|
30
30
|
name: 'MuiDataGrid',
|
|
31
|
-
slot: 'ColumnHeaders'
|
|
32
|
-
overridesResolver: (props, styles) => styles.columnHeaders
|
|
31
|
+
slot: 'ColumnHeaders'
|
|
33
32
|
})({
|
|
34
33
|
display: 'flex',
|
|
35
34
|
flexDirection: 'column',
|
|
@@ -30,8 +30,7 @@ const useUtilityClasses = ownerState => {
|
|
|
30
30
|
};
|
|
31
31
|
const GridColumnHeaderTitleRoot = (0, _system.styled)('div', {
|
|
32
32
|
name: 'MuiDataGrid',
|
|
33
|
-
slot: 'ColumnHeaderTitle'
|
|
34
|
-
overridesResolver: (props, styles) => styles.columnHeaderTitle
|
|
33
|
+
slot: 'ColumnHeaderTitle'
|
|
35
34
|
})({
|
|
36
35
|
textOverflow: 'ellipsis',
|
|
37
36
|
overflow: 'hidden',
|
|
@@ -28,8 +28,7 @@ const useUtilityClasses = ownerState => {
|
|
|
28
28
|
};
|
|
29
29
|
const GridIconButtonContainerRoot = (0, _system.styled)('div', {
|
|
30
30
|
name: 'MuiDataGrid',
|
|
31
|
-
slot: 'IconButtonContainer'
|
|
32
|
-
overridesResolver: (props, styles) => styles.iconButtonContainer
|
|
31
|
+
slot: 'IconButtonContainer'
|
|
33
32
|
})(() => ({
|
|
34
33
|
display: 'flex',
|
|
35
34
|
visibility: 'hidden',
|
|
@@ -29,8 +29,7 @@ const useUtilityClasses = ownerState => {
|
|
|
29
29
|
};
|
|
30
30
|
const GridFooterContainerRoot = (0, _system.styled)('div', {
|
|
31
31
|
name: 'MuiDataGrid',
|
|
32
|
-
slot: 'FooterContainer'
|
|
33
|
-
overridesResolver: (props, styles) => styles.footerContainer
|
|
32
|
+
slot: 'FooterContainer'
|
|
34
33
|
})({
|
|
35
34
|
display: 'flex',
|
|
36
35
|
justifyContent: 'space-between',
|
|
@@ -9,16 +9,6 @@ var _gridClasses = require("../../constants/gridClasses");
|
|
|
9
9
|
var _cssVariables = require("../../constants/cssVariables");
|
|
10
10
|
var _useGridSelector = require("../../hooks/utils/useGridSelector");
|
|
11
11
|
var _useGridPrivateApiContext = require("../../hooks/utils/useGridPrivateApiContext");
|
|
12
|
-
const columnHeaderStyles = {
|
|
13
|
-
[`& .${_gridClasses.gridClasses.iconButtonContainer}`]: {
|
|
14
|
-
visibility: 'visible',
|
|
15
|
-
width: 'auto'
|
|
16
|
-
},
|
|
17
|
-
[`& .${_gridClasses.gridClasses.menuIcon}`]: {
|
|
18
|
-
width: 'auto',
|
|
19
|
-
visibility: 'visible'
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
12
|
const columnSeparatorTargetSize = 10;
|
|
23
13
|
const columnSeparatorOffset = -5;
|
|
24
14
|
const focusOutlineWidth = 1;
|
|
@@ -520,7 +510,16 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
520
510
|
backgroundColor: headerBackground
|
|
521
511
|
},
|
|
522
512
|
'@media (hover: hover)': {
|
|
523
|
-
[`& .${_gridClasses.gridClasses.columnHeader}:hover`]:
|
|
513
|
+
[`& .${_gridClasses.gridClasses.columnHeader}:hover`]: {
|
|
514
|
+
[`& .${_gridClasses.gridClasses.menuIcon}`]: {
|
|
515
|
+
width: 'auto',
|
|
516
|
+
visibility: 'visible'
|
|
517
|
+
},
|
|
518
|
+
[`& .${_gridClasses.gridClasses.iconButtonContainer}`]: {
|
|
519
|
+
visibility: 'visible',
|
|
520
|
+
width: 'auto'
|
|
521
|
+
}
|
|
522
|
+
},
|
|
524
523
|
[`& .${_gridClasses.gridClasses.columnHeader}:not(.${_gridClasses.gridClasses['columnHeader--sorted']}):hover .${_gridClasses.gridClasses.sortButton},
|
|
525
524
|
& .${_gridClasses.gridClasses.pivotPanelField}:not(.${_gridClasses.gridClasses['pivotPanelField--sorted']}):hover .${_gridClasses.gridClasses.sortButton},
|
|
526
525
|
& .${_gridClasses.gridClasses.pivotPanelField}:not(.${_gridClasses.gridClasses['pivotPanelField--sorted']}) .${_gridClasses.gridClasses.sortButton}:focus-visible`]: {
|
|
@@ -528,7 +527,10 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
528
527
|
}
|
|
529
528
|
},
|
|
530
529
|
'@media (hover: none)': {
|
|
531
|
-
[`& .${_gridClasses.gridClasses.columnHeader}`]:
|
|
530
|
+
[`& .${_gridClasses.gridClasses.columnHeader} .${_gridClasses.gridClasses.menuIcon}`]: {
|
|
531
|
+
width: 'auto',
|
|
532
|
+
visibility: 'visible'
|
|
533
|
+
},
|
|
532
534
|
[`& .${_gridClasses.gridClasses.columnHeader}:focus,
|
|
533
535
|
& .${_gridClasses.gridClasses['columnHeader--siblingFocused']}`]: {
|
|
534
536
|
[`.${_gridClasses.gridClasses['columnSeparator--resizable']}`]: {
|
|
@@ -29,8 +29,7 @@ const useUtilityClasses = ownerState => {
|
|
|
29
29
|
};
|
|
30
30
|
const GridPanelFooterRoot = (0, _styles.styled)('div', {
|
|
31
31
|
name: 'MuiDataGrid',
|
|
32
|
-
slot: 'PanelFooter'
|
|
33
|
-
overridesResolver: (props, styles) => styles.panelFooter
|
|
32
|
+
slot: 'PanelFooter'
|
|
34
33
|
})({
|
|
35
34
|
padding: _cssVariables.vars.spacing(1),
|
|
36
35
|
display: 'flex',
|
|
@@ -29,8 +29,7 @@ const useUtilityClasses = ownerState => {
|
|
|
29
29
|
};
|
|
30
30
|
const GridPanelHeaderRoot = (0, _system.styled)('div', {
|
|
31
31
|
name: 'MuiDataGrid',
|
|
32
|
-
slot: 'PanelHeader'
|
|
33
|
-
overridesResolver: (props, styles) => styles.panelHeader
|
|
32
|
+
slot: 'PanelHeader'
|
|
34
33
|
})({
|
|
35
34
|
padding: _cssVariables.vars.spacing(1)
|
|
36
35
|
});
|
|
@@ -44,16 +44,14 @@ const useUtilityClasses = ownerState => {
|
|
|
44
44
|
};
|
|
45
45
|
const GridFilterFormRoot = (0, _styles.styled)('div', {
|
|
46
46
|
name: 'MuiDataGrid',
|
|
47
|
-
slot: 'FilterForm'
|
|
48
|
-
overridesResolver: (props, styles) => styles.filterForm
|
|
47
|
+
slot: 'FilterForm'
|
|
49
48
|
})({
|
|
50
49
|
display: 'flex',
|
|
51
50
|
gap: _cssVariables.vars.spacing(1.5)
|
|
52
51
|
});
|
|
53
52
|
const FilterFormDeleteIcon = (0, _styles.styled)('div', {
|
|
54
53
|
name: 'MuiDataGrid',
|
|
55
|
-
slot: 'FilterFormDeleteIcon'
|
|
56
|
-
overridesResolver: (_, styles) => styles.filterFormDeleteIcon
|
|
54
|
+
slot: 'FilterFormDeleteIcon'
|
|
57
55
|
})({
|
|
58
56
|
flexShrink: 0,
|
|
59
57
|
display: 'flex',
|
|
@@ -62,30 +60,26 @@ const FilterFormDeleteIcon = (0, _styles.styled)('div', {
|
|
|
62
60
|
});
|
|
63
61
|
const FilterFormLogicOperatorInput = (0, _styles.styled)('div', {
|
|
64
62
|
name: 'MuiDataGrid',
|
|
65
|
-
slot: 'FilterFormLogicOperatorInput'
|
|
66
|
-
overridesResolver: (_, styles) => styles.filterFormLogicOperatorInput
|
|
63
|
+
slot: 'FilterFormLogicOperatorInput'
|
|
67
64
|
})({
|
|
68
65
|
minWidth: 75,
|
|
69
66
|
justifyContent: 'end'
|
|
70
67
|
});
|
|
71
68
|
const FilterFormColumnInput = (0, _styles.styled)('div', {
|
|
72
69
|
name: 'MuiDataGrid',
|
|
73
|
-
slot: 'FilterFormColumnInput'
|
|
74
|
-
overridesResolver: (_, styles) => styles.filterFormColumnInput
|
|
70
|
+
slot: 'FilterFormColumnInput'
|
|
75
71
|
})({
|
|
76
72
|
width: 150
|
|
77
73
|
});
|
|
78
74
|
const FilterFormOperatorInput = (0, _styles.styled)('div', {
|
|
79
75
|
name: 'MuiDataGrid',
|
|
80
|
-
slot: 'FilterFormOperatorInput'
|
|
81
|
-
overridesResolver: (_, styles) => styles.filterFormOperatorInput
|
|
76
|
+
slot: 'FilterFormOperatorInput'
|
|
82
77
|
})({
|
|
83
78
|
width: 150
|
|
84
79
|
});
|
|
85
80
|
const FilterFormValueInput = (0, _styles.styled)('div', {
|
|
86
81
|
name: 'MuiDataGrid',
|
|
87
|
-
slot: 'FilterFormValueInput'
|
|
88
|
-
overridesResolver: (_, styles) => styles.filterFormValueInput
|
|
82
|
+
slot: 'FilterFormValueInput'
|
|
89
83
|
})({
|
|
90
84
|
width: 190
|
|
91
85
|
});
|
|
@@ -35,8 +35,7 @@ const useUtilityClasses = ownerState => {
|
|
|
35
35
|
};
|
|
36
36
|
const GridToolbarFilterListRoot = (0, _styles.styled)('ul', {
|
|
37
37
|
name: 'MuiDataGrid',
|
|
38
|
-
slot: 'ToolbarFilterList'
|
|
39
|
-
overridesResolver: (_props, styles) => styles.toolbarFilterList
|
|
38
|
+
slot: 'ToolbarFilterList'
|
|
40
39
|
})({
|
|
41
40
|
margin: _cssVariables.vars.spacing(1, 1, 0.5),
|
|
42
41
|
padding: _cssVariables.vars.spacing(0, 1)
|
|
@@ -32,8 +32,7 @@ const useUtilityClasses = ownerState => {
|
|
|
32
32
|
};
|
|
33
33
|
const VirtualScrollerRenderZoneRoot = (0, _system.styled)('div', {
|
|
34
34
|
name: 'MuiDataGrid',
|
|
35
|
-
slot: 'VirtualScrollerRenderZone'
|
|
36
|
-
overridesResolver: (props, styles) => styles.virtualScrollerRenderZone
|
|
35
|
+
slot: 'VirtualScrollerRenderZone'
|
|
37
36
|
})({
|
|
38
37
|
position: 'absolute',
|
|
39
38
|
display: 'flex',
|
|
@@ -23,8 +23,7 @@ const useUtilityClasses = ownerState => {
|
|
|
23
23
|
};
|
|
24
24
|
const GridRowCountRoot = styled('div', {
|
|
25
25
|
name: 'MuiDataGrid',
|
|
26
|
-
slot: 'RowCount'
|
|
27
|
-
overridesResolver: (props, styles) => styles.rowCount
|
|
26
|
+
slot: 'RowCount'
|
|
28
27
|
})({
|
|
29
28
|
alignItems: 'center',
|
|
30
29
|
display: 'flex',
|
|
@@ -23,8 +23,7 @@ const useUtilityClasses = ownerState => {
|
|
|
23
23
|
};
|
|
24
24
|
const GridSelectedRowCountRoot = styled('div', {
|
|
25
25
|
name: 'MuiDataGrid',
|
|
26
|
-
slot: 'SelectedRowCount'
|
|
27
|
-
overridesResolver: (props, styles) => styles.selectedRowCount
|
|
26
|
+
slot: 'SelectedRowCount'
|
|
28
27
|
})({
|
|
29
28
|
alignItems: 'center',
|
|
30
29
|
display: 'flex',
|
|
@@ -23,8 +23,7 @@ import { attachPinnedStyle } from "../internals/utils/index.js";
|
|
|
23
23
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
24
24
|
const SkeletonOverlay = styled('div', {
|
|
25
25
|
name: 'MuiDataGrid',
|
|
26
|
-
slot: 'SkeletonLoadingOverlay'
|
|
27
|
-
overridesResolver: (props, styles) => styles.skeletonLoadingOverlay
|
|
26
|
+
slot: 'SkeletonLoadingOverlay'
|
|
28
27
|
})({
|
|
29
28
|
minWidth: '100%',
|
|
30
29
|
width: 'max-content',
|
|
@@ -14,8 +14,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
14
14
|
const GridOverlayWrapperRoot = styled('div', {
|
|
15
15
|
name: 'MuiDataGrid',
|
|
16
16
|
slot: 'OverlayWrapper',
|
|
17
|
-
shouldForwardProp: prop => prop !== 'overlayType' && prop !== 'loadingOverlayVariant' && prop !== 'right'
|
|
18
|
-
overridesResolver: (props, styles) => styles.overlayWrapper
|
|
17
|
+
shouldForwardProp: prop => prop !== 'overlayType' && prop !== 'loadingOverlayVariant' && prop !== 'right'
|
|
19
18
|
})(({
|
|
20
19
|
overlayType,
|
|
21
20
|
loadingOverlayVariant,
|
|
@@ -39,8 +38,7 @@ loadingOverlayVariant !== 'skeleton' ? {
|
|
|
39
38
|
const GridOverlayWrapperInner = styled('div', {
|
|
40
39
|
name: 'MuiDataGrid',
|
|
41
40
|
slot: 'OverlayWrapperInner',
|
|
42
|
-
shouldForwardProp: prop => prop !== 'overlayType' && prop !== 'loadingOverlayVariant'
|
|
43
|
-
overridesResolver: (props, styles) => styles.overlayWrapperInner
|
|
41
|
+
shouldForwardProp: prop => prop !== 'overlayType' && prop !== 'loadingOverlayVariant'
|
|
44
42
|
})({});
|
|
45
43
|
const useUtilityClasses = ownerState => {
|
|
46
44
|
const {
|
|
@@ -20,8 +20,7 @@ const useUtilityClasses = ownerState => {
|
|
|
20
20
|
};
|
|
21
21
|
const GridColumnHeadersRoot = styled('div', {
|
|
22
22
|
name: 'MuiDataGrid',
|
|
23
|
-
slot: 'ColumnHeaders'
|
|
24
|
-
overridesResolver: (props, styles) => styles.columnHeaders
|
|
23
|
+
slot: 'ColumnHeaders'
|
|
25
24
|
})({
|
|
26
25
|
display: 'flex',
|
|
27
26
|
flexDirection: 'column',
|
|
@@ -22,8 +22,7 @@ const useUtilityClasses = ownerState => {
|
|
|
22
22
|
};
|
|
23
23
|
const GridColumnHeaderTitleRoot = styled('div', {
|
|
24
24
|
name: 'MuiDataGrid',
|
|
25
|
-
slot: 'ColumnHeaderTitle'
|
|
26
|
-
overridesResolver: (props, styles) => styles.columnHeaderTitle
|
|
25
|
+
slot: 'ColumnHeaderTitle'
|
|
27
26
|
})({
|
|
28
27
|
textOverflow: 'ellipsis',
|
|
29
28
|
overflow: 'hidden',
|
|
@@ -20,8 +20,7 @@ const useUtilityClasses = ownerState => {
|
|
|
20
20
|
};
|
|
21
21
|
const GridIconButtonContainerRoot = styled('div', {
|
|
22
22
|
name: 'MuiDataGrid',
|
|
23
|
-
slot: 'IconButtonContainer'
|
|
24
|
-
overridesResolver: (props, styles) => styles.iconButtonContainer
|
|
23
|
+
slot: 'IconButtonContainer'
|
|
25
24
|
})(() => ({
|
|
26
25
|
display: 'flex',
|
|
27
26
|
visibility: 'hidden',
|
|
@@ -21,8 +21,7 @@ const useUtilityClasses = ownerState => {
|
|
|
21
21
|
};
|
|
22
22
|
const GridFooterContainerRoot = styled('div', {
|
|
23
23
|
name: 'MuiDataGrid',
|
|
24
|
-
slot: 'FooterContainer'
|
|
25
|
-
overridesResolver: (props, styles) => styles.footerContainer
|
|
24
|
+
slot: 'FooterContainer'
|
|
26
25
|
})({
|
|
27
26
|
display: 'flex',
|
|
28
27
|
justifyContent: 'space-between',
|
|
@@ -3,16 +3,6 @@ import { gridClasses as c } from "../../constants/gridClasses.js";
|
|
|
3
3
|
import { vars } from "../../constants/cssVariables.js";
|
|
4
4
|
import { useGridSelector } from "../../hooks/utils/useGridSelector.js";
|
|
5
5
|
import { useGridPrivateApiContext } from "../../hooks/utils/useGridPrivateApiContext.js";
|
|
6
|
-
const columnHeaderStyles = {
|
|
7
|
-
[`& .${c.iconButtonContainer}`]: {
|
|
8
|
-
visibility: 'visible',
|
|
9
|
-
width: 'auto'
|
|
10
|
-
},
|
|
11
|
-
[`& .${c.menuIcon}`]: {
|
|
12
|
-
width: 'auto',
|
|
13
|
-
visibility: 'visible'
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
6
|
const columnSeparatorTargetSize = 10;
|
|
17
7
|
const columnSeparatorOffset = -5;
|
|
18
8
|
const focusOutlineWidth = 1;
|
|
@@ -514,7 +504,16 @@ export const GridRootStyles = styled('div', {
|
|
|
514
504
|
backgroundColor: headerBackground
|
|
515
505
|
},
|
|
516
506
|
'@media (hover: hover)': {
|
|
517
|
-
[`& .${c.columnHeader}:hover`]:
|
|
507
|
+
[`& .${c.columnHeader}:hover`]: {
|
|
508
|
+
[`& .${c.menuIcon}`]: {
|
|
509
|
+
width: 'auto',
|
|
510
|
+
visibility: 'visible'
|
|
511
|
+
},
|
|
512
|
+
[`& .${c.iconButtonContainer}`]: {
|
|
513
|
+
visibility: 'visible',
|
|
514
|
+
width: 'auto'
|
|
515
|
+
}
|
|
516
|
+
},
|
|
518
517
|
[`& .${c.columnHeader}:not(.${c['columnHeader--sorted']}):hover .${c.sortButton},
|
|
519
518
|
& .${c.pivotPanelField}:not(.${c['pivotPanelField--sorted']}):hover .${c.sortButton},
|
|
520
519
|
& .${c.pivotPanelField}:not(.${c['pivotPanelField--sorted']}) .${c.sortButton}:focus-visible`]: {
|
|
@@ -522,7 +521,10 @@ export const GridRootStyles = styled('div', {
|
|
|
522
521
|
}
|
|
523
522
|
},
|
|
524
523
|
'@media (hover: none)': {
|
|
525
|
-
[`& .${c.columnHeader}`]:
|
|
524
|
+
[`& .${c.columnHeader} .${c.menuIcon}`]: {
|
|
525
|
+
width: 'auto',
|
|
526
|
+
visibility: 'visible'
|
|
527
|
+
},
|
|
526
528
|
[`& .${c.columnHeader}:focus,
|
|
527
529
|
& .${c['columnHeader--siblingFocused']}`]: {
|
|
528
530
|
[`.${c['columnSeparator--resizable']}`]: {
|
|
@@ -21,8 +21,7 @@ const useUtilityClasses = ownerState => {
|
|
|
21
21
|
};
|
|
22
22
|
const GridPanelFooterRoot = styled('div', {
|
|
23
23
|
name: 'MuiDataGrid',
|
|
24
|
-
slot: 'PanelFooter'
|
|
25
|
-
overridesResolver: (props, styles) => styles.panelFooter
|
|
24
|
+
slot: 'PanelFooter'
|
|
26
25
|
})({
|
|
27
26
|
padding: vars.spacing(1),
|
|
28
27
|
display: 'flex',
|
|
@@ -21,8 +21,7 @@ const useUtilityClasses = ownerState => {
|
|
|
21
21
|
};
|
|
22
22
|
const GridPanelHeaderRoot = styled('div', {
|
|
23
23
|
name: 'MuiDataGrid',
|
|
24
|
-
slot: 'PanelHeader'
|
|
25
|
-
overridesResolver: (props, styles) => styles.panelHeader
|
|
24
|
+
slot: 'PanelHeader'
|
|
26
25
|
})({
|
|
27
26
|
padding: vars.spacing(1)
|
|
28
27
|
});
|
|
@@ -36,16 +36,14 @@ const useUtilityClasses = ownerState => {
|
|
|
36
36
|
};
|
|
37
37
|
const GridFilterFormRoot = styled('div', {
|
|
38
38
|
name: 'MuiDataGrid',
|
|
39
|
-
slot: 'FilterForm'
|
|
40
|
-
overridesResolver: (props, styles) => styles.filterForm
|
|
39
|
+
slot: 'FilterForm'
|
|
41
40
|
})({
|
|
42
41
|
display: 'flex',
|
|
43
42
|
gap: vars.spacing(1.5)
|
|
44
43
|
});
|
|
45
44
|
const FilterFormDeleteIcon = styled('div', {
|
|
46
45
|
name: 'MuiDataGrid',
|
|
47
|
-
slot: 'FilterFormDeleteIcon'
|
|
48
|
-
overridesResolver: (_, styles) => styles.filterFormDeleteIcon
|
|
46
|
+
slot: 'FilterFormDeleteIcon'
|
|
49
47
|
})({
|
|
50
48
|
flexShrink: 0,
|
|
51
49
|
display: 'flex',
|
|
@@ -54,30 +52,26 @@ const FilterFormDeleteIcon = styled('div', {
|
|
|
54
52
|
});
|
|
55
53
|
const FilterFormLogicOperatorInput = styled('div', {
|
|
56
54
|
name: 'MuiDataGrid',
|
|
57
|
-
slot: 'FilterFormLogicOperatorInput'
|
|
58
|
-
overridesResolver: (_, styles) => styles.filterFormLogicOperatorInput
|
|
55
|
+
slot: 'FilterFormLogicOperatorInput'
|
|
59
56
|
})({
|
|
60
57
|
minWidth: 75,
|
|
61
58
|
justifyContent: 'end'
|
|
62
59
|
});
|
|
63
60
|
const FilterFormColumnInput = styled('div', {
|
|
64
61
|
name: 'MuiDataGrid',
|
|
65
|
-
slot: 'FilterFormColumnInput'
|
|
66
|
-
overridesResolver: (_, styles) => styles.filterFormColumnInput
|
|
62
|
+
slot: 'FilterFormColumnInput'
|
|
67
63
|
})({
|
|
68
64
|
width: 150
|
|
69
65
|
});
|
|
70
66
|
const FilterFormOperatorInput = styled('div', {
|
|
71
67
|
name: 'MuiDataGrid',
|
|
72
|
-
slot: 'FilterFormOperatorInput'
|
|
73
|
-
overridesResolver: (_, styles) => styles.filterFormOperatorInput
|
|
68
|
+
slot: 'FilterFormOperatorInput'
|
|
74
69
|
})({
|
|
75
70
|
width: 150
|
|
76
71
|
});
|
|
77
72
|
const FilterFormValueInput = styled('div', {
|
|
78
73
|
name: 'MuiDataGrid',
|
|
79
|
-
slot: 'FilterFormValueInput'
|
|
80
|
-
overridesResolver: (_, styles) => styles.filterFormValueInput
|
|
74
|
+
slot: 'FilterFormValueInput'
|
|
81
75
|
})({
|
|
82
76
|
width: 190
|
|
83
77
|
});
|
|
@@ -27,8 +27,7 @@ const useUtilityClasses = ownerState => {
|
|
|
27
27
|
};
|
|
28
28
|
const GridToolbarFilterListRoot = styled('ul', {
|
|
29
29
|
name: 'MuiDataGrid',
|
|
30
|
-
slot: 'ToolbarFilterList'
|
|
31
|
-
overridesResolver: (_props, styles) => styles.toolbarFilterList
|
|
30
|
+
slot: 'ToolbarFilterList'
|
|
32
31
|
})({
|
|
33
32
|
margin: vars.spacing(1, 1, 0.5),
|
|
34
33
|
padding: vars.spacing(0, 1)
|
|
@@ -24,8 +24,7 @@ const useUtilityClasses = ownerState => {
|
|
|
24
24
|
};
|
|
25
25
|
const VirtualScrollerRenderZoneRoot = styled('div', {
|
|
26
26
|
name: 'MuiDataGrid',
|
|
27
|
-
slot: 'VirtualScrollerRenderZone'
|
|
28
|
-
overridesResolver: (props, styles) => styles.virtualScrollerRenderZone
|
|
27
|
+
slot: 'VirtualScrollerRenderZone'
|
|
29
28
|
})({
|
|
30
29
|
position: 'absolute',
|
|
31
30
|
display: 'flex',
|
|
@@ -22,8 +22,7 @@ import { PinnedColumnPosition } from "../../../internals/constants.js";
|
|
|
22
22
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
23
23
|
export const GridColumnHeaderRow = styled('div', {
|
|
24
24
|
name: 'MuiDataGrid',
|
|
25
|
-
slot: 'ColumnHeaderRow'
|
|
26
|
-
overridesResolver: (_, styles) => styles.columnHeaderRow
|
|
25
|
+
slot: 'ColumnHeaderRow'
|
|
27
26
|
})({
|
|
28
27
|
display: 'flex'
|
|
29
28
|
});
|
|
@@ -374,13 +374,14 @@ export const useGridRowSelection = (apiRef, props) => {
|
|
|
374
374
|
|
|
375
375
|
const isMultipleSelectionDisabled = !checkboxSelection && !hasCtrlKey && !isKeyboardEvent(event);
|
|
376
376
|
const resetSelection = !canHaveMultipleSelection || isMultipleSelectionDisabled;
|
|
377
|
+
const isSelected = apiRef.current.isRowSelected(id);
|
|
377
378
|
const selectedRowsCount = gridRowSelectionCountSelector(apiRef);
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
379
|
+
|
|
380
|
+
// Clicking on a row should toggle the selection except when a range of rows is already selected and the selection should reset
|
|
381
|
+
// In that case, we want to keep the current row selected (https://github.com/mui/mui-x/pull/15509#discussion_r1878082687)
|
|
382
|
+
const shouldStaySelected = selectedRowsCount > 1 && resetSelection;
|
|
383
|
+
const newSelectionState = shouldStaySelected || !isSelected;
|
|
384
|
+
apiRef.current.selectRow(id, newSelectionState, resetSelection);
|
|
384
385
|
}, [apiRef, canHaveMultipleSelection, checkboxSelection]);
|
|
385
386
|
const handleRowClick = React.useCallback((params, event) => {
|
|
386
387
|
if (disableRowSelectionOnClick) {
|
|
@@ -53,7 +53,7 @@ export function useGridParamsApi(apiRef, props) {
|
|
|
53
53
|
value,
|
|
54
54
|
formattedValue: value,
|
|
55
55
|
isEditable: false,
|
|
56
|
-
api:
|
|
56
|
+
api: apiRef.current
|
|
57
57
|
};
|
|
58
58
|
if (colDef && colDef.valueFormatter) {
|
|
59
59
|
params.formattedValue = colDef.valueFormatter(value, row, colDef, apiRef);
|
package/esm/index.js
CHANGED