vuux
Version:
Vue3 Nuxt3 Nuxt4 组件库
34 lines (33 loc) • 1.12 kB
JavaScript
import { computed as a, ref as P, watch as d } from "vue";
const q = (u, r) => {
const c = a(() => u.morePageCount), e = P(u.pageNum || 1), n = a(() => Math.ceil(u.total / u.pageSize)), i = a(() => u.hide ? !(n.value <= 1 || u.total === 0) : !0), l = a(() => u.queryField), s = a(() => {
const t = [], o = Math.max(2, e.value - 2), x = Math.min(n.value - 1, e.value + 2);
t.push(1);
for (let v = o; v <= x; v++)
t.push(v);
return n.value > 1 && t.push(n.value), t;
}), m = a(() => l.value + Math.max(1, e.value - 1)), g = a(() => l.value + Math.min(n.value, e.value + 1)), h = a(() => l.value + (e.value - c.value)), M = a(() => l.value + (e.value + c.value)), f = (t) => {
const o = Math.min(Math.max(1, t), n.value);
o !== e.value && (e.value = o, r("update:pageNum", o));
};
return d(
() => u.pageNum,
(t) => {
t !== e.value && (e.value = t);
}
), {
currentNum: e,
totalPages: n,
isHide: i,
queryTxet: l,
pages: s,
toPrev: m,
toNext: g,
leftMore: h,
rightMore: M,
setPage: f
};
};
export {
q as useNuxtPagination
};