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
unstyledboolean—Drop built-in classes
classstring—Merged with the built-in classes
ui{ root?, list?, item?, ellipsis? }—Per-element class overrides

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

Slots ​

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