jquery-tablesorter 1.18.2 → 1.18.3

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: 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