Skip to content

Commit 91e9ecb

Browse files
committed
refactored to accomodate a second drawer
1 parent af78d58 commit 91e9ecb

File tree

1 file changed

+35
-32
lines changed

1 file changed

+35
-32
lines changed

src/components/Layout/Layout.jsx

Lines changed: 35 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -23,32 +23,35 @@ class Layout extends React.PureComponent {
2323
stickyFooter: PropTypes.bool,
2424
footerContent: PropTypes.element,
2525
appBarContent: PropTypes.element,
26-
drawerOpen: PropTypes.bool.isRequired,
27-
onDrawerOpenChange: PropTypes.func,
28-
drawerContent: PropTypes.element,
26+
leftDrawerOpen: PropTypes.bool.isRequired,
27+
onLeftDrawerOpenChange: PropTypes.func,
28+
leftDrawerContent: PropTypes.element,
29+
leftDrawerType: PropTypes.string,
30+
leftDrawerUnder: PropTypes.bool,
2931
appBarProps: PropTypes.shape({}),
30-
drawerProps: PropTypes.shape({}),
32+
leftDrawerProps: PropTypes.shape({}),
3133
footerProps: PropTypes.shape({}),
34+
width: PropTypes.string,
3235
};
3336

3437
static defaultProps = {
3538
title: '',
3639
appBarPosition: 'fixed',
3740
stickyFooter: false,
38-
drawerOpen: false,
39-
drawerUnder: false,
41+
leftDrawerOpen: false,
42+
leftDrawerUnder: false,
4043
};
4144

42-
handleDrawerClose = () => {
43-
if (!this.props.onDrawerOpenChange) return;
45+
handleLeftDrawerClose = () => {
46+
if (!this.props.onLeftDrawerOpenChange) return;
4447

45-
this.props.onDrawerOpenChange(false);
48+
this.props.onLeftDrawerOpenChange(false);
4649
};
4750

48-
toggleDrawer = () => {
49-
if (!this.props.onDrawerOpenChange) return;
51+
toggleLeftDrawer = () => {
52+
if (!this.props.onLeftDrawerOpenChange) return;
5053

51-
this.props.onDrawerOpenChange(!this.props.drawerOpen);
54+
this.props.onLeftDrawerOpenChange(!this.props.leftDrawerOpen);
5255
};
5356

5457
render() {
@@ -59,11 +62,11 @@ class Layout extends React.PureComponent {
5962
appBarContent,
6063
appBarPosition,
6164
appBarProps,
62-
drawerContent,
63-
drawerOpen,
64-
drawerType,
65-
drawerUnder,
66-
drawerProps,
65+
leftDrawerContent,
66+
leftDrawerOpen,
67+
leftDrawerType,
68+
leftDrawerUnder,
69+
leftDrawerProps,
6770
footerContent,
6871
stickyFooter,
6972
footerProps,
@@ -78,8 +81,8 @@ class Layout extends React.PureComponent {
7881

7982
const mainShift =
8083
!smallScreen &&
81-
(drawerType === 'permanent' ||
82-
(drawerOpen && drawerType === 'persistent'));
84+
(leftDrawerType === 'permanent' ||
85+
(leftDrawerOpen && leftDrawerType === 'persistent'));
8386

8487
const mainClassnames = classNames(
8588
classes.main,
@@ -90,40 +93,40 @@ class Layout extends React.PureComponent {
9093

9194
const appBarShift =
9295
!smallScreen &&
93-
(!drawerUnder &&
94-
((drawerOpen && drawerType === 'persistent') ||
95-
drawerType === 'permanent'));
96+
(!leftDrawerUnder &&
97+
((leftDrawerOpen && leftDrawerType === 'persistent') ||
98+
leftDrawerType === 'permanent'));
9699

97100
const appBarClassnames = classNames(classes.appBar, {
98101
[`${classes.appBarShift}`]: appBarShift,
99102
});
100103

101104
const drawerPaperClassnames = classNames(classes.drawerPaper, {
102-
[`${classes.drawerPaperUnder}`]: !smallScreen && drawerUnder,
105+
[`${classes.drawerPaperUnder}`]: !smallScreen && leftDrawerUnder,
103106
});
104107

105108
return (
106109
<div className={classes.layout}>
107110
<AppBar
108111
position={appBarPosition}
109-
onIconClick={this.toggleDrawer}
112+
onIconClick={this.toggleLeftDrawer}
110113
className={appBarClassnames}
111114
{...appBarProps}
112115
>
113116
{appBarContent}
114117
</AppBar>
115-
{drawerContent ? (
118+
{leftDrawerContent ? (
116119
<Drawer
117-
open={drawerOpen}
118-
onRequestClose={this.handleDrawerClose}
119-
type={!smallScreen && drawerType}
120+
open={leftDrawerOpen}
121+
onRequestClose={this.handleLeftDrawerClose}
122+
type={!smallScreen && leftDrawerType}
120123
classes={{ paper: drawerPaperClassnames }}
121-
{...drawerProps}
124+
{...leftDrawerProps}
122125
>
123-
{!smallScreen && drawerUnder ? (
126+
{!smallScreen && leftDrawerUnder ? (
124127
<div className={classes.drawerHeader} />
125128
) : null}
126-
{drawerContent}
129+
{leftDrawerContent}
127130
</Drawer>
128131
) : null}
129132
<main className={mainClassnames}>{children}</main>
@@ -136,5 +139,5 @@ class Layout extends React.PureComponent {
136139
}
137140

138141
export default controllable(compose(withStyles(styles), withWidth())(Layout), [
139-
'drawerOpen',
142+
'leftDrawerOpen',
140143
]);

0 commit comments

Comments
 (0)