You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.8 KiB
JavaScript
71 lines
1.8 KiB
JavaScript
const toastContainer = document.createElement('section');
|
|
let toastCounter = 0;
|
|
|
|
document.body.onload = function(){
|
|
addToastContainer();
|
|
}
|
|
|
|
function addToastContainer(){
|
|
toastContainer.classList.add('toast-container');
|
|
|
|
// Add the toast container before the first child of body
|
|
document.firstElementChild.insertBefore(toastContainer, document.body);
|
|
}
|
|
|
|
function randomToast(){
|
|
const toasts = ['You\'ve done an error', 'Yea, it\'s broken, try later', 'Yeeheehee, I am the Grinch witch', 'Sucessfully added', 'Thank you!'];
|
|
newToast(toasts[Math.floor(Math.random() * (toasts.length - 1))]);
|
|
}
|
|
|
|
function newToast(innerText){
|
|
let toast = createToast(innerText);
|
|
addToast(toast);
|
|
}
|
|
|
|
async function addToast(toast){
|
|
toastContainer.appendChild(toast);
|
|
countToasts();
|
|
|
|
await new Promise(r => setTimeout(r, 2400));
|
|
|
|
// May have been removed by user
|
|
if(document.getElementById(toast.id)){
|
|
toastContainer.removeChild(toast);
|
|
}
|
|
}
|
|
|
|
function createToast(innerText){
|
|
// Output so that screenreaders announce it
|
|
let toast = document.createElement('output');
|
|
let toastInner = document.createElement('div');
|
|
toast.appendChild(toastInner);
|
|
// For screenreaders again, output may not exist
|
|
toast.setAttribute('role','status');
|
|
|
|
// Set an Id, so that it can be user removed, etc.
|
|
let toastId = 'toast_'+toastCounter;
|
|
toastCounter++;
|
|
|
|
toastInner.innerText = innerText;
|
|
toastInner.classList.add('toast__inner');
|
|
toast.classList.add('toast');
|
|
toast.setAttribute('id', toastId);
|
|
|
|
return toast;
|
|
}
|
|
|
|
function countToasts(){
|
|
let toasts = document.getElementsByClassName('toast');
|
|
let toastCounter2 = 0;
|
|
for (const toast of toasts) {
|
|
toastCounter2++;
|
|
if(toastCounter2 > 5){
|
|
let rToast = document.getElementById('toast_'+(toastCounter-5));
|
|
if(rToast){
|
|
toastContainer.removeChild(rToast);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|