Search results
Move between server-backed result pages while retaining the current query.
Components / Navigation
Button-based page navigation with compact sibling and boundary ranges.
Move between server-backed result pages while retaining the current query.
Keep page controls near the table they update.
<script setup lang="ts">
import { ref } from 'vue'
import Pagination from './components/ui/pagination/Pagination.vue'
const page = ref(4)
const messages = {
navigation: 'Results pages',
previous: 'Previous page',
next: 'Next page',
page: (value: number) => 'Go to page ' + value,
}
</script>
<template>
<Pagination v-model="page" :total-pages="12" :messages="messages" />
</template>Supply messages for every button and bind the current page.
<script setup lang="ts">
import { ref } from 'vue'
import Pagination from './components/ui/pagination/Pagination.vue'
const page = ref(1)
const messages = { navigation: 'Search results pages', previous: 'Previous page', next: 'Next page', page: (n: number) => 'Go to page ' + n }
</script>
<template>
<Pagination v-model="page" :total-pages="20" :messages="messages" />
</template>Fewer siblings make the control easier to fit in a narrow results column.
<script setup lang="ts">
import { ref } from 'vue'
import Pagination from './components/ui/pagination/Pagination.vue'
const page = ref(8)
const messages = { navigation: 'Orders pages', previous: 'Previous', next: 'Next', page: (n: number) => 'Page ' + n }
</script>
<template>
<Pagination v-model="page" :total-pages="35" :sibling-count="0" :boundary-count="1" :messages="messages" />
</template>The most useful props, models, slots, events, and methods for this component.
| Name | Type | Default or requirement |
|---|---|---|
v-model | number | 1 |
totalPages | number | required |
messages | { navigation; previous; next; page(value) } | required |
siblingCount | number | 1 |
boundaryCount | number | 1 |
disabled | boolean | false |
previous / next / page / ellipsis | slots | built-in content |
The active native button has aria-current="page", unavailable previous and next controls are disabled, and all accessible labels come from the required messages object.