@opensig/opendesign
Version:
<p align="center"><img src="../docs/public/opendesign-logo-light.png"/></p> <h1 align="center">opendesign</h1> <p align="center">一个 Vue 3 组件库</p> <p align="center"><b>皮肤可定制,使用 TypeScript</b></p>
75 lines (74 loc) • 1.9 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
function getNumbers(min, max) {
const arr = [];
for (let i = min; i <= max; i++) {
arr.push(i);
}
return arr;
}
function getPagerList(totalPage, currentPage = 1, showPageCount = 9) {
const activePage = currentPage > totalPage ? totalPage : currentPage;
const maxCount = showPageCount > 3 ? showPageCount : 3;
const pages = [];
if (totalPage <= maxCount) {
for (let i = 1; i <= totalPage; i++) {
pages.push({ value: i });
}
return pages;
}
pages[0] = { value: 1 };
pages[maxCount - 1] = { value: totalPage };
if (maxCount === 3) {
pages[1] = {
isMore: true,
value: "left",
list: getNumbers(2, totalPage - 1)
};
} else {
const d = (maxCount - 3) / 2;
let min = activePage - Math.floor(d);
let max = activePage + Math.ceil(d);
if (max > totalPage - 1) {
min -= max - totalPage + 1;
max = totalPage - 1;
}
if (min < 2) {
max += 2 - min;
min = 2;
}
if (min < 3) {
pages[1] = { value: 2 };
min = 2;
} else {
pages[1] = {
isMore: true,
value: "left",
list: getNumbers(2, min)
};
}
if (max > totalPage - 2) {
pages[maxCount - 2] = { value: totalPage - 1 };
max = totalPage - 1;
} else {
pages[maxCount - 2] = {
isMore: true,
value: "right",
list: getNumbers(max, totalPage - 1)
};
}
getNumbers(min + 1, max - 1).forEach((item, idx) => {
pages[2 + idx] = { value: item };
});
}
return pages;
}
function getSizeOptions(pageSizes, sufix, currentPageSize) {
return pageSizes.map((item) => ({
label: item + sufix,
value: item,
active: currentPageSize === item
}));
}
exports.getPagerList = getPagerList;
exports.getSizeOptions = getSizeOptions;