GitHub - angular-ui/ui-sortable at v0.10.x-stable (original) (raw)

UI.Sortable directive Build Status

This directive allows you to sort array with drag & drop.

Requirements

Note for AngularJS 1.2 users: Use the separate branch angular1.2.

Usage

Load the script file: sortable.js in your application:

Add the sortable module as a dependency to your application module:

var myAppModule = angular.module('MyApp', ['ui.sortable'])

Apply the directive to your form elements:

Developing Notes:

Options

All the jQueryUI Sortable options can be passed through the directive.

myAppModule.controller('MyController', function($scope) { $scope.items = ["One", "Two", "Three"];

$scope.sortableOptions = { update: function(e, ui) { ... }, axis: 'x' }; });

Canceling

Inside the update callback, you can check the item that is dragged and cancel the sorting.

$scope.sortableOptions = { update: function(e, ui) { if (ui.item.scope().item == "can't be moved") { ui.item.parent().sortable('cancel'); } } };

Note: update occurs before any model/scope changes but after the DOM position has been updated. So ui.item.scope and the directive's ng-model, are equal to the scope before the drag start.

Reporting Issues

The following pen's are provided as a good starting point to demonstrate issues, proposals and use cases. Feel free to edit any of them for your needs (don't forget to also update the libraries used to your version).

Testing

We use Karma and jshint to ensure the quality of the code. The easiest way to run these checks is to use grunt:

npm install -g grunt-cli npm install && bower install grunt

The karma task will try to open Firefox and Chrome as browser in which to run the tests. Make sure this is available or change the configuration in test\karma.conf.js

Grunt Serve

We have one task to serve them all !

It's equal to run separately: