Ajoute les listes à puces et numérotées dans la bibliothèque de contenu
Retour utilisateur du 24/09/2026 : "dans la section contenu il manque la possibilité d'utiliser une liste à puce ou ordonnée". - Deux nouveaux kinds "liste_puces"/"liste_numerotee" dans CONTENT_KINDS, chacun sélectionnable directement dans la bibliothèque (comme titre/paragraphe/image/bouton) — partagent la même structure d'attributs (`items`, une liste de chaînes), c'est le kind lui-même qui décide <ul> ou <ol> au rendu (_render_list), pas un attribut "ordered" redondant à tenir synchronisé. - Rendu : un <li> par item, échappé (html.escape) comme tout le contenu texte du document — une liste vide rend <ul>/<ol> sans enfant plutôt qu'un placeholder (état normal, pas une image sans fichier). - Panneau Propriétés : même patron répéteur que l'Association/Memory (ajouter/renommer/supprimer une ligne, rechargé après chaque modification). - Icônes de bibliothèque (☰/①) + style .docList (puces/numéros visibles, espacement entre items). 6 nouveaux tests Python (attributs par défaut, rendu <ul>/<ol>, échappement, liste vide, route d'ajout) + vérifié par un test jsdom dédié contre un vrai support (bibliothèque, panneau Propriétés : ajout/modification/suppression d'item réellement fonctionnels). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
eac45f1c9d
commit
e7c6ed7159
@@ -74,6 +74,20 @@ def _render_image(el: dict[str, Any], _children_by_parent: dict[int | None, list
|
||||
return f'<img class="docImage" data-element-id="{el["id"]}" data-kind="image" src="{src}" alt="{alt}">'
|
||||
|
||||
|
||||
def _render_list(el: dict[str, Any], _children_by_parent: dict[int | None, list[dict[str, Any]]]) -> str:
|
||||
"""Liste à puces (<ul>) ou numérotée (<ol>) — le kind lui-même décide
|
||||
la balise, pas un attribut "ordered" séparé (voir
|
||||
element_kind_labels.element_default_attributes). Une "items" vide
|
||||
rend une liste vide plutôt qu'un placeholder : contrairement à une
|
||||
image sans fichier, une liste sans élément n'a rien d'anormal à
|
||||
afficher (le créateur vient peut-être de tout supprimer avant d'en
|
||||
retaper un)."""
|
||||
items = el["attributes"].get("items", [])
|
||||
tag = "ol" if el["kind"] == "liste_numerotee" else "ul"
|
||||
items_html = "".join(f"<li>{html_lib.escape(str(item))}</li>" for item in items)
|
||||
return f'<{tag} class="docList" data-element-id="{el["id"]}" data-kind="{el["kind"]}">{items_html}</{tag}>'
|
||||
|
||||
|
||||
def _render_button(el: dict[str, Any], _children_by_parent: dict[int | None, list[dict[str, Any]]]) -> str:
|
||||
a = el["attributes"]
|
||||
label = html_lib.escape(str(a.get("label", "Bouton")))
|
||||
@@ -498,6 +512,8 @@ _RENDERERS = {
|
||||
"paragraphe": _render_text,
|
||||
"image": _render_image,
|
||||
"bouton": _render_button,
|
||||
"liste_puces": _render_list,
|
||||
"liste_numerotee": _render_list,
|
||||
"quiz": _render_quiz,
|
||||
"association": _render_association,
|
||||
"memory": _render_memory,
|
||||
|
||||
Reference in New Issue
Block a user