jquery-tablesorter 1.22.4 → 1.22.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 007bfb37837f29552a1fe96dae494796008dfc75
4
- data.tar.gz: b83b347cb8192ec99001c4300e48c5929602dc03
3
+ metadata.gz: 68b984c5f81c91e335a23cdd9083215177d5140e
4
+ data.tar.gz: b950cc5f6ef0e12044737a0e9f57eca02182f008
5
5
  SHA512:
6
- metadata.gz: 099f0aad67d2b14274c36439ab14f6e7ecf29aabe02c0e0f8d063c216dd6e699f6b892ee7792a961c148918323e66303e1bfb3ff0225fcb1ad4bc189173447c3
7
- data.tar.gz: 29bf9c7067fcac6b6ba85c5f96ac481106f13d75beb61965a1e37a3897386ae67f1b82fede0fd1c9148899a3e25a3032b967c551f05edae72569d063027b90e3
6
+ metadata.gz: 2982446b36b6fa2a2ea4d0762a32b05c233bc8640e8137abe15cadb305c445b89ab59a44d729462f4fc15ab7bf62d9b33020ce32cb864a0887d0e04c2dc0ff8e
7
+ data.tar.gz: 63b876b827c240be7ed78450b9ec976b2d76263ca138dd2f5bdf28502e638c16586196367e84965731765a951490dddd3b0484925aa9939008fadfe54dd3225b
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
- # jQuery Table Sorter plugin for Rails
1
+ # jQuery tablesorter plugin for Rails
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/jquery-tablesorter.png)](http://badge.fury.io/rb/jquery-tablesorter)
4
4
 
5
- Simple integration of jquery-tablesorter into the asset pipeline.
5
+ Simple integration of jQuery tablesorter ([Mottie's fork]) into the asset pipeline.
6
6
 
7
- Current tablesorter version: 2.27.6 (9/1/2016), [documentation]
7
+ Current tablesorter version: 2.27.7 (9/23/2016), [documentation]
8
8
 
9
9
  Any issue associated with the js/css files, please report to [Mottie's fork].
10
10
 
@@ -24,7 +24,7 @@ Or install it yourself as:
24
24
 
25
25
  ## Requirements
26
26
 
27
- It should work with Rails 3.2 and higher (tested up to 4.2) as well as with ruby 1.9.3 - 2.3.x.
27
+ It should work with Rails 3.2 and higher (tested up to 5) as well as with ruby 1.9.3 - 2.3.x.
28
28
  Each release is always tested with the latest version of both.
29
29
 
30
30
  ## Usage
@@ -1,7 +1,7 @@
1
1
  module JqueryTablesorter
2
2
  MAJOR = 1
3
3
  MINOR = 22
4
- TINY = 4
4
+ TINY = 5
5
5
 
6
6
  VERSION = [MAJOR, MINOR, TINY].compact.join('.')
7
7
  end
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * tablesorter (FORK) pager plugin
3
- * updated 8/17/2016 (v2.27.3)
3
+ * updated 9/23/2016 (v2.27.7)
4
4
  */
5
5
  /*jshint browser:true, jquery:true, unused:false */
6
6
  ;(function($) {
@@ -182,27 +182,33 @@
182
182
  p.startRow = (t) ? sz * p.page + 1 : (p.filteredRows === 0 ? 0 : sz * p.page + 1);
183
183
  p.endRow = Math.min( p.filteredRows, p.totalRows, sz * ( p.page + 1 ) );
184
184
  $out = p.$container.find(p.cssPageDisplay);
185
- // form the output string (can now get a new output string from the server)
186
- s = ( p.ajaxData && p.ajaxData.output ? p.ajaxData.output || p.output : p.output )
187
- // {page} = one-based index; {page+#} = zero based index +/- value
188
- .replace(/\{page([\-+]\d+)?\}/gi, function(m, n){
189
- return p.totalPages ? p.page + (n ? parseInt(n, 10) : 1) : 0;
190
- })
191
- // {totalPages}, {extra}, {extra:0} (array) or {extra : key} (object)
192
- .replace(/\{\w+(\s*:\s*\w+)?\}/gi, function(m){
193
- var len, indx,
194
- str = m.replace(/[{}\s]/g, ''),
195
- extra = str.split(':'),
196
- data = p.ajaxData,
197
- // return zero for default page/row numbers
198
- deflt = /(rows?|pages?)$/i.test(str) ? 0 : '';
199
- if (/(startRow|page)/.test(extra[0]) && extra[1] === 'input') {
200
- len = ('' + (extra[0] === 'page' ? p.totalPages : p.totalRows)).length;
201
- indx = extra[0] === 'page' ? p.page + 1 : p.startRow;
202
- return '<input type="text" class="ts-' + extra[0] + '" style="max-width:' + len + 'em" value="' + indx + '"/>';
203
- }
204
- return extra.length > 1 && data && data[extra[0]] ? data[extra[0]][extra[1]] : p[str] || (data ? data[str] : deflt) || deflt;
205
- });
185
+
186
+ // Output param can be callback for custom rendering or string
187
+ if (typeof p.output === 'function') {
188
+ s = p.output(table, p);
189
+ } else {
190
+ // form the output string (can now get a new output string from the server)
191
+ s = ( p.ajaxData && p.ajaxData.output ? p.ajaxData.output || p.output : p.output )
192
+ // {page} = one-based index; {page+#} = zero based index +/- value
193
+ .replace(/\{page([\-+]\d+)?\}/gi, function(m, n){
194
+ return p.totalPages ? p.page + (n ? parseInt(n, 10) : 1) : 0;
195
+ })
196
+ // {totalPages}, {extra}, {extra:0} (array) or {extra : key} (object)
197
+ .replace(/\{\w+(\s*:\s*\w+)?\}/gi, function(m){
198
+ var len, indx,
199
+ str = m.replace(/[{}\s]/g, ''),
200
+ extra = str.split(':'),
201
+ data = p.ajaxData,
202
+ // return zero for default page/row numbers
203
+ deflt = /(rows?|pages?)$/i.test(str) ? 0 : '';
204
+ if (/(startRow|page)/.test(extra[0]) && extra[1] === 'input') {
205
+ len = ('' + (extra[0] === 'page' ? p.totalPages : p.totalRows)).length;
206
+ indx = extra[0] === 'page' ? p.page + 1 : p.startRow;
207
+ return '<input type="text" class="ts-' + extra[0] + '" style="max-width:' + len + 'em" value="' + indx + '"/>';
208
+ }
209
+ return extra.length > 1 && data && data[extra[0]] ? data[extra[0]][extra[1]] : p[str] || (data ? data[str] : deflt) || deflt;
210
+ });
211
+ }
206
212
  if ( p.$goto.length ) {
207
213
  t = '';
208
214
  options = buildPageSelect( table, p );
@@ -865,7 +871,7 @@
865
871
  },
866
872
 
867
873
  enablePager = function(table, p, triggered) {
868
- var info, size,
874
+ var info, size, $el,
869
875
  c = table.config;
870
876
  p.$size.add(p.$goto).add(p.$container.find('.ts-startRow, .ts-page'))
871
877
  .removeClass(p.cssDisabled)
@@ -878,10 +884,15 @@
878
884
  p.$size.val( p.size ); // set page size
879
885
  p.totalPages = p.size === 'all' ? 1 : Math.ceil( getTotalPages( table, p ) / p.size );
880
886
  // if table id exists, include page display with aria info
881
- if ( table.id ) {
882
- info = table.id + '_pager_info';
883
- p.$container.find(p.cssPageDisplay).attr('id', info);
884
- c.$table.attr('aria-describedby', info);
887
+ if ( table.id && !c.$table.attr( 'aria-describedby' ) ) {
888
+ $el = p.$container.find( p.cssPageDisplay );
889
+ info = $el.attr( 'id' );
890
+ if ( !info ) {
891
+ // only add pageDisplay id if it doesn't exist - see #1288
892
+ info = table.id + '_pager_info';
893
+ $el.attr( 'id', info );
894
+ }
895
+ c.$table.attr( 'aria-describedby', info );
885
896
  }
886
897
  changeHeight(table, p);
887
898
  if ( triggered ) {
@@ -4,7 +4,7 @@
4
4
  ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀▀▀██
5
5
  █████▀ ▀████▀ ██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ █████▀ ██ ██ █████▀
6
6
  */
7
- /*! tablesorter (FORK) - updated 09-01-2016 (v2.27.6)*/
7
+ /*! tablesorter (FORK) - updated 09-23-2016 (v2.27.7)*/
8
8
  /* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
9
9
  (function(factory) {
10
10
  if (typeof define === 'function' && define.amd) {
@@ -16,7 +16,7 @@
16
16
  }
17
17
  }(function(jQuery) {
18
18
 
19
- /*! TableSorter (FORK) v2.27.6 *//*
19
+ /*! TableSorter (FORK) v2.27.7 *//*
20
20
  * Client-side table sorting with ease!
21
21
  * @requires jQuery v1.2.6+
22
22
  *
@@ -40,7 +40,7 @@
40
40
  'use strict';
41
41
  var ts = $.tablesorter = {
42
42
 
43
- version : '2.27.6',
43
+ version : '2.27.7',
44
44
 
45
45
  parsers : [],
46
46
  widgets : [],
@@ -251,7 +251,7 @@
251
251
  // save the settings where they read
252
252
  $.data( table, 'tablesorter', c );
253
253
  if ( c.debug ) {
254
- console[ console.group ? 'group' : 'log' ]( 'Initializing tablesorter' );
254
+ console[ console.group ? 'group' : 'log' ]( 'Initializing tablesorter v' + ts.version );
255
255
  $.data( table, 'startoveralltimer', new Date() );
256
256
  }
257
257
 
@@ -353,7 +353,7 @@
353
353
  table.hasInitialized = true;
354
354
  table.isProcessing = false;
355
355
  if ( c.debug ) {
356
- console.log( 'Overall initialization time: ' + ts.benchmark( $.data( table, 'startoveralltimer' ) ) );
356
+ console.log( 'Overall initialization time:' + ts.benchmark( $.data( table, 'startoveralltimer' ) ) );
357
357
  if ( c.debug && console.groupEnd ) { console.groupEnd(); }
358
358
  }
359
359
  $table.triggerHandler( 'tablesorter-initialized', table );
@@ -3137,7 +3137,7 @@
3137
3137
 
3138
3138
  })(jQuery);
3139
3139
 
3140
- /*! Widget: filter - updated 8/22/2016 (v2.27.5) *//*
3140
+ /*! Widget: filter - updated 9/23/2016 (v2.27.7) *//*
3141
3141
  * Requires tablesorter v2.8+ and jQuery 1.7+
3142
3142
  * by Rob Garrison
3143
3143
  */
@@ -3970,9 +3970,9 @@
3970
3970
  // don't allow 'change' event to process if the input value is the same - fixes #685
3971
3971
  if ( table.config.widgetOptions.filter_initialized &&
3972
3972
  ( event.which === tskeyCodes.enter || event.type === 'search' ||
3973
- ( event.type === 'change' ) && this.value !== c.lastSearch[column] ) ||
3974
- // only "input" event fires in MS Edge when clicking the "x" to clear the search
3975
- ( event.type === 'input' && this.value === '' ) ) {
3973
+ ( event.type === 'change' || event.type === 'input' ) &&
3974
+ this.value !== c.lastSearch[column] )
3975
+ ) {
3976
3976
  event.preventDefault();
3977
3977
  // init search with no delay
3978
3978
  $( this ).attr( 'data-lastSearchTime', new Date().getTime() );
@@ -4687,6 +4687,7 @@
4687
4687
  var cts, txt, indx, len, parsedTxt, str,
4688
4688
  c = table.config,
4689
4689
  validColumn = typeof column !== 'undefined' && column !== null && column >= 0 && column < c.columns,
4690
+ direction = validColumn ? c.$headerIndexed[ column ].hasClass( 'filter-select-sort-desc' ) : false,
4690
4691
  parsed = [];
4691
4692
  // get unique elements and sort the list
4692
4693
  // if $.tablesorter.sortText exists ( not in the original tablesorter ),
@@ -4727,8 +4728,8 @@
4727
4728
  // sort parsed select options
4728
4729
  cts = c.textSorter || '';
4729
4730
  parsed.sort( function( a, b ) {
4730
- var x = a.parsed,
4731
- y = b.parsed;
4731
+ var x = direction ? b.parsed : a.parsed,
4732
+ y = direction ? a.parsed : b.parsed;
4732
4733
  if ( validColumn && typeof cts === 'function' ) {
4733
4734
  // custom OVERALL text sorter
4734
4735
  return cts( x, y, true, column, table );
@@ -1,4 +1,4 @@
1
- /*! TableSorter (FORK) v2.27.6 *//*
1
+ /*! TableSorter (FORK) v2.27.7 *//*
2
2
  * Client-side table sorting with ease!
3
3
  * @requires jQuery v1.2.6+
4
4
  *
@@ -22,7 +22,7 @@
22
22
  'use strict';
23
23
  var ts = $.tablesorter = {
24
24
 
25
- version : '2.27.6',
25
+ version : '2.27.7',
26
26
 
27
27
  parsers : [],
28
28
  widgets : [],
@@ -233,7 +233,7 @@
233
233
  // save the settings where they read
234
234
  $.data( table, 'tablesorter', c );
235
235
  if ( c.debug ) {
236
- console[ console.group ? 'group' : 'log' ]( 'Initializing tablesorter' );
236
+ console[ console.group ? 'group' : 'log' ]( 'Initializing tablesorter v' + ts.version );
237
237
  $.data( table, 'startoveralltimer', new Date() );
238
238
  }
239
239
 
@@ -335,7 +335,7 @@
335
335
  table.hasInitialized = true;
336
336
  table.isProcessing = false;
337
337
  if ( c.debug ) {
338
- console.log( 'Overall initialization time: ' + ts.benchmark( $.data( table, 'startoveralltimer' ) ) );
338
+ console.log( 'Overall initialization time:' + ts.benchmark( $.data( table, 'startoveralltimer' ) ) );
339
339
  if ( c.debug && console.groupEnd ) { console.groupEnd(); }
340
340
  }
341
341
  $table.triggerHandler( 'tablesorter-initialized', table );
@@ -4,7 +4,7 @@
4
4
  ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀▀▀██
5
5
  █████▀ ▀████▀ ██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ █████▀ ██ ██ █████▀
6
6
  */
7
- /*! tablesorter (FORK) - updated 09-01-2016 (v2.27.6)*/
7
+ /*! tablesorter (FORK) - updated 09-23-2016 (v2.27.7)*/
8
8
  /* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
9
9
  (function(factory) {
10
10
  if (typeof define === 'function' && define.amd) {
@@ -382,7 +382,7 @@
382
382
 
383
383
  })(jQuery);
384
384
 
385
- /*! Widget: filter - updated 8/22/2016 (v2.27.5) *//*
385
+ /*! Widget: filter - updated 9/23/2016 (v2.27.7) *//*
386
386
  * Requires tablesorter v2.8+ and jQuery 1.7+
387
387
  * by Rob Garrison
388
388
  */
@@ -1215,9 +1215,9 @@
1215
1215
  // don't allow 'change' event to process if the input value is the same - fixes #685
1216
1216
  if ( table.config.widgetOptions.filter_initialized &&
1217
1217
  ( event.which === tskeyCodes.enter || event.type === 'search' ||
1218
- ( event.type === 'change' ) && this.value !== c.lastSearch[column] ) ||
1219
- // only "input" event fires in MS Edge when clicking the "x" to clear the search
1220
- ( event.type === 'input' && this.value === '' ) ) {
1218
+ ( event.type === 'change' || event.type === 'input' ) &&
1219
+ this.value !== c.lastSearch[column] )
1220
+ ) {
1221
1221
  event.preventDefault();
1222
1222
  // init search with no delay
1223
1223
  $( this ).attr( 'data-lastSearchTime', new Date().getTime() );
@@ -1932,6 +1932,7 @@
1932
1932
  var cts, txt, indx, len, parsedTxt, str,
1933
1933
  c = table.config,
1934
1934
  validColumn = typeof column !== 'undefined' && column !== null && column >= 0 && column < c.columns,
1935
+ direction = validColumn ? c.$headerIndexed[ column ].hasClass( 'filter-select-sort-desc' ) : false,
1935
1936
  parsed = [];
1936
1937
  // get unique elements and sort the list
1937
1938
  // if $.tablesorter.sortText exists ( not in the original tablesorter ),
@@ -1972,8 +1973,8 @@
1972
1973
  // sort parsed select options
1973
1974
  cts = c.textSorter || '';
1974
1975
  parsed.sort( function( a, b ) {
1975
- var x = a.parsed,
1976
- y = b.parsed;
1976
+ var x = direction ? b.parsed : a.parsed,
1977
+ y = direction ? a.parsed : b.parsed;
1977
1978
  if ( validColumn && typeof cts === 'function' ) {
1978
1979
  // custom OVERALL text sorter
1979
1980
  return cts( x, y, true, column, table );
@@ -1,4 +1,4 @@
1
- /*! Widget: filter - updated 8/22/2016 (v2.27.5) *//*
1
+ /*! Widget: filter - updated 9/23/2016 (v2.27.7) *//*
2
2
  * Requires tablesorter v2.8+ and jQuery 1.7+
3
3
  * by Rob Garrison
4
4
  */
@@ -831,9 +831,9 @@
831
831
  // don't allow 'change' event to process if the input value is the same - fixes #685
832
832
  if ( table.config.widgetOptions.filter_initialized &&
833
833
  ( event.which === tskeyCodes.enter || event.type === 'search' ||
834
- ( event.type === 'change' ) && this.value !== c.lastSearch[column] ) ||
835
- // only "input" event fires in MS Edge when clicking the "x" to clear the search
836
- ( event.type === 'input' && this.value === '' ) ) {
834
+ ( event.type === 'change' || event.type === 'input' ) &&
835
+ this.value !== c.lastSearch[column] )
836
+ ) {
837
837
  event.preventDefault();
838
838
  // init search with no delay
839
839
  $( this ).attr( 'data-lastSearchTime', new Date().getTime() );
@@ -1548,6 +1548,7 @@
1548
1548
  var cts, txt, indx, len, parsedTxt, str,
1549
1549
  c = table.config,
1550
1550
  validColumn = typeof column !== 'undefined' && column !== null && column >= 0 && column < c.columns,
1551
+ direction = validColumn ? c.$headerIndexed[ column ].hasClass( 'filter-select-sort-desc' ) : false,
1551
1552
  parsed = [];
1552
1553
  // get unique elements and sort the list
1553
1554
  // if $.tablesorter.sortText exists ( not in the original tablesorter ),
@@ -1588,8 +1589,8 @@
1588
1589
  // sort parsed select options
1589
1590
  cts = c.textSorter || '';
1590
1591
  parsed.sort( function( a, b ) {
1591
- var x = a.parsed,
1592
- y = b.parsed;
1592
+ var x = direction ? b.parsed : a.parsed,
1593
+ y = direction ? a.parsed : b.parsed;
1593
1594
  if ( validColumn && typeof cts === 'function' ) {
1594
1595
  // custom OVERALL text sorter
1595
1596
  return cts( x, y, true, column, table );
@@ -1,4 +1,4 @@
1
- /*! Widget: mark.js - updated 9/1/2016 (v2.27.6) *//*
1
+ /*! Widget: mark.js - updated 9/23/2016 (v2.27.7) *//*
2
2
  * Requires tablesorter v2.8+ and jQuery 1.7+
3
3
  * by Rob Garrison
4
4
  */
@@ -70,8 +70,6 @@
70
70
  update : function( c, filters ) {
71
71
  var options = {},
72
72
  wo = c.widgetOptions,
73
- setIgnoreCase = typeof wo.filter_ignoreCase === 'undefined' ? true :
74
- wo.filter_ignoreCase,
75
73
  regex = ts.mark.regex,
76
74
  $rows = c.$table
77
75
  .find( 'tbody tr' )
@@ -139,7 +137,7 @@
139
137
  if ( useRegex && matches && matches.length ) {
140
138
  matches = new RegExp(
141
139
  ts.mark.cleanMatches( matches ).join( '.*' ),
142
- 'gm' + ( setIgnoreCase ? 'i' : '' )
140
+ 'gm'
143
141
  );
144
142
  if ( ts.mark.checkRegex( matches ) ) {
145
143
  $rows.children( col ).markRegExp( matches, options );
@@ -1,4 +1,4 @@
1
- /*! Widget: Pager - updated 8/17/2016 (v2.27.3) */
1
+ /*! Widget: Pager - updated 9/23/2016 (v2.27.7) */
2
2
  /* Requires tablesorter v2.8+ and jQuery 1.7+
3
3
  * by Rob Garrison
4
4
  */
@@ -464,30 +464,36 @@
464
464
  p.startRow = t ? sz * p.page + 1 : ( p.filteredRows === 0 ? 0 : sz * p.page + 1 );
465
465
  p.endRow = Math.min( p.filteredRows, p.totalRows, sz * ( p.page + 1 ) );
466
466
  $out = p.$container.find( wo.pager_selectors.pageDisplay );
467
- // form the output string (can now get a new output string from the server)
468
- s = ( p.ajaxData && p.ajaxData.output ? p.ajaxData.output || wo.pager_output : wo.pager_output )
469
- // {page} = one-based index; {page+#} = zero based index +/- value
470
- .replace( /\{page([\-+]\d+)?\}/gi, function( m, n ) {
471
- return p.totalPages ? p.page + ( n ? parseInt( n, 10 ) : 1 ) : 0;
472
- })
473
- // {totalPages}, {extra}, {extra:0} (array) or {extra : key} (object)
474
- .replace( /\{\w+(\s*:\s*\w+)?\}/gi, function( m ) {
475
- var len, indx,
476
- str = m.replace( /[{}\s]/g, '' ),
477
- extra = str.split( ':' ),
478
- data = p.ajaxData,
479
- // return zero for default page/row numbers
480
- deflt = /(rows?|pages?)$/i.test( str ) ? 0 : '';
481
- if ( /(startRow|page)/.test( extra[ 0 ] ) && extra[ 1 ] === 'input' ) {
482
- len = ( '' + ( extra[ 0 ] === 'page' ? p.totalPages : p.totalRows ) ).length;
483
- indx = extra[ 0 ] === 'page' ? p.page + 1 : p.startRow;
484
- return '<input type="text" class="ts-' + extra[ 0 ] +
485
- '" style="max-width:' + len + 'em" value="' + indx + '"/>';
486
- }
487
- return extra.length > 1 && data && data[ extra[ 0 ] ] ?
488
- data[ extra[ 0 ] ][ extra[ 1 ] ] :
489
- p[ str ] || ( data ? data[ str ] : deflt ) || deflt;
490
- });
467
+
468
+ // Output param can be callback for custom rendering or string
469
+ if ( typeof wo.pager_output === 'function' ) {
470
+ s = wo.pager_output( table, p );
471
+ } else {
472
+ // form the output string (can now get a new output string from the server)
473
+ s = ( p.ajaxData && p.ajaxData.output ? p.ajaxData.output || wo.pager_output : wo.pager_output )
474
+ // {page} = one-based index; {page+#} = zero based index +/- value
475
+ .replace( /\{page([\-+]\d+)?\}/gi, function( m, n ) {
476
+ return p.totalPages ? p.page + ( n ? parseInt( n, 10 ) : 1 ) : 0;
477
+ })
478
+ // {totalPages}, {extra}, {extra:0} (array) or {extra : key} (object)
479
+ .replace( /\{\w+(\s*:\s*\w+)?\}/gi, function( m ) {
480
+ var len, indx,
481
+ str = m.replace( /[{}\s]/g, '' ),
482
+ extra = str.split( ':' ),
483
+ data = p.ajaxData,
484
+ // return zero for default page/row numbers
485
+ deflt = /(rows?|pages?)$/i.test( str ) ? 0 : '';
486
+ if ( /(startRow|page)/.test( extra[ 0 ] ) && extra[ 1 ] === 'input' ) {
487
+ len = ( '' + ( extra[ 0 ] === 'page' ? p.totalPages : p.totalRows ) ).length;
488
+ indx = extra[ 0 ] === 'page' ? p.page + 1 : p.startRow;
489
+ return '<input type="text" class="ts-' + extra[ 0 ] +
490
+ '" style="max-width:' + len + 'em" value="' + indx + '"/>';
491
+ }
492
+ return extra.length > 1 && data && data[ extra[ 0 ] ] ?
493
+ data[ extra[ 0 ] ][ extra[ 1 ] ] :
494
+ p[ str ] || ( data ? data[ str ] : deflt ) || deflt;
495
+ });
496
+ }
491
497
  if ( p.$goto.length ) {
492
498
  t = '';
493
499
  options = tsp.buildPageSelect( c, p );
@@ -1199,7 +1205,7 @@
1199
1205
  },
1200
1206
 
1201
1207
  enablePager: function( c, triggered ) {
1202
- var info, size,
1208
+ var info, size, $el,
1203
1209
  table = c.table,
1204
1210
  p = c.pager;
1205
1211
  p.isDisabled = false;
@@ -1210,9 +1216,14 @@
1210
1216
  p.totalPages = p.size === 'all' ? 1 : Math.ceil( tsp.getTotalPages( c, p ) / p.size );
1211
1217
  c.$table.removeClass( 'pagerDisabled' );
1212
1218
  // if table id exists, include page display with aria info
1213
- if ( table.id ) {
1214
- info = table.id + '_pager_info';
1215
- p.$container.find( c.widgetOptions.pager_selectors.pageDisplay ).attr( 'id', info );
1219
+ if ( table.id && !c.$table.attr( 'aria-describedby' ) ) {
1220
+ $el = p.$container.find( c.widgetOptions.pager_selectors.pageDisplay );
1221
+ info = $el.attr( 'id' );
1222
+ if ( !info ) {
1223
+ // only add pageDisplay id if it doesn't exist - see #1288
1224
+ info = table.id + '_pager_info';
1225
+ $el.attr( 'id', info );
1226
+ }
1216
1227
  c.$table.attr( 'aria-describedby', info );
1217
1228
  }
1218
1229
  tsp.changeHeight( c );
@@ -1,4 +1,4 @@
1
- /*! Widget: repeatHeaders - updated 2/7/2015 (v2.19.0) *//*
1
+ /*! Widget: repeatHeaders - updated 9/23/2016 (v2.27.7) *//*
2
2
  * Requires tablesorter v2.8+ and jQuery 1.7+
3
3
  * Original by Christian Bach from the example-widgets.html demo
4
4
  */
@@ -19,8 +19,8 @@
19
19
  if (!wo.repeatHeaders) {
20
20
  h = '<tr class="repeated-header ' + c.selectorRemove.slice(1) + '">';
21
21
  for (i = 0; i < c.columns; i++) {
22
- // only get the headerContent text
23
- h += '<th>' + $.trim( c.$headers.eq(i).text() ) + '</th>';
22
+ // repeat the content of the current header (including child elements)
23
+ h += '<th>' + $.trim( c.$headers.eq(i).html() ) + '</th>';
24
24
  }
25
25
  // 'remove-me' class was added in case the table needs to be updated, the 'remove-me' rows will be
26
26
  // removed prior to the update to prevent including the rows in the update - see 'selectorRemove' option
@@ -39,4 +39,4 @@ td.tablesorter-pager {
39
39
  opacity: 0.5;
40
40
  filter: alpha(opacity=50);
41
41
  cursor: default;
42
- }
42
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jquery-tablesorter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.22.4
4
+ version: 1.22.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jun Lin
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-09-01 00:00:00.000000000 Z
12
+ date: 2016-09-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties