jquery-tablesorter 1.21.4 → 1.22.0
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 +4 -4
- data/README.md +1 -1
- data/lib/jquery-tablesorter/version.rb +2 -2
- data/vendor/assets/images/jquery-tablesorter/bootstrap-black-unsorted.png +0 -0
- data/vendor/assets/images/jquery-tablesorter/metro-black-asc.png +0 -0
- data/vendor/assets/images/jquery-tablesorter/metro-black-desc.png +0 -0
- data/vendor/assets/images/jquery-tablesorter/metro-white-asc.png +0 -0
- data/vendor/assets/images/jquery-tablesorter/metro-white-desc.png +0 -0
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.combined.js +63 -43
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.js +33 -21
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.widgets.js +30 -22
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-columnSelector.js +62 -24
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-currentSort.js +60 -0
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-filter.js +13 -10
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-grouping.js +3 -3
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-mark.js +135 -0
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-math.js +24 -15
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-output.js +4 -4
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-scroller.js +4 -2
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-stickyHeaders.js +10 -5
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-uitheme.js +4 -4
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.bootstrap.css +2 -2
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.bootstrap_2.css +2 -2
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.materialize.css +176 -0
- metadata +5 -2
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Widget: grouping - updated 7/
|
1
|
+
/*! Widget: grouping - updated 7/31/2016 (v2.27.0) *//*
|
2
2
|
* Requires tablesorter v2.8+ and jQuery 1.7+
|
3
3
|
* by Rob Garrison
|
4
4
|
*/
|
@@ -144,7 +144,7 @@
|
|
144
144
|
$label = $row.find( '.group-count' );
|
145
145
|
if ( $label.length ) {
|
146
146
|
if ( wo.group_count ) {
|
147
|
-
$label.html( wo.group_count.replace( /\{num\}/g, $rows.length ) );
|
147
|
+
$label.html( wo.group_count.toString().replace( /\{num\}/g, $rows.length ) );
|
148
148
|
}
|
149
149
|
if ( $.isFunction( wo.group_callback ) ) {
|
150
150
|
wo.group_callback( $row.find( 'td' ), $rows, data.column, c.table );
|
@@ -167,7 +167,7 @@
|
|
167
167
|
},
|
168
168
|
|
169
169
|
groupHeaderHTML : function( c, wo, data ) {
|
170
|
-
var name = ( data.currentGroup || '' ).replace(/</g, '<').replace(/>/g, '>');
|
170
|
+
var name = ( data.currentGroup || '' ).toString().replace(/</g, '<').replace(/>/g, '>');
|
171
171
|
return '<tr class="group-header ' + c.selectorRemove.slice(1) +
|
172
172
|
'" unselectable="on" ' + ( c.tabIndex ? 'tabindex="0" ' : '' ) + 'data-group-index="' +
|
173
173
|
data.groupIndex + '">' +
|
@@ -0,0 +1,135 @@
|
|
1
|
+
/*! Widget: mark.js - updated 7/31/2016 (v2.27.1) *//*
|
2
|
+
* Requires tablesorter v2.8+ and jQuery 1.7+
|
3
|
+
* by Rob Garrison
|
4
|
+
*/
|
5
|
+
;( function( $ ) {
|
6
|
+
'use strict';
|
7
|
+
var ts = $.tablesorter;
|
8
|
+
|
9
|
+
ts.mark = {
|
10
|
+
init : function( c ) {
|
11
|
+
if ( typeof $.fn.mark === 'function' ) {
|
12
|
+
var tmp,
|
13
|
+
update = c.widgetOptions.mark_tsUpdate;
|
14
|
+
c.$table.on( 'filterEnd.tsmark' + ( update ? ' ' + update : '' ), function( e, filters ) {
|
15
|
+
// filterEnd passes "config" as the param
|
16
|
+
ts.mark.update( c, e.type === 'filterEnd' ? '' : filters );
|
17
|
+
});
|
18
|
+
// Regex to split up a query
|
19
|
+
tmp = '(?:<|=|>|\\||\"|' + "\\'|" +
|
20
|
+
'\\s+(?:&&|-|' +
|
21
|
+
( ts.language.and || 'and' ) + '|' +
|
22
|
+
( ts.language.or || 'or' ) + '|' +
|
23
|
+
( ts.language.to || 'to' ) + ')\\s+)';
|
24
|
+
ts.mark.regex.filter = new RegExp(tmp, 'gim');
|
25
|
+
} else {
|
26
|
+
console.warn('Widget-mark not initialized: missing "jquery.mark.js"');
|
27
|
+
}
|
28
|
+
},
|
29
|
+
regex : {
|
30
|
+
mark : /^mark_(.+)$/,
|
31
|
+
// test for regex (e.g. "/(lorem|ipsum)/gi")
|
32
|
+
pure : /^\/((?:\\\/|[^\/])+)\/([mig]{0,3})?$/
|
33
|
+
},
|
34
|
+
checkRegex : function( regex ) {
|
35
|
+
if ( regex instanceof RegExp ) {
|
36
|
+
// prevent lock up of mark.js (see https://github.com/julmot/mark.js/issues/55)
|
37
|
+
var result = '\u0001\u0002\u0003\u0004\u0005'.match( regex );
|
38
|
+
return result === null || result.length < 5;
|
39
|
+
}
|
40
|
+
return false;
|
41
|
+
},
|
42
|
+
cleanMatches : function( matches ) {
|
43
|
+
var results = [],
|
44
|
+
indx = matches && matches.length || 0;
|
45
|
+
while ( indx-- ) {
|
46
|
+
if ( matches[indx] !== '' ) {
|
47
|
+
results[ results.length ] = matches[ indx ];
|
48
|
+
}
|
49
|
+
}
|
50
|
+
return results;
|
51
|
+
},
|
52
|
+
update : function( c, filters ) {
|
53
|
+
var options = {},
|
54
|
+
regex = ts.mark.regex,
|
55
|
+
$rows = c.$table
|
56
|
+
.find( 'tbody tr' )
|
57
|
+
.unmark()
|
58
|
+
.not( '.' + ( c.widgetOptions.filter_filteredRow || 'filtered' ) );
|
59
|
+
filters = filters || $.tablesorter.getFilters( c.$table );
|
60
|
+
// extract & save mark options from widgetOptions (prefixed with "mark_")
|
61
|
+
// update dynamically
|
62
|
+
$.each( filters, function( indx, filter ) {
|
63
|
+
if ( filter ) {
|
64
|
+
var testRegex = null,
|
65
|
+
matches = filter,
|
66
|
+
useRegex = false,
|
67
|
+
col = indx === c.columns ? '' : ':nth-child(' + ( indx + 1 ) + ')';
|
68
|
+
// regular expression entered
|
69
|
+
if ( regex.pure.test( filter ) ) {
|
70
|
+
matches = regex.pure.exec( filter );
|
71
|
+
// ignore "all" matches (i.e. /.*/)
|
72
|
+
if (matches[1] === '.*') {
|
73
|
+
matches[1] = '';
|
74
|
+
}
|
75
|
+
try {
|
76
|
+
// make sure to include global flag when testing regex
|
77
|
+
testRegex = new RegExp( matches[ 1 ], 'gim' );
|
78
|
+
matches = new RegExp( matches[ 1 ], matches[ 2 ] );
|
79
|
+
} catch (err) {
|
80
|
+
matches = null;
|
81
|
+
}
|
82
|
+
if ( ts.mark.checkRegex( testRegex ) ) {
|
83
|
+
$rows.children( col ).markRegExp( matches, options );
|
84
|
+
}
|
85
|
+
// matches is either null, invalid, or done my markRegExp
|
86
|
+
return;
|
87
|
+
}
|
88
|
+
// all special querys (or, and, wild cards & fuzzy)
|
89
|
+
// regex seems to not be consistent here; so use string indexOf
|
90
|
+
// fuzzy or wild card matches
|
91
|
+
if ( filter.indexOf( '~' ) === 0 ) {
|
92
|
+
useRegex = true;
|
93
|
+
// fuzzy search separate each letter
|
94
|
+
matches = filter.replace( /~/g, '' ).split( '' );
|
95
|
+
} else {
|
96
|
+
// wild card matching
|
97
|
+
if ( filter.indexOf( '?' ) > -1 ) {
|
98
|
+
useRegex = true;
|
99
|
+
filter = filter.replace( /\?/g, '\\S{1}' );
|
100
|
+
}
|
101
|
+
if ( filter.indexOf( '*' ) > -1 ) {
|
102
|
+
useRegex = true;
|
103
|
+
filter = filter.replace( /\*/g, '\\S*' );
|
104
|
+
}
|
105
|
+
matches = filter.split( regex.filter );
|
106
|
+
}
|
107
|
+
if ( useRegex && matches && matches.length ) {
|
108
|
+
matches = new RegExp( ts.mark.cleanMatches( matches ).join( '.*' ), 'gim' );
|
109
|
+
if ( ts.mark.checkRegex( matches ) ) {
|
110
|
+
$rows.children( col ).markRegExp( matches, options );
|
111
|
+
}
|
112
|
+
} else {
|
113
|
+
// pass an array of matches
|
114
|
+
$rows.children( col ).mark( ts.mark.cleanMatches( matches ), options );
|
115
|
+
}
|
116
|
+
}
|
117
|
+
});
|
118
|
+
}
|
119
|
+
};
|
120
|
+
|
121
|
+
ts.addWidget({
|
122
|
+
id: 'mark',
|
123
|
+
options: {
|
124
|
+
mark_tsUpdate : 'markUpdate'
|
125
|
+
},
|
126
|
+
init : function( table, thisWidget, c, wo ) {
|
127
|
+
ts.mark.init( c, wo );
|
128
|
+
},
|
129
|
+
remove : function( table, c ) {
|
130
|
+
var update = c.widgetOptions.mark_tsUpdate;
|
131
|
+
c.$table.off( 'filterEnd.tsmark' + ( update ? ' ' + update : '' ) );
|
132
|
+
}
|
133
|
+
});
|
134
|
+
|
135
|
+
})( jQuery );
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Widget: math - updated
|
1
|
+
/*! Widget: math - updated 7/31/2016 (v2.27.0) *//*
|
2
2
|
* Requires tablesorter v2.16+ and jQuery 1.7+
|
3
3
|
* by Rob Garrison
|
4
4
|
*/
|
@@ -216,7 +216,7 @@
|
|
216
216
|
var undef, time, mathAttr, $mathCells, indx, len,
|
217
217
|
changed = false,
|
218
218
|
filters = {};
|
219
|
-
if ( c.debug ) {
|
219
|
+
if ( c.debug || wo.math_debug ) {
|
220
220
|
time = new Date();
|
221
221
|
}
|
222
222
|
|
@@ -232,7 +232,6 @@
|
|
232
232
|
mathAttr = wo.math_dataAttrib;
|
233
233
|
$mathCells = c.$tbodies.children( 'tr' ).children( '[' + mathAttr + ']' );
|
234
234
|
changed = math.mathType( c, $mathCells, wo.math_priority ) || changed;
|
235
|
-
|
236
235
|
// only info tbody cells
|
237
236
|
$mathCells = c.$table
|
238
237
|
.children( '.' + c.cssInfoBlock + ', tfoot' )
|
@@ -257,17 +256,17 @@
|
|
257
256
|
// trigger an update only if cells inside the tbody changed
|
258
257
|
if ( changed ) {
|
259
258
|
wo.math_isUpdating = true;
|
260
|
-
if ( c.debug ) {
|
261
|
-
console[ console.group ? 'group' : 'log' ]( 'Math widget
|
259
|
+
if ( c.debug || wo.math_debug ) {
|
260
|
+
console[ console.group ? 'group' : 'log' ]( 'Math widget updating the cache after recalculation' );
|
262
261
|
}
|
263
262
|
|
264
|
-
// update internal cache
|
265
|
-
ts.
|
263
|
+
// update internal cache, but ignore "remove-me" rows and do not resort
|
264
|
+
ts.updateCache( c, function() {
|
266
265
|
math.updateComplete( c );
|
267
266
|
if ( !init && typeof wo.math_completed === 'function' ) {
|
268
267
|
wo.math_completed( c );
|
269
268
|
}
|
270
|
-
if ( c.debug ) {
|
269
|
+
if ( c.debug || wo.math_debug ) {
|
271
270
|
console.log( 'Math widget update completed' + ts.benchmark( time ) );
|
272
271
|
}
|
273
272
|
});
|
@@ -275,7 +274,7 @@
|
|
275
274
|
if ( !init && typeof wo.math_completed === 'function' ) {
|
276
275
|
wo.math_completed( c );
|
277
276
|
}
|
278
|
-
if ( c.debug ) {
|
277
|
+
if ( c.debug || wo.math_debug ) {
|
279
278
|
console.log( 'Math widget found no changes in data' + ts.benchmark( time ) );
|
280
279
|
}
|
281
280
|
}
|
@@ -284,7 +283,9 @@
|
|
284
283
|
|
285
284
|
updateComplete : function( c ) {
|
286
285
|
var wo = c.widgetOptions;
|
287
|
-
if ( wo.math_isUpdating && c.debug
|
286
|
+
if ( wo.math_isUpdating && (c.debug || wo.math_debug ) && console.groupEnd ) {
|
287
|
+
console.groupEnd();
|
288
|
+
}
|
288
289
|
wo.math_isUpdating = false;
|
289
290
|
},
|
290
291
|
|
@@ -299,7 +300,7 @@
|
|
299
300
|
// mathType is called multiple times if more than one "hasFilter" is used
|
300
301
|
getAll = math.getAll( c, hasFilter );
|
301
302
|
}
|
302
|
-
if (c.debug) {
|
303
|
+
if (c.debug || wo.math_debug) {
|
303
304
|
console[ console.group ? 'group' : 'log' ]( 'Tablesorter Math widget recalculation' );
|
304
305
|
}
|
305
306
|
// $.each is okay here... only 4 priorities
|
@@ -308,7 +309,7 @@
|
|
308
309
|
$targetCells = $cells.filter( '[' + mathAttr + '^=' + type + ']' ),
|
309
310
|
len = $targetCells.length;
|
310
311
|
if ( len ) {
|
311
|
-
if (c.debug) {
|
312
|
+
if (c.debug || wo.math_debug) {
|
312
313
|
console[ console.group ? 'group' : 'log' ]( type );
|
313
314
|
}
|
314
315
|
for ( index = 0; index < len; index++ ) {
|
@@ -324,7 +325,7 @@
|
|
324
325
|
if ( equations[ formula ] ) {
|
325
326
|
if ( arry.length ) {
|
326
327
|
result = equations[ formula ]( arry, c );
|
327
|
-
if ( c.debug ) {
|
328
|
+
if ( c.debug || wo.math_debug ) {
|
328
329
|
console.log( $el.attr( mathAttr ), hasFilter ? '("' + hasFilter + '")' : '', arry, '=', result );
|
329
330
|
}
|
330
331
|
} else {
|
@@ -334,10 +335,10 @@
|
|
334
335
|
changed = math.output( $el, c, result, arry ) || changed;
|
335
336
|
}
|
336
337
|
}
|
337
|
-
if ( c.debug && console.groupEnd ) { console.groupEnd(); }
|
338
|
+
if ( ( c.debug || wo.math_debug ) && console.groupEnd ) { console.groupEnd(); }
|
338
339
|
}
|
339
340
|
});
|
340
|
-
if ( c.debug && console.groupEnd ) { console.groupEnd(); }
|
341
|
+
if ( ( c.debug || wo.math_debug ) && console.groupEnd ) { console.groupEnd(); }
|
341
342
|
return changed;
|
342
343
|
}
|
343
344
|
return false;
|
@@ -350,7 +351,14 @@
|
|
350
351
|
changed = false,
|
351
352
|
prev = $cell.html(),
|
352
353
|
mask = $cell.attr( 'data-' + wo.math_data + '-mask' ) || wo.math_mask,
|
354
|
+
target = $cell.attr( 'data-' + wo.math_data + '-target' ) || '',
|
353
355
|
result = ts.formatMask( mask, value, wo.math_wrapPrefix, wo.math_wrapSuffix );
|
356
|
+
if (target) {
|
357
|
+
$el = $cell.find(target);
|
358
|
+
if ($el.length) {
|
359
|
+
$cell = $el;
|
360
|
+
}
|
361
|
+
}
|
354
362
|
if ( typeof wo.math_complete === 'function' ) {
|
355
363
|
result = wo.math_complete( $cell, wo, result, value, arry );
|
356
364
|
}
|
@@ -583,6 +591,7 @@
|
|
583
591
|
priority: 100,
|
584
592
|
options: {
|
585
593
|
math_data : 'math',
|
594
|
+
math_debug : false,
|
586
595
|
// column index to ignore
|
587
596
|
math_ignore : [],
|
588
597
|
// mask info: https://code.google.com/p/javascript-number-formatter/
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Widget: output - updated
|
1
|
+
/*! Widget: output - updated 7/31/2016 (v2.27.0) *//*
|
2
2
|
* Requires tablesorter v2.8+ and jQuery 1.7+
|
3
3
|
* Modified from:
|
4
4
|
* HTML Table to CSV: http://www.kunalbabre.com/projects/table2CSV.php (License unknown?)
|
@@ -145,8 +145,8 @@
|
|
145
145
|
});
|
146
146
|
headers = output.processRow(c, $this, true, outputJSON);
|
147
147
|
|
148
|
-
// all tbody rows
|
149
|
-
$rows = $el.children('tbody').children('tr');
|
148
|
+
// all tbody rows - do not include widget added rows (e.g. grouping widget headers)
|
149
|
+
$rows = $el.children('tbody').children('tr').not(c.selectorRemove);
|
150
150
|
|
151
151
|
// check for a filter callback function first! because
|
152
152
|
// /^f/.test(function(){ console.log('test'); }) is TRUE! (function is converted to a string)
|
@@ -193,7 +193,7 @@
|
|
193
193
|
|
194
194
|
// callback; if true returned, continue processing
|
195
195
|
if ($.isFunction(wo.output_callback)) {
|
196
|
-
tmp = wo.output_callback(c, mydata);
|
196
|
+
tmp = wo.output_callback(c, mydata, c.pager && c.pager.ajaxObject.url || null);
|
197
197
|
if ( tmp === false ) {
|
198
198
|
return;
|
199
199
|
} else if ( typeof tmp === 'string' ) {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Widget: scroller - updated 7/
|
1
|
+
/*! Widget: scroller - updated 7/31/2016 (v2.27.0) *//*
|
2
2
|
Copyright (C) 2011 T. Connell & Associates, Inc.
|
3
3
|
|
4
4
|
Dual-licensed under the MIT and GPL licenses
|
@@ -77,7 +77,9 @@
|
|
77
77
|
scroller_barWidth : null
|
78
78
|
},
|
79
79
|
format : function( table, c, wo ) {
|
80
|
-
if (
|
80
|
+
if ( c.isScrolling ) {
|
81
|
+
ts.scroller.resize( c, wo );
|
82
|
+
} else {
|
81
83
|
// initialize here instead of in widget init to give the
|
82
84
|
// filter widget time to finish building the filter row
|
83
85
|
ts.scroller.setup( c, wo );
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Widget: stickyHeaders - updated
|
1
|
+
/*! Widget: stickyHeaders - updated 7/31/2016 (v2.27.0) *//*
|
2
2
|
* Requires tablesorter v2.8+ and jQuery 1.4.3+
|
3
3
|
* by Rob Garrison
|
4
4
|
*/
|
@@ -61,10 +61,11 @@
|
|
61
61
|
// **************************
|
62
62
|
ts.addWidget({
|
63
63
|
id: 'stickyHeaders',
|
64
|
-
priority:
|
64
|
+
priority: 55, // sticky widget must be initialized after the filter widget!
|
65
65
|
options: {
|
66
66
|
stickyHeaders : '', // extra class name added to the sticky header row
|
67
|
-
|
67
|
+
stickyHeaders_appendTo : null, // jQuery selector or object to phycially attach the sticky headers
|
68
|
+
stickyHeaders_attachTo : null, // jQuery selector or object to attach scroll listener to (overridden by xScroll & yScroll settings)
|
68
69
|
stickyHeaders_xScroll : null, // jQuery selector or object to monitor horizontal scroll position (defaults: xScroll > attachTo > window)
|
69
70
|
stickyHeaders_yScroll : null, // jQuery selector or object to monitor vertical scroll position (defaults: yScroll > attachTo > window)
|
70
71
|
stickyHeaders_offset : 0, // number or jquery selector targeting the position:fixed element
|
@@ -215,8 +216,12 @@
|
|
215
216
|
|
216
217
|
ts.bindEvents(table, $stickyThead.children().children('.' + ts.css.header));
|
217
218
|
|
218
|
-
|
219
|
-
|
219
|
+
if (wo.stickyHeaders_appendTo) {
|
220
|
+
$(wo.stickyHeaders_appendTo).append( $stickyWrap );
|
221
|
+
} else {
|
222
|
+
// add stickyheaders AFTER the table. If the table is selected by ID, the original one (first) will be returned.
|
223
|
+
$table.after( $stickyWrap );
|
224
|
+
}
|
220
225
|
|
221
226
|
// onRenderHeader is defined, we need to do something about it (fixes #641)
|
222
227
|
if (c.onRenderHeader) {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Widget: uitheme - updated 7/
|
1
|
+
/*! Widget: uitheme - updated 7/31/2016 (v2.27.0) */
|
2
2
|
;(function ($) {
|
3
3
|
'use strict';
|
4
4
|
var ts = $.tablesorter || {};
|
@@ -37,9 +37,9 @@
|
|
37
37
|
hover : 'ui-state-hover', // hover class
|
38
38
|
// icon class names
|
39
39
|
icons : 'ui-icon', // icon class added to the <i> in the header
|
40
|
-
iconSortNone : 'ui-icon-carat-2-n-s', // class name added to icon when column is not sorted
|
41
|
-
iconSortAsc : 'ui-icon-carat-1-n', // class name added to icon when column has ascending sort
|
42
|
-
iconSortDesc : 'ui-icon-carat-1-s', // class name added to icon when column has descending sort
|
40
|
+
iconSortNone : 'ui-icon-carat-2-n-s ui-icon-caret-2-n-s', // class name added to icon when column is not sorted
|
41
|
+
iconSortAsc : 'ui-icon-carat-1-n ui-icon-caret-1-n', // class name added to icon when column has ascending sort
|
42
|
+
iconSortDesc : 'ui-icon-carat-1-s ui-icon-caret-1-s', // class name added to icon when column has descending sort
|
43
43
|
filterRow : '',
|
44
44
|
footerRow : '',
|
45
45
|
footerCells : '',
|
@@ -51,12 +51,12 @@
|
|
51
51
|
|
52
52
|
/* black unsorted icon */
|
53
53
|
.tablesorter-bootstrap .bootstrap-icon-unsorted {
|
54
|
-
background-image: url(data:image/png;base64,
|
54
|
+
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAYAAAD5YeaVAAAA20lEQVR4AWJABpKSkoxALCstLb0aUAsZaCAMhVEY6B0amx8YZWDDEDSBa2AGe7XeIiAAClYwVGBvsAcIllsf/mvcC9DgOOd8h90fxWvngVEUbZIkuWRZZlE8eQjcisgZMM9zi+LJ6ZfwegmWZflZDugdHMfxTcGqql7TNBlUB/QObtv2VBSFrev6OY7jngzFk9OT/fn73fWYpqnlXNyXDMWT0zuYx/Bvel9ej+LJ6R08DMOu67q7DkTkrSA5vYPneV71fX/QASdTkJwezhs0TfMARn0wMDDGXEPgF4oijqwM5YjNAAAAAElFTkSuQmCC);
|
55
55
|
}
|
56
56
|
|
57
57
|
/* white unsorted icon */
|
58
58
|
.tablesorter-bootstrap .icon-white.bootstrap-icon-unsorted {
|
59
|
-
background-image: url(data:image/png;base64,
|
59
|
+
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAYAAAD5YeaVAAAAe0lEQVR4AbXQoRWDMBiF0Sh2QLAAQ8SxJGugWSA6A2STW1PxTsnB9cnkfuYvv8OGC1t5G3Y0QMP+Bm857keAdQIzWBP3+Bw4MADQE18B6/etRnCV/w9nnGuLezfAmXhABGtAGIkruvk6auIFRwQJDywllsEAjCecB20GP59BQQ+gtlRLAAAAAElFTkSuQmCC);
|
60
60
|
}
|
61
61
|
|
62
62
|
/* since bootstrap (table-striped) uses nth-child(), we just use this to add a zebra stripe color */
|
@@ -61,12 +61,12 @@
|
|
61
61
|
|
62
62
|
/* black unsorted icon */
|
63
63
|
.tablesorter-bootstrap .bootstrap-icon-unsorted {
|
64
|
-
background-image: url(data:image/png;base64,
|
64
|
+
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAYAAAD5YeaVAAABGUlEQVR4AZWQAUfEYBzGC07fILfrbnfgqG1jmxliDitmYIaxb9Y3CEIEVHDaUGMfYF8gIyBqbd7eH7wWofB6/J7nN+x/IIRQbz6fH8p3slgsrkl4uv8QNU071XX9wTAMQcLTD6bi2WazubUsq3ddV5AwPftU1tbr9Z0UPhGDIHgjYXp2JS+Xy71t2wNCFEV113UxCdOzKznLshvf9z+SJHlp23ZHR8L07Er+6/u/LO96td1u3zmX/BmdjoTp2ZUchmHted4o/16sVqt7KR6TMD27kpumOc/z/EkOvWmaQp7rlYTp2ZU8juOsqqqLoij2UvhyHEeQMD27knl93x+VZXmZpukz9yVh+l+vMQzDrK7rXRzHjyQ83b8BlglBGLw1Kb4AAAAASUVORK5CYII=);
|
65
65
|
}
|
66
66
|
|
67
67
|
/* white unsorted icon */
|
68
68
|
.tablesorter-bootstrap .icon-white.bootstrap-icon-unsorted {
|
69
|
-
background-image: url(data:image/png;base64,
|
69
|
+
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAYAAAD5YeaVAAAAe0lEQVR4AbXQoRWDMBiF0Sh2QLAAQ8SxJGugWSA6A2STW1PxTsnB9cnkfuYvv8OGC1t5G3Y0QMP+Bm857keAdQIzWBP3+Bw4MADQE18B6/etRnCV/w9nnGuLezfAmXhABGtAGIkruvk6auIFRwQJDywllsEAjCecB20GP59BQQ+gtlRLAAAAAElFTkSuQmCC);
|
70
70
|
}
|
71
71
|
|
72
72
|
/* since bootstrap (table-striped) uses nth-child(), we just use this to add a zebra stripe color */
|
@@ -0,0 +1,176 @@
|
|
1
|
+
/*************
|
2
|
+
Materialize theme (http://materializecss.com/)
|
3
|
+
*************/
|
4
|
+
/* jQuery materialize Theme */
|
5
|
+
.tablesorter-materialize {
|
6
|
+
width: 100%;
|
7
|
+
}
|
8
|
+
.tablesorter-materialize thead th,
|
9
|
+
.tablesorter-materialize thead td,
|
10
|
+
.tablesorter-materialize tfoot th,
|
11
|
+
.tablesorter-materialize tfoot td {
|
12
|
+
font: 14px/20px Arial, Sans-serif;
|
13
|
+
font-weight: bold;
|
14
|
+
padding: 4px;
|
15
|
+
margin: 0 0 18px;
|
16
|
+
background-color: #eee;
|
17
|
+
}
|
18
|
+
|
19
|
+
.tablesorter-materialize .tablesorter-header {
|
20
|
+
cursor: pointer;
|
21
|
+
}
|
22
|
+
.tablesorter-materialize .sorter-false {
|
23
|
+
cursor: default;
|
24
|
+
}
|
25
|
+
|
26
|
+
.tablesorter-materialize .tablesorter-header-inner {
|
27
|
+
position: relative;
|
28
|
+
padding: 4px 18px 4px 4px;
|
29
|
+
}
|
30
|
+
|
31
|
+
/* sort icons */
|
32
|
+
.tablesorter-materialize thead .tablesorter-header {
|
33
|
+
background-repeat: no-repeat;
|
34
|
+
background-position: center right;
|
35
|
+
padding: 4px 18px 4px 4px;
|
36
|
+
white-space: normal;
|
37
|
+
cursor: pointer;
|
38
|
+
}
|
39
|
+
|
40
|
+
/* black unsorted icon */
|
41
|
+
.tablesorter-materialize thead .tablesorter-headerUnSorted {
|
42
|
+
/* <svg xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 24 16"><path d="M15 8 1 8 8 0zM15 9 1 9 8 16z" fill="#222"/></svg> */
|
43
|
+
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDI0IDE2Ij48cGF0aCBkPSJNMTUgOCAxIDggOCAwek0xNSA5IDEgOSA4IDE2eiIgZmlsbD0iIzIyMiIvPjwvc3ZnPg==);
|
44
|
+
}
|
45
|
+
/* black asc icon */
|
46
|
+
.tablesorter-materialize thead .tablesorter-headerAsc {
|
47
|
+
/* <svg xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 24 16"><path d="M15 11 1 11 8 3z" fill="#222"/></svg> */
|
48
|
+
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDI0IDE2Ij48cGF0aCBkPSJNMTUgMTEgMSAxMSA4IDN6IiBmaWxsPSIjMjIyIi8+PC9zdmc+);
|
49
|
+
}
|
50
|
+
/* black desc icon */
|
51
|
+
.tablesorter-materialize thead .tablesorter-headerDesc {
|
52
|
+
/* <svg xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 24 16"><path d="M15 6 1 6 8 13z" fill="#222"/></svg> */
|
53
|
+
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDI0IDE2Ij48cGF0aCBkPSJNMTUgNiAxIDYgOCAxM3oiIGZpbGw9IiMyMjIiLz48L3N2Zz4=);
|
54
|
+
}
|
55
|
+
|
56
|
+
/* white unsorted icon */
|
57
|
+
.tablesorter-materialize-dark thead .tablesorter-headerUnSorted {
|
58
|
+
/* <svg xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 24 16"><path d="M15 8 1 8 8 0zM15 9 1 9 8 16z" fill="#fff"/></svg> */
|
59
|
+
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDI0IDE2Ij48cGF0aCBkPSJNMTUgOCAxIDggOCAwek0xNSA5IDEgOSA4IDE2eiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg==);
|
60
|
+
}
|
61
|
+
/* white asc icon */
|
62
|
+
.tablesorter-materialize-dark thead .tablesorter-headerAsc {
|
63
|
+
/* <svg xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 24 16"><path d="M15 11 1 11 8 3z" fill="#fff"/></svg> */
|
64
|
+
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDI0IDE2Ij48cGF0aCBkPSJNMTUgMTEgMSAxMSA4IDN6IiBmaWxsPSIjZmZmIi8+PC9zdmc+);
|
65
|
+
}
|
66
|
+
/* white desc icon */
|
67
|
+
.tablesorter-materialize-dark thead .tablesorter-headerDesc {
|
68
|
+
/* <svg xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 24 16"><path d="M15 6 1 6 8 13z" fill="#fff"/></svg> */
|
69
|
+
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDI0IDE2Ij48cGF0aCBkPSJNMTUgNiAxIDYgOCAxM3oiIGZpbGw9IiNmZmYiLz48L3N2Zz4=);
|
70
|
+
}
|
71
|
+
|
72
|
+
/* since materialize (table-striped) uses nth-child(), we just use this to add a zebra stripe color */
|
73
|
+
.tablesorter-materialize > tbody > tr.odd > td,
|
74
|
+
.tablesorter-materialize > tbody > tr.tablesorter-hasChildRow.odd:hover ~ tr.tablesorter-hasChildRow.odd ~ .tablesorter-childRow.odd > td {
|
75
|
+
background-color: #f9f9f9;
|
76
|
+
}
|
77
|
+
.tablesorter-materialize > tbody > tr.hover > td,
|
78
|
+
.tablesorter-materialize > tbody > tr.odd:hover > td,
|
79
|
+
.tablesorter-materialize > tbody > tr.even:hover > td,
|
80
|
+
.tablesorter-materialize > tbody > tr.tablesorter-hasChildRow.odd:hover ~ .tablesorter-childRow.odd > td,
|
81
|
+
.tablesorter-materialize > tbody > tr.tablesorter-hasChildRow.even:hover ~ .tablesorter-childRow.even > td {
|
82
|
+
background-color: #f5f5f5;
|
83
|
+
}
|
84
|
+
.tablesorter-materialize > tbody > tr.even > td,
|
85
|
+
.tablesorter-materialize > tbody > tr.tablesorter-hasChildRow.even:hover ~ tr.tablesorter-hasChildRow.even ~ .tablesorter-childRow.even > td {
|
86
|
+
background-color: #fff;
|
87
|
+
}
|
88
|
+
|
89
|
+
/* processing icon */
|
90
|
+
.tablesorter-materialize .tablesorter-processing {
|
91
|
+
background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=');
|
92
|
+
background-position: center center !important;
|
93
|
+
background-repeat: no-repeat !important;
|
94
|
+
}
|
95
|
+
|
96
|
+
/* caption */
|
97
|
+
.caption {
|
98
|
+
background-color: #fff;
|
99
|
+
}
|
100
|
+
|
101
|
+
/* filter widget */
|
102
|
+
.tablesorter-materialize .tablesorter-filter-row input.tablesorter-filter,
|
103
|
+
.tablesorter-materialize .tablesorter-filter-row select.tablesorter-filter {
|
104
|
+
width: 98%;
|
105
|
+
margin: 0;
|
106
|
+
padding: 4px 6px;
|
107
|
+
color: #333;
|
108
|
+
-webkit-box-sizing: border-box;
|
109
|
+
-moz-box-sizing: border-box;
|
110
|
+
box-sizing: border-box;
|
111
|
+
-webkit-transition: height 0.1s ease;
|
112
|
+
-moz-transition: height 0.1s ease;
|
113
|
+
-o-transition: height 0.1s ease;
|
114
|
+
transition: height 0.1s ease;
|
115
|
+
}
|
116
|
+
.tablesorter-materialize .tablesorter-filter-row .tablesorter-filter.disabled {
|
117
|
+
background-color: #eee;
|
118
|
+
color: #555;
|
119
|
+
cursor: not-allowed;
|
120
|
+
border: 1px solid #ccc;
|
121
|
+
border-radius: 4px;
|
122
|
+
box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.075) inset;
|
123
|
+
box-sizing: border-box;
|
124
|
+
transition: height 0.1s ease;
|
125
|
+
}
|
126
|
+
.tablesorter-materialize .tablesorter-filter-row {
|
127
|
+
background-color: #efefef;
|
128
|
+
}
|
129
|
+
.tablesorter-materialize .tablesorter-filter-row td {
|
130
|
+
background-color: #efefef;
|
131
|
+
line-height: normal;
|
132
|
+
text-align: center;
|
133
|
+
padding: 4px 6px;
|
134
|
+
vertical-align: middle;
|
135
|
+
-webkit-transition: line-height 0.1s ease;
|
136
|
+
-moz-transition: line-height 0.1s ease;
|
137
|
+
-o-transition: line-height 0.1s ease;
|
138
|
+
transition: line-height 0.1s ease;
|
139
|
+
}
|
140
|
+
/* hidden filter row */
|
141
|
+
.tablesorter-materialize .tablesorter-filter-row.hideme td {
|
142
|
+
padding: 2px; /* change this to modify the thickness of the closed border row */
|
143
|
+
margin: 0;
|
144
|
+
line-height: 0;
|
145
|
+
}
|
146
|
+
.tablesorter-materialize .tablesorter-filter-row.hideme * {
|
147
|
+
height: 1px;
|
148
|
+
min-height: 0;
|
149
|
+
border: 0;
|
150
|
+
padding: 0;
|
151
|
+
margin: 0;
|
152
|
+
/* don't use visibility: hidden because it disables tabbing */
|
153
|
+
opacity: 0;
|
154
|
+
filter: alpha(opacity=0);
|
155
|
+
}
|
156
|
+
/* rows hidden by filtering (needed for child rows) */
|
157
|
+
.tablesorter .filtered {
|
158
|
+
display: none;
|
159
|
+
}
|
160
|
+
|
161
|
+
/* pager plugin */
|
162
|
+
.tablesorter-materialize .tablesorter-pager select {
|
163
|
+
padding: 4px 6px;
|
164
|
+
display: inline-block;
|
165
|
+
width: auto;
|
166
|
+
}
|
167
|
+
.tablesorter-materialize .tablesorter-pager .pagedisplay {
|
168
|
+
border: 0;
|
169
|
+
}
|
170
|
+
|
171
|
+
/* ajax error row */
|
172
|
+
.tablesorter .tablesorter-errorRow td {
|
173
|
+
text-align: center;
|
174
|
+
cursor: pointer;
|
175
|
+
background-color: #e6bf99;
|
176
|
+
}
|