Audit complet de mise en forme — Bouton (3e élément du tableau)
Implémente toutes les options manquantes identifiées pour l'élément Bouton : typographie (gras/italique/transformation/police/taille/ espacement des lettres/couleur), icône SVG optionnelle avec position (avant/après le texte) et taille réglables — au-delà de l'Étiquette, qui n'a qu'une icône fixe —, tous les attributs de boîte partagés déjà créés pour Titre/Paragraphe/Image, et un effet visuel universel au survol/clic. Deux ajouts transversaux demandés pendant le test : un réglage "les 4 côtés de la bordure à la fois" dans le module de boîte partagé (bénéficie automatiquement à tous les éléments qui l'utilisent), et le glisser-déposer d'un élément du canevas vers une autre page via le panneau Pages (le mécanisme serveur existait déjà pour la pagination automatique, seule l'interaction manuelle manquait). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
9ad50c58b8
commit
8f879f6321
@@ -241,7 +241,62 @@ Titre/Paragraphe, valeur douteuse pour du contenu de formation). Rien
|
||||
d'oublié constaté à cette relecture. Validé par l'utilisateur, prêt à
|
||||
committer.
|
||||
|
||||
### 3. Bouton — à faire
|
||||
### 3. Bouton — ✅ audité et validé (commité)
|
||||
|
||||
Implémenté : gras/italique, majuscules/minuscules/capitales, police
|
||||
(liste déroulante web-safe, réutilise `FORGE_DOC_FONT_FAMILY_OPTIONS`
|
||||
déjà créé pour Titre/Paragraphe), taille de police, espacement des
|
||||
lettres, couleur du texte (sélecteur natif), icône SVG optionnelle
|
||||
(position avant/après le texte, taille réglable — le bouton dépasse ici
|
||||
l'étiquette, qui n'a toujours qu'une icône fixe sans position ni taille
|
||||
réglables), tous les attributs de boîte partagés (padding, margin,
|
||||
couleur de fond, arrondi, largeur/hauteur, ombre portée, opacité,
|
||||
position du bloc, bordure par côté). États interactifs survol/actif :
|
||||
effet visuel UNIVERSEL (assombrissement léger au survol, léger
|
||||
tassement au clic), automatique pour tous les boutons sans réglage à
|
||||
faire — jamais une couleur de survol personnalisable par bouton
|
||||
(mécanisme CSS fragile pour une valeur ajoutée faible en contenu de
|
||||
formation). Curseur (`cursor:pointer`) et transition au survol déjà en
|
||||
place.
|
||||
|
||||
Mécanisme partagé réutilisé tel quel : `document_engine/rendering/
|
||||
box_style.py` (comme Titre/Paragraphe/Image) + `sanitize_svg_markup`
|
||||
(comme l'Image et l'Étiquette pour l'icône). Extraction d'une constante
|
||||
JS partagée `FORGE_DOC_TEXT_TRANSFORM_OPTIONS` (utilisée par Titre/
|
||||
Paragraphe ET Bouton, plus de duplication de ce tableau d'options).
|
||||
|
||||
Volontairement laissé de côté (même rationale que Titre/Paragraphe/
|
||||
Image) : dégradé/image de fond, arrondi par coin (un seul rayon pour
|
||||
les 4 coins), réglages responsive par taille d'écran. **État
|
||||
"désactivé"** délibérément absent : un bouton de contenu de formation
|
||||
n'est pas un vrai contrôle de formulaire avec un état programmatique
|
||||
désactivé — aucun équivalent clair sans inventer un concept artificiel;
|
||||
à ajouter si un besoin précis se présente.
|
||||
|
||||
**Audit final** : chaque ligne du tableau d'audit initial pour
|
||||
l'élément Bouton est couverte — typo (police/taille/gras/italique/
|
||||
transformation/espacement), boîte (padding/margin/largeur/hauteur/
|
||||
position du bloc), bordure/ombre (style/couleur/épaisseur/par côté +
|
||||
le nouveau réglage "les 4 côtés à la fois"/ombre portée), fond
|
||||
(couleur), icône, effets (transition/curseur) — chacune implémentée ou
|
||||
explicitement différée ci-dessus avec sa raison (dégradé/image de fond,
|
||||
arrondi par coin, responsive, état désactivé). 9 tests dédiés passent
|
||||
(224 au total dans `tests/document/`), ruff/mypy --strict/bandit/
|
||||
vulture/import-linter/eslint/stylelint tous clean. Rien d'oublié
|
||||
constaté à cette relecture. Validé par l'utilisateur, prêt à committer.
|
||||
|
||||
**Ajout transversal pendant le test (retour utilisateur : "pour les
|
||||
bordures, il faudrait une option pour modifier les 4 bordures en même
|
||||
temps")** : une rangée "Bordure — les 4 côtés à la fois" a été ajoutée
|
||||
au-dessus du réglage par côté existant, dans le module PARTAGÉ
|
||||
`forgeDocRenderBoxFieldsHtml`/`forgeDocBindBoxFields` (static/document/
|
||||
js/document-editor.js) — un changement de style/épaisseur/couleur y
|
||||
applique la MÊME valeur aux 4 côtés d'un coup (en plus, jamais à la
|
||||
place, du réglage par côté qui reste utilisable après pour affiner).
|
||||
Repart de l'état actuel si les 4 côtés portent déjà la même valeur,
|
||||
sinon d'un état neutre. Bénéficie automatiquement à TOUS les éléments
|
||||
qui utilisent déjà ce module (Titre/Paragraphe/Image/Bouton), aucune
|
||||
modification nécessaire ailleurs.
|
||||
|
||||
### 4. Liste à puces / numérotée — à faire
|
||||
|
||||
@@ -271,3 +326,26 @@ position de l'icône. Pourra réutiliser directement `box_style.py`.
|
||||
- Polices : liste fermée de polices web-safe (aucun chargement dynamique
|
||||
de Google Fonts depuis l'éditeur) — évite d'introduire un mécanisme de
|
||||
chargement de police, hors périmètre de cet audit.
|
||||
|
||||
## Fonctionnalité hors tableau : glisser-déposer un élément vers une autre page
|
||||
|
||||
Retour utilisateur du 26/09/2026 : "j'aimerais pouvoir glisser déposer
|
||||
un élément d'une page dans une autre page" — sans rapport avec l'audit
|
||||
de mise en forme élément par élément, mais traité dans la foulée.
|
||||
Le mécanisme bas niveau (`document_engine.move_document_element_to_page`
|
||||
+ la route `/elements/<id>/move-to-page`) existait déjà, utilisé
|
||||
uniquement par la pagination automatique (voir
|
||||
`forgeDocCheckPageOverflow`) — déjà bien testé côté serveur
|
||||
(`test_document_elements.py`/`test_document_routes.py`).
|
||||
|
||||
Ajout : glisser un élément du canevas jusqu'à une rangée du panneau
|
||||
Pages (onglet "Pages" du panneau gauche) le déplace vers cette page —
|
||||
même charge utile de glisser (`"text/forge-doc-move"`) que le
|
||||
réordonnancement au sein d'une page, aucune modification de la source
|
||||
de glisser côté canevas. Nouvelle fonction `forgeDocMoveElementToPage`
|
||||
(commande Annuler/Rétablir complète, comme le reste des mutations).
|
||||
Surlignage visuel de la rangée survolée (`.docPageRow--dropTarget`),
|
||||
distinct de `.is-active`/`.is-dragging`. Pas de test automatisé
|
||||
possible côté client (aucune suite de tests n'existe pour
|
||||
`document-editor.js`), vérification manuelle uniquement — le mécanisme
|
||||
serveur sous-jacent, lui, reste couvert par les tests existants.
|
||||
|
||||
Reference in New Issue
Block a user