Compose pagination with c-ui.pagination and place a c-ui.pagination.item for each page number. Mark the active page with :current="True" and use c-ui.pagination.ellipsis to collapse gaps in the range.
<c-ui.pagination>
<c-ui.pagination.prev href="?page=1" />
<c-ui.pagination.item href="?page=1">1</c-ui.pagination.item>
<c-ui.pagination.item href="?page=2" :current="True">2</c-ui.pagination.item>
<c-ui.pagination.item href="?page=3">3</c-ui.pagination.item>
<c-ui.pagination.ellipsis />
<c-ui.pagination.item href="?page=10">10</c-ui.pagination.item>
<c-ui.pagination.next href="?page=3" />
</c-ui.pagination>
{% cotton ui.pagination %}
{% cotton ui.pagination.prev href="?page=1" /%}
{% cotton ui.pagination.item href="?page=1" %}1{% endcotton %}
{% cotton ui.pagination.item href="?page=2" :current="True" %}2{% endcotton %}
{% cotton ui.pagination.item href="?page=3" %}3{% endcotton %}
{% cotton ui.pagination.ellipsis /%}
{% cotton ui.pagination.item href="?page=10" %}10{% endcotton %}
{% cotton ui.pagination.next href="?page=3" /%}
{% endcotton %}
Pass a Django page_obj and the component renders the prev / numbered / next controls itself, with ellipses for large ranges. Set param if your page query string is not page.
<c-ui.pagination :page_obj="page_obj" />
{% cotton ui.pagination :page_obj="page_obj" /%}
For full control, omit page_obj and compose the sub-components yourself, as shown in the other examples.
The c-ui.pagination.prev and c-ui.pagination.next arrows accept :disabled="True" to mute them and remove the link, for example on the first or last page.
<c-ui.pagination>
<c-ui.pagination.prev href="?page=1" :disabled="True" />
<c-ui.pagination.item href="?page=1" :current="True">1</c-ui.pagination.item>
<c-ui.pagination.item href="?page=2">2</c-ui.pagination.item>
<c-ui.pagination.item href="?page=3">3</c-ui.pagination.item>
<c-ui.pagination.next href="?page=2" />
</c-ui.pagination>
{% cotton ui.pagination %}
{% cotton ui.pagination.prev href="?page=1" :disabled="True" /%}
{% cotton ui.pagination.item href="?page=1" :current="True" %}1{% endcotton %}
{% cotton ui.pagination.item href="?page=2" %}2{% endcotton %}
{% cotton ui.pagination.item href="?page=3" %}3{% endcotton %}
{% cotton ui.pagination.next href="?page=2" /%}
{% endcotton %}
| Name | Description | Type | Options | Default |
|---|---|---|---|---|
page_obj |
A Django Page object. When given, the component renders prev / numbered / next controls itself instead of using the slot. | Page | — | None |
param |
Query string parameter used for page links in auto mode. | str | — | page |
class |
Extra classes merged onto the inner list. | str | — | |
slot (default) |
The pagination controls: items, ellipses and prev / next arrows. | — | — |
| Name | Description | Type | Options | Default |
|---|---|---|---|---|
href |
Destination URL for the page. | str | — | |
current |
Mark the item as the active page. Renders with accent styling and aria-current='page'. | bool | — | False |
disabled |
Mute the item and remove its link. | bool | — | False |
class |
Extra classes merged onto the item's link. | str | — | |
slot (default) |
The page label, usually the page number. | — | — |
| Name | Description | Type | Options | Default |
|---|---|---|---|---|
href |
Destination URL for the previous or next page. | str | — | |
disabled |
Mute the arrow and remove its link, for example on the first or last page. | bool | — | False |
class |
Extra classes merged onto the arrow's link. | str | — |
| Name | Description | Type | Options | Default |
|---|---|---|---|---|
class |
Extra classes merged onto the ellipsis span. | str | — |