# react-grid-drag **Repository Path**: komagic1/react-grid-drag ## Basic Information - **Project Name**: react-grid-drag - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-01-15 - **Last Updated**: 2021-01-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
A demo showing views being swiped left and right.
# react-grid-drag ## Features - **Supports dragging between arbitrary number of lists**. ## Install Install `react-grid-drag` and `react-gesture-responder` using yarn or npm. ``` yarn add react-grid-drag react-gesture-responder ``` ## Usage Because `GridItem` components are rendered with absolute positioning, you need to ensure that `GridDropZone` has a specified height or flex, like in the example below. ```jsx import { GridContextProvider, GridDropZone, GridItem, swap } from "react-grid-drag"; function Example() { const [items, setItems] = React.useState([1, 2, 3, 4]); // supply your own state // target id will only be set if dragging from one dropzone to another. function onChange(sourceId, sourceIndex, targetIndex, targetId) { const nextState = swap(items, sourceIndex, targetIndex); setItems(nextState); } return ( {items.map(item => (
{item}
))}
); } ``` ## Dragging between lists ```jsx import { GridContextProvider, GridDropZone, GridItem, swap, move } from "react-grid-drag"; function App() { const [items, setItems] = React.useState({ left: [ { id: 1, name: "ben" }, { id: 2, name: "joe" }, { id: 3, name: "jason" }, { id: 4, name: "chris" }, { id: 5, name: "heather" }, { id: 6, name: "Richard" } ], right: [ { id: 7, name: "george" }, { id: 8, name: "rupert" }, { id: 9, name: "alice" }, { id: 10, name: "katherine" }, { id: 11, name: "pam" }, { id: 12, name: "katie" } ] }); function onChange(sourceId, sourceIndex, targetIndex, targetId) { if (targetId) { const result = move( items[sourceId], items[targetId], sourceIndex, targetIndex ); return setItems({ ...items, [sourceId]: result[0], [targetId]: result[1] }); } const result = swap(items[sourceId], sourceIndex, targetIndex); return setItems({ ...items, [sourceId]: result }); } return (
{items.left.map(item => (
{item.name[0].toUpperCase()}
))}
{items.right.map(item => (
{item.name[0].toUpperCase()}
))}
); } ```