Skip to content

Commit f115049

Browse files
author
Yury Shapkarin
committed
basic theme switch at user options nsand#16 nsand#38
1 parent 69e07bc commit f115049

File tree

3 files changed

+40
-7
lines changed

3 files changed

+40
-7
lines changed

src/components/popup/popup.jsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// TODO: dense
2+
13
import React from 'react';
24
import { ThemeProvider } from 'styled-components';
35

src/components/popup/style.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// TODO: dense
2+
13
import styled from 'styled-components';
24

35
export const Navigation = styled.nav`

src/options/components/options.jsx

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,28 @@ export default class Options extends React.Component {
77
super(props);
88
this.state = {
99
showUrl: window.localStorage.showURL,
10-
isSeparated: window.localStorage.getItem('isSeparated'),
10+
isSeparated: window.localStorage.getItem('isSeparated') || 'false',
1111
isCollapsed: window.localStorage.getItem('isCollapsed') || 'true',
1212
theme: window.localStorage.getItem('theme') || 'light'
1313
};
14+
this.changeTheme = this.changeTheme.bind(this);
15+
this.changeShowUrl = this.changeShowUrl.bind(this);
16+
this.changeSeparated = this.changeSeparated.bind(this);
1417
}
1518
changeTheme(event) {
16-
this.setState({theme: event.target.value});
17-
window.localStorage.setItem('theme', event.target.value);
19+
const theme = event.target.value;
20+
this.setState({ theme });
21+
window.localStorage.setItem('theme', theme);
22+
}
23+
changeShowUrl(event) {
24+
const showUrl = event.target.checked ? 'true' : 'false';
25+
this.setState({ showUrl });
26+
window.localStorage.showURL = showUrl;
27+
}
28+
changeSeparated(event) {
29+
const isSeparated = event.targed.checked ? 'true' : 'false';
30+
this.setState({ isSeparated });
31+
window.localStorage.setItem('isSeparated', isSeparated);
1832
}
1933
componentDidMount() {}
2034
render() {
@@ -32,7 +46,12 @@ export default class Options extends React.Component {
3246
<ul className="options">
3347
<li>
3448
<div>
35-
<input type="checkbox" id="showURL" />
49+
<input
50+
type="checkbox"
51+
id="showURL"
52+
checked={this.state.showUrl}
53+
onChange={this.changeShowUrl}
54+
/>
3655
<label className="label" for="showURL">
3756
Show tab URL
3857
</label>
@@ -45,7 +64,8 @@ export default class Options extends React.Component {
4564
<div>
4665
<input type="checkbox" id="collapse" />
4766
<label className="label" for="collapse">
48-
Dense tab list
67+
Dense tab list (does it work after styled-components
68+
migration?)
4969
</label>
5070
</div>
5171
<div className="optionTip">
@@ -54,7 +74,12 @@ export default class Options extends React.Component {
5474
<ul className="options">
5575
<li>
5676
<div>
57-
<input type="checkbox" id="separate" />
77+
<input
78+
type="checkbox"
79+
id="separate"
80+
checked={this.state.isSeparated}
81+
onChange={this.changeSeparated}
82+
/>
5883
<label className="label" for="separate">
5984
Show separators
6085
</label>
@@ -66,7 +91,11 @@ export default class Options extends React.Component {
6691
</ul>
6792
</li>
6893
<li>
69-
<select value={this.state.theme} name="select" onChange={this.changeTheme}>
94+
<select
95+
value={this.state.theme}
96+
name="select"
97+
onChange={this.changeTheme}
98+
>
7099
{Object.keys(themes).map(theme => (
71100
<option value={theme} selected={this.state.theme === theme}>
72101
{theme}

0 commit comments

Comments
 (0)