import clsx from 'clsx'; import classes from './MRT_ToolbarDropZone.module.css'; import { type DragEvent, useEffect } from 'react'; import { Flex, type FlexProps, Text, Transition } from '@mantine/core'; import { type MRT_RowData, type MRT_TableInstance } from '../../types'; interface Props extends FlexProps { table: MRT_TableInstance; } export const MRT_ToolbarDropZone = ({ table, ...rest }: Props) => { 'use no memo'; const { getState, options: { enableGrouping, localization }, setHoveredColumn, setShowToolbarDropZone, } = table; const { draggingColumn, grouping, hoveredColumn, showToolbarDropZone } = getState(); const handleDragEnter = (_event: DragEvent) => { setHoveredColumn({ id: 'drop-zone' }); }; useEffect(() => { if (table.options.state?.showToolbarDropZone !== undefined) { setShowToolbarDropZone( !!enableGrouping && !!draggingColumn && draggingColumn.columnDef.enableGrouping !== false && !grouping.includes(draggingColumn.id), ); } }, [enableGrouping, draggingColumn, grouping]); return ( {() => ( {localization.dropToGroupBy.replace( '{column}', draggingColumn?.columnDef?.header ?? '', )} )} ); };