300c8a13a9
- composer updates
51 lines
1.2 KiB
TypeScript
51 lines
1.2 KiB
TypeScript
import { Component, Prop } from 'vue-property-decorator';
|
|
import Vue from "vue";
|
|
|
|
@Component
|
|
export default class VsPagination extends Vue {
|
|
|
|
pageNumber: number = 0; // default to page 0
|
|
|
|
@Prop()
|
|
data;
|
|
|
|
@Prop({ default: 4 }) readonly offset: number;
|
|
|
|
changePage(page) {
|
|
if (page == this.data.current_page) {
|
|
return;
|
|
}
|
|
this.data.current_page = page;
|
|
let from = (page * this.data.per_page) - this.data.per_page;
|
|
this.$emit('paginate', from);
|
|
}
|
|
|
|
get numberOfPages() {
|
|
return Math.ceil(this.data.total / this.data.per_page);
|
|
}
|
|
|
|
get pages() {
|
|
let numberOfPages = Math.ceil(this.data.total / this.data.per_page);
|
|
|
|
// if (!this.data.to) {
|
|
// return [];
|
|
// }
|
|
let from = this.data.current_page - this.data.per_page;
|
|
if (from < 1) {
|
|
from = 1;
|
|
}
|
|
let to = from + (this.data.per_page * 2);
|
|
if (to >= numberOfPages) {
|
|
to = numberOfPages;
|
|
}
|
|
let pagesArray = [];
|
|
for (let page = from; page <= to; page++) {
|
|
pagesArray.push(page);
|
|
}
|
|
return pagesArray;
|
|
}
|
|
|
|
mounted() {
|
|
}
|
|
}
|