simplednd
Version:
A simple drag and drop component for React.js
136 lines (113 loc) • 2.17 kB
Markdown
# SimpleDnD - Simple Drag and Drop
#### A simple drag and drop component for react that is actually intuitive and easy to use.
## Contents.
- Guide
- API / Props
## Guide - You can use SimpleDnD three very easy steps.
### Step 1.
Install and Import SimpleDnD into your component.
```
npm install simplednd --save
```
In your react component:
```
...
import SimpleDnD from 'simplednd';
```
### Step 2.
Have an array saved into your state.
```
export default class YourComponent extends React.Component {
state = {
...
someArray: [{ some: 'stuff' }, { some: 'in' }, { some: 'here' }],
}
...
}
```
### Step 3.
In the render method of your component include Simple DnD with your array and a way to update the state.
```
...
render() {
const {
someArray,
} = this.state;
return (
<SimpleDnD
someArray={someArray}
saveToState={nextArray => this.setState({ someArray: nextArray })}
/>
)
}
...
```
## API / Props
### `someArray`
You will need to pass in an array of objects.
An Example:
Your state / array:
```
state = {
...
someArray: [{ some: 'stuff' }, { some: 'in' }, { some: 'here' }],
}
```
Your SimpleDnD component:
```
<SimpleDnD
someArray={someArray}
/>
```
### `saveToState`
You need to pass in a function that will update your states array with a new array
An Example:
```
<SimpleDnD
saveToState={nextArray => this.setState({ someArray: nextArray })}
/>
```
### `ArrayTemplate`
You need to pass in a node (element) to structure out how you want your array objects to be displayed.
An Example:
Your state / array:
```
state = {
...
someArray: [{ some: 'stuff' }, { some: 'in' }, { some: 'here' }],
}
```
Your SimpleDnD component:
```
<SimpleDnD
...
ArrayTemplate={
({ some }) => (
<div>
<h4>
{some}
</h4>
</div>
)
}
/>
```
### `LastTileTemplate`
You need to pass in a node (element) to add in as the last element in the flex grid.
An Example:
```
<SimpleDnD
...
LastTileTemplate={
() => (
<div
onClick={myClickEvent}
>
<h4>
Add another item!
</h4>
</div>
)
}
/>
```