| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- // 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';
- }
- }
- }
- });
- })();
|