Warning alert:Deprecated feature
This implementation has been deprecated in favor of a newer implementation, and is no longer getting maintained or enhanced. To learn more about the process, visit our about page.
You can use the <DragDrop> component to move items in or between lists. The <DragDrop> component should contain <Droppable> components which contain <Draggable> components.
import React from 'react';
import { DragDrop, Draggable, Droppable } from '@patternfly/react-core';
const DragDropCodeSample: React.FunctionComponent = () => (
<DragDrop>
{' '}
{/* DragDrop houses the context for dragging and dropping */}
<Droppable>
<Draggable>You can put anything here! It will be wrapped in a styled div.</Draggable>
<Draggable>You can have as many Draggables as you like.</Draggable>
</Droppable>
<Droppable>
{' '}
{/* You can also have many droppables! */}
<Draggable />
</Droppable>
</DragDrop>
);Note: Keyboard accessibility and screen reader accessibility are still in development.
Examples
Basic
item 0
item 1
item 2
item 3
item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4
item 5
item 6
item 7
item 8
item 9
Multiple lists
item 0
item 1
item 2
item 3
item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4 item 4
item 5
item 6
item 7
item 8
item 9
item 10
item 11
item 12
item 13
item 14
Props
DragDrop
| Name | Type | Default | Description |
|---|---|---|---|
| children | React.ReactNode | Potentially Droppable and Draggable children | |
| onDrag | (source: DraggableItemPosition) => boolean | () => true | Callback for drag event. Return true to allow drag, false to disallow. |
| onDragMove | (source: DraggableItemPosition, dest?: DraggableItemPosition) => void | () => {} | Callback on mouse move while dragging. |
| onDrop | (source: DraggableItemPosition, dest?: DraggableItemPosition) => boolean | () => false | Callback for drop event. Return true to allow drop, false to disallow. |
Draggable
| Name | Type | Default | Description |
|---|---|---|---|
| children | React.ReactNode | Content rendered inside DragDrop | |
| className | string | Class to add to outer div | |
| hasNoWrapper | boolean | false | Don't wrap the component in a div. Requires passing a single child. |
| style | No type info | {} |
Droppable
| Name | Type | Default | Description |
|---|---|---|---|
| children | React.ReactNode | Content rendered inside DragDrop | |
| className | string | Class to add to outer div | |
| droppableId | string | 'defaultId' | Id to be passed back on drop events |
| hasNoWrapper | boolean | false | Don't wrap the component in a div. Requires passing a single child. |
| zone | string | 'defaultZone' | Name of zone that items can be dragged between. Should specify if there is more than one Droppable on the page. |
DraggableItemPosition
| Name | Type | Default | Description |
|---|---|---|---|
| droppableIdrequired | string | Parent droppableId | |
| indexrequired | number | Index of item in parent Droppable |
View source on GitHub
