123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', { value: true });
- var vue = require('vue');
- var iconsVue = require('@element-plus/icons-vue');
- require('../../../utils/index.js');
- require('../../../hooks/index.js');
- require('../../../tokens/index.js');
- var prev = require('./components/prev2.js');
- var next = require('./components/next2.js');
- var sizes = require('./components/sizes2.js');
- var jumper = require('./components/jumper2.js');
- var total = require('./components/total2.js');
- var pager = require('./components/pager2.js');
- var runtime = require('../../../utils/vue/props/runtime.js');
- var core = require('@vueuse/core');
- var typescript = require('../../../utils/typescript.js');
- var icon = require('../../../utils/vue/icon.js');
- var index = require('../../../hooks/use-locale/index.js');
- var index$1 = require('../../../hooks/use-namespace/index.js');
- var pagination = require('../../../tokens/pagination.js');
- var error = require('../../../utils/error.js');
- const isAbsent = (v) => typeof v !== "number";
- const paginationProps = runtime.buildProps({
- total: Number,
- pageSize: Number,
- defaultPageSize: Number,
- currentPage: Number,
- defaultCurrentPage: Number,
- pageCount: Number,
- pagerCount: {
- type: Number,
- validator: (value) => {
- return core.isNumber(value) && Math.trunc(value) === value && value > 4 && value < 22 && value % 2 === 1;
- },
- default: 7
- },
- layout: {
- type: String,
- default: ["prev", "pager", "next", "jumper", "->", "total"].join(", ")
- },
- pageSizes: {
- type: runtime.definePropType(Array),
- default: () => typescript.mutable([10, 20, 30, 40, 50, 100])
- },
- popperClass: {
- type: String,
- default: ""
- },
- prevText: {
- type: String,
- default: ""
- },
- prevIcon: {
- type: icon.iconPropType,
- default: () => iconsVue.ArrowLeft
- },
- nextText: {
- type: String,
- default: ""
- },
- nextIcon: {
- type: icon.iconPropType,
- default: () => iconsVue.ArrowRight
- },
- small: Boolean,
- background: Boolean,
- disabled: Boolean,
- hideOnSinglePage: Boolean
- });
- const paginationEmits = {
- "update:current-page": (val) => core.isNumber(val),
- "update:page-size": (val) => core.isNumber(val),
- "size-change": (val) => core.isNumber(val),
- "current-change": (val) => core.isNumber(val),
- "prev-click": (val) => core.isNumber(val),
- "next-click": (val) => core.isNumber(val)
- };
- const componentName = "ElPagination";
- var Pagination = vue.defineComponent({
- name: componentName,
- props: paginationProps,
- emits: paginationEmits,
- setup(props, { emit, slots }) {
- const { t } = index.useLocale();
- const ns = index$1.useNamespace("pagination");
- const vnodeProps = vue.getCurrentInstance().vnode.props || {};
- const hasCurrentPageListener = "onUpdate:currentPage" in vnodeProps || "onUpdate:current-page" in vnodeProps || "onCurrentChange" in vnodeProps;
- const hasPageSizeListener = "onUpdate:pageSize" in vnodeProps || "onUpdate:page-size" in vnodeProps || "onSizeChange" in vnodeProps;
- const assertValidUsage = vue.computed(() => {
- if (isAbsent(props.total) && isAbsent(props.pageCount))
- return false;
- if (!isAbsent(props.currentPage) && !hasCurrentPageListener)
- return false;
- if (props.layout.includes("sizes")) {
- if (!isAbsent(props.pageCount)) {
- if (!hasPageSizeListener)
- return false;
- } else if (!isAbsent(props.total)) {
- if (!isAbsent(props.pageSize)) {
- if (!hasPageSizeListener) {
- return false;
- }
- } else {
- }
- }
- }
- return true;
- });
- const innerPageSize = vue.ref(isAbsent(props.defaultPageSize) ? 10 : props.defaultPageSize);
- const innerCurrentPage = vue.ref(isAbsent(props.defaultCurrentPage) ? 1 : props.defaultCurrentPage);
- const pageSizeBridge = vue.computed({
- get() {
- return isAbsent(props.pageSize) ? innerPageSize.value : props.pageSize;
- },
- set(v) {
- if (isAbsent(props.pageSize)) {
- innerPageSize.value = v;
- }
- if (hasPageSizeListener) {
- emit("update:page-size", v);
- emit("size-change", v);
- }
- }
- });
- const pageCountBridge = vue.computed(() => {
- let pageCount = 0;
- if (!isAbsent(props.pageCount)) {
- pageCount = props.pageCount;
- } else if (!isAbsent(props.total)) {
- pageCount = Math.max(1, Math.ceil(props.total / pageSizeBridge.value));
- }
- return pageCount;
- });
- const currentPageBridge = vue.computed({
- get() {
- return isAbsent(props.currentPage) ? innerCurrentPage.value : props.currentPage;
- },
- set(v) {
- let newCurrentPage = v;
- if (v < 1) {
- newCurrentPage = 1;
- } else if (v > pageCountBridge.value) {
- newCurrentPage = pageCountBridge.value;
- }
- if (isAbsent(props.currentPage)) {
- innerCurrentPage.value = newCurrentPage;
- }
- if (hasCurrentPageListener) {
- emit("update:current-page", newCurrentPage);
- emit("current-change", newCurrentPage);
- }
- }
- });
- vue.watch(pageCountBridge, (val) => {
- if (currentPageBridge.value > val)
- currentPageBridge.value = val;
- });
- function handleCurrentChange(val) {
- currentPageBridge.value = val;
- }
- function handleSizeChange(val) {
- pageSizeBridge.value = val;
- const newPageCount = pageCountBridge.value;
- if (currentPageBridge.value > newPageCount) {
- currentPageBridge.value = newPageCount;
- }
- }
- function prev$1() {
- if (props.disabled)
- return;
- currentPageBridge.value -= 1;
- emit("prev-click", currentPageBridge.value);
- }
- function next$1() {
- if (props.disabled)
- return;
- currentPageBridge.value += 1;
- emit("next-click", currentPageBridge.value);
- }
- function addClass(element, cls) {
- if (element) {
- if (!element.props) {
- element.props = {};
- }
- element.props.class = [element.props.class, cls].join(" ");
- }
- }
- vue.provide(pagination.elPaginationKey, {
- pageCount: pageCountBridge,
- disabled: vue.computed(() => props.disabled),
- currentPage: currentPageBridge,
- changeEvent: handleCurrentChange,
- handleSizeChange
- });
- return () => {
- var _a, _b;
- if (!assertValidUsage.value) {
- error.debugWarn(componentName, t("el.pagination.deprecationWarning"));
- return null;
- }
- if (!props.layout)
- return null;
- if (props.hideOnSinglePage && pageCountBridge.value <= 1)
- return null;
- const rootChildren = [];
- const rightWrapperChildren = [];
- const rightWrapperRoot = vue.h("div", { class: ns.e("rightwrapper") }, rightWrapperChildren);
- const TEMPLATE_MAP = {
- prev: vue.h(prev["default"], {
- disabled: props.disabled,
- currentPage: currentPageBridge.value,
- prevText: props.prevText,
- prevIcon: props.prevIcon,
- onClick: prev$1
- }),
- jumper: vue.h(jumper["default"], {
- size: props.small ? "small" : "default"
- }),
- pager: vue.h(pager["default"], {
- currentPage: currentPageBridge.value,
- pageCount: pageCountBridge.value,
- pagerCount: props.pagerCount,
- onChange: handleCurrentChange,
- disabled: props.disabled
- }),
- next: vue.h(next["default"], {
- disabled: props.disabled,
- currentPage: currentPageBridge.value,
- pageCount: pageCountBridge.value,
- nextText: props.nextText,
- nextIcon: props.nextIcon,
- onClick: next$1
- }),
- sizes: vue.h(sizes["default"], {
- pageSize: pageSizeBridge.value,
- pageSizes: props.pageSizes,
- popperClass: props.popperClass,
- disabled: props.disabled,
- size: props.small ? "small" : "default"
- }),
- slot: (_b = (_a = slots == null ? void 0 : slots.default) == null ? void 0 : _a.call(slots)) != null ? _b : null,
- total: vue.h(total["default"], { total: isAbsent(props.total) ? 0 : props.total })
- };
- const components = props.layout.split(",").map((item) => item.trim());
- let haveRightWrapper = false;
- components.forEach((c) => {
- if (c === "->") {
- haveRightWrapper = true;
- return;
- }
- if (!haveRightWrapper) {
- rootChildren.push(TEMPLATE_MAP[c]);
- } else {
- rightWrapperChildren.push(TEMPLATE_MAP[c]);
- }
- });
- addClass(rootChildren[0], ns.is("first"));
- addClass(rootChildren[rootChildren.length - 1], ns.is("last"));
- if (haveRightWrapper && rightWrapperChildren.length > 0) {
- addClass(rightWrapperChildren[0], ns.is("first"));
- addClass(rightWrapperChildren[rightWrapperChildren.length - 1], ns.is("last"));
- rootChildren.push(rightWrapperRoot);
- }
- return vue.h("div", {
- role: "pagination",
- "aria-label": "pagination",
- class: [
- ns.b(),
- ns.is("background", props.background),
- {
- [ns.m("small")]: props.small
- }
- ]
- }, rootChildren);
- };
- }
- });
- exports["default"] = Pagination;
- exports.paginationEmits = paginationEmits;
- exports.paginationProps = paginationProps;
- //# sourceMappingURL=pagination.js.map
|