From 2c46c5174d94bf7db4820d072b1f69b202799121 Mon Sep 17 00:00:00 2001 From: ManavMadhu Date: Fri, 24 Jul 2020 19:43:38 +0530 Subject: [PATCH] Added vertical dnd --- src/App.js | 18 +++++---- src/form.js | 15 +++++-- src/verticalform.js | 99 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 122 insertions(+), 10 deletions(-) create mode 100644 src/verticalform.js diff --git a/src/App.js b/src/App.js index f60b40e..7884ae6 100644 --- a/src/App.js +++ b/src/App.js @@ -2,16 +2,17 @@ import React, { useState } from 'react'; import { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd'; import { v4 as uuid } from 'uuid'; import Form from './form'; +import VertFrom from './verticalform'; import { BrowserRouter,Route, Link } from "react-router-dom"; import 'bootstrap/dist/css/bootstrap.min.css'; import { Button, Col } from 'reactstrap'; -const itemsFromBackend = [ +export const itemsFromBackend = [ {id: uuid(), content: 'First Task'}, {id: uuid(), content: 'Second Task'}, ] -const columnsFromBackend = +export const columnsFromBackend = { [uuid()]: { name: 'Lead In', @@ -40,6 +41,7 @@ const columnsFromBackend = }, }; + const onDragEnd = (result, columns, setColumns) => { if (!result.destination) return; const { source, destination } = result; @@ -76,7 +78,7 @@ const onDragEnd = (result, columns, setColumns) => { } }; -const handleAdd = (id, columns, setColumns, items, setItems) => { +export const handleAdd = (id, columns, setColumns, items, setItems) => { const column = columns[id]; console.log(column); @@ -111,10 +113,10 @@ function App() { return (

{column.name}

- + handleAdd(id, columns, setColumns, items, setItems)}>+
- + {(provided, snapshot) => { return (
-

Name

-
) }} @@ -160,13 +160,17 @@ function App() { ) }}
+
) + })}
+ +
diff --git a/src/form.js b/src/form.js index ced40e0..7e87ef5 100644 --- a/src/form.js +++ b/src/form.js @@ -1,22 +1,31 @@ import React, { useState } from 'react'; -import { Button, Modal, ModalHeader, ModalBody, ModalFooter , Col, Row, Form, FormGroup, Label, Input} from 'reactstrap'; +import { Button, Modal, ModalHeader, ModalBody, ModalFooter , Col, Row, Form, FormGroup, Label, Input , Alert} from 'reactstrap'; +import {itemsFromBackend as ifb , columnsFromBackend as cfb , handleAdd} from "./App"; const ModalExample = (props) => { const { className } = props; + + const [modal, setModal] = useState(false); const toggle = () => setModal(!modal); const closeBtn = ; + const check =() => { console.log(cfb);}; + + const [columns, setColumns] = useState(cfb); + const [items, setItems] = useState(ifb); + + return (
- Add Lead + Add Lead
@@ -89,7 +98,7 @@ const ModalExample = (props) => { {' '} - +
diff --git a/src/verticalform.js b/src/verticalform.js new file mode 100644 index 0000000..680676d --- /dev/null +++ b/src/verticalform.js @@ -0,0 +1,99 @@ +import React, { Component ,useState } from 'react'; +import {itemsFromBackend as ifb , columnsFromBackend as cfb , handleAdd} from "./App"; +import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd'; + + +// const [columns, setColumns] = useState(cfb); +// const [items, setItems] = useState(ifb); + +const getItems = count => + Array.from({ length: count }, (v, k) => k).map(k => ({ + id: `item-${k}`, + content: `item ${k}`, + })); + +const reorder = (list, startIndex, endIndex) => { + const result = Array.from(list); + const [removed] = result.splice(startIndex, 1); + result.splice(endIndex, 0, removed); + + return result; +}; + +const grid = 8; + +const getListStyle = isDraggingOver => ({ + background: isDraggingOver ? 'lightblue' : 'lightgrey', + display: 'flex', + padding: grid, + overflow: 'auto', +}); + +class App extends Component { + constructor(props) { + super(props); + this.state = { + items: getItems(3), + }; + this.onDragEnd = this.onDragEnd.bind(this); + } + + onDragEnd(result) { + // dropped outside the list + if (!result.destination) { + return; + } + + const items = reorder( + this.state.items, + result.source.index, + result.destination.index + ); + + this.setState({ + items, + }); + } + + render() { + return ( + + + {(provided, snapshot) => ( +
+ {this.state.items.map((item, index) => ( + + {(provided, snapshot) => ( +
+

Name

+
+ )} +
+ ))} + {provided.placeholder} +
+ )} +
+
+ ); + } +} + +export default App;