forked from mouse0270/bootstrap-notify
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbootstrap-notify.min.js
1 lines (1 loc) · 9.02 KB
/
bootstrap-notify.min.js
1
!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof exports?t(require("jquery")):t(jQuery)}(function(c){var n={element:"body",position:null,type:"info",allow_dismiss:!0,allow_duplicates:!0,newest_on_top:!1,showProgressbar:!1,placement:{from:"top",align:"right"},offset:20,spacing:10,z_index:1031,delay:5e3,timer:1e3,url_target:"_blank",mouse_over:null,animate:{enter:"animated fadeInDown",exit:"animated fadeOutUp"},onShow:null,onShown:null,onClose:null,onClosed:null,onClick:null,onDismiss:null,icon_type:"class",template:'<div data-notify="container" class="col-xs-11 col-sm-4 alert alert-{0}" role="alert"><button type="button" aria-hidden="true" class="close" data-notify="dismiss">×</button><span data-notify="icon"></span> <span data-notify="title">{1}</span> <span data-notify="message">{2}</span><div class="progress" data-notify="progressbar"><div class="progress-bar progress-bar-{0}" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div></div><a href="{3}" target="{4}" data-notify="url"></a></div>'};function i(t,s,i){var l,d,e={content:{message:"object"==typeof s?s.message:s,title:s.title?s.title:"",icon:s.icon?s.icon:"",url:s.url?s.url:"#",target:s.target?s.target:"-"}};i=c.extend(!0,{},e,i),this.settings=c.extend(!0,{},n,i),this._defaults=n,"-"===this.settings.content.target&&(this.settings.content.target=this.settings.url_target),this.animations={start:"webkitAnimationStart oanimationstart MSAnimationStart animationstart",end:"webkitAnimationEnd oanimationend MSAnimationEnd animationend"},"number"==typeof this.settings.offset&&(this.settings.offset={x:this.settings.offset,y:this.settings.offset}),(this.settings.allow_duplicates||!this.settings.allow_duplicates&&(l=this,d=!1,c('[data-notify="container"]').each(function(t,s){var i=c(s),e=i.find('[data-notify="title"]').html().trim(),n=i.find('[data-notify="message"]').html().trim(),a=e===c("<div>"+l.settings.content.title+"</div>").html().trim(),o=n===c("<div>"+l.settings.content.message+"</div>").html().trim(),r=i.hasClass("alert-"+l.settings.type);return a&&o&&r&&(d=!0),!d}),!d))&&this.init()}String.format=function(){var i=arguments;return arguments[0].replace(/(\{\{\d\}\}|\{\d\})/g,function(t){if("{{"===t.substring(0,2))return t;var s=parseInt(t.match(/\d/)[0]);return i[s+1]})},c.extend(i.prototype,{init:function(){var r=this;this.buildNotify(),this.settings.content.icon&&this.setIcon(),"#"!=this.settings.content.url&&this.styleURL(),this.styleDismiss(),this.placement(),this.bind(),this.notify={$ele:this.$ele,update:function(t,s){var i={};for(var e in"string"==typeof t?i[t]=s:i=t,i)switch(e){case"type":this.$ele.removeClass("alert-"+r.settings.type),this.$ele.find('[data-notify="progressbar"] > .progress-bar').removeClass("progress-bar-"+r.settings.type),r.settings.type=i[e],this.$ele.addClass("alert-"+i[e]).find('[data-notify="progressbar"] > .progress-bar').addClass("progress-bar-"+i[e]);break;case"icon":var n=this.$ele.find('[data-notify="icon"]');"class"===r.settings.icon_type.toLowerCase()?n.removeClass(r.settings.content.icon).addClass(i[e]):(n.is("img")||n.find("img"),n.attr("src",i[e])),r.settings.content.icon=i[t];break;case"progress":var a=r.settings.delay-r.settings.delay*(i[e]/100);this.$ele.data("notify-delay",a),this.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",i[e]).css("width",i[e]+"%");break;case"url":this.$ele.find('[data-notify="url"]').attr("href",i[e]);break;case"target":this.$ele.find('[data-notify="url"]').attr("target",i[e]);break;default:this.$ele.find('[data-notify="'+e+'"]').html(i[e])}var o=this.$ele.outerHeight()+parseInt(r.settings.spacing)+parseInt(r.settings.offset.y);r.reposition(o)},close:function(){r.close()}}},buildNotify:function(){var t=this.settings.content;this.$ele=c(String.format(this.settings.template,this.settings.type,t.title,t.message,t.url,t.target)),this.$ele.attr("data-notify-position",this.settings.placement.from+"-"+this.settings.placement.align),this.settings.allow_dismiss||this.$ele.find('[data-notify="dismiss"]').css("display","none"),(this.settings.delay<=0&&!this.settings.showProgressbar||!this.settings.showProgressbar)&&this.$ele.find('[data-notify="progressbar"]').remove()},setIcon:function(){"class"===this.settings.icon_type.toLowerCase()?this.$ele.find('[data-notify="icon"]').addClass(this.settings.content.icon):this.$ele.find('[data-notify="icon"]').is("img")?this.$ele.find('[data-notify="icon"]').attr("src",this.settings.content.icon):this.$ele.find('[data-notify="icon"]').append('<img src="'+this.settings.content.icon+'" alt="Notify Icon" />')},styleDismiss:function(){this.$ele.find('[data-notify="dismiss"]').css({position:"absolute",right:"10px",top:"5px",zIndex:this.settings.z_index+2})},styleURL:function(){this.$ele.find('[data-notify="url"]').css({backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)",height:"100%",left:0,position:"absolute",top:0,width:"100%",zIndex:this.settings.z_index+1})},placement:function(){var i=this,t=this.settings.offset.y,s={display:"inline-block",margin:"0px auto",position:this.settings.position?this.settings.position:"body"===this.settings.element?"fixed":"absolute",transition:"all .5s ease-in-out",zIndex:this.settings.z_index},e=!1,n=this.settings;switch(c('[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])').each(function(){t=Math.max(t,parseInt(c(this).css(n.placement.from))+parseInt(c(this).outerHeight())+parseInt(n.spacing))}),!0===this.settings.newest_on_top&&(t=this.settings.offset.y),s[this.settings.placement.from]=t+"px",this.settings.placement.align){case"left":case"right":s[this.settings.placement.align]=this.settings.offset.x+"px";break;case"center":s.left=0,s.right=0}this.$ele.css(s).addClass(this.settings.animate.enter),c.each(Array("webkit-","moz-","o-","ms-",""),function(t,s){i.$ele[0].style[s+"AnimationIterationCount"]=1}),c(this.settings.element).append(this.$ele),!0===this.settings.newest_on_top&&(t=parseInt(t)+parseInt(this.settings.spacing)+this.$ele.outerHeight(),this.reposition(t)),c.isFunction(i.settings.onShow)&&i.settings.onShow.call(this.$ele),this.$ele.one(this.animations.start,function(){e=!0}).one(this.animations.end,function(){i.$ele.removeClass(i.settings.animate.enter),c.isFunction(i.settings.onShown)&&i.settings.onShown.call(this)}),setTimeout(function(){e||c.isFunction(i.settings.onShown)&&i.settings.onShown.call(this)},600)},bind:function(){var i=this;if(this.$ele.find('[data-notify="dismiss"]').on("click",function(){i.close(),c.isFunction(i.settings.onDismiss)&&i.settings.onDismiss.call(this,event)}),c.isFunction(i.settings.onClick)&&this.$ele.on("click",function(t){t.target!=i.$ele.find('[data-notify="dismiss"]')[0]&&i.settings.onClick.call(this,t)}),this.$ele.mouseover(function(){c(this).data("data-hover","true")}).mouseout(function(){c(this).data("data-hover","false")}),this.$ele.data("data-hover","false"),0<this.settings.delay){i.$ele.data("notify-delay",i.settings.delay);var e=setInterval(function(){var t=parseInt(i.$ele.data("notify-delay"))-i.settings.timer;if("false"===i.$ele.data("data-hover")&&"pause"===i.settings.mouse_over||"pause"!=i.settings.mouse_over){var s=(i.settings.delay-t)/i.settings.delay*100;i.$ele.data("notify-delay",t),i.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",s).css("width",s+"%")}t<=-i.settings.timer&&(clearInterval(e),i.close())},i.settings.timer)}},close:function(){var t=this,s=parseInt(this.$ele.css(this.settings.placement.from)),i=!1;this.$ele.attr("data-closing","true").addClass(this.settings.animate.exit),t.reposition(s),c.isFunction(t.settings.onClose)&&t.settings.onClose.call(this.$ele),this.$ele.one(this.animations.start,function(){i=!0}).one(this.animations.end,function(){c(this).remove(),c.isFunction(t.settings.onClosed)&&t.settings.onClosed.call(this)}),setTimeout(function(){i||(t.$ele.remove(),c.isFunction(t.settings.onClosed)&&t.settings.onClosed.call(this))},600)},reposition:function(t){var s=this,i='[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])',e=this.$ele.nextAll(i);!0===this.settings.newest_on_top&&(e=this.$ele.prevAll(i)),e.each(function(){c(this).css(s.settings.placement.from,t),t=parseInt(t)+parseInt(s.settings.spacing)+c(this).outerHeight()})}}),c.notify=function(t,s){return new i(this,t,s).notify},c.notifyDefaults=function(t){return n=c.extend(!0,{},n,t)},c.notifyClose=function(t){void 0===t||"all"===t?c("[data-notify]").find('[data-notify="dismiss"]').trigger("click"):"success"===t||"info"===t||"warning"===t||"danger"===t?c(".alert-"+t+"[data-notify]").find('[data-notify="dismiss"]').trigger("click"):t?c(t+"[data-notify]").find('[data-notify="dismiss"]').trigger("click"):c('[data-notify-position="'+t+'"]').find('[data-notify="dismiss"]').trigger("click")},c.notifyCloseExcept=function(t){"success"===t||"info"===t||"warning"===t||"danger"===t?c("[data-notify]").not(".alert-"+t).find('[data-notify="dismiss"]').trigger("click"):c("[data-notify]").not(t).find('[data-notify="dismiss"]').trigger("click")}});