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:f
|