tablesorter/dist/js/widgets/widget-stickyHeaders.min.js

2 lines
5.6 KiB
JavaScript
Raw Normal View History

2017-01-07 02:56:05 +00:00
/*! Widget: stickyHeaders - updated 1/6/2017 (v2.28.4) */
2017-05-16 20:33:15 +00:00
!function(e,s){"use strict";var t=e.tablesorter||{};e.extend(t.css,{sticky:"tablesorter-stickyHeader",stickyVis:"tablesorter-sticky-visible",stickyHide:"tablesorter-sticky-hidden",stickyWrap:"tablesorter-sticky-wrapper"}),t.addHeaderResizeEvent=function(s,t,i){if((s=e(s)[0]).config){var r={timer:250},a=e.extend({},r,i),d=s.config,c=d.widgetOptions,l=function(e){var s,t,i,r,a,l,n=d.$headers.length;for(c.resize_flag=!0,t=[],s=0;s<n;s++)r=(i=d.$headers.eq(s)).data("savedSizes")||[0,0],a=i[0].offsetWidth,l=i[0].offsetHeight,a===r[0]&&l===r[1]||(i.data("savedSizes",[a,l]),t.push(i[0]));t.length&&!1!==e&&d.$table.triggerHandler("resize",[t]),c.resize_flag=!1};if(clearInterval(c.resize_timer),t)return c.resize_flag=!1,!1;l(!1),c.resize_timer=setInterval(function(){c.resize_flag||l()},a.timer)}},t.addWidget({id:"stickyHeaders",priority:54,options:{stickyHeaders:"",stickyHeaders_appendTo:null,stickyHeaders_attachTo:null,stickyHeaders_xScroll:null,stickyHeaders_yScroll:null,stickyHeaders_offset:0,stickyHeaders_filteredToTop:!0,stickyHeaders_cloneId:"-sticky",stickyHeaders_addResizeEvent:!0,stickyHeaders_includeCaption:!0,stickyHeaders_zIndex:2},format:function(i,r,a){if(!(r.$table.hasClass("hasStickyHeaders")||e.inArray("filter",r.widgets)>=0&&!r.$table.hasClass("hasFilters"))){var d,c,l,n,o=r.$table,f=e(a.stickyHeaders_attachTo),h=r.namespace+"stickyheaders ",p=e(a.stickyHeaders_yScroll||a.stickyHeaders_attachTo||s),y=e(a.stickyHeaders_xScroll||a.stickyHeaders_attachTo||s),k=o.children("thead:first").children("tr").not(".sticky-false").children(),g=o.children("tfoot"),H=isNaN(a.stickyHeaders_offset)?e(a.stickyHeaders_offset):"",b=H.length?H.height()||0:parseInt(a.stickyHeaders_offset,10)||0,_=o.parent().closest("."+t.css.table).hasClass("hasStickyHeaders")?o.parent().closest("table.tablesorter")[0].config.widgetOptions.$sticky.parent():[],u=_.length?_.height():0,v=a.$sticky=o.clone().addClass("containsStickyHeaders "+t.css.sticky+" "+a.stickyHeaders+" "+r.namespace.slice(1)+"_extra_table").wrap('<div class="'+t.css.stickyWrap+'">'),m=v.parent().addClass(t.css.stickyHide).css({position:f.length?"absolute":"fixed",padding:parseInt(v.parent().parent().css("padding-left"),10),top:b+u,left:0,visibility:"hidden",zIndex:a.stickyHeaders_zIndex||2}),z=v.children("thead:first"),C="",w=0,T=function(e,t){var i,r,a,d,c,l=e.filter(":visible"),n=l.length;for(i=0;i<n;i++)d=t.filter(":visible").eq(i),"border-box"===(c=l.eq(i)).css("box-sizing")?r=c.outerWidth():"collapse"===d.css("border-collapse")?s.getComputedStyle?r=parseFloat(s.getComputedStyle(c[0],null).width):(a=parseFloat(c.css("border-width")),r=c.outerWidth()-parseFloat(c.css("padding-left"))-parseFloat(c.css("padding-right"))-a):r=c.width(),d.css({width:r,"min-width":r,"max-width":r})},S=function(){b=H.length?H.height()||0:parseInt(a.stickyHeaders_offset,10)||0,w=0,m.css({left:f.length?parseInt(f.css("padding-left"),10)||0:o.offset().left-parseInt(o.css("margin-left"),10)-y.scrollLeft()-w,width:o.outerWidth()}),T(o,v),T(k,n)},x=function(s){if(o.is(":visible")){u=_.length?_.offset().top-p.scrollTop()+_.height():0;var i=o.offset(),r=e.isWindow(p[0]),d=e.isWindow(y[0]),c=f.length?r?p.scrollTop():p.offset().top:p.scrollTop(),l=a.stickyHeaders_includeCaption?0:o.children("caption").height()||0,n=c+b+u-l,h=o.height()-(m.height()+(g.height()||0))-l,k=n>i.top&&n<i.top+h?"visible":"hidden",H={visibility:k};f.length&&(H.top=r?n-f.offset().top:f.scrollTop()),d&&(H.left=o.offset().left-parseInt(o.css("margin-left"),10)-y.scrollLeft()-w),_.length&&(H.top=(H.top||0)+b+u),m.removeClass(t.css.stickyVis+" "+t.css.stickyHide).addClass("visible"===k?t.css.stickyVis:t.css.stickyHide).css(H),(k!==C||s)&&(S(),C=k)}};if(f.length&&!f.css("position")&&f.css("position","relative"),v.attr("id")&&(v[0].id+=a.stickyHeaders_cloneId),v.find("thead:gt(0), tr.sticky-false").hide(),v.find("tbody, tfoot").remove(),v.find("caption").toggle(a.stickyHeaders_includeCaption),n=z.children().children(),v.css({height:0,width:0,margin:0}),n.find("."+t.css.resizer).remove(),o.addClass("hasStickyHeaders").bind("pagerComplete"+h,f