Skip to content
js-utilities / v2

sortable

Last updated:

On this page

Provides functionality for sorting elements. To use the module, import it and initialize like so.

import { sortable } from '@javaabu/js-utilities';

sortable.init();

You can also manually bind sortable on an arbitary element using the bind() method. The argument to the bind() method must be a jQuery object. This can be useful for binding conditionalDisplay on dynamic elements.

import { sortable } from '@javaabu/js-utilities';

sortable.bind($('.some-element'));

.sortable

Use this class to make the child html elements sortable. Requires jQuery-UI Sortable. Optionally add data-sort-url to specify a url to make a PUT ajax call each time an element is moved. When using data-sort-url each element must have an id in the form <model-name>_<id>. For example, if the ids are in the format users_2, then the data submitted by ajax would be a users array of ids in their sorted order.

<div class="sortable" data-sort-url="/users">
    <div id="users-1">
        User 1
    </div>

    <div id="users-2">
        User 2
    </div>
</div>

data-form-sortable

This data attribute is used for triggering table sorting when a table heading is clicked. data-form-sortable must point to the filter form and the table column heading must data-sort-field which is the name of the field to sort. The filter form must have orderby and order inputs which can be hidden.

<form id="filters">
    <input type="text" name="search" placeholder="Search.." />

    <input type="hidden" name="orderby" value="title" />
    <input type="hidden" name="order" value="ASC" />
</form>

<table data-form-sortable="#filters">
    <thead>
        <tr>
            <th data-sort-field="title" class="sorting_asc">Title</th>
            <th data-sort-field="created_at" class="sorting">Created At</th>
        </tr>
    </thead>
    <tbody>
        ...
    </tbody>
</table>
Documentation
All packages

javaabu/js-utilities

Source on GitHub