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, IconButton } from '@material-ui/core';
7 import { PopoverOrigin } from '@material-ui/core/Popover';
10 interface DropdownMenuDataProps {
12 icon: React.ComponentType;
16 type DropdownMenuProps = DropdownMenuDataProps;
18 class DropdownMenu extends React.Component<DropdownMenuProps> {
24 transformOrigin: PopoverOrigin = {
30 const { icon: Icon, id, children } = this.props;
31 const { anchorEl } = this.state;
35 aria-owns={anchorEl ? id : undefined}
38 onClick={this.handleOpen}
46 open={Boolean(anchorEl)}
47 onClose={this.handleClose}
48 onClick={this.handleClose}
49 anchorOrigin={this.transformOrigin}
50 transformOrigin={this.transformOrigin}
59 this.setState({ anchorEl: undefined });
62 handleOpen = (event: React.MouseEvent<HTMLButtonElement>) => {
63 this.setState({ anchorEl: event.currentTarget });
68 export default DropdownMenu;