UNPKG

angular-notification-icons

Version:
1 lines 2.34 kB
!function(n,i){"function"==typeof define&&define.amd?define(["angular"],i):"object"==typeof exports?module.exports=i(require("angular")):n.returnExports=i(n.angular)}(this,function(n){"use strict";n.module("angular-notification-icons",["angular-notification-icons.tpls"]),n.module("angular-notification-icons.tpls",[]),n.module("angular-notification-icons.tpls").run(["$templateCache",function(n){n.put("template/notification-icon.html",'<div class="angular-notifications-container">\n <div class="angular-notifications-icon overlay" ng-show="notification.visible"><div ng-hide="notification.hideCount">{{notification.count}}</div></div>\n <div class="notification-inner">\n <ng-transclude></ng-transclude>\n </div>\n</div>')}]);var i=function(i,t,e){var o=this;o.visible=!1,o.wideThreshold=o.wideThreshold||100,o.alwaysShow=o.alwaysShow||!1;var a,r={appear:o.appearAnimation||o.animation||"grow",update:o.updateAnimation||o.animation||"grow",disappear:o.disappearAnimation};o.getElement=function(i){return n.element(i[0].querySelector(".angular-notifications-icon"))},o.init=function(n){o.$element=o.getElement(n),o.clearTrigger&&n.on(o.clearTrigger,function(){o.count=0,i.$apply()})};var c=function(n){return n?(a&&t.cancel(a),a=t.addClass(o.$element,n),a.then(function(){return o.$element.removeClass(n),e.when(!0)}),a):e.when(!1)},l=function(){o.visible=!0,c(r.appear)},u=function(){c(r.disappear).then(function(n){o.visible=!1,n&&i.$apply()})},s=function(){c(r.update)};i.$watch(function(){return o.count},function(){o.visible===!1&&(o.alwaysShow||o.count>0)?l():!o.alwaysShow&&o.visible===!0&&o.count<=0?u():s(),Math.abs(o.count)>=o.wideThreshold?o.$element.addClass("wide-icon"):o.$element.removeClass("wide-icon")})},t=function(){return{restrict:"EA",scope:{count:"=",hideCount:"@",alwaysShow:"@",animation:"@",appearAnimation:"@",disappearAnimation:"@",updateAnimation:"@",clearTrigger:"@",wideThreshold:"@"},controller:"NotificationDirectiveController",controllerAs:"notification",bindToController:!0,transclude:!0,templateUrl:"template/notification-icon.html",link:function(n,i,t,e){e.init(i)}}};return n.module("angular-notification-icons").controller("NotificationDirectiveController",["$scope","$animate","$q",i]).directive("notificationIcon",t),{NotificationDirectiveController:i,notificationDirective:t}});