Usage
TheuseSortable composable combines draggable and droppable behavior with sorting logic. Import it from @dnd-kit/vue/sortable.
When passing props to
useSortable, wrap reactive values in computed() to maintain reactivity. Plain values like props.id are read once during setup and won’t update.Without the move helper
The example above uses themove helper from @dnd-kit/helpers, a convenience function that takes your items and a drag event and returns a new array with the item moved to its new position. It supports flat arrays and grouped records, handles canceled drags, and works with optimistic sorting out of the box.
If you need more control over state updates, you can manage state manually using the isSortable type guard and the sortable properties (initialIndex, index).
With optimistic sorting enabled (the default), you only need to handle the dragEnd event:
Learn more about optimistic sorting, type guards, and manual state management in the Sortable concepts page.
Input
All input properties accept plain values or Vue refs/getters (MaybeRefOrGetter).
A unique identifier for this sortable instance.
The current index of this item in the sorted list.
A template ref pointing to the sortable element.
The group this sortable belongs to. Used for sorting across multiple lists.
A template ref for a drag handle.
The types of draggable elements this sortable accepts.
The type of this sortable element.
An array of plugin descriptors for per-entity plugin configuration. Use
Plugin.configure() to create descriptors. For example, Feedback.configure({ feedback: 'clone' }).Animation transition configuration for sort operations.
Modifiers to apply to this sortable instance.
Sensors to use for this sortable instance.
A custom collision detection algorithm.
The collision priority of this sortable element. Higher values take precedence when multiple droppable elements overlap.
Whether the sortable is disabled.
Custom data to attach to this sortable instance.
Output
Whether this element is currently being dragged.
Whether this element is in the process of being dropped.
Whether this element is the source of the current drag operation.
Whether this element is currently a drop target.
The underlying
Sortable instance.