Audit complet de mise en forme — Liste à puces/numérotée (4e élément)

Implémente toutes les options manquantes identifiées pour les listes :
typographie complète, style/position/couleur/taille de puce (validés
selon le kind), puce personnalisée en SVG pour les listes à puces,
padding uniforme par élément (nouveau, il n'y en avait aucun), espacement
entre éléments réglable, et tous les attributs de boîte partagés sur la
liste entière. Bordure/fond/padding par élément individuel et sous-listes
imbriquées volontairement différés (portée actée avec l'utilisateur
avant implémentation : transformeraient le stockage des éléments en
objets structurés, chantier bien plus lourd).

Trois ajouts transversaux bénéficiant à plusieurs éléments : sections
"Contenu"/"Conteneur" dans tous les panneaux de propriétés, alignement
vertical du contenu dans son bloc (Titre/Paragraphe/Liste/Image
légendée), et une option pour retirer un thème appliqué ("Aucun modèle"
dans la modale, avec une nouvelle fonction db.remove_document_theme).

Quatre bugs réels trouvés et corrigés en chaîne pendant la validation
avec le thème "Sécurité incendie" : un badge de thème s'affichait
au-dessus du texte au lieu d'à côté ; le correctif a d'abord fait
disparaître les puces/numéros natifs de TOUTES les listes (bug plus
grave que celui corrigé) ; puis un marqueur natif redondant apparaissait
à côté du badge du thème ; puis une règle CSS site-large de spécificité
supérieure empêchait silencieusement ce dernier correctif. Chaque étape
vérifiée par navigateur automatisé sur un support jetable.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
william
2026-09-26 15:13:14 +02:00
co-authored by Claude Sonnet 5
parent 8f879f6321
commit 4db1269348
17 changed files with 1080 additions and 34 deletions
+61 -1
View File
@@ -263,6 +263,16 @@ body.objectEditBody > main.content {
margin-bottom: 10px;
}
/* Sépare visuellement, DANS un même panneau Propriétés, les champs qui
touchent au CONTENU (propre à chaque kind) de ceux qui touchent au
CONTENEUR (position/boîte, partagés — voir forgeDocRenderBoxFieldsHtml)
— retour utilisateur du 26/09/2026 : "sinon c'est pas compréhensible". */
.docPropsSectionLabel {
margin-top: 20px;
padding-top: 14px;
border-top: 1px solid var(--doc-border);
}
.docLibItem {
border: 1px solid var(--doc-border);
border-radius: 10px;
@@ -587,6 +597,16 @@ body.objectEditBody > main.content {
mots normaux au milieu sans raison) ne coupe QUE si le mot ne tient
vraiment pas sur une ligne. */
overflow-wrap: break-word;
/* flex-colonne (retour utilisateur du 26/09/2026 : "je peux augmenter
la hauteur d'un conteneur mais pas l'alignement vertical à
l'intérieur") : sans effet visuel tant que la hauteur du bloc
correspond à son contenu (comportement historique inchangé) —
n'entre en jeu que si une hauteur fixe/minimale (voir box_style.py)
dépasse la hauteur naturelle du texte, via justify-content
(render_content_align, appliqué uniquement si réglé). */
display: flex;
flex-direction: column;
}
.docImage.docImagePlaceholder {
@@ -687,8 +707,48 @@ img.docImage {
color: var(--forge-text);
}
/* item_padding/item_spacing/marker_color/marker_size (retour utilisateur
du 26/09/2026, audit — colonne "Liste à puces/numérotée") : une
valeur inline sur le <ul>/<ol> ne peut pas cibler directement un <li>
enfant ni son ::marker — passe par des PROPRIÉTÉS PERSONNALISÉES CSS,
posées en style inline sur le conteneur (voir _render_list,
document_engine/rendering/render_document_element.py) et héritées
jusqu'ici (les propriétés personnalisées traversent aussi bien les
descendants que leurs pseudo-éléments). Valeur par défaut = comportement
historique inchangé (4px entre éléments, pas de padding) tant qu'aucune
valeur n'est réglée. */
.docList li {
padding: var(--doc-item-padding, 0);
}
/* Bug réel corrigé une première fois le 26/09/2026 (capture à l'appui,
thème "Sécurité incendie") en posant display:flex ICI sur <li> pour
que le badge en ::before d'un thème (voir static/document/themes/
securite-incendie.css) s'affiche À CÔTÉ du texte plutôt qu'AU-DESSUS.
**Corrigé une seconde fois** (retour utilisateur : "quand j'enlève le
thème [...] on voit plus les puces ou les numéros") : display:flex
sur le <li> lui-même REMPLACE entièrement son display:list-item —
ça supprime le marqueur natif (puce/numéro) pour TOUTE liste, avec ou
sans thème, pas seulement pour celles qui ont un ::before (contraire
à ce qu'affirmait le commentaire précédent, qui était FAUX — vérifié
par un test en conditions réelles). La bonne cible pour la mise en
ligne du badge est le ::before LUI-MÊME (inline-block, jamais son
parent) : le <li> garde son display natif, donc son marqueur, et le
badge d'un thème s'aligne quand même à côté du texte qui le suit
immédiatement dans le flux normal. */
.docList li::before {
display: inline-block;
vertical-align: middle;
margin-right: 10px;
}
.docList li + li {
margin-top: 4px;
margin-top: var(--doc-item-spacing, 4px);
}
.docList li::marker {
color: var(--doc-marker-color, inherit);
font-size: var(--doc-marker-size, inherit);
}
.docMinigame {