jquery-tablesorter 1.18.2 → 1.18.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 886efa143e551b3b1b348bfc4a5ceb244cba60d1
4
- data.tar.gz: b3ae2ede803d0ef6014d497114a502a3128b4d27
3
+ metadata.gz: a142ba049c8283ad5701ebc22af25c6f2a0a186e
4
+ data.tar.gz: 01d9fbb2e17cd989c67376e6f71aa809ed3c3639
5
5
  SHA512:
6
- metadata.gz: 5a526f91f99c7d413b1d4c92b5b3ff03cb539bc4fda82e6f23cee1ffb162338b698b2c7ab91c5779fd824e52813f7eb4747e7dbd37ec7d9cc3f7d9f83cbb26d3
7
- data.tar.gz: e42ae380bbddbca7bb6c7ccb74d2581cad6eb2d5273cd07f39bbd2ec804dec5ac2b8a63080b37e9eda3d236d8fdfd51c8fdb47dd19cf8cc6b4af7dbacddbe72f
6
+ metadata.gz: f0dafc07d7437a3af57ab0542226dd55d5cd0f1cbb4ad86290d1326644337a091b597cf03f98b20ab7cf8c3fbb8327024f16c4dbe59f226b1ea3a527e69337cd
7
+ data.tar.gz: 0c23865e29959b6c0ea505cb026ed5635d39e1b760b902bd25a2f0dc29c6553875a1b07899349353afc907d0d356fd716119cbb0d4e3799643a0bf4a78469f4c
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Simple integration of jquery-tablesorter into the asset pipeline.
6
6
 
7
- Current tablesorter version: 2.23.2 (8/23/2015), [documentation]
7
+ Current tablesorter version: 2.23.3 (9/1/2015), [documentation]
8
8
 
