import { CSSProperties, HTMLAttributes, ReactNode } from 'react'; /** * @title Pagination.Root Props */ export interface PaginationRootProps extends Omit, 'style' | 'className' | 'onChange'> { /** * @zh 分页器的样式 * @en Style of pagination */ style?: CSSProperties; /** * @zh 分页器的类名 * @en Class name of pagination */ className?: string; /** * @zh 当前页 * @en Current page */ current?: number; /** * @zh 每页数据条数 * @en Number of data items per page */ pageSize?: number; /** * @zh 数据总数 * @en Total number of data * @default 0 */ total?: number; /** * @zh 当前页默认值 * @en To set default current page */ defaultCurrent?: number; /** * @zh 默认每页数据条数 * @en To set default number of data per page */ defaultPageSize?: number; /** * @zh 是否禁用 * @en Whether to disable */ disabled?: boolean; /** * @zh 是否在只有一页的情况下隐藏 * @en Whether to hide when there is only one page */ hideOnSinglePage?: boolean; /** * @zh 每页可以显示数据条数 * @en The number of data items that can be displayed per page * @default [10, 20, 50] */ sizeOptions?: number[]; /** * @zh `current` 页与 `...` 之间的页码个数 * @en the number of pages between the `current` page and `...` * @default 2 */ bufferSize?: number; /** * @zh 变化时的回调 * @en Callback when page changes */ onChange?: (pageNumber: number, pageSize: number) => void; /** * @zh pageSize 变化时的回调 * @en Callback when pageSize changes */ onPageSizeChange?: (size: number, current: number) => void; /** * @zh `pageSize` 改变的时候重置当前页码为 `1` * @en When pageSize changes, resets the current page number to `1` * @defaultValue true */ pageSizeChangeResetCurrent?: boolean; } /** * @title Pagination.StartItem/EndItem/Items Props */ export interface PaginationItemProps { /** * @zh 分页项的类名 * @en Class name of pagination item */ className?: string; /** * @zh 分页项的样式 * @en Style of pagination item */ style?: CSSProperties; /** * @zh 分页项的内容 * @en Content of pagination item */ children?: ReactNode | ((page: number, { isActive, disabled }: { isActive: boolean; disabled: boolean; }) => ReactNode); } /** * @title Pagination.Previous/Next Props */ export interface PaginationPageTurningProps { /** * @zh 分页项的类名 * @en Class name of pagination item */ className?: string; /** * @zh 分页项的样式 * @en Style of pagination item */ style?: CSSProperties; /** * @zh 分页项的内容 * @en Content of pagination item */ children?: ReactNode; } /** * @title Pagination.StartEllipsis/EndEllipsis Props */ export interface PaginationEllipsisProps { /** * @zh 分页项的类名 * @en Class name of pagination item */ className?: string; /** * @zh 分页项的样式 * @en Style of pagination item */ style?: CSSProperties; /** * @zh 分页项的内容 * @en Content of pagination item */ children?: ReactNode; } /** * @title Pagination.Option Props */ export interface PaginationOptionProps extends Omit, 'children' | 'style' | 'className'> { /** * @zh 分页项的类名 * @en Class name of pagination item */ className?: string; /** * @zh 分页项的样式 * @en Style of pagination item */ style?: CSSProperties; /** * @zh 分页项的内容 * @en Content of pagination item */ children?: ReactNode | (({ sizeOptions, pageSize, disabled, onPageSizeChange, }: { sizeOptions: number[]; pageSize: number; disabled: boolean; onPageSizeChange: (size: number, current: number) => void; }) => ReactNode); } /** * @title Pagination.Jumper Props */ export interface PaginationJumperProps { /** * @zh 是否显示当前页 * @en Whether to show current page */ showCurrent?: boolean; /** * @zh 分页项的类名 * @en Class name of pagination item */ className?: string; /** * @zh 分页项的样式 * @en Style of pagination item */ style?: CSSProperties; } /** * @title Pagination.Total Props */ export interface PaginationTotalProps extends Omit, 'children'> { /** * @zh 分页项的内容 * @en Content of pagination item */ children?: ReactNode | ((total: number, range: number[], allPages: number) => ReactNode); }