UNPKG

@opentiny/vue-renderless

Version:

An enterprise-class UI component library, support both Vue.js 2 and Vue.js 3, as well as PC and mobile.

108 lines (107 loc) 3.07 kB
import "../chunk-G2ADBYYC.js"; const getPages = ({ props, state }) => () => { const pagerCount = props.pagerCount; const halfPagerCount = (pagerCount - 1) / 2; const currentPage = Number(props.currentPage); const pageCount = Number(props.pageCount); let showPrevMore = false; let showNextMore = false; if (pageCount > pagerCount) { if (currentPage < pageCount - halfPagerCount) { showNextMore = true; } if (currentPage > pagerCount - halfPagerCount) { showPrevMore = true; } } const pages = []; if (showPrevMore && !showNextMore) { const startPage = pageCount - (pagerCount - 2); for (let i = startPage; i < pageCount; i++) { pages.push(i); } } else if (!showPrevMore && showNextMore) { for (let i = 2; i < pagerCount; i++) { pages.push(i); } } else if (showPrevMore && showNextMore) { const offset = Math.floor(pagerCount / 2) - 1; for (let i = currentPage - offset; i <= currentPage + offset; i++) { pages.push(i); } } else { for (let i = 2; i < pageCount; i++) { pages.push(i); } } state.showPrevMore = showPrevMore; state.showNextMore = showNextMore; return pages; }; const getClassListVal = (parentNode) => { let classListVal = []; const classList = parentNode.classList; if (classList) { let index = 0; for (const key in classList) { if (Object.prototype.hasOwnProperty.call(classList, key) && typeof Number(key) === "number") { classListVal[index] = classList[key]; index++; } } } else { classListVal = parentNode.className.split(/\s+/); } return classListVal; }; const onPagerClick = ({ emit, props, vm }) => (event) => { const target = event.target; if (target.tagName === "UL" || props.disabled) { return; } let newPage = Number(event.target.textContent); const { tagName, parentNode } = target; const parentEl = tagName === "LI" ? target : tagName === "svg" ? parentNode : parentNode.parentNode; const pageCount = props.pageCount; const currentPage = props.currentPage; const pagerCountOffset = props.pagerCount - 2; if (parentEl === vm.$refs.prev) { newPage = currentPage - pagerCountOffset; } else if (parentEl === vm.$refs.next) { newPage = currentPage + pagerCountOffset; } if (!isNaN(newPage)) { if (newPage < 1) { newPage = 1; } if (newPage > pageCount) { newPage = pageCount; } } const callback = () => { if (newPage !== currentPage) { emit("change", newPage); } }; if (props.isBeforePageChange && newPage !== currentPage) { let params = { newPage, currentPage, callback }; vm.$parent.$parent.beforePagerChangeHandler(params); } else { callback(); } }; const onMouseenter = ({ props, state }) => (direction) => { if (props.disabled) { return; } if (direction === "left") { state.quickprevIconClass = props.doubleLeftIcon; } else { state.quicknextIconClass = props.doubleRightIcon; } }; export { getPages, onMouseenter, onPagerClick };