mirror of
https://github.com/jeffvli/feishin.git
synced 2026-06-10 22:32:17 +02:00
prevent item drop on smart playlists
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
|
||||
import { useEffect } from 'react';
|
||||
|
||||
import { DragData } from '/@/shared/types/drag-and-drop';
|
||||
|
||||
interface UseDragMonitorProps {
|
||||
canMonitor?: (source: DragData) => boolean;
|
||||
isEnabled?: boolean;
|
||||
onDragStart?: (source: DragData) => void;
|
||||
onDrop?: () => void;
|
||||
}
|
||||
|
||||
export const useDragMonitor = ({
|
||||
canMonitor,
|
||||
isEnabled = true,
|
||||
onDragStart,
|
||||
onDrop,
|
||||
}: UseDragMonitorProps) => {
|
||||
useEffect(() => {
|
||||
if (!isEnabled) return;
|
||||
|
||||
return monitorForElements({
|
||||
onDragStart: ({ source }) => {
|
||||
const data = source.data as unknown as DragData;
|
||||
if (canMonitor && !canMonitor(data)) return;
|
||||
onDragStart?.(data);
|
||||
},
|
||||
onDrop: () => {
|
||||
onDrop?.();
|
||||
},
|
||||
});
|
||||
}, [canMonitor, isEnabled, onDragStart, onDrop]);
|
||||
};
|
||||
Reference in New Issue
Block a user