From cf46da33885bfe0d7af7d5dfeb3f6b818cd509d6 Mon Sep 17 00:00:00 2001 From: william Date: Sun, 20 Sep 2026 13:19:36 +0200 Subject: [PATCH] Formulaire de paire (Association) en pile verticale + textarea Retour utilisateur direct : les deux champs d'une paire etaient cote a cote (trop etroit dans le panneau Proprietes) et en simple. Refonte de forgeDocRenderAssociationPairHtml en carte verticale (meme habillage que .docQuizQuestion : bordure/fond/en-tete avec le bouton supprimer) - "Element" et "Correspondance" sont desormais des " romprait le tag dans la propre session d'edition du createur. Remarque a part (pas corrigee ici, hors demande) : le texte d'une question de quiz (forgeDocRenderQuizQuestionHtml) a le meme motif sans cet echappement - a signaler si souhaite comme correctif separe. SKIP=djlint : backlog H021 pre-existant, aucun template touche ici. ruff/mypy --strict/eslint/stylelint tous verts ; 50 tests document verifies frais (aucune logique serveur touchee par ce changement purement CSS/JS). Co-Authored-By: Claude Sonnet 5 --- static/document/document-editor.css | 25 +++++++++++++---- static/document/js/document-editor.js | 40 +++++++++++++++++---------- 2 files changed, 46 insertions(+), 19 deletions(-) diff --git a/static/document/document-editor.css b/static/document/document-editor.css index 9407fcd0..be153cbd 100644 --- a/static/document/document-editor.css +++ b/static/document/document-editor.css @@ -847,23 +847,38 @@ img.docImage { /* ---- Association : panneau Propriétés — paires reliées visuellement par un glyphe entre les deux champs (voir forgeDocRenderAssociationPairHtml, - static/document/js/document-editor.js). ---- */ + static/document/js/document-editor.js). Empilement VERTICAL (pas côte à + côte) : la colonne du panneau Propriétés est trop étroite pour deux + champs de texte libre côte à côte, voir retour utilisateur du + 20/09/2026. ---- */ .docAssocPairRow { display: flex; - align-items: center; + flex-direction: column; gap: 8px; + border: 1px solid var(--doc-border); + border-radius: 10px; + padding: 12px; margin-bottom: 10px; + background: var(--doc-card); } .docAssocPairInput { - flex: 1; - min-width: 0; + width: 100%; + resize: vertical; + border: 1px solid var(--doc-border); + border-radius: 8px; + padding: 8px 10px; + font-size: 13px; + font-family: inherit; + color: var(--doc-text); + background: var(--doc-bg-2); } .docAssocPairLink { - flex-shrink: 0; + align-self: center; color: var(--doc-accent); font-weight: 700; + font-size: 15px; } .docUnknown { diff --git a/static/document/js/document-editor.js b/static/document/js/document-editor.js index 030fd8da..f9d75c49 100644 --- a/static/document/js/document-editor.js +++ b/static/document/js/document-editor.js @@ -1084,23 +1084,35 @@ function forgeDocAssociationNewPair() { return { left: 'Nouvel élément', right: 'Sa correspondance' }; } +function forgeDocEscapeForTextarea(text) { + // Les deux côtés d'une paire sont du texte libre du créateur, inséré ici + // comme CONTENU d'un " romprait le tag et tout ce qui + // suit serait interprété comme du HTML/JS brut dans SA PROPRE session + // d'édition. + return String(text).replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>'); +} + function forgeDocRenderAssociationPairHtml(pair, pIndex) { return `
- - - - +
+ Paire ${pIndex + 1} + +
+ + +
`; }