@vue-dnd-kit/core

Core functionality for Vue DnD Kit - a lightweight Vue 3 library for building performant and accessible drag and drop interfaces
331,461 257
Install
npm install @vue-dnd-kit/core
Latest Version:2.4.7
Vue:3
License:MIT
Last Updated:Jul 14, 2026
Links: GitHub  ·  npm
Maintainer: zizigy
Vue DnD Kit

Headless drag-and-drop for Vue 3.
No imposed markup. No hard-coded styles. Just logic.


npm npm downloads license Vue 3


Documentation  ·  Examples  ·  Changelog


Features

  • Composable API — makeDraggable and makeDroppable attach to any element via a template ref. No wrapper components, no render props.
  • Smart helpers — suggestSort, suggestSwap, suggestCopy, suggestRemove handle positioning and array manipulation, so you never have to write splice logic by hand.
  • Multi-drag — makeSelectionArea lets users select multiple items and drag them together. All helpers handle multi-drag natively.
  • Nested zones — trees, Kanban boards, and nested droppables work out of the box. The library automatically resolves the correct target array based on cursor position.
  • Full preview control — DragPreview exposes a default slot. Wrap it in <Transition>, AnimatePresence from motion-v, GSAP, or anything else. Per-item custom previews via render option.
  • Keyboard navigation — built-in with configurable keys and step size.
  • Async drop — return a Promise from onDrop to pause the operation while waiting for user confirmation. Preview stays visible until resolved.
  • Auto-scroll — viewport and individual scrollable containers, with configurable threshold and speed.
  • Constraints — restrict movement to an axis or keep the preview inside a container boundary.
  • Zero dependencies — Vue 3 as the only peer dependency.
  • Tree-shakeable — import only what you use.
  • Full TypeScript — everything is typed.

Install

npm install @vue-dnd-kit/core
# or
yarn add @vue-dnd-kit/core
# or
pnpm add @vue-dnd-kit/core

Peer dependency: Vue ^3.5


Quick start

<!-- App.vue -->
<script setup lang="ts">
  import { ref, useTemplateRef } from 'vue';
  import { DnDProvider, makeDroppable } from '@vue-dnd-kit/core';
  import SortableItem from './SortableItem.vue';

  const items = ref(['One', 'Two', 'Three', 'Four']);
  const zoneRef = useTemplateRef<HTMLElement>('zone');

  makeDroppable(zoneRef, {
    events: {
      onDrop(e) {
        const r = e.helpers.suggestSort('vertical');
        if (r) items.value = r.targetItems as string[];
      },
    },
  }, () => items.value);
</script>

<template>
  <DnDProvider>
    <div ref="zone" class="list">
      <SortableItem
        v-for="(item, i) in items"
        :key="item"
        :index="i"
        :items="items"
      >
        {{ item }}
      </SortableItem>
    </div>
  </DnDProvider>
</template>
<!-- SortableItem.vue -->
<script setup lang="ts">
  import { useTemplateRef } from 'vue';
  import { makeDraggable } from '@vue-dnd-kit/core';

  const props = defineProps<{ index: number; items: string[] }>();
  const el = useTemplateRef<HTMLElement>('el');
  const { isDragging } = makeDraggable(el, {}, () => [props.index, props.items]);
</script>

<template>
  <div ref="el" :style="{ opacity: isDragging ? 0 : 1 }">
    <slot />
  </div>
</template>

Packages

Package Description
@vue-dnd-kit/core Core library — composables, DnDProvider, DragPreview
@vue-dnd-kit/utilities Extra utility helpers

Documentation

Full docs with live examples: zizigy.github.io/vue-dnd-kit

Covers: sorting, swap, copy, multi-drag, trees, Kanban, custom preview, animations, keyboard navigation, async drop, constraints, auto-scroll and more.


Contributing

Issues and pull requests are welcome. For larger changes, please open an issue first to discuss the approach.


💛 Support

If vue-dnd-kit saves you time, consider supporting the project — it helps keep development going.

Telegram WebMoney: 836516027542


License

MIT © 2026 ZiZIGY

Related Packages

@vue-dnd-kit/utilities

Utilities for Vue DnD Kit - a lightweight Vue 3 library for building performant...

16,713 257
vue-multi-drag

Drag'n'Drop with multiple Elements. Provides a vue directive for draggable eleme...

756 4
vue-dndrop

Vue wrappers for drag and drop

560,182 233
vue-drag-n-drop

A simple kanban board where the items can be dragged and dropped from the list....

3,460 198

Version History

Version Released License
2.4.7 MIT
2.4.6 MIT
2.4.5 MIT
2.4.4 MIT
2.4.3 MIT
Pre-releases (46)
Version Released License
2.0.0-alpha10 MIT
2.0.0-alpha9 MIT
2.0.0-alpha8 MIT
2.0.0-alpha7 MIT
2.0.0-alpha6 MIT