mirror of
https://github.com/Mottie/tablesorter.git
synced 2024-11-15 23:54:22 +00:00
v2.28.7
This commit is contained in:
parent
d79dd5a27b
commit
b80d402fc3
49
README.md
49
README.md
@ -104,6 +104,16 @@ If you would like to contribute, please...
|
||||
|
||||
View the [complete change log here](https://github.com/Mottie/tablesorter/wiki/Changes).
|
||||
|
||||
#### <a name="v2.28.7">Version 2.28.7</a> (4/4/2017)
|
||||
|
||||
* Editable:
|
||||
* Remove "blur" event listeners. See [issue #1360](https://github.com/Mottie/tablesorter/issues/1360).
|
||||
* Filter:
|
||||
* Add "filterAndSortReset" method. See [issue #1361](https://github.com/Mottie/tablesorter/issues/1361).
|
||||
* Prevent JS error added from last update. Fixes [issue #1377](https://github.com/Mottie/tablesorter/issues/1377).
|
||||
* Meta:
|
||||
* Fix composer.json license.
|
||||
|
||||
#### <a name="v2.28.6">Version 2.28.6</a> (4/2/2017)
|
||||
|
||||
* Core:
|
||||
@ -156,42 +166,3 @@ View the [complete change log here](https://github.com/Mottie/tablesorter/wiki/C
|
||||
* Scroller:
|
||||
* Add `scrollerComplete` event. Fixes [issue #1351](https://github.com/Mottie/tablesorter/issues/1351).
|
||||
* Readme: Add related project, tablesorter-pagercontrols
|
||||
|
||||
#### <a name="v2.28.4">Version 2.28.4</a> (1/6/2017)
|
||||
|
||||
* Docs:
|
||||
* Add more notes about moving "ipAddress" parser into an external file. See [issue #1344](https://github.com/Mottie/tablesorter/issues/1344).
|
||||
* Load storage widget in grouping widget demo. Fixes [issue #1346](https://github.com/Mottie/tablesorter/issues/1346).
|
||||
* Add page header section to grouping child demo. See [issue #1346](https://github.com/Mottie/tablesorter/issues/1346).
|
||||
* Include jQuery in page header section in various demos.
|
||||
* Add page header to output demo. See [issue #1349](https://github.com/Mottie/tablesorter/issues/1349).
|
||||
* Add comma to broken output demo.
|
||||
* Add info on output to Excel in output widget demo. See [issue #1349](https://github.com/Mottie/tablesorter/issues/1349).
|
||||
* Renamed [Bootstrap v2.x demo](https://mottie.github.io/tablesorter/docs/example-option-theme-bootstrap-v2.html).
|
||||
* Renamed [Bootstrap v3.x demo](https://mottie.github.io/tablesorter/docs/example-option-theme-bootstrap-v3.html).
|
||||
* Created [Bootstrap v4.x demo](https://mottie.github.io/tablesorter/docs/example-option-theme-bootstrap-v4.html).
|
||||
* Update all Bootstrap links to point to Bootstrap v3.x demo.
|
||||
* Maintain minimal original [Bootstrap demo](https://mottie.github.io/tablesorter/docs/example-widget-bootstrap-theme.html).
|
||||
* Output:
|
||||
* Prevent error on output to an already open popup.
|
||||
* Add `output_savePlugin` option & update download code.
|
||||
* Add `output_includeHeader` option & docs. Fixes [issue #1349](https://github.com/Mottie/tablesorter/issues/1349).
|
||||
* Pager:
|
||||
* (widget only) make compatible with stickyHeaders. [Fixes #1313](https://github.com/Mottie/tablesorter/issues/1313):
|
||||
* Removed all references to stored `pager.$goto` and `pager.$size`
|
||||
* Removed check if header text matches header length - this breaks when a header row has a "tablesorter-ignoreRow" class name.
|
||||
* Add stickyHeader container to `pager.$container` in case the pager controls are inside the thead.
|
||||
* Fix rendering of sticky headers after ajax.
|
||||
* Use option to target inner header.
|
||||
* Restore check for new headers. [Fixes #1343](https://github.com/Mottie/tablesorter/issues/1343).
|
||||
* Add `data-attribute` override on output. See [issue #1348](https://github.com/Mottie/tablesorter/issues/1348).
|
||||
* StickHeaders:
|
||||
* Reduce widget priority below the pager widget priority.
|
||||
* Theme:
|
||||
* Add group widget css file. See [issue #1346](https://github.com/Mottie/tablesorter/issues/1346).
|
||||
* Add column widget support to Bootstrap. See [issue #1347](https://github.com/Mottie/tablesorter/issues/1347).
|
||||
* Update high-specificity blue theme - [demo](https://jsfiddle.net/Mottie/k9uasLc7/); see [Stack Overflow](http://stackoverflow.com/q/41472634/145346).
|
||||
* Add `theme.bootstrap_4.css` file ([demo](https://mottie.github.io/tablesorter/docs/example-option-theme-bootstrap-v4.html); Bootstrap v4-alpha - do not use in production!).
|
||||
* Duplicated `theme.bootstrap_3.css` from `theme.bootstrap.css` (maintaining this non-versioned file name until Bootstrap v4-stable has been available for about 6 months).
|
||||
* Readme:
|
||||
* Update log for v2.28.3.
|
||||
|
23
dist/js/jquery.tablesorter.combined.js
vendored
23
dist/js/jquery.tablesorter.combined.js
vendored
@ -1,4 +1,4 @@
|
||||
/*! tablesorter (FORK) - updated 04-02-2017 (v2.28.6)*/
|
||||
/*! tablesorter (FORK) - updated 04-04-2017 (v2.28.7)*/
|
||||
/* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
|
||||
(function(factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
@ -10,7 +10,7 @@
|
||||
}
|
||||
}(function(jQuery) {
|
||||
|
||||
/*! TableSorter (FORK) v2.28.6 *//*
|
||||
/*! TableSorter (FORK) v2.28.7 *//*
|
||||
* Client-side table sorting with ease!
|
||||
* @requires jQuery v1.2.6+
|
||||
*
|
||||
@ -34,7 +34,7 @@
|
||||
'use strict';
|
||||
var ts = $.tablesorter = {
|
||||
|
||||
version : '2.28.6',
|
||||
version : '2.28.7',
|
||||
|
||||
parsers : [],
|
||||
widgets : [],
|
||||
@ -3198,7 +3198,7 @@
|
||||
|
||||
})(jQuery);
|
||||
|
||||
/*! Widget: filter - updated 4/2/2017 (v2.28.6) *//*
|
||||
/*! Widget: filter - updated 4/4/2017 (v2.28.7) *//*
|
||||
* Requires tablesorter v2.8+ and jQuery 1.7+
|
||||
* by Rob Garrison
|
||||
*/
|
||||
@ -3269,7 +3269,7 @@
|
||||
var tbodyIndex, $tbody,
|
||||
$table = c.$table,
|
||||
$tbodies = c.$tbodies,
|
||||
events = 'addRows updateCell update updateRows updateComplete appendCache filterReset filterEnd search '
|
||||
events = 'addRows updateCell update updateRows updateComplete appendCache filterReset filterAndSortReset filterEnd search '
|
||||
.split( ' ' ).join( c.namespace + 'filter ' );
|
||||
$table
|
||||
.removeClass( 'hasFilters' )
|
||||
@ -3610,7 +3610,7 @@
|
||||
}
|
||||
|
||||
txt = 'addRows updateCell update updateRows updateComplete appendCache filterReset ' +
|
||||
'filterResetSaved filterEnd search '.split( ' ' ).join( c.namespace + 'filter ' );
|
||||
'filterAndSortReset filterResetSaved filterEnd search '.split( ' ' ).join( c.namespace + 'filter ' );
|
||||
c.$table.bind( txt, function( event, filter ) {
|
||||
val = wo.filter_hideEmpty &&
|
||||
$.isEmptyObject( c.cache ) &&
|
||||
@ -3621,9 +3621,16 @@
|
||||
event.stopPropagation();
|
||||
tsf.buildDefault( table, true );
|
||||
}
|
||||
if ( event.type === 'filterReset' ) {
|
||||
// Add filterAndSortReset - see #1361
|
||||
if ( event.type === 'filterReset' || event.type === 'filterAndSortReset' ) {
|
||||
c.$table.find( '.' + tscss.filter ).add( wo.filter_$externalFilters ).val( '' );
|
||||
if ( event.type === 'filterAndSortReset' ) {
|
||||
ts.sortReset( this.config, function() {
|
||||
tsf.searching( table, [] );
|
||||
});
|
||||
} else {
|
||||
tsf.searching( table, [] );
|
||||
}
|
||||
} else if ( event.type === 'filterResetSaved' ) {
|
||||
ts.storage( table, 'tablesorter-filters', '' );
|
||||
} else if ( event.type === 'filterEnd' ) {
|
||||
@ -5005,7 +5012,7 @@
|
||||
// setFilters called, but last search is exactly the same as the current
|
||||
// fixes issue #733 & #903 where calling update causes the input values to reset
|
||||
( $.isArray(setFilters) && setFilters.join(',') === c.lastSearch.join(',') ) ) {
|
||||
return $( table ).data( 'lastSearch' );
|
||||
return $( table ).data( 'lastSearch' ) || [];
|
||||
}
|
||||
if ( c ) {
|
||||
if ( c.$filters ) {
|
||||
|
8
dist/js/jquery.tablesorter.combined.min.js
vendored
8
dist/js/jquery.tablesorter.combined.min.js
vendored
File diff suppressed because one or more lines are too long
4
dist/js/jquery.tablesorter.js
vendored
4
dist/js/jquery.tablesorter.js
vendored
@ -8,7 +8,7 @@
|
||||
}
|
||||
}(function(jQuery) {
|
||||
|
||||
/*! TableSorter (FORK) v2.28.6 *//*
|
||||
/*! TableSorter (FORK) v2.28.7 *//*
|
||||
* Client-side table sorting with ease!
|
||||
* @requires jQuery v1.2.6+
|
||||
*
|
||||
@ -32,7 +32,7 @@
|
||||
'use strict';
|
||||
var ts = $.tablesorter = {
|
||||
|
||||
version : '2.28.6',
|
||||
version : '2.28.7',
|
||||
|
||||
parsers : [],
|
||||
widgets : [],
|
||||
|
2
dist/js/jquery.tablesorter.min.js
vendored
2
dist/js/jquery.tablesorter.min.js
vendored
File diff suppressed because one or more lines are too long
19
dist/js/jquery.tablesorter.widgets.js
vendored
19
dist/js/jquery.tablesorter.widgets.js
vendored
@ -1,4 +1,4 @@
|
||||
/*! tablesorter (FORK) - updated 04-02-2017 (v2.28.6)*/
|
||||
/*! tablesorter (FORK) - updated 04-04-2017 (v2.28.7)*/
|
||||
/* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
|
||||
(function(factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
@ -387,7 +387,7 @@
|
||||
|
||||
})(jQuery);
|
||||
|
||||
/*! Widget: filter - updated 4/2/2017 (v2.28.6) *//*
|
||||
/*! Widget: filter - updated 4/4/2017 (v2.28.7) *//*
|
||||
* Requires tablesorter v2.8+ and jQuery 1.7+
|
||||
* by Rob Garrison
|
||||
*/
|
||||
@ -458,7 +458,7 @@
|
||||
var tbodyIndex, $tbody,
|
||||
$table = c.$table,
|
||||
$tbodies = c.$tbodies,
|
||||
events = 'addRows updateCell update updateRows updateComplete appendCache filterReset filterEnd search '
|
||||
events = 'addRows updateCell update updateRows updateComplete appendCache filterReset filterAndSortReset filterEnd search '
|
||||
.split( ' ' ).join( c.namespace + 'filter ' );
|
||||
$table
|
||||
.removeClass( 'hasFilters' )
|
||||
@ -799,7 +799,7 @@
|
||||
}
|
||||
|
||||
txt = 'addRows updateCell update updateRows updateComplete appendCache filterReset ' +
|
||||
'filterResetSaved filterEnd search '.split( ' ' ).join( c.namespace + 'filter ' );
|
||||
'filterAndSortReset filterResetSaved filterEnd search '.split( ' ' ).join( c.namespace + 'filter ' );
|
||||
c.$table.bind( txt, function( event, filter ) {
|
||||
val = wo.filter_hideEmpty &&
|
||||
$.isEmptyObject( c.cache ) &&
|
||||
@ -810,9 +810,16 @@
|
||||
event.stopPropagation();
|
||||
tsf.buildDefault( table, true );
|
||||
}
|
||||
if ( event.type === 'filterReset' ) {
|
||||
// Add filterAndSortReset - see #1361
|
||||
if ( event.type === 'filterReset' || event.type === 'filterAndSortReset' ) {
|
||||
c.$table.find( '.' + tscss.filter ).add( wo.filter_$externalFilters ).val( '' );
|
||||
if ( event.type === 'filterAndSortReset' ) {
|
||||
ts.sortReset( this.config, function() {
|
||||
tsf.searching( table, [] );
|
||||
});
|
||||
} else {
|
||||
tsf.searching( table, [] );
|
||||
}
|
||||
} else if ( event.type === 'filterResetSaved' ) {
|
||||
ts.storage( table, 'tablesorter-filters', '' );
|
||||
} else if ( event.type === 'filterEnd' ) {
|
||||
@ -2194,7 +2201,7 @@
|
||||
// setFilters called, but last search is exactly the same as the current
|
||||
// fixes issue #733 & #903 where calling update causes the input values to reset
|
||||
( $.isArray(setFilters) && setFilters.join(',') === c.lastSearch.join(',') ) ) {
|
||||
return $( table ).data( 'lastSearch' );
|
||||
return $( table ).data( 'lastSearch' ) || [];
|
||||
}
|
||||
if ( c ) {
|
||||
if ( c.$filters ) {
|
||||
|
6
dist/js/jquery.tablesorter.widgets.min.js
vendored
6
dist/js/jquery.tablesorter.widgets.min.js
vendored
File diff suppressed because one or more lines are too long
2
dist/js/widgets/widget-editable.min.js
vendored
2
dist/js/widgets/widget-editable.min.js
vendored
File diff suppressed because one or more lines are too long
4
dist/js/widgets/widget-filter.min.js
vendored
4
dist/js/widgets/widget-filter.min.js
vendored
File diff suppressed because one or more lines are too long
@ -4,7 +4,7 @@
|
||||
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀▀▀██
|
||||
█████▀ ▀████▀ ██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ █████▀ ██ ██ █████▀
|
||||
*/
|
||||
/*! tablesorter (FORK) - updated 04-02-2017 (v2.28.6)*/
|
||||
/*! tablesorter (FORK) - updated 04-04-2017 (v2.28.7)*/
|
||||
/* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
|
||||
(function(factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
@ -16,7 +16,7 @@
|
||||
}
|
||||
}(function(jQuery) {
|
||||
|
||||
/*! TableSorter (FORK) v2.28.6 *//*
|
||||
/*! TableSorter (FORK) v2.28.7 *//*
|
||||
* Client-side table sorting with ease!
|
||||
* @requires jQuery v1.2.6+
|
||||
*
|
||||
@ -40,7 +40,7 @@
|
||||
'use strict';
|
||||
var ts = $.tablesorter = {
|
||||
|
||||
version : '2.28.6',
|
||||
version : '2.28.7',
|
||||
|
||||
parsers : [],
|
||||
widgets : [],
|
||||
@ -3204,7 +3204,7 @@
|
||||
|
||||
})(jQuery);
|
||||
|
||||
/*! Widget: filter - updated 4/2/2017 (v2.28.6) *//*
|
||||
/*! Widget: filter - updated 4/4/2017 (v2.28.7) *//*
|
||||
* Requires tablesorter v2.8+ and jQuery 1.7+
|
||||
* by Rob Garrison
|
||||
*/
|
||||
@ -3275,7 +3275,7 @@
|
||||
var tbodyIndex, $tbody,
|
||||
$table = c.$table,
|
||||
$tbodies = c.$tbodies,
|
||||
events = 'addRows updateCell update updateRows updateComplete appendCache filterReset filterEnd search '
|
||||
events = 'addRows updateCell update updateRows updateComplete appendCache filterReset filterAndSortReset filterEnd search '
|
||||
.split( ' ' ).join( c.namespace + 'filter ' );
|
||||
$table
|
||||
.removeClass( 'hasFilters' )
|
||||
@ -3616,7 +3616,7 @@
|
||||
}
|
||||
|
||||
txt = 'addRows updateCell update updateRows updateComplete appendCache filterReset ' +
|
||||
'filterResetSaved filterEnd search '.split( ' ' ).join( c.namespace + 'filter ' );
|
||||
'filterAndSortReset filterResetSaved filterEnd search '.split( ' ' ).join( c.namespace + 'filter ' );
|
||||
c.$table.bind( txt, function( event, filter ) {
|
||||
val = wo.filter_hideEmpty &&
|
||||
$.isEmptyObject( c.cache ) &&
|
||||
@ -3627,9 +3627,16 @@
|
||||
event.stopPropagation();
|
||||
tsf.buildDefault( table, true );
|
||||
}
|
||||
if ( event.type === 'filterReset' ) {
|
||||
// Add filterAndSortReset - see #1361
|
||||
if ( event.type === 'filterReset' || event.type === 'filterAndSortReset' ) {
|
||||
c.$table.find( '.' + tscss.filter ).add( wo.filter_$externalFilters ).val( '' );
|
||||
if ( event.type === 'filterAndSortReset' ) {
|
||||
ts.sortReset( this.config, function() {
|
||||
tsf.searching( table, [] );
|
||||
});
|
||||
} else {
|
||||
tsf.searching( table, [] );
|
||||
}
|
||||
} else if ( event.type === 'filterResetSaved' ) {
|
||||
ts.storage( table, 'tablesorter-filters', '' );
|
||||
} else if ( event.type === 'filterEnd' ) {
|
||||
@ -5011,7 +5018,7 @@
|
||||
// setFilters called, but last search is exactly the same as the current
|
||||
// fixes issue #733 & #903 where calling update causes the input values to reset
|
||||
( $.isArray(setFilters) && setFilters.join(',') === c.lastSearch.join(',') ) ) {
|
||||
return $( table ).data( 'lastSearch' );
|
||||
return $( table ).data( 'lastSearch' ) || [];
|
||||
}
|
||||
if ( c ) {
|
||||
if ( c.$filters ) {
|
||||
|
@ -1,4 +1,4 @@
|
||||
/*! TableSorter (FORK) v2.28.6 *//*
|
||||
/*! TableSorter (FORK) v2.28.7 *//*
|
||||
* Client-side table sorting with ease!
|
||||
* @requires jQuery v1.2.6+
|
||||
*
|
||||
@ -22,7 +22,7 @@
|
||||
'use strict';
|
||||
var ts = $.tablesorter = {
|
||||
|
||||
version : '2.28.6',
|
||||
version : '2.28.7',
|
||||
|
||||
parsers : [],
|
||||
widgets : [],
|
||||
|
@ -4,7 +4,7 @@
|
||||
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀▀▀██
|
||||
█████▀ ▀████▀ ██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ █████▀ ██ ██ █████▀
|
||||
*/
|
||||
/*! tablesorter (FORK) - updated 04-02-2017 (v2.28.6)*/
|
||||
/*! tablesorter (FORK) - updated 04-04-2017 (v2.28.7)*/
|
||||
/* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
|
||||
(function(factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
@ -393,7 +393,7 @@
|
||||
|
||||
})(jQuery);
|
||||
|
||||
/*! Widget: filter - updated 4/2/2017 (v2.28.6) *//*
|
||||
/*! Widget: filter - updated 4/4/2017 (v2.28.7) *//*
|
||||
* Requires tablesorter v2.8+ and jQuery 1.7+
|
||||
* by Rob Garrison
|
||||
*/
|
||||
@ -464,7 +464,7 @@
|
||||
var tbodyIndex, $tbody,
|
||||
$table = c.$table,
|
||||
$tbodies = c.$tbodies,
|
||||
events = 'addRows updateCell update updateRows updateComplete appendCache filterReset filterEnd search '
|
||||
events = 'addRows updateCell update updateRows updateComplete appendCache filterReset filterAndSortReset filterEnd search '
|
||||
.split( ' ' ).join( c.namespace + 'filter ' );
|
||||
$table
|
||||
.removeClass( 'hasFilters' )
|
||||
@ -805,7 +805,7 @@
|
||||
}
|
||||
|
||||
txt = 'addRows updateCell update updateRows updateComplete appendCache filterReset ' +
|
||||
'filterResetSaved filterEnd search '.split( ' ' ).join( c.namespace + 'filter ' );
|
||||
'filterAndSortReset filterResetSaved filterEnd search '.split( ' ' ).join( c.namespace + 'filter ' );
|
||||
c.$table.bind( txt, function( event, filter ) {
|
||||
val = wo.filter_hideEmpty &&
|
||||
$.isEmptyObject( c.cache ) &&
|
||||
@ -816,9 +816,16 @@
|
||||
event.stopPropagation();
|
||||
tsf.buildDefault( table, true );
|
||||
}
|
||||
if ( event.type === 'filterReset' ) {
|
||||
// Add filterAndSortReset - see #1361
|
||||
if ( event.type === 'filterReset' || event.type === 'filterAndSortReset' ) {
|
||||
c.$table.find( '.' + tscss.filter ).add( wo.filter_$externalFilters ).val( '' );
|
||||
if ( event.type === 'filterAndSortReset' ) {
|
||||
ts.sortReset( this.config, function() {
|
||||
tsf.searching( table, [] );
|
||||
});
|
||||
} else {
|
||||
tsf.searching( table, [] );
|
||||
}
|
||||
} else if ( event.type === 'filterResetSaved' ) {
|
||||
ts.storage( table, 'tablesorter-filters', '' );
|
||||
} else if ( event.type === 'filterEnd' ) {
|
||||
@ -2200,7 +2207,7 @@
|
||||
// setFilters called, but last search is exactly the same as the current
|
||||
// fixes issue #733 & #903 where calling update causes the input values to reset
|
||||
( $.isArray(setFilters) && setFilters.join(',') === c.lastSearch.join(',') ) ) {
|
||||
return $( table ).data( 'lastSearch' );
|
||||
return $( table ).data( 'lastSearch' ) || [];
|
||||
}
|
||||
if ( c ) {
|
||||
if ( c.$filters ) {
|
||||
|
@ -1,4 +1,4 @@
|
||||
/*! Widget: editable - updated 3/1/2016 (v2.25.5) *//*
|
||||
/*! Widget: editable - updated 4/4/2017 (v2.28.7) *//*
|
||||
* Requires tablesorter v2.8+ and jQuery 1.7+
|
||||
* by Rob Garrison
|
||||
*/
|
||||
|
@ -1,4 +1,4 @@
|
||||
/*! Widget: filter - updated 4/2/2017 (v2.28.6) *//*
|
||||
/*! Widget: filter - updated 4/4/2017 (v2.28.7) *//*
|
||||
* Requires tablesorter v2.8+ and jQuery 1.7+
|
||||
* by Rob Garrison
|
||||
*/
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "tablesorter",
|
||||
"title": "tablesorter",
|
||||
"version": "2.28.6",
|
||||
"version": "2.28.7",
|
||||
"description": "tablesorter (FORK) is a jQuery plugin for turning a standard HTML table with THEAD and TBODY tags into a sortable table without page refreshes. tablesorter can successfully parse and sort many types of data including linked data in a cell.",
|
||||
"author": {
|
||||
"name": "Christian Bach",
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "tablesorter",
|
||||
"title": "tablesorter",
|
||||
"version": "2.28.6",
|
||||
"version": "2.28.7",
|
||||
"description": "tablesorter is a jQuery plugin for turning a standard HTML table with THEAD and TBODY tags into a sortable table without page refreshes. tablesorter can successfully parse and sort many types of data including linked data in a cell.\n\nThis forked version adds lots of new enhancements including: alphanumeric sorting, pager callback functons, multiple widgets providing column styling, ui theme application, sticky headers, column filters and resizer, as well as extended documentation with a lot more demos.",
|
||||
"author": {
|
||||
"name": "Christian Bach",
|
||||
|
Loading…
Reference in New Issue
Block a user