import React, { useState } from "react"; import { makeStyles } from "@material-ui/core/styles"; import Tooltip from "@material-ui/core/Tooltip"; import IconButton from "@material-ui/core/IconButton"; import Menu from "@material-ui/core/Menu"; import MenuItem from "@material-ui/core/MenuItem"; import MoreHorizIcon from "@material-ui/icons/MoreHoriz"; const useStyles = makeStyles((theme) => ({ actionsContainer: { display: "flex", padding: "4px", }, moreIcon: { marginRight: "8px", }, iconGroup: { paddingLeft: theme.spacing(1), borderLeft: `1px solid ${theme.palette.grey[100]}`, }, })); interface MenuItemAction { label: string; onClick: () => void; disabled: boolean; } interface IconButtonAction { icon: React.ReactElement; tooltip: string; onClick: () => void; disabled: boolean; } interface Props { menuItemActions: MenuItemAction[]; iconButtonActions: IconButtonAction[]; showIconButtons: boolean; } export default function TableActions(props: Props) { const classes = useStyles(); const [menuAnchor, setMenuAnchor] = useState(null); const handleMenuClick = (event: React.MouseEvent) => { setMenuAnchor(event.currentTarget); }; const closeMenu = () => setMenuAnchor(null); return (
{props.menuItemActions.map((action) => ( { action.onClick(); closeMenu(); }} disabled={action.disabled} > {action.label} ))} {props.showIconButtons && (
{props.iconButtonActions.map((action) => ( {action.icon} ))}
)}
); }