1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import * as React from 'react';
6 import { Button, Grid, StyleRulesCallback, WithStyles, Menu, MenuItem } from '@material-ui/core';
7 import ChevronRightIcon from '@material-ui/icons/ChevronRight';
8 import { withStyles } from '@material-ui/core';
9 import { IconButton } from '@material-ui/core/es';
10 import { PopoverOrigin } from '@material-ui/core/Popover';
13 interface DropdownMenuDataProps {
15 icon: React.ComponentType,
19 type DropdownMenuProps = DropdownMenuDataProps;
21 class DropdownMenu extends React.Component<DropdownMenuProps> {
27 transformOrigin: PopoverOrigin = {
33 const { icon: Icon, id, children } = this.props;
34 const { anchorEl } = this.state;
38 aria-owns={anchorEl ? id : undefined}
41 onClick={this.handleOpen}
49 open={Boolean(anchorEl)}
50 onClose={this.handleClose}
51 onClick={this.handleClose}
52 anchorOrigin={this.transformOrigin}
53 transformOrigin={this.transformOrigin}
62 this.setState({ anchorEl: undefined })
65 handleOpen = (event: React.MouseEvent<HTMLButtonElement>) => {
66 this.setState({ anchorEl: event.currentTarget })
71 export default DropdownMenu