X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/c1b2cf95d7b5e1da32e59e43b745b625120e16cf..b1a6da4a288560a87e0e38ad2fd73fb227e3fc66:/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 67fbb826..4068251b 100644 --- a/src/components/context-menu/context-menu.tsx +++ b/src/components/context-menu/context-menu.tsx @@ -7,8 +7,9 @@ import { DefaultTransformOrigin } from "../popover/helpers"; import { IconType } from "../icon/icon"; export interface ContextMenuItem { - name: string | React.ComponentType; - icon: React.ComponentType; + name?: string | React.ComponentType; + icon?: IconType; + component?: React.ComponentType; } export type ContextMenuItemGroup = ContextMenuItem[]; @@ -16,16 +17,17 @@ export type ContextMenuItemGroup = ContextMenuItem[]; export interface ContextMenuProps { anchorEl?: HTMLElement; items: ContextMenuItemGroup[]; + open: boolean; onItemClick: (action: ContextMenuItem) => void; onClose: () => void; } export class ContextMenu extends React.PureComponent { render() { - const { anchorEl, items, onClose, onItemClick } = this.props; + const { anchorEl, items, open, onClose, onItemClick } = this.props; return { {items.map((group, groupIndex) => {group.map((item, actionIndex) => - onItemClick(item)}> - - - - - {typeof item.name === "string" - ? item.name - : } - - )} + item.component + ? onItemClick(item)} /> + : onItemClick(item)}> + {item.icon && + + + } + {item.name && + + {item.name} + } + )} {groupIndex < items.length - 1 && } )}