AngularJS ngSelectable directive
Allows you to easy select multiples items individually or in a group.
- JQuery
- JQueryUI
- AngularJS
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)
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="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: <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>
<label>
<input type="checkbox" ng-model="selection" /> Active Selection
</label>
<ul selectable="selection">
<li ng-repeat="item in items">{{item}}</li>
</ul>
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>
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>