/** * @file toast.js * @version 20200531 ms * @type JS * * GUI component similar to Android's Toast. */ /** * @class KToast * @param {string} text without HTML-Tags * @param {int} duration time in ms * @param {object} opts styleparameter object: border, borderRadius, padding, bgColor, fontSize, fontColor */ function KToast(text, duration, opts){ if(opts === undefined) opts = {}; var m = this; if(opts.border !== undefined) m.border = opts.border; if(opts.borderRadius !== undefined) m.borderRadius = opts.borderRadius; if(opts.padding !== undefined) m.padding = opts.padding; if(opts.bgColor !== undefined) m.bgColor = opts.bgColor; if(opts.fontSize !== undefined) m.fontSize = opts.fontSize; if(opts.fontColor !== undefined) m.fontColor = opts.fontColor; m.o = document.createElement("div"); st = m.o.style; st.position = "absolute"; st.zIndex = "10000"; st.backgroundColor = m.bgColor; st.padding = m.padding; st.border = m.border; st.borderRadius = m.borderRadius; st.textAlign = "center"; st.fontSize = m.fontSize; st.color = m.fontColor; st.maxWidth = "98%"; st.left = "50%"; st.bottom = "8%"; st.transform = "translate(-50%,0)"; st.userSelect = "none"; st.MozUserSelect = "none"; st.webkitUserSelect = "none"; st.msUserSelect = "none"; st.cursor = "default"; m.o.innerHTML = m.HtmlSpecialChars(text); document.body.appendChild(m.o); m.timer = setTimeout(function(){m.Close()},duration); } /** * @fn Close * @memberof KToast * close toast with animation */ KToast.prototype.Close = function() { var m = this; if(m.timer) { clearTimeout(m.timer); m.timer = null; } var valHide = 1, ivHide = setInterval(function() { valHide -= 0.03; if(valHide>0){ m.o.style.opacity = valHide; }else{ clearInterval(ivHide); try { document.body.removeChild(m.o); } catch(e) { } } }, 25); }; /** * @fn HtmlSpecialChars * @memberof KToast * @param s * @return {string} * Private method. * replace & > < " \n with htmlCharacterName */ KToast.prototype.HtmlSpecialChars = function(s) { return s.replace(/&/g,"&").replace(/>/g,">").replace(/"); }; /** @vars */ KToast.prototype.border = ""; KToast.prototype.borderRadius = "10px"; KToast.prototype.padding = "10px 25px 10px 25px"; KToast.prototype.bgColor = "#000000"; KToast.prototype.fontSize = "150%"; KToast.prototype.fontColor = "#FFFFFF";