import React, { MouseEvent, ReactNode, useState } from 'react'; import Button from '@mui/material/Button'; import Tooltip from '@mui/material/Tooltip'; import { MRT_Cell, MRT_TableInstance } from '..'; interface Props = {}> { cell: MRT_Cell; children: ReactNode; table: MRT_TableInstance; } export const MRT_CopyButton = = {}>({ cell, children, table, }: Props) => { const { options: { localization, muiTableBodyCellCopyButtonProps }, } = table; const { column, row } = cell; const { columnDef } = column; const [copied, setCopied] = useState(false); const handleCopy = (event: MouseEvent, text: unknown) => { event.stopPropagation(); navigator.clipboard.writeText(text as string); setCopied(true); setTimeout(() => setCopied(false), 4000); }; const mTableBodyCellCopyButtonProps = muiTableBodyCellCopyButtonProps instanceof Function ? muiTableBodyCellCopyButtonProps({ cell, column, row, table }) : muiTableBodyCellCopyButtonProps; const mcTableBodyCellCopyButtonProps = columnDef.muiTableBodyCellCopyButtonProps instanceof Function ? columnDef.muiTableBodyCellCopyButtonProps({ cell, column, row, table, }) : columnDef.muiTableBodyCellCopyButtonProps; const buttonProps = { ...mTableBodyCellCopyButtonProps, ...mcTableBodyCellCopyButtonProps, }; return ( ); };