Skip to content

Commit 4206792

Browse files
committed
move event listener to root element
1 parent 0998f16 commit 4206792

File tree

3 files changed

+19
-9
lines changed

3 files changed

+19
-9
lines changed

docs/data/data-grid/components/quick-filter/GridControlledQuickFilter.js

+9-4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
QuickFilterControl,
99
QuickFilterClear,
1010
QuickFilterTrigger,
11+
useGridApiContext,
1112
} from '@mui/x-data-grid';
1213
import { useDemoData } from '@mui/x-data-grid-generator';
1314
import TextField from '@mui/material/TextField';
@@ -42,17 +43,21 @@ const StyledTextField = styled(TextField)(({ theme, ownerState }) => ({
4243

4344
function CustomToolbar() {
4445
const [expanded, setExpanded] = React.useState(false);
46+
const apiRef = useGridApiContext();
4547

4648
React.useEffect(() => {
49+
const rootElement = apiRef.current.rootElementRef.current;
50+
4751
const handleKeyDown = (event) => {
48-
if ((event.ctrlKey || event.metaKey) && event.shiftKey && event.key === 'p') {
52+
if ((event.ctrlKey || event.metaKey) && event.key === 'p') {
53+
event.preventDefault();
4954
setExpanded(true);
5055
}
5156
};
5257

53-
window.addEventListener('keydown', handleKeyDown);
54-
return () => window.removeEventListener('keydown', handleKeyDown);
55-
}, []);
58+
rootElement?.addEventListener('keydown', handleKeyDown);
59+
return () => rootElement?.removeEventListener('keydown', handleKeyDown);
60+
}, [apiRef]);
5661

5762
return (
5863
<Toolbar>

docs/data/data-grid/components/quick-filter/GridControlledQuickFilter.tsx

+9-4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
QuickFilterControl,
99
QuickFilterClear,
1010
QuickFilterTrigger,
11+
useGridApiContext,
1112
} from '@mui/x-data-grid';
1213
import { useDemoData } from '@mui/x-data-grid-generator';
1314
import TextField from '@mui/material/TextField';
@@ -50,17 +51,21 @@ const StyledTextField = styled(TextField)<{
5051

5152
function CustomToolbar() {
5253
const [expanded, setExpanded] = React.useState(false);
54+
const apiRef = useGridApiContext();
5355

5456
React.useEffect(() => {
57+
const rootElement = apiRef.current.rootElementRef.current;
58+
5559
const handleKeyDown = (event: KeyboardEvent) => {
56-
if ((event.ctrlKey || event.metaKey) && event.shiftKey && event.key === 'p') {
60+
if ((event.ctrlKey || event.metaKey) && event.key === 'p') {
61+
event.preventDefault();
5762
setExpanded(true);
5863
}
5964
};
6065

61-
window.addEventListener('keydown', handleKeyDown);
62-
return () => window.removeEventListener('keydown', handleKeyDown);
63-
}, []);
66+
rootElement?.addEventListener('keydown', handleKeyDown);
67+
return () => rootElement?.removeEventListener('keydown', handleKeyDown);
68+
}, [apiRef]);
6469

6570
return (
6671
<Toolbar>

docs/data/data-grid/components/quick-filter/quick-filter.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ The quick filter is uncontrolled by default and can be toggled via the trigger.
7070

7171
### Expand quick filter via keyboard
7272

73-
The demo below shows how to control the quick filter state using the `expanded` and `onExpandedChange` props to support expanding the quick filter via keyboard. Try pressing <kbd class="key">Cmd</kbd> (or <kbd class="key">Ctrl</kbd> on Windows)+<kbd class="key">Shift</kbd>+<kbd class="key">P</kbd>.
73+
The demo below shows how to control the quick filter state using the `expanded` and `onExpandedChange` props to support expanding the quick filter via keyboard. You can try it by clicking on any cell to ensure the data grid has focus, and then pressing <kbd class="key">Cmd</kbd> (or <kbd class="key">Ctrl</kbd> on Windows)+<kbd class="key">P</kbd>.
7474

7575
{{"demo": "GridControlledQuickFilter.js", "bg": "inline", "defaultCodeOpen": false}}
7676

0 commit comments

Comments
 (0)