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
@@ -35,8 +35,11 @@ BOX_DEFAULTS = {
|
||||
"min_width": "",
|
||||
"box_shadow": "",
|
||||
"opacity": "",
|
||||
"content_align": "top",
|
||||
}
|
||||
|
||||
_CONTENT_ALIGN_TO_JUSTIFY_CONTENT = {"center": "center", "bottom": "flex-end"}
|
||||
|
||||
|
||||
# (clé d'attribut, propriété CSS) — chaque paire suit exactement le même
|
||||
# patron (lire/nettoyer/ajouter si non vide) ; une simple table de
|
||||
@@ -104,3 +107,27 @@ def render_box_style(a: dict[str, Any]) -> str:
|
||||
parts.append(f"align-self:{html_lib.escape(align_self)};")
|
||||
|
||||
return " ".join(parts)
|
||||
|
||||
|
||||
def render_content_align(a: dict[str, Any]) -> str:
|
||||
"""Alignement vertical du CONTENU à l'intérieur de son propre bloc —
|
||||
utile UNIQUEMENT une fois qu'une hauteur fixe/minimale dépasse la
|
||||
hauteur naturelle du contenu (retour utilisateur du 26/09/2026 : "je
|
||||
peux augmenter la hauteur d'un conteneur mais pas l'alignement
|
||||
vertical à l'intérieur"). Jamais fusionné dans `render_box_style` :
|
||||
contrairement à `align_self` (position du BLOC dans SON parent, la
|
||||
même logique convient à tout consommateur), l'alignement du CONTENU
|
||||
dépend de l'axe interne du conteneur — correct en `justify-content`
|
||||
pour un conteneur en colonne (texte, liste), mais un bouton
|
||||
(rangée : icône + texte) gère déjà cet axe autrement (`align-items`,
|
||||
voir static/document/document-editor.css, .docButton) : chaque
|
||||
renderer qui veut ce comportement l'appelle donc explicitement lui-
|
||||
même (voir _render_text/_render_list/_render_image), jamais
|
||||
automatiquement pour tous les kinds.
|
||||
- **Retour** : `""` si `content_align` est absent ou `"top"` (défaut,
|
||||
comportement historique inchangé), sinon la déclaration
|
||||
`justify-content:...;`.
|
||||
- **Exceptions** : aucune."""
|
||||
content_align = str(a.get("content_align", "top"))
|
||||
justify_content = _CONTENT_ALIGN_TO_JUSTIFY_CONTENT.get(content_align)
|
||||
return f"justify-content:{justify_content};" if justify_content else ""
|
||||
|
||||
Reference in New Issue
Block a user