UNPKG

@kwiz/fluentui

Version:

KWIZ common controls for FluentUI

39 lines (36 loc) 1.06 kB
import { ConnectDropTarget, DropTargetMonitor, useDrop } from 'react-dnd'; import { iDraggedItemType, iDroppableProps } from './drag-drop.types'; export function useDroppable<DropType extends string, ItemType extends iDraggedItemType<DropType>>(props?: iDroppableProps<DropType, ItemType>): { canDrop: boolean; isOver: boolean; dropRef: ConnectDropTarget; } { const { acceptTypes, onItemDrop, onHover, onDrop, } = props || { acceptTypes: [], onItemDrop: () => { } }; const [{ canDrop, isOver }, dropRef] = useDrop({ accept: acceptTypes, drop: (item: ItemType) => { onItemDrop(item); onDrop?.(); }, hover: (item: ItemType) => { onHover?.(item); }, collect: (monitor: DropTargetMonitor) => ({ canDrop: monitor.canDrop(), isOver: monitor.isOver(), }), }); return { canDrop, isOver, dropRef, }; }