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:
william
2026-09-24 07:19:01 +02:00
co-authored by Claude Sonnet 5
parent eac45f1c9d
commit e7c6ed7159
8 changed files with 169 additions and 4 deletions
+19
View File
@@ -69,6 +69,25 @@ def test_document_element_add_accepts_row_for_the_layout_engine(client: FlaskCli
assert resp.get_json()["kind"] == "row"
def test_document_element_add_creates_a_bullet_list(client: FlaskClient, support: str) -> None:
resp = client.post(f"/document/{support}/elements/add", data={"kind": "liste_puces", "page_id": _page_id(support)})
assert resp.status_code == 200
payload = resp.get_json()
assert payload["kind"] == "liste_puces"
assert "<ul" in payload["rendered_html"]
assert "docList" in payload["rendered_html"]
def test_document_element_add_creates_a_numbered_list(client: FlaskClient, support: str) -> None:
resp = client.post(
f"/document/{support}/elements/add", data={"kind": "liste_numerotee", "page_id": _page_id(support)}
)
assert resp.status_code == 200
payload = resp.get_json()
assert payload["kind"] == "liste_numerotee"
assert "<ol" in payload["rendered_html"]
def test_document_element_update_persists_attributes(client: FlaskClient, support: str) -> None:
page_id = _page_id(support)
add_resp = client.post(f"/document/{support}/elements/add", data={"kind": "paragraphe", "page_id": page_id})