Skip to content

Commit 3ee5b58

Browse files
committed
feat: add pageItemsCount computed property (#35)
1 parent a6f30aa commit 3ee5b58

File tree

5 files changed

+42
-5
lines changed

5 files changed

+42
-5
lines changed

examples/App.vue

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
22
<div id="app">
33
<h1>Vue-Paginate v3.0</h1>
4-
<paginate name="items" :list="items" class="paginate-list">
4+
<paginate name="items" :list="items" ref="paginator" class="paginate-list">
55
<li v-for="item in paginated('items')">
66
{{ item }}
77
</li>
@@ -21,6 +21,9 @@
2121
next: 'Next »',
2222
prev: '« Back'
2323
}"></paginate-links>
24+
<span v-if="$refs.paginator">
25+
Viewing {{$refs.paginator.pageItemsCount}} results
26+
</span>
2427
</div>
2528
</template>
2629

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
"uglify-js": "^2.6.2",
7474
"vue-loader": "^10.0.2",
7575
"vue-style-loader": "^1.0.0",
76-
"vue-template-compiler": "^2.1.8",
76+
"vue-template-compiler": "2.3.3",
7777
"watchify": "^3.7.0",
7878
"webpack": "^1.14.0",
7979
"webpack-dev-server": "^1.16.2"

src/components/Paginate.js

+6
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ export default {
3636
set (page) {
3737
this.$parent.paginate[this.name].page = page
3838
}
39+
},
40+
pageItemsCount () {
41+
const numOfItems = this.list.length
42+
const first = this.currentPage * this.per + 1
43+
const last = Math.min((this.currentPage * this.per) + this.per, numOfItems)
44+
return `${first}-${last} of ${numOfItems}`
3945
}
4046
},
4147
mounted () {

test/Paginate.js

+28
Original file line numberDiff line numberDiff line change
@@ -160,4 +160,32 @@ describe('Paginate.vue', () => {
160160
done()
161161
})
162162
})
163+
164+
it('has page items count descripiton', (done) => {
165+
vm = new Vue({
166+
template: `
167+
<div>
168+
<paginate ref="paginate"
169+
name="langs"
170+
:list="langs"
171+
:per="2"
172+
class="test-paginate"
173+
></paginate>
174+
</div>`,
175+
data: {
176+
langs: LANGS,
177+
paginate: {langs: { list: [], page: 0 }}
178+
},
179+
components: { Paginate }
180+
}).$mount()
181+
const paginator = vm.$refs.paginate
182+
Vue.nextTick(() => {
183+
expect(paginator.pageItemsCount).to.equal('1-2 of 8')
184+
vm.paginate.langs.page = 1
185+
Vue.nextTick(() => {
186+
expect(paginator.pageItemsCount).to.equal('3-4 of 8')
187+
done()
188+
})
189+
})
190+
})
163191
})

yarn.lock

+3-3
Original file line numberDiff line numberDiff line change
@@ -5045,9 +5045,9 @@ vue-style-loader@^1.0.0:
50455045
dependencies:
50465046
loader-utils "^0.2.7"
50475047

5048-
vue-template-compiler@^2.1.8:
5049-
version "2.1.8"
5050-
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.1.8.tgz#12dd1cc63793f59be580c694a61610cb9369d629"
5048+
vue-template-compiler@2.3.3:
5049+
version "2.3.3"
5050+
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.3.3.tgz#b5bab9ec57309c906b82a78c81a02179dbc2f470"
50515051
dependencies:
50525052
de-indent "^1.0.2"
50535053
he "^1.1.0"

0 commit comments

Comments
 (0)