Files
webgui/plugins/dynamix/javascript/context.js
bergware fd2af4ef46 Compressed javascript sources
I've kept the original sources outside github
2018-03-07 15:28:29 +01:00

2 lines
3.0 KiB
JavaScript

/* Context.js. Copyright Jacob Kelley */
var context=context||function(){var e={fadeSpeed:100,filter:function(e){},above:"auto",preventDoubleContext:!0,compress:!1};function n(e){e=e.replace(/(:|\.|\[|\]|,)/g,"\\$1"),$(document).off("contextmenu",e).off("click",".context-event"),$("#dropdown-"+e.replace("#","")).remove()}return{init:function(n){e=$.extend({},e,n),$(document).on("click","html",function(){$(".dropdown-context").fadeOut(e.fadeSpeed,function(){$(".dropdown-context").css({display:""}).find(".drop-left").removeClass("drop-left")})}),e.preventDoubleContext&&$(document).on("contextmenu",".dropdown-context",function(e){e.preventDefault()}),$(document).on("mouseenter",".dropdown-submenu",function(){var e=$(this).find(".dropdown-context-sub:first");e.width()+e.offset().left>window.innerWidth&&e.addClass("drop-left")})},settings:function(n){e=$.extend({},e,n)},attach:function(o,t){n(o);var d=o.replace("#",""),a=function n(o,t,d){for(var a=d?" dropdown-context-sub":"",i=e.compress?" compressed-context":"",r=$('<ul class="dropdown-menu dropdown-context'+a+i+'" id="dropdown-'+t+'"></ul>'),c=0,s="",f=!1;c<o.length;c++)if(void 0!==o[c].icon&&""!==o[c].icon){r.addClass("fa-ul"),f=!0;break}for(c=0;c<o.length;c++){var p="";if(void 0!==o[c].divider)r.append('<li class="divider"></li>');else if(void 0!==o[c].header)void 0!==o[c].image&&""!==o[c].image?r.append('<li class="nav-header"><img src="'+o[c].image+'"/> '+o[c].header+"</li>"):r.append('<li class="nav-header">'+o[c].header+"</li>");else{if(void 0===o[c].href&&(o[c].href="#"),void 0!==o[c].target&&(s=' target="'+o[c].target+'"'),f&&(e.compress?largeIcon="":largeIcon=" fa-lg ",p=void 0!==o[c].icon&&""!==o[c].icon?' <i class="fa fa-fw '+o[c].icon+largeIcon+'"></i>':' <i class="fa fa-fw"></i>'),void 0!==o[c].subMenu?$sub='<li><a tabindex="-1" href="'+o[c].href+'">'+p+"&nbsp;&nbsp;"+o[c].text+"</a></li>":$sub=$('<li><a tabindex="-1" href="'+o[c].href+'"'+s+">"+p+"&nbsp;&nbsp;"+o[c].text+"</a></li>"),void 0!==o[c].action){var l="event-"+(new Date).getTime()*Math.floor(1e5*Math.random()),u=o[c].action;$sub.find("a").attr("id",l),$("#"+l).addClass("context-event"),$(document).on("click","#"+l,u)}if(r.append($sub),void 0!==o[c].subMenu){var v=n(o[c].subMenu,t,!0);r.find("li:last").append(v)}}"function"==typeof e.filter&&e.filter(r.find("li:last"))}return r}(t,d);$("body").append(a),$(document).on("click",o.replace(/(:|\.|\[|\]|,)/g,"\\$1"),function(n){n.preventDefault(),n.stopPropagation(),$(".dropdown-context:not(.dropdown-context-sub)").hide(),$dd=$("#dropdown-"+d.replace(/(:|\.|\[|\]|,)/g,"\\$1"));var o=!1;"boolean"==typeof e.above?o=e.above:"string"==typeof e.above&&"auto"==e.above&&(o=n.pageY+$dd.height()+32>$(window).height()+$(document).scrollTop()),o?$dd.addClass("dropdown-context-up").css({top:n.pageY-24-$dd.height(),left:Math.min(Math.max(n.pageX-13,0),window.innerWidth-168)}).fadeIn(e.fadeSpeed):$dd.removeClass("dropdown-context-up").css({top:n.pageY+24,left:Math.min(Math.max(n.pageX-13,0),window.innerWidth-168)}).fadeIn(e.fadeSpeed)})},destroy:n}}();