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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy