@@ -65,6 +65,7 @@ const emit = defineEmits<{
6565
6666const attrs = useAttrs ();
6767
68+ const isDragging = ref (false );
6869const containerRef = ref <HTMLElement | null >(null );
6970const sortable = ref <Sortable | null >(null );
7071const getKey = computed (() => {
@@ -73,16 +74,30 @@ const getKey = computed(() => {
7374 return props .itemKey ;
7475});
7576
76- defineExpose ({ containerRef , sortable: <Ref <Sortable | null >>sortable });
77+ defineExpose ({
78+ containerRef ,
79+ sortable: <Ref <Sortable | null >>sortable ,
80+ isDragging ,
81+ });
7782
7883watch (containerRef , (newDraggable ) => {
7984 if (newDraggable ) {
8085 sortable .value = new Sortable (newDraggable , {
8186 ... props .options ,
8287 onChoose : (event ) => emit (" choose" , event ),
8388 onUnchoose : (event ) => emit (" unchoose" , event ),
84- onStart : (event ) => emit (" start" , event ),
85- onEnd : (event ) => emit (" end" , event ),
89+ onStart : (event ) => {
90+ isDragging .value = true ;
91+ emit (" start" , event );
92+ },
93+ onEnd : (event ) => {
94+ // This is a hack to move the event to the end of the event queue.
95+ // cf this issue: https://github.com/SortableJS/Sortable/issues/1184
96+ setTimeout (() => {
97+ isDragging .value = false ;
98+ emit (" end" , event );
99+ });
100+ },
86101 onAdd : (event ) => emit (" add" , event ),
87102 onUpdate : (event ) => emit (" update" , event ),
88103 onSort : (event ) => emit (" sort" , event ),
@@ -117,7 +132,6 @@ onUnmounted(() => {
117132 sortable .value = null ;
118133 }
119134});
120-
121135 </script >
122136
123137<template >
0 commit comments