{# Composants d'affichage de données (charte « Accessible chaleureux »). Usage : {% from "components/data.html" import table, pagination %} {{ table(["Nom", "Courriel"], lignes) }} {{ pagination(page, total_pages, base_url="/contact") }} #} {# Tableau de données en lecture. headers : liste de libellés de colonnes. rows : liste de lignes, chaque ligne étant une liste de cellules (texte). Pour une colonne d'actions (liens éditer/supprimer), composez le tableau à la main en reprenant ces classes : le rendu de cellules est échappé (sécurité). #} {% macro table(headers, rows, empty="Aucune donnée à afficher.") %}
{% for h in headers %}{% endfor %} {% for row in rows %} {% for cell in row %}{% endfor %} {% else %} {% endfor %}
{{ h }}
{{ cell }}
{{ empty }}
{% endmacro %} {# Pied de pagination. page : page courante (1-based). total_pages : nombre de pages. base_url : chemin de la liste (les liens ajoutent ?page=N). #} {% macro pagination(page, total_pages, base_url="") %} {% if total_pages > 1 %} {%- set prev_cls = "px-3 py-2 text-sm font-semibold rounded-[8px] border border-field text-ink hover:border-teal transition" -%} {%- set off_cls = "px-3 py-2 text-sm font-semibold rounded-[8px] border border-line text-faint cursor-not-allowed" -%} {% endif %} {% endmacro %}