-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathangular-loading-button.min.js
More file actions
7 lines (7 loc) · 1.13 KB
/
angular-loading-button.min.js
File metadata and controls
7 lines (7 loc) · 1.13 KB
1
2
3
4
5
6
7
/**
* angular-loading-button - v0.1.1
* Loading button directive for AngularJS
* https://github.com/tiste/angular-loading-button
* Licensed WTFPL
*/
angular.module("loadingButton",[]).factory("loadingButton",["$log",function(){return{dropper:function(n){return this.inc(n,.1*Math.random())},inc:function(n,t){return n=this.limit(n+t,.05,.95),this.set(n)},limit:function(n,t,e){var o=n;return t>n&&(o=t),n>e&&(o=e),o},set:function(n){return this.limit(n,.05,1)}}}]).directive("loadingButton",["$log","$interval","$timeout","loadingButton",function(n,t,e,o){return{restrict:"A",scope:{completed:"=lbCompleted",value:"=?lbValue"},link:function(n,i){"undefined"==typeof n.value&&(n.value=0);var u,l=!1,a=function(){l=!0,i.addClass("loading"),1!==n.value&&(u=t(function(){n.value<.95&&(n.value=o.dropper(n.value))},500))},c=function(o){n.completed=void 0,n.value=1,t.cancel(u),e(function(){i.removeClass("loading"),i.addClass(o?"success":"error")},400),e(function(){i.removeClass("success error"),l=!1,n.value=0},3e3)};i.bind("click",function(){l||a()}),n.$watch("completed",function(n){1==n?c(!0):0==n&&c(!1)}),n.$watch("value",function(n){n>0&&!l&&a()})}}}]);