Skip to content

Commit 4e5d011

Browse files
authored
Merge pull request #34 from Zetoff/feature/improving-drawers
added a new standard drawer
2 parents d4f9e35 + 12c45ab commit 4e5d011

File tree

10 files changed

+96
-19
lines changed

10 files changed

+96
-19
lines changed

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "material-ui-layout",
3-
"version": "0.0.11",
3+
"version": "0.0.12",
44
"description": "Layout components for material-ui",
55
"main": "./lib/index.js",
66
"scripts": {
@@ -43,8 +43,8 @@
4343
"dependencies": {
4444
"classnames": "^2.2.5",
4545
"lodash": "^4.17.4",
46-
"material-ui": "^1.0.0-beta.12",
47-
"material-ui-icons": "^1.0.0-beta.5",
46+
"material-ui": "1.0.0-beta.13",
47+
"material-ui-icons": "1.0.0-beta.10",
4848
"prop-types": "^15.5.10",
4949
"react": "^15.6.1 || ^16.0.0",
5050
"react-controllables": "^0.6.0",

src/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@ export { default as BasicAppBar } from './templates/AppBar/BasicAppBar';
88
export { default as TwoRowsAppBar } from './templates/AppBar/TwoRowsAppBar';
99
export { default as BasicFooter } from './templates/Footer/BasicFooter';
1010
export { default as BasicDrawer } from './templates/Drawer/BasicDrawer';
11+
export { default as StandardDrawer } from './templates/Drawer/StandardDrawer';
1112

1213
export default Layout;

src/templates/Drawer/BasicDrawer/BasicDrawer.jsx

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
import _ from 'lodash';
21
import React from 'react';
32
import PropTypes from 'prop-types';
43
import { withStyles } from 'material-ui/styles';
5-
import List, { ListItem, ListItemIcon, ListItemText } from 'material-ui/List';
6-
import Icon from 'material-ui/Icon';
4+
5+
import DrawerItemsList from '../DrawerItemsList';
76

87
import styles from './styles';
98

@@ -16,16 +15,7 @@ class BasicDrawer extends React.PureComponent {
1615
const { links, classes } = this.props;
1716
return (
1817
<div className={classes.wrapper}>
19-
<List className={classes.list}>
20-
{_.map(links, link => (
21-
<ListItem button onClick={link.onClick} key={`link-${link.label}`}>
22-
<ListItemIcon>
23-
{link.icon ? <Icon>{link.icon}</Icon> : <Icon>arrow_right</Icon>}
24-
</ListItemIcon>
25-
<ListItemText primary={link.label} />
26-
</ListItem>
27-
))}
28-
</List>
18+
<DrawerItemsList items={links} />
2919
</div>
3020
);
3121
}

src/templates/Drawer/BasicDrawer/styles.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,4 @@ export default {
22
wrapper: {
33
width: '100%',
44
},
5-
list: {
6-
flex: 'initial',
7-
},
85
};
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import map from 'lodash/map';
2+
import React from 'react';
3+
import PropTypes from 'prop-types';
4+
import { withStyles } from 'material-ui/styles';
5+
import List, { ListItem, ListItemIcon, ListItemText } from 'material-ui/List';
6+
import Icon from 'material-ui/Icon';
7+
8+
import styles from './styles';
9+
10+
class DrawerItemsList extends React.PureComponent {
11+
static propTypes = {
12+
items: PropTypes.arrayOf(PropTypes.shape({})),
13+
classes: PropTypes.shape({}),
14+
};
15+
16+
renderIcon = (item) => {
17+
if (item.icon) {
18+
return <item.icon />;
19+
} else if (item.iconName) {
20+
return <Icon>{item.iconName}</Icon>;
21+
}
22+
return <Icon>arrow_right</Icon>;
23+
};
24+
25+
render() {
26+
const { items, classes } = this.props;
27+
return (
28+
<List className={classes.list}>
29+
{map(items, item => (
30+
<ListItem button onClick={item.onClick} key={`item-${item.label}`}>
31+
<ListItemIcon>{this.renderIcon(item)}</ListItemIcon>
32+
<ListItemText primary={item.label} />
33+
</ListItem>
34+
))}
35+
</List>
36+
);
37+
}
38+
}
39+
40+
export default withStyles(styles)(DrawerItemsList);
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import DrawerItemsList from './DrawerItemsList';
2+
3+
export default DrawerItemsList;
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export default {
2+
list: {
3+
flex: 'initial',
4+
},
5+
};
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import React from 'react';
2+
import PropTypes from 'prop-types';
3+
import { withStyles } from 'material-ui/styles';
4+
import Divider from 'material-ui/Divider';
5+
6+
import DrawerItemsList from '../DrawerItemsList';
7+
8+
import styles from './styles';
9+
10+
class StandardDrawer extends React.PureComponent {
11+
static propTypes = {
12+
secondList: PropTypes.arrayOf(PropTypes.shape({})),
13+
firstList: PropTypes.arrayOf(PropTypes.shape({})),
14+
classes: PropTypes.shape({}),
15+
};
16+
17+
static defaultProps = {
18+
firstList: null,
19+
secondList: null,
20+
};
21+
render() {
22+
const { firstList, secondList, classes } = this.props;
23+
return (
24+
<div className={classes.wrapper}>
25+
{firstList ? <DrawerItemsList items={firstList} /> : null}
26+
{firstList && secondList ? <Divider /> : null}
27+
{secondList ? <DrawerItemsList items={secondList} /> : null}
28+
</div>
29+
);
30+
}
31+
}
32+
33+
export default withStyles(styles)(StandardDrawer);
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import StandardDrawer from './StandardDrawer';
2+
3+
export default StandardDrawer;
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export default {
2+
wrapper: {
3+
width: '100%',
4+
},
5+
};

0 commit comments

Comments
 (0)