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