Skip to content

Commit aa1705c

Browse files
authored
[useMediaQuery] Fix ssrMatchMedia requiring listener mixin (#18501)
1 parent 7653673 commit aa1705c

File tree

4 files changed

+39
-1
lines changed

4 files changed

+39
-1
lines changed

docs/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"@material-ui/types": "^4.1.1",
3535
"@trendmicro/react-interpolate": "^0.5.5",
3636
"@types/autosuggest-highlight": "^3.1.0",
37+
"@types/css-mediaquery": "^0.1.0",
3738
"@types/json2mq": "^0.2.0",
3839
"@types/react-autosuggest": "^9.3.11",
3940
"@types/react-dom": "^16.9.1",
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import React from 'react';
2+
import mediaQuery from 'css-mediaquery';
3+
import { ThemeProvider, Theme } from '@material-ui/core/styles';
4+
import useMediaQuery from '@material-ui/core/useMediaQuery';
5+
6+
function MyComponent() {
7+
const matches = useMediaQuery('(min-width:600px)');
8+
9+
return <span>{`(min-width:600px) matches: ${matches}`}</span>;
10+
}
11+
12+
export default function ServerSide() {
13+
const ssrMatchMedia = (query: string) => ({
14+
matches: mediaQuery.match(query, {
15+
// The estimated CSS width of the browser.
16+
width: 800,
17+
}),
18+
});
19+
20+
return (
21+
<ThemeProvider<Theme>
22+
theme={{
23+
props: {
24+
// Change the default options of useMediaQuery
25+
MuiUseMediaQuery: { ssrMatchMedia },
26+
},
27+
}}
28+
>
29+
<MyComponent />
30+
</ThemeProvider>
31+
);
32+
}

packages/material-ui/src/useMediaQuery/useMediaQuery.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export type MuiMediaQueryListListener = (event: MuiMediaQueryListEvent) => void;
1313
export interface Options {
1414
defaultMatches?: boolean;
1515
noSsr?: boolean;
16-
ssrMatchMedia?: (query: string) => MuiMediaQueryList;
16+
ssrMatchMedia?: (query: string) => { matches: boolean };
1717
}
1818

1919
export default function useMediaQuery<Theme = unknown>(

yarn.lock

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2020,6 +2020,11 @@
20202020
resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
20212021
integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
20222022

2023+
"@types/css-mediaquery@^0.1.0":
2024+
version "0.1.0"
2025+
resolved "https://registry.yarnpkg.com/@types/css-mediaquery/-/css-mediaquery-0.1.0.tgz#61d439d8163880e90b61d19aba24f7b778c4e77d"
2026+
integrity sha512-jzZ9bRw8fTgCEllDvE7GHR1zTP5LsDHJbAX6BCwD9qdxIOq/Le5TTsdteoCIdEQaFpDMvudLHU/hLo1Lmfcy0Q==
2027+
20232028
"@types/enzyme@^3.10.3":
20242029
version "3.10.3"
20252030
resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.10.3.tgz#02b6c5ac7d0472005944a652e79045e2f6c66804"

0 commit comments

Comments
 (0)