@mui/x-data-grid 8.29.1 → 8.29.3
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 +157 -0
- package/components/columnsPanel/ColumnsPanelTrigger.js +2 -2
- package/components/columnsPanel/ColumnsPanelTrigger.mjs +2 -2
- package/components/containers/GridRootStyles.js +3 -2
- package/components/containers/GridRootStyles.mjs +3 -2
- package/components/filterPanel/FilterPanelTrigger.js +2 -2
- package/components/filterPanel/FilterPanelTrigger.mjs +2 -2
- package/components/panel/GridPanelContext.d.mts +9 -3
- package/components/panel/GridPanelContext.d.ts +9 -3
- package/components/panel/GridPanelContext.js +41 -7
- package/components/panel/GridPanelContext.mjs +40 -7
- package/components/panel/GridPreferencesPanel.js +4 -6
- package/components/panel/GridPreferencesPanel.mjs +4 -6
- package/components/toolbar/GridToolbarColumnsButton.js +2 -2
- package/components/toolbar/GridToolbarColumnsButton.mjs +2 -2
- package/components/toolbar/GridToolbarFilterButton.js +2 -2
- package/components/toolbar/GridToolbarFilterButton.mjs +2 -2
- package/components/toolbarV8/Toolbar.d.mts +1 -1
- package/components/toolbarV8/Toolbar.d.ts +1 -1
- package/components/toolbarV8/Toolbar.js +2 -125
- package/components/toolbarV8/Toolbar.mjs +2 -125
- package/components/toolbarV8/ToolbarButton.d.mts +1 -1
- package/components/toolbarV8/ToolbarButton.d.ts +1 -1
- package/components/toolbarV8/ToolbarButton.js +11 -50
- package/components/toolbarV8/ToolbarButton.mjs +11 -50
- package/components/virtualization/GridVirtualScrollbar.js +9 -53
- package/components/virtualization/GridVirtualScrollbar.mjs +9 -53
- package/components/virtualization/GridVirtualScroller.js +12 -0
- package/components/virtualization/GridVirtualScroller.mjs +12 -0
- package/hooks/features/columnResize/useGridColumnResize.js +56 -2
- package/hooks/features/columnResize/useGridColumnResize.mjs +57 -3
- package/hooks/features/rows/gridRowsUtils.js +1 -1
- package/hooks/features/rows/gridRowsUtils.mjs +1 -1
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/package.json +3 -3
- package/components/toolbarV8/ToolbarContext.d.mts +0 -11
- package/components/toolbarV8/ToolbarContext.d.ts +0 -11
- package/components/toolbarV8/ToolbarContext.js +0 -19
- package/components/toolbarV8/ToolbarContext.mjs +0 -12
- package/components/toolbarV8/utils.d.mts +0 -5
- package/components/toolbarV8/utils.d.ts +0 -5
- package/components/toolbarV8/utils.js +0 -23
- package/components/toolbarV8/utils.mjs +0 -17
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,163 @@
|
|
|
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.29.3
|
|
9
|
+
|
|
10
|
+
_Aug 21, 2026_
|
|
11
|
+
|
|
12
|
+
We'd like to extend a big thank you to the 2 contributors who made this release possible. Here are some highlights ✨:
|
|
13
|
+
|
|
14
|
+
- 🐞 Bugfixes
|
|
15
|
+
|
|
16
|
+
The following team members contributed to this release:
|
|
17
|
+
@LukasTy, @MBilalShafi
|
|
18
|
+
|
|
19
|
+
### Data Grid
|
|
20
|
+
|
|
21
|
+
#### `@mui/x-data-grid@8.29.3`
|
|
22
|
+
|
|
23
|
+
- [DataGrid] Fix toolbar button stealing focus when a sibling's disabled state changes (#23265) @MBilalShafi
|
|
24
|
+
|
|
25
|
+
#### `@mui/x-data-grid-pro@8.29.3` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
26
|
+
|
|
27
|
+
Same changes as in `@mui/x-data-grid@8.29.3`.
|
|
28
|
+
|
|
29
|
+
#### `@mui/x-data-grid-premium@8.29.3` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
30
|
+
|
|
31
|
+
Same changes as in `@mui/x-data-grid-pro@8.29.3`.
|
|
32
|
+
|
|
33
|
+
### Date and Time Pickers
|
|
34
|
+
|
|
35
|
+
#### `@mui/x-date-pickers@8.29.3`
|
|
36
|
+
|
|
37
|
+
- [fields] Keep the field editable on blank space clicks (#23372) @LukasTy
|
|
38
|
+
- [pickers] Fix format placeholder brightness with a start adornment (#23205) @LukasTy
|
|
39
|
+
|
|
40
|
+
#### `@mui/x-date-pickers-pro@8.29.3` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
41
|
+
|
|
42
|
+
Same changes as in `@mui/x-date-pickers@8.29.3`, plus:
|
|
43
|
+
|
|
44
|
+
- [DateRangePicker] Fix broken active range position underline in single input range fields (#23201) @LukasTy
|
|
45
|
+
|
|
46
|
+
### Charts
|
|
47
|
+
|
|
48
|
+
#### `@mui/x-charts@8.29.3`
|
|
49
|
+
|
|
50
|
+
Internal changes.
|
|
51
|
+
|
|
52
|
+
#### `@mui/x-charts-pro@8.29.3` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
53
|
+
|
|
54
|
+
Same changes as in `@mui/x-charts@8.29.3`.
|
|
55
|
+
|
|
56
|
+
#### `@mui/x-charts-premium@8.29.3` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
57
|
+
|
|
58
|
+
Same changes as in `@mui/x-charts-pro@8.29.3`.
|
|
59
|
+
|
|
60
|
+
### Tree View
|
|
61
|
+
|
|
62
|
+
#### `@mui/x-tree-view@8.29.3`
|
|
63
|
+
|
|
64
|
+
Internal changes.
|
|
65
|
+
|
|
66
|
+
#### `@mui/x-tree-view-pro@8.29.3` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
67
|
+
|
|
68
|
+
Same changes as in `@mui/x-tree-view@8.29.3`.
|
|
69
|
+
|
|
70
|
+
### Codemod
|
|
71
|
+
|
|
72
|
+
#### `@mui/x-codemod@8.29.3`
|
|
73
|
+
|
|
74
|
+
Internal changes.
|
|
75
|
+
|
|
76
|
+
### Miscellaneous
|
|
77
|
+
|
|
78
|
+
- [core] Fix `test-react-18` install failure on v8.x (#23202) @LukasTy
|
|
79
|
+
|
|
80
|
+
## 8.29.2
|
|
81
|
+
|
|
82
|
+
_Jul 2, 2026_
|
|
83
|
+
|
|
84
|
+
We'd like to extend a big thank you to the 8 contributors who made this release possible. Here are some highlights ✨:
|
|
85
|
+
|
|
86
|
+
- 🐞 Bugfixes
|
|
87
|
+
|
|
88
|
+
Special thanks go out to these community members for their valuable contributions:
|
|
89
|
+
@Anexus5919, @timbuckley
|
|
90
|
+
|
|
91
|
+
The following team members contributed to this release:
|
|
92
|
+
@alexfauquette, @arminmeh, @brijeshb42, @cherniavskii, @LukasTy, @MBilalShafi
|
|
93
|
+
|
|
94
|
+
### Data Grid
|
|
95
|
+
|
|
96
|
+
#### `@mui/x-data-grid@8.29.2`
|
|
97
|
+
|
|
98
|
+
- [DataGrid] Avoid reading `type` of `undefined` in `gridRowUtils` (#22963) @timbuckley
|
|
99
|
+
- [DataGrid] Define `overflowAnchor` style at the right element (#22860) @arminmeh
|
|
100
|
+
- [DataGrid] Fix panel placement jump on mount (#22946) @cherniavskii
|
|
101
|
+
- [DataGrid] Fix scrollbars not showing up on scroll on iOS (#22884) @cherniavskii
|
|
102
|
+
- [DataGrid] Wait for rows before reacting on `autosizeOnMount` (#22886) @MBilalShafi
|
|
103
|
+
|
|
104
|
+
#### `@mui/x-data-grid-pro@8.29.2` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
105
|
+
|
|
106
|
+
Same changes as in `@mui/x-data-grid@8.29.2`.
|
|
107
|
+
|
|
108
|
+
#### `@mui/x-data-grid-premium@8.29.2` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
109
|
+
|
|
110
|
+
Same changes as in `@mui/x-data-grid-pro@8.29.2`, plus:
|
|
111
|
+
|
|
112
|
+
- [DataGridPremium] Escape `singleSelect` values in Excel export with `escapeFormulas` enabled (#22966) @Anexus5919
|
|
113
|
+
|
|
114
|
+
### Date and Time Pickers
|
|
115
|
+
|
|
116
|
+
#### `@mui/x-date-pickers@8.29.2`
|
|
117
|
+
|
|
118
|
+
- [pickers] Fix localized digit crash (#23010) @alexfauquette
|
|
119
|
+
- [pickers] Respect explicit `notched` prop on the outlined `PickersTextField` (#22875) (#22893) @LukasTy
|
|
120
|
+
|
|
121
|
+
#### `@mui/x-date-pickers-pro@8.29.2` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
122
|
+
|
|
123
|
+
Same changes as in `@mui/x-date-pickers@8.29.2`.
|
|
124
|
+
|
|
125
|
+
### Charts
|
|
126
|
+
|
|
127
|
+
#### `@mui/x-charts@8.29.2`
|
|
128
|
+
|
|
129
|
+
Internal changes.
|
|
130
|
+
|
|
131
|
+
#### `@mui/x-charts-pro@8.29.2` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
132
|
+
|
|
133
|
+
Same changes as in `@mui/x-charts@8.29.2`.
|
|
134
|
+
|
|
135
|
+
#### `@mui/x-charts-premium@8.29.2` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
136
|
+
|
|
137
|
+
Same changes as in `@mui/x-charts-pro@8.29.2`.
|
|
138
|
+
|
|
139
|
+
### Tree View
|
|
140
|
+
|
|
141
|
+
#### `@mui/x-tree-view@8.29.2`
|
|
142
|
+
|
|
143
|
+
Internal changes.
|
|
144
|
+
|
|
145
|
+
#### `@mui/x-tree-view-pro@8.29.2` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
146
|
+
|
|
147
|
+
Same changes as in `@mui/x-tree-view@8.29.2`.
|
|
148
|
+
|
|
149
|
+
### Codemod
|
|
150
|
+
|
|
151
|
+
#### `@mui/x-codemod@8.29.2`
|
|
152
|
+
|
|
153
|
+
Internal changes.
|
|
154
|
+
|
|
155
|
+
### Core
|
|
156
|
+
|
|
157
|
+
- [code-infra] Pin mui-public actions to nearest git hash (#22824) @brijeshb42
|
|
158
|
+
- [internal] Switch resolutions to workspace overrides (#22865) @cherniavskii
|
|
159
|
+
|
|
160
|
+
### Miscellaneous
|
|
161
|
+
|
|
162
|
+
- [virtualizer] Improve the dimensions' initial state (#22890) @arminmeh
|
|
163
|
+
- [virtualizer] Remeasure scrollbars when layout changes (#23003) @arminmeh
|
|
164
|
+
|
|
8
165
|
## 8.29.1
|
|
9
166
|
|
|
10
167
|
_Jun 11, 2026_
|
|
@@ -51,9 +51,9 @@ const ColumnsPanelTrigger = exports.ColumnsPanelTrigger = (0, _forwardRef.forwar
|
|
|
51
51
|
};
|
|
52
52
|
const resolvedClassName = typeof className === 'function' ? className(state) : className;
|
|
53
53
|
const {
|
|
54
|
-
|
|
54
|
+
triggers
|
|
55
55
|
} = (0, _GridPanelContext.useGridPanelContext)();
|
|
56
|
-
const handleRef = (0, _useForkRef.default)(ref,
|
|
56
|
+
const handleRef = (0, _useForkRef.default)(ref, triggers.columnsPanel.setRef);
|
|
57
57
|
const handleClick = event => {
|
|
58
58
|
if (open) {
|
|
59
59
|
apiRef.current.hidePreferences();
|
|
@@ -43,9 +43,9 @@ const ColumnsPanelTrigger = forwardRef(function ColumnsPanelTrigger(props, ref)
|
|
|
43
43
|
};
|
|
44
44
|
const resolvedClassName = typeof className === 'function' ? className(state) : className;
|
|
45
45
|
const {
|
|
46
|
-
|
|
46
|
+
triggers
|
|
47
47
|
} = useGridPanelContext();
|
|
48
|
-
const handleRef = useForkRef(ref,
|
|
48
|
+
const handleRef = useForkRef(ref, triggers.columnsPanel.setRef);
|
|
49
49
|
const handleClick = event => {
|
|
50
50
|
if (open) {
|
|
51
51
|
apiRef.current.hidePreferences();
|
|
@@ -126,11 +126,12 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
126
126
|
minHeight: 0,
|
|
127
127
|
flexDirection: 'column',
|
|
128
128
|
overflow: 'hidden',
|
|
129
|
-
overflowAnchor: 'none',
|
|
130
|
-
// Keep the same scrolling position
|
|
131
129
|
transform: 'translate(0, 0)',
|
|
132
130
|
// Create a stacking context to keep scrollbars from showing on top
|
|
133
131
|
|
|
132
|
+
[`& .${_gridClasses.gridClasses.virtualScroller}`]: {
|
|
133
|
+
overflowAnchor: 'none' // Keep the same scrolling position
|
|
134
|
+
},
|
|
134
135
|
[`.${_gridClasses.gridClasses.main} > *:first-child${ignoreSsrWarning}`]: {
|
|
135
136
|
borderTopLeftRadius: 'var(--unstable_DataGrid-radius)',
|
|
136
137
|
borderTopRightRadius: 'var(--unstable_DataGrid-radius)'
|
|
@@ -120,11 +120,12 @@ export const GridRootStyles = styled('div', {
|
|
|
120
120
|
minHeight: 0,
|
|
121
121
|
flexDirection: 'column',
|
|
122
122
|
overflow: 'hidden',
|
|
123
|
-
overflowAnchor: 'none',
|
|
124
|
-
// Keep the same scrolling position
|
|
125
123
|
transform: 'translate(0, 0)',
|
|
126
124
|
// Create a stacking context to keep scrollbars from showing on top
|
|
127
125
|
|
|
126
|
+
[`& .${c.virtualScroller}`]: {
|
|
127
|
+
overflowAnchor: 'none' // Keep the same scrolling position
|
|
128
|
+
},
|
|
128
129
|
[`.${c.main} > *:first-child${ignoreSsrWarning}`]: {
|
|
129
130
|
borderTopLeftRadius: 'var(--unstable_DataGrid-radius)',
|
|
130
131
|
borderTopRightRadius: 'var(--unstable_DataGrid-radius)'
|
|
@@ -54,9 +54,9 @@ const FilterPanelTrigger = exports.FilterPanelTrigger = (0, _forwardRef.forwardR
|
|
|
54
54
|
};
|
|
55
55
|
const resolvedClassName = typeof className === 'function' ? className(state) : className;
|
|
56
56
|
const {
|
|
57
|
-
|
|
57
|
+
triggers
|
|
58
58
|
} = (0, _GridPanelContext.useGridPanelContext)();
|
|
59
|
-
const handleRef = (0, _useForkRef.default)(ref,
|
|
59
|
+
const handleRef = (0, _useForkRef.default)(ref, triggers.filterPanel.setRef);
|
|
60
60
|
const handleClick = event => {
|
|
61
61
|
if (open) {
|
|
62
62
|
apiRef.current.hidePreferences();
|
|
@@ -46,9 +46,9 @@ const FilterPanelTrigger = forwardRef(function FilterPanelTrigger(props, ref) {
|
|
|
46
46
|
};
|
|
47
47
|
const resolvedClassName = typeof className === 'function' ? className(state) : className;
|
|
48
48
|
const {
|
|
49
|
-
|
|
49
|
+
triggers
|
|
50
50
|
} = useGridPanelContext();
|
|
51
|
-
const handleRef = useForkRef(ref,
|
|
51
|
+
const handleRef = useForkRef(ref, triggers.filterPanel.setRef);
|
|
52
52
|
const handleClick = event => {
|
|
53
53
|
if (open) {
|
|
54
54
|
apiRef.current.hidePreferences();
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
export interface GridPanelTrigger {
|
|
3
|
+
setRef: (instance: HTMLElement | null) => void;
|
|
4
|
+
element: HTMLElement | null;
|
|
5
|
+
}
|
|
2
6
|
export interface GridPanelContextValue {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
7
|
+
triggers: {
|
|
8
|
+
filterPanel: GridPanelTrigger;
|
|
9
|
+
aiAssistantPanel: GridPanelTrigger;
|
|
10
|
+
columnsPanel: GridPanelTrigger;
|
|
11
|
+
};
|
|
6
12
|
}
|
|
7
13
|
export declare const GridPanelContext: React.Context<GridPanelContextValue | undefined>;
|
|
8
14
|
export declare function useGridPanelContext(): GridPanelContextValue;
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
export interface GridPanelTrigger {
|
|
3
|
+
setRef: (instance: HTMLElement | null) => void;
|
|
4
|
+
element: HTMLElement | null;
|
|
5
|
+
}
|
|
2
6
|
export interface GridPanelContextValue {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
7
|
+
triggers: {
|
|
8
|
+
filterPanel: GridPanelTrigger;
|
|
9
|
+
aiAssistantPanel: GridPanelTrigger;
|
|
10
|
+
columnsPanel: GridPanelTrigger;
|
|
11
|
+
};
|
|
6
12
|
}
|
|
7
13
|
export declare const GridPanelContext: React.Context<GridPanelContextValue | undefined>;
|
|
8
14
|
export declare function useGridPanelContext(): GridPanelContextValue;
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
'use client';
|
|
3
3
|
|
|
4
4
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
6
|
Object.defineProperty(exports, "__esModule", {
|
|
6
7
|
value: true
|
|
7
8
|
});
|
|
8
9
|
exports.GridPanelContext = void 0;
|
|
9
10
|
exports.GridPanelContextProvider = GridPanelContextProvider;
|
|
10
11
|
exports.useGridPanelContext = useGridPanelContext;
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
13
|
var React = _interopRequireWildcard(require("react"));
|
|
12
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
15
|
const GridPanelContext = exports.GridPanelContext = /*#__PURE__*/React.createContext(undefined);
|
|
@@ -22,14 +24,46 @@ function useGridPanelContext() {
|
|
|
22
24
|
function GridPanelContextProvider({
|
|
23
25
|
children
|
|
24
26
|
}) {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
const [triggerElements, setTriggerElements] = React.useState({
|
|
28
|
+
columnsPanel: null,
|
|
29
|
+
filterPanel: null,
|
|
30
|
+
aiAssistantPanel: null
|
|
31
|
+
});
|
|
32
|
+
const updateTriggerElement = React.useCallback((key, instance) => {
|
|
33
|
+
setTriggerElements(prev => {
|
|
34
|
+
if (prev[key] === instance) {
|
|
35
|
+
return prev;
|
|
36
|
+
}
|
|
37
|
+
return (0, _extends2.default)({}, prev, {
|
|
38
|
+
[key]: instance
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}, []);
|
|
42
|
+
const setColumnsPanelTrigger = React.useCallback(instance => {
|
|
43
|
+
updateTriggerElement('columnsPanel', instance);
|
|
44
|
+
}, [updateTriggerElement]);
|
|
45
|
+
const setFilterPanelTrigger = React.useCallback(instance => {
|
|
46
|
+
updateTriggerElement('filterPanel', instance);
|
|
47
|
+
}, [updateTriggerElement]);
|
|
48
|
+
const setAiAssistantPanelTrigger = React.useCallback(instance => {
|
|
49
|
+
updateTriggerElement('aiAssistantPanel', instance);
|
|
50
|
+
}, [updateTriggerElement]);
|
|
28
51
|
const value = React.useMemo(() => ({
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
52
|
+
triggers: {
|
|
53
|
+
columnsPanel: {
|
|
54
|
+
element: triggerElements.columnsPanel,
|
|
55
|
+
setRef: setColumnsPanelTrigger
|
|
56
|
+
},
|
|
57
|
+
filterPanel: {
|
|
58
|
+
element: triggerElements.filterPanel,
|
|
59
|
+
setRef: setFilterPanelTrigger
|
|
60
|
+
},
|
|
61
|
+
aiAssistantPanel: {
|
|
62
|
+
element: triggerElements.aiAssistantPanel,
|
|
63
|
+
setRef: setAiAssistantPanelTrigger
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}), [triggerElements, setColumnsPanelTrigger, setFilterPanelTrigger, setAiAssistantPanelTrigger]);
|
|
33
67
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridPanelContext.Provider, {
|
|
34
68
|
value: value,
|
|
35
69
|
children: children
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
4
|
import * as React from 'react';
|
|
4
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
6
|
export const GridPanelContext = /*#__PURE__*/React.createContext(undefined);
|
|
@@ -14,14 +15,46 @@ export function useGridPanelContext() {
|
|
|
14
15
|
export function GridPanelContextProvider({
|
|
15
16
|
children
|
|
16
17
|
}) {
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
const [triggerElements, setTriggerElements] = React.useState({
|
|
19
|
+
columnsPanel: null,
|
|
20
|
+
filterPanel: null,
|
|
21
|
+
aiAssistantPanel: null
|
|
22
|
+
});
|
|
23
|
+
const updateTriggerElement = React.useCallback((key, instance) => {
|
|
24
|
+
setTriggerElements(prev => {
|
|
25
|
+
if (prev[key] === instance) {
|
|
26
|
+
return prev;
|
|
27
|
+
}
|
|
28
|
+
return _extends({}, prev, {
|
|
29
|
+
[key]: instance
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}, []);
|
|
33
|
+
const setColumnsPanelTrigger = React.useCallback(instance => {
|
|
34
|
+
updateTriggerElement('columnsPanel', instance);
|
|
35
|
+
}, [updateTriggerElement]);
|
|
36
|
+
const setFilterPanelTrigger = React.useCallback(instance => {
|
|
37
|
+
updateTriggerElement('filterPanel', instance);
|
|
38
|
+
}, [updateTriggerElement]);
|
|
39
|
+
const setAiAssistantPanelTrigger = React.useCallback(instance => {
|
|
40
|
+
updateTriggerElement('aiAssistantPanel', instance);
|
|
41
|
+
}, [updateTriggerElement]);
|
|
20
42
|
const value = React.useMemo(() => ({
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
43
|
+
triggers: {
|
|
44
|
+
columnsPanel: {
|
|
45
|
+
element: triggerElements.columnsPanel,
|
|
46
|
+
setRef: setColumnsPanelTrigger
|
|
47
|
+
},
|
|
48
|
+
filterPanel: {
|
|
49
|
+
element: triggerElements.filterPanel,
|
|
50
|
+
setRef: setFilterPanelTrigger
|
|
51
|
+
},
|
|
52
|
+
aiAssistantPanel: {
|
|
53
|
+
element: triggerElements.aiAssistantPanel,
|
|
54
|
+
setRef: setAiAssistantPanelTrigger
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}), [triggerElements, setColumnsPanelTrigger, setFilterPanelTrigger, setAiAssistantPanelTrigger]);
|
|
25
58
|
return /*#__PURE__*/_jsx(GridPanelContext.Provider, {
|
|
26
59
|
value: value,
|
|
27
60
|
children: children
|
|
@@ -20,21 +20,19 @@ function GridPreferencesPanel() {
|
|
|
20
20
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
21
21
|
const preferencePanelState = (0, _useGridSelector.useGridSelector)(apiRef, _gridPreferencePanelSelector.gridPreferencePanelStateSelector);
|
|
22
22
|
const {
|
|
23
|
-
|
|
24
|
-
filterPanelTriggerRef,
|
|
25
|
-
aiAssistantPanelTriggerRef
|
|
23
|
+
triggers
|
|
26
24
|
} = (0, _GridPanelContext.useGridPanelContext)();
|
|
27
25
|
const panelContent = apiRef.current.unstable_applyPipeProcessors('preferencePanel', null, preferencePanelState.openedPanelValue ?? _gridPreferencePanelsValue.GridPreferencePanelsValue.filters);
|
|
28
26
|
let target = null;
|
|
29
27
|
switch (preferencePanelState.openedPanelValue) {
|
|
30
28
|
case _gridPreferencePanelsValue.GridPreferencePanelsValue.filters:
|
|
31
|
-
target =
|
|
29
|
+
target = triggers.filterPanel.element;
|
|
32
30
|
break;
|
|
33
31
|
case _gridPreferencePanelsValue.GridPreferencePanelsValue.columns:
|
|
34
|
-
target =
|
|
32
|
+
target = triggers.columnsPanel.element;
|
|
35
33
|
break;
|
|
36
34
|
case _gridPreferencePanelsValue.GridPreferencePanelsValue.aiAssistant:
|
|
37
|
-
target =
|
|
35
|
+
target = triggers.aiAssistantPanel.element;
|
|
38
36
|
break;
|
|
39
37
|
default:
|
|
40
38
|
}
|
|
@@ -13,21 +13,19 @@ export function GridPreferencesPanel() {
|
|
|
13
13
|
const rootProps = useGridRootProps();
|
|
14
14
|
const preferencePanelState = useGridSelector(apiRef, gridPreferencePanelStateSelector);
|
|
15
15
|
const {
|
|
16
|
-
|
|
17
|
-
filterPanelTriggerRef,
|
|
18
|
-
aiAssistantPanelTriggerRef
|
|
16
|
+
triggers
|
|
19
17
|
} = useGridPanelContext();
|
|
20
18
|
const panelContent = apiRef.current.unstable_applyPipeProcessors('preferencePanel', null, preferencePanelState.openedPanelValue ?? GridPreferencePanelsValue.filters);
|
|
21
19
|
let target = null;
|
|
22
20
|
switch (preferencePanelState.openedPanelValue) {
|
|
23
21
|
case GridPreferencePanelsValue.filters:
|
|
24
|
-
target =
|
|
22
|
+
target = triggers.filterPanel.element;
|
|
25
23
|
break;
|
|
26
24
|
case GridPreferencePanelsValue.columns:
|
|
27
|
-
target =
|
|
25
|
+
target = triggers.columnsPanel.element;
|
|
28
26
|
break;
|
|
29
27
|
case GridPreferencePanelsValue.aiAssistant:
|
|
30
|
-
target =
|
|
28
|
+
target = triggers.aiAssistantPanel.element;
|
|
31
29
|
break;
|
|
32
30
|
default:
|
|
33
31
|
}
|
|
@@ -34,10 +34,10 @@ const GridToolbarColumnsButton = exports.GridToolbarColumnsButton = (0, _forward
|
|
|
34
34
|
const apiRef = (0, _useGridApiContext.useGridApiContext)();
|
|
35
35
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
36
36
|
const {
|
|
37
|
-
|
|
37
|
+
triggers
|
|
38
38
|
} = (0, _GridPanelContext.useGridPanelContext)();
|
|
39
39
|
const preferencePanel = (0, _useGridSelector.useGridSelector)(apiRef, _gridPreferencePanelSelector.gridPreferencePanelStateSelector);
|
|
40
|
-
const handleRef = (0, _useForkRef.default)(ref,
|
|
40
|
+
const handleRef = (0, _useForkRef.default)(ref, triggers.columnsPanel.setRef);
|
|
41
41
|
const showColumns = event => {
|
|
42
42
|
if (preferencePanel.open && preferencePanel.openedPanelValue === _gridPreferencePanelsValue.GridPreferencePanelsValue.columns) {
|
|
43
43
|
apiRef.current.hidePreferences();
|
|
@@ -27,10 +27,10 @@ const GridToolbarColumnsButton = forwardRef(function GridToolbarColumnsButton(pr
|
|
|
27
27
|
const apiRef = useGridApiContext();
|
|
28
28
|
const rootProps = useGridRootProps();
|
|
29
29
|
const {
|
|
30
|
-
|
|
30
|
+
triggers
|
|
31
31
|
} = useGridPanelContext();
|
|
32
32
|
const preferencePanel = useGridSelector(apiRef, gridPreferencePanelStateSelector);
|
|
33
|
-
const handleRef = useForkRef(ref,
|
|
33
|
+
const handleRef = useForkRef(ref, triggers.columnsPanel.setRef);
|
|
34
34
|
const showColumns = event => {
|
|
35
35
|
if (preferencePanel.open && preferencePanel.openedPanelValue === GridPreferencePanelsValue.columns) {
|
|
36
36
|
apiRef.current.hidePreferences();
|
|
@@ -62,9 +62,9 @@ const GridToolbarFilterButton = exports.GridToolbarFilterButton = (0, _forwardRe
|
|
|
62
62
|
const filterButtonId = (0, _useId.default)();
|
|
63
63
|
const filterPanelId = (0, _useId.default)();
|
|
64
64
|
const {
|
|
65
|
-
|
|
65
|
+
triggers
|
|
66
66
|
} = (0, _GridPanelContext.useGridPanelContext)();
|
|
67
|
-
const handleRef = (0, _useForkRef.default)(ref,
|
|
67
|
+
const handleRef = (0, _useForkRef.default)(ref, triggers.filterPanel.setRef);
|
|
68
68
|
const tooltipContentNode = React.useMemo(() => {
|
|
69
69
|
if (preferencePanel.open) {
|
|
70
70
|
return apiRef.current.getLocaleText('toolbarFiltersTooltipHide');
|
|
@@ -55,9 +55,9 @@ const GridToolbarFilterButton = forwardRef(function GridToolbarFilterButton(prop
|
|
|
55
55
|
const filterButtonId = useId();
|
|
56
56
|
const filterPanelId = useId();
|
|
57
57
|
const {
|
|
58
|
-
|
|
58
|
+
triggers
|
|
59
59
|
} = useGridPanelContext();
|
|
60
|
-
const handleRef = useForkRef(ref,
|
|
60
|
+
const handleRef = useForkRef(ref, triggers.filterPanel.setRef);
|
|
61
61
|
const tooltipContentNode = React.useMemo(() => {
|
|
62
62
|
if (preferencePanel.open) {
|
|
63
63
|
return apiRef.current.getLocaleText('toolbarFiltersTooltipHide');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import type { RenderProp } from '@mui/x-internals/useComponentRenderer';
|
|
3
3
|
export type ToolbarProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
4
4
|
/**
|
|
5
5
|
* A function to customize rendering of the component.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import type { RenderProp } from '@mui/x-internals/useComponentRenderer';
|
|
3
3
|
export type ToolbarProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
4
4
|
/**
|
|
5
5
|
* A function to customize rendering of the component.
|