import React, { MouseEvent, useState } from 'react'; import IconButton from '@mui/material/IconButton'; import Tooltip from '@mui/material/Tooltip'; import { MRT_RowActionMenu } from '../menus/MRT_RowActionMenu'; import { MRT_EditActionButtons } from './MRT_EditActionButtons'; import type { MRT_Cell, MRT_Row, MRT_TableInstance } from '..'; const commonIconButtonStyles = { height: '2rem', ml: '10px', opacity: 0.5, transition: 'opacity 150ms', width: '2rem', '&:hover': { opacity: 1, }, }; interface Props = {}> { cell: MRT_Cell; row: MRT_Row; table: MRT_TableInstance; } export const MRT_ToggleRowActionMenuButton = < TData extends Record = {}, >({ cell, row, table, }: Props) => { const { getState, options: { editingMode, enableEditing, icons: { EditIcon, MoreHorizIcon }, localization, renderRowActionMenuItems, renderRowActions, }, setEditingRow, } = table; const { editingRow } = getState(); const [anchorEl, setAnchorEl] = useState(null); const handleOpenRowActionMenu = (event: MouseEvent) => { event.stopPropagation(); event.preventDefault(); setAnchorEl(event.currentTarget); }; const handleStartEditMode = (event: MouseEvent) => { event.stopPropagation(); setEditingRow({ ...row }); setAnchorEl(null); }; return ( <> {renderRowActions ? ( renderRowActions({ cell, row, table }) ) : row.id === editingRow?.id && editingMode === 'row' ? ( ) : !renderRowActionMenuItems && (enableEditing instanceof Function ? enableEditing(row) : enableEditing) ? ( ) : renderRowActionMenuItems ? ( <> ) : null} ); };