Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/twobin/react-drag-tool

react drag and drop tools
https://github.com/twobin/react-drag-tool

Last synced: about 2 months ago
JSON representation

react drag and drop tools

Awesome Lists containing this project

README

        

# react-drag-tool

react drag and drop tools

[![npm version](https://badge.fury.io/js/react-drag-tool.png)](https://badge.fury.io/js/react-drag-tool)
[![build status](https://travis-ci.org/twobin/react-drag-tool.svg)](https://travis-ci.org/twobin/react-drag-tool)
[![npm downloads](https://img.shields.io/npm/dt/react-drag-tool.svg?style=flat-square)](https://www.npmjs.com/package/react-drag-tool)

## usage

```
$ npm i -S react-drag-tool
```

## docs

### react-drag-tool

```
import DragTool from 'react-drag-tool';

```

### props

```
static propTypes = {
/**
* `axis` determines which axis the draggable can move.
*
* 'both' allows movement horizontally and vertically.
* 'x' limits movement to horizontal axis.
* 'y' limits movement to vertical axis.
*
* Defaults to 'both'.
*/
axis: PropTypes.oneOf(['both', 'x', 'y']),

/**
* `handle` specifies a selector to be used as the handle
* that initiates drag.
*
* Example:
*
* ```jsx
* var App = React.createClass({
* render: function () {
* return (
*
*


*
Click me to drag

*
This is some other content

*

*
* );
* }
* });
* ```
*/
handle: PropTypes.string,

/**
* `cancel` specifies a selector to be used to prevent drag initialization.
*
* Example:
*
* ```jsx
* var App = React.createClass({
* render: function () {
* return(
*
*


*
You can't drag from here

*
Dragging here works fine

*

*
* );
* }
* });
* ```
*/
cancel: PropTypes.string,

/**
* `grid` specifies the x and y that dragging should snap to.
*
* Example:
*
* ```jsx
* var App = React.createClass({
* render: function () {
* return (
*
*

I snap to a 25 x 25 grid

*
* );
* }
* });
* ```
*/
grid: PropTypes.arrayOf(React.PropTypes.number),

/**
* `start` specifies the x and y that the dragged item should start at
*
* Example:
*
* ```jsx
* var App = React.createClass({
* render: function () {
* return (
*
*

I start with left: 25px; top: 25px;

*
* );
* }
* });
* ```
*/
start: PropTypes.object,

/**
* Called when dragging starts.
*
* Example:
*
* ```js
* function (event, ui) {}
* ```
*
* `event` is the Event that was triggered.
* `ui` is an object:
*
* ```js
* {
* position: {top: 0, left: 0}
* }
* ```
*/
onStart: PropTypes.func,

/**
* Called while dragging.
*
* Example:
*
* ```js
* function (event, ui) {}
* ```
*
* `event` is the Event that was triggered.
* `ui` is an object:
*
* ```js
* {
* position: {top: 0, left: 0}
* }
* ```
*/
onDrag: PropTypes.func,

/**
* Called when dragging stops.
*
* Example:
*
* ```js
* function (event, ui) {}
* ```
*
* `event` is the Event that was triggered.
* `ui` is an object:
*
* ```js
* {
* position: {top: 0, left: 0}
* }
* ```
*/
onStop: PropTypes.func,

/**
* A workaround option which can be passed if
* onMouseDown needs to be accessed,
* since it'll always be blocked (due to that
* there's internal use of onMouseDown)
*
*/
onMouseDown: PropTypes.func,

/**
* Defines the bounderies around the element
* could be dragged. This property could be
* object or a string. If used as object
* the bounderies should be defined as:
*
* {
* left: LEFT_BOUND,
* right: RIGHT_BOUND,
* top: TOP_BOUND,
* bottom: BOTTOM_BOUND
* }
*
* The only acceptable string
* property is: "parent".
*/
bound: PropTypes.any
};
```