@yamada-ui/pagination
Version:
Yamada UI pagination component
87 lines (85 loc) • 2.31 kB
JavaScript
"use client"
import {
PaginationEllipsisIcon,
PaginationFirstIcon,
PaginationLastIcon,
PaginationNextIcon,
PaginationPrevIcon
} from "./chunk-VZWGYG76.mjs";
import {
usePaginationContext
} from "./chunk-ZOXC7X6K.mjs";
// src/pagination-item.tsx
import { forwardRef, ui } from "@yamada-ui/core";
import { Ripple, useRipple } from "@yamada-ui/ripple";
import { cx, dataAttr } from "@yamada-ui/utils";
import { jsx, jsxs } from "react/jsx-runtime";
var iconMap = {
ellipsis: /* @__PURE__ */ jsx(PaginationEllipsisIcon, {}),
first: /* @__PURE__ */ jsx(PaginationFirstIcon, {}),
last: /* @__PURE__ */ jsx(PaginationLastIcon, {}),
next: /* @__PURE__ */ jsx(PaginationNextIcon, {}),
prev: /* @__PURE__ */ jsx(PaginationPrevIcon, {})
};
var PaginationItem = forwardRef(
({
className,
isActive,
active = isActive,
page,
children = ((_a) => (_a = iconMap[page]) != null ? _a : page)(),
isDisabled,
disabled = isDisabled,
disableRipple,
...rest
}, ref) => {
const styles = usePaginationContext();
const ellipsis = page === "ellipsis";
const { onPointerDown, ...rippleProps } = useRipple({
...rest,
disabled: disableRipple || disabled || ellipsis
});
const css = {
alignItems: "center",
display: "flex",
justifyContent: "center",
overflow: "hidden",
position: "relative",
userSelect: "none",
...styles.item,
...styles[page]
};
const Component = ui[ellipsis ? "span" : "button"];
return /* @__PURE__ */ jsxs(
Component,
{
ref,
...!ellipsis ? {
type: "button",
"data-disabled": dataAttr(disabled),
"data-selected": dataAttr(active),
disabled
} : {},
className: cx(
"ui-pagination__item",
ellipsis ? "ui-pagination__item--ellipsis" : void 0,
className
),
tabIndex: !ellipsis ? 0 : -1,
__css: css,
...rest,
onPointerDown,
children: [
children,
/* @__PURE__ */ jsx(Ripple, { ...rippleProps })
]
}
);
}
);
PaginationItem.displayName = "PaginationItem";
PaginationItem.__ui__ = "PaginationItem";
export {
PaginationItem
};
//# sourceMappingURL=chunk-V3A6LHVY.mjs.map