vue-admin-core
Version:
A Component Library for Vue 3
120 lines (115 loc) • 2.52 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
require('../../../utils/index.js');
var elementPlus = require('element-plus');
var scrollTo = require('../../../utils/scrollTo.js');
var Pagination = vue.defineComponent({
name: "VacPagination",
inheritAttrs: false,
props: {
total: {
type: Number,
default: 0
},
page: {
type: Number,
default: 1
},
limit: {
type: Number,
default: 10
},
pageSizes: {
type: Array,
default: () => [10, 20, 30, 50]
},
// 移动端页码按钮的数量端默认值5
pagerCount: {
type: Number,
default: document.body.clientWidth < 992 ? 5 : 7
},
layout: {
type: String,
default: "total, sizes, prev, pager, next, jumper"
},
background: {
type: Boolean,
default: true
},
autoScroll: {
type: Boolean,
default: true
},
hidden: {
type: Boolean,
default: false
},
float: {
type: String,
default: "right"
}
},
emits: ["update:page", "update:limit", "pagination"],
setup(props, {
attrs,
emit
}) {
const currentPage = vue.computed({
get() {
return props.page;
},
set(val) {
emit("update:page", val);
}
});
const pageSize = vue.computed({
get() {
return props.limit;
},
set(val) {
emit("update:limit", val);
}
});
function handleSizeChange(val) {
if (currentPage.value * val > props.total) {
currentPage.value = 1;
}
emit("pagination", {
page: currentPage.value,
limit: val
});
if (props.autoScroll) {
scrollTo.scrollTo(0, 800);
}
}
function handleCurrentChange(val) {
emit("pagination", {
page: val,
limit: pageSize.value
});
if (props.autoScroll) {
scrollTo.scrollTo(0, 800);
}
}
return () => vue.h("div", {
class: ["pagination-container", {
hidden: props.hidden
}]
}, {
default: () => [
// @ts-ignore
vue.h(elementPlus.ElPagination, {
...attrs,
...props,
currentPage: currentPage.value,
pageSize: pageSize.value,
onSizeChange: handleSizeChange,
onCurrentChange: handleCurrentChange
})
]
});
}
});
exports.default = Pagination;
//# sourceMappingURL=index.js.map