uikit/dist/remote/Pagination.js
Mohamadzadeh e1f501fa48
All checks were successful
Build and Deploy Next.js + Nginx Docker Image / build-and-deploy (push) Successful in 51s
Build and Deploy Next.js + Nginx Docker Image / deploy (push) Successful in 7s
fix
2026-07-14 11:07:19 +03:30

339 lines
8.7 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const H = {
full: {
showPageSummary: !0,
showTotalCount: !0,
showInput: !0,
inputWidth: "100px",
justifyContent: "space-around",
pageButtonPx: void 0,
getPageNumbers: ({ currentPage: t, totalPages: e }) => [
1,
t,
t + 1,
e
]
},
compact: {
showPageSummary: !1,
showTotalCount: !0,
showInput: !0,
inputWidth: "56px",
justifyContent: "space-around",
pageButtonPx: 2,
getPageNumbers: ({ currentPage: t, totalPages: e }) => [
1,
t,
e
]
},
simple: {
showPageSummary: !1,
showTotalCount: !1,
showInput: !1,
inputWidth: "48px",
justifyContent: "center",
pageButtonPx: void 0,
getPageNumbers: () => []
}
}, V = ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"], ne = /[۰-۹]/g, oe = /[٠-٩]/g;
function I() {
const t = window.__UIKIT_REMOTE_DEPS__, e = [];
if (t?.React || e.push("React"), t?.createRoot || e.push("createRoot"), t?.ChakraProvider || e.push("ChakraProvider"), t?.Button || e.push("Button"), t?.HStack || e.push("HStack"), t?.IconButton || e.push("IconButton"), t?.Input || e.push("Input"), t?.Text || e.push("Text"), e.length)
throw new Error(
`[uikit-pagination] Missing remote dependencies: ${e.join(", ")}. Set window.__UIKIT_REMOTE_DEPS__ before loading the remote component.`
);
return t;
}
function a(t) {
return t == null ? "" : String(t).replace(/\d/g, (e) => V[Number(e)]);
}
function G(t) {
return t == null ? "" : String(t).replace(
ne,
(e) => String(V.indexOf(e))
).replace(oe, (e) => String(e.charCodeAt(0) - 1632));
}
function re(t) {
return H[t] ? t : "full";
}
function W(t, e) {
const p = Number(t), h = Number(e);
return !h || h <= 0 || !p || Number.isNaN(p) ? 1 : Math.min(Math.max(p, 1), h);
}
function ie(t) {
const { React: e } = I();
return e.createElement(
"svg",
{
width: "20",
height: "20",
viewBox: "0 0 24 24",
fill: "none",
xmlns: "http://www.w3.org/2000/svg",
"aria-hidden": "true",
...t
},
e.createElement("path", {
d: "M9 18L15 12L9 6",
stroke: "currentColor",
strokeWidth: "2",
strokeLinecap: "round",
strokeLinejoin: "round"
})
);
}
function se(t) {
const { React: e } = I();
return e.createElement(
"svg",
{
width: "20",
height: "20",
viewBox: "0 0 24 24",
fill: "none",
xmlns: "http://www.w3.org/2000/svg",
"aria-hidden": "true",
...t
},
e.createElement("path", {
d: "M15 18L9 12L15 6",
stroke: "currentColor",
strokeWidth: "2",
strokeLinecap: "round",
strokeLinejoin: "round"
})
);
}
function ue({
currentPage: t = 1,
totalCount: e = 0,
totalPages: p,
pageSize: h = 10,
onPageChange: g,
level: v = "full",
...B
}) {
const { React: n, Button: K, HStack: k, IconButton: j, Input: O, Text: P } = I(), { useCallback: C, useEffect: N, useMemo: U, useRef: X, useState: R } = n, F = re(v), m = H[F], r = F === "simple", y = Number(h), $ = Number.isFinite(y) && y > 0 ? y : 10, L = Number(e), D = Number.isFinite(L) && L > 0 ? L : 0, A = Number(p), u = Number.isFinite(A) && A > 0 ? Math.ceil(A) : Math.ceil(D / $), i = W(t, u), [d, l] = R(
r ? "" : a(i)
), [E, b] = R(!1), [f, c] = R(null), _ = X(null), w = f ?? i, q = D > 0, J = U(() => r || u <= 0 ? [] : Array.from(
new Set(
m.getPageNumbers({
currentPage: i,
totalPages: u
})
)
).filter((o) => o >= 1 && o <= u).sort((o, s) => o - s), [m, r, i, u]), T = C(() => {
l(r ? "" : a(i)), b(!1), c(null);
}, [r, i]), M = C(
(o) => {
const s = W(o, u);
b(!1), l(r ? "" : a(i)), c(null), s !== i && g?.(s);
},
[r, g, i, u]
), S = C(() => {
if (!d) {
T(), _.current?.blur();
return;
}
const o = parseInt(G(d), 10);
if (Number.isNaN(o)) {
T(), _.current?.blur();
return;
}
const s = W(o, u);
if (r) {
b(!1), l(""), s !== i ? (c(s), g?.(s)) : c(null), _.current?.blur();
return;
}
s !== i ? (c(s), l(a(s)), g?.(s)) : (l(a(i)), b(!1), c(null)), _.current?.blur();
}, [
d,
r,
g,
T,
i,
u
]), Q = C(() => {
c(null), l(""), b(!0);
}, []), Y = C((o) => {
const s = o.target.value, te = G(s).replace(/\D/g, "");
l(a(te));
}, []);
if (N(() => {
if (r) {
f !== null && i === f && c(null);
return;
}
if (f !== null) {
i === f && (c(null), b(!1), l(a(i)));
return;
}
E || l(a(i));
}, [E, r, f, i]), N(() => {
r && E && _.current?.focus();
}, [E, r]), N(() => {
if (!E || !d || !r && f !== null) return;
const o = setTimeout(() => {
S();
}, 1e3);
return () => clearTimeout(o);
}, [S, d, E, r, f]), u <= 0) return null;
const z = () => n.createElement(O, {
ref: _,
type: "text",
inputMode: "numeric",
placeholder: "صفحه",
w: m.inputWidth,
value: d,
onFocus: () => {
r || (b(!0), c(null), l(""));
},
onChange: Y,
onBlur: () => {
if (d) {
r && S();
return;
}
T();
},
onKeyDown: (o) => {
o.key === "Enter" && S(), o.key === "Escape" && T();
},
textAlign: "center",
color: "#1D2939",
px: 1,
minW: 0,
dir: "ltr"
}), x = (o, s = !1) => n.createElement(
K,
{
key: o,
size: "md",
px: m.pageButtonPx,
bg: s ? "#4B49AC" : "#e6e6f1",
color: s ? "#e6e6f1" : "#4B49AC",
_hover: { bg: s ? "#4B49AC" : "#cbcbe8" },
onClick: r && s ? Q : () => M(o),
variant: "soft"
},
a(o)
), Z = r && u > 1 && w !== 1, ee = r && u > 1 && w !== u;
return n.createElement(
k,
{
justifyContent: m.justifyContent,
backgroundColor: "white",
py: "10px",
px: "16px",
rounded: "lg",
border: "1px",
borderColor: "blue.200",
w: "100%",
...B
},
m.showPageSummary && n.createElement(
k,
{ spacing: 2, whiteSpace: "nowrap" },
n.createElement(P, { fontWeight: "bold" }, "صفحه"),
n.createElement(P, null, a(i)),
n.createElement(P, { fontWeight: "bold" }, "از"),
n.createElement(P, null, a(u))
),
n.createElement(
k,
{ spacing: 2, alignItems: "center", justifyContent: "center" },
n.createElement(j, {
size: "md",
bg: "#e6e6f1",
color: "#4B49AC",
_hover: { bg: "#cbcbe8" },
onClick: () => M(w - 1),
isDisabled: w === 1,
icon: n.createElement(ie),
"aria-label": "صفحه قبلی"
}),
r ? [
Z ? x(1) : null,
E ? n.createElement(
n.Fragment,
{ key: "input" },
z()
) : x(w, !0),
ee ? x(u) : null
] : [
...J.map(
(o) => x(o, i === o)
),
m.showInput ? n.createElement(
n.Fragment,
{ key: "input" },
z()
) : null
],
n.createElement(j, {
size: "md",
bg: "#e6e6f1",
color: "#4B49AC",
_hover: { bg: "#cbcbe8" },
onClick: () => M(w + 1),
isDisabled: w === u,
icon: n.createElement(se),
"aria-label": "صفحه بعدی"
})
),
m.showTotalCount && q && n.createElement(
k,
{ spacing: 2, whiteSpace: "nowrap" },
n.createElement(
P,
{ w: "auto", fontWeight: "bold" },
"تعداد کل:"
),
n.createElement(P, null, a(D))
)
);
}
class ae extends HTMLElement {
constructor() {
super(), this._props = {}, this._root = null, this._unmountTimer = null;
}
connectedCallback() {
this._unmountTimer && (clearTimeout(this._unmountTimer), this._unmountTimer = null);
const { createRoot: e } = I();
this._root || (this._root = e(this)), this.renderComponent();
}
disconnectedCallback() {
!this._root || this._unmountTimer || (this._unmountTimer = setTimeout(() => {
this._unmountTimer = null, this._root && (this._root.unmount(), this._root = null);
}, 0));
}
set componentProps(e) {
this._props = e ?? {}, this.isConnected && this.renderComponent();
}
get componentProps() {
return this._props;
}
renderComponent() {
if (!this._root) return;
const {
React: e,
ChakraProvider: p,
theme: h,
chakraProviderProps: g
} = I(), { theme: v, chakraProviderProps: B, ...n } = this._props || {};
this._root.render(
e.createElement(
p,
{
theme: v || h,
resetCSS: !1,
...g || {},
...B || {}
},
e.createElement(ue, n)
)
);
}
}
customElements.get("uikit-pagination") || customElements.define("uikit-pagination", ae);