import { DetailedHTMLProps, HTMLAttributes, ReactNode } from 'react'; import { PaginationItemProps } from './PaginationItem'; import { PaginationPageSizeProps } from './PaginationPageSize'; export interface PaginationProps extends Omit, HTMLElement>, 'onChange'> { /** * Number of always visible pages at the beginning and end. * @default 1 */ boundaryCount?: number; /** * The text displayed in the jumper `button` content. */ buttonText?: string; /** * The current page number. * @default 1 */ current?: number; /** * If `true`, the fields are disabled. */ disabled?: true; /** * The hint text displayed in front of jumper `input`. */ hintText?: string; /** * The placeholder displayed in the jumper input before the user enters a value. */ inputPlaceholder?: string; /** * Render the item. * @param {PaginationItemProps} item The props to spread on a PaginationItem. * @returns {ReactNode} * @default (item) => */ itemRender?: (item: PaginationItemProps) => ReactNode; /** * Callback fired when the page is changed. * @param {number} page The active page number. */ onChange?: (page: number) => void; /** * Callback fired when the page size is changed. * @param {number} pageSize The new page size. */ onChangePageSize?: PaginationPageSizeProps['onChange']; /** * Number of items per page. * @default 10 */ pageSize?: PaginationPageSizeProps['value']; /** * Label displayed before page size selector. */ pageSizeLabel?: PaginationPageSizeProps['label']; /** * Page size options to render. */ pageSizeOptions?: PaginationPageSizeProps['options']; /** * Render custom result summary. * @param {number} from Start index of current page. * @param {number} to End index of current page. * @param {number} total Total number of items. * @returns {string} * @example (from, to, total) => `目前顯示 ${from}-${to} 筆,共 ${total} 筆資料` */ renderResultSummary?: (from: number, to: number, total: number) => string; /** * Render custom page size option name. */ renderPageSizeOptionName?: PaginationPageSizeProps['renderOptionName']; /** * If `true`, show jumper. * @default false */ showJumper?: boolean; /** * If `true`, show page size options. * @default false */ showPageSizeOptions?: boolean; /** * Number of always visible pages before and after the current page. * @default 1 */ siblingCount?: number; /** * Total number of items. * @default 0 */ total?: number; } /** * 分頁導覽元件,提供頁碼切換、頁碼跳轉輸入框以及每頁筆數選擇器。 * * 傳入 `total` 與 `pageSize` 自動計算總頁數並渲染頁碼列表;`boundaryCount` 控制首尾 * 始終顯示的頁數,`siblingCount` 控制當前頁兩側的頁數。啟用 `showJumper` 可直接輸入頁碼跳轉, * 啟用 `showPageSizeOptions` 可讓使用者選擇每頁顯示筆數。 * * @example * ```tsx * import Pagination from '@mezzanine-ui/react/Pagination'; * * // 基本用法 * * * // 顯示結果摘要與每頁筆數選擇器 * `顯示 ${from}–${to} 筆,共 ${total} 筆`} * /> * * // 顯示頁碼跳轉輸入框 * * ``` * * @see {@link Table} 搭配 Table 元件的 `pagination` prop 使用 * @see {@link usePagination} 獨立使用分頁邏輯的 hook */ declare const Pagination: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export default Pagination;