Skip to content

Commit f6f02e1

Browse files
committed
simple extraction/refactoring of search box and results
1 parent 72a66ee commit f6f02e1

File tree

3 files changed

+59
-26
lines changed

3 files changed

+59
-26
lines changed

web/src/App.js

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React, {Component} from 'react';
22
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
3-
import {TextField, List, ListItem, Divider} from 'material-ui'
43

54
import {observer} from 'mobx-react';
65

@@ -10,40 +9,20 @@ import {observer} from 'mobx-react';
109
import injectTapEventPlugin from 'react-tap-event-plugin';
1110
injectTapEventPlugin();
1211

12+
import SearchInput from './SearchInput';
13+
import SearchResults from './SearchResults';
14+
1315
export default observer(class App extends Component {
1416
static propTypes = {
1517
colors: React.PropTypes.object.isRequired
1618
};
1719

18-
handleKeyDown = (event) => {
19-
const ENTER_KEY = 13;
20-
if (event.keyCode === ENTER_KEY) {
21-
event.preventDefault();
22-
this.props.colors.search();
23-
}
24-
};
25-
2620
render() {
27-
const listItems = this.props.colors.results.map((color, index) => {
28-
return (
29-
<div key={`color-div-${index}`}>
30-
<ListItem key={`color-${index}`} primaryText={color.name} style={{backgroundColor: color.hex} }/>
31-
<Divider key={`divider-${index}`}/>
32-
</div>
33-
);
34-
});
3521
return (
3622
<MuiThemeProvider>
3723
<div>
38-
<TextField hintText="Search..."
39-
floatingLabelFixed={true}
40-
fullWidth={true}
41-
value={this.props.colors.query}
42-
onChange={(event, value) => this.props.colors.updateQuery(value)}
43-
onKeyDown={this.handleKeyDown}/>
44-
<List>
45-
{listItems}
46-
</List>
24+
<SearchInput colors={this.props.colors}/>
25+
<SearchResults colors={this.props.colors}/>
4726
</div>
4827
</MuiThemeProvider>
4928
);

web/src/SearchInput.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import React, {Component} from 'react';
2+
import {TextField} from 'material-ui';
3+
import {observer} from 'mobx-react';
4+
5+
export default observer(class SearchInput extends Component {
6+
static propTypes = {
7+
colors: React.PropTypes.object.isRequired
8+
};
9+
10+
handleKeyDown = (event) => {
11+
const ENTER_KEY = 13;
12+
if (event.keyCode === ENTER_KEY) {
13+
event.preventDefault();
14+
this.props.colors.search();
15+
}
16+
};
17+
18+
render() {
19+
return (
20+
<TextField hintText="Search..."
21+
floatingLabelFixed={true}
22+
fullWidth={true}
23+
value={this.props.colors.query}
24+
onChange={(event, value) => this.props.colors.updateQuery(value)}
25+
onKeyDown={this.handleKeyDown}/>
26+
)
27+
}
28+
});

web/src/SearchResults.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import React, {Component} from 'react';
2+
import {List, ListItem, Divider} from 'material-ui'
3+
import {observer} from 'mobx-react';
4+
5+
export default observer(class SearchResults extends Component {
6+
static propTypes = {
7+
colors: React.PropTypes.object.isRequired
8+
};
9+
10+
render() {
11+
const listItems = this.props.colors.results.map((color, index) => {
12+
return (
13+
<div key={`color-div-${index}`}>
14+
<ListItem key={`color-${index}`} primaryText={color.name} style={{backgroundColor: color.hex} }/>
15+
<Divider key={`divider-${index}`}/>
16+
</div>
17+
);
18+
});
19+
return (
20+
<List>
21+
{listItems}
22+
</List>
23+
);
24+
}
25+
26+
});

0 commit comments

Comments
 (0)