mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2025-10-26 07:46:31 +01:00
2 lines
7.1 KiB
JavaScript
2 lines
7.1 KiB
JavaScript
(function(e){"use strict";function u(){return!!("ontouchstart"in window)}function a(e,t,n,r,i,s){var o,u,a,f=0,l=0;if(s){o=e;u=0;a=0}else{o=e.offset();u=e.outerWidth();a=e.outerHeight()}switch(t){case"n":f=o.left+u/2-n/2;l=o.top-r-i;break;case"e":f=o.left+u+i;l=o.top+a/2-r/2;break;case"s":f=o.left+u/2-n/2;l=o.top+a+i;break;case"w":f=o.left-n-i;l=o.top+a/2-r/2;break;case"nw":case"wn":f=o.left-n+20;l=o.top-r-i;break;case"ne":case"en":f=o.left+u-20;l=o.top-r-i;break;case"sw":case"ws":f=o.left-n+20;l=o.top+a+i;break;case"se":case"es":f=o.left+u-20;l=o.top+a+i;break}return{left:Math.round(f),top:Math.round(l)}}function f(e,t){var r=n.scrollLeft(),i=n.scrollTop(),s=e.offset(),o=e.outerWidth(true),u=e.outerHeight(true),a=n.width(),f=n.height(),l=[],c,h;if(t){c=t.outerWidth(true);h=t.outerHeight(true)}else{c=100;h=50}if(s.top<i+h){l.push("n")}if(s.top+u+h>i+f){l.push("s")}if(s.left<r+c){l.push("w")}if(s.left+o+c>r+a){l.push("e")}return l}function l(){var e=document.body||document.documentElement;var n=e.style;var r="transition";if(typeof n[r]==="string"){return true}t=["Moz","Webkit","Khtml","O","ms"],r=r.charAt(0).toUpperCase()+r.substr(1);for(var i=0;i<t.length;i++){if(typeof n[t[i]+r]==="string"){return true}}return false}var t,n=e(window);var r=false;var i=[];var s="nswe";var o={n:{n:"s",w:"ne",e:"nw"},s:{s:"n",w:"se",e:"sw"},w:{w:"e",n:"sw",s:"nw"},e:{e:"w",n:"se",s:"ne"},nw:{n:"sw",w:"ne"},ne:{n:"se",e:"nw"},sw:{s:"nw",w:"se"},se:{s:"ne",e:"sw"}};var c=true;if(!l()){c=false}var h=e.asTooltip=function(t,n){var r={};this.$elem=e(t);e.each(this.$elem.data(),function(e,t){if(/^asTooltip/i.test(e)){r[e.toLowerCase().replace(/^asTooltip/i,"")]=t}});this.options=e.extend({},h.defaults,n,r);this.namespace=this.options.namespace;if(this.$elem.attr("title")){this.options.title=this.$elem.attr("title");this.$elem.removeAttr("title")}this.content=null;this.target=this.options.target||this.$elem;this.isOpen=null;this.enabled=true;this.tolerance=null;this.onlyOne=this.options.onlyOne||false;this.init()};h.prototype={constructor:h,init:function(){var t=this.options,n=this;t.tpl=this.parseTpl(t.tpl);this.$container=e(t.tpl.container);this.$loading=e(t.tpl.loading);this.$arrow=e(t.tpl.arrow);this.$close=e(t.tpl.close);this.$content=e(t.tpl.content);if(t.trigger==="hover"){this.target.on("mouseenter.asTooltip",function(){if(n.isOpen===true){clearTimeout(this.tolerance);return}else{e.proxy(n.show,n)()}});if(t.interactive===true){this.target.on("mouseleave.asTooltip",function(){var t=false;n.$container.on("mouseenter.asTooltip",function(){t=true});n.$container.on("mouseleave.asTooltip",function(){t=false});clearTimeout(this.tolerance);this.tolerance=setTimeout(function(){if(t===true){n.$container.on("mouseleave.asTooltip",e.proxy(n.hide,n))}else{e.proxy(n.hide,n)()}},n.options.interactiveDelay)})}else{this.target.on("mouseleave.asTooltip",e.proxy(n.hide,n))}if(this.options.mouseTrace===true){this.target.on("mousemove.asTooltip",function(e){var t,r={},i=e.pageX,s=e.pageY;r={top:s,left:i};t=a(r,n.options.position,n.width,n.height,n.options.popSpace,true);n.$container.css({display:"block",top:t.top,left:t.left})})}}if(t.trigger==="click"){this.target.on("click.asTooltip",function(){if(n.isOpen===true){e.proxy(n.hide,n)()}else{e.proxy(n.show,n)()}})}i.push(this)},load:function(){var t=this,n=this.options;if(n.ajax===true){e.ajax(e.extend({},n.ajaxSettings,{url:n.title,error:function(){throw new Error("ajax error")},success:function(e,n){if(n==="success"){t.content=e;t.$container.css({display:"none"});t.$content.empty().append(t.content);t.$container.removeClass(t.posCss);t.setPosition()}}}))}else if(n.inline===true){if(n.title.indexOf("+")!==-1){this.content=this.$elem.next().css({display:"block"})}else{this.content=e(n.title).css({display:"block"})}}else{this.content=n.title}},parseTpl:function(t){var n={},r=this;e.each(t,function(e,t){n[e]=t.replace("{{namespace}}",r.namespace)});return n},showLoading:function(){this.$content.empty();this.$loading.css({display:"block"})},hideLoading:function(){this.$loading.css({display:"none"})},setPosition:function(){var t=this.options,n,r=this.namespace+"-"+t.position;this.width=this.$container.outerWidth();this.height=this.$container.outerHeight();if(t.mouseTrace!==true){if(t.autoPosition===true){var i,u=[];if(t.ajax===true&&this.content===null){u=f(e(this.target))}else{u=f(e(this.target),this.$container)}if(u.length===0){i=t.position}else if(u.length===1){var l=o[t.position][u[0]];if(l===undefined){i=t.position}else{i=l}}else{var c=s;e.each(u,function(e,t){c.replace(t,"")});i=c}r=this.namespace+"-"+i;n=a(this.target,i,this.width,this.height,this.options.popSpace)}else{n=a(this.target,t.position,this.width,this.height,this.options.popSpace)}this.$container.css({display:"block",top:n.top,left:n.left})}else{this.$container.addClass("pointer-events-none")}this.posCss=r;this.$container.addClass(r)},show:function(){var t=this.options,n=this;if(this.enabled===false){return}if(this.onlyOne===true){e.each(i,function(e,t){if(t===n){return}else{if(t.isOpen===true){t.hide()}}})}if(t.closeBtn===true){this.$container.append(this.$close)}this.$container.append(this.$arrow).append(this.$content);this.$elem.addClass(this.namespace+"_active");this.content===null&&this.load();if(this.content===null){this.$content.append(this.$loading)}else{this.$content.empty().append(this.content)}if(t.skin){this.$container.addClass(this.namespace+"_"+t.skin)}this.$container.css({display:"none",top:0,left:0,position:"absolute",zIndex:99990}).appendTo(e("body"));this.setPosition();if(t.onShow==="function"){t.onShow(this.$elem)}this.$container.trigger("show");this.isOpen=true;return this},hide:function(){this.$container.off(".asTooltip");this.$container.trigger("hide");this.$elem.removeClass(this.namespace+"_active");this.$container.remove();this.$container.removeClass(this.posCss);if(this.options.onHide==="function"){this.options.onHide(this.$elem)}this.isOpen=false;r=false},setContent:function(e){this.content=e},enable:function(){this.enabled=true;this.container.addClass(this.namespace+"-enabled");return this},disable:function(){this.enabled=false;this.container.removeClass(this.namespace+"-enabled");return this},destroy:function(){this.target.off(".asTooltip")}};h.defaults={namespace:"asTooltip",skin:null,target:null,trigger:"hover",interactive:false,interactiveDelay:500,mouseTrace:false,closeBtn:false,popSpace:10,position:"n",autoPosition:true,delay:0,effect:"fade",duration:200,inline:false,content:null,ajax:false,ajaxSettings:{dataType:"html",headers:{asTooltip:true}},onShow:null,onHide:null,onUpdate:null,tpl:{container:'<div class="{{namespace}}-container"></div>',loading:'<span class="{{namespace}}-loading"></span>',content:'<div class="{{namespace}}-content"></div>',arrow:'<span class="{{namespace}}-arrow"></span>',close:'<a class="{{namespace}}-close"></a>'}};e.fn.asTooltip=function(t){if(typeof t==="string"){var n=t;var r=arguments.length>1?Array.prototype.slice.call(arguments,1):undefined;return this.each(function(){var t=e.data(this,"asTooltip");if(typeof t[n]==="function"){t[n].apply(t,r)}})}else{return this.each(function(){if(!e.data(this,"asTooltip")){e.data(this,"asTooltip",new h(this,t))}})}}})(jQuery)
|