From aa1a604b56424d8a956e212282b5cbf82671d09f Mon Sep 17 00:00:00 2001 From: 2ue Date: Tue, 20 Aug 2024 15:35:23 +0800 Subject: [PATCH 1/2] add onstart callback fetaure --- src/useDraggable.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/useDraggable.ts b/src/useDraggable.ts index 8e12db8b..0ca6e785 100644 --- a/src/useDraggable.ts +++ b/src/useDraggable.ts @@ -92,7 +92,7 @@ export interface UseDraggableReturn extends Pick { } export interface UseDraggableOptions extends Options { - clone?: (element: T) => T + clone?: (element: T) => T | Promise | false immediate?: boolean customUpdate?: (event: SortableEvent) => void } @@ -152,9 +152,12 @@ export function useDraggable(...args: any[]): UseDraggableReturn { * Element dragging started * @param {DraggableEvent} evt - DraggableEvent */ - function onStart(evt: DraggableEvent) { + async function onStart(evt: DraggableEvent) { const data = unref(unref(list)?.[evt.oldIndex!]) - const clonedData = clone(data) + const clonedData = await clone(data) + if (clonedData === false) { + return; + } setCurrentData(data, clonedData) evt.item[CLONE_ELEMENT_KEY] = clonedData } From f12a55706897a82cced72bdc0e2645a8afc2bf70 Mon Sep 17 00:00:00 2001 From: 2ue Date: Wed, 21 Aug 2024 10:25:57 +0800 Subject: [PATCH 2/2] Ensure that the resolve method to update --- src/useDraggable.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/useDraggable.ts b/src/useDraggable.ts index 0ca6e785..3855e77c 100644 --- a/src/useDraggable.ts +++ b/src/useDraggable.ts @@ -152,14 +152,15 @@ export function useDraggable(...args: any[]): UseDraggableReturn { * Element dragging started * @param {DraggableEvent} evt - DraggableEvent */ - async function onStart(evt: DraggableEvent) { + function onStart(evt: DraggableEvent) { const data = unref(unref(list)?.[evt.oldIndex!]) - const clonedData = await clone(data) - if (clonedData === false) { - return; - } - setCurrentData(data, clonedData) - evt.item[CLONE_ELEMENT_KEY] = clonedData + Promise.resolve(clone(data)).then(clonedData => { + if (clonedData === false) { + return; + } + setCurrentData(data, clonedData) + evt.item[CLONE_ELEMENT_KEY] = clonedData + }) } /**