(input: UseSortableInput<T>)
| 26 | } |
| 27 | |
| 28 | export function useSortable<T extends Data = Data>(input: UseSortableInput<T>) { |
| 29 | const transition = computed(() => ({ |
| 30 | ...defaultSortableTransition, |
| 31 | ...toValue(input.transition), |
| 32 | })); |
| 33 | |
| 34 | const sortable = useInstance((manager) => { |
| 35 | const _input = toValueDeep(input); |
| 36 | |
| 37 | return new Sortable( |
| 38 | { |
| 39 | ..._input, |
| 40 | register: false, |
| 41 | transition: transition.value, |
| 42 | element: unrefElement(input.element), |
| 43 | handle: unrefElement(input.handle), |
| 44 | target: unrefElement(input.target), |
| 45 | }, |
| 46 | manager |
| 47 | ); |
| 48 | }); |
| 49 | const trackedSortable = useDeepSignal(sortable); |
| 50 | |
| 51 | watchEffect(() => { |
| 52 | sortable.value.element = unrefElement(input.element); |
| 53 | sortable.value.handle = unrefElement(input.handle); |
| 54 | |
| 55 | if (unrefElement(input.source)) { |
| 56 | sortable.value.source = unrefElement(input.source); |
| 57 | } |
| 58 | if (unrefElement(input.target)) { |
| 59 | sortable.value.target = unrefElement(input.target); |
| 60 | } |
| 61 | |
| 62 | sortable.value.id = toValue(input.id); |
| 63 | sortable.value.disabled = toValue(input.disabled) ?? false; |
| 64 | sortable.value.alignment = toValue(input.alignment); |
| 65 | sortable.value.plugins = toValue(input.plugins); |
| 66 | sortable.value.modifiers = toValue(input.modifiers); |
| 67 | sortable.value.sensors = toValue(input.sensors); |
| 68 | sortable.value.accept = toValue(input.accept); |
| 69 | sortable.value.type = toValue(input.type); |
| 70 | sortable.value.collisionPriority = toValue(input.collisionPriority); |
| 71 | sortable.value.transition = transition.value; |
| 72 | |
| 73 | if (toValue(input.data)) { |
| 74 | sortable.value.data = toValue(input.data)!; |
| 75 | } |
| 76 | }); |
| 77 | |
| 78 | watch( |
| 79 | [() => toValue(input.group), () => toValue(input.index)], |
| 80 | () => { |
| 81 | batch(() => { |
| 82 | sortable.value.group = toValue(input.group); |
| 83 | sortable.value.index = toValue(input.index); |
| 84 | }); |
| 85 | }, |
no test coverage detected