Beautiful and accessible drag and drop for lists with React
npm install @hello-pangea/dnd

Beautiful and accessible drag and drop for lists with React





- Beautiful and natural movement of items ๐
- Accessible: powerful keyboard and screen reader support โฟ๏ธ
- Extremely performant ๐
- Clean and powerful api which is simple to get started with
- Plays extremely well with standard browser interactions
- Unopinionated styling
- No creation of additional wrapper dom nodes - flexbox and focus management friendly!
Alex Reardon has created a free course on egghead.io ๐ฅ (using react-beautiful-dnd) to help you get started with @hello-pangea/dnd as quickly as possible.

- Vertical lists โ - ๐ Rethinking drag and drop There are a lot of libraries out there that allow for drag and drop interactions within React. Most notable of these is the amazing - Installation > The ways in which somebody can start and control a drag - Mouse dragging ๐ญ - - - Virtual lists ๐พ - Engineering health Alex Reardon @alexandereardon > Alex is no longer personally maintaning this project. The other wonderful maintainers are carrying this project forward. - Gabriel Santerre @100terres - Bogdan Chadkin @IAmTrySound Thanks to Chromatic for providing the visual testing platform that helps us review UI changes and catch visual regressions.
- Horizontal lists โ
- Movement between lists (โค โ โค)
- Virtual list support ๐พ - unlocking 10,000 items @ 60fps
- Combining items
- Mouse ๐ญ, keyboard ๐นโฟ๏ธ and touch ๐๐ฑ (mobile, tablet and so on) support
- Multi drag support
- Incredible screen reader support โฟ๏ธ - we provide an amazing experience for english screen readers out of the box ๐ฆ. We also provide complete customisation control and internationalisation support for those who need it ๐
- Conditional dragging and conditional dropping
- Multiple independent lists on the one page
- Flexible item sizes - the draggable items can have different heights (vertical lists) or widths (horizontal lists)
- Add and remove items during a drag
- Compatible with semantic reordering - table pattern
- Auto scrolling - automatically scroll containers and the window as required during a drag (even with keyboard ๐ฅ)
- Custom drag handles - you can drag a whole item by just a part of it
- Able to move the dragging item to another element while dragging (clone, portal) - Reparenting your
- Create scripted drag and drop experiences ๐ฎ
- Allows extensions to support for any input type you like ๐น
- ๐ฒ Tree support through the @atlaskit/tree package
- A list can be a scroll container (without a scrollable parent) or be the child of a scroll container (that also does not have a scrollable parent)
- Independent nested lists - a list can be a child of another list, but you cannot drag items from the parent list into a child list
- Server side rendering (SSR) compatible
- Plays well with nested interactive elements by defaultMotivation ๐ค
@hello-pangea/dnd exists to create beautiful drag and drop for lists that anyone can use - even people who cannot see. For a good overview of the history and motivations of the project you can take a look at these external resources:
- ๐ง React podcast: fast, accessible and beautiful drag and dropNot for everyone โ๏ธ
react-dnd. It does an incredible job at providing a great set of drag and drop primitives which work especially well with the wildly inconsistent html5 drag and drop feature. @hello-pangea/dnd is a higher level abstraction specifically built for lists (vertical, horizontal, movement between lists, nested lists and so on). Within that subset of functionality @hello-pangea/dnd offers a powerful, natural and beautiful drag and drop experience. However, it does not provide the breadth of functionality offered by react-dnd. One shortcoming is that grid layouts are not supported (yet). So @hello-pangea/dnd might not be for you depending on what your use case is.Documentation ๐
$3
- Examples and samples
- Get started (This is using react-beautiful-dnd)
- Design principles
- Animations
- Accessibility
- Browser support$3
- Touch dragging ๐๐ฑ
- Keyboard dragging ๐นโฟ๏ธ
- Create your own sensor (allows for any input type as well as scripted experiences)$3
- _Wraps the part of your application you want to have drag and drop enabled for_
- - _An area that can be dropped into. Contains s_
- - _What can be dragged around_$3
responders - _onDragStart, onDragUpdate, onDragEnd and onBeforeDragStart_
- Combining s
- Common setup issues
- Using innerRef
- Setup problem detection and error recovery
- Rules for draggableId and droppableIds
- Browser focus retention
- Customising or skipping the drop animation
- Auto scrolling
- Controlling the screen reader
- Use the html5 doctype
- TypeScript: type information
- Dragging s
- Avoiding image flickering
- Non-visible preset styles
- How we detect scroll containers
- How we use dom events - _Useful if you need to build on top of @hello-pangea/dnd_
- Adding s during a drag (11.x behaviour) - _โ ๏ธ Advanced_
- Setting up Content Security Policy$3
- Multi drag
- Tables
- Reparenting a - _Using our cloning API or your own portal_$3
- Community and addons
- Release notes and changelog
- Upgrading
- Road map
- MediaCreator โ๏ธ
Maintainers ๐ ๏ธ
- Reece Carolan @Xhale1
- Many @Atlassian's have contributed to the original react-beautiful-dnd. _Atlassian is no longer involved with this project._Collaborators ๐ค
Thanks ๐ค
Dist Tags
beta18.0.0-beta.0latest18.0.1