DevExtreme v24.2 is now available.

Explore our newest features/capabilities and share your thoughts with us.

Your search did not match any results.

Vue Pagination

DevExpress Pagination component allows users to navigate between pages and adjust page size at runtime. In this demo, users can browse through individual employee cards using the Pagination component.

To set up our Pagination component, specify the following options:

DevExtreme Accessibility Compliance
DevExtreme component libraries meet a variety of WCAG and Section 508 compliance standards. To assess this demo’s accessibility level, click the Run AXE® Validation button to launch the AXE® web accessibility evaluation tool.
All trademarks or registered trademarks are property of their respective owners. AXE® Terms of Use
The overall accessibility level of your application depends on the Pagination features used.
Backend API
<template> <div class="employees" :class="{ 'employees--forth': pageSize === 4, 'employees--six': pageSize === 6, }"> <div class="employees__card" v-for="employee in pageEmployees"> <div class="employees__img-wrapper"> <img class="employees__img" :src="employee.Picture" :alt="employee.FullName" /> </div> <div class="employees__info"> <div class="employees__info-row"> <span class="employees__info-label">Full Name:</span> <span class="employees__info-value">{{ employee.FullName }}</span> </div> <div class="employees__info-row"> <span class="employees__info-label">Position:</span> <span class="employees__info-value">{{ employee.Title }}</span> </div> <div class="employees__info-row"> <span class="employees__info-label">Phone:</span> <span class="employees__info-value">{{ employee.MobilePhone }}</span> </div> </div> </div> </div> <DxPagination :show-info="showInfo" :show-navigation-buttons="showPageSizeSelector" :allowed-page-sizes="pageSizes" v-model:page-index="pageIndex" v-model:page-size="pageSize" :item-count="itemCount" /> </template> <script setup lang="ts"> import { computed, ref } from 'vue'; import DxPagination from 'devextreme-vue/pagination'; import { employees } from './data.ts'; const getPageEmployees = (pageIndex, pageSize) => { return employees.slice((pageIndex - 1) * pageSize, pageIndex * pageSize); } const pageSizes = [4, 6]; const showInfo = true; const showPageSizeSelector = true; const pageIndex = ref(1); const pageSize = ref(4); const itemCount = employees.length; const pageEmployees = computed(() => getPageEmployees(pageIndex.value, pageSize.value)); </script> <style> body { overflow-x: hidden; } .demo-container { display: flex; flex-direction: column; align-items: center; } .container { min-width: 720px; width: 100%; } .employees { display: flex; flex-wrap: wrap; gap: 16px; min-height: 644px; padding-bottom: 24px; } .employees__card { width: 100%; max-height: 312px; align-self: stretch; overflow: hidden; border: var(--dx-border-width) solid var(--dx-color-border); border-radius: var(--dx-border-radius); background-color: var(--dx-component-color-bg); } .employees.employees--forth .employees__card { min-width: 250px; width: 390px; flex-basis: calc(50% - 10px); } .employees.employees--six .employees__card { flex-basis: calc(33.3% - 12.5px); } .employees__img-wrapper { height: 180px; position: relative; overflow: hidden; border-bottom: var(--dx-border-width) solid var(--dx-color-border); background-color: #fff; } .employees__img { display: block; height: 220px; position: absolute; content: ""; left: 50%; top: 0; transform: translateX(-50%); } .employees__info { padding: 24px; } .employees__info-row { margin-bottom: 8px; text-wrap: nowrap; } .employees__info-label { display: inline-block; font-weight: 600; vertical-align: middle; } .employees.employees--forth .employees__info-label { width: 160px; } .employees.employees--six .employees__info-label { width: 80px; } .employees__info-value { display: inline-block; text-wrap: nowrap; text-overflow: ellipsis; vertical-align: middle; overflow: hidden; white-space:nowrap } .employees.employees--forth .employees__info-value { max-width: 180px; } .employees.employees--six .employees__info-value { max-width: 120px; } </style>
window.exports = window.exports || {}; window.config = { transpiler: 'plugin-babel', meta: { '*.vue': { loader: 'vue-loader', }, '*.ts': { loader: 'demo-ts-loader', }, '*.svg': { loader: 'svg-loader', }, 'devextreme/time_zone_utils.js': { 'esModule': true, }, 'devextreme/localization.js': { 'esModule': true, }, 'devextreme/viz/palette.js': { 'esModule': true, }, 'openai': { 'esModule': true, }, }, paths: { 'project:': '../../../../', 'npm:': 'https://cdn.jsdelivr.net/npm/', 'bundles:': '../../../../bundles/', 'externals:': '../../../../bundles/externals/', }, map: { 'vue': 'npm:vue@3.4.27/dist/vue.esm-browser.js', '@vue/shared': 'npm:@vue/shared@3.4.27/dist/shared.cjs.prod.js', 'vue-loader': 'npm:dx-systemjs-vue-browser@1.1.2/index.js', 'demo-ts-loader': 'project:utils/demo-ts-loader.js', 'jszip': 'npm:jszip@3.10.1/dist/jszip.min.js', 'svg-loader': 'project:utils/svg-loader.js', 'mitt': 'npm:mitt/dist/mitt.umd.js', 'rrule': 'npm:rrule@2.6.4/dist/es5/rrule.js', 'luxon': 'npm:luxon@3.4.4/build/global/luxon.min.js', 'es6-object-assign': 'npm:es6-object-assign', 'devextreme': 'npm:devextreme@24.2.7/cjs', 'devextreme-vue': 'npm:devextreme-vue@24.2.7/cjs', 'devextreme-quill': 'npm:devextreme-quill@1.7.1/dist/dx-quill.min.js', 'devexpress-diagram': 'npm:devexpress-diagram@2.2.16/dist/dx-diagram.js', 'devexpress-gantt': 'npm:devexpress-gantt@4.1.60/dist/dx-gantt.js', '@devextreme/runtime': 'npm:@devextreme/runtime@3.0.12', 'inferno': 'npm:inferno@7.4.11/dist/inferno.min.js', 'inferno-compat': 'npm:inferno-compat/dist/inferno-compat.min.js', 'inferno-create-element': 'npm:inferno-create-element@7.4.11/dist/inferno-create-element.min.js', 'inferno-dom': 'npm:inferno-dom/dist/inferno-dom.min.js', 'inferno-hydrate': 'npm:inferno-hydrate/dist/inferno-hydrate.min.js', 'inferno-clone-vnode': 'npm:inferno-clone-vnode/dist/inferno-clone-vnode.min.js', 'inferno-create-class': 'npm:inferno-create-class/dist/inferno-create-class.min.js', 'inferno-extras': 'npm:inferno-extras/dist/inferno-extras.min.js', 'plugin-babel': 'npm:systemjs-plugin-babel@0.0.25/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0.0.25/systemjs-babel-browser.js', // Prettier 'prettier/standalone': 'npm:prettier@2.8.8/standalone.js', 'prettier/parser-html': 'npm:prettier@2.8.8/parser-html.js', }, packages: { 'devextreme-vue': { main: 'index.js', }, 'devextreme': { defaultExtension: 'js', }, 'devextreme/events/utils': { main: 'index', }, 'devextreme/common/core/events/utils': { main: 'index', }, 'devextreme/events': { main: 'index', }, 'es6-object-assign': { main: './index.js', defaultExtension: 'js', }, }, packageConfigPaths: [ 'npm:@devextreme/*/package.json', 'npm:@devextreme/runtime@3.0.12/inferno/package.json', ], babelOptions: { sourceMaps: false, stage0: true, }, }; System.config(window.config);
export interface Employee { ID: number; FullName: string; Title: string; Employee_Picture: string; Picture: string; MobilePhone: string; } export const employees: Employee[] = [ { ID: 1, FullName: 'John Heart', Title: 'CEO', Employee_Picture: '01.png', Picture: '../../../../images/employees/01.png', MobilePhone: '2135559392', }, { ID: 2, FullName: 'Samantha Bright', Title: 'COO', Employee_Picture: '30.png', Picture: '../../../../images/employees/30.png', MobilePhone: '2135552858', }, { ID: 3, FullName: 'Arthur Miller', Title: 'CTO', Employee_Picture: '10.png', Picture: '../../../../images/employees/10.png', MobilePhone: '3105558583', }, { ID: 4, FullName: 'Robert Reagan', Title: 'CMO', Employee_Picture: '03.png', Picture: '../../../../images/employees/03.png', MobilePhone: '8185552387', }, { ID: 5, FullName: 'Greta Sims', Title: 'HR Manager', Employee_Picture: '04.png', Picture: '../../../../images/employees/04.png', MobilePhone: '8185556546', }, { ID: 6, FullName: 'Brett Wade', Title: 'IT Manager', Employee_Picture: '05.png', Picture: '../../../../images/employees/05.png', MobilePhone: '6265550358', }, { ID: 7, FullName: 'Sandra Johnson', Title: 'Controller', Employee_Picture: '06.png', Picture: '../../../../images/employees/06.png', MobilePhone: '5625552082', }, { ID: 8, FullName: 'Ed Holmes', Title: 'Sales Manager', Employee_Picture: '11.png', Picture: '../../../../images/employees/11.png', MobilePhone: '3105551288', }, { ID: 9, FullName: 'Barb Banks', Title: 'Support Manager', Employee_Picture: '20.png', Picture: '../../../../images/employees/20.png', MobilePhone: '3105553355', }, { ID: 10, FullName: 'Kevin Carter', Title: 'Shipping Manager', Employee_Picture: '07.png', Picture: '../../../../images/employees/07.png', MobilePhone: '2135552840', }, { ID: 11, FullName: 'Cindy Stanwick', Title: 'HR Assistant', Employee_Picture: '08.png', Picture: '../../../../images/employees/08.png', MobilePhone: '8185556655', }, { ID: 12, FullName: 'Sammy Hill', Title: 'Sales Assistant', Employee_Picture: '12.png', Picture: '../../../../images/employees/12.png', MobilePhone: '6265557292', }, { ID: 13, FullName: 'Davey Jones', Title: 'Shipping Assistant', Employee_Picture: '13.png', Picture: '../../../../images/employees/13.png', MobilePhone: '6265550281', }, { ID: 14, FullName: 'Victor Norris', Title: 'Shipping Assistant', Employee_Picture: '14.png', Picture: '../../../../images/employees/14.png', MobilePhone: '2135559278', }, { ID: 15, FullName: 'Mary Stern', Title: 'Shipping Assistant', Employee_Picture: '15.png', Picture: '../../../../images/employees/15.png', MobilePhone: '8185557857', }, { ID: 16, FullName: 'Robin Cosworth', Title: 'Shipping Assistant', Employee_Picture: '16.png', Picture: '../../../../images/employees/16.png', MobilePhone: '8185550942', }, { ID: 17, FullName: 'Kelly Rodriguez', Title: 'Support Assistant', Employee_Picture: '17.png', Picture: '../../../../images/employees/17.png', MobilePhone: '8185559248', }, { ID: 18, FullName: 'James Anderson', Title: 'Support Assistant', Employee_Picture: '18.png', Picture: '../../../../images/employees/18.png', MobilePhone: '3235554702', }, { ID: 19, FullName: 'Antony Remmen', Title: 'Support Assistant', Employee_Picture: '19.png', Picture: '../../../../images/employees/19.png', MobilePhone: '3105556625', }, { ID: 20, FullName: 'Olivia Peyton', Title: 'Sales Assistant', Employee_Picture: '09.png', Picture: '../../../../images/employees/09.png', MobilePhone: '3105552728', }, { ID: 21, FullName: 'Taylor Riley', Title: 'Network Admin', Employee_Picture: '21.png', Picture: '../../../../images/employees/21.png', MobilePhone: '3105557276', }, { ID: 22, FullName: 'Amelia Harper', Title: 'Network Admin', Employee_Picture: '22.png', Picture: '../../../../images/employees/22.png', MobilePhone: '2135554276', }, { ID: 23, FullName: 'Wally Hobbs', Title: 'Programmer', Employee_Picture: '23.png', Picture: '../../../../images/employees/23.png', MobilePhone: '8185558872', }, { ID: 24, FullName: 'Brad Jameson', Title: 'Programmer', Employee_Picture: '24.png', Picture: '../../../../images/employees/24.png', MobilePhone: '8185554646', }, { ID: 25, FullName: 'Karen Goodson', Title: 'Programmer', Employee_Picture: '25.png', Picture: '../../../../images/employees/25.png', MobilePhone: '6265550908', }, { ID: 26, FullName: 'Marcus Orbison', Title: 'Travel Coordinator', Employee_Picture: '26.png', Picture: '../../../../images/employees/26.png', MobilePhone: '2135557098', }, { ID: 27, FullName: 'Sandy Bright', Title: 'Benefits Coordinator', Employee_Picture: '27.png', Picture: '../../../../images/employees/27.png', MobilePhone: '8185550524', }, { ID: 28, FullName: 'Morgan Kennedy', Title: 'Graphic Designer', Employee_Picture: '28.png', Picture: '../../../../images/employees/28.png', MobilePhone: '8185558238', }, { ID: 29, FullName: 'Violet Bailey', Title: 'Jr Graphic Designer', Employee_Picture: '29.png', Picture: '../../../../images/employees/29.png', MobilePhone: '8185552478', }, { ID: 30, FullName: 'Ken Samuelson', Title: 'Ombudsman', Employee_Picture: '02.png', Picture: '../../../../images/employees/02.png', MobilePhone: '5625559282', }, { ID: 31, FullName: 'Nat Maguiree', Title: 'Trainer', Employee_Picture: '31.png', Picture: '../../../../images/employees/31.png', MobilePhone: '5625558377', }, { ID: 32, FullName: 'Bart Arnaz', Title: 'Director of Engineering', Employee_Picture: '32.png', Picture: '../../../../images/employees/32.png', MobilePhone: '7145552000', }, { ID: 33, FullName: 'Leah Simpson', Title: 'Test Coordinator', Employee_Picture: '33.png', Picture: '../../../../images/employees/33.png', MobilePhone: '5625595830', }, { ID: 34, FullName: 'Arnie Schwartz', Title: 'Engineer', Employee_Picture: '34.png', Picture: '../../../../images/employees/34.png', MobilePhone: '7145558882', }, { ID: 35, FullName: 'Billy Zimmer', Title: 'Engineer', Employee_Picture: '51.png', Picture: '../../../../images/employees/51.png', MobilePhone: '9095556939', }, { ID: 36, FullName: 'Samantha Piper', Title: 'Engineer', Employee_Picture: '35.png', Picture: '../../../../images/employees/35.png', MobilePhone: '3235554512', }, { ID: 37, FullName: 'Maggie Boxter', Title: 'Engineer', Employee_Picture: '36.png', Picture: '../../../../images/employees/36.png', MobilePhone: '7145557239', }, { ID: 38, FullName: 'Terry Bradley', Title: 'QA Engineer', Employee_Picture: '37.png', Picture: '../../../../images/employees/37.png', MobilePhone: '8055552788', }, { ID: 39, FullName: 'Gabe Jones', Title: 'Retail Coordinator', Employee_Picture: '38.png', Picture: '../../../../images/employees/38.png', MobilePhone: '3105555395', }, { ID: 40, FullName: 'Lucy Ball', Title: 'Sales Assistant', Employee_Picture: '39.png', Picture: '../../../../images/employees/39.png', MobilePhone: '3105553357', }, { ID: 41, FullName: 'Jim Packard', Title: 'Retail Sales Manager', Employee_Picture: '40.png', Picture: '../../../../images/employees/40.png', MobilePhone: '6615558224', }, { ID: 42, FullName: 'Hannah Brookly', Title: 'Online Sales Manager', Employee_Picture: '41.png', Picture: '../../../../images/employees/41.png', MobilePhone: '8055553627', }, { ID: 43, FullName: 'Harv Mudd', Title: 'Retail Sales Manager', Employee_Picture: '42.png', Picture: '../../../../images/employees/42.png', MobilePhone: '8315553895', }, { ID: 44, FullName: 'Clark Morgan', Title: 'Retail Sales Manager', Employee_Picture: '43.png', Picture: '../../../../images/employees/43.png', MobilePhone: '9255552525', }, { ID: 45, FullName: 'Todd Hoffman', Title: 'Retail Sales Manager', Employee_Picture: '44.png', Picture: '../../../../images/employees/44.png', MobilePhone: '9255553579', }, { ID: 46, FullName: 'Jackie Garmin', Title: 'Support Assistant', Employee_Picture: '45.png', Picture: '../../../../images/employees/45.png', MobilePhone: '2135551824', }, { ID: 47, FullName: 'Lincoln Bartlett', Title: 'Sales Assistant', Employee_Picture: '46.png', Picture: '../../../../images/employees/46.png', MobilePhone: '2135558272', }, { ID: 48, FullName: 'Brad Farkus', Title: 'Engineer', Employee_Picture: '47.png', Picture: '../../../../images/employees/47.png', MobilePhone: '2135553626', }, { ID: 49, FullName: 'Jenny Hobbs', Title: 'Shipping Assistant', Employee_Picture: '48.png', Picture: '../../../../images/employees/48.png', MobilePhone: '3105552668', }, { ID: 50, FullName: 'Dallas Lou', Title: 'Shipping Assistant', Employee_Picture: '49.png', Picture: '../../../../images/employees/49.png', MobilePhone: '2135558357', }, { ID: 51, FullName: 'Stu Pizaro', Title: 'Engineer', Employee_Picture: '50.png', Picture: '../../../../images/employees/50.png', MobilePhone: '2135552552', }, ];
import { createApp } from 'vue'; import App from './App.vue'; createApp(App).mount('.container');
<!DOCTYPE html> <html lang="en"> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/24.2.7/css/dx.light.css" /> <script type="module"> import * as vueCompilerSFC from "https://cdn.jsdelivr.net/npm/@vue/compiler-sfc@3.4.27/dist/compiler-sfc.esm-browser.js"; window.vueCompilerSFC = vueCompilerSFC; </script> <script src="https://cdn.jsdelivr.net/npm/typescript@5.4.5/lib/typescript.js"></script> <script src="https://cdn.jsdelivr.net/npm/core-js@2.6.12/client/shim.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/systemjs@0.21.3/dist/system.js"></script> <script type="text/javascript" src="config.js"></script> <script type="text/javascript"> System.import("./index.ts"); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <div class="container"></div> </div> </body> </html>