@@ -169,10 +169,10 @@ var GetFeatureInfoDOM = {
169169 * Create accordeon
170170 * see evenement !
171171 * @param { String } layername nom du layer
172- * @param { String } content contenu du gfi
172+ * @param { HTMLElement } scrollableContainer conteneur scrollable de l'accordeon
173173 * @returns {HTMLElement } DOM element
174174 */
175- _createGetFeatureInfoLayerAccordion : function ( layername ) {
175+ _createGetFeatureInfoLayerAccordion : function ( layername , scrollableContainer ) {
176176 var dsfrTemplate = this . stringToHTML ( `
177177 <section class="fr-accordion">
178178 <h3 class="fr-accordion__title">
@@ -194,14 +194,19 @@ var GetFeatureInfoDOM = {
194194 if ( e . currentTarget . ariaExpanded === "true" ) {
195195 collapse . classList . add ( "fr-collapse--expanded" ) ;
196196 collapse . classList . remove ( "GPelementHidden" ) ;
197- // on centre la vue dans le dialog sur le bouton cliqué
198- requestAnimationFrame ( ( ) => {
199- button . scrollIntoView ( {
200- behavior : "smooth" ,
201- block : "start" ,
202- inline : "nearest"
203- } ) ;
204- } ) ;
197+ // on déplace la section dans le panel
198+ setTimeout ( ( ) => {
199+ const elementRect = button . parentNode . parentNode . getBoundingClientRect ( ) ;
200+ const containerRect = scrollableContainer . getBoundingClientRect ( ) ;
201+
202+ // si le bas n'est pas visible, on aligne le haut de la section
203+ if ( elementRect . bottom > containerRect . bottom ) {
204+ scrollableContainer . scrollTo ( {
205+ top : scrollableContainer . scrollTop - ( containerRect . top - elementRect . top ) ,
206+ behavior : "smooth"
207+ } ) ;
208+ }
209+ } , 50 ) ; // ajoute un délai
205210 } else {
206211 collapse . classList . remove ( "fr-collapse--expanded" ) ;
207212 collapse . classList . add ( "GPelementHidden" ) ;
0 commit comments