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
@@ -11,7 +11,7 @@ from .mots_config import DEFAULT_MOTS_CONFIG
|
||||
from .quiz_config import DEFAULT_QUIZ_CONFIG
|
||||
from .scenario_config import DEFAULT_SCENARIO_CONFIG
|
||||
|
||||
CONTENT_KINDS = ("titre", "paragraphe", "image", "bouton")
|
||||
CONTENT_KINDS = ("titre", "paragraphe", "image", "bouton", "liste_puces", "liste_numerotee")
|
||||
MINIGAME_KINDS = ("quiz", "association", "memory", "mots", "scenario", "zones")
|
||||
|
||||
# "row" n'apparaît jamais dans la bibliothèque (créé implicitement par le
|
||||
@@ -28,6 +28,8 @@ ELEMENT_KIND_LABELS: dict[str, str] = {
|
||||
"paragraphe": "Paragraphe",
|
||||
"image": "Image",
|
||||
"bouton": "Bouton",
|
||||
"liste_puces": "Liste à puces",
|
||||
"liste_numerotee": "Liste numérotée",
|
||||
"quiz": "Quiz",
|
||||
"association": "Association",
|
||||
"memory": "Memory",
|
||||
@@ -57,6 +59,12 @@ def element_default_attributes(kind: str) -> dict[str, Any]:
|
||||
return {"src": "", "alt": ""}
|
||||
if kind == "bouton":
|
||||
return {"label": "Bouton", "target": ""}
|
||||
if kind in ("liste_puces", "liste_numerotee"):
|
||||
# Une seule et même structure d'attributs pour les deux kinds —
|
||||
# "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"]}
|
||||
if kind == "row":
|
||||
return {"gap": 16, "align": "stretch", "justify": "flex-start"}
|
||||
if kind == "quiz":
|
||||
|
||||
@@ -5,8 +5,13 @@ groupée par catégorie (panneau gauche de l'éditeur), libellés d'affichage, e
|
||||
attributs par défaut posés à la création de chaque type.
|
||||
|
||||
## `CONTENT_KINDS: tuple[str, ...]`
|
||||
`("titre", "paragraphe", "image", "bouton")` — éléments du flux, peuvent
|
||||
être top-niveau ou enfants d'une rangée.
|
||||
`("titre", "paragraphe", "image", "bouton", "liste_puces",
|
||||
"liste_numerotee")` — éléments du flux, peuvent être top-niveau ou
|
||||
enfants d'une rangée. `"liste_puces"`/`"liste_numerotee"` partagent la
|
||||
même structure d'attributs (`items`) ; c'est le `kind` lui-même qui
|
||||
décide `<ul>` ou `<ol>` au rendu (voir
|
||||
`document_engine/rendering/render_document_element.py::_render_list`),
|
||||
jamais un attribut `ordered` redondant.
|
||||
|
||||
## `MINIGAME_KINDS: tuple[str, ...]`
|
||||
`("quiz", "association", "memory", "mots", "scenario", "zones")` —
|
||||
@@ -30,7 +35,8 @@ Attributs posés à la création d'un élément de ce type (voir
|
||||
`document_engine/elements/add_document_element.py`).
|
||||
- **Retour** : un dict d'attributs par défaut, dépendant du `kind` :
|
||||
texte (`content/style` + `bold/italic/underline/align/color`),
|
||||
image (`src/alt`), bouton (`label/target`), rangée (`gap/align/justify`),
|
||||
image (`src/alt`), bouton (`label/target`), liste à puces/numérotée
|
||||
(`items`, une liste de chaînes), rangée (`gap/align/justify`),
|
||||
quiz (`DEFAULT_QUIZ_CONFIG`, voir `quiz_config.py`), association
|
||||
(`DEFAULT_ASSOCIATION_CONFIG`, voir `association_config.py`), memory
|
||||
(`DEFAULT_MEMORY_CONFIG`, voir `memory_config.py`), autre mini-jeu
|
||||
|
||||
Reference in New Issue
Block a user