willgm / ngSelectable

AngularJS bindings for jQuery UI Selectable
MIT License
21 stars 8 forks source link

AngularJS ngSelectable directive

Allows you to easy select multiples items individually or in a group.

Requirements

Notes:

JQuery must be included before AngularJS. JQueryUI dependecies include core, widget, mouse & selectable. Creating a custom build will greatly reduce the required file size. (CDN links for comparison: full vs minimal)

Examples

Usage

Install the bower package (or just copy the source):

bower install ngSelectable --save

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

<script type="text/javascript" src="https://github.com/willgm/ngSelectable/raw/master/ngSelectable.js"></script>

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

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

Apply the directive to your selectable list:

<ul selectable selectable-list="items">
  <li ng-repeat="item in items">{{item}}</li>
</ul>

Selected Items Binding

Selected: <span ng-repeat="item in selected">{{item}}</span>
<ul selectable selectable-list="items" selectable-out="selected">
  <li ng-repeat="item in items">{{item}}</li>
</ul>

Directive Toggle

<label>
  <input type="checkbox" ng-model="selection" /> Active Selection
</label>
<ul selectable="selection">
  <li ng-repeat="item in items">{{item}}</li>
</ul>

Options

All the jQueryUI Selectable options can be passed through selectable-options.

<ul selectable selectable-options="{filter:'li'}">
  <li ng-repeat="item in items">{{item}}</li>
</ul>

Events

All the jQueryUI Selectable events can be passed through selectable-events with all the angular injections like $index and $event. You can also get the working list ($list), the selected items ($selected) and the JqueryUI object ($ui).

<ul selectable selectable-events="{start:'myMethod($event, $ui, $selected, $list)'}">
  <li ng-repeat="item in items">{{item}}</li>
</ul>