bootstrap-vue
Version:
With more than 85 components, over 45 available plugins, several directives, and 1000+ icons, BootstrapVue provides one of the most comprehensive implementations of the Bootstrap v4 component and grid system available for Vue.js v2.6, complete with extens
39 lines (33 loc) • 1.46 kB
JavaScript
import { extend } from '../../../vue';
import { PROP_TYPE_NUMBER_STRING } from '../../../constants/props';
import { mathMax } from '../../../utils/math';
import { toInteger } from '../../../utils/number';
import { makeProp } from '../../../utils/props';
import { safeVueInstance } from '../../../utils/safe-vue-instance'; // --- Props ---
export var props = {
currentPage: makeProp(PROP_TYPE_NUMBER_STRING, 1),
perPage: makeProp(PROP_TYPE_NUMBER_STRING, 0)
}; // --- Mixin ---
// @vue/component
export var paginationMixin = extend({
props: props,
computed: {
localPaging: function localPaging() {
return this.hasProvider ? !!this.noProviderPaging : true;
},
paginatedItems: function paginatedItems() {
var _safeVueInstance = safeVueInstance(this),
sortedItems = _safeVueInstance.sortedItems,
filteredItems = _safeVueInstance.filteredItems,
localItems = _safeVueInstance.localItems;
var items = sortedItems || filteredItems || localItems || [];
var currentPage = mathMax(toInteger(this.currentPage, 1), 1);
var perPage = mathMax(toInteger(this.perPage, 0), 0); // Apply local pagination
if (this.localPaging && perPage) {
// Grab the current page of data (which may be past filtered items limit)
items = items.slice((currentPage - 1) * perPage, currentPage * perPage);
} // Return the items to display in the table
return items;
}
}
});