This commit is contained in:
KONE SOREL 2025-12-22 09:43:39 +00:00
parent a87e165f97
commit a59c0183b3
2 changed files with 1014 additions and 219 deletions

File diff suppressed because it is too large Load Diff

View File

@ -555,14 +555,64 @@ foreach ($menus as $key0 => $menuParent) {
<!-- Service Worker Registration -->
<script src="/Js/sw-register.js?ver=2025.12.22.00"></script>
<!-- AJOUTEZ APRÈS LES INCLUDES DE SCRIPTS -->
<script>
// Test du système de menus
// ATTENTION : Ce script doit venir APRÈS l'inclusion de ux-manager.js
window.appNavigation = null; // Initialisation
document.addEventListener('DOMContentLoaded', function() {
// Attendre que UXManager soit initialisé
setTimeout(function() {
if (window.appUX && window.appUX.navigation) {
window.appNavigation = window.appUX.navigation;
console.log('[App] Navigation disponible via window.appNavigation');
} else {
console.error('[App] NavigationManager non disponible');
}
}, 500);
});
</script>
<script>
// Test du système de menus - VERSION ROBUSTE
document.addEventListener('DOMContentLoaded', function() {
// Attendre un peu que tout soit chargé
setTimeout(function() {
testMenuSystem();
}, 300);
});
function testMenuSystem() {
console.group('=== TEST SYSTÈME DE MENUS ===');
// Méthode 1: Via appUX
if (window.appUX && window.appUX.navigation) {
console.log('✓ NavigationManager disponible via appUX');
executeMenuTest(window.appUX.navigation);
}
// Méthode 2: Via appNavigation global
else if (window.appNavigation && typeof window.appNavigation.closeAllExceptActive === 'function') {
console.log('✓ NavigationManager disponible via appNavigation');
executeMenuTest(window.appNavigation);
}
// Méthode 3: Via uxManager
else if (window.uxManager) {
console.log('✓ uxManager disponible');
executeMenuTest(window.uxManager);
}
else {
console.error('✗ Aucun gestionnaire de navigation disponible');
manualMenuFix();
}
console.groupEnd();
}
function executeMenuTest(navManager) {
// Vérifier l'état initial
const activeMenuId = window.appConfig?.activeParentId !== null ?
`submenu${window.appConfig.activeParentId}` : null;
const activeParentId = window.appConfig?.activeParentId;
const activeMenuId = activeParentId !== null && activeParentId !== '' ?
`submenu${activeParentId}` : null;
console.log('Menu actif configuré:', activeMenuId);
console.log('Page active:', window.appConfig?.activeLink);
@ -580,111 +630,89 @@ foreach ($menus as $key0 => $menuParent) {
console.warn('⚠️ Plusieurs menus sont ouverts!');
console.warn('Seul le menu', activeMenuId, 'devrait être ouvert.');
// Corriger automatiquement
if (activeMenuId && window.appNavigation) {
console.log('Correction automatique en cours...');
window.appNavigation.closeAllExceptActive();
}
} else if (openMenus.length === 1 && openMenus[0].id === activeMenuId) {
console.log('✅ Parfait! Seul le menu actif est ouvert.');
} else if (openMenus.length === 0 && !activeMenuId) {
console.log('✅ Aucun menu ouvert - Comportement attendu.');
}
// Exposer des fonctions de test
window.menuTest = {
openAllMenus: function() {
document.querySelectorAll('.nav-submenu').forEach(menu => {
menu.classList.add('show');
const link = document.querySelector(`[href="#${menu.id}"]`);
if (link) link.setAttribute('aria-expanded', 'true');
});
console.log('Tous les menus ouverts (test)');
},
closeAllMenus: function() {
document.querySelectorAll('.nav-submenu').forEach(menu => {
menu.classList.remove('show');
const link = document.querySelector(`[href="#${menu.id}"]`);
if (link) link.setAttribute('aria-expanded', 'false');
});
console.log('Tous les menus fermés (test)');
},
showMenuState: function() {
const menus = document.querySelectorAll('.nav-submenu');
console.log('État des menus:');
menus.forEach(menu => {
const isOpen = menu.classList.contains('show');
const link = document.querySelector(`[href="#${menu.id}"]`);
const ariaExpanded = link ? link.getAttribute('aria-expanded') : 'N/A';
console.log(` ${menu.id}: ${isOpen ? 'OUVERT' : 'FERMÉ'} (aria-expanded: ${ariaExpanded})`);
});
}
};
console.groupEnd();
// Ajouter un indicateur visuel de débogage
if (window.appConfig?.debugMode) {
const debugIndicator = document.createElement('div');
debugIndicator.style.cssText = `
position: fixed;
bottom: 10px;
left: 10px;
background: rgba(0,0,0,0.8);
color: #0f0;
padding: 5px 10px;
border-radius: 4px;
font-family: monospace;
font-size: 12px;
z-index: 9999;
pointer-events: none;
`;
debugIndicator.textContent = `Menu: ${activeMenuId || 'Aucun'}`;
document.body.appendChild(debugIndicator);
}
});
// Fonction globale pour tester depuis la console
function testMenuSystem() {
console.log('=== TEST MANUEL DU SYSTÈME DE MENUS ===');
if (!window.appNavigation) {
console.error('appNavigation non disponible');
return;
}
// Test 1: Fermer tous les menus
console.log('Test 1: Fermeture de tous les menus...');
window.appNavigation.closeAllMenus();
// Test 2: Ouvrir le menu actif
setTimeout(() => {
const activeId = window.appConfig?.activeParentId !== null ?
`submenu${window.appConfig.activeParentId}` : null;
if (activeId) {
console.log('Test 2: Ouverture du menu actif:', activeId);
window.appNavigation.openMenuById(activeId);
// Utiliser la méthode disponible
if (navManager.closeAllExceptActive) {
console.log('Correction via closeAllExceptActive...');
navManager.closeAllExceptActive();
} else if (navManager.closeAllMenus) {
console.log('Correction via closeAllMenus...');
navManager.closeAllMenus();
}
// Test 3: Vérification finale
// Vérifier le résultat
setTimeout(() => {
const openMenus = document.querySelectorAll('.nav-submenu.show').length;
console.log('Test 3: Résultat -', openMenus, 'menu(s) ouvert(s)');
const openAfter = document.querySelectorAll('.nav-submenu.show').length;
console.log('Menus ouverts après correction:', openAfter);
if (openMenus === 1 || (openMenus === 0 && !activeId)) {
console.log('✅ Système de menus fonctionne correctement!');
if (openAfter <= 1) {
console.log('✅ Correction réussie!');
} else {
console.warn('⚠️ Problème détecté avec le système de menus');
console.warn('⚠️ Correction incomplète, forcer la fermeture...');
manualMenuFix();
}
}, 500);
}, 500);
}, 200);
} else {
console.log('✅ État correct des menus');
}
}
// Exposer la fonction de test
function manualMenuFix() {
console.log('🔧 Application du correctif manuel...');
const activeParentId = window.appConfig?.activeParentId;
const activeMenuId = activeParentId !== null && activeParentId !== '' ?
`submenu${activeParentId}` : null;
// 1. Fermer TOUS les menus
document.querySelectorAll('.nav-submenu').forEach(menu => {
menu.classList.remove('show');
menu.style.display = 'none';
const link = document.querySelector(`[href="#${menu.id}"]`);
if (link) {
link.setAttribute('aria-expanded', 'false');
link.classList.remove('active');
const arrow = link.querySelector('.nav-arrow');
if (arrow) arrow.style.transform = 'rotate(0deg)';
}
});
// 2. Ouvrir SEULEMENT le menu actif
if (activeMenuId) {
setTimeout(() => {
const menu = document.getElementById(activeMenuId);
const link = document.querySelector(`[href="#${activeMenuId}"]`);
if (menu && link) {
menu.classList.add('show');
menu.style.display = 'block';
link.setAttribute('aria-expanded', 'true');
link.classList.add('active');
const arrow = link.querySelector('.nav-arrow');
if (arrow) arrow.style.transform = 'rotate(90deg)';
console.log('✅ Menu actif ouvert:', activeMenuId);
}
}, 100);
}
// 3. Vérification finale
setTimeout(() => {
const openCount = document.querySelectorAll('.nav-submenu.show').length;
console.log('📊 Résultat final:', openCount, 'menu(s) ouvert(s)');
if (openCount === 1 || (openCount === 0 && !activeMenuId)) {
console.log('✅ Système de menus corrigé avec succès!');
} else {
console.error('❌ Échec de la correction manuelle');
}
}, 300);
}
// Exposer la fonction de test globalement
window.testMenuSystem = testMenuSystem;
window.manualMenuFix = manualMenuFix;
</script>
</body>
</html>