UNPKG

mcs-ng-material

Version:

MCS NG-Meterial is based on mcs-web.

7 lines 4.46 kB
/*! * AngularJS Material Design * https://github.com/angular/material * @license MIT * v1.1.5-master-515959d */ !function(e,t,i){"use strict";function n(e,i,n,o,r,l,a,d){function s(s,p,v){function y(){s.mdZIndex=s.mdZIndex||m,s.mdDelay=s.mdDelay||f,h[s.mdDirection]||(s.mdDirection=b)}function E(e){var t=e||r(p.text().trim())(s.$parent);(!q.attr("aria-label")&&!q.attr("aria-labelledby")||q.attr("md-labeled-by-tooltip"))&&(q.attr("aria-label",t),q.attr("md-labeled-by-tooltip")||q.attr("md-labeled-by-tooltip",R))}function x(){y(),C&&C.panelEl&&C.panelEl.removeClass(D),D="md-origin-"+s.mdDirection,V=h[s.mdDirection],A=a.newPanelPosition().relativeTo(q).addPanelPosition(V.x,V.y),C&&C.panelEl&&(C.panelEl.addClass(D),C.updatePosition(A))}function $(){function t(e){return e.some(function(e){return"disabled"===e.attributeName&&q[0].disabled}),!1}function n(){P(!1)}function r(){Z=document.activeElement===q[0]}function a(e){"focus"===e.type&&Z?Z=!1:s.mdVisible||(q.on(u,m),P(!0),"touchstart"===e.type&&q.one("touchend",function(){l.nextTick(function(){o.one("touchend",m)},!1)}))}function m(){W=s.hasOwnProperty("mdAutohide")?s.mdAutohide:v.hasOwnProperty("mdAutohide"),(W||I||o[0].activeElement!==q[0])&&(N&&(e.cancel(N),P.queued=!1,N=null),q.off(u,m),q.triggerHandler("blur"),P(!1)),I=!1}function f(){I=!0}function b(){d.deregister("scroll",n,!0),d.deregister("blur",r),d.deregister("resize",F),q.off(c,a).off(u,m).off("mousedown",f),m(),h&&h.disconnect()}if(q[0]&&"MutationObserver"in i){var h=new MutationObserver(function(e){t(e)&&l.nextTick(function(){P(!1)})});h.observe(q[0],{attributes:!0})}Z=!1,d.register("scroll",n,!0),d.register("blur",r),d.register("resize",F),s.$on("$destroy",b),q.on("mousedown",f),q.on(c,a)}function w(){function e(){s.$destroy()}if(p[0]&&"MutationObserver"in i){var t=new MutationObserver(function(e){e.forEach(function(e){"md-visible"!==e.attributeName||s.visibleWatcher||(s.visibleWatcher=s.$watch("mdVisible",g))})});t.observe(p[0],{attributes:!0}),v.hasOwnProperty("mdVisible")&&(s.visibleWatcher=s.$watch("mdVisible",g))}else s.visibleWatcher=s.$watch("mdVisible",g);s.$watch("mdDirection",x),p.one("$destroy",e),q.one("$destroy",e),s.$on("$destroy",function(){P(!1),C&&C.destroy(),t&&t.disconnect(),p.remove()}),p.text().indexOf(r.startSymbol())>-1&&s.$watch(function(){return p.text().trim()},E)}function P(t){P.queued&&P.value===!!t||!P.queued&&s.mdVisible===!!t||(P.value=!!t,P.queued||(t?(P.queued=!0,N=e(function(){s.mdVisible=P.value,P.queued=!1,N=null,s.visibleWatcher||g(s.mdVisible)},s.mdDelay)):l.nextTick(function(){s.mdVisible=!1,s.visibleWatcher||g(!1)})))}function g(e){e?T():O()}function T(){if(!p[0].textContent.trim())throw new Error("Text for the tooltip has not been provided. Please include text within the mdTooltip element.");if(!C){var e=t.element(document.body),i=a.newPanelAnimation().openFrom(q).closeTo(q).withAnimation({open:"md-show",close:"md-hide"}),n={id:R,attachTo:e,contentElement:p,propagateContainerEvents:!0,panelClass:"md-tooltip "+D,animation:i,position:A,zIndex:s.mdZIndex,focusOnOpen:!1};C=a.create(n)}C.open().then(function(){C.panelEl.attr("role","tooltip")})}function O(){C&&C.close()}var D,V,A,C,W,N,R="md-tooltip-"+l.nextUid(),q=l.getParentWithPointerEvents(p),F=n.throttle(x),I=!1,Z=null;y(),E(),p.detach(),x(),$(),w()}var c="focus touchstart mouseenter",u="blur touchcancel mouseleave",m=100,f=0,b="bottom",h={top:{x:a.xPosition.CENTER,y:a.yPosition.ABOVE},right:{x:a.xPosition.OFFSET_END,y:a.yPosition.CENTER},bottom:{x:a.xPosition.CENTER,y:a.yPosition.BELOW},left:{x:a.xPosition.OFFSET_START,y:a.yPosition.CENTER}};return{restrict:"E",priority:210,scope:{mdZIndex:"=?mdZIndex",mdDelay:"=?mdDelay",mdVisible:"=?mdVisible",mdAutohide:"=?mdAutohide",mdDirection:"@?mdDirection"},link:s}}function o(){function i(e){r[e.type]&&r[e.type].forEach(function(t){t.call(this,e)},this)}function n(t,n,o){var a=r[t]=r[t]||[];a.length||(o?e.addEventListener(t,i,!0):l.on(t,i)),a.indexOf(n)===-1&&a.push(n)}function o(t,n,o){var a=r[t],d=a?a.indexOf(n):-1;d>-1&&(a.splice(d,1),0===a.length&&(o?e.removeEventListener(t,i,!0):l.off(t,i)))}var r={},l=t.element(e);return{register:n,deregister:o}}n.$inject=["$timeout","$window","$$rAF","$document","$interpolate","$mdUtil","$mdPanel","$$mdTooltipRegistry"],t.module("material.components.tooltip",["material.core","material.components.panel"]).directive("mdTooltip",n).service("$$mdTooltipRegistry",o)}(window,window.angular);