// the find
Alfred-Skyblue/vue-draggable-plus
Universal Drag-and-Drop Component Supporting both Vue 3 and Vue 2
A Vue wrapper around SortableJS that supports Vue 2.7+ and Vue 3, exposing the same drag-and-drop functionality three ways: a component, a composable, and a directive. The real selling point is the target-container feature — you can point it at a specific DOM node inside a third-party component (like el-table) that doesn't expose slots at the root, something vuedraggable never handled well.
The three usage patterns (component/composable/directive) aren't just syntactic sugar — useDraggable returns start/destroy/pause handles you actually need for programmatic control. The target-container approach using a CSS selector to find the inner DOM node of opaque UI library components solves a genuine pain point that the original vuedraggable punted on. TypeScript types are present and cover the full SortableJS option surface including the gnarly group/pull/put callbacks. Docs include working examples for nested lists and table column reordering, which are the two cases most tutorials skip.
It's a thin wrapper with no original drag logic — if SortableJS has a bug, you're waiting on two maintainers to fix it. Last push was March 2026 but the issue tracker likely has stale bugs given the small contributor count (one person owns the whole repo). There's no built-in virtual list support, so dragging across very large lists will tank performance without you wiring in vue-virtual-scroller yourself. The directive API silently ignores return values so you can't call destroy() or pause() on it — you have to switch to useDraggable if you need lifecycle control, which isn't obvious from the docs.