Skip to content

Navigation

IPagination

Page controls for a list that is too long to show at once. It holds no data: it reports which page was asked for, and you fetch or slice accordingly.

total is the number of items, not pages; the component divides by itemsPerPage itself.

With a table

In server mode ITable takes the same page model, so both can bind to one ref.

vue
<ITable v-model:page="page" :rows="rows" :columns="columns" :total="total" />
<IPagination v-model:page="page" :total="total" :items-per-page="20" />

See the server-mode example for the full loop, including the request in between.

How many pages show

siblingCount is how many pages sit either side of the current one. The first and last are always reachable, with an ellipsis standing in for the gap.

showEdges drops the first and last pages when you would rather keep the control narrow.

Alignment

Centred by default, since pagination usually sits under a full-width list.

Sizes

Props

PropTypeDefaultDescription
totalnumber0Total items, not pages
itemsPerPagenumber10Page size
siblingCountnumber1Pages shown either side of the current one
showEdgesbooleantrueAlways show the first and last page
size'sm' | 'md' | 'lg''sm'Control scale
align'start' | 'center' | 'end''center'Horizontal alignment
prevLabelstring'Previous page'Accessible name for the previous control
nextLabelstring'Next page'Accessible name for the next control
labelstring'Pagination'Accessible name for the navigation region
unstyledbooleanDrop built-in classes
classstringMerged with the built-in classes
ui{ root?, list?, item?, ellipsis? }Per-slot class overrides

The model is v-model:page, one-based.

Slots

SlotWhen to use it
prev / nextReplace the previous and next controls