Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5c57b43

Browse files
Rownotimneutkens
authored andcommitted
Fix production builds for the material-ui example (vercel#1906)
Also remove redundant getMuiTheme() calls, handle injectTapEventPlugin() better and use process.browser.
1 parent c77e80b commit 5c57b43

File tree

3 files changed

+31
-19
lines changed

3 files changed

+31
-19
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module.exports = {
2+
webpack: (config) => {
3+
// Remove minifed react aliases for material-ui so production builds work
4+
if (config.resolve.alias) {
5+
delete config.resolve.alias.react
6+
delete config.resolve.alias['react-dom']
7+
}
8+
9+
return config
10+
}
11+
}

examples/with-material-ui/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"dependencies": {
3-
"material-ui": "^0.17.4",
3+
"material-ui": "^0.18.0",
44
"next": "latest",
55
"react": "^15.5.4",
66
"react-dom": "^15.5.4",

examples/with-material-ui/pages/index.js

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,11 @@ import getMuiTheme from 'material-ui/styles/getMuiTheme'
77
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider'
88
import injectTapEventPlugin from 'react-tap-event-plugin'
99

10-
// Needed for onTouchTap
11-
// http://stackoverflow.com/a/34015469/988941
12-
try {
13-
if (typeof window !== 'undefined') {
14-
injectTapEventPlugin()
15-
}
16-
} catch (e) {
17-
// do nothing
10+
// Make sure react-tap-event-plugin only gets injected once
11+
// Needed for material-ui
12+
if (!process.tapEventInjected) {
13+
injectTapEventPlugin()
14+
process.tapEventInjected = true
1815
}
1916

2017
const styles = {
@@ -24,17 +21,23 @@ const styles = {
2421
}
2522
}
2623

27-
const _muiTheme = getMuiTheme({
24+
const muiTheme = {
2825
palette: {
2926
accent1Color: deepOrange500
3027
}
31-
})
28+
}
3229

3330
class Main extends Component {
3431
static getInitialProps ({ req }) {
35-
const userAgent = req ? req.headers['user-agent'] : navigator.userAgent
36-
const isServer = !!req
37-
return {isServer, userAgent}
32+
// Ensures material-ui renders the correct css prefixes server-side
33+
let userAgent
34+
if (process.browser) {
35+
userAgent = navigator.userAgent
36+
} else {
37+
userAgent = req.headers['user-agent']
38+
}
39+
40+
return { userAgent }
3841
}
3942

4043
constructor (props, context) {
@@ -58,6 +61,8 @@ class Main extends Component {
5861
}
5962

6063
render () {
64+
const { userAgent } = this.props
65+
6166
const standardActions = (
6267
<FlatButton
6368
label='Ok'
@@ -66,12 +71,8 @@ class Main extends Component {
6671
/>
6772
)
6873

69-
const { userAgent } = this.props
70-
/* https://github.com/callemall/material-ui/issues/3336 */
71-
const muiTheme = getMuiTheme(getMuiTheme({userAgent: userAgent}), _muiTheme)
72-
7374
return (
74-
<MuiThemeProvider muiTheme={muiTheme}>
75+
<MuiThemeProvider muiTheme={getMuiTheme({userAgent, ...muiTheme})}>
7576
<div style={styles.container}>
7677
<Dialog
7778
open={this.state.open}

0 commit comments

Comments
 (0)