X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/f5e55e7a71f2fc2390d392af752c61b4d3135cb6..2cfd0d54bd21d257a2cea476d823ea63d9ce807f:/src/components/context-menu/context-menu.tsx diff --git a/src/components/context-menu/context-menu.tsx b/src/components/context-menu/context-menu.tsx index c892ba2616..95bbeafb4f 100644 --- a/src/components/context-menu/context-menu.tsx +++ b/src/components/context-menu/context-menu.tsx @@ -4,48 +4,54 @@ import * as React from "react"; import { Popover, List, ListItem, ListItemIcon, ListItemText, Divider } from "@material-ui/core"; import { DefaultTransformOrigin } from "../popover/helpers"; +import { IconType } from "../icon/icon"; -export interface ContextMenuAction { - name: string; - icon: string; - openCreateDialog?: boolean; +export interface ContextMenuItem { + name?: string | React.ComponentType; + icon?: IconType; + component?: React.ComponentType; } -export type ContextMenuActionGroup = ContextMenuAction[]; +export type ContextMenuItemGroup = ContextMenuItem[]; -export interface ContextMenuProps { +export interface ContextMenuProps { anchorEl?: HTMLElement; - actions: ContextMenuActionGroup[]; - onActionClick: (action: ContextMenuAction) => void; + items: ContextMenuItemGroup[]; + open: boolean; + onItemClick: (action: ContextMenuItem) => void; onClose: () => void; } -export default class ContextMenu extends React.PureComponent> { +export class ContextMenu extends React.PureComponent { render() { - const { anchorEl, actions, onClose, onActionClick } = this.props; + const { anchorEl, items, open, onClose, onItemClick } = this.props; return - {actions.map((group, groupIndex) => + {items.map((group, groupIndex) => - {group.map((action, actionIndex) => + {group.map((item, actionIndex) => onActionClick(action)}> - - - - - {action.name} - + onClick={() => onItemClick(item)}> + {item.icon && + + + } + {item.name && + + {item.name} + } + {item.component && + } )} - {groupIndex < actions.length - 1 && } + {groupIndex < items.length - 1 && } )} ;