1/* Menu mobile plein écran (référence Apple), partagé homepage + pages 2 publiques du portail. Ouverture après dé-masquage (une frame) pour la 3 cascade ; Ãchap referme ; le focus ne revient au bouton qu'au clavier. 4 Les éléments qui ouvrent ou referment le menu portent [data-menu-toggle] 5 (le bouton hamburger et les liens du menu) : leurs clics sont pris par 6 délégation, aucun attribut onclick n'est nécessaire. */ 7window.toggleMenu = function (rendreFocus) { 8 var menu = document.getElementById('menu-mobile'); 9 var burger = document.querySelector('.burger'); 10 if (!menu || !burger) { return; } 11 var ouvert = document.documentElement.classList.contains('menu-ouvert'); 12 if (ouvert) { 13 document.documentElement.classList.remove('menu-ouvert'); 14 menu.hidden = true; 15 burger.setAttribute('aria-expanded', 'false'); 16 burger.setAttribute('aria-label', 'Ouvrir le menu'); 17 if (rendreFocus) { burger.focus(); } 18 } else { 19 menu.hidden = false; 20 requestAnimationFrame(function () { 21 requestAnimationFrame(function () { 22 document.documentElement.classList.add('menu-ouvert'); 23 }); 24 }); 25 burger.setAttribute('aria-expanded', 'true'); 26 burger.setAttribute('aria-label', 'Fermer le menu'); 27 } 28}; 29document.addEventListener('click', function (e) { 30 var el = e.target && e.target.closest ? e.target.closest('[data-menu-toggle]') : null; 31 if (el) { window.toggleMenu(); } 32}); 33document.addEventListener('keydown', function (e) { 34 if ('Escape' === e.key && document.documentElement.classList.contains('menu-ouvert')) { toggleMenu(true); } 35});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.