9
9
  Any issue associated with the js/css files, please report to [Mottie's fork].
10
10
 
@@ -1,3 +1,3 @@
1
1
  module JqueryTablesorter
2
- VERSION = '1.18.2'
2
+ VERSION = '1.18.3'
3
3
  end
@@ -4,7 +4,7 @@
4
4
  ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀▀▀▀██
5
5
  █████▀ ▀████▀ ██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ █████▀ ██ ██ █████▀
6
6
  */
7
- /*! tablesorter (FORK) - updated 08-23-2015 (v2.23.2)*/
7
+ /*! tablesorter (FORK) - updated 09-01-2015 (v2.23.3)*/
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($) {
18
18
 
19
- /*! TableSorter (FORK) v2.23.2 *//*
19
+ /*! TableSorter (FORK) v2.23.3 *//*
20
20
  * Client-side table sorting with ease!
21
21
  * @requires jQuery v1.2.6+
22
22
  *
@@ -35,7 +35,6 @@
35
35
  * @contributor Rob Garrison - https://github.com/Mottie/tablesorter
36
36
  */
37
37
  /*jshint browser:true, jquery:true, unused:false, expr: true */
38
- /*global console:false */
39
38
  ;(function($){
40
39
  'use strict';
41
40
  $.extend({
@@ -44,7 +43,7 @@
44
43
 
45
44
  var ts = this;
46
45
 
47
- ts.version = '2.23.2';
46
+ ts.version = '2.23.3';
48
47
 
49
48
  ts.parsers = [];
50
49
  ts.widgets = [];
@@ -576,8 +575,10 @@
576
575
  for (i = 0; i < len; i++) {
577
576
  // direction = 2 means reset!
578
577
  if (list[i][1] !== 2) {
579
- // multicolumn sorting updating - choose the :last in case there are nested columns
580
- f = c.$headers.not('.sorter-false').filter('[data-column="' + list[i][0] + '"]' + (len === 1 ? ':last' : '') );
578
+ // multicolumn sorting updating - see #1005
579
+ f = c.lastClickedIndex > 0 ? c.$headers.filter(':gt(' + ( c.lastClickedIndex - 1 ) + ')') : c.$headers;
580
+ // choose the :last in case there are nested columns
581
+ f = f.not('.sorter-false').filter('[data-column="' + list[i][0] + '"]' + (len === 1 ? ':last' : '') );
581
582
  if (f.length) {
582
583
  for (j = 0; j < f.length; j++) {
583
584
  if (!f[j].sortDisabled) {
@@ -1306,7 +1307,10 @@
1306
1307
  $cell = $.fn.closest ? $(this).closest('th, td') : /TH|TD/.test(this.nodeName) ? $(this) : $(this).parents('th, td');
1307
1308
  // reference original table headers and find the same cell
1308
1309
  // don't use $headers or IE8 throws an error - see #987
1309
- cell = c.$headers[ $cell.prevAll().length ];
1310
+ temp = $headers.index( $cell );
1311
+ c.lastClickedIndex = ( temp < 0 ) ? $cell.attr('data-column') : temp;
1312
+ // use column index if $headers is undefined
1313
+ cell = c.$headers[ c.lastClickedIndex ];
1310
1314
  if (cell && !cell.sortDisabled) {
1311
1315
  initSort(table, cell, e);
1312
1316
  }
@@ -2714,7 +2718,7 @@
2714
2718
 
2715
2719
  })(jQuery);
2716
2720
 
2717
- /*! Widget: filter - updated 8/23/2015 (v2.23.2) *//*
2721
+ /*! Widget: filter - updated 9/1/2015 (v2.23.3) *//*
2718
2722
  * Requires tablesorter v2.8+ and jQuery 1.7+
2719
2723
  * by Rob Garrison
2720
2724
  */
@@ -2777,7 +2781,7 @@
2777
2781
  .split( ' ' ).join( c.namespace + 'filter ' );
2778
2782
  $table
2779
2783
  .removeClass( 'hasFilters' )
2780
- // add .tsfilter namespace to all BUT search
2784
+ // add filter namespace to all BUT search
2781
2785
  .unbind( events.replace( ts.regex.spaces, ' ' ) )
2782
2786
  // remove the filter row even if refreshing, because the column might have been moved
2783
2787
  .find( '.' + tscss.filterRow ).remove();
@@ -2788,7 +2792,7 @@
2788
2792
  ts.processTbody( table, $tbody, false ); // restore tbody
2789
2793
  }
2790
2794
  if ( wo.filter_reset ) {
2791
- $( document ).undelegate( wo.filter_reset, 'click.tsfilter' );
2795
+ $( document ).undelegate( wo.filter_reset, 'click' + c.namespace + 'filter' );
2792
2796
  }
2793
2797
  }
2794
2798
  });
@@ -3158,8 +3162,8 @@
3158
3162
  } else if ( $( wo.filter_reset ).length ) {
3159
3163
  // reset is a jQuery selector, use event delegation
3160
3164
  $( document )
3161
- .undelegate( wo.filter_reset, 'click.tsfilter' )
3162
- .delegate( wo.filter_reset, 'click.tsfilter', function() {
3165
+ .undelegate( wo.filter_reset, 'click' + c.namespace + 'filter' )
3166
+ .delegate( wo.filter_reset, 'click' + c.namespace + 'filter', function() {
3163
3167
  // trigger a reset event, so other functions ( filter_formatter ) know when to reset
3164
3168
  c.$table.trigger( 'filterReset' );
3165
3169
  });
@@ -3474,8 +3478,8 @@
3474
3478
  // don't get cached data, in case data-column changes dynamically
3475
3479
  var column = parseInt( $( this ).attr( 'data-column' ), 10 );
3476
3480
  // don't allow 'change' event to process if the input value is the same - fixes #685
3477
- if ( event.which === 13 || event.type === 'search' ||
3478
- event.type === 'change' && this.value !== c.lastSearch[column] ) {
3481
+ if ( wo.filter_initialized && ( event.which === 13 || event.type === 'search' ||
3482
+ event.type === 'change' && this.value !== c.lastSearch[column] ) ) {
3479
3483
  event.preventDefault();
3480
3484
  // init search with no delay
3481
3485
  $( this ).attr( 'data-lastSearchTime', new Date().getTime() );
@@ -4321,7 +4325,8 @@
4321
4325
  }
4322
4326
  $column
4323
4327
  .val( setFilters[ i ] )
4324
- .trigger( 'change.tsfilter' );
4328
+ // must include a namespace here; but not c.namespace + 'filter'?
4329
+ .trigger( 'change' + c.namespace );
4325
4330
  } else {
4326
4331
  filters[i] = $column.val() || '';
4327
4332
  // don't change the first... it will move the cursor
@@ -1,4 +1,4 @@
1
- /*! TableSorter (FORK) v2.23.2 *//*
1
+ /*! TableSorter (FORK) v2.23.3 *//*
2
2
  * Client-side table sorting with ease!
3
3
  * @requires jQuery v1.2.6+
4
4
  *
@@ -17,7 +17,6 @@
17
17
  * @contributor Rob Garrison - https://github.com/Mottie/tablesorter
18
18
  */
19
19
  /*jshint browser:true, jquery:true, unused:false, expr: true */
20
- /*global console:false */
21
20
  ;(function($){
22
21
  'use strict';
23
22
  $.extend({
@@ -26,7 +25,7 @@
26
25
 
27
26
  var ts = this;
28
27
 
29
- ts.version = '2.23.2';
28
+ ts.version = '2.23.3';
30
29
 
31
30
  ts.parsers = [];
32
31
  ts.widgets = [];
@@ -558,8 +557,10 @@
558
557
  for (i = 0; i < len; i++) {
559
558
  // direction = 2 means reset!
560
559
  if (list[i][1] !== 2) {
561
- // multicolumn sorting updating - choose the :last in case there are nested columns
562
- f = c.$headers.not('.sorter-false').filter('[data-column="' + list[i][0] + '"]' + (len === 1 ? ':last' : '') );
560
+ // multicolumn sorting updating - see #1005
561
+ f = c.lastClickedIndex > 0 ? c.$headers.filter(':gt(' + ( c.lastClickedIndex - 1 ) + ')') : c.$headers;
562
+ // choose the :last in case there are nested columns
563
+ f = f.not('.sorter-false').filter('[data-column="' + list[i][0] + '"]' + (len === 1 ? ':last' : '') );
563
564
  if (f.length) {
564
565
  for (j = 0; j < f.length; j++) {
565
566
  if (!f[j].sortDisabled) {
@@ -1288,7 +1289,10 @@
1288
1289
  $cell = $.fn.closest ? $(this).closest('th, td') : /TH|TD/.test(this.nodeName) ? $(this) : $(this).parents('th, td');
1289
1290
  // reference original table headers and find the same cell
1290
1291
  // don't use $headers or IE8 throws an error - see #987
1291
- cell = c.$headers[ $cell.prevAll().length ];
1292
+ temp = $headers.index( $cell );
1293
+ c.lastClickedIndex = ( temp < 0 ) ? $cell.attr('data-column') : temp;
1294
+ // use column index if $headers is undefined
1295
+ cell = c.$headers[ c.lastClickedIndex ];
1292
1296
  if (cell && !cell.sortDisabled) {
1293
1297
  initSort(table, cell, e);
1294
1298
  }
@@ -4,7 +4,7 @@
4
4
  ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀▀▀▀██
5
5
  █████▀ ▀████▀ ██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ █████▀ ██ ██ █████▀
6
6
  */
7
- /*! tablesorter (FORK) - updated 08-23-2015 (v2.23.2)*/
7
+ /*! tablesorter (FORK) - updated 09-01-2015 (v2.23.3)*/
8
8
  /* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
9
9
  (function(factory) {
10
10
  if (typeof define === 'function' && define.amd) {
@@ -372,7 +372,7 @@
372
372
 
373
373
  })(jQuery);
374
374
 
375
- /*! Widget: filter - updated 8/23/2015 (v2.23.2) *//*
375
+ /*! Widget: filter - updated 9/1/2015 (v2.23.3) *//*
376
376
  * Requires tablesorter v2.8+ and jQuery 1.7+
377
377
  * by Rob Garrison
378
378
  */
@@ -435,7 +435,7 @@
435
435
  .split( ' ' ).join( c.namespace + 'filter ' );
436
436
  $table
437
437
  .removeClass( 'hasFilters' )
438
- // add .tsfilter namespace to all BUT search
438
+ // add filter namespace to all BUT search
439
439
  .unbind( events.replace( ts.regex.spaces, ' ' ) )
440
440
  // remove the filter row even if refreshing, because the column might have been moved
441
441
  .find( '.' + tscss.filterRow ).remove();
@@ -446,7 +446,7 @@
446
446
  ts.processTbody( table, $tbody, false ); // restore tbody
447
447
  }
448
448
  if ( wo.filter_reset ) {
449
- $( document ).undelegate( wo.filter_reset, 'click.tsfilter' );
449
+ $( document ).undelegate( wo.filter_reset, 'click' + c.namespace + 'filter' );
450
450
  }
451
451
  }
452
452
  });
@@ -816,8 +816,8 @@
816
816
  } else if ( $( wo.filter_reset ).length ) {
817
817
  // reset is a jQuery selector, use event delegation
818
818
  $( document )
819
- .undelegate( wo.filter_reset, 'click.tsfilter' )
820
- .delegate( wo.filter_reset, 'click.tsfilter', function() {
819
+ .undelegate( wo.filter_reset, 'click' + c.namespace + 'filter' )
820
+ .delegate( wo.filter_reset, 'click' + c.namespace + 'filter', function() {
821
821
  // trigger a reset event, so other functions ( filter_formatter ) know when to reset
822
822
  c.$table.trigger( 'filterReset' );
823
823
  });
@@ -1132,8 +1132,8 @@
1132
1132
  // don't get cached data, in case data-column changes dynamically
1133
1133
  var column = parseInt( $( this ).attr( 'data-column' ), 10 );
1134
1134
  // don't allow 'change' event to process if the input value is the same - fixes #685
1135
- if ( event.which === 13 || event.type === 'search' ||
1136
- event.type === 'change' && this.value !== c.lastSearch[column] ) {
1135
+ if ( wo.filter_initialized && ( event.which === 13 || event.type === 'search' ||
1136
+ event.type === 'change' && this.value !== c.lastSearch[column] ) ) {
1137
1137
  event.preventDefault();
1138
1138
  // init search with no delay
1139
1139
  $( this ).attr( 'data-lastSearchTime', new Date().getTime() );
@@ -1979,7 +1979,8 @@
1979
1979
  }
1980
1980
  $column
1981
1981
  .val( setFilters[ i ] )
1982
- .trigger( 'change.tsfilter' );
1982
+ // must include a namespace here; but not c.namespace + 'filter'?
1983
+ .trigger( 'change' + c.namespace );
1983
1984
  } else {
1984
1985
  filters[i] = $column.val() || '';
1985
1986
  // don't change the first... it will move the cursor
@@ -1,4 +1,4 @@
1
- /*! Widget: filter - updated 8/23/2015 (v2.23.2) *//*
1
+ /*! Widget: filter - updated 9/1/2015 (v2.23.3) *//*
2
2
  * Requires tablesorter v2.8+ and jQuery 1.7+
3
3
  * by Rob Garrison
4
4
  */
@@ -61,7 +61,7 @@
61
61
  .split( ' ' ).join( c.namespace + 'filter ' );
62
62
  $table
63
63
  .removeClass( 'hasFilters' )
64
- // add .tsfilter namespace to all BUT search
64
+ // add filter namespace to all BUT search
65
65
  .unbind( events.replace( ts.regex.spaces, ' ' ) )
66
66
  // remove the filter row even if refreshing, because the column might have been moved
67
67
  .find( '.' + tscss.filterRow ).remove();
@@ -72,7 +72,7 @@
72
72
  ts.processTbody( table, $tbody, false ); // restore tbody
73
73
  }
74
74
  if ( wo.filter_reset ) {
75
- $( document ).undelegate( wo.filter_reset, 'click.tsfilter' );
75
+ $( document ).undelegate( wo.filter_reset, 'click' + c.namespace + 'filter' );
76
76
  }
77
77
  }
78
78
  });
@@ -442,8 +442,8 @@
442
442
  } else if ( $( wo.filter_reset ).length ) {
443
443
  // reset is a jQuery selector, use event delegation
444
444
  $( document )
445
- .undelegate( wo.filter_reset, 'click.tsfilter' )
446
- .delegate( wo.filter_reset, 'click.tsfilter', function() {
445
+ .undelegate( wo.filter_reset, 'click' + c.namespace + 'filter' )
446
+ .delegate( wo.filter_reset, 'click' + c.namespace + 'filter', function() {
447
447
  // trigger a reset event, so other functions ( filter_formatter ) know when to reset
448
448
  c.$table.trigger( 'filterReset' );
449
449
  });
@@ -758,8 +758,8 @@
758
758
  // don't get cached data, in case data-column changes dynamically
759
759
  var column = parseInt( $( this ).attr( 'data-column' ), 10 );
760
760
  // don't allow 'change' event to process if the input value is the same - fixes #685
761
- if ( event.which === 13 || event.type === 'search' ||
762
- event.type === 'change' && this.value !== c.lastSearch[column] ) {
761
+ if ( wo.filter_initialized && ( event.which === 13 || event.type === 'search' ||
762
+ event.type === 'change' && this.value !== c.lastSearch[column] ) ) {
763
763
  event.preventDefault();
764
764
  // init search with no delay
765
765
  $( this ).attr( 'data-lastSearchTime', new Date().getTime() );
@@ -1605,7 +1605,8 @@
1605
1605
  }
1606
1606
  $column
1607
1607
  .val( setFilters[ i ] )
1608
- .trigger( 'change.tsfilter' );
1608
+ // must include a namespace here; but not c.namespace + 'filter'?
1609
+ .trigger( 'change' + c.namespace );
1609
1610
  } else {
1610
1611
  filters[i] = $column.val() || '';
1611
1612
  // don't change the first... it will move the cursor
@@ -1,4 +1,4 @@
1
- /*! Widget: grouping - updated 3/5/2015 (v2.21.0) *//*
1
+ /*! Widget: grouping - updated 9/1/2015 (v2.23.3) *//*
2
2
  * Requires tablesorter v2.8+ and jQuery 1.7+
3
3
  * by Rob Garrison
4
4
  */
@@ -55,10 +55,13 @@
55
55
  update : function(table, c, wo){
56
56
  if ($.isEmptyObject(c.cache)) { return; }
57
57
  var rowIndex, tbodyIndex, currentGroup, $rows, groupClass, grouping, norm_rows, saveName, direction,
58
- lang = wo.grouping_language,
58
+ hasSort = typeof c.sortList[0] !== 'undefined',
59
59
  group = '',
60
+ groupIndex = 0,
60
61
  savedGroup = false,
61
- column = c.sortList[0] ? c.sortList[0][0] : -1;
62
+ column = typeof wo.group_forceColumn[0] !== 'undefined' ?
63
+ ( wo.group_enforceSort && !hasSort ? -1 : wo.group_forceColumn[0] ) :
64
+ ( hasSort ? c.sortList[0][0] : -1 );
62
65
  c.$table
63
66
  .find('tr.group-hidden').removeClass('group-hidden').end()
64
67
  .find('tr.group-header').remove();
@@ -66,7 +69,7 @@
66
69
  // clear pager saved spacer height (in case the rows are collapsed)
67
70
  c.$table.data('pagerSavedHeight', 0);
68
71
  }
69
- if (column >= 0 && !c.$headerIndexed[column].hasClass('group-false')) {
72
+ if (column >= 0 && column < c.columns && !c.$headerIndexed[column].hasClass('group-false')) {
70
73
  wo.group_currentGroup = ''; // save current groups
71
74
  wo.group_currentGroups = {};
72
75
 
@@ -78,10 +81,10 @@
78
81
  // save current grouping
79
82
  if (wo.group_collapsible && wo.group_saveGroups && ts.storage) {
80
83
  wo.group_currentGroups = ts.storage( table, 'tablesorter-groups' ) || {};
81
- // include direction when grouping numbers > 1 (reversed direction shows different range values)
82
- direction = (grouping[1] === 'number' && grouping[2] > 1) ? 'dir' + c.sortList[0][1] : '';
84
+ // include direction when saving groups (reversed numbers shows different range values)
85
+ direction = 'dir' + c.sortList[0][1];
83
86
  // combine column, sort direction & grouping as save key
84
- saveName = wo.group_currentGroup = '' + column + direction + grouping.join('');
87
+ saveName = wo.group_currentGroup = '' + c.sortList[0][0] + direction + grouping.join('');
85
88
  if (!wo.group_currentGroups[saveName]) {
86
89
  wo.group_currentGroups[saveName] = [];
87
90
  } else {
@@ -98,7 +101,7 @@
98
101
  if (ts.grouping.types[grouping[1]]) {
99
102
  currentGroup = norm_rows[rowIndex] ?
100
103
  ts.grouping.types[grouping[1]]( c, c.$headerIndexed[column], norm_rows[rowIndex][column], /date/.test(groupClass) ?
101
- grouping[2] : parseInt(grouping[2] || 1, 10) || 1, group, lang ) : currentGroup;
104
+ grouping[2] : parseInt(grouping[2] || 1, 10) || 1, group ) : currentGroup;
102
105
  if (group !== currentGroup) {
103
106
  group = currentGroup;
104
107
  // show range if number > 1
@@ -110,9 +113,11 @@
110
113
  currentGroup = wo.group_formatter((currentGroup || '').toString(), column, table, c, wo) || currentGroup;
111
114
  }
112
115
  $rows.eq(rowIndex).before('<tr class="group-header ' + c.selectorRemove.slice(1) +
113
- '" unselectable="on"' + ( c.tabIndex ? ' tabindex="0"' : '' ) + '><td colspan="' +
114
- c.columns + '">' + (wo.group_collapsible ? '<i/>' : '') + '<span class="group-name">' +
115
- currentGroup + '</span><span class="group-count"></span></td></tr>');
116
+ '" unselectable="on" ' + ( c.tabIndex ? 'tabindex="0" ' : '' ) + 'data-group-index="' +
117
+ ( groupIndex++ ) + '"><td colspan="' + c.columns + '">' +
118
+ ( wo.group_collapsible ? '<i/>' : '' ) +
119
+ '<span class="group-name">' + currentGroup + '</span>' +
120
+ '<span class="group-count"></span></td></tr>');
116
121
  if (wo.group_saveGroups && !savedGroup && wo.group_collapsed && wo.group_collapsible) {
117
122
  // all groups start collapsed
118
123
  wo.group_currentGroups[wo.group_currentGroup].push(currentGroup);
@@ -139,8 +144,8 @@
139
144
  }
140
145
  }
141
146
  }
142
- if (wo.group_saveGroups && wo.group_currentGroups.length && wo.group_currentGroups[wo.group_currentGroup].length) {
143
- name = $row.find('.group-name').text().toLowerCase();
147
+ if (wo.group_saveGroups && !$.isEmptyObject(wo.group_currentGroups) && wo.group_currentGroups[wo.group_currentGroup].length) {
148
+ name = $row.find('.group-name').text().toLowerCase() + $row.attr('data-group-index');
144
149
  isHidden = $.inArray( name, wo.group_currentGroups[wo.group_currentGroup] ) > -1;
145
150
  $row.toggleClass('collapsed', isHidden);
146
151
  $rows.toggleClass('group-hidden', isHidden);
@@ -163,7 +168,7 @@
163
168
  if (event.type === 'keyup' && event.which !== 13) { return; }
164
169
  var isCollapsed, $groups, indx,
165
170
  $this = $(this),
166
- name = $this.find('.group-name').text().toLowerCase();
171
+ name = $this.find('.group-name').text().toLowerCase() + $this.attr('data-group-index');
167
172
  // use shift-click to toggle ALL groups
168
173
  if (event.shiftKey && (event.type === 'click' || event.type === 'keyup')) {
169
174
  $this.siblings('.group-header').trigger('toggleGroup');
@@ -221,6 +226,10 @@
221
226
  group_callback : null, // function($cell, $rows, column, table){}, callback allowing modification of the group header labels
222
227
  group_complete : 'groupingComplete', // event triggered on the table when the grouping widget has finished work
223
228
 
229
+ // apply the grouping widget only to selected column
230
+ group_forceColumn : [], // only the first value is used; set as an array for future expansion
231
+ group_enforceSort : true, // only apply group_forceColumn when a sort is applied to the table
232
+
224
233
  // checkbox parser text used for checked/unchecked values
225
234
  group_checkbox : [ 'checked', 'unchecked' ],
226
235
  // change these default date names based on your language preferences
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.18.2
4
+ version: 1.18.3
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: 2015-08-24 00:00:00.000000000 Z
12
+ date: 2015-09-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
@@ -169,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
169
  version: '0'
170
170
  requirements: []
171
171
  rubyforge_project:
172
- rubygems_version: 2.4.6
172
+ rubygems_version: 2.4.8
173
173
  signing_key:
174
174
  specification_version: 4
175
175
  summary: Simple integration of jquery-tablesorter (Mottie's fork) into the Rails asset