angular-tooltips.min.js 5.4 KB

1234567891011121314
  1. /*!
  2. * Angular Tooltips v0.1.25
  3. *
  4. * Released under the MIT license
  5. * www.opensource.org/licenses/MIT
  6. *
  7. * Brought to you by 720kb.net
  8. *
  9. * 2015-10-18
  10. */
  11. !function(a){"use strict";a.module("720kb.tooltips",[]).provider("tooltipsConfig",function(){var b={scroll:!1,showTrigger:"mouseover",hideTrigger:"mouseleave",hideTarget:"element",side:"top",size:"medium","try":!0,"class":"",speed:"medium",delay:0,lazy:!0,closeButton:null};this.options=function(){return 1===arguments.length&&a.extend(b,arguments[0]),a.copy(b)},this.$get=function(){return b}}).directive("tooltips",["$window","$compile","$interpolate","$interval","$sce","tooltipsConfig",function(b,c,d,e,f,g){var h=8,i=9,j=10,k=20,l="_720kb-tooltip-",m=d.startSymbol(),n=d.endSymbol();return{restrict:"A",scope:{tooltipViewModel:"="},link:function(d,o,p){function q(){U&&D||(D=!0,d.initTooltip(O)),Q&&d.tooltipTryPosition(),d.showTooltip()}function r(){d.hideTooltip()}function s(){d.hideTooltip(),d.initTooltip(N)}var t,u,v,w,x,y,z,A,B,C,D=!1,E=a.element(o[0]),F=a.element(b.document.getElementsByTagName("body")[0]),G=p.tooltipTitle||p.title||"",H=p.tooltipScroll||g.scroll,I=p.tooltipContent||"",J=p.tooltipHtml||"",K=p.tooltipShowTrigger||g.showTrigger,L=p.tooltipHideTrigger||g.hideTrigger,M="undefined"!=typeof p.tooltipHideTarget&&null!==p.tooltipHideTarget?p.tooltipHideTarget:g.hideTarget,N=p.tooltipSide||g.side,O=N,P=p.tooltipSize||g.size,Q="undefined"!=typeof p.tooltipTry&&null!==p.tooltipTry?d.$eval(p.tooltipTry):g["try"],R=p.tooltipClass||g["class"],S=(p.tooltipSpeed||g.speed).toLowerCase(),T=p.tooltipDelay||g.delay,U="undefined"!=typeof p.tooltipLazy&&null!==p.tooltipLazy?d.$eval(p.tooltipLazy):g.lazy,V=p.tooltipCloseButton||g.closeButton,W="undefined"!=typeof V&&null!==V,X='<div class="_720kb-tooltip '+l+P+'">';"element"!==M&&"tooltip"!==M&&(M="element"),W&&(X=X+'<span class="'+l+'close-button" ng-click="hideTooltip()"> '+V+" </span>"),p.tooltipView&&(X=p.tooltipViewCtrl?X+'<div ng-controller="'+p.tooltipViewCtrl+'" ng-include="\''+p.tooltipView+"'\"></div>":X+"<div ng-include=\"'"+p.tooltipView+"'\"></div>"),X=X+'<div class="'+l+'title"> '+m+"title"+n+"</div>"+m+"content"+n+' <span class="'+l+'html_content" ng-bind-html="getHtml()"></span> <span class="'+l+'caret"></span></div>',d.title=G,d.content=I,d.html=J,d.getHtml=function(){return f.trustAsHtml(d.html)},d.parseSpeed=function(){switch(S){case"fast":S=100;break;case"medium":S=450;break;case"slow":S=800;break;default:S=Number(S)}},t=c(X)(d),t.addClass(R),F.append(t),d.isTooltipEmpty=function(){return d.title||d.content||d.html||p.tooltipView?void 0:!0},d.initTooltip=function(a){d.isTooltipEmpty()?t.css("visibility","hidden"):(t.css("visibility","visible"),x=E[0].offsetHeight,y=E[0].offsetWidth,u=t[0].offsetHeight,v=t[0].offsetWidth,d.parseSpeed(),d.tooltipPositioning(a))},d.getOffsets=function(){z=d.getOffsetTop(E[0]),A=d.getOffsetLeft(E[0])},d.getOffsetTop=function(a){var c=a.getBoundingClientRect().top+b.scrollY;return isNaN(c)&&(c=a.getBoundingClientRect().top+b.pageYOffset),c},d.getOffsetLeft=function(a){var c=a.getBoundingClientRect().left+b.scrollX;return isNaN(c)&&(c=a.getBoundingClientRect().left+b.pageXOffset),c},d.bindShowTriggers=function(){E.bind(K,q)},d.bindHideTriggers=function(){"tooltip"===M?t.bind(L,r):E.bind(L,r)},d.clearTriggers=function(){E.unbind(K,q),E.unbind(L,r)},d.bindShowTriggers(),d.showTooltip=function(){H&&(C=E[0].getBoundingClientRect(),B=e(function(){var b=E[0].getBoundingClientRect();a.equals(C,b)||d.tooltipPositioning(O),C=b},k)),t.addClass(l+"open"),t.css("transition","opacity "+S+"ms linear"),T&&t.css("transition-delay",T+"ms"),d.clearTriggers(),d.bindHideTriggers()},d.hideTooltip=function(){t.css("transition","opacity "+S+"ms linear, visibility 0s linear "+S+"ms"),t.removeClass(l+"open"),d.clearTriggers(),d.bindShowTriggers(),a.isDefined(d.positionInterval)&&(e.cancel(B),B=void 0)},d.removePosition=function(){t.removeClass(l+"left").removeClass(l+"right").removeClass(l+"top").removeClass(l+"bottom ")},d.tooltipPositioning=function(a){d.removePosition(),d.getOffsets();var b,c;"small"===P?w=h:"medium"===P?w=i:"large"===P&&(w=j),"left"===a&&(b=z+x/2-u/2,c=A-(v+w),t.css("top",b+"px"),t.css("left",c+"px"),t.addClass(l+"left")),"right"===a&&(b=z+x/2-u/2,c=A+y+w,t.css("top",b+"px"),t.css("left",c+"px"),t.addClass(l+"right")),"top"===a&&(b=z-w-u,c=A+y/2-v/2,t.css("top",b+"px"),t.css("left",c+"px"),t.addClass(l+"top")),"bottom"===a&&(b=z+x+w,c=A+y/2-v/2,t.css("top",b+"px"),t.css("left",c+"px"),t.addClass(l+"bottom"))},d.tooltipTryPosition=function(){var a=t[0].offsetHeight,c=t[0].offsetWidth,e=t[0].offsetTop,f=t[0].offsetLeft,g=b.innerWidth,h=b.innerHeight,i=g-(c+f),j=h-(a+e),k=E[0].offsetHeight,l=E[0].offsetWidth,m=E[0].offsetLeft,n=E[0].offsetTop,o=g-(m+l),p=h-(k+n),q={left:f,top:e,bottom:j,right:i},r={left:m,right:o,top:n,bottom:p},s=Object.keys(r).reduce(function(a,b){return r[a]>r[b]?a:b}),u=Object.keys(q).reduce(function(a,b){return q[a]<q[b]?a:b});N!==s&&q[u]<20&&(O=s,d.tooltipPositioning(O),d.initTooltip(s))},a.element(b).bind("resize",s),d.$on("$destroy",function(){a.element(b).unbind("resize",s),d.clearTriggers(),t.remove()}),p.tooltipTitle&&p.$observe("tooltipTitle",function(a){d.title=a,d.initTooltip(O)}),p.title&&p.$observe("title",function(a){d.title=a,d.initTooltip(O)}),p.tooltipContent&&p.$observe("tooltipContent",function(a){d.content=a,d.initTooltip(O)}),p.tooltipHtml&&p.$observe("tooltipHtml",function(a){d.html=a,d.initTooltip(O)})}}}])}(angular);
  12. //# sourceMappingURL=angular-tooltips.sourcemap.map