/// import { StandardProps } from '../@types/common'; import { SelectProps } from '../Select/Props'; export interface TextParams { prev?: string; next?: string; page?: string; jumper?: string; } /** * @title Pagination */ export interface PaginationProps extends StandardProps { /** * @en align of pagination * @cn 排布方式 * @default 'left' */ align?: 'left' | 'center' | 'right'; /** * @en Current page. * @cn 当前页,如果传入值,组件为受控组件,必须通过 onChange 来处理回调 */ current?: number; /** * @en Initial page number * @cn 初始页码 * @default 1 */ defaultCurrent?: number; /** * @en Disabled * @cn 禁用 * @default false */ disabled?: boolean; /** * @en The layout of child elements, options: 'links': page number; 'simple': simple page number(Do not use both simple and links); 'list': page size selector; 'jumper': jump to page number; 'simple': minimalist mode; function({ current, total, pageSize }): custom information * @cn 子组件布局,可选值为:'links': 页码;'simple': 简约页码(和links不要同时使用);'list': 每页数量选择。'jumper': 跳转页码;function({ current, total, pageSize }): 匿名函数,用来信息展示 * @default ['links'] */ layout?: Array<'links' | 'simple' | 'list' | 'jumper' | ((props: PaginationProps) => string)>; /** * @en The callback function when current page or pageSize is changing。current: new page number。pageSize: number of each page * @cn 页码或每页显示数量改变时回调。current: 新的页码。pageSize: 每页数量 */ onChange?: (current: number, pageSize: number, sizeChange?: boolean) => void; /** * @en Number of each page * @cn 每页数量 * @default 10 */ pageSize?: number; /** * @en The list of number of each page * @cn 每页数量可选列表 * @default [10, 20, 30, 50, 100] */ pageSizeList?: number[]; /** * @en size of pagination * @cn 尺寸 * @default 'default' */ size?: 'large' | 'default' | 'small'; /** * @en Replaced text。prev: the previous page。next: the next page。page:the text of pageSizeList。jumper: jump to input box text, '{input}' pilaceholder for input box * @cn 替换文案。prev: 上一页。next: 下一页。page: pageSizeList 文字。jumper: 跳转输入框文字, '{input}' 为输入框占位 */ text?: TextParams; /** * @en Total number. If total is less than 0, hide the Pagination. * @cn 总条目数。如果 total 小于 0,隐藏分页。 * @default 0 */ total?: number; /** * @en Additional attributes which need to given page size selector * @cn 需要给分页数量的选择框的额外的属性 */ sizeListProps?: SelectProps; /** * @en The number of pagination buttons * @cn 分页器页码按钮数量 * @default 5 */ span?: number; } export interface Props { current: number; defaultCurrent: number; onChange: (current: number, pageSize: number, sizeChange?: boolean) => void; pageSize: number; total: number; } export interface PaginationItem { children?: React.ReactNode; className?: string; disabled?: boolean; isCurrent?: boolean; onClick: (current: number, pageSize?: number) => void; page: number; } export interface JumperProps { current: number; onChange: (current: number) => void; pageSize: number; text: TextParams; total: number; size?: 'large' | 'default' | 'small'; isSimple?: boolean; } interface Base { onChange: (current: number, pageSize: number) => void; current: number; pageSize: number; total: number; } export interface LinksProps extends Base { disabled?: boolean; span?: number; text?: TextParams; } export interface NextProps extends Base { disabled?: boolean; text?: TextParams; isSimple?: boolean; } export interface PageSizeListProps { current: number; disabled?: boolean; onChange: (current: number, pageSize: number) => void; pageSize: number; pageSizeList: number[]; text: TextParams; size?: 'large' | 'default' | 'small'; sizeListProps: any; } export interface PrevProps { current: number; disabled?: boolean; onChange: (current: number, pageSize: number) => void; text: TextParams; isSimple?: boolean; } export {};