Skip to content

Commit

Permalink
2.29.1
Browse files Browse the repository at this point in the history
  • Loading branch information
Mottie committed Dec 13, 2017
1 parent e496cbf commit a225a40
Show file tree
Hide file tree
Showing 16 changed files with 233 additions and 174 deletions.
34 changes: 22 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,28 @@ If you would like to contribute, please...

View the [complete change log here](https://github.com/Mottie/tablesorter/wiki/Changes).

#### <a name="v2.29.1">Version 2.29.1</a> (12/13/2017)

* Core:
* Fix non-typical use of selectorHeaders. See [issue #1459](https://github.com/Mottie/tablesorter/issues/1459).
* Update external header icons on sort. Fixes [issue #1483](https://github.com/Mottie/tablesorter/issues/1483).
* Remove an empty block.
* Filter:
* Select exact matches ignore "and" and "or" keywords. Fixes [issue #1486](https://github.com/Mottie/tablesorter/issues/1486).
* Resizable:
* `addLastColumn` stops adding handles to hidden columns. Fixes [issue #1485](https://github.com/Mottie/tablesorter/issues/1485).
* Scroller:
* Adjust columns on `filterInit`. See [issue #1468](https://github.com/Mottie/tablesorter/issues/1468).
* Vertical Group:
* New widget added. See [demo](https://mottie.github.io/tablesorter/docs/example-widget-vertical-group.html).
* Thanks to [aavmurphy](https://github.com/aavmurphy) for sharing the code. See [issue #1469](https://github.com/Mottie/tablesorter/issues/1469) and [PR #1470](https://github.com/Mottie/tablesorter/pull/1470).
* Docs:
* Fix pager example.
* List all contained IP parsers. Fixes [issue #1484](https://github.com/Mottie/tablesorter/issues/1484).
* Fix Bootstrap v2 demo; restored gyphs images.
* Meta:
* Update authors.

#### <a name="v2.29.0">Version 2.29.0</a> (9/27/2017)

* Core:
Expand Down Expand Up @@ -164,15 +186,3 @@ View the [complete change log here](https://github.com/Mottie/tablesorter/wiki/C
* Use src files in filter formatter demo for testing.
* Meta:
* Include `js` & `css` folders with bower installs.

#### <a name="v2.28.14">Version 2.28.14</a> (6/8/2017)

* Core:
* Show console error for mismatched column count. See [issue #1415](https://github.com/Mottie/tablesorter/issues/1415).
* Pager:
* (addon) Ensure ajax is called after filter widget init. Fixes [issue #1389](https://github.com/Mottie/tablesorter/issues/1389).
* (addon) Fix height issues for certain browsers (border-spacing). See [pull #1418](https://github.com/Mottie/tablesorter/pull/1418); thanks [@DoctorWhite](https://github.com/DoctorWhite)
* (widget) Apply height adjustment code to pager widget.
* Use selectorRemove to remove error rows. Removes error rows with dynamically changed class names.
* Meta:
* Added [AUTHORS](https://github.com/Mottie/tablesorter/blob/master/AUTHORS) file.
108 changes: 59 additions & 49 deletions dist/js/jquery.tablesorter.combined.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*! tablesorter (FORK) - updated 09-27-2017 (v2.29.0)*/
/*! tablesorter (FORK) - updated 12-13-2017 (v2.29.1)*/
/* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
(function(factory) {
if (typeof define === 'function' && define.amd) {
Expand All @@ -10,7 +10,7 @@
}
}(function(jQuery) {

/*! TableSorter (FORK) v2.29.0 *//*
/*! TableSorter (FORK) v2.29.1 *//*
* Client-side table sorting with ease!
* @requires jQuery v1.2.6+
*
Expand All @@ -34,7 +34,7 @@
'use strict';
var ts = $.tablesorter = {

version : '2.29.0',
version : '2.29.1',

parsers : [],
widgets : [],
Expand Down Expand Up @@ -526,8 +526,7 @@
if ( c.delayInit && ts.isEmptyObject( c.cache ) ) {
ts.buildCache( c );
}
// jQuery v1.2.6 doesn't have closest()
$cell = ts.getHeaderCell( $( this ) );
$cell = ts.getClosest( $( this ), '.' + ts.css.header );
// reference original table headers and find the same cell
// don't use $headers or IE8 throws an error - see #987
temp = $headers.index( $cell );
Expand Down Expand Up @@ -567,10 +566,15 @@
'';
// redefine c.$headers here in case of an updateAll that replaces or adds an entire header cell - see #683
c.$headers = $( $.map( c.$table.find( c.selectorHeaders ), function( elem, index ) {
var configHeaders, header, column, template, tmp, $th,
var configHeaders, header, column, template, tmp,
$elem = $( elem );
// ignore cell (don't add it to c.$headers) if row has ignoreRow class
if ( $elem.parent().hasClass( c.cssIgnoreRow ) ) { return; }
if ( ts.getClosest( $elem, 'tr' ).hasClass( c.cssIgnoreRow ) ) { return; }
// transfer data-column to element if not th/td - #1459
if ( !/(th|td)/i.test( elem.nodeName ) ) {
tmp = ts.getClosest( $elem, 'th, td' );
$elem.attr( 'data-column', tmp.attr( 'data-column' ) );
}
// make sure to get header cell & not column indexed cell
configHeaders = ts.getColumnData( c.table, c.headers, index, true );
// save original header content
Expand All @@ -593,9 +597,7 @@
if ( c.onRenderHeader ) {
c.onRenderHeader.apply( $elem, [ index, c, c.$table ] );
}
// data-column stored on th or td only
$th = ts.getHeaderCell( $elem );
column = parseInt( $th.attr( 'data-column' ), 10 );
column = parseInt( $elem.attr( 'data-column' ), 10 );
elem.column = column;
tmp = ts.getOrder( ts.getData( $elem, configHeaders, 'sortInitialOrder' ) || c.sortInitialOrder );
// this may get updated numerous times if there are multiple rows
Expand Down Expand Up @@ -631,6 +633,7 @@
if ( ts.isEmptyObject( c.sortVars[ indx ] ) ) {
c.sortVars[ indx ] = {};
}
// Use c.$headers.parent() in case selectorHeaders doesn't point to the th/td
$temp = c.$headers.filter( '[data-column="' + indx + '"]' );
// target sortable column cells, unless there are none, then use non-sortable cells
// .last() added in jQuery 1.4; use .filter(':last') to maintain compatibility with jQuery v1.2.6
Expand Down Expand Up @@ -1094,6 +1097,15 @@
css = [ ts.css.sortAsc + ' ' + c.cssAsc, ts.css.sortDesc + ' ' + c.cssDesc ],
cssIcon = [ c.cssIconAsc, c.cssIconDesc, c.cssIconNone ],
aria = [ 'ascending', 'descending' ],
updateColumnSort = function($el, index) {
$el
.removeClass( none )
.addClass( css[ index ] )
.attr( 'aria-sort', aria[ index ] )
.find( '.' + ts.css.icon )
.removeClass( cssIcon[ 2 ] )
.addClass( cssIcon[ index ] );
},
// find the footer
$extras = c.$table
.find( 'tfoot tr' )
Expand Down Expand Up @@ -1132,7 +1144,7 @@
var include = true,
$el = c.$headers.eq( i ),
col = parseInt( $el.attr( 'data-column' ), 10 ),
end = col + c.$headers[ i ].colSpan;
end = col + ts.getClosest( $el, 'th, td' )[0].colSpan;
for ( ; col < end; col++ ) {
include = include ? include || ts.isValueInArray( col, c.sortList ) > -1 : false;
}
Expand All @@ -1146,23 +1158,13 @@
if ( $sorted.length ) {
for ( column = 0; column < $sorted.length; column++ ) {
if ( !$sorted[ column ].sortDisabled ) {
$sorted
.eq( column )
.removeClass( none )
.addClass( css[ list[ indx ][ 1 ] ] )
.attr( 'aria-sort', aria[ list[ indx ][ 1 ] ] )
.find( '.' + ts.css.icon )
.removeClass( cssIcon[ 2 ] )
.addClass( cssIcon[ list[ indx ][ 1 ] ] );
updateColumnSort( $sorted.eq( column ) , list[ indx ][ 1 ] );
}
}
// add sorted class to footer & extra headers, if they exist
if ( $extras.length ) {
$extras
.filter( '[data-column="' + list[ indx ][ 0 ] + '"]' )
.removeClass( none )
.addClass( css[ list[ indx ][ 1 ] ] );
}
}
// add sorted class to footer & extra headers, if they exist
if ( $extras.length ) {
updateColumnSort( $extras.filter( '[data-column="' + list[ indx ][ 0 ] + '"]' ), list[ indx ][ 1 ] );
}
}
}
Expand All @@ -1173,29 +1175,20 @@
}
},

// This function does NOT return closest if the $el matches the selector
getClosest : function( $el, selector ) {
return $.fn.closest ?
$el.closest( selector ) :
$el.parents( selector ).filter( ':first' );
},

getHeaderCell : function( $el ) {
// jQuery v1.2.6 doesn't have closest()
if ( $.fn.closest ) {
return $el.closest( 'th, td' );
return $el.closest( selector );
}
return /TH|TD/.test( $el[0].nodeName ) ?
return $el.is( selector ) ?
$el :
$el.parents( 'th, td' ).filter( ':first' );
$el.parents( selector ).filter( ':first' );
},

// nextSort (optional), lets you disable next sort text
setColumnAriaLabel : function( c, $header, nextSort ) {
if ( $header.length ) {
var $th = ts.getHeaderCell( $header ),
// data-column always stored on the th/td
column = parseInt( $th.attr( 'data-column' ), 10 ),
var column = parseInt( $header.attr( 'data-column' ), 10 ),
vars = c.sortVars[ column ],
tmp = $header.hasClass( ts.css.sortAsc ) ?
'sortAsc' :
Expand Down Expand Up @@ -1563,10 +1556,10 @@
notMultiSort = !event[ c.sortMultiSortKey ],
table = c.table,
len = c.$headers.length,
// get current column index; *always* stored on th/td
$th = ts.getHeaderCell( $( cell ) ),
col = parseInt( $th.attr( 'data-column' ), 10 ),
th = ts.getClosest( $( cell ), 'th, td' ),
col = parseInt( th.attr( 'data-column' ), 10 ),
order = c.sortVars[ col ].order;
th = th[0];
// Only call sortStart if sorting is enabled
c.$table.triggerHandler( 'sortStart', table );
// get current column sort order
Expand Down Expand Up @@ -1601,8 +1594,8 @@
if ( dir < 2 ) {
c.sortList[ c.sortList.length ] = [ col, dir ];
// add other columns if header spans across multiple
if ( cell.colSpan > 1 ) {
for ( indx = 1; indx < cell.colSpan; indx++ ) {
if ( th.colSpan > 1 ) {
for ( indx = 1; indx < th.colSpan; indx++ ) {
c.sortList[ c.sortList.length ] = [ col + indx, dir ];
// update count on columns in colSpan
c.sortVars[ col + indx ].count = $.inArray( dir, order );
Expand Down Expand Up @@ -1634,8 +1627,8 @@
if ( dir < 2 ) {
c.sortList[ c.sortList.length ] = [ col, dir ];
// add other columns if header spans across multiple
if ( cell.colSpan > 1 ) {
for ( indx = 1; indx < cell.colSpan; indx++ ) {
if ( th.colSpan > 1 ) {
for ( indx = 1; indx < th.colSpan; indx++ ) {
c.sortList[ c.sortList.length ] = [ col + indx, dir ];
// update count on columns in colSpan
c.sortVars[ col + indx ].count = $.inArray( dir, order );
Expand Down Expand Up @@ -2404,7 +2397,7 @@
$cells = ( $headers || c.$headers ),
// c.$headerIndexed is not defined initially
$cell = c.$headerIndexed && c.$headerIndexed[ indx ] ||
$cells.filter( '[data-column="' + indx + '"]:last' );
$cells.find( '[data-column="' + indx + '"]:last' );
if ( typeof obj[ indx ] !== 'undefined' ) {
return getCell ? obj[ indx ] : obj[ $cells.index( $cell ) ];
}
Expand Down Expand Up @@ -4406,6 +4399,7 @@
if ( $.inArray( ffxn, vars.excludeMatch ) < 0 && matches === null ) {
matches = tsf.types[ffxn]( c, data, vars );
if ( matches !== null ) {
data.matchedOn = ffxn;
filterMatched = matches;
}
}
Expand Down Expand Up @@ -4453,6 +4447,7 @@
tsf.multipleColumns( c, wo.filter_$anyMatch ) :
[];
data.$cells = data.$row.children();
data.matchedOn = null;
if ( data.anyMatchFlag && columnIndex.length > 1 || ( data.anyMatchFilter && !hasAnyMatchInput ) ) {
data.anyMatch = true;
data.isMatch = true;
Expand Down Expand Up @@ -4554,7 +4549,9 @@
// cycle through the different filters
// filters return a boolean or null if nothing matches
filterMatched = tsf.processTypes( c, data, vars );
if ( filterMatched !== null ) {
// select with exact match; ignore "and" or "or" within the text; fixes #1486
txt = fxn === true && (data.matchedOn === 'and' || data.matchedOn === 'or');
if ( filterMatched !== null && !txt) {
result = filterMatched;
// Look for match, and add child row data for matching
} else {
Expand Down Expand Up @@ -5713,7 +5710,10 @@
columns = c.columns - 1,
$header = $this.data( 'header' );
if ( !$header ) { return; } // see #859
if ( !$header.is(':visible') ) {
if (
!$header.is(':visible') ||
( !wo.resizable_addLastColumn && ts.resizable.checkVisibleColumns(c, column) )
) {
$this.hide();
} else if ( column < columns || column === columns && wo.resizable_addLastColumn ) {
$this.css({
Expand All @@ -5725,6 +5725,16 @@
});
},

// Fixes #1485
checkVisibleColumns: function( c, column ) {
var i,
len = 0;
for ( i = column + 1; i < c.columns; i++ ) {
len += c.$headerIndexed[i].is( ':visible' ) ? 1 : 0;
}
return len === 0;
},

// prevent text selection while dragging resize bar
toggleTextSelection : function( c, wo, toggle ) {
var namespace = c.namespace + 'tsresize';
Expand Down
4 changes: 2 additions & 2 deletions dist/js/jquery.tablesorter.combined.min.js

Large diffs are not rendered by default.

0 comments on commit a225a40

Please sign in to comment.