Files
MYSOPHAL/lib/jqueryplugins/jquery-ui-scrollable-tabs/js/jquery.scrollabletab.min.js
2025-08-07 13:15:31 +01:00

1 line
8.1 KiB
JavaScript

(function(t){var s={animateTabs:false,showNavWhenNeeded:true,customNavNext:null,customNavPrev:null,customNavFirst:null,customNavLast:null,closable:false,easing:"",easing:"swing",loadLastTab:false,navFirstIconClass:"ui-icon-arrowthickstop-1-w",navLastIconClass:"ui-icon-arrowthickstop-1-e",navNextIconClass:"ui-icon-arrowthick-1-e",navPrevIconClass:"ui-icon-arrowthick-1-w",navListOfTabsIconClass:"ui-icon-carat-1-s",onTabScroll:function(){},resizable:false,resizeHandles:"e,s,se",responsiveLayout:true,responsiveLayoutInterval:125,scrollSpeed:500,selectTabOnAdd:true,selectTabAfterScroll:true,showFirstLastArrows:false,hideDefaultArrows:false,nextPrevOutward:true,showListOfTabs:true,tabsSeparation:0,wrapperCssClass:""};t.fn.scrollabletabs=function(i){return this.each((function(){var e=t.extend({},s,typeof i=="object"?i:{}),a=t(this).addClass(e.wrapperCssClass+" stMainWrapper"),n=a.find("ul.ui-tabs-nav:first"),r=n.find("li"),l=t('<ol class="stNavMain" />'),o=n.find(".ui-tabs-selected,.ui-tabs-active").first().addClass("stCurrentTab"),f=undefined;if(!e.hideDefaultArrows){var c=t('<li class="stNavPrevArrow ui-state-default" title="Previous"><span class="ui-icon '+e.navPrevIconClass+'">Previous tab</span></li>'),u=t('<li class="stNavNextArrow ui-state-default" title="Next"><span class="ui-icon '+e.navNextIconClass+'">Next tab</span></li>'),d=e.showFirstLastArrows?t('<li class="stNavFirstArrow ui-state-default" title="First"><span class="ui-icon '+e.navFirstIconClass+'">First tab</span></li>'):t(),v=e.showFirstLastArrows?t('<li class="stNavLastArrow ui-state-default" title="Last"><span class="ui-icon '+e.navLastIconClass+'">Last tab</span></li>'):t();$navListOfTabs=e.showListOfTabs?t('<li class="stNavListOfTabs ui-state-default" title="List"><span class="ui-icon '+e.navListOfTabsIconClass+'">List tabs</span></li>'):t();l.append(c,d,v,u,$navListOfTabs);var h=l.find("li").hover((function(){t(this).toggleClass("ui-state-hover")}))}function b(){n.height(r.first().outerHeight());n.after(l.css("visibility",e.showNavWhenNeeded?"hidden":"visible"));if(h){var s=l.find("li:first").outerWidth();h.css({top:"-"+n.innerHeight()+"px",height:n.innerHeight()});if(e.nextPrevOutward){c.addClass("ui-corner-left");u.addClass("ui-corner-right");d.css("margin-left",s);v.css("margin-right",s);e.showFirstLastArrows?$navListOfTabs.css("margin-right",s*2):$navListOfTabs.css("margin-right",s)}else{d.addClass("ui-corner-left");$navListOfTabs.addClass("ui-corner-right");e.showFirstLastArrows?c.css("margin-left",s):c.addClass("ui-corner-left");e.showFirstLastArrows?u.css("margin-right",s):t();if(e.showListOfTabs){u.css("margin-right",s);if(e.showFirstLastArrows){u.css("margin-right",s*2);v.css("margin-right",s)}}else{e.showFirstLastArrows?v.addClass("ui-corner-right"):u.addClass("ui-corner-right")}}}W();p();y();x();g();a.bind("tabsshow tabsactivate",(function(s,i){F(i.tab?t(i.tab).parents("li"):i.newTab);if(m("n")){C("n",null,null,s)}else if(m("p")){C("p",null,null,s)}})).bind("tabsadd",(function(s,i){var a=t(i.tab).parents("li");r=n.find("li");W(a);p();y();if(e.selectTabOnAdd){t(this).tabs("option","active",r.index(a))}})).bind("tabsremove",(function(t,s){r=n.find("li");if(a.tabs("length")==1){n.find(".ui-icon-circle-close").addClass("stFirstTab").hide()}else{n.find(".ui-icon-circle-close").show();F(r.first())}p();y()}));if(e.responsiveLayout){t(window).bind("resize",(function(t){if(f){window.clearTimeout(f)}f=window.setTimeout((function(){p();y();if(m("n",o)){C("n",o,null,t)}else if(m("p",o)){C("p",o,null,t)}}),e.responsiveLayoutInterval)}))}}function p(){if(!e.showNavWhenNeeded){return}if(I()>n.width()){l.css("visibility","visible").show()}else{l.css("visibility","hidden").hide()}}function g(){$listOfTabs=t();if(e.showListOfTabs){$listOfTabs=t('<ul class="ui-tabs-nav listTab ui-widget-header ui-corner-all"></ul>');$listOfTabs.appendTo(a);a.find(".ui-tabs-nav li").clone().removeClass("ui-state-active").find("a").click((function(s){s.preventDefault();a.tabs("option","active",t(this).parent().index());$listOfTabs.toggle()})).end().appendTo($listOfTabs)}}function w(s,i,e){if(t.isFunction(s)){s(i,e)}}function m(t,s){s=s||o;if(t=="n"){var i=s[0].offsetLeft+s.outerWidth(),e=n.outerWidth()-$();return i>e}else{var a=s[0].offsetLeft-$();return a<0}}function T(t){return"-"+(I(t)-n.width()+$())+"px"}function L(t){var s=t[0].offsetLeft-$();return parseFloat(t.css("margin-left"))-s+"px"}function C(t,s,i,n){s=s||o;var l=0;if(t=="n"){l=T(s)}else if(t=="p"){l=L(s)}else if(t=="f"){l=0;i=0}else if(t=="l"){l=T(s)}if(e.animateTabs){r.stop(true,true).animate({"margin-left":l},e.scrollSpeed,e.easing)}else{r.css("margin-left",l)}if(e.selectTabAfterScroll&&i!==null){a.tabs("option","active",i)}else{if(i>-1&&e.selectTabAfterScroll){F(s)}}n=typeof n=="undefined"?null:n;w(e.onTabScroll,n,s);if(n){n.preventDefault()}}function O(s,i){var a=e["customNav"+i]||"";if(typeof a=="string"&&t.trim(a)!=""){s=s.add(a)}return s}function x(){u=u?u:t();u=O(u,"Next");u.click((function(t){N(t)}));c=c?c:t();c=O(c,"Prev");c.click((function(t){A(t)}));d=d?d:t();d=O(d,"First");d.click((function(t){if(r.index(o)==0){return false}C("f",r.first(),0,t);return false}));v=v?v:t();v=O(v,"Last");v.click((function(t){var s=o.next("li");if(!s.length){return false}var i=a.tabs("length")-1;C("l",r.last(),i,t);return false}));$navListOfTabs=$navListOfTabs?$navListOfTabs:t();$navListOfTabs=O($navListOfTabs,"List");$navListOfTabs.click((function(t){$listOfTabs.toggle()}));if(typeof n.mousewheel!=="undefined"&&n.mousewheel((function(t){t.preventDefault();margin=parseFloat(r.css("margin-left"));if(t.deltaY>0&&margin<0){margin+=30;r.css("margin-left",margin+"px")}if(t.deltaY<0&&n.width()-margin<I()){margin-=30;r.css("margin-left",margin+"px")}})));var s;var i;var e;n.bind("touchstart",(function(t){var i=t.originalEvent.touches[0].clientX;s=i;t.preventDefault()}));n.bind("touchmove",(function(t){var i=t.originalEvent.touches[0].clientX;e=i-s;margin=parseFloat(r.css("margin-left"))+e;if(margin<0&&n.width()-margin<I()){r.css("margin-left",margin+"px")}s=i;t.preventDefault()}))}function N(s){var i=t();if(!e.selectTabAfterScroll){r.each((function(){if(m("n",t(this))){i=t(this);return false}}))}else{i=o.next("li")}if(!i.length){return false}var n=m("n",i);indexNextTab=r.index(i);if(n){C("n",i,indexNextTab,s)}else{a.tabs("option","active",indexNextTab)}}function A(s){var i=t();if(!e.selectTabAfterScroll){t(r.get().reverse()).each((function(){if(m("p",t(this))){i=t(this);return false}}))}else{i=o.prev("li")}if(!i.length){return false}var n=m("p",i);var l=r.index(i);if(n){C("p",i,l,s)}else{a.tabs("option","active",l)}return false}function F(t){n.find(".stCurrentTab").removeClass("stCurrentTab");o=t.addClass("stCurrentTab")}function W(s){if(!e.closable)return;var i=s||r;i.each((function(){var s=t(this).addClass("stHasCloseBtn");t(this).append(t("<span/>").addClass("ui-state-default ui-corner-all stCloseBtn").hover((function(){t(this).toggleClass("ui-state-hover")})).append(t("<span/>").addClass("ui-icon ui-icon-circle-close").html("Close").attr("title","Close this tab").click((function(t){a.tabs("remove",s.prevAll("li").length)})))).width(s.outerWidth())}))}function $(t){if(l.css("visibility")=="hidden"){return 0}var s=e.hideDefaultArrows?0:c.outerWidth()*(e.showFirstLastArrows?2:1);return t?s/2:s}function y(s){if(s){if(r.lenght==1)return;var i=s.prev("li")||r.first(),a=parseFloat(i.css("left"));a=isNaN(a)?0:a;a=a+i.outerWidth(true)+e.tabsSeparation;s.css({left:a,"margin-left":i.css("margin-left")});return}var l=$(),o=l==0?3:l+2;r.first().addClass("stFirstTab").css({left:o,"margin-left":0});var f=o;var c=parseFloat(r.last().prev("li").css("margin-left"));if(I()<=n.width()){c=0}r.stop(true,true).css("margin-left",0);prevOuterWidth=r.first().outerWidth();n.find("li:not(:first)").each((function(){currentWidth=t(this).outerWidth(true);t(this).stop(true,true)[e.animateTabs?"animate":"css"]({left:f+=prevOuterWidth+e.tabsSeparation});prevOuterWidth=currentWidth}));r.css("margin-left",c)}function I(s){var i=0,e,a=s?s.prevAll("li").andSelf():r;a.each((function(){e=parseInt(t(this).css("margin-right"),10);i+=t(this).outerWidth()+e}));i-=e+2*parseInt(a.first().css("border-left-width"),10);var n=l.css("visibility")=="visible"?$():0;return i+n}b()}))}})(jQuery);