// Function to show the custom alert with a message and type export function showAlert(message, type = 'info') { // Default to info or error? const alertBox = document.getElementById('custom-alert'); if (!alertBox) return; // Guard clause const alertMessage = document.getElementById('alert-message'); const closeButton = document.getElementById('close-alert'); if(alertMessage) alertMessage.textContent = message; alertBox.className = 'custom-alert'; // Reset classes first alertBox.classList.add(type); // Add type class ('success', 'error', 'info') alertBox.style.display = 'block'; // Ensure listener is only added once or managed properly // A simple approach: remove previous before adding new const newCloseButton = closeButton.cloneNode(true); // Clone to remove old listeners closeButton.parentNode.replaceChild(newCloseButton, closeButton); newCloseButton.addEventListener('click', () => { alertBox.style.display = 'none'; }, { once: true }); // Automatically remove listener after one click } // Function to show a confirmation dialog export function showConfirm(message, type = 'error') { return new Promise((resolve) => { const confirmBox = document.getElementById('custom-alert-confirm'); if (!confirmBox) { resolve(false); return; } // Guard clause const confirmMessage = document.getElementById('alert-message-confirm'); const closeButton = document.getElementById('close-alert-confirm'); const confirmButton = document.getElementById('confirm-alert-confirm'); if(confirmMessage) confirmMessage.textContent = message; confirmBox.className = 'custom-alert-confirm'; // Reset classes confirmBox.classList.add(type); confirmBox.style.display = 'block'; // Use cloning to ensure listeners are fresh const newConfirmButton = confirmButton.cloneNode(true); confirmButton.parentNode.replaceChild(newConfirmButton, confirmButton); newConfirmButton.addEventListener('click', () => { confirmBox.style.display = 'none'; resolve(true); }, { once: true }); const newCloseButton = closeButton.cloneNode(true); closeButton.parentNode.replaceChild(newCloseButton, closeButton); newCloseButton.addEventListener('click', () => { confirmBox.style.display = 'none'; resolve(false); }, { once: true }); }); } // Basic input sanitizer (replace HTML tags) export function sanitizeInput(str) { if (!str) return ''; return str.replace(//g, ">"); }