import './index.less'; import React, { CSSProperties, ReactNode } from 'react'; import { TableProps, ColumnType } from 'antd/es/table'; import { ColumnFilterItem } from 'antd/es/table/interface'; import { SizeType } from 'antd/es/config-provider/SizeContext'; import { IntlType } from './component/intlContext'; import { UseFetchDataAction, RequestData } from './useFetchData'; import { OptionConfig, ToolBarProps } from './component/toolBar'; import { StatusType } from './component/status'; import { ProColumnsValueType, ProColumnsValueTypeFunction } from './defaultRender'; import { DensitySize } from './component/toolBar/DensityIcon'; export interface ActionType { reload: (resetPageIndex?: boolean) => void; reloadAndRest: () => void; fetchMore: () => void; reset: () => void; clearSelected: () => void; setDataSource: (setData: (prevState: S) => S) => void; } export interface ColumnsState { show?: boolean; fixed?: 'right' | 'left' | undefined; } export declare type ValueEnumObj = { [key: string]: { text: ReactNode; status: StatusType; } | ReactNode; }; export declare type ValueEnumMap = Map; export interface ProColumnType extends Omit, 'render' | 'children' | 'title' | 'filters'> { index?: number; title?: ReactNode; /** * 自定义 render */ render?: (text: React.ReactNode, record: T, index: number, action: UseFetchDataAction>) => React.ReactNode | React.ReactNode[]; /** * 自定义 render,但是需要返回 string */ renderText?: (text: any, record: T, index: number, action: UseFetchDataAction>) => any; /** * 是否缩略 */ ellipsis?: boolean; /** * 是否拷贝 */ copyable?: boolean; /** * 值的类型 */ valueType?: ProColumnsValueType | ProColumnsValueTypeFunction; /** * 值的枚举,如果存在枚举,Search 中会生成 select */ valueEnum?: ValueEnumMap | ValueEnumObj; /** * 在 table 中隐藏 */ hideInTable?: boolean; /** * 表头的筛选菜单项 */ filters?: boolean | ColumnFilterItem[]; filteredValueKey?: string; sortOrderKey?: string; defaultHideInColumn?: boolean; } export interface ProColumnGroupType extends ProColumnType { children: ProColumns; } export declare type ProColumns = ProColumnGroupType | ProColumnType; export interface ProTableProps extends Omit, 'columns'> { columns?: ProColumns[]; params?: U; columnsStateMap?: { [key: string]: ColumnsState; }; onColumnsStateChange?: (map: { [key: string]: ColumnsState; }) => void; onSizeChange?: (size: DensitySize) => void; /** * 渲染 table */ tableRender?: (props: ProTableProps, defaultDom: JSX.Element, /** * 各个区域的 dom */ domList: { toolbar: JSX.Element | undefined; alert: JSX.Element | undefined; table: JSX.Element | undefined; }) => React.ReactNode; tableExtraRender?: (props: ProTableProps, dataSource: T[]) => React.ReactNode; /** * 一个获得 dataSource 的方法 */ request?: (params: U & { pageSize?: number; current?: number; }, sort: { [key: string]: 'ascend' | 'descend'; }, filter: { [key: string]: React.ReactText[]; }) => Promise>; /** * 对数据进行一些处理 */ postData?: (data: any[]) => any[]; /** * 默认的数据 */ defaultData?: T[]; /** * 初始化的参数,可以操作 table */ actionRef?: React.MutableRefObject | ((actionRef: ActionType) => void); /** * 渲染操作栏 */ toolBarRender?: ToolBarProps['toolBarRender'] | false; /** * 数据加载完成后触发 */ onLoad?: (dataSource: T[]) => void; /** * 数据加载失败时触发 */ onRequestError?: (e: Error) => void; /** * 给封装的 table 的 className */ tableClassName?: string; /** * 给封装的 table 的 style */ tableStyle?: CSSProperties; /** * 左上角的 title */ headerTitle?: React.ReactNode; /** * 默认的操作栏配置 */ options?: OptionConfig | false; /** * 如何格式化日期 * 暂时只支持 moment * string 会格式化为 YYYY-DD-MM * number 代表时间戳 */ dateFormatter?: 'string' | 'number' | false; /** * 自定义 table 的 alert * 设置或者返回false 即可关闭 */ tableAlertRender?: ((props: { intl: IntlType; selectedRowKeys: (string | number)[]; selectedRows: T[]; }) => React.ReactNode) | false; /** * 自定义 table 的 alert 的操作 * 设置或者返回false 即可关闭 */ tableAlertOptionRender?: ((props: { intl: IntlType; onCleanSelected: () => void; }) => React.ReactNode) | false; rowSelection?: TableProps['rowSelection']; style?: React.CSSProperties; /** * 空值时显示 */ columnEmptyText?: ColumnEmptyText; /** * 全屏元素 */ fullScreenElement?: string | HTMLElement; /** * toolbar渲染的地方 */ toolBarContainer?: React.RefObject; footerRender?: (tableSize: SizeType) => React.ReactNode; mergeFilteredToParams?: boolean; mergedFilters?: any; onAlertClear?: () => void; } export declare type ColumnEmptyText = string | false; /** * 🏆 Use Ant Design Table like a Pro! * 更快 更好 更方便 * @param props */ declare const ProviderWarp: (props: ProTableProps) => JSX.Element; export default ProviderWarp;