-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path_side-menu.jsx
47 lines (42 loc) · 1.47 KB
/
_side-menu.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import React, { PureComponent } from 'react'
import { Button, Drawer, Toolbar } from 'react-md'
const drawerStyle = { minWidth: '400px', overflowY: 'auto', zIndex: 22 }
export default class extends PureComponent {
state = { menuOpen: false }
toggleMenu = () => this.setState({ menuOpen: !this.state.menuOpen })
closeMenu = () => this.setState({ menuOpen: false })
onVizChange = menuOpen => this.setState({ menuOpen })
render() {
const { menuOpen } = this.state
const { toggleMenu, closeMenu, onVizChange } = this
const { toolbarActions, toolbarTitle, menuPosition, style } = this.props
return (
<>
<Drawer
style={style ? Object.assign({ ...drawerStyle }, style) : drawerStyle}
visible={menuOpen}
mobileType={Drawer.DrawerTypes.TEMPORARY}
tabletType={Drawer.DrawerTypes.TEMPORARY}
desktopType={Drawer.DrawerTypes.TEMPORARY}
position={menuPosition || 'right'}
onVisibilityChange={onVizChange}
header={
<Toolbar
actions={toolbarActions}
title={toolbarTitle || ''}
titleStyle={{ color: 'black' }}
nav={
<Button className={'close-button'} icon swapTheming onClick={closeMenu}>
close
</Button>
}
/>
}
>
{this.props.children}
</Drawer>
{this.props.control({ toggleMenu })}
</>
)
}
}