diff --git a/static/style.css b/static/style.css index 5c6677f3..2fafe8c5 100644 --- a/static/style.css +++ b/static/style.css @@ -128,6 +128,40 @@ body.objectEditBody > main.content{ flex:1 1 auto; min-height:0; overflow:hidden .fieldsTable td input, .fieldsTable td select{ min-width:120px; width:auto; } .fieldsTableActions{ display:flex; gap:6px; } +/* ---------- Gabarit générique "page classique" (toutes les pages sauf + l'éditeur d'écran/d'élément et l'aperçu jouable) : même principe que + body.objectEditBody ci-dessus, mais à UNE colonne — un en-tête fixe + (titre, formulaire de création...) suivi d'UNE zone qui défile pour son + propre compte (.scrollArea), jamais la page elle-même. Permet d'afficher + beaucoup de lignes (jeux, écrans, objets, variables, données...) sans + perdre le formulaire de création ou le fil d'Ariane hors de l'écran. */ +body.pageBody{ display:flex; flex-direction:column; height:100vh; margin:0; overflow:hidden; } +body.pageBody > .topbar, body.pageBody > .breadcrumbBar{ flex:0 0 auto; } +body.pageBody > main.content{ flex:1 1 auto; min-height:0; overflow:hidden; display:flex; flex-direction:column; } + +.content-page{ width:100%; display:flex; flex-direction:column; min-height:0; flex:1 1 auto; } +.content-page > *{ flex:0 0 auto; } +.content-page > .scrollArea{ flex:1 1 auto; min-height:0; overflow-y:auto; } + +/* Cas d'un formulaire long à champs dynamiques (ex. object_form.html) : le + FORMULAIRE lui-même doit grandir pour occuper l'espace restant, et + seule sa liste de champs (.scrollArea, à l'intérieur) défile — le champ + "nom" et les boutons "+ Ajouter"/"Créer" restent toujours visibles. */ +.content-page > form.formScroll{ flex:1 1 auto; min-height:0; display:flex; flex-direction:column; } +.formScroll > *{ flex:0 0 auto; } +.formScroll > .scrollArea{ flex:1 1 auto; min-height:0; overflow-y:auto; } + +@media (max-width: 820px){ + /* Même logique de repli que .content-objectEdit : sous cette largeur, + mieux vaut une page qui défile normalement qu'une zone interne trop + comprimée. */ + body.pageBody{ height:auto; overflow:visible; } + body.pageBody > main.content{ overflow:visible; } + .content-page > .scrollArea{ overflow:visible; } + .content-page > form.formScroll{ flex:none; } + .formScroll > .scrollArea{ overflow:visible; } +} + /* ---------- Éditeur d'écrans (façon Elementor/Bricks) ---------- */ /* La page de l'éditeur d'écran ne doit jamais défiler elle-même : elle occupe exactement la hauteur de la fenêtre (topbar + zone de travail), et diff --git a/templates/data_form.html b/templates/data_form.html index 74c85b5a..366d2e62 100644 --- a/templates/data_form.html +++ b/templates/data_form.html @@ -1,5 +1,7 @@ {% extends "base.html" %} {% block title %}{{ 'Modifier' if row else 'Ajouter' }} — {{ definition.name }}{% endblock %} +{% block content_class %}content-page{% endblock %} +{% block body_class %}pageBody{% endblock %} {% block breadcrumb %}
Formulaire généré automatiquement à partir de la définition de cet objet — aucun champ n'est codé en dur ici.
+Formulaire généré automatiquement à partir de la définition de cet objet — aucun champ n'est codé en dur ici.
-