UNPKG

materialuiupgraded

Version:

Material-UI's workspace package

92 lines (82 loc) 2.69 kB
import React from 'react'; import PropTypes from 'prop-types'; import Button from '@material-ui/core/Button'; import ClickAwayListener from '@material-ui/core/ClickAwayListener'; import Grow from '@material-ui/core/Grow'; import Paper from '@material-ui/core/Paper'; import Popper from '@material-ui/core/Popper'; import MenuItem from '@material-ui/core/MenuItem'; import MenuList from '@material-ui/core/MenuList'; import { withStyles } from '@material-ui/core/styles'; const styles = theme => ({ root: { display: 'flex', }, paper: { marginRight: theme.spacing.unit * 2, }, }); class MenuListComposition extends React.Component { state = { open: false, }; handleToggle = () => { this.setState(state => ({ open: !state.open })); }; handleClose = event => { if (this.anchorEl.contains(event.target)) { return; } this.setState({ open: false }); }; render() { const { classes } = this.props; const { open } = this.state; return ( <div className={classes.root}> <Paper className={classes.paper}> <MenuList> <MenuItem>Profile</MenuItem> <MenuItem>My account</MenuItem> <MenuItem>Logout</MenuItem> </MenuList> </Paper> <div> <Button buttonRef={node => { this.anchorEl = node; }} aria-owns={open ? 'menu-list-grow' : null} aria-haspopup="true" onClick={this.handleToggle} > Toggle Menu Grow </Button> <Popper open={open} anchorEl={this.anchorEl} transition disablePortal> {({ TransitionProps, placement }) => ( <Grow {...TransitionProps} id="menu-list-grow" style={{ transformOrigin: placement === 'bottom' ? 'center top' : 'center bottom' }} > <Paper> <ClickAwayListener onClickAway={this.handleClose}> <MenuList> <MenuItem onClick={this.handleClose}>Profile</MenuItem> <MenuItem onClick={this.handleClose}>My account</MenuItem> <MenuItem onClick={this.handleClose}>Logout</MenuItem> </MenuList> </ClickAwayListener> </Paper> </Grow> )} </Popper> </div> </div> ); } } MenuListComposition.propTypes = { classes: PropTypes.object.isRequired, }; export default withStyles(styles)(MenuListComposition);