node package manager
Stop writing boring code. Discover, share, and reuse within your team. Create a free org »

buildingblox.directives

Angular Building Blox An angular boilerplate module

BuildingBlox.Directives contains several useful AngularJS directives.

Currently, the module contains a framework for drag-and-drop functionality. It can be used like so:

<div class="dragArea">
    The dragArea container is technically not necessary, but it will ensure that touch events
    triggered inside do not cause scrolling, but instead will drag elements as expected.
    <div class="dropArea" on-drag-enter="enterFunction" on-drag-leave="leaveFunction" on-drop="dropFunction">
        When the draggable element enters, leaves, or is dropped into this div, the appropriate event handler function will be called.
    </div>
    <div class="draggable">
        This div will be draggable.
    </div>
</div>

A helpful directive implementing this drag-and-drop functionality is included. It is a list whose items can be dragged in order to rearrange, and elements can be dragged from one list into another. It can be used like so:

What a list object might look like:

app.controller('myController', function($scope) {
    $scope.myListObject = {
        name: 'My List',
        list: [
            { _id: 001, value: 'Item 1' },
            { _id: 002, value: 'Item 2' },
        ]
    };
});

What the HTML might look like for the above list object:

<div ng-controller="myController">
    <draggable-list ng-model="myListObject" id-property="_id" display-property="value" list-name-property="name" list-property="list"></draggable-list>
</div>

The directive uses the id-property attribute to determine the unique identifier for each list item, display-property for what text to show for each list item, list-name-property for what property on the list object should be used as the heading, and list-property for what the property on the list object actually refers to the list. Each of these attributes has a default value, which are the same as those used in the example.

Dependencies

  • angular (Required)
  • interact (Required for drag-and-drop functionality)
  • bootstrap (Recommended for use with draggable-list)