import { Pagination as OldPagination, ConfigProvider, PaginationProps, } from 'antd'; import './index.less'; import classNames from 'classnames'; import React, { useContext, useMemo } from 'react'; import { Icon } from '../index'; import { Select } from '../Select'; import { AOP } from '../utils/AOP'; type cusProps = { spaceBetween?: boolean; }; const Pagination = (props: PaginationProps & cusProps) => { // 为了与 antd 的生态保持兼容性,我们要求必须要使用 `.@{ant-prefix}` 变量来生成类名 const { getPrefixCls, locale } = useContext(ConfigProvider.ConfigContext); const prefixCls = getPrefixCls('btri-pagination'); const _paginationSizeOption = useMemo(() => { const defaultSizes = [10, 20, 50, 100]; return (props.pageSizeOptions || defaultSizes)?.map((item) => { return { label: `${item}条/页`, value: item, }; }); }, [props.pageSizeOptions]); const sizeEnum = { small: 'small', default: 'middle', }; const [_current, setCurrent] = React.useState(props.defaultCurrent || 1); const [_pageSize, setPageSize] = React.useState( props.defaultPageSize || _paginationSizeOption[0].value, ); const _onChange = new AOP(props.onChange) .before((current, pageSize) => { setCurrent(current); setPageSize(pageSize); }) .getFunction(); const _onShowSizeChange = new AOP(props.onShowSizeChange) .before((current, pageSize) => { setCurrent(current); setPageSize(pageSize); }) .getFunction(); return (
{ if (type == 'prev') { return (
); } else if (type === 'next') { return (
); } return originalElement; }} showSizeChanger={false} onChange={_onChange} pageSize={props.pageSize || _pageSize} onShowSizeChange={_onShowSizeChange} style={{}} /> {props.showSizeChanger && (