jquery.floatthead-min.js 13 KB

123456789101112131415161718192021222324252627
  1. (function(b){function ba(x){x=x[0];var e=x.offsetParent;if(!e){e=x.parentElement;do{if("static"!=window.getComputedStyle(e).getPropertyValue("position"))break;if(e.offsetParent){e=e.offsetParent;break}}while(e=e.parentElement)}return e==document.body?b([]):b(e)}function q(b){window&&window.console&&window.console.error&&window.console.error("jQuery.floatThead: "+b)}function p(b,e,g){var a=g?"outerWidth":"width";if(n&&b.css("max-width")){a=0;g&&(a+=parseInt(b.css("borderLeft"),10),a+=parseInt(b.css("borderRight"),
  2. 10));for(b=0;b<e.length;b++)a+=e.get(b).offsetWidth;return a}return b[a]()}b.floatThead=b.floatThead||{};b.floatThead.defaults={headerCellSelector:"tr:visible:first>*:visible",zIndex:1001,position:"auto",top:0,bottom:0,scrollContainer:function(){return b([])},responsiveContainer:function(){return b([])},getSizingRow:function(b){return b.find("tbody tr:visible:first>*:visible")},floatTableClass:"floatThead-table",floatWrapperClass:"floatThead-wrapper",floatContainerClass:"floatThead-container",copyTableClass:!0,
  3. enableAria:!1,autoReflow:!1,debug:!1};for(var k=window._,K="undefined"!==typeof MutationObserver,e,a=3,h=document.createElement("b"),y=h.all||[];a=1+a,h.innerHTML="\x3c!--[if gt IE "+a+"]><i><![endif]--\x3e",y[0];);e=4<a?a:document.documentMode;var a=/Gecko\//.test(navigator.userAgent),ca=/WebKit\//.test(navigator.userAgent);!e&&(!a&&!ca)&&(e=11);var n=function(){if(ca){var e=b('<div style="width:0px"><table style="max-width:100%"><tr><th><div style="min-width:100px;">X</div></th></tr></table></div>');
  4. b("body").append(e);var a=0==e.find("table").width();e.remove();return a}return!1},T=!a&&!e,g=b(window);if(!window.matchMedia){var v=window.onbeforeprint,E=window.onafterprint;window.onbeforeprint=function(){v&&v();g.triggerHandler("beforeprint")};window.onafterprint=function(){E&&E();g.triggerHandler("afterprint")}}b.fn.floatThead=function(a){a=a||{};if(!k&&(k=window._||b.floatThead._,!k))throw Error("jquery.floatThead-slim.js requires underscore. You should use the non-lite version since you do not have underscore.");
  5. if(8>e)return this;var h=null;k.isFunction(n)&&(n=n());if(k.isString(a)){var y=a,v=this;this.filter("table").each(function(){var a=b(this),d=a.data("floatThead-lazy");d&&a.floatThead(d);if((a=a.data("floatThead-attached"))&&k.isFunction(a[y]))a=a[y](),"undefined"!==typeof a&&(v=a)});return v}var d=b.extend({},b.floatThead.defaults||{},a);b.each(a,function(a){!(a in b.floatThead.defaults)&&d.debug&&q("Used ["+a+"] key to init plugin, but that param is not an option for the plugin. Valid options are: "+
  6. k.keys(b.floatThead.defaults).join(", "))});d.debug&&(a=b.fn.jquery.split("."),1==parseInt(a[0],10)&&7>=parseInt(a[1],10)&&q("jQuery version "+b.fn.jquery+" detected! This plugin supports 1.8 or better, or 1.7.x with jQuery UI 1.8.24 -> http://jqueryui.com/resources/download/jquery-ui-1.8.24.zip"));this.filter(":not(."+d.floatTableClass+")").each(function(){function a(c){return c+".fth-"+na+".floatTHead"}function y(){var w=0;F.children("tr:visible").each(function(){w+=b(this).outerHeight(!0)});if("collapse"==
  7. c.css("border-collapse")){var a=parseInt(c.css("border-top-width"),10),d=parseInt(c.find("thead tr:first").find(">*:first").css("border-top-width"),10);a>d&&(w-=a/2)}U.outerHeight(w);oa.outerHeight(w)}function n(){G=(k.isFunction(d.top)?d.top(c):d.top)||0;pa=(k.isFunction(d.bottom)?d.bottom(c):d.bottom)||0}function v(){if(!M){M=!0;if(m){var w=p(c,H,!0),a=V.width();w>a&&c.css("minWidth",w)}c.css(qa);r.css(qa);r.append(F);ra.before(N);y()}}function x(){M&&(M=!1,m&&c.width(Ca),N.detach(),c.prepend(F),
  8. c.css(O),r.css(O),c.css("minWidth",sa),c.css("minWidth",p(c,H)))}function B(w){ta!=w&&(ta=w,c.triggerHandler("floatThead",[w,l]))}function E(c){m!=c&&(m=c,l.css({position:m?"absolute":"fixed"}))}function da(){var a,f,z,W=F.find(d.headerCellSelector);X?z=t.find("col").length:(z=0,W.each(function(){z+=parseInt(b(this).attr("colspan")||1,10)}));if(z!=ua){ua=z;for(var g=[],j=[],m=[],k,h=0;h<z;h++)d.enableAria&&(k=W.eq(h).text())?g.push('<th scope="col" class="floatThead-col">'+k+"</th>"):g.push('<th class="floatThead-col"/>'),
  9. j.push("<col/>"),m.push("<fthtd style='display:table-cell;height:0;width:auto;'/>");j=j.join("");g=g.join("");T&&(m=m.join(""),ea.html(m),H=ea.find("fthtd"));U.html(g);oa=U.find("th");X||t.html(j);P=t.find("col");fa.html(j);va=fa.find("col")}f=z;return function(){P=t.find("col");var b;b=P;b=T?H:e?d.getSizingRow(c,b,H):b;if(b.length==f&&0<f){if(!X)for(a=0;a<f;a++)P.eq(a).css("width","");x();var z=[];for(a=0;a<f;a++){var g=z,W=a,j=b.get(a).getBoundingClientRect();g[W]=j.width||j.right-j.left}for(a=
  10. 0;a<f;a++)va.eq(a).width(z[a]),P.eq(a).width(z[a]);v()}else r.append(F),c.css(O),r.css(O),y();c.triggerHandler("reflowed",[l])}}function wa(a){a=j.css("border-"+a+"-width");var c=0;a&&~a.indexOf("px")&&(c=parseInt(a,10));return c}function ga(){return"auto"==C.css("overflow-x")}function ha(){var a=j.scrollTop(),b,d=0,e=Y?Z.outerHeight(!0):0,f=$?e:-e,k=l.height(),h=c.offset(),y=0,r=0;if(A){var p=j.offset(),d=h.top-p.top+a;Y&&$&&(d+=e);y=wa("left");r=wa("top");d-=r}else b=h.top-G-k+pa+Q.horizontal;var n=
  11. g.scrollTop(),q=g.scrollLeft(),s=(ga()?C:j).scrollLeft();return function(l){R=ga();var p=0>=c[0].offsetWidth&&0>=c[0].offsetHeight;if(!p&&aa)return aa=!1,setTimeout(function(){c.triggerHandler("reflow")},1),null;if(p&&(aa=!0,!m))return null;if("windowScroll"==l)n=g.scrollTop(),q=g.scrollLeft();else if("containerScroll"==l)if(C.length){if(!R)return;s=C.scrollLeft()}else a=j.scrollTop(),s=j.scrollLeft();else"init"!=l&&(n=g.scrollTop(),q=g.scrollLeft(),a=j.scrollTop(),s=(R?C:j).scrollLeft());if(!ca||
  12. !(0>n||0>q)){if(xa)"windowScrollDone"==l?E(!0):E(!1);else if("windowScrollDone"==l)return null;h=c.offset();Y&&$&&(h.top+=e);var u,t;l=c.outerHeight();A&&m?(d>=a?(u=d-a+r,u=0<u?u:0,B(!1)):(u=ia?r:a,B(!0)),t=y):!A&&m?(n>b+l+f?u=l-k+f:h.top>=n+G?(u=0,x(),B(!1)):(u=G+n-h.top+d+($?e:0),v(),B(!0)),t=s):A&&!m?(d>a||a-d>l?(u=h.top-n,x(),B(!1)):(u=h.top+a-n-d,v(),B(!0)),t=h.left+s-q):!A&&!m&&(n>b+l+f?u=l+G-n+b+f:h.top>n+G?(u=h.top-n,v(),B(!1)):(u=G,B(!0)),t=h.left+s-q);return{top:u,left:t}}}}function ya(){var a=
  13. null,b=null,d=null;return function(e,f,g){if(null!=e&&(a!=e.top||b!=e.left))l.css({top:e.top,left:e.left}),a=e.top,b=e.left;if(f){e=p(c,H,!0);f=R?C:j;var h=f.width()||e;f="hidden"!=f.css("overflow-y")?h-Q.vertical:h;l.width(f);A?r.css("width",100*e/f+"%"):r.outerWidth(e)}g&&y();g=(R?C:j).scrollLeft();if(!m||d!=g)l.scrollLeft(g),d=g}}function ja(){if(j.length)if(j.data().perfectScrollbar)Q={horizontal:0,vertical:0};else{var a=j.width(),b=j.height(),d=c.height(),e=p(c,H),f=a<e?S:0;Q.horizontal=a-(b<
  14. d?S:0)<e?S:0;Q.vertical=b-f<d?S:0}}var na=k.uniqueId(),c=b(this);if(c.data("floatThead-attached"))return!0;if(!c.is("table"))throw Error('jQuery.floatThead must be run on a table element. ex: $("table").floatThead();');K=d.autoReflow&&K;var F=c.children("thead:first"),ra=c.children("tbody:first");if(0==F.length||0==ra.length)c.data("floatThead-lazy",d),c.unbind("reflow").one("reflow",function(){c.floatThead(d)});else{c.data("floatThead-lazy")&&c.unbind("reflow");c.data("floatThead-lazy",!1);var M=
  15. !0,G,pa,Q={vertical:0,horizontal:0},S,f=b('<div style="width:50px;height:50px;overflow-y:scroll;position:absolute;top:-200px;left:-200px;"><div style="height:100px;width:100%"></div>');b("body").append(f);var I=f.innerWidth(),Da=b("div",f).innerWidth();f.remove();S=I-Da;var ua=0;!0===d.scrollContainer&&(d.scrollContainer=ba);var j=d.scrollContainer(c)||b([]),A=0<j.length,C=A?b([]):d.responsiveContainer(c)||b([]),R=ga(),m=null;"undefined"!==typeof d.useAbsolutePositioning&&(d.position="auto",d.useAbsolutePositioning&&
  16. (d.position=d.useAbsolutePositioning?"absolute":"fixed"),q("option 'useAbsolutePositioning' has been removed in v1.3.0, use `position:'"+d.position+"'` instead. See docs for more info: http://mkoryak.github.io/floatThead/#options"));"undefined"!==typeof d.scrollingTop&&(d.top=d.scrollingTop,q("option 'scrollingTop' has been renamed to 'top' in v1.3.0. See docs for more info: http://mkoryak.github.io/floatThead/#options"));"undefined"!==typeof d.scrollingBottom&&(d.bottom=d.scrollingBottom,q("option 'scrollingBottom' has been renamed to 'bottom' in v1.3.0. See docs for more info: http://mkoryak.github.io/floatThead/#options"));
  17. "auto"==d.position?m=null:"fixed"==d.position?m=!1:"absolute"==d.position?m=!0:d.debug&&q('Invalid value given to "position" option, valid is "fixed", "absolute" and "auto". You passed: ',d.position);null==m&&(m=A);var Z=c.find("caption"),Y=1==Z.length;if(Y)var $="top"===(Z.css("caption-side")||Z.attr("align")||"top");var ka=b('<fthfoot style="display:table-footer-group;border-spacing:0;height:0;border-collapse:collapse;visibility:hidden"/>'),ia=!1,V=b([]),xa=9>=e&&!A&&m,r=b("<table/>"),fa=b("<colgroup/>"),
  18. t=c.children("colgroup:first"),X=!0;0==t.length&&(t=b("<colgroup/>"),X=!1);var ea=b('<fthtr style="display:table-row;border-spacing:0;height:0;border-collapse:collapse"/>'),l=b('<div style="overflow: hidden;" aria-hidden="true"></div>'),aa=!1,N=b("<thead/>"),U=b('<tr class="size-row"/>'),oa=b([]),P=b([]),va=b([]),H=b([]);N.append(U);c.prepend(t);T&&(ka.append(ea),c.append(ka));r.append(fa);l.append(r);d.copyTableClass&&r.attr("class",c.attr("class"));r.attr({cellpadding:c.attr("cellpadding"),cellspacing:c.attr("cellspacing"),
  19. border:c.attr("border")});f=c.css("display");r.css({borderCollapse:c.css("borderCollapse"),border:c.css("border"),display:f});"none"==f&&(aa=!0);r.addClass(d.floatTableClass).css({margin:0,"border-bottom-width":0});m?(f=function(a,c){var b=a.css("position"),e=a;if(!("relative"==b||"absolute"==b)||c)b={paddingLeft:a.css("paddingLeft"),paddingRight:a.css("paddingRight")},l.css(b),e=a.data("floatThead-containerWrap")||a.wrap("<div class='"+d.floatWrapperClass+"' style='position: relative; clear:both;'></div>").parent(),
  20. a.data("floatThead-containerWrap",e),ia=!0;return e},A?(V=f(j,!0),V.prepend(l)):(V=f(c),c.before(l))):c.before(l);l.css({position:m?"absolute":"fixed",marginTop:0,top:m?0:"auto",zIndex:d.zIndex});l.addClass(d.floatContainerClass);n();var qa={"table-layout":"fixed"},O={"table-layout":c.css("tableLayout")||"auto"},Ca=c[0].style.width||"",sa=c.css("minWidth")||"",ta=!1;ja();var L;L=da();L();var D=ha(),J=ya();J(D("init"),!0);var Ea=k.debounce(function(){J(D("windowScrollDone"),!1)},1),f=function(){J(D("windowScroll"),
  21. !1);xa&&Ea()},I=function(){J(D("containerScroll"),!1)},s=k.debounce(function(){c.is(":hidden")||(ja(),n(),L=da(),L(),D=ha(),J(D("reflow"),!0))},1),la=function(){c.floatThead("destroy",[!0])},ma=function(){c.floatThead(d)},za=function(a){a.matches?la():ma()};window.matchMedia?window.matchMedia("print").addListener(za):(g.bind("beforeprint",la),g.bind("afterprint",ma));A?m?j.bind(a("scroll"),I):(j.bind(a("scroll"),I),g.bind(a("scroll"),f)):(C.bind(a("scroll"),I),g.bind(a("scroll"),f));g.bind(a("load"),
  22. s);var f=a("resize"),Aa=function(){c.is(":hidden")||(n(),ja(),L=da(),L(),D=ha(),J=ya(),J(D("resize"),!0,!0))};if(8==e){var Ba=g.width(),I=k.debounce(function(){var a=g.width();Ba!=a&&(Ba=a,Aa())},1);g.bind(f,I)}else g.bind(f,k.debounce(Aa,1));c.bind("reflow",s);a:{if(c.dataTableSettings)for(f=0;f<c.dataTableSettings.length;f++)if(c[0]==c.dataTableSettings[f].nTable){f=!0;break a}f=!1}f&&c.bind("filter",s).bind("sort",s).bind("page",s);g.bind(a("shown.bs.tab"),s);g.bind(a("tabsactivate"),s);K&&(f=
  23. null,k.isFunction(d.autoReflow)&&(f=d.autoReflow(c,j)),f||(f=j.length?j[0]:c[0]),h=new MutationObserver(function(a){for(var c=function(a){return a&&a[0]&&("THEAD"==a[0].nodeName||"TD"==a[0].nodeName||"TH"==a[0].nodeName)},b=0;b<a.length;b++)if(!c(a[b].addedNodes)&&!c(a[b].removedNodes)){s();break}}),h.observe(f,{childList:!0,subtree:!0}));c.data("floatThead-attached",{destroy:function(a,b){var e=".fth-"+na;x();c.css(O);t.remove();T&&ka.remove();N.parent().length&&N.replaceWith(F);B(!1);K&&(h.disconnect(),
  24. h=null);c.unbind("reflow reflowed");j.unbind(e);C.unbind(e);ia&&(j.length?j.unwrap():c.unwrap());A?j.data("floatThead-containerWrap",!1):c.data("floatThead-containerWrap",!1);c.css("minWidth",sa);l.remove();c.data("floatThead-attached",!1);g.unbind(e);b||(window.matchMedia&&window.matchMedia("print").removeListener(za),la=ma=function(){})},reflow:function(){s()},setHeaderHeight:function(){y()},getFloatContainer:function(){return l},getRowGroups:function(){return M?l.find(">table>thead").add(c.children("tbody,tfoot")):
  25. c.children("thead,tbody,tfoot")}})}});return this}})(jQuery);
  26. (function(b){b.floatThead=b.floatThead||{};var ba=b.floatThead,q;if(!(q=window._)){var p={},k=Object.prototype.hasOwnProperty;p.has=function(b,a){return k.call(b,a)};p.keys=function(b){if(b!==Object(b))throw new TypeError("Invalid object");var a=[],h;for(h in b)p.has(b,h)&&a.push(h);return a};var K=0;p.uniqueId=function(b){var a=++K+"";return b?b+a:a};b.each("Arguments Function String Number Date RegExp".split(" "),function(){var b=this;p["is"+b]=function(a){return Object.prototype.toString.call(a)==
  27. "[object "+b+"]"}});p.debounce=function(b,a,h){var k,p,n,q,g;return function(){n=this;p=arguments;q=new Date;var v=function(){var x=new Date-q;x<a?k=setTimeout(v,a-x):(k=null,h||(g=b.apply(n,p)))},E=h&&!k;k||(k=setTimeout(v,a));E&&(g=b.apply(n,p));return g}};q=p}ba._=q})(jQuery);