1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
4 import * as React from "react";
5 import { Popover, List, ListItem, ListItemIcon, ListItemText, Divider } from "@material-ui/core";
6 import { DefaultTransformOrigin } from "../popover/helpers";
8 export interface ContextMenuItem {
13 export type ContextMenuItemGroup = ContextMenuItem[];
15 export interface ContextMenuProps {
16 anchorEl?: HTMLElement;
17 items: ContextMenuItemGroup[];
18 onItemClick: (action: ContextMenuItem) => void;
22 export default class ContextMenu extends React.PureComponent<ContextMenuProps> {
24 const { anchorEl, items, onClose, onItemClick } = this.props;
29 transformOrigin={DefaultTransformOrigin}
30 anchorOrigin={DefaultTransformOrigin}
31 onContextMenu={this.handleContextMenu}>
33 {items.map((group, groupIndex) =>
34 <React.Fragment key={groupIndex}>
35 {group.map((item, actionIndex) =>
39 onClick={() => onItemClick(item)}>
41 <i className={item.icon} />
47 {groupIndex < items.length - 1 && <Divider />}
53 handleContextMenu = (event: React.MouseEvent<HTMLElement>) => {
54 event.preventDefault();