Skip to content

mblode/dnd-grid

Repository files navigation

dnd-grid – A drag-and-drop, resizable grid layout for React

npm version MIT Licence

  • Drag + resize: smooth interactions with weighted drag physics and configurable handles.
  • Responsive layouts: breakpoint helpers and automatic container width measurement.
  • Compaction + constraints: packing strategies, collision handling, and bounds control.
  • Edge auto-scroll: keep dragging near scroll boundaries.
  • Touch-friendly: configurable touch drag delay.
  • Styling defaults + hooks: base.css/theme.css, CSS variables, data attributes, and item state hook.
  • Accessible grid: grid semantics plus configurable aria-live announcements.
  • Headless core engine: @dnd-grid/core handles layout math with a React adapter on top.
  • Layout persistence: add/remove widgets and serialize/restore layouts.

Documentation

To learn how to get started with dnd-grid, visit the official documentation website for API docs, guides, and examples.

Visit dnd-grid documentation

Demo

Try the live demo.

View dnd-grid demo

Installation

npm install @dnd-grid/react

Add the styles to your global CSS:

@import "@dnd-grid/react/styles.css";

Usage

import { DndGrid, type Layout } from "@dnd-grid/react";

<DndGrid layout={layout} cols={12} rowHeight={50} onLayoutChange={setLayout}>
  {layout.map((item) => (
    <div key={item.id}>{item.id}</div>
  ))}
</DndGrid>;

Acknowledgements

Based on react-grid-layout by Samuel Reed (STRML). Differences: weighted drag physics, better styling defaults (base.css/theme.css, CSS vars, data attributes), touch drag delay, edge auto-scroll, item state hook.

Licence

MIT

About

A draggable and resizable grid layout for React.

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

 
 
 

Contributors