table-reuse
Version:
A reusable table built on top of Antd ProTable
33 lines (32 loc) • 1.82 kB
TypeScript
/// <reference types="react" />
import type { ParamsType, ProColumns, ListToolBarProps } from "@ant-design/pro-components";
import ProTable from "@ant-design/pro-table";
import type { SortOrder } from "antd/es/table/interface";
export type TTabsProps = ListToolBarProps;
export type { ListToolBarProps };
export type { ProColumns };
export type TRecord = Record<string, unknown>;
/** 从 ProTable 组件推导出的 props 类型 */
export type TProTableProps<TItem extends TRecord> = React.ComponentProps<typeof ProTable<TItem>>;
/** 从 ProTable props 提取 toolbar 类型 */
export type TProTableToolbar<TItem extends TRecord> = NonNullable<TProTableProps<TItem>["toolbar"]>;
/** 从 toolbar.menu.items 提取 tab item 类型 */
export type TProTableTabItems<TItem extends TRecord> = NonNullable<TProTableToolbar<TItem>["menu"]>["items"];
/** ProTable 的标准 request 函数类型 */
export type TRequestFunc<TItem extends TRecord> = NonNullable<TProTableProps<TItem>["request"]>;
export type TRequestFuncParams<TItem extends TRecord, Index extends number> = Parameters<TRequestFunc<TItem>>[Index];
/** Request params, sort, and filter inferred from ProTable's request signature */
export type TParams<TItem extends TRecord> = TRequestFuncParams<TItem, 0>;
export type TSorter<TItem extends TRecord> = TRequestFuncParams<TItem, 1>;
/** 排序字段映射 */
/** 请求函数类型,用于 ProTable 请求 */
/** 带参数的 request 函数,支持分页、排序、过滤 */
export type TRequestFuncWithArgs<TItem extends TRecord> = (params: ParamsType & {
pageSize?: number;
current?: number;
keyword?: string;
}, sort: Record<string, SortOrder>, filter: Record<string, (string | number)[]>) => Promise<{
data: TItem[];
total: number;
success?: boolean;
}>;