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[];
button
key={actionIndex}
onClick={() => onItemClick(item)}>
- <ListItemIcon>
- <item.icon />
- </ListItemIcon>
- <ListItemText>
- {typeof item.name === "string"
- ? item.name
- : <item.name />}
- </ListItemText>
+ {item.icon &&
+ <ListItemIcon>
+ <item.icon />
+ </ListItemIcon>}
+ {item.name &&
+ <ListItemText>
+ {item.name}
+ </ListItemText>}
+ {item.component &&
+ <item.component />}
</ListItem>)}
{groupIndex < items.length - 1 && <Divider />}
</React.Fragment>)}
isFavorite: state.contextMenu.resource && state.favorites[state.contextMenu.resource.uuid] === true
});
-export const FavoriteActionText = connect(mapStateToProps)((props: { isFavorite: boolean }) =>
- props.isFavorite
- ? <>Remove from favorites</>
- : <>Add to favorites</>);
-
-export const FavoriteActionIcon = connect(mapStateToProps)((props: { isFavorite: boolean }) =>
- props.isFavorite
- ? <RemoveFavoriteIcon />
- : <AddFavoriteIcon />);
+export const ToggleFavoriteAction = connect(mapStateToProps)((props: { isFavorite: boolean }) =>
+ <>
+ <ListItemIcon>
+ {props.isFavorite
+ ? <RemoveFavoriteIcon />
+ : <AddFavoriteIcon />}
+ </ListItemIcon>
+ <ListItemText>
+ {props.isFavorite
+ ? <>Remove from favorites</>
+ : <>Add to favorites</>}
+ </ListItemText>
+ </>);
import { ContextMenuActionSet } from "../context-menu-action-set";
import { projectActions } from "../../../store/project/project-action";
-import { ShareIcon, NewProjectIcon } from "../../../components/icon/icon";
-import { FavoriteActionText, FavoriteActionIcon } from "./favorite-action";
-import { favoritesActions, toggleFavorite } from "../../../store/favorites/favorites-actions";
+import { NewProjectIcon } from "../../../components/icon/icon";
+import { ToggleFavoriteAction } from "./favorite-action";
+import { toggleFavorite } from "../../../store/favorites/favorites-actions";
export const projectActionSet: ContextMenuActionSet = [[{
icon: NewProjectIcon,
dispatch(projectActions.OPEN_PROJECT_CREATOR({ ownerUuid: resource.uuid }));
}
}, {
- name: FavoriteActionText,
- icon: FavoriteActionIcon,
+ component: ToggleFavoriteAction,
execute: (dispatch, resource) => {
dispatch<any>(toggleFavorite(resource.uuid));
}
import { ContextMenuActionSet } from "../context-menu-action-set";
import { projectActions } from "../../../store/project/project-action";
import { NewProjectIcon } from "../../../components/icon/icon";
-import { FavoriteActionText, FavoriteActionIcon } from "./favorite-action";
export const rootProjectActionSet: ContextMenuActionSet = [[{
icon: NewProjectIcon,