verion bump

This commit is contained in:
Rob Garrison 2016-08-17 12:41:10 -05:00
parent 67a538a495
commit fca6ef2652
No known key found for this signature in database
GPG Key ID: 0A42D160D71978E1
20 changed files with 165 additions and 129 deletions

View File

@ -101,6 +101,16 @@ If you would like to contribute, please...
View the [complete change log here](https://github.com/Mottie/tablesorter/wiki/Changes). View the [complete change log here](https://github.com/Mottie/tablesorter/wiki/Changes).
#### <a name="v2.27.3">Version 2.27.3</a> (8/17/2016)
* Core: `getColumnData` now allows falsy values.
* Filter:
* Add delay to "filterFormatterUpdate". See [issue #1237](https://github.com/Mottie/tablesorter/issues/1237).
* `filter_liveSearch` now accepts an object.
* Pager: use ajax flag when calculating filtered rows.
* Readme: Fix date of last release.
* Testing: Update QUnit.
#### <a name="v2.27.2">Version 2.27.2</a> (8/2/2016) #### <a name="v2.27.2">Version 2.27.2</a> (8/2/2016)
* Docs: Update versions. * Docs: Update versions.
@ -111,58 +121,3 @@ View the [complete change log here](https://github.com/Mottie/tablesorter/wiki/C
* ColumnSelector: Fix undefined variable. * ColumnSelector: Fix undefined variable.
* Mark: Fix linting issues. * Mark: Fix linting issues.
#### <a name="v2.27.0">Version 2.27.0</a> (7/31/2016)
* Core:
* `updateCache` now ignores "remove-me" rows.
* Add column count to debug log.
* Tweak internal sortVars & sortReset. Fixes [#1137](https://github.com/Mottie/tablesorter/issues/1137).
* ColumnSelector:
* Add max/min visible columns settings.
* Set state to `null` for disabled columns - Fixes JSON issues with not storing `undefined` values.
* Fix null comparison & incorrect option.
* CurrentSort: Add `currentSort` widget. Fixes [issue #1208](https://github.com/Mottie/tablesorter/issues/1208).
* Filter:
* `getFilters` will now always return an array. Fixes [issue #1250](https://github.com/Mottie/tablesorter/issues/1250). **API change**
* Allow ES6 regex flags.
* Add rowIndex to filter data.
* Trigger filter formatters after update. See [issue #1237](https://github.com/Mottie/tablesorter/issues/1237).
* Selected column query works again. Fixes [issue #1267](https://github.com/Mottie/tablesorter/issues/1267); broken since [a6b25ae](https://github.com/Mottie/tablesorter/commit/a6b25ae4c0cc44dcf935568b2f100ae65117ea74).
* Grouping: Prevent js errors on non-string values.
* Mark: Add mark widget. Fixes [issue #1243](https://github.com/Mottie/tablesorter/issues/1243).
* Math:
* Add `data-math-target` attribute.
* Add `math-debug` option.
* Output:
* Automatically ignore widget added rows.
* Add "url" parameter to output_callback function.
* Scroller: Update when `applyWidgets` is used. See [issue #1261](https://github.com/Mottie/tablesorter/issues/1261).
* StickyHeaders: Add `appendTo` option.
* UITheme: jQuery v1.12.0 renamed "carat" to "caret". Fixes [issue #1257](https://github.com/Mottie/tablesorter/issues/1257).
* Parsers: Url parser now ignores "www" & removed parsed flag. The filter widget finds "http" querys.
* Docs:
* Fix docs javascript; some demos still using jQuery < 1.7.
* Add scroller widget RTL details. See [issue #906](https://github.com/Mottie/tablesorter/issues/906).
* Clarify & expand grouping widget usage.
* Include ajax type.
* Add ajax type example to main docs.
* Update jQuery UI & fix uitheme docs.
* Remove old syntax highlighter.
* Update theme switcher.
* Switch to use jQuery <3.0.0 for Bootstrap demos; later reverted this change after updating to Bootstrap v3.3.7.
* Add link to `cssIgnoreRow` example.
* Clarify column selector initial state.
* Fix HTML issues.
* Add filter event function parameter examples.
* Themes:
* Hide icon when column is disabled.
* Optimize PNGs in data URLs using ZopfliPNG as well.
* Compress PNG images further. See [pull #1251](https://github.com/Mottie/tablesorter/pull/1251); thanks [@Herst](https://github.com/Herst)!
* Add Materialize theme style. Fixes [issue #1242](https://github.com/Mottie/tablesorter/issues/1242).
* Meta:
* Grunt: Fix IIFE jQuery reference. Fixes [issue #1255](https://github.com/Mottie/tablesorter/issues/1255).
* Grunt: Update dependencies.
* Testing: Add filter anyMatch queries; Sadly unrelated to [issue #1267](https://github.com/Mottie/tablesorter/issues/1267).
* Bower: Oust meta warnings. Fixes [issue #1264](https://github.com/Mottie/tablesorter/issues/1264).
* Bower: Add recommending settings. Fixes [issue #1265](https://github.com/Mottie/tablesorter/issues/1265).

View File

@ -1,6 +1,6 @@
/*! /*!
* tablesorter (FORK) pager plugin * tablesorter (FORK) pager plugin
* updated 7/11/2016 (v2.26.6) * updated 8/17/2016 (v2.27.3)
*/ */
/*jshint browser:true, jquery:true, unused:false */ /*jshint browser:true, jquery:true, unused:false */
;(function($) { ;(function($) {

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
/*! tablesorter (FORK) - updated 08-02-2016 (v2.27.2)*/ /*! tablesorter (FORK) - updated 08-17-2016 (v2.27.3)*/
/* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */ /* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
(function(factory) { (function(factory) {
if (typeof define === 'function' && define.amd) { if (typeof define === 'function' && define.amd) {
@ -10,7 +10,7 @@
} }
}(function(jQuery) { }(function(jQuery) {
/*! TableSorter (FORK) v2.27.2 *//* /*! TableSorter (FORK) v2.27.3 *//*
* Client-side table sorting with ease! * Client-side table sorting with ease!
* @requires jQuery v1.2.6+ * @requires jQuery v1.2.6+
* *
@ -34,7 +34,7 @@
'use strict'; 'use strict';
var ts = $.tablesorter = { var ts = $.tablesorter = {
version : '2.27.2', version : '2.27.3',
parsers : [], parsers : [],
widgets : [], widgets : [],
@ -2291,7 +2291,7 @@
// c.$headerIndexed is not defined initially // c.$headerIndexed is not defined initially
$cell = c.$headerIndexed && c.$headerIndexed[ indx ] || $cell = c.$headerIndexed && c.$headerIndexed[ indx ] ||
$cells.filter( '[data-column="' + indx + '"]:last' ); $cells.filter( '[data-column="' + indx + '"]:last' );
if ( obj[ indx ] ) { if ( typeof obj[ indx ] !== 'undefined' ) {
return getCell ? obj[ indx ] : obj[ $cells.index( $cell ) ]; return getCell ? obj[ indx ] : obj[ $cells.index( $cell ) ];
} }
for ( key in obj ) { for ( key in obj ) {
@ -3120,7 +3120,7 @@
})(jQuery); })(jQuery);
/*! Widget: filter - updated 7/31/2016 (v2.27.0) *//* /*! Widget: filter - updated 8/17/2016 (v2.27.3) *//*
* Requires tablesorter v2.8+ and jQuery 1.7+ * Requires tablesorter v2.8+ and jQuery 1.7+
* by Rob Garrison * by Rob Garrison
*/ */
@ -3559,8 +3559,10 @@
// force a new search since content has changed // force a new search since content has changed
c.lastCombinedFilter = null; c.lastCombinedFilter = null;
c.lastSearch = []; c.lastSearch = [];
// update filterFormatters after update - Fixes #1237 // update filterFormatters after update (& small delay) - Fixes #1237
c.$table.triggerHandler( 'filterFomatterUpdate' ); setTimeout(function(){
c.$table.triggerHandler( 'filterFomatterUpdate' );
}, 100);
} }
// pass true ( skipFirst ) to prevent the tablesorter.setFilters function from skipping the first // pass true ( skipFirst ) to prevent the tablesorter.setFilters function from skipping the first
// input ensures all inputs are updated when a search is triggered on the table // input ensures all inputs are updated when a search is triggered on the table
@ -3918,19 +3920,24 @@
}) })
.bind( 'keyup' + namespace, function( event ) { .bind( 'keyup' + namespace, function( event ) {
wo = table.config.widgetOptions; // make sure "wo" isn't cached wo = table.config.widgetOptions; // make sure "wo" isn't cached
var column = parseInt( $( this ).attr( 'data-column' ), 10 ); var column = parseInt( $( this ).attr( 'data-column' ), 10 ),
liveSearch = typeof wo.filter_liveSearch === 'boolean' ? wo.filter_liveSearch :
ts.getColumnData( table, wo.filter_liveSearch, column );
if ( typeof liveSearch === 'undefined' ) {
liveSearch = wo.filter_liveSearch.fallback || false;
}
$( this ).attr( 'data-lastSearchTime', new Date().getTime() ); $( this ).attr( 'data-lastSearchTime', new Date().getTime() );
// emulate what webkit does.... escape clears the filter // emulate what webkit does.... escape clears the filter
if ( event.which === tskeyCodes.escape ) { if ( event.which === tskeyCodes.escape ) {
// make sure to restore the last value on escape // make sure to restore the last value on escape
this.value = wo.filter_resetOnEsc ? '' : c.lastSearch[column]; this.value = wo.filter_resetOnEsc ? '' : c.lastSearch[column];
// live search // live search
} else if ( wo.filter_liveSearch === false ) { } else if ( liveSearch === false ) {
return; return;
// don't return if the search value is empty ( all rows need to be revealed ) // don't return if the search value is empty ( all rows need to be revealed )
} else if ( this.value !== '' && ( } else if ( this.value !== '' && (
// liveSearch can contain a min value length; ignore arrow and meta keys, but allow backspace // liveSearch can contain a min value length; ignore arrow and meta keys, but allow backspace
( typeof wo.filter_liveSearch === 'number' && this.value.length < wo.filter_liveSearch ) || ( typeof liveSearch === 'number' && this.value.length < liveSearch ) ||
// let return & backspace continue on, but ignore arrows & non-valid characters // let return & backspace continue on, but ignore arrows & non-valid characters
( event.which !== tskeyCodes.enter && event.which !== tskeyCodes.backSpace && ( event.which !== tskeyCodes.enter && event.which !== tskeyCodes.backSpace &&
( event.which < tskeyCodes.space || ( event.which >= tskeyCodes.left && event.which <= tskeyCodes.down ) ) ) ) ) { ( event.which < tskeyCodes.space || ( event.which >= tskeyCodes.left && event.which <= tskeyCodes.down ) ) ) ) ) {
@ -3952,18 +3959,31 @@
event.preventDefault(); event.preventDefault();
// init search with no delay // init search with no delay
$( this ).attr( 'data-lastSearchTime', new Date().getTime() ); $( this ).attr( 'data-lastSearchTime', new Date().getTime() );
tsf.searching( table, event.type !== 'keypress', true ); tsf.searching( table, event.type !== 'keypress', true, column );
} }
}); });
}, },
searching: function( table, filter, skipFirst ) { searching: function( table, filter, skipFirst, column ) {
var wo = table.config.widgetOptions; var liveSearch,
wo = table.config.widgetOptions;
if (typeof column === 'undefined') {
// no delay
liveSearch = false;
} else {
liveSearch = typeof wo.filter_liveSearch === 'boolean' ?
wo.filter_liveSearch :
// get column setting, or set to fallback value, or default to false
ts.getColumnData( table, wo.filter_liveSearch, column );
if ( typeof liveSearch !== 'undefined' ) {
liveSearch = wo.filter_liveSearch.fallback || false;
}
}
clearTimeout( wo.filter_searchTimer ); clearTimeout( wo.filter_searchTimer );
if ( typeof filter === 'undefined' || filter === true ) { if ( typeof filter === 'undefined' || filter === true ) {
// delay filtering // delay filtering
wo.filter_searchTimer = setTimeout( function() { wo.filter_searchTimer = setTimeout( function() {
tsf.checkFilters( table, filter, skipFirst ); tsf.checkFilters( table, filter, skipFirst );
}, wo.filter_liveSearch ? wo.filter_searchDelay : 10 ); }, liveSearch ? wo.filter_searchDelay : 10 );
} else { } else {
// skip delay // skip delay
tsf.checkFilters( table, filter, skipFirst ); tsf.checkFilters( table, filter, skipFirst );

File diff suppressed because one or more lines are too long

View File

@ -8,7 +8,7 @@
} }
}(function(jQuery) { }(function(jQuery) {
/*! TableSorter (FORK) v2.27.2 *//* /*! TableSorter (FORK) v2.27.3 *//*
* Client-side table sorting with ease! * Client-side table sorting with ease!
* @requires jQuery v1.2.6+ * @requires jQuery v1.2.6+
* *
@ -32,7 +32,7 @@
'use strict'; 'use strict';
var ts = $.tablesorter = { var ts = $.tablesorter = {
version : '2.27.2', version : '2.27.3',
parsers : [], parsers : [],
widgets : [], widgets : [],
@ -2289,7 +2289,7 @@
// c.$headerIndexed is not defined initially // c.$headerIndexed is not defined initially
$cell = c.$headerIndexed && c.$headerIndexed[ indx ] || $cell = c.$headerIndexed && c.$headerIndexed[ indx ] ||
$cells.filter( '[data-column="' + indx + '"]:last' ); $cells.filter( '[data-column="' + indx + '"]:last' );
if ( obj[ indx ] ) { if ( typeof obj[ indx ] !== 'undefined' ) {
return getCell ? obj[ indx ] : obj[ $cells.index( $cell ) ]; return getCell ? obj[ indx ] : obj[ $cells.index( $cell ) ];
} }
for ( key in obj ) { for ( key in obj ) {

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
/*! tablesorter (FORK) - updated 08-02-2016 (v2.27.2)*/ /*! tablesorter (FORK) - updated 08-17-2016 (v2.27.3)*/
/* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */ /* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
(function(factory) { (function(factory) {
if (typeof define === 'function' && define.amd) { if (typeof define === 'function' && define.amd) {
@ -376,7 +376,7 @@
})(jQuery); })(jQuery);
/*! Widget: filter - updated 7/31/2016 (v2.27.0) *//* /*! Widget: filter - updated 8/17/2016 (v2.27.3) *//*
* Requires tablesorter v2.8+ and jQuery 1.7+ * Requires tablesorter v2.8+ and jQuery 1.7+
* by Rob Garrison * by Rob Garrison
*/ */
@ -815,8 +815,10 @@
// force a new search since content has changed // force a new search since content has changed
c.lastCombinedFilter = null; c.lastCombinedFilter = null;
c.lastSearch = []; c.lastSearch = [];
// update filterFormatters after update - Fixes #1237 // update filterFormatters after update (& small delay) - Fixes #1237
c.$table.triggerHandler( 'filterFomatterUpdate' ); setTimeout(function(){
c.$table.triggerHandler( 'filterFomatterUpdate' );
}, 100);
} }
// pass true ( skipFirst ) to prevent the tablesorter.setFilters function from skipping the first // pass true ( skipFirst ) to prevent the tablesorter.setFilters function from skipping the first
// input ensures all inputs are updated when a search is triggered on the table // input ensures all inputs are updated when a search is triggered on the table
@ -1174,19 +1176,24 @@
}) })
.bind( 'keyup' + namespace, function( event ) { .bind( 'keyup' + namespace, function( event ) {
wo = table.config.widgetOptions; // make sure "wo" isn't cached wo = table.config.widgetOptions; // make sure "wo" isn't cached
var column = parseInt( $( this ).attr( 'data-column' ), 10 ); var column = parseInt( $( this ).attr( 'data-column' ), 10 ),
liveSearch = typeof wo.filter_liveSearch === 'boolean' ? wo.filter_liveSearch :
ts.getColumnData( table, wo.filter_liveSearch, column );
if ( typeof liveSearch === 'undefined' ) {
liveSearch = wo.filter_liveSearch.fallback || false;
}
$( this ).attr( 'data-lastSearchTime', new Date().getTime() ); $( this ).attr( 'data-lastSearchTime', new Date().getTime() );
// emulate what webkit does.... escape clears the filter // emulate what webkit does.... escape clears the filter
if ( event.which === tskeyCodes.escape ) { if ( event.which === tskeyCodes.escape ) {
// make sure to restore the last value on escape // make sure to restore the last value on escape
this.value = wo.filter_resetOnEsc ? '' : c.lastSearch[column]; this.value = wo.filter_resetOnEsc ? '' : c.lastSearch[column];
// live search // live search
} else if ( wo.filter_liveSearch === false ) { } else if ( liveSearch === false ) {
return; return;
// don't return if the search value is empty ( all rows need to be revealed ) // don't return if the search value is empty ( all rows need to be revealed )
} else if ( this.value !== '' && ( } else if ( this.value !== '' && (
// liveSearch can contain a min value length; ignore arrow and meta keys, but allow backspace // liveSearch can contain a min value length; ignore arrow and meta keys, but allow backspace
( typeof wo.filter_liveSearch === 'number' && this.value.length < wo.filter_liveSearch ) || ( typeof liveSearch === 'number' && this.value.length < liveSearch ) ||
// let return & backspace continue on, but ignore arrows & non-valid characters // let return & backspace continue on, but ignore arrows & non-valid characters
( event.which !== tskeyCodes.enter && event.which !== tskeyCodes.backSpace && ( event.which !== tskeyCodes.enter && event.which !== tskeyCodes.backSpace &&
( event.which < tskeyCodes.space || ( event.which >= tskeyCodes.left && event.which <= tskeyCodes.down ) ) ) ) ) { ( event.which < tskeyCodes.space || ( event.which >= tskeyCodes.left && event.which <= tskeyCodes.down ) ) ) ) ) {
@ -1208,18 +1215,31 @@
event.preventDefault(); event.preventDefault();
// init search with no delay // init search with no delay
$( this ).attr( 'data-lastSearchTime', new Date().getTime() ); $( this ).attr( 'data-lastSearchTime', new Date().getTime() );
tsf.searching( table, event.type !== 'keypress', true ); tsf.searching( table, event.type !== 'keypress', true, column );
} }
}); });
}, },
searching: function( table, filter, skipFirst ) { searching: function( table, filter, skipFirst, column ) {
var wo = table.config.widgetOptions; var liveSearch,
wo = table.config.widgetOptions;
if (typeof column === 'undefined') {
// no delay
liveSearch = false;
} else {
liveSearch = typeof wo.filter_liveSearch === 'boolean' ?
wo.filter_liveSearch :
// get column setting, or set to fallback value, or default to false
ts.getColumnData( table, wo.filter_liveSearch, column );
if ( typeof liveSearch !== 'undefined' ) {
liveSearch = wo.filter_liveSearch.fallback || false;
}
}
clearTimeout( wo.filter_searchTimer ); clearTimeout( wo.filter_searchTimer );
if ( typeof filter === 'undefined' || filter === true ) { if ( typeof filter === 'undefined' || filter === true ) {
// delay filtering // delay filtering
wo.filter_searchTimer = setTimeout( function() { wo.filter_searchTimer = setTimeout( function() {
tsf.checkFilters( table, filter, skipFirst ); tsf.checkFilters( table, filter, skipFirst );
}, wo.filter_liveSearch ? wo.filter_searchDelay : 10 ); }, liveSearch ? wo.filter_searchDelay : 10 );
} else { } else {
// skip delay // skip delay
tsf.checkFilters( table, filter, skipFirst ); tsf.checkFilters( table, filter, skipFirst );

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -251,6 +251,7 @@ $(function(){
<h3 id="notes"><a href="#">Notes</a></h3> <h3 id="notes"><a href="#">Notes</a></h3>
<div> <div>
<ul> <ul>
<li>In <span class="verison">v2.27.3</span>, <code>filter_liveSearch</code> will now accept an object containing zero-based column indexes or header class names.</li>
<li>In <span class="verison">v2.26.6</span>, the <a class="intlink" href="#filter-hidefilters"><code>hideFilters</code></a> setting will now accept a function to determine when to hide the filter row.</li> <li>In <span class="verison">v2.26.6</span>, the <a class="intlink" href="#filter-hidefilters"><code>hideFilters</code></a> setting will now accept a function to determine when to hide the filter row.</li>
<li>In <span class="version">v2.25.6</span>, added <a class="intlink" href="#methods"><code>filterResetSaved</code></a> method to clear stored filter values.</li> <li>In <span class="version">v2.25.6</span>, added <a class="intlink" href="#methods"><code>filterResetSaved</code></a> method to clear stored filter values.</li>
<li>In <span class="version">v2.25.2</span>, added <a class="intlink" href="#filter-resetonesc"><code>filter_resetOnEsc</code></a> option.</li> <li>In <span class="version">v2.25.2</span>, added <a class="intlink" href="#filter-resetonesc"><code>filter_resetOnEsc</code></a> option.</li>

View File

@ -491,9 +491,9 @@
<br><br> <br><br>
</li> </li>
<li>Pager plugin (<a href="example-pager.html">basic</a> &amp; <a href="example-pager-ajax.html">ajax</a> demos; <span class="version updated">v2.26.6</span>).</li> <li>Pager plugin (<a href="example-pager.html">basic</a> &amp; <a href="example-pager-ajax.html">ajax</a> demos; <span class="version updated">v2.27.3</span>).</li>
<li> <li>
Pager widget (<a href="example-widget-pager.html">basic</a> &amp; <a href="example-widget-pager-ajax.html">ajax</a> demos) (<span class="version">v2.12</span>; <span class="version updated">v2.26.6</span>).<br> Pager widget (<a href="example-widget-pager.html">basic</a> &amp; <a href="example-widget-pager-ajax.html">ajax</a> demos) (<span class="version">v2.12</span>; <span class="version updated">v2.27.3</span>).<br>
<br> <br>
</li> </li>

View File

@ -4,7 +4,7 @@
*/ */
/*! tablesorter (FORK) - updated 08-02-2016 (v2.27.2)*/ /*! tablesorter (FORK) - updated 08-17-2016 (v2.27.3)*/
/* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */ /* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
(function(factory) { (function(factory) {
if (typeof define === 'function' && define.amd) { if (typeof define === 'function' && define.amd) {
@ -16,7 +16,7 @@
} }
}(function(jQuery) { }(function(jQuery) {
/*! TableSorter (FORK) v2.27.2 *//* /*! TableSorter (FORK) v2.27.3 *//*
* Client-side table sorting with ease! * Client-side table sorting with ease!
* @requires jQuery v1.2.6+ * @requires jQuery v1.2.6+
* *
@ -40,7 +40,7 @@
'use strict'; 'use strict';
var ts = $.tablesorter = { var ts = $.tablesorter = {
version : '2.27.2', version : '2.27.3',
parsers : [], parsers : [],
widgets : [], widgets : [],
@ -2297,7 +2297,7 @@
// c.$headerIndexed is not defined initially // c.$headerIndexed is not defined initially
$cell = c.$headerIndexed && c.$headerIndexed[ indx ] || $cell = c.$headerIndexed && c.$headerIndexed[ indx ] ||
$cells.filter( '[data-column="' + indx + '"]:last' ); $cells.filter( '[data-column="' + indx + '"]:last' );
if ( obj[ indx ] ) { if ( typeof obj[ indx ] !== 'undefined' ) {
return getCell ? obj[ indx ] : obj[ $cells.index( $cell ) ]; return getCell ? obj[ indx ] : obj[ $cells.index( $cell ) ];
} }
for ( key in obj ) { for ( key in obj ) {
@ -3126,7 +3126,7 @@
})(jQuery); })(jQuery);
/*! Widget: filter - updated 7/31/2016 (v2.27.0) *//* /*! Widget: filter - updated 8/17/2016 (v2.27.3) *//*
* Requires tablesorter v2.8+ and jQuery 1.7+ * Requires tablesorter v2.8+ and jQuery 1.7+
* by Rob Garrison * by Rob Garrison
*/ */
@ -3565,8 +3565,10 @@
// force a new search since content has changed // force a new search since content has changed
c.lastCombinedFilter = null; c.lastCombinedFilter = null;
c.lastSearch = []; c.lastSearch = [];
// update filterFormatters after update - Fixes #1237 // update filterFormatters after update (& small delay) - Fixes #1237
c.$table.triggerHandler( 'filterFomatterUpdate' ); setTimeout(function(){
c.$table.triggerHandler( 'filterFomatterUpdate' );
}, 100);
} }
// pass true ( skipFirst ) to prevent the tablesorter.setFilters function from skipping the first // pass true ( skipFirst ) to prevent the tablesorter.setFilters function from skipping the first
// input ensures all inputs are updated when a search is triggered on the table // input ensures all inputs are updated when a search is triggered on the table
@ -3924,19 +3926,24 @@
}) })
.bind( 'keyup' + namespace, function( event ) { .bind( 'keyup' + namespace, function( event ) {
wo = table.config.widgetOptions; // make sure "wo" isn't cached wo = table.config.widgetOptions; // make sure "wo" isn't cached
var column = parseInt( $( this ).attr( 'data-column' ), 10 ); var column = parseInt( $( this ).attr( 'data-column' ), 10 ),
liveSearch = typeof wo.filter_liveSearch === 'boolean' ? wo.filter_liveSearch :
ts.getColumnData( table, wo.filter_liveSearch, column );
if ( typeof liveSearch === 'undefined' ) {
liveSearch = wo.filter_liveSearch.fallback || false;
}
$( this ).attr( 'data-lastSearchTime', new Date().getTime() ); $( this ).attr( 'data-lastSearchTime', new Date().getTime() );
// emulate what webkit does.... escape clears the filter // emulate what webkit does.... escape clears the filter
if ( event.which === tskeyCodes.escape ) { if ( event.which === tskeyCodes.escape ) {
// make sure to restore the last value on escape // make sure to restore the last value on escape
this.value = wo.filter_resetOnEsc ? '' : c.lastSearch[column]; this.value = wo.filter_resetOnEsc ? '' : c.lastSearch[column];
// live search // live search
} else if ( wo.filter_liveSearch === false ) { } else if ( liveSearch === false ) {
return; return;
// don't return if the search value is empty ( all rows need to be revealed ) // don't return if the search value is empty ( all rows need to be revealed )
} else if ( this.value !== '' && ( } else if ( this.value !== '' && (
// liveSearch can contain a min value length; ignore arrow and meta keys, but allow backspace // liveSearch can contain a min value length; ignore arrow and meta keys, but allow backspace
( typeof wo.filter_liveSearch === 'number' && this.value.length < wo.filter_liveSearch ) || ( typeof liveSearch === 'number' && this.value.length < liveSearch ) ||
// let return & backspace continue on, but ignore arrows & non-valid characters // let return & backspace continue on, but ignore arrows & non-valid characters
( event.which !== tskeyCodes.enter && event.which !== tskeyCodes.backSpace && ( event.which !== tskeyCodes.enter && event.which !== tskeyCodes.backSpace &&
( event.which < tskeyCodes.space || ( event.which >= tskeyCodes.left && event.which <= tskeyCodes.down ) ) ) ) ) { ( event.which < tskeyCodes.space || ( event.which >= tskeyCodes.left && event.which <= tskeyCodes.down ) ) ) ) ) {
@ -3958,18 +3965,31 @@
event.preventDefault(); event.preventDefault();
// init search with no delay // init search with no delay
$( this ).attr( 'data-lastSearchTime', new Date().getTime() ); $( this ).attr( 'data-lastSearchTime', new Date().getTime() );
tsf.searching( table, event.type !== 'keypress', true ); tsf.searching( table, event.type !== 'keypress', true, column );
} }
}); });
}, },
searching: function( table, filter, skipFirst ) { searching: function( table, filter, skipFirst, column ) {
var wo = table.config.widgetOptions; var liveSearch,
wo = table.config.widgetOptions;
if (typeof column === 'undefined') {
// no delay
liveSearch = false;
} else {
liveSearch = typeof wo.filter_liveSearch === 'boolean' ?
wo.filter_liveSearch :
// get column setting, or set to fallback value, or default to false
ts.getColumnData( table, wo.filter_liveSearch, column );
if ( typeof liveSearch !== 'undefined' ) {
liveSearch = wo.filter_liveSearch.fallback || false;
}
}
clearTimeout( wo.filter_searchTimer ); clearTimeout( wo.filter_searchTimer );
if ( typeof filter === 'undefined' || filter === true ) { if ( typeof filter === 'undefined' || filter === true ) {
// delay filtering // delay filtering
wo.filter_searchTimer = setTimeout( function() { wo.filter_searchTimer = setTimeout( function() {
tsf.checkFilters( table, filter, skipFirst ); tsf.checkFilters( table, filter, skipFirst );
}, wo.filter_liveSearch ? wo.filter_searchDelay : 10 ); }, liveSearch ? wo.filter_searchDelay : 10 );
} else { } else {
// skip delay // skip delay
tsf.checkFilters( table, filter, skipFirst ); tsf.checkFilters( table, filter, skipFirst );

View File

@ -1,4 +1,4 @@
/*! TableSorter (FORK) v2.27.2 *//* /*! TableSorter (FORK) v2.27.3 *//*
* Client-side table sorting with ease! * Client-side table sorting with ease!
* @requires jQuery v1.2.6+ * @requires jQuery v1.2.6+
* *
@ -22,7 +22,7 @@
'use strict'; 'use strict';
var ts = $.tablesorter = { var ts = $.tablesorter = {
version : '2.27.2', version : '2.27.3',
parsers : [], parsers : [],
widgets : [], widgets : [],

View File

@ -4,7 +4,7 @@
*/ */
/*! tablesorter (FORK) - updated 08-02-2016 (v2.27.2)*/ /*! tablesorter (FORK) - updated 08-17-2016 (v2.27.3)*/
/* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */ /* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
(function(factory) { (function(factory) {
if (typeof define === 'function' && define.amd) { if (typeof define === 'function' && define.amd) {
@ -382,7 +382,7 @@
})(jQuery); })(jQuery);
/*! Widget: filter - updated 7/31/2016 (v2.27.0) *//* /*! Widget: filter - updated 8/17/2016 (v2.27.3) *//*
* Requires tablesorter v2.8+ and jQuery 1.7+ * Requires tablesorter v2.8+ and jQuery 1.7+
* by Rob Garrison * by Rob Garrison
*/ */
@ -821,8 +821,10 @@
// force a new search since content has changed // force a new search since content has changed
c.lastCombinedFilter = null; c.lastCombinedFilter = null;
c.lastSearch = []; c.lastSearch = [];
// update filterFormatters after update - Fixes #1237 // update filterFormatters after update (& small delay) - Fixes #1237
c.$table.triggerHandler( 'filterFomatterUpdate' ); setTimeout(function(){
c.$table.triggerHandler( 'filterFomatterUpdate' );
}, 100);
} }
// pass true ( skipFirst ) to prevent the tablesorter.setFilters function from skipping the first // pass true ( skipFirst ) to prevent the tablesorter.setFilters function from skipping the first
// input ensures all inputs are updated when a search is triggered on the table // input ensures all inputs are updated when a search is triggered on the table
@ -1180,19 +1182,24 @@
}) })
.bind( 'keyup' + namespace, function( event ) { .bind( 'keyup' + namespace, function( event ) {
wo = table.config.widgetOptions; // make sure "wo" isn't cached wo = table.config.widgetOptions; // make sure "wo" isn't cached
var column = parseInt( $( this ).attr( 'data-column' ), 10 ); var column = parseInt( $( this ).attr( 'data-column' ), 10 ),
liveSearch = typeof wo.filter_liveSearch === 'boolean' ? wo.filter_liveSearch :
ts.getColumnData( table, wo.filter_liveSearch, column );
if ( typeof liveSearch === 'undefined' ) {
liveSearch = wo.filter_liveSearch.fallback || false;
}
$( this ).attr( 'data-lastSearchTime', new Date().getTime() ); $( this ).attr( 'data-lastSearchTime', new Date().getTime() );
// emulate what webkit does.... escape clears the filter // emulate what webkit does.... escape clears the filter
if ( event.which === tskeyCodes.escape ) { if ( event.which === tskeyCodes.escape ) {
// make sure to restore the last value on escape // make sure to restore the last value on escape
this.value = wo.filter_resetOnEsc ? '' : c.lastSearch[column]; this.value = wo.filter_resetOnEsc ? '' : c.lastSearch[column];
// live search // live search
} else if ( wo.filter_liveSearch === false ) { } else if ( liveSearch === false ) {
return; return;
// don't return if the search value is empty ( all rows need to be revealed ) // don't return if the search value is empty ( all rows need to be revealed )
} else if ( this.value !== '' && ( } else if ( this.value !== '' && (
// liveSearch can contain a min value length; ignore arrow and meta keys, but allow backspace // liveSearch can contain a min value length; ignore arrow and meta keys, but allow backspace
( typeof wo.filter_liveSearch === 'number' && this.value.length < wo.filter_liveSearch ) || ( typeof liveSearch === 'number' && this.value.length < liveSearch ) ||
// let return & backspace continue on, but ignore arrows & non-valid characters // let return & backspace continue on, but ignore arrows & non-valid characters
( event.which !== tskeyCodes.enter && event.which !== tskeyCodes.backSpace && ( event.which !== tskeyCodes.enter && event.which !== tskeyCodes.backSpace &&
( event.which < tskeyCodes.space || ( event.which >= tskeyCodes.left && event.which <= tskeyCodes.down ) ) ) ) ) { ( event.which < tskeyCodes.space || ( event.which >= tskeyCodes.left && event.which <= tskeyCodes.down ) ) ) ) ) {
@ -1214,18 +1221,31 @@
event.preventDefault(); event.preventDefault();
// init search with no delay // init search with no delay
$( this ).attr( 'data-lastSearchTime', new Date().getTime() ); $( this ).attr( 'data-lastSearchTime', new Date().getTime() );
tsf.searching( table, event.type !== 'keypress', true ); tsf.searching( table, event.type !== 'keypress', true, column );
} }
}); });
}, },
searching: function( table, filter, skipFirst ) { searching: function( table, filter, skipFirst, column ) {
var wo = table.config.widgetOptions; var liveSearch,
wo = table.config.widgetOptions;
if (typeof column === 'undefined') {
// no delay
liveSearch = false;
} else {
liveSearch = typeof wo.filter_liveSearch === 'boolean' ?
wo.filter_liveSearch :
// get column setting, or set to fallback value, or default to false
ts.getColumnData( table, wo.filter_liveSearch, column );
if ( typeof liveSearch !== 'undefined' ) {
liveSearch = wo.filter_liveSearch.fallback || false;
}
}
clearTimeout( wo.filter_searchTimer ); clearTimeout( wo.filter_searchTimer );
if ( typeof filter === 'undefined' || filter === true ) { if ( typeof filter === 'undefined' || filter === true ) {
// delay filtering // delay filtering
wo.filter_searchTimer = setTimeout( function() { wo.filter_searchTimer = setTimeout( function() {
tsf.checkFilters( table, filter, skipFirst ); tsf.checkFilters( table, filter, skipFirst );
}, wo.filter_liveSearch ? wo.filter_searchDelay : 10 ); }, liveSearch ? wo.filter_searchDelay : 10 );
} else { } else {
// skip delay // skip delay
tsf.checkFilters( table, filter, skipFirst ); tsf.checkFilters( table, filter, skipFirst );

View File

@ -1,4 +1,4 @@
/*! Widget: filter - updated 7/31/2016 (v2.27.0) *//* /*! Widget: filter - updated 8/17/2016 (v2.27.3) *//*
* Requires tablesorter v2.8+ and jQuery 1.7+ * Requires tablesorter v2.8+ and jQuery 1.7+
* by Rob Garrison * by Rob Garrison
*/ */

View File

@ -1,4 +1,4 @@
/*! Widget: Pager - updated 7/11/2016 (v2.26.6) */ /*! Widget: Pager - updated 8/17/2016 (v2.27.3) */
/* Requires tablesorter v2.8+ and jQuery 1.7+ /* Requires tablesorter v2.8+ and jQuery 1.7+
* by Rob Garrison * by Rob Garrison
*/ */

View File

@ -1,7 +1,7 @@
{ {
"name": "tablesorter", "name": "tablesorter",
"title": "tablesorter", "title": "tablesorter",
"version": "2.27.2", "version": "2.27.3",
"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.", "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": { "author": {
"name": "Christian Bach", "name": "Christian Bach",

View File

@ -1,7 +1,7 @@
{ {
"name": "tablesorter", "name": "tablesorter",
"title": "tablesorter", "title": "tablesorter",
"version": "2.27.2", "version": "2.27.3",
"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.", "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": { "author": {
"name": "Christian Bach", "name": "Christian Bach",