projects
/
arvados-workbench2.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
init-setup-shell-acc-dialog
[arvados-workbench2.git]
/
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 67fbb826f2cb1184df1df0c8ae1a38f17e3f9c80..4068251bdc04c82487cbf141fbdea910692496a8 100644
(file)
--- 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 {
import { IconType } from "../icon/icon";
export interface ContextMenuItem {
- name: string | React.ComponentType;
- icon: React.ComponentType<any>;
+ name?: string | React.ComponentType;
+ icon?: IconType;
+ component?: React.ComponentType<any>;
}
export type ContextMenuItemGroup = ContextMenuItem[];
}
export type ContextMenuItemGroup = ContextMenuItem[];
@@
-16,16
+17,17
@@
export type ContextMenuItemGroup = ContextMenuItem[];
export interface ContextMenuProps {
anchorEl?: HTMLElement;
items: ContextMenuItemGroup[];
export interface ContextMenuProps {
anchorEl?: HTMLElement;
items: ContextMenuItemGroup[];
+ open: boolean;
onItemClick: (action: ContextMenuItem) => void;
onClose: () => void;
}
export class ContextMenu extends React.PureComponent<ContextMenuProps> {
render() {
onItemClick: (action: ContextMenuItem) => void;
onClose: () => void;
}
export class ContextMenu extends React.PureComponent<ContextMenuProps> {
render() {
- const { anchorEl, items, onClose, onItemClick } = this.props;
+ const { anchorEl, items, o
pen, o
nClose, onItemClick } = this.props;
return <Popover
anchorEl={anchorEl}
return <Popover
anchorEl={anchorEl}
- open={
!!anchorEl
}
+ open={
open
}
onClose={onClose}
transformOrigin={DefaultTransformOrigin}
anchorOrigin={DefaultTransformOrigin}
onClose={onClose}
transformOrigin={DefaultTransformOrigin}
anchorOrigin={DefaultTransformOrigin}
@@
-34,19
+36,23
@@
export class ContextMenu extends React.PureComponent<ContextMenuProps> {
{items.map((group, groupIndex) =>
<React.Fragment key={groupIndex}>
{group.map((item, actionIndex) =>
{items.map((group, groupIndex) =>
<React.Fragment key={groupIndex}>
{group.map((item, actionIndex) =>
- <ListItem
- button
- key={actionIndex}
- onClick={() => onItemClick(item)}>
- <ListItemIcon>
- <item.icon />
- </ListItemIcon>
- <ListItemText>
- {typeof item.name === "string"
- ? item.name
- : <item.name />}
- </ListItemText>
- </ListItem>)}
+ item.component
+ ? <item.component
+ key={actionIndex}
+ onClick={() => onItemClick(item)} />
+ : <ListItem
+ button
+ key={actionIndex}
+ onClick={() => onItemClick(item)}>
+ {item.icon &&
+ <ListItemIcon>
+ <item.icon />
+ </ListItemIcon>}
+ {item.name &&
+ <ListItemText>
+ {item.name}
+ </ListItemText>}
+ </ListItem>)}
{groupIndex < items.length - 1 && <Divider />}
</React.Fragment>)}
</List>
{groupIndex < items.length - 1 && <Divider />}
</React.Fragment>)}
</List>