YangYuGang
2025-03-08 1094c29e03ee0efc7121babda0532c8138aa801f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import { nextTick, unref } from 'vue';
import type { Ref } from 'vue';
import type { Options } from 'sortablejs';
 
export function useSortable(el?: HTMLElement | Ref<HTMLElement | undefined>, options?: Options) {
  function initSortable() {
    nextTick(async () => {
      el = unref(el);
 
      if (!el) return;
 
      const Sortable = (await import('sortablejs')).default;
      Sortable.create(el, {
        animation: 100,
        delay: 400,
        delayOnTouchOnly: true,
        ...options,
      });
    });
  }
 
  return { initSortable };
}