diff --git a/android-client/web/app.html b/android-client/web/app.html index 4e7d951..ef14250 100644 --- a/android-client/web/app.html +++ b/android-client/web/app.html @@ -76,6 +76,15 @@ -webkit-overflow-scrolling: touch; overscroll-behavior: contain; padding: 0 12px calc(16px + var(--kb, 0px)); } + /* DE LA PLACE SOUS LE CONTENU PENDANT QU'ON TAPE, et rien a mesurer. + Le clavier recouvre la page sans que rien ne le dise : ni la fenetre, qui + reste en plein ecran, ni visualViewport, qui rapporte la meme hauteur + clavier leve. Le panneau n'avait donc aucun debordement et ne pouvait pas + defiler - le bas du formulaire restait sous le clavier, definitivement. + Reserver 60 % de hauteur le temps de la saisie lui en donne, sans + dependre d'une mesure qui n'arrive jamais. Elle disparait au premier + champ quitte, donc rien ne flotte quand on ne tape pas. */ + body.typing .scroll { padding-bottom: 60vh; } /* --- barre de recherche ------------------------------------------------ */ .top { padding: 10px 12px 6px; display: flex; gap: 8px; } @@ -723,8 +732,22 @@ function reportBox(why) { + ' | box client ' + box.clientHeight + ' scroll ' + box.scrollHeight + ' | body=' + sc); } -document.addEventListener('focusin', function () { - setTimeout(function () { reportBox('focus'); }, 400); +document.addEventListener('focusin', function (ev) { + var el = ev.target; + if (!el.classList || !el.classList.contains('field-in')) return; + document.body.classList.add('typing'); + // Le champ remonte EN HAUT du panneau : la ou le clavier ne peut pas + // l'atteindre, quelle que soit sa hauteur. Differe d'un tour, sinon la place + // reservee ci-dessus n'est pas encore prise en compte et il n'y a nulle part + // ou remonter. + setTimeout(function () { + var row = el.closest ? el.closest('.field, .in-wrap') : null; + if (row && row.scrollIntoView) row.scrollIntoView({ block: 'start' }); + reportBox('focus'); + }, 250); +}); +document.addEventListener('focusout', function () { + document.body.classList.remove('typing'); }); // AUCUN CHAMP D'UNE VUE AU REPOS NE GARDE LE FOCUS.