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 theuseSortable composable:
Composable APIs
useDraggable
TheuseDraggable composable signature from /home/daytona/workspace/source/packages/vue/src/core/draggable/useDraggable.ts:17:
useDroppable
TheuseDroppable composable signature from /home/daytona/workspace/source/packages/vue/src/core/droppable/useDroppable.ts:16:
useSortable
TheuseSortable 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-memofor 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