diff --git a/README.md b/README.md index 263e666b..1f3cbba3 100644 --- a/README.md +++ b/README.md @@ -104,14 +104,23 @@ If you would like to contribute, please... View the [complete change log here](https://github.com/Mottie/tablesorter/wiki/Changes). -#### Version 2.30.3 (2018-03-30) +#### Version 2.30.4 (2018-05-16) + +* Core: + * Use table cell, not jQuery object to disable sort; Fixes issue introduced in v2.30.2. +* Scroller: + * Set scrollLeft position after sort. Fixes [issue #1545](https://github.com/Mottie/tablesorter/issues/1545). +* Docs: + * Add when not to use headers. See [issue #1524](https://github.com/Mottie/tablesorter/issues/1524). + +#### Version 2.30.3 (2018-04-30) * Core: * Use indexed headers. Fixes [issue #1524](https://github.com/Mottie/tablesorter/issues/1524). * Docs: * Remove link preload because it isn't supported in Firefox. -#### Version 2.30.2 (2018-03-26) +#### Version 2.30.2 (2018-04-26) * Core: * Allow passing headers from multiple rows. See [issue #1116](https://github.com/Mottie/tablesorter/issues/1116). @@ -132,29 +141,3 @@ View the [complete change log here](https://github.com/Mottie/tablesorter/wiki/C * Replace whitespace with symbols. * Meta: * Update dependencies. - -#### Version 2.30.1 (2018-03-19) - -* Core: - * Only validate options while debugging. Closes [issue #1528](https://github.com/Mottie/tablesorter/issues/1528) -* Pager: - * Show all rows, not pages. Fixes [issue #1529](https://github.com/Mottie/tablesorter/issues/1529) -* SaveSort: - * Fix JS error. See [issue #1525](https://github.com/Mottie/tablesorter/issues/1525) - -#### Version 2.30.0 (2018-03-18) - -* Core: - * [Debug](https://mottie.github.io/tablesorter/docs/#debug) now allows you to debug components separately; set to `true` as usual, or set to `'core filter'` to only show the core and filter widget debug logs. - * Change pager `removeRows` check. Fixes issues [#1525](https://github.com/Mottie/tablesorter/issues/1525) & [#1466](https://github.com/Mottie/tablesorter/issues/1466). -* Filter: - * Make `onlyAvail` work with showProcessing. Fixes [issue #1518](https://github.com/Mottie/tablesorter/issues/1518). - * Escape quotes in select options. See [issue #1527](https://github.com/Mottie/tablesorter/issues/1527). -* Pager: - * Change pager `removeRows` check. Fixes issues [#1525](https://github.com/Mottie/tablesorter/issues/1525) & [#1466](https://github.com/Mottie/tablesorter/issues/1466). -* Global: - * Add editor eslint & fix issues. File versions were not updated for this change! -* Docs: - * Update Bootstrap v4.0.0. - * Adjust (accordion) link position. - * Fix scroller fixed column border alignment. diff --git a/dist/js/jquery.tablesorter.combined.js b/dist/js/jquery.tablesorter.combined.js index 34695b92..137bd47c 100644 --- a/dist/js/jquery.tablesorter.combined.js +++ b/dist/js/jquery.tablesorter.combined.js @@ -1,4 +1,4 @@ -/*! tablesorter (FORK) - updated 2018-04-30 (v2.30.3)*/ +/*! tablesorter (FORK) - updated 2018-05-16 (v2.30.4)*/ /* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */ (function(factory) { if (typeof define === 'function' && define.amd) { @@ -10,7 +10,7 @@ } }(function(jQuery) { -/*! TableSorter (FORK) v2.30.3 *//* +/*! TableSorter (FORK) v2.30.4 *//* * Client-side table sorting with ease! * @requires jQuery v1.2.6+ * @@ -34,7 +34,7 @@ 'use strict'; var ts = $.tablesorter = { - version : '2.30.3', + version : '2.30.4', parsers : [], widgets : [], @@ -532,7 +532,7 @@ $cell = ts.getClosest( $( this ), '.' + ts.css.header ); // use column index from data-attribute or index of current row; fixes #1116 c.last.clickedIndex = $cell.attr( 'data-column' ) || $cell.index(); - cell = c.$headerIndexed[ c.last.clickedIndex ]; + cell = c.$headerIndexed[ c.last.clickedIndex ][0]; if ( cell && !cell.sortDisabled ) { ts.initSort( c, cell, e ); } diff --git a/dist/js/jquery.tablesorter.combined.min.js b/dist/js/jquery.tablesorter.combined.min.js index 619e218f..42849a18 100644 --- a/dist/js/jquery.tablesorter.combined.min.js +++ b/dist/js/jquery.tablesorter.combined.min.js @@ -1,2 +1,2 @@ -/*! tablesorter (FORK) - updated 2018-04-30 (v2.30.3)*/ -!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&"object"==typeof module.exports?module.exports=e(require("jquery")):e(jQuery)}(function(e){return function(e){"use strict";var t=e.tablesorter={version:"2.30.3",parsers:[],widgets:[],defaults:{theme:"default",widthFixed:!1,showProcessing:!1,headerTemplate:"{content}",onRenderTemplate:null,onRenderHeader:null,cancelSelection:!0,tabIndex:!0,dateFormat:"mmddyyyy",sortMultiSortKey:"shiftKey",sortResetKey:"ctrlKey",usNumberFormat:!0,delayInit:!1,serverSideSorting:!1,resort:!0,headers:{},ignoreCase:!0,sortForce:null,sortList:[],sortAppend:null,sortStable:!1,sortInitialOrder:"asc",sortLocaleCompare:!1,sortReset:!1,sortRestart:!1,emptyTo:"bottom",stringTo:"max",duplicateSpan:!0,textExtraction:"basic",textAttribute:"data-text",textSorter:null,numberSorter:null,initWidgets:!0,widgetClass:"widget-{name}",widgets:[],widgetOptions:{zebra:["even","odd"]},initialized:null,tableClass:"",cssAsc:"",cssDesc:"",cssNone:"",cssHeader:"",cssHeaderRow:"",cssProcessing:"",cssChildRow:"tablesorter-childRow",cssInfoBlock:"tablesorter-infoOnly",cssNoSort:"tablesorter-noSort",cssIgnoreRow:"tablesorter-ignoreRow",cssIcon:"tablesorter-icon",cssIconNone:"",cssIconAsc:"",cssIconDesc:"",cssIconDisabled:"",pointerClick:"click",pointerDown:"mousedown",pointerUp:"mouseup",selectorHeaders:"> thead th, > thead td",selectorSort:"th, td",selectorRemove:".remove-me",debug:!1,headerList:[],empties:{},strings:{},parsers:[],globalize:0,imgAttr:0},css:{table:"tablesorter",cssHasChild:"tablesorter-hasChildRow",childRow:"tablesorter-childRow",colgroup:"tablesorter-colgroup",header:"tablesorter-header",headerRow:"tablesorter-headerRow",headerIn:"tablesorter-header-inner",icon:"tablesorter-icon",processing:"tablesorter-processing",sortAsc:"tablesorter-headerAsc",sortDesc:"tablesorter-headerDesc",sortNone:"tablesorter-headerUnSorted"},language:{sortAsc:"Ascending sort applied, ",sortDesc:"Descending sort applied, ",sortNone:"No sort applied, ",sortDisabled:"sorting is disabled",nextAsc:"activate to apply an ascending sort",nextDesc:"activate to apply a descending sort",nextNone:"activate to remove the sort"},regex:{templateContent:/\{content\}/g,templateIcon:/\{icon\}/g,templateName:/\{name\}/i,spaces:/\s+/g,nonWord:/\W/g,formElements:/(input|select|button|textarea)/i,chunk:/(^([+\-]?(?:\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,chunks:/(^\\0|\\0$)/,hex:/^0x[0-9a-f]+$/i,comma:/,/g,digitNonUS:/[\s|\.]/g,digitNegativeTest:/^\s*\([.\d]+\)/,digitNegativeReplace:/^\s*\(([.\d]+)\)/,digitTest:/^[\-+(]?\d+[)]?$/,digitReplace:/[,.'"\s]/g},string:{max:1,min:-1,emptymin:1,emptymax:-1,zero:0,none:0,"null":0,top:!0,bottom:!1},keyCodes:{enter:13},dates:{},instanceMethods:{},setup:function(r,a){if(r&&r.tHead&&0!==r.tBodies.length&&!0!==r.hasInitialized){var i="",s=e(r),o=e.metadata;r.hasInitialized=!1,r.isProcessing=!0,r.config=a,e.data(r,"tablesorter",a),t.debug(a,"core")&&(console[console.group?"group":"log"]("Initializing tablesorter v"+t.version),e.data(r,"startoveralltimer",new Date)),a.supportsDataObject=function(e){return e[0]=parseInt(e[0],10),e[0]>1||1===e[0]&&parseInt(e[1],10)>=4}(e.fn.jquery.split(".")),a.emptyTo=a.emptyTo.toLowerCase(),a.stringTo=a.stringTo.toLowerCase(),a.last={sortList:[],clickedIndex:-1},/tablesorter\-/.test(s.attr("class"))||(i=""!==a.theme?" tablesorter-"+a.theme:""),a.namespace?a.namespace="."+a.namespace.replace(t.regex.nonWord,""):a.namespace=".tablesorter"+Math.random().toString(16).slice(2),a.table=r,a.$table=s.addClass(t.css.table+" "+a.tableClass+i+" "+a.namespace.slice(1)).attr("role","grid"),a.$headers=s.find(a.selectorHeaders),a.$table.children().children("tr").attr("role","row"),a.$tbodies=s.children("tbody:not(."+a.cssInfoBlock+")").attr({"aria-live":"polite","aria-relevant":"all"}),a.$table.children("caption").length&&((i=a.$table.children("caption")[0]).id||(i.id=a.namespace.slice(1)+"caption"),a.$table.attr("aria-labelledby",i.id)),a.widgetInit={},a.textExtraction=a.$table.attr("data-text-extraction")||a.textExtraction||"basic",t.buildHeaders(a),t.fixColumnWidth(r),t.addWidgetFromClass(r),t.applyWidgetOptions(r),t.setupParsers(a),a.totalRows=0,a.debug&&t.validateOptions(a),a.delayInit||t.buildCache(a),t.bindEvents(r,a.$headers,!0),t.bindMethods(a),a.supportsDataObject&&void 0!==s.data().sortlist?a.sortList=s.data().sortlist:o&&s.metadata()&&s.metadata().sortlist&&(a.sortList=s.metadata().sortlist),t.applyWidget(r,!0),a.sortList.length>0?t.sortOn(a,a.sortList,{},!a.initWidgets):(t.setHeadersCss(a),a.initWidgets&&t.applyWidget(r,!1)),a.showProcessing&&s.unbind("sortBegin"+a.namespace+" sortEnd"+a.namespace).bind("sortBegin"+a.namespace+" sortEnd"+a.namespace,function(e){clearTimeout(a.timerProcessing),t.isProcessing(r),"sortBegin"===e.type&&(a.timerProcessing=setTimeout(function(){t.isProcessing(r,!0)},500))}),r.hasInitialized=!0,r.isProcessing=!1,t.debug(a,"core")&&(console.log("Overall initialization time:"+t.benchmark(e.data(r,"startoveralltimer"))),t.debug(a,"core")&&console.groupEnd&&console.groupEnd()),s.triggerHandler("tablesorter-initialized",r),"function"==typeof a.initialized&&a.initialized(r)}else t.debug(a,"core")&&(r.hasInitialized?console.warn("Stopping initialization. Tablesorter has already been initialized"):console.error("Stopping initialization! No table, thead or tbody",r))},bindMethods:function(r){var a=r.$table,i=r.namespace,s="sortReset update updateRows updateAll updateHeaders addRows updateCell updateComplete sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave ".split(" ").join(i+" ");a.unbind(s.replace(t.regex.spaces," ")).bind("sortReset"+i,function(e,r){e.stopPropagation(),t.sortReset(this.config,function(e){e.isApplyingWidgets?setTimeout(function(){t.applyWidget(e,"",r)},100):t.applyWidget(e,"",r)})}).bind("updateAll"+i,function(e,r,a){e.stopPropagation(),t.updateAll(this.config,r,a)}).bind("update"+i+" updateRows"+i,function(e,r,a){e.stopPropagation(),t.update(this.config,r,a)}).bind("updateHeaders"+i,function(e,r){e.stopPropagation(),t.updateHeaders(this.config,r)}).bind("updateCell"+i,function(e,r,a,i){e.stopPropagation(),t.updateCell(this.config,r,a,i)}).bind("addRows"+i,function(e,r,a,i){e.stopPropagation(),t.addRows(this.config,r,a,i)}).bind("updateComplete"+i,function(){this.isUpdating=!1}).bind("sorton"+i,function(e,r,a,i){e.stopPropagation(),t.sortOn(this.config,r,a,i)}).bind("appendCache"+i,function(r,a,i){r.stopPropagation(),t.appendCache(this.config,i),e.isFunction(a)&&a(this)}).bind("updateCache"+i,function(e,r,a){e.stopPropagation(),t.updateCache(this.config,r,a)}).bind("applyWidgetId"+i,function(e,r){e.stopPropagation(),t.applyWidgetId(this,r)}).bind("applyWidgets"+i,function(e,r){e.stopPropagation(),t.applyWidget(this,!1,r)}).bind("refreshWidgets"+i,function(e,r,a){e.stopPropagation(),t.refreshWidgets(this,r,a)}).bind("removeWidget"+i,function(e,r,a){e.stopPropagation(),t.removeWidget(this,r,a)}).bind("destroy"+i,function(e,r,a){e.stopPropagation(),t.destroy(this,r,a)}).bind("resetToLoadState"+i,function(a){a.stopPropagation(),t.removeWidget(this,!0,!1);var i=e.extend(!0,{},r.originalSettings);(r=e.extend(!0,{},t.defaults,i)).originalSettings=i,this.hasInitialized=!1,t.setup(this,r)})},bindEvents:function(r,a,i){var s,o=(r=e(r)[0]).config,n=o.namespace,l=null;!0!==i&&(a.addClass(n.slice(1)+"_extra_headers"),(s=t.getClosest(a,"table")).length&&"TABLE"===s[0].nodeName&&s[0]!==r&&e(s[0]).addClass(n.slice(1)+"_extra_table")),s=(o.pointerDown+" "+o.pointerUp+" "+o.pointerClick+" sort keyup ").replace(t.regex.spaces," ").split(" ").join(n+" "),a.find(o.selectorSort).add(a.filter(o.selectorSort)).unbind(s).bind(s,function(r,a){var i,s,n,c=e(r.target),d=" "+r.type+" ";if(!(1!==(r.which||r.button)&&!d.match(" "+o.pointerClick+" | sort | keyup ")||" keyup "===d&&r.which!==t.keyCodes.enter||d.match(" "+o.pointerClick+" ")&&void 0!==r.which||d.match(" "+o.pointerUp+" ")&&l!==r.target&&!0!==a)){if(d.match(" "+o.pointerDown+" "))return l=r.target,void("1"===(n=c.jquery.split("."))[0]&&n[1]<4&&r.preventDefault());if(l=null,t.regex.formElements.test(r.target.nodeName)||c.hasClass(o.cssNoSort)||c.parents("."+o.cssNoSort).length>0||c.parents("button").length>0)return!o.cancelSelection;o.delayInit&&t.isEmptyObject(o.cache)&&t.buildCache(o),i=t.getClosest(e(this),"."+t.css.header),o.last.clickedIndex=i.attr("data-column")||i.index(),(s=o.$headerIndexed[o.last.clickedIndex])&&!s.sortDisabled&&t.initSort(o,s,r)}}),o.cancelSelection&&a.attr("unselectable","on").bind("selectstart",!1).css({"user-select":"none",MozUserSelect:"none"})},buildHeaders:function(r){var a,i,s,o;for(r.headerList=[],r.headerContent=[],r.sortVars=[],t.debug(r,"core")&&(s=new Date),r.columns=t.computeColumnIndex(r.$table.children("thead, tfoot").children("tr")),i=r.cssIcon?'':"",r.$headers=e(e.map(r.$table.find(r.selectorHeaders),function(a,s){var o,n,l,c,d,f=e(a);if(!t.getClosest(f,"tr").hasClass(r.cssIgnoreRow))return/(th|td)/i.test(a.nodeName)||(d=t.getClosest(f,"th, td"),f.attr("data-column",d.attr("data-column"))),o=t.getColumnData(r.table,r.headers,s,!0),r.headerContent[s]=f.html(),""===r.headerTemplate||f.find("."+t.css.headerIn).length||(c=r.headerTemplate.replace(t.regex.templateContent,f.html()).replace(t.regex.templateIcon,f.find("."+t.css.icon).length?"":i),r.onRenderTemplate&&(n=r.onRenderTemplate.apply(f,[s,c]))&&"string"==typeof n&&(c=n),f.html('