{# Inline pagination fragment. Rendered inside #pv-pagination div. When served as the HTMX rows response it is also sent as an OOB swap (see list_rows.html). Variables available: page, page_size, total, total_pages, search, order, filters, view (for view.module/name). #} {# Left: record range info #} {% if total == 0 %} No records {% else %} {% set start = page * page_size + 1 %} {% set end = [start + page_size - 1, total] | min %} {{ start }}–{{ end }} of {{ total }} {% endif %} {# Right: prev / page numbers / next #}
{# Prev #} {# Page numbers — show at most 7 buttons with ellipsis when many pages #} {% set tp = total_pages %} {% set cp = page %} {% if tp <= 7 %} {% for i in range(tp) %} {% endfor %} {% else %} {# First #} {% if cp > 3 %} {% endif %} {% for i in range([cp - 1, 1] | max, [cp + 2, tp - 1] | min) %} {% endfor %} {% if cp < tp - 4 %} {% endif %} {# Last #} {% endif %} {# Next #}