Skip to content

Pagination Component Demos

Basic Pagination

Simple pagination with default settings.

Code Example

vue
<template>
  <OPagination
    v-model="currentPage1"
    :total-pages="totalPages1"
    @update:model-value="(page) => handlePageChange(page, 1)"
  />
</template>

<script setup>
import { ref } from 'vue';

const currentPage1 = ref(1);
const totalPages1 = ref(10);

const handlePageChange = (page) => {
  console.log('Page changed to:', page);
};
</script>

Demo

Current page: 1 of 10

Large Page Count

Pagination with many pages showing ellipsis.

Code Example

vue
<template>
  <OPagination
    v-model="currentPage2"
    :total-pages="totalPages2"
    :total-visible="7"
    @update:model-value="(page) => handlePageChange(page, 2)"
  />
</template>

Demo

Current page: 5 of 20

Size Variants

Different sizes: small, default, and large.

Code Example

vue
<template>
  <div class="size-demos">
    <OPagination
      v-model="currentPage3"
      :total-pages="totalPages3"
      size="small"
    />
    
    <OPagination
      v-model="currentPage4"
      :total-pages="totalPages4"
      size="default"
    />
    
    <OPagination
      v-model="currentPage5"
      :total-pages="totalPages5"
      size="large"
    />
  </div>
</template>

Demo

Small

Default

Large

Color Themes

Different color variants for the active page.

Code Example

vue
<template>
  <div class="color-demos">
    <OPagination
      v-model="currentPage6"
      :total-pages="totalPages6"
      color="primary"
    />
    
    <OPagination
      v-model="currentPage7"
      :total-pages="totalPages7"
      color="success"
    />
    
    <OPagination
      v-model="currentPage8"
      :total-pages="totalPages8"
      color="error"
    />
  </div>
</template>

Demo

Primary

Success

Error

Rounded Buttons

Pagination with rounded button styling.

Code Example

vue
<template>
  <OPagination
    v-model="currentPage9"
    :total-pages="totalPages9"
    :rounded="true"
    color="info"
  />
</template>

Demo

Current page: 6 of 30

Without First/Last Buttons

Pagination without first and last navigation buttons.

Code Example

vue
<template>
  <OPagination
    v-model="currentPage10"
    :total-pages="totalPages10"
    :show-first-last="false"
    color="warning"
  />
</template>

Demo

Current page: 1 of 3

Custom Navigation

Pagination with custom navigation button styling.

Code Example

vue
<template>
  <OPagination
    v-model="currentPage1"
    :total-pages="totalPages1"
    @first="(page) => handleFirst(page, 1)"
    @prev="(page) => handlePrev(page, 1)"
    @next="(page) => handleNext(page, 1)"
    @last="(page) => handleLast(page, 1)"
  >
    <template #prev="{ onClick, disabled }">
      <button 
        @click="onClick" 
        :disabled="disabled"
        class="custom-nav-btn"
      >
        ← Prev
      </button>
    </template>
    
    <template #next="{ onClick, disabled }">
      <button 
        @click="onClick" 
        :disabled="disabled"
        class="custom-nav-btn"
      >
        Next →
      </button>
    </template>
  </OPagination>
</template>

Demo

Current page: 1 of 10

Disabled State

Pagination in disabled state.

Code Example

vue
<template>
  <OPagination
    v-model="currentPage3"
    :total-pages="totalPages3"
    :disabled="true"
  />
</template>

Demo

Pagination is disabled - no interactions allowed

Custom Page Items

Pagination with custom page number styling.

Code Example

vue
<template>
  <OPagination
    v-model="currentPage4"
    :total-pages="totalPages4"
  >
    <template #item="{ isActive, page, props }">
      <button
        v-bind="props"
        :class="{ 'custom-page-active': isActive }"
        class="custom-page-btn"
      >
        {{ page }}
      </button>
    </template>
  </OPagination>
</template>

Demo

Current page: 7 of 15

Event Handling

Pagination with comprehensive event handling.

Code Example

vue
<template>
  <OPagination
    v-model="currentPage5"
    :total-pages="totalPages5"
    @first="(page) => handleFirst(page, 5)"
    @prev="(page) => handlePrev(page, 5)"
    @next="(page) => handleNext(page, 5)"
    @last="(page) => handleLast(page, 5)"
  />
</template>

Demo

Current page: 1 of 8

Check console for event logs when clicking navigation buttons