From 55802a4738cdbba2825eb52e0ec5ca575a9403b7 Mon Sep 17 00:00:00 2001 From: "lubos.dzurik" Date: Wed, 18 Jun 2014 16:23:47 +0200 Subject: [PATCH 1/2] bugfix remove dismissed messages bugfix close button --- src/directives/flash-alert-directive.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/directives/flash-alert-directive.js b/src/directives/flash-alert-directive.js index 38cd293..0aaef99 100644 --- a/src/directives/flash-alert-directive.js +++ b/src/directives/flash-alert-directive.js @@ -23,6 +23,8 @@ if (!isBlank(attr.activeClass)) { element.removeClass(attr.activeClass); } + $scope.flash = {}; // bugfix https://github.com/wmluke/angular-flash/issues/34 + element.css({display : 'none'}); // bugfix for close button }; $scope.$on('$destroy', function () { @@ -53,6 +55,8 @@ element.addClass(attr.activeClass); } + element.css({display : 'block'}); // bugfix for close button + if (!message) { $scope.hide(); return; From 7bd6f15bf8d1c39b95dccd979ee2f8a03c66d66b Mon Sep 17 00:00:00 2001 From: "lubos.dzurik" Date: Thu, 19 Jun 2014 11:44:17 +0200 Subject: [PATCH 2/2] bugfix for API: clean() - optionally remove already displayed messages --- dist/angular-flash.js | 28 ++++++++++++++++++++++++++-- dist/angular-flash.min.js | 5 +++-- src/services/flash-service.js | 22 +++++++++++++++++++++- 3 files changed, 50 insertions(+), 5 deletions(-) diff --git a/dist/angular-flash.js b/dist/angular-flash.js index 8c926a8..ff2e3d5 100644 --- a/dist/angular-flash.js +++ b/dist/angular-flash.js @@ -1,4 +1,4 @@ -/**! +/**! * @license angular-flash v0.1.13 * Copyright (c) 2013 William L. Bunselmeyer. https://github.com/wmluke/angular-flash * License: MIT @@ -39,11 +39,31 @@ }); } - this.clean = function () { + this.getCount = function () { + var c = 0; + if(_info){ + ++c; + } + if(_success){ + ++c; + } + if(_warn){ + ++c; + } + if(_error){ + ++c; + } + return c; + }; + + this.clean = function (keepDisplayed) { _success = null; _info = null; _warn = null; _error = null; + if(!keepDisplayed){ + _notify(null, ''); // buffix - remove already displayed messages + } _type = null; }; @@ -183,6 +203,8 @@ if (!isBlank(attr.activeClass)) { element.removeClass(attr.activeClass); } + $scope.flash = {}; // bugfix https://github.com/wmluke/angular-flash/issues/34 + element.css({display : 'none'}); // bugfix for close button }; $scope.$on('$destroy', function () { @@ -213,6 +235,8 @@ element.addClass(attr.activeClass); } + element.css({display : 'block'}); // bugfix for close button + if (!message) { $scope.hide(); return; diff --git a/dist/angular-flash.min.js b/dist/angular-flash.min.js index 5e46b88..3a90734 100644 --- a/dist/angular-flash.min.js +++ b/dist/angular-flash.min.js @@ -1,6 +1,7 @@ -/**! +/**! * @license angular-flash v0.1.13 * Copyright (c) 2013 William L. Bunselmeyer. https://github.com/wmluke/angular-flash * License: MIT */ -!function(){"use strict";var a=0,b=function(c){function d(a,b){angular.forEach(j.subscribers,function(c){var d=!c.type||c.type===a,e=!j.id&&!c.id||c.id===j.id;d&&e&&c.cb(b,a)})}var e,f,g,h,i,j=angular.extend({id:null,subscribers:{},classnames:{error:[],warn:[],info:[],success:[]}},c),k=this;this.clean=function(){e=null,f=null,g=null,h=null,i=null},this.subscribe=function(b,c,d){return a+=1,j.subscribers[a]={cb:b,type:c,id:d},a},this.unsubscribe=function(a){delete j.subscribers[a]},this.to=function(a){var c=angular.copy(j);return c.id=a,new b(c)},Object.defineProperty(this,"success",{get:function(){return e},set:function(a){e=a,i="success",d(i,a)}}),Object.defineProperty(this,"info",{get:function(){return f},set:function(a){f=a,i="info",d(i,a)}}),Object.defineProperty(this,"warn",{get:function(){return g},set:function(a){g=a,i="warn",d(i,a)}}),Object.defineProperty(this,"error",{get:function(){return h},set:function(a){h=a,i="error",d(i,a)}}),Object.defineProperty(this,"type",{get:function(){return i}}),Object.defineProperty(this,"message",{get:function(){return i?k[i]:null}}),Object.defineProperty(this,"classnames",{get:function(){return j.classnames}}),Object.defineProperty(this,"id",{get:function(){return j.id}})};angular.module("angular-flash.service",[]).provider("flash",function(){var a=this;this.errorClassnames=["alert-error"],this.warnClassnames=["alert-warn"],this.infoClassnames=["alert-info"],this.successClassnames=["alert-success"],this.$get=function(){return new b({classnames:{error:a.errorClassnames,warn:a.warnClassnames,info:a.infoClassnames,success:a.successClassnames}})}})}(),function(){"use strict";function a(a){return(null===a||void 0===a)&&(a=""),/^\s*$/.test(a)}function b(b,c){return{scope:!0,link:function(d,e,f){function g(){var a=[].concat(b.classnames.error,b.classnames.warn,b.classnames.info,b.classnames.success);angular.forEach(a,function(a){e.removeClass(a)})}function h(h,j){if(i&&c.cancel(i),d.flash.type=j,d.flash.message=h,g(),angular.forEach(b.classnames[j],function(a){e.addClass(a)}),a(f.activeClass)||e.addClass(f.activeClass),!h)return void d.hide();var k=Number(f.duration||5e3);k>0&&(i=c(d.hide,k))}var i,j;d.flash={},d.hide=function(){g(),a(f.activeClass)||e.removeClass(f.activeClass)},d.$on("$destroy",function(){b.clean(),b.unsubscribe(j)}),j=b.subscribe(h,f.flashAlert,f.id),f.flashAlert&&b[f.flashAlert]&&h(b[f.flashAlert],f.flashAlert),!f.flashAlert&&b.message&&h(b.message,b.type)}}}angular.module("angular-flash.flash-alert-directive",["angular-flash.service"]).directive("flashAlert",["flash","$timeout",b])}(); \ No newline at end of file + +(function(){"use strict";var e=0;var t=function(n){function l(e,t){angular.forEach(r.subscribers,function(n){var i=!n.type||n.type===e;var s=!r.id&&!n.id||n.id===r.id;if(i&&s){n.cb(t,e)}})}var r=angular.extend({id:null,subscribers:{},classnames:{error:[],warn:[],info:[],success:[]}},n);var i=this;var s;var o;var u;var a;var f;this.getCount=function(){var e=0;if(o){++e}if(s){++e}if(u){++e}if(a){++e}return e};this.clean=function(e){s=null;o=null;u=null;a=null;if(!e){l(null,"")}f=null};this.subscribe=function(t,n,i){e+=1;r.subscribers[e]={cb:t,type:n,id:i};return e};this.unsubscribe=function(e){delete r.subscribers[e]};this.to=function(e){var n=angular.copy(r);n.id=e;return new t(n)};Object.defineProperty(this,"success",{get:function(){return s},set:function(e){s=e;f="success";l(f,e)}});Object.defineProperty(this,"info",{get:function(){return o},set:function(e){o=e;f="info";l(f,e)}});Object.defineProperty(this,"warn",{get:function(){return u},set:function(e){u=e;f="warn";l(f,e)}});Object.defineProperty(this,"error",{get:function(){return a},set:function(e){a=e;f="error";l(f,e)}});Object.defineProperty(this,"type",{get:function(){return f}});Object.defineProperty(this,"message",{get:function(){return f?i[f]:null}});Object.defineProperty(this,"classnames",{get:function(){return r.classnames}});Object.defineProperty(this,"id",{get:function(){return r.id}})};angular.module("angular-flash.service",[]).provider("flash",function(){var e=this;this.errorClassnames=["alert-error"];this.warnClassnames=["alert-warn"];this.infoClassnames=["alert-info"];this.successClassnames=["alert-success"];this.$get=function(){return new t({classnames:{error:e.errorClassnames,warn:e.warnClassnames,info:e.infoClassnames,success:e.successClassnames}})}})})();(function(){"use strict";function e(e){if(e===null||e===undefined){e=""}return/^\s*$/.test(e)}function t(t,n){return{scope:true,link:function(r,i,s){function a(){var e=[].concat(t.classnames.error,t.classnames.warn,t.classnames.info,t.classnames.success);angular.forEach(e,function(e){i.removeClass(e)})}function f(u,f){if(o){n.cancel(o)}r.flash.type=f;r.flash.message=u;a();angular.forEach(t.classnames[f],function(e){i.addClass(e)});if(!e(s.activeClass)){i.addClass(s.activeClass)}i.css({display:"block"});if(!u){r.hide();return}var l=Number(s.duration||5e3);if(l>0){o=n(r.hide,l)}}var o,u;r.flash={};r.hide=function(){a();if(!e(s.activeClass)){i.removeClass(s.activeClass)}r.flash={};i.css({display:"none"})};r.$on("$destroy",function(){t.clean();t.unsubscribe(u)});u=t.subscribe(f,s.flashAlert,s.id);if(s.flashAlert&&t[s.flashAlert]){f(t[s.flashAlert],s.flashAlert)}if(!s.flashAlert&&t.message){f(t.message,t.type)}}}}angular.module("angular-flash.flash-alert-directive",["angular-flash.service"]).directive("flashAlert",["flash","$timeout",t])})() \ No newline at end of file diff --git a/src/services/flash-service.js b/src/services/flash-service.js index 4b1b004..824827f 100644 --- a/src/services/flash-service.js +++ b/src/services/flash-service.js @@ -34,11 +34,31 @@ }); } - this.clean = function () { + this.getCount = function () { + var c = 0; + if(_info){ + ++c; + } + if(_success){ + ++c; + } + if(_warn){ + ++c; + } + if(_error){ + ++c; + } + return c; + }; + + this.clean = function (keepDisplayed) { _success = null; _info = null; _warn = null; _error = null; + if(!keepDisplayed){ + _notify(null, ''); // buffix - remove already displayed messages + } _type = null; };