Skip to content

Angular directive that mimics the sortable jquery-ui component.

License

Notifications You must be signed in to change notification settings

EFEducationFirstMobile/angular-sortable

 
 

Repository files navigation

angular-sortable

Very simple jquery-ui like sortable that does not require jquery-ui... Look further to see the features that are not implemented yet :)

Demo: http://sebastien.chartier.pro/angular-sortable

Plunker: http://plnkr.co/edit/L33H0T?p=preview

I am trying to make the best sortable directive for Angular.js, your contribution is very welcome :)

I figured out that when we detect that the order should be updated, instead of proceeding to complex DOM manipulations, updating the referenced array would produce the same result, the "Angular" way (this is my personal opinion)...

Installation

bower install angular-sortable --save

Usage

<ul ng-sortable="items">
        <li ng-repeat="item in items" class="sortable-element" ng-style="{backgroundColor: item.color}">
            {{item.name}}, {{item.profession}}
        </li>
    </ul>

IMPORTANT: Sortable elements are identified with the class "sortable-element".

Related attributes

Options are defined as tag attributes:

  • ng-sortable (required) : The value for this attribute must be the same list used by the inner ng-repeat that create the sortable elements.
  • ng-sortable-on-change (optional)
  • ng-sortable-on-dragstart (optional)
  • ng-sortable-on-dragend (optional)
  • ng-sortable-on-drag (optional)

Example

HTML:

<ul ng-sortable="items"
    ng-sortable-on-change="onItemsChange"
    ng-sortable-on-dragstart="onItemsDragstart"
    ng-sortable-on-dragend="onItemsDragend"
    ng-sortable-on-drag="onItemsDrag">
    
    <li ng-repeat="item in items" class="sortable-element" ng-style="{backgroundColor: item.color}">
      {{item.name}}, {{item.profession}}
    </li>
</ul>

Controller

    $scope.onItemsDrag = function(event) {
        // Do whatever you want here...
        console.log('onItemsDrag');
    };

    $scope.onItemsDragstart = function(event) {
        // Do whatever you want here...
        console.log('onItemsDragstart');
    };

    $scope.onItemsDragend = function(event) {
        // Do whatever you want here...
        console.log('onItemsDragend');
    };

    $scope.onItemsChange = function(fromIdx, toIdx) {
        // Do whatever you want here...
        console.log('onItemsChange');
    };

Important features missing in this component

Not sure about features

  • Should we integrate with Bootstrap or keep styling to a minimum?

Your ideas are welcome, don't hesitate to contact me at [email protected] :)

About

Angular directive that mimics the sortable jquery-ui component.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 59.2%
  • CSS 40.8%