![NPM version](https://img.shields.io/npm/v/vue-plain-pagination.svg?style=flat-square)
A simple pagination component for Vue.
Online demo: JSFiddle
(used styles from Bootstrap 4)
Dependencies
- Vue.js 2 - progressive JavaScript framework
Installation
via Yarn
yarn add vue-plain-pagination
via NPM
npm install vue-plain-pagination
via CDN
<script src="//unpkg.com/vue-plain-pagination@0.2.1"></script>
Usage
Basic
after Yarn/NPM installation
<template>
<div>
<p>Current page: {{ currentPage }}</p>
<v-pagination v-model="currentPage" :page-count="30"></v-pagination>
</div>
</template>
<script>
import vPagination from 'vue-plain-pagination'
export default {
components: { vPagination },
data() {
return {
currentPage: 1
}
}
}
</script>
via CDN
<!doctype html>
<html lang="en">
<head>
<title>vue-plain-pagination</title>
</head>
<body>
<div id="app">
<p>page: {{ currentPage }}</p>
<v-pagination v-model="currentPage" :page-count="total"></v-pagination>
</div>
<script src="//unpkg.com/vue"></script>
<script src="//unpkg.com/vue-plain-pagination"></script>
<script>
Vue.component('v-pagination', window['vue-plain-pagination'])
new Vue({
el: '#app',
data: {
currentPage: 5,
total: 9,
},
})
</script>
</body>
</html>
Customization
Using classes
and labels
you can change default CSS class names of every HTML tag of pagination and anchor from
first/prev/next/last buttons.
<template>
<div>
<p>Current page: {{ currentPage }}</p>
<v-pagination v-model="currentPage"
:page-count="totalPages"
:classes="bootstrapPaginationClasses"
:labels="paginationAnchorTexts"></v-pagination>
</div>
</template>
<script>
import vPagination from 'vue-plain-pagination'
export default {
components: { vPagination },
data() {
return {
currentPage: 1,
totalPages: 30,
bootstrapPaginationClasses: {
ul: 'pagination',
li: 'page-item',
liActive: 'active',
liDisable: 'disabled',
button: 'page-link'
},
paginationAnchorTexts: {
first: 'First',
prev: 'Previous',
next: 'Next',
last: 'Last'
}
}
}
}
</script>
demo: JSFiddle
Properties
name | type | required | |
---|
v-model | Number | yes | Current page. |
page-count | Number | yes | Number of pages. |
classes | Object | no | Class names of used HTML tag. |
labels | Object | no | HTML/text of prev/next button. |
Default value of classes
:
{
ul: 'pagination',
li: 'pagination-item',
liActive: 'pagination-item--active',
liDisable: 'pagination-item--disable',
button: 'pagination-link',
buttonActive: 'pagination-link--active',
buttonDisable: 'pagination-link--disable'
}
Default value of labels
:
{
first: '«',
prev: '‹',
next: '›',
last: '»'
}
Contributing
Files structure is generated by Vue CLI 3 (babel, eslint).
via Yarn
yarn install
yarn run serve
yarn run build-lib
yarn run lint
via NPM
npm install
npm run serve
npm run build-lib
npm run lint
License
Code released under the MIT license.