0.1.2 • Published 10 years ago

react-rubaxa-sortable v0.1.2

Weekly downloads
15
License
-
Repository
github
Last release
10 years ago

Sortable

Sortable is a minimalist library for rearranging items in lists.

This library provides a Sortable React component (ReactSortable).

What does ReactSortable do for you?

  • It instantiates a Sortable object.
  • It renders its children in the order specified by that Sortable object.
  • It reuses DOM nodes where possible, based on child keys. While React normally does this, it does not allow the user to specify the order.
  • This implementation is based on Pete Hunt's React component for jQuery Sortable.

How do I use it?

<ReactSortable
    // Vanilla Sortable options
    sortable={{
      // Specify the draggable cells.
      draggable: '.todoList-draggable',

      // Disable dragging on certain cells.
      filter: '.todoItem-ignore',

      // Limit the draggable area to a part of the cell.
      handle: '.todoItem-handle',

      // Receive the new order order.
      onSort: this.handleSort
    }}

    // Component name for Sortable container (optional, default "div")
    // This is instantiated as a virtual DOM node, so it can be an HTML element or
    // a React component.
    component="ul"

    // Element name for Sortable items (optional, default "div")
    // This is instantiated as an actual DOM element, so it must be an HTML element.
    childElement="div"

    // Other props are passed on to the Sortable container
    className="todoList">
  {_(this.state.todos).map(function (todo) {
    return (
      <TodoItem key={todo.id}
          className={React.addons.classSet({
            'todoItem-ignore': this.isTodoIgnored(todo)
          })}
          todo={todo}/>
    );
  }.bind(this)).value()}
</ReactSortable>

Callback Signature

  • With vanilla Sortable, this is bound to the Sortable object, making it difficult to bind Sortable callbacks directly to component methods.
  • With ReactSortable, this is bound to the React component.
var TodoList = React.createClass({
  handleSort: function (sortable, e) {
    // Prints child keys
    console.log('New todo order:', sortable.toArray());
  },

  render: function () {
    return (
      <ReactSortable
        sortable={{
          onSort: this.handleSort
        }}
        ...
      </ReactSortable>
    );
  }
});
0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago