react-widget-pagination
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

Pagination

Pagination分页组件

安装

npm install --save react-widget-pagination

使用

import React from "react";
import Pagination from "react-widget-pagination";
import "react-widget-pagination/style";
 
export default function App() {
  return (
    <div
      className="App"
      style={{
        padding: 100
      }}
    >
        <Pagination total={1000} showSizeChanger showTotal showQuickJumper />
    </div>
  );
}
 
 

Interfaces

import React from "react";
export declare type PaginationLayout = "total" | "sizeChanger" | "prev" | "pager" | "next" | "jumper";
export declare type ItemType = "page" | "prev" | "next" | "prevMore" | "nextMore";
export interface TotalRenderProps {
    page: number;
    total: number;
    pageSize: number;
    disabled: boolean;
    range: [number, number];
}
export interface SizeChangerProps {
    options: Array<number>;
    setPageSize: (pageSize: number) => void;
    pageSize: number;
    page: number;
    total: number;
    disabled: boolean;
}
export interface JumperProps {
    page: number;
    pageSize: number;
    total: number;
    setPage: (page: number) => void;
    disabled: boolean;
}
export declare function SizeChanger(props: SizeChangerProps): JSX.Element;
export declare function Jumper(props: JumperProps): JSX.Element;
export interface PaginationProps {
    /** 样式前缀 */
    prefixCls?: string;
    /** 样式名称 */
    className?: string;
    /** 样式属性 */
    style?: React.CSSProperties;
    /** 数据总数:默认为:0 */
    total?: number;
    /** 当前页数(受控) */
    current?: number;
    /** 默认的当前页数 */
    defaultCurrent?: number;
    /** 每页条数(受控) */
    pageSize?: number;
    /** 默认的每页条数 */
    defaultPageSize?: number;
    /** 指定每页可以显示多少条 */
    pageSizeOptions?: Array<number>;
    /** 禁用分页 */
    disabled?: boolean;
    /** 只有一页时是否隐藏分页器 */
    hideOnSinglePage?: boolean;
    /** 是否展示 pageSize 选择器 */
    showSizeChanger?: boolean;
    /** 自定义渲染 pageSize 选择器 */
    sizeChangerRender?: (props: SizeChangerProps) => React.ReactNode;
    /** 是否显示快速跳转至某页输入框 */
    showQuickJumper?: boolean;
    /** 自定义渲染快速跳转至某页输入框 */
    quickJumperRender?: (props: JumperProps) => React.ReactNode;
    /** 是否显示总条数信息,默认:共 x 条,每页 y 条 */
    showTotal?: boolean;
    /** 自定义显示总条数信息 */
    totalRender?: (props: TotalRenderProps) => React.ReactNode;
    /** 显示页码数,默认为:5,该数值为奇数 */
    pageRange?: number;
    /** 自定义显示布局顺序及内置模块 */
    layout?: PaginationLayout[];
    /** 自定义渲染页码的内容 */
    itemRender?: (page: number, type: ItemType, originalElement: React.ReactNode) => React.ReactNode;
    /** 页数改变的回调 */
    onChange?: (page: number, pageSize: number) => void;
    /** 每页条数改变的回调 */
    onPageSizeChange?: (pageSize: number, page: number) => void;
}
export interface PaginationState {
    pageSize: number;
    current: number;
}
export declare class Pagination extends React.Component<PaginationProps, PaginationState> {
    static defaultProps: PaginationProps;
    static getDerivedStateFromProps(props: PaginationProps, state: PaginationState): {
        current: number;
        pageSize: number;
    };
    state: Readonly<PaginationState>;
    setPage(page: number): void;
    prev: () => void;
    next: () => void;
    protected onItemEnter(callback: () => void, e: React.KeyboardEvent): void;
    getTotalPages(pageSize?: number): number;
    getPageItemClassName(page: number): any;
    setPageSize: (pageSize: number) => void;
    protected renderPager(): JSX.Element[];
    getCurrentRange(): [number, number];
    protected renderLayoutTotal(): JSX.Element | null;
    protected renderLayoutSizeChanger(): JSX.Element | null;
    protected renderLayoutPrev(): JSX.Element;
    protected renderLayoutPager(): JSX.Element[];
    protected renderLayoutNext(): JSX.Element;
    protected renderLayoutJumper(): JSX.Element | null;
    render(): JSX.Element | null;
}
export default Pagination;
 

defaultProps

{
    prefixCls: "rw-pagination",
    total: 0,
    hideOnSinglePage: false,
    showSizeChanger: false,
    pageSizeOptions: [10, 20, 50, 100],
    pageRange: 5,
    layout: ["total", "prev", "pager", "next", "sizeChanger", "jumper"],
    totalRender: function (props: TotalRenderProps) {
        return `共 ${props.total} 条,每页 ${props.pageSize} 条`;
    },
 
}

基础样式

.rw-pagination {
    display: flex;
    align-items: center;
}
 
.rw-pagination > div:not(:last-child) {
    margin-right: 6px;
}
 
.rw-pagination-item {
    padding: 5px 10px;
    user-select: none;
    background: #fff;
    border: 1px solid #d9d9d9;
    outline: 0;
    border-radius: 2px;
    cursor: pointer;
    line-height: 20px;
}
 
.rw-pagination-item-next-more,
.rw-pagination-item-prev-more {
    font-size: 12px;
}
 
.rw-pagination-icon-left,
.rw-pagination-icon-right {
    display: none;
}
 
.rw-pagination-item:focus,
.rw-pagination-item:hover {
    border-color: #40a9ff;
}
 
.rw-pagination-item:active {
    background-color: #eaeaea;
    border-color: #dcdee0;
}
 
.rw-pagination-item-disabled,
.rw-pagination-item-disabled:active {
    color: rgba(0, 0, 0, 0.25);
    border-color: #d9d9d9;
    background-color: #fff;
    cursor: not-allowed;
}
 
.rw-pagination-item-disabled:hover {
    border-color: #d9d9d9;
}
 
.rw-pagination-item-active,
.rw-pagination-item-active:active {
    background: #40a9ff;
    color: #fff;
    border-color: #40a9ff;
    cursor: default;
}
 
.rw-pagination-quick-jumper input {
    width: 45px;
    margin: 0 6px;
    padding: 5px 10px;
    border-radius: 2px;
    border: 1px solid #d9d9d9;
}
 
.rw-pagination-size-changer select {
    padding: 5px 10px;
    border-radius: 2px;
    border: 1px solid #d9d9d9;
}
 
.rw-pagination-disabled .rw-pagination-item {
    background: #f5f5f5;
    border-color: #d9d9d9;
    cursor: not-allowed;
}
 
.rw-pagination-disabled .rw-pagination-item-active {
    background: #dbdbdb;
    border-color: transparent;
}
 
 

Package Sidebar

Install

npm i react-widget-pagination

Weekly Downloads

5

Version

2.0.0

License

MIT

Unpacked Size

57.5 kB

Total Files

14

Last publish

Collaborators

  • bplok20010