(() => { const overlays = [...document.querySelectorAll('[data-legal-overlay]')]; let lastTrigger = null; const closeAll = () => { overlays.forEach((overlay) => { overlay.classList.remove('is-open'); overlay.setAttribute('aria-hidden', 'true'); }); document.body.classList.remove('legal-open'); if (lastTrigger instanceof HTMLElement) { lastTrigger.focus(); } lastTrigger = null; }; const openOverlay = (key, trigger = null) => { const overlay = document.querySelector(`[data-legal-overlay="${CSS.escape(key)}"]`); if (!overlay) return false; closeAll(); lastTrigger = trigger instanceof HTMLElement ? trigger : null; overlay.classList.add('is-open'); overlay.setAttribute('aria-hidden', 'false'); document.body.classList.add('legal-open'); const closeButton = overlay.querySelector('[data-legal-close]'); if (closeButton instanceof HTMLElement) { window.setTimeout(() => closeButton.focus(), 0); } return true; }; document.addEventListener('click', (event) => { const opener = event.target.closest('[data-legal-open]'); if (opener) { const key = opener.getAttribute('data-legal-open'); if (key && openOverlay(key, opener)) { event.preventDefault(); } return; } if (event.target.closest('[data-legal-close]')) { closeAll(); return; } const overlay = event.target.closest('[data-legal-overlay]'); if (overlay && event.target === overlay) { closeAll(); } }); document.addEventListener('keydown', (event) => { if (event.key === 'Escape' && document.body.classList.contains('legal-open')) { closeAll(); } }); window.GoVipeLegal = { open: openOverlay, close: closeAll }; })();