export function initFlashAutoDismiss(options = {}) { const { selector = '.flash-stack .notice[data-flash-timeout]', defaultTimeout = 0 } = options; const notices = document.querySelectorAll(selector); if (!notices.length) { return; } const postForm = async (form) => { const action = form.getAttribute('action'); if (!action) {return null;} const body = new URLSearchParams(new FormData(form)); return fetch(action, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'fetch' }, body }); }; notices.forEach((notice) => { const timeout = Number.parseInt( notice.dataset.flashTimeout || `${defaultTimeout}`, 10 ); if (!timeout || timeout <= 0) { return; } notice.style.setProperty('--flash-timeout', `${timeout}ms`); notice.classList.add('flash-timed'); window.setTimeout(async () => { const form = notice.querySelector('form'); if (form) { const response = await postForm(form); if (!response || !response.ok) { return; } } notice.remove(); }, timeout); }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', () => initFlashAutoDismiss()); } else { initFlashAutoDismiss(); }