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:
co-authored by
Claude Sonnet 5
parent
8f879f6321
commit
4db1269348
@@ -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) :
|
||||
|
||||
@@ -47,10 +47,14 @@ Attributs posés à la création d'un élément de ce type (voir
|
||||
- **Retour** : un dict d'attributs par défaut, dépendant du `kind` (les
|
||||
"attributs de boîte partagés" mentionnés ci-dessous — `padding/margin/
|
||||
background_color/border_radius/width/max_width/height/min_height/
|
||||
max_height/min_width/box_shadow/opacity/align_self/border` — sont
|
||||
toujours les mêmes, voir `rendering/box_style.py` : tous vides,
|
||||
`False` ou `"none"`/`"stretch"` par défaut = comportement historique
|
||||
inchangé pour le kind qui les gagne) :
|
||||
max_height/min_width/box_shadow/opacity/align_self/content_align/
|
||||
border` — sont toujours les mêmes, voir `rendering/box_style.py` :
|
||||
tous vides, `False` ou `"none"`/`"stretch"`/`"top"` par défaut =
|
||||
comportement historique inchangé pour le kind qui les gagne ;
|
||||
`content_align` — alignement vertical du CONTENU dans son bloc, retour
|
||||
utilisateur du 26/09/2026 — n'est cependant appliqué au rendu QUE par
|
||||
les kinds dont le conteneur est en colonne (texte, liste, figure d'une
|
||||
image légendée), jamais par le Bouton, voir `rendering.md`) :
|
||||
texte (`content/style` + `bold/italic/underline/strikethrough/align/
|
||||
color/font_family/font_size/line_height/letter_spacing/
|
||||
text_transform/text_shadow` + les attributs de boîte partagés),
|
||||
@@ -70,7 +74,18 @@ Attributs posés à la création d'un élément de ce type (voir
|
||||
(typo, jamais gérés par box_style.py) + `svg_markup/icon_position
|
||||
("before"/"after")/icon_size` (icône optionnelle, voir rendering.md)
|
||||
+ les attributs de boîte partagés), liste à
|
||||
puces/numérotée (`items`, une liste de chaînes), badge
|
||||
puces/numérotée (`items`, une liste de chaînes — style sur la LISTE
|
||||
ENTIÈRE uniquement, jamais par élément individuel ni de sous-listes,
|
||||
portée actée avec l'utilisateur le 26/09/2026 : `bold/italic/
|
||||
underline/font_family/font_size/line_height/text_color` (typo) +
|
||||
`list_style_type` (valide selon le kind, voir rendering.md)/
|
||||
`list_style_position`/`marker_color`/`marker_size`/`svg_markup`
|
||||
(puce personnalisée, liste à puces uniquement) + `item_padding`
|
||||
(`"6px"` par défaut, PAS vide — retour utilisateur explicite : "il
|
||||
faut un padding de base par élément de liste car y en a pas
|
||||
aujourd'hui", UNIFORME sur tous les éléments, jamais réglable
|
||||
individuellement) + `item_spacing` + les attributs de boîte
|
||||
partagés), badge
|
||||
(`content/svg_markup/width/border_radius/bold/uppercase` — tous vides
|
||||
ou `False` par défaut = comportement historique inchangé, voir
|
||||
rendering.md), carte (`label/title/description`, contenu pur sans
|
||||
|
||||
Reference in New Issue
Block a user