/* * Toasts.js * Copyright 2020 * Authors: Wessel Kok. * All Rights Reserved. * Use, reproduction, distribution, and modification of this code is subject to the terms and * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php * * Project: https://github.com/wesselkok/Toasts.js */ class Toast{constructor(t){var o=$.extend({title:"",description:"",type:"success",html:null,closeButton:!0,closeButtonHtml:null,button:null,buttonHtml:null,position:"bottom-left",newestOnTop:!0,showMethod:"slideDown",hideMethod:"fadeOut",showEasing:"linear",hideEasing:"linear",showDuration:300,hideDuration:300,timeOut:5e3,onShown:null,onHidden:null,onClick:null,onCloseClick:null},t);this.options=o,$(".toast-container."+this.options.position).length<=0&&$('
').appendTo("body");var n='
';null!==this.options.html?n+=this.options.html:("success"!==this.options.type&&"info"!==this.options.type&&"warning"!==this.options.type&&"error"!==this.options.type||(n+='
',"success"===this.options.type?n+='':"info"===this.options.type?n+='':"warning"===this.options.type?n+='':"error"===this.options.type&&(n+=''),n+="
"),n+='
',""!==this.options.title&&(n+='
'+this.options.title+"
"),""!==this.options.description&&(n+='
'+this.options.description+"
"),n+="
",this.options.closeButtonHtml?n+=this.options.closeButtonHtml:this.options.button&&this.options.button.label?n+='
"+this.options.button.label+"
":this.options.buttonHtml?n+=this.options.buttonHtml:this.options.closeButton&&(n+='
')),n+="
",this.options.newestOnTop?this.content=$(n).prependTo(".toast-container."+this.options.position):this.content=$(n).appendTo(".toast-container."+this.options.position);var i=this;this.content.find(".close").click(function(){i.hide(),null!==i.options.onCloseCallback&&i.options.onCloseCallback instanceof Function&&i.options.onCloseCallback()}),this.content.click(function(){null!==i.options.onClick&&i.options.onClick instanceof Function&&i.options.onClick()})}static success(t,o,n){var i=Toast.extendOptions(n);return i.title=t,i.description=o,i.type="success",new Toast(i).show()}static info(t,o,n){var i=Toast.extendOptions(n);return i.title=t,i.description=o,i.type="info",new Toast(i).show()}static warning(t,o,n){var i=Toast.extendOptions(n);return i.title=t,i.description=o,i.type="warning",new Toast(i).show()}static error(t,o,n){var i=Toast.extendOptions(n);return i.title=t,i.description=o,i.type="error",new Toast(i).show()}static custom(t,o,n){var i=Toast.extendOptions(n);return i.html=t,i.type=o,new Toast(i).show()}static extendOptions(t){return $.extend({title:"",description:"",type:"success",html:null,closeButton:!0,closeButtonHtml:null,button:null,buttonHtml:null,position:"bottom-left",newestOnTop:!0,showMethod:"slideDown",hideMethod:"fadeOut",showEasing:"linear",hideEasing:"linear",showDuration:300,hideDuration:300,timeOut:5e3,onShown:null,onHidden:null,onClick:null,onCloseClick:null},t)}show(){var t=this;"slideDown"===this.options.showMethod?$(this.content).slideDown(this.options.showDuration,this.options.showEasing,function(){t.options.timeOut>0&&setTimeout(t.hide.bind(t),t.options.timeOut),null!==t.options.onShown&&t.options.onShown instanceof Function&&t.options.onShown()}):"fadeIn"===this.options.showMethod?$(this.content).fadeIn(this.options.showDuration,this.options.showEasing,function(){t.options.timeOut>0&&setTimeout(t.hide.bind(t),t.options.timeOut),null!==t.options.onShown&&t.options.onShown instanceof Function&&t.options.onShown()}):$(this.content).show(this.options.showDuration,this.options.showEasing,function(){t.options.timeOut>0&&setTimeout(t.hide.bind(t),t.options.timeOut),null!==t.options.onShown&&t.options.onShown instanceof Function&&t.options.onShown()})}hide(){var t=this;"slideUp"===this.options.hideMethod?$(this.content).slideUp(this.options.hideDuration,this.options.hideEasing,function(){$(t.content).remove(),null!==t.options.onHidden&&t.options.onHidden instanceof Function&&t.options.onHidden()}):"fadeOut"===this.options.hideMethod?$(this.content).fadeOut(this.options.hideDuration,this.options.hideEasing,function(){$(t.content).remove(),null!==t.options.onHidden&&t.options.onHidden instanceof Function&&t.options.onHidden()}):$(this.content).hide(this.options.hideDuration,this.options.hideEasing,function(){$(t.content).remove(),null!==t.options.onHidden&&t.options.onHidden instanceof Function&&t.options.onHidden()})}}