|
|
|
const removeToast = require('./removetoast');
|
|
|
|
|
|
|
|
module.exports = (name, text, bg = '#a172a6', persistOnClick = false, time = 5, onclick = () => {}, selectable = false, timerColor='#ddddddb2') => {
|
|
|
|
if (!name || !text) {return;}
|
|
|
|
if (!Array.isArray(text)) {text = [text];}
|
|
|
|
let toast = document.createElement('div');
|
|
|
|
toast.className = 'toast';
|
|
|
|
toast.style.backgroundColor = `${bg}c2`;
|
|
|
|
toast.style.borderColor = `${bg}c2`;
|
|
|
|
toast.classList.add('toast-entering');
|
|
|
|
let toastWrap = document.createElement('div');
|
|
|
|
toastWrap.className = 'toast-wrapper';
|
|
|
|
let continueTimeout = true;
|
|
|
|
toast.onclick = () => {
|
|
|
|
if (!persistOnClick) {
|
|
|
|
removeToast(toast);
|
|
|
|
continueTimeout = false;
|
|
|
|
}
|
|
|
|
onclick();
|
|
|
|
};
|
|
|
|
document.getElementById('toast-container').appendChild(toast);
|
|
|
|
toast.appendChild(toastWrap);
|
|
|
|
let h2 = document.createElement('h2');
|
|
|
|
h2.innerHTML = name;
|
|
|
|
if (!selectable) {h2.className = 'nosel';}
|
|
|
|
toastWrap.appendChild(h2);
|
|
|
|
for (let i = 0; i < text.length; i++) {
|
|
|
|
if (text[i].length) {
|
|
|
|
let p = document.createElement('p');
|
|
|
|
p.innerHTML = text[i];
|
|
|
|
if (!selectable) {p.className = 'nosel';}
|
|
|
|
toastWrap.appendChild(p);
|
|
|
|
}
|
|
|
|
else {toastWrap.appendChild(document.createElement('br'));}
|
|
|
|
}
|
|
|
|
let timer = document.createElement('div');
|
|
|
|
timer.className = 'toast-timer';
|
|
|
|
timer.style.backgroundColor = timerColor;
|
|
|
|
timer.style.animation = `toast-timer ${time}s linear`;
|
|
|
|
toastWrap.appendChild(timer);
|
|
|
|
toast.id = `toast-${window.kade.toasts.total}`;
|
|
|
|
toast.onmouseenter = () => {
|
|
|
|
let ctoast = window.kade.toasts.shown[toast.id.slice(6)];
|
|
|
|
ctoast.toast.style.backgroundColor = bg;
|
|
|
|
ctoast.timer.style.animationPlayState = 'paused';
|
|
|
|
clearTimeout(ctoast.timeout);
|
|
|
|
ctoast.tl = ctoast.tt - (Date.now() - ctoast.ts);
|
|
|
|
};
|
|
|
|
toast.onmouseleave = () => {
|
|
|
|
let ctoast = window.kade.toasts.shown[toast.id.slice(6)];
|
|
|
|
ctoast.toast.style.backgroundColor = `${bg}c2`;
|
|
|
|
ctoast.timer.style.animationPlayState = 'running';
|
|
|
|
ctoast.timeout = setTimeout(() => {if (continueTimeout) {removeToast(ctoast.toast);}}, ctoast.tl);
|
|
|
|
};
|
|
|
|
window.kade.toasts.shown[window.kade.toasts.total] = {
|
|
|
|
timeout: setTimeout(() => {if (continueTimeout) {removeToast(toast);}}, time * 1000),
|
|
|
|
timer,
|
|
|
|
toast,
|
|
|
|
tl: time * 1000,
|
|
|
|
ts: Date.now(),
|
|
|
|
tt: time * 1000
|
|
|
|
};
|
|
|
|
window.kade.toasts.total++;
|
|
|
|
};
|