import {genUUID} from "../util/genID"; import {Constants} from "../constants"; export const initMessage = () => { const messageElement = document.getElementById("message"); messageElement.innerHTML = `
`; messageElement.addEventListener("click", (event) => { let target = event.target as HTMLElement; while (target && !target.isEqualNode(messageElement)) { if (target.classList.contains("b3-snackbar__close")) { hideMessage(target.parentElement.getAttribute("data-id")); event.preventDefault(); break; } else if (target.isSameNode(messageElement.lastElementChild)) { target.parentElement.classList.remove("b3-snackbars--show"); setTimeout(() => { target.parentElement.firstElementChild.innerHTML = ""; }, Constants.TIMEOUT_INPUT); event.preventDefault(); break; } target = target.parentElement; } }); }; export const showMessage = (message: string, timeout = 6000, type = "info", messageId?: string) => { const id = messageId || genUUID(); let messageHTML = `"); setTimeout(() => { messagesElement.querySelectorAll(".b3-snackbar--hide").forEach(item => { item.classList.remove("b3-snackbar--hide"); }); }); if (messagesElement.firstElementChild.nextElementSibling && messagesElement.firstElementChild.nextElementSibling.innerHTML === messagesElement.firstElementChild.innerHTML) { messagesElement.firstElementChild.nextElementSibling.remove(); } messagesElement.scrollTo({ top: 0, behavior: "smooth" }); return id; }; export const hideMessage = (id: string) => { const messagesElement = document.getElementById("message").firstElementChild; const messageElement = messagesElement.querySelector(`[data-id="${id}"]`); if (messageElement) { messageElement.classList.add("b3-snackbar--hide"); setTimeout(() => { messageElement.remove(); }, Constants.TIMEOUT_INPUT); if (messagesElement.childElementCount < 2) { messagesElement.parentElement.classList.remove("b3-snackbars--show"); } } };