import { ColumnType } from 'antd/lib/table'; import { DependencyList, MutableRefObject } from 'react'; import { ColumnsSetting } from '../../components/CustomColumn/types'; import { UseTableScrollOptions } from '../useTableScroll'; type TargetValue = T | undefined | null; type TargetType = HTMLElement | Element | Window | Document; export type BasicTarget = TargetValue | MutableRefObject>; export interface ColumnExportConfig { /** 导出字段 Checkbox 标题自定义展示渲染,优先级高于column.title */ title?: React.ReactNode | ((params: { column: RS; parentColumns: RS[]; }) => React.ReactNode); /** 当column.title为非字符串类型时,dataLabel 用于 onExport 事件中label 参数,避免label被传递成ReactNode对象 */ dataLabel?: string; /** 禁用Checkbox选项 */ disabled?: boolean; /** 隐藏Checkbox选项 */ hidden?: boolean; } export interface CustomColumnConfig { /** 自定义列面板中的标题 */ title?: React.ReactNode; /** 是否锁定(禁止隐藏) */ locked?: boolean; } export type TableProColumn = Omit, 'title'> & { /** 标题 */ title?: React.ReactNode; /** * @description 当column.title为非字符串类型时,label 用于FileExport组件传递数据,避免title被传递成ReactNode对象 * @deprecated 已废弃,请使用`column.exportConfig.dataLabel`属性代替 */ label?: React.ReactNode; /** 唯一标识 */ columnKey?: string; /** 列表展示字段,优先度高于 dataIndex */ labelKey?: string | string[]; /** 是否锁定(禁止隐藏) * @deprecated 已废弃,请使用`column.customColumnConfig.locked`属性代替 */ locked?: boolean; /** 本地排序 */ showSort?: boolean; /** 顺序 */ order?: number; /** 隐藏 */ hidden?: boolean; /** 表格文件导出场景专用配置 */ exportConfig?: ColumnExportConfig; /** 列配置场景专用配置 */ customColumnConfig?: CustomColumnConfig; /** 允许调整宽度 */ resizable?: boolean; /** 允许调整的最小宽度 */ minWidth?: number; /** 允许调整的最大宽度 */ maxWidth?: number; /** 表格子项 */ children?: TableProColumn[]; }; export type TableProColumns = TableProColumn[]; export interface TableProProps extends UseTableScrollOptions { /** 列配置 */ columns: TableProColumns; /** 允许调整列宽 */ resizable?: boolean; /** 自动生成的序号列配置,仅在`showOrder`为`true`时生效 */ extraOrderColumnConfig?: TableProColumn; /** 通用列配置 */ globalConfigs?: TableProColumn; /** 默认列宽 */ defaultColumnWidth?: number; /** 表格外层包括元素(DOM 节点绑定的Ref,如无需动态计算滚动高度,则不需要传递) */ tableWrapper?: BasicTarget; /** 是否显示排序 */ showSort?: boolean; /** 是否显示分页 * @deprecated 已废弃,计算滚动高度时会自动处理 */ showPagination?: boolean; /** 是否显示序号列 */ showOrder?: boolean; /** 自定义表格滚动高度(请注意,这会覆盖自动计算的滚动高度) */ scrollY?: string | number; /** * 序号列宽度 * @deprecated 已废弃,请使用`extraOrderColumnConfig`属性代替。 */ orderColumnWidth?: number; /** * 序号列是否固定,为`true`时等效于 `left`,为`false`时不固定。 * @deprecated 已废弃,请使用`extraOrderColumnConfig`属性代替。 */ orderFixed?: boolean; /** 表格列更新依赖列表 */ columnsDeps?: DependencyList; /** 行选择类型 */ rowKey?: string; /** 行选择类型 */ showSelect?: 'checkbox' | 'radio'; /** 列配置 */ columnsSetting?: ColumnsSetting; /** 设置列配置 */ setColumnsSetting?: (options: ColumnsSetting) => void; /** 行选择回调 */ onSelect?: (record: T, selected: boolean, selectedRows: T[], nativeEvent: Event) => void; /** 全选回调 */ onSelectAll?: (selected: boolean, selectedRows: T[], changeRows: T[]) => void; } export {};