import React, { DragEventHandler } from 'react'; import IconButton from '@mui/material/IconButton'; import Tooltip from '@mui/material/Tooltip'; import type { IconButtonProps } from '@mui/material/IconButton'; import type { MRT_TableInstance } from '..'; interface Props = {}> { iconButtonProps?: IconButtonProps; onDragStart: DragEventHandler; onDragEnd: DragEventHandler; table: MRT_TableInstance; } export const MRT_GrabHandleButton = = {}>({ iconButtonProps, onDragEnd, onDragStart, table, }: Props) => { const { options: { icons: { DragHandleIcon }, localization, }, } = table; return ( { e.stopPropagation(); iconButtonProps?.onClick?.(e); }} onDragStart={onDragStart} onDragEnd={onDragEnd} sx={(theme) => ({ cursor: 'grab', m: '0 -0.1rem', opacity: 0.5, p: '2px', transition: 'all 150ms ease-in-out', '&:hover': { backgroundColor: 'transparent', opacity: 1, }, '&:active': { cursor: 'grabbing', }, ...(iconButtonProps?.sx instanceof Function ? iconButtonProps?.sx(theme) : (iconButtonProps?.sx as any)), })} title={undefined} > ); };