diff options
author | polo <ordipolo@gmx.fr> | 2025-07-10 18:11:30 +0200 |
---|---|---|
committer | polo <ordipolo@gmx.fr> | 2025-07-10 18:11:30 +0200 |
commit | 27d88f0b226a0bb8e07f0bea83f47a9bc4bbff32 (patch) | |
tree | 37cc82ce2ff2ce4427c30a9f6a1236cc527b4002 /public/js/main.js | |
parent | 98607cfab90f37b47a9c7607fe0db64581d86696 (diff) | |
download | cms-27d88f0b226a0bb8e07f0bea83f47a9bc4bbff32.zip |
sous-menus déroulables avec écran tactile
Diffstat (limited to 'public/js/main.js')
-rw-r--r-- | public/js/main.js | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/public/js/main.js b/public/js/main.js index 071a1db..6eb0162 100644 --- a/public/js/main.js +++ b/public/js/main.js | |||
@@ -8,6 +8,33 @@ function newPassword(page, id = ''){ | |||
8 | }, 0); | 8 | }, 0); |
9 | } | 9 | } |
10 | 10 | ||
11 | // ouvrir/fermer les sous-menus avec écran tactile | ||
12 | document.addEventListener('DOMContentLoaded', () => { // sinon on ne trouve pas les boutons | ||
13 | document.querySelectorAll('.sub-menu-toggle').forEach(button => { | ||
14 | button.addEventListener('click', e => { | ||
15 | e.preventDefault(); | ||
16 | const li = button.parentElement; // <li class="drop-down"> | ||
17 | |||
18 | // fermer les autres sous-menus de même niveau | ||
19 | // :scope pour pouvoir utiliser > pour restreindre aux frères directs | ||
20 | li.parentElement.querySelectorAll(':scope > .drop-down, :scope > .drop-right').forEach(sibling => { | ||
21 | if(sibling !== li){ | ||
22 | sibling.classList.remove('open'); // fermer sous-menus frères | ||
23 | sibling.querySelectorAll('.drop-right').forEach(desc => { | ||
24 | desc.classList.remove('open'); // fermer sous-menus neveux | ||
25 | }); | ||
26 | } | ||
27 | }); | ||
28 | |||
29 | if(!li.classList.toggle('open')){ // fermer sous-menu | ||
30 | li.querySelectorAll('.drop-right').forEach(desc => { | ||
31 | desc.classList.remove('open'); // fermer sous-menus enfants | ||
32 | }); | ||
33 | } | ||
34 | }); | ||
35 | }); | ||
36 | }); | ||
37 | |||
11 | function copyInClipBoard(link){ | 38 | function copyInClipBoard(link){ |
12 | // une balise <input> avec des attributs | 39 | // une balise <input> avec des attributs |
13 | var element = document.createElement("input"); | 40 | var element = document.createElement("input"); |