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
+37 -1
View File
@@ -165,7 +165,43 @@ def element_default_attributes(kind: str) -> dict[str, Any]:
# "ordonnée ou non" se lit directement sur le kind au moment du
# rendu (voir render_document_element._render_list), jamais un
# attribut "ordered" redondant à tenir synchronisé avec le kind.
return {"items": ["Premier élément", "Deuxième élément"]}
#
# Audit du 26/09/2026 (réglages manquants — colonne "Liste à
# puces/numérotée") : portée actée avec l'utilisateur = style de
# la LISTE ENTIÈRE (typo/puces/boîte/bordure/fond), jamais un
# style par élément individuel ni de sous-listes (chantier bien
# plus lourd, transformerait `items` d'une liste de chaînes en
# objets structurés — différé à une demande séparée). Seule
# exception : `item_padding`, un padding UNIFORME appliqué à
# CHAQUE élément (retour utilisateur explicite : "il faut un
# padding de base par élément de liste car y en a pas
# aujourd'hui") — une valeur PARTAGÉE par tous les éléments,
# jamais réglable individuellement, voir _render_list.
# list_style_type : valide uniquement parmi les valeurs propres
# au kind (disc/circle/square/none pour puces,
# decimal/.../none pour numérotée) — vérifié au rendu, jamais ici.
# svg_markup (puce personnalisée) : ignoré au rendu pour
# liste_numerotee (une puce imagée n'a pas de sens sur une liste
# numérotée, voir _render_list).
return {
"items": ["Premier élément", "Deuxième élément"],
"bold": False,
"italic": False,
"underline": False,
"font_family": "",
"font_size": "",
"line_height": "",
"text_color": "",
"list_style_type": "",
"list_style_position": "outside",
"marker_color": "",
"marker_size": "",
"svg_markup": "",
"item_padding": "6px",
"item_spacing": "",
**BOX_DEFAULTS,
"border": default_border(),
}
if kind == "badge":
# Même esprit que titre/paragraphe (bold/align/color... déjà des
# attributs par élément, pas des choix figés par le moteur) :