The SolidJS adapter for @dnd-kit — a lightweight, performant, and extensible drag and drop toolkit. Built on top of @dnd-kit/dom.
npm install @dnd-kit/solidimport {createSignal} from 'solid-js';
import {DragDropProvider, useDraggable, useDroppable} from '@dnd-kit/solid';
function Draggable() {
const {ref} = useDraggable({id: 'draggable'});
return <button ref={ref}>Drag me</button>;
}
function Droppable(props) {
const {ref} = useDroppable({id: 'droppable'});
return <div ref={ref}>{props.children}</div>;
}
function App() {
const [parent, setParent] = createSignal(null);
return (
<DragDropProvider
onDragEnd={(event) => {
if (event.canceled) return;
setParent(event.operation.target?.id ?? null);
}}
>
{parent() == null ? <Draggable /> : null}
<Droppable>{parent() ? <Draggable /> : 'Drop here'}</Droppable>
</DragDropProvider>
);
}| Hook | Import | Description |
|---|---|---|
useDraggable |
@dnd-kit/solid |
Make an element draggable |
useDroppable |
@dnd-kit/solid |
Create a drop target |
useSortable |
@dnd-kit/solid/sortable |
Combine drag and drop with sorting |
<DragDropProvider>— Wraps your drag and drop interface, manages sensors, plugins, and events.<DragOverlay>— Renders a custom overlay element during drag operations.
Visit dndkit.com for full documentation, guides, and interactive examples.