Skip to content

Commit 24771e7

Browse files
committed
Added darkmode component
1 parent ca106e2 commit 24771e7

File tree

2 files changed

+39
-2
lines changed

2 files changed

+39
-2
lines changed

src/App.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ var Settings = require('./Settings')
66
var StoryStore = require('./stores/StoryStore')
77
var UpdatesStore = require('./stores/UpdatesStore')
88
var SettingsStore = require('./stores/SettingsStore')
9+
var CurrentColor = require('./Darkmode')
910

1011
var App = React.createClass({
1112
getInitialState() {
@@ -26,7 +27,11 @@ var App = React.createClass({
2627

2728
componentDidMount() {
2829
// Empty the prebooted HTML and hydrate using live results from Firebase
29-
this.setState({ prebootHTML: '', showChildren: true })
30+
this.setState({
31+
prebootHTML: '',
32+
showChildren: true,
33+
darkMode: SettingsStore.darkMode
34+
})
3035
},
3136

3237
componentWillUnmount() {
@@ -48,6 +53,10 @@ var App = React.createClass({
4853
this.setState({showSettings: !this.state.showSettings})
4954
},
5055

56+
toggleDarkMode() {
57+
this.setState({darkMode: !this.state.darkMode})
58+
},
59+
5160
render() {
5261
return <div className="App" onClick={this.state.showSettings && this.toggleSettings}>
5362
<div className="App__wrap">
@@ -62,7 +71,7 @@ var App = React.createClass({
6271
<a className="App__settings" tabIndex="0" onClick={this.toggleSettings} onKeyPress={this.toggleSettings}>
6372
{this.state.showSettings ? 'hide settings' : 'settings'}
6473
</a>
65-
{this.state.showSettings && <Settings key="settings"/>}
74+
{this.state.showSettings && <Settings key="settings" toggleDarkMode={this.toggleDarkMode}/>}
6675
</div>
6776
<div className="App__content">
6877
<div dangerouslySetInnerHTML={{ __html: this.state.prebootHTML }}/>
@@ -71,6 +80,7 @@ var App = React.createClass({
7180
<div className="App__footer">
7281
<a href="https://github.com/insin/react-hn">insin/react-hn</a>
7382
</div>
83+
<CurrentColor darkMode={this.state.darkMode} />
7484
</div>
7585
</div>
7686
}

src/Darkmode.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
var React = require('react')
2+
var SettingsStore = require('./stores/SettingsStore')
3+
4+
var CurrentColor = React.createClass({
5+
propTypes: {
6+
darkMode: React.PropTypes.bool
7+
},
8+
getDefaultProps() {
9+
return {
10+
darkMode: SettingsStore.darkMode
11+
}
12+
},
13+
componentDidMount() {
14+
document.documentElement.classList.toggle('App--dark', this.props.darkMode)
15+
},
16+
componentWillReceiveProps(nextProps) {
17+
document.documentElement.classList.toggle('App--dark', nextProps.darkMode)
18+
},
19+
componentWillUnmount() {
20+
document.documentElement.classList.remove('App--dark')
21+
},
22+
render() {
23+
return <div></div>
24+
}
25+
})
26+
27+
module.exports = CurrentColor

0 commit comments

Comments
 (0)