Sortable Table

This javascript function makes tables sortable as a progressive enhancement.

How to use

After including the javascript function, sortable tables need to be initialized with a reference to the table element using code similiar to the following:

var table = document.getElementById('table-id');
new SortableTable(table);

(If you have more than one table, you will need to initialize each separately.)

All configuration is done in the HTML.

To make a column sortable, add an aria-sort attribute to the <th> cell within the <thead> which describes that column. Use one of the following three values:

When a sortable column header is clicked, by default the code will look at the text content of each of the cells within that column, and will attempt to convert it to a floating point number using parseFloat(), or otherwise will treat it a string.

If you have data which doesn’t parse to a float, but which shouldn’t simply by sorted as a string, then use a data-sort-value="" attribute to specify an alternate value to use for sorting, either as a number or a string.

For example:

If your table has row-groups, using multiple <tbody> elements, then within each row-group, add the attribute scope="rowgroup" to the cell which represents the header for that group.

Examples

Simple table
Title Amount Date
Aardvark 100 12 Jan 2018
Buffalo 12 23 Feb 2017
Cantelope 91 9 Dec 2013
Dog 10,102 23 Mar 2019
Complex table
Place Amount Value
Canada 30,012 £8 billion
United Kingdom 102,304 £20 billion
England 81,913 £8.1 billion
Scotland 10,102 £1.2 billion
Wales 31,010 £2.7 billion
United States 1,032,103 £103 billion
California 304,103 £31 billion
New York 845,103 £12 billion
Texas 210,001 £19 billion