plus-pro-components
Version:
Page level components developed based on Element Plus.
84 lines (79 loc) • 2.61 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
require('../../../constants/index.js');
var elementPlus = require('element-plus');
var page = require('../../../constants/page.js');
const _hoisted_1 = { class: "plus-pagination" };
const _hoisted_2 = /* @__PURE__ */ vue.createElementVNode(
"span",
null,
null,
-1
/* HOISTED */
);
const _hoisted_3 = /* @__PURE__ */ vue.createElementVNode(
"span",
null,
null,
-1
/* HOISTED */
);
var _sfc_main = /* @__PURE__ */ vue.defineComponent({
...{
name: "PlusPagination"
},
__name: "index",
props: {
modelValue: { default: () => ({ ...page.DefaultPageInfo }) },
total: { default: 0 },
pageSizeList: { default: () => [...page.DefaultPageSizeList] },
align: { default: "right" }
},
emits: ["update:modelValue", "change", "size-change", "current-change"],
setup(__props, { emit: __emit }) {
const props = __props;
const emit = __emit;
const pageInfo = vue.ref({ ...page.DefaultPageInfo });
vue.watchEffect(() => {
pageInfo.value = { ...props.modelValue };
});
const handleEmit = () => {
emit("update:modelValue", pageInfo.value);
emit("change", pageInfo.value);
};
const handleSizeChange = (pageSize) => {
pageInfo.value.pageSize = pageSize;
pageInfo.value.page = 1;
handleEmit();
emit("size-change", pageSize);
};
const handleCurrentChange = (page) => {
pageInfo.value.page = page;
handleEmit();
emit("current-change", page);
};
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
_ctx.align === "right" ? vue.renderSlot(_ctx.$slots, "pagination-left", { key: 0 }, () => [
_hoisted_2
]) : vue.createCommentVNode("v-if", true),
vue.createVNode(vue.unref(elementPlus.ElPagination), vue.mergeProps({
layout: "total, sizes, prev, pager, next, jumper",
background: false,
"current-page": pageInfo.value.page,
"page-size": pageInfo.value.pageSize,
total: _ctx.total,
"page-sizes": _ctx.pageSizeList
}, _ctx.$attrs, {
onSizeChange: handleSizeChange,
onCurrentChange: handleCurrentChange
}), null, 16, ["current-page", "page-size", "total", "page-sizes"]),
_ctx.align === "left" ? vue.renderSlot(_ctx.$slots, "pagination-right", { key: 1 }, () => [
_hoisted_3
]) : vue.createCommentVNode("v-if", true)
]);
};
}
});
exports.default = _sfc_main;