File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change 9797 }
9898 }
9999
100+ /**
101+ * Gère la position du popover lors du défilement de la page.
102+ * Recalcule et ajuste automatiquement la position verticale du popover
103+ * pour qu'il reste visible dans la fenêtre d'affichage.
104+ * Masque également le tooltip si celui-ci est affiché.
105+ *
106+ * @returns {void}
107+ */
108+ function handlePopoverScroll() {
109+ if (! popoverShown || ! popoverElement || ! triggerButton ) return ;
110+
111+ tooltipShown = false ;
112+
113+ const GAP = 4 ;
114+
115+ // Récupération des nouvelles dimensions après scroll
116+ const buttonRect = triggerButton .getBoundingClientRect ();
117+ const popoverRect = popoverElement .getBoundingClientRect ();
118+ const viewportHeight = window .innerHeight ;
119+ const VERTICAL_MARGIN = 8 ;
120+
121+ // Recalcul de la position verticale
122+ let newTop = buttonRect .top - popoverRect .height - GAP ;
123+
124+ // Ajustement vertical si nécessaire
125+ if (newTop < VERTICAL_MARGIN ) {
126+ newTop = buttonRect .bottom + GAP ;
127+
128+ if (newTop + popoverRect .height > viewportHeight - VERTICAL_MARGIN ) {
129+ newTop = Math .max (VERTICAL_MARGIN , (viewportHeight - popoverRect .height ) / 2 );
130+ }
131+ }
132+
133+ // Application de la nouvelle position
134+ popoverElement .style .top = ` ${newTop }px ` ;
135+ }
136+
100137 /**
101138 * Gère le clic sur un bouton de réaction.
102139 *
187224 }
188225 </script >
189226
227+ <svelte:window onscroll ={handlePopoverScroll } />
228+
190229{#snippet boutonReaction ({ id , emoji , compteur = null , actif = false })}
191230 <button
192231 {id }
You can’t perform that action at this time.
0 commit comments