Corrige la position d'ouverture de la modale et le saut des champs Crawl4AI

This commit is contained in:
nathaninline committed 2026-08-05 21:36:51 +02:00
1 parent d15d40eb7c
commit a63a66bef8
3 files changed
+24 -10

No files matched your search

+12 -5
View File
@@ -1103,7 +1103,10 @@ button:hover{border-color:var(--dim);color:var(--text)}
<option value="crawl4ai">Crawl4AI</option>
</select>
</div>
<div id="crawl-fields">
<!-- Masqués AU DÉPART : le moteur par défaut est l'intégré, et ces champs
ne concernent que Crawl4AI. Affichés d'emblée puis repliés par le
chargement de l'état, ils faisaient sauter la section sous les yeux. -->
<div id="crawl-fields" style="display:none">
<div class="row">
<input id="crawl-url" type="text" placeholder="http://localhost:11235" class="sctl" onchange="saveCrawlUrl()">
</div>
@@ -2439,11 +2442,14 @@ async function openItem(kind, key){
rawBody.style.display = '';
}
document.getElementById('modal').classList.add('loading');
// Le corps de la modale est un conteneur défilant RÉUTILISÉ d'une ouverture à
// l'autre : sans cette remise à zéro, ouvrir un preset après en avoir fait
// défiler un autre rouvrait la fiche au milieu.
const peBody=document.querySelector('#modal .pe-body'); if(peBody) peBody.scrollTop=0;
showModal('modal');
// ⚠️ APRÈS showModal, jamais avant : le corps de la modale est un conteneur
// défilant RÉUTILISÉ d'une ouverture à l'autre, et écrire scrollTop sur un
// élément en display:none ne fait RIEN (il n'a pas de boîte de rendu) — le
// navigateur restaurait donc l'ancienne position à l'affichage, et on rouvrait
// la fiche au milieu. On le refait après le remplissage, la hauteur ayant changé.
const topPeBody=()=>{ const b=document.querySelector('#modal .pe-body'); if(b) b.scrollTop=0; };
topPeBody();
// --- Remplissage, une fois la modale à l'écran -----------------------------
const r = await jfetch(K.getUrl + '?' + K.param + '=' + encodeURIComponent(key||''));
const d = await r.json();
@@ -2461,6 +2467,7 @@ async function openItem(kind, key){
if(seq !== openSeq) return;
}
document.getElementById('modal').classList.remove('loading');
topPeBody();
}
// Pretty-print bytes — handy for the dropdown options.
+4 -1
View File
@@ -115,7 +115,10 @@
<option value="crawl4ai">Crawl4AI</option>
</select>
</div>
<div id="crawl-fields">
<!-- Masqués AU DÉPART : le moteur par défaut est l'intégré, et ces champs
ne concernent que Crawl4AI. Affichés d'emblée puis repliés par le
chargement de l'état, ils faisaient sauter la section sous les yeux. -->
<div id="crawl-fields" style="display:none">
<div class="row">
<input id="crawl-url" type="text" placeholder="http://localhost:11235" class="sctl" onchange="saveCrawlUrl()">
</div>
+8 -4
View File
@@ -103,11 +103,14 @@ async function openItem(kind, key){
rawBody.style.display = '';
}
document.getElementById('modal').classList.add('loading');
// Le corps de la modale est un conteneur défilant RÉUTILISÉ d'une ouverture à
// l'autre : sans cette remise à zéro, ouvrir un preset après en avoir fait
// défiler un autre rouvrait la fiche au milieu.
const peBody=document.querySelector('#modal .pe-body'); if(peBody) peBody.scrollTop=0;
showModal('modal');
// ⚠️ APRÈS showModal, jamais avant : le corps de la modale est un conteneur
// défilant RÉUTILISÉ d'une ouverture à l'autre, et écrire scrollTop sur un
// élément en display:none ne fait RIEN (il n'a pas de boîte de rendu) — le
// navigateur restaurait donc l'ancienne position à l'affichage, et on rouvrait
// la fiche au milieu. On le refait après le remplissage, la hauteur ayant changé.
const topPeBody=()=>{ const b=document.querySelector('#modal .pe-body'); if(b) b.scrollTop=0; };
topPeBody();
// --- Remplissage, une fois la modale à l'écran -----------------------------
const r = await jfetch(K.getUrl + '?' + K.param + '=' + encodeURIComponent(key||''));
const d = await r.json();
@@ -125,6 +128,7 @@ async function openItem(kind, key){
if(seq !== openSeq) return;
}
document.getElementById('modal').classList.remove('loading');
topPeBody();
}
// Pretty-print bytes — handy for the dropdown options.