// Utilise le helper domReady exposé globalement par core/dom-ready.js (function() { var domReady = (window.MG && window.MG.domReady) || window.__MG_domReady || function(cb){ if (document.readyState==='loading') document.addEventListener('DOMContentLoaded', cb); else cb(); }; domReady(function() { const loadBtn = document.getElementById('loadBtn'); if (loadBtn) { loadBtn.addEventListener('click', function(e) { e.preventDefault(); window.location.href = '/projects'; }); } // Initialiser les dropdowns Bootstrap si disponible try { if (window.bootstrap && window.bootstrap.Dropdown) { const toggles = document.querySelectorAll('[data-bs-toggle="dropdown"]'); toggles.forEach(function(toggle) { if (!bootstrap.Dropdown.getInstance(toggle)) { new bootstrap.Dropdown(toggle); } }); } } catch (err) { console.warn('Bootstrap dropdown init failed:', err); } // Fallback et ajustements (copié depuis header-actions.js) (function() { const toggles = Array.from(document.querySelectorAll('[data-bs-toggle="dropdown"]')); if (!toggles.length) return; function closeAll() { document.querySelectorAll('.dropdown-menu.show').forEach(function(menu) { menu.classList.remove('show'); }); toggles.forEach(function(t) { t.setAttribute('aria-expanded', 'false'); }); } toggles.forEach(function(toggle) { toggle.addEventListener('click', function(e) { try { if (window.bootstrap && window.bootstrap.Dropdown && bootstrap.Dropdown.getInstance(toggle)) { return; } } catch (_) {} e.preventDefault(); e.stopPropagation(); const parent = toggle.closest('.dropdown') || toggle.parentElement; const menu = parent ? parent.querySelector('.dropdown-menu') : null; if (!menu) return; const isOpen = menu.classList.contains('show'); closeAll(); if (!isOpen) { menu.classList.add('show'); toggle.setAttribute('aria-expanded', 'true'); adjustDropdownMenu(menu, toggle); } }); }); document.addEventListener('click', function() { closeAll(); }); })(); function adjustDropdownMenu(menu, toggle) { if (!menu) return; menu.style.maxHeight = ''; menu.classList.remove('dropdown-menu-end'); const rect = menu.getBoundingClientRect(); const vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0); const vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0); if (rect.right > vw - 8) { menu.classList.add('dropdown-menu-end'); } const rect2 = menu.getBoundingClientRect(); if (rect2.bottom > vh - 8) { const available = vh - 16 - rect2.top; if (available > 100) { menu.style.maxHeight = available + 'px'; menu.style.overflowY = 'auto'; } } } }); })();