Skip to main content

Overview

The Vue adapter provides composables and components that integrate drag and drop functionality into your Vue 3 applications with full TypeScript support and reactivity.

Installation

Install the Vue package and its dependencies:
Requirements: Vue 3.5.0 or higher

Getting Started

1

Add DragDropProvider

Wrap your application with the DragDropProvider component:
2

Create draggable components

Use the useDraggable composable to make elements draggable:
3

Create droppable zones

Use the useDroppable composable to create drop targets:
4

Handle drag events

Listen to events via the provider emits:

Complete Example

Here’s a full drag and drop implementation:

Sortable Lists

Create sortable lists with the useSortable composable:

Composable APIs

useDraggable

The useDraggable composable signature from /home/daytona/workspace/source/packages/vue/src/core/draggable/useDraggable.ts:17:

useDroppable

The useDroppable composable signature from /home/daytona/workspace/source/packages/vue/src/core/droppable/useDroppable.ts:16:

useSortable

The useSortable composable signature from /home/daytona/workspace/source/packages/vue/src/sortable/useSortable.ts:28:

Advanced Features

Drag Handles

Use separate elements for dragging:

Modifiers

Constrain drag behavior:

Sensors

Customize activation:

Type Safety

Define custom data types:

Reactivity

All inputs to composables support reactive values:

Best Practices

  • Stable IDs: Use consistent, unique IDs for draggables and droppables
  • Reactive inputs: Leverage Vue’s reactivity for dynamic behavior
  • Template refs: Properly assign refs to element properties
  • Computed values: Use computed for derived drag/drop states
  • Performance: Use v-memo for large sortable lists

Next Steps

Sortable Lists

Build sortable lists with animations

Multiple Containers

Drag between multiple containers

Sensors

Configure interaction methods

Events

Handle drag and drop events