import { SpeedDial, SpeedDialIcon, SpeedDialAction } from '@material-ui/lab'; import { MoreHoriz } from '@material-ui/icons'; import React, { useState } from 'react'; import { useTheme, createStyles, makeStyles } from '@material-ui/core'; import { useOriginConfiguration } from '../../utils/configuration'; export enum TableActionId { Claim = 0, PublishForSale = 1, Withdraw = 2, Deposit = 3 } export interface ITableAction { id?: TableActionId; name: string; icon: React.ReactNode; onClick: (rowId: string | number) => any; } interface IProps { actions: ITableAction[]; id: string; } export function Actions(props: IProps) { const { actions, id } = props; const [open, setOpen] = useState(false); const { styleConfig } = useOriginConfiguration(); const useStyles = makeStyles(() => createStyles({ speedDial: { position: 'absolute', bottom: 'calc(50% - 14px)', left: 0, right: 0 }, speedDialButton: { width: '28px', height: '28px', minHeight: '28px', backgroundColor: 'inherit', boxShadow: 'none', color: styleConfig.PRIMARY_COLOR }, speedDialIcon: { fontSize: '16px', backgroundColor: 'inherit' }, speedDialActionButton: { backgroundColor: styleConfig.PRIMARY_COLOR, color: 'white', '&:hover': { backgroundColor: styleConfig.PRIMARY_COLOR_DARK } }, speedDialActionTooltip: { color: 'white', backgroundColor: styleConfig.PRIMARY_COLOR, whiteSpace: 'nowrap' } }) ); const classes = useStyles(useTheme()); return ( } classes={{ icon: classes.speedDialIcon }} /> } onClose={() => setOpen(false)} onOpen={(event, reason) => { if (reason === 'focus') { return; } setOpen(true); }} open={open} className={classes.speedDial} > {actions.map((action) => ( action.onClick(id)} classes={{ fab: classes.speedDialActionButton, staticTooltipLabel: classes.speedDialActionTooltip }} /> ))} ); }