Explore Templates

Draggable

Drag between these two containers. Note how the stuff gets inserted near the mouse pointer? Great stuff.

Basic example

Item1

Item2

Item3

Item4

Item5

Item6

Item7

Item8

Item9

import React, { useState } from 'react';
import { Container } from 'react-bootstrap';
import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';
import { columnsFromBackend } from './DataList';

function ReactBeautifulDnd() {
  const [columns, setColumns] = useState(columnsFromBackend);
  const onDragEnd = (result, columns, setColumns) => {
    if (!result.destination) return;
    const { source, destination } = result;
    if (source.droppableId !== destination.droppableId) {
      const sourceColumn = columns[source.droppableId];
      const destColumn = columns[destination.droppableId];
      const sourceItems = [...sourceColumn.items];
      const destItems = [...destColumn.items];
      const [removed] = sourceItems.splice(source.index, 1);
      destItems.splice(destination.index, 0, removed);
      setColumns({
        ...columns,
        [source.droppableId]: {
          ...sourceColumn,
          items: sourceItems,
        },
        [destination.droppableId]: {
          ...destColumn,
          items: destItems,
        },
      });
    } else {
      const column = columns[source.droppableId];
      const copiedItems = [...column.items];
      const [removed] = copiedItems.splice(source.index, 1);
      copiedItems.splice(destination.index, 0, removed);
      setColumns({
        ...columns,
        [source.droppableId]: {
          ...column,
          items: copiedItems,
        },
      });
    }
  };
  return (
     <DragDropContext
      onDragEnd={(result) => onDragEnd(result, columns, setColumns)}
    >
       <Container>
         <TaskColumnStyles>
          {Object.entries(columns).map(([columnId, column], index) => {
            return (
               <Droppable key={columnId} droppableId={columnId}>
                {(provided, snapshot) => (
                   <TaskList
                    ref={provided.innerRef}
                    {...provided.droppableProps}
                  >
                    {column.items.map((item, index) => (
                      <Draggable key={item.id} draggableId={item.id} index={index}>
                       {(provided) => (
                             <div
                                ref={provided.innerRef}
                                {...provided.draggableProps}
                                {...provided.dragHandleProps}
                            >
                                 <TaskInformation>
                                     <p>{item.Task} </p>
                                 </TaskInformation>
                             </div>
                        )}
                     </Draggable>
                    ))}
                    {provided.placeholder}
                   </TaskList>
                )}
               </Droppable>
            );
          })}
         </TaskColumnStyles>
       </Container>
     </DragDropContext>
  );
}

export default ReactBeautifulDnd;
 
<!doctype html>Nubra UI - A Bootstrap based library of modern, reusable and flexible components designed specially for SaaS web applications.
<!doctype html>Nubra UI - A Bootstrap based library of modern, reusable and flexible components designed specially for SaaS web applications.
<!doctype html>Nubra UI - A Bootstrap based library of modern, reusable and flexible components designed specially for SaaS web applications.
<!doctype html>Nubra UI - A Bootstrap based library of modern, reusable and flexible components designed specially for SaaS web applications.