From a3ad9fc2d73617b1231a5556a99c3ca407b8e479 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 15 Aug 2023 18:10:10 +0100 Subject: [PATCH] Initial commit --- bs4-test.html | 35 ++++++++++++ bstoast4.js | 147 ++++++++++++++++++++++++++++++++++++++++++++++++ bstoast4.min.js | 5 ++ 3 files changed, 187 insertions(+) create mode 100644 bs4-test.html create mode 100644 bstoast4.js create mode 100644 bstoast4.min.js diff --git a/bs4-test.html b/bs4-test.html new file mode 100644 index 0000000..9f60e80 --- /dev/null +++ b/bs4-test.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + +
+
+
+ + + \ No newline at end of file diff --git a/bstoast4.js b/bstoast4.js new file mode 100644 index 0000000..3dacc58 --- /dev/null +++ b/bstoast4.js @@ -0,0 +1,147 @@ +/** + * BSToast4 + * @version v0.1.0.012 (2023/08/15 0056) + */ +var BSToast4 = { + Create: async function (options) { + var a = this; + + a.Options = Object.assign(a.DefaultOptions, options); + + a.pfx = "bstoa4_"; + a.id = Math.floor(Math.random() * 100000) + 10000; + a.body = document.getElementsByTagName("body")[0]; + + a.addBackdrop(); + a.addToast(a.Options); + }, + DefaultOptions: { + Icon: null, + Title: "", + Time: "", + Message: "", + Animation: true, + AutoHide: true, + Delay: 2000, + Position: "top:0; right:0; margin:20px;" + }, + Clear: function () { + this.body.querySelectorAll(".toast").forEach(function(e) { + e.parentNode.removeChild(e); + }); + + this.removeBackdrop(); + }, + Close: function (id) { + var a = this; + + // Close this toast + a.body.querySelectorAll("#" + a.pfx + id + ".toast").forEach(function(e) { + if (typeof(e.parentNode) == "undefined") { + return; + } + + e.parentNode.removeChild(e); + }); + + // Clean-up all closed toasts + a.body.querySelectorAll(".toast.hide").forEach(function(e) { + if (typeof(e.parentNode) == "undefined") { + return; + } + + e.parentNode.removeChild(e); + }); + + if (a.body.querySelectorAll(".toast").length <= 0) { + let backdrop = a.body.querySelectorAll(".toast-backdrop")[0]; + + if (typeof(backdrop) == "undefined") { + return; + } + + if (typeof(backdrop.parentNode) == "undefined") { + return; + } + + backdrop.parentNode.removeChild(backdrop); + } + }, + addBackdrop: async function () { + let a = this; + + // don't allow duplicates + if (a.body.querySelectorAll(".toast-backdrop").length > 0) { + return; + } + + a.appendHtml(a.body, '
'); + }, + addToast: function (options) { + var a = this; + + if (a.body.querySelectorAll(".toast-backdrop-body").length <= 0) { + return; + } + + let html = ""; + html += ''; + + a.appendHtml(a.body.querySelectorAll(".toast-backdrop-body")[0], html); + + jQuery("#" + a.pfx + a.id + ".toast").toast({ + animation: options.Animation, + autohide: options.AutoHide, + delay: options.Delay + }).toast("show"); + + jQuery("#" + a.pfx + a.id + ".toast").on('hidden.bs.toast', function () { + a.Close(a.id); + }) + }, + appendHtml: function (el, html) { + let node = document.createElement('template'); + node.innerHTML = html.trim(); + + node = node.content.firstChild; + + el.appendChild(node); + }, + isNullOrWhitespace: function(e) { + if (typeof (e) == "undefined") { + return true; + } + + if (e == null) { + return true; + } + + if (e == false) { + return true; + } + + return (e.trim().length <= 0); + }, + removeBackdrop: function () { + if (this.body.querySelectorAll(".toast-backdrop").length <= 0) { + return; + } + + let backdrop = this.body.querySelectorAll(".toast-backdrop")[0]; + backdrop.parentNode.removeChild(backdrop); + } +}; \ No newline at end of file diff --git a/bstoast4.min.js b/bstoast4.min.js new file mode 100644 index 0000000..3f6ecf0 --- /dev/null +++ b/bstoast4.min.js @@ -0,0 +1,5 @@ +/** + * BSToast4 + * @version v0.1.0.012 (2023/08/15 0056) + */ +var BSToast4={Create:async function(t){var e=this;e.Options=Object.assign(e.DefaultOptions,t),e.pfx="bstoa4_",e.id=Math.floor(1e5*Math.random())+1e4,e.body=document.getElementsByTagName("body")[0],e.addBackdrop(),e.addToast(e.Options)},DefaultOptions:{Icon:null,Title:"",Time:"",Message:"",Animation:!0,AutoHide:!0,Delay:2e3,Position:"top:0; right:0; margin:20px;"},Clear:function(){this.body.querySelectorAll(".toast").forEach((function(t){t.parentNode.removeChild(t)})),this.removeBackdrop()},Close:function(t){var e=this;if(e.body.querySelectorAll("#"+e.pfx+t+".toast").forEach((function(t){void 0!==t.parentNode&&t.parentNode.removeChild(t)})),e.body.querySelectorAll(".toast.hide").forEach((function(t){void 0!==t.parentNode&&t.parentNode.removeChild(t)})),e.body.querySelectorAll(".toast").length<=0){let t=e.body.querySelectorAll(".toast-backdrop")[0];if(void 0===t)return;if(void 0===t.parentNode)return;t.parentNode.removeChild(t)}},addBackdrop:async function(){let t=this;t.body.querySelectorAll(".toast-backdrop").length>0||t.appendHtml(t.body,'
')},addToast:function(t){var e=this;if(e.body.querySelectorAll(".toast-backdrop-body").length<=0)return;let o="";o+='",e.appendHtml(e.body.querySelectorAll(".toast-backdrop-body")[0],o),jQuery("#"+e.pfx+e.id+".toast").toast({animation:t.Animation,autohide:t.AutoHide,delay:t.Delay}).toast("show"),jQuery("#"+e.pfx+e.id+".toast").on("hidden.bs.toast",(function(){e.Close(e.id)}))},appendHtml:function(t,e){let o=document.createElement("template");o.innerHTML=e.trim(),o=o.content.firstChild,t.appendChild(o)},isNullOrWhitespace:function(t){return void 0===t||(null==t||(0==t||t.trim().length<=0))},removeBackdrop:function(){if(this.body.querySelectorAll(".toast-backdrop").length<=0)return;let t=this.body.querySelectorAll(".toast-backdrop")[0];t.parentNode.removeChild(t)}}; \ No newline at end of file