import { DependencyList, HTMLAttributes } from 'react'; import { TableProColumn } from '../../hooks/useTable/types'; import type { ColumnSettingOptions } from '../../hooks/useTable/useTableColumns'; import { IIconButtonType } from '../IconButton'; import { ISlideDrawerType } from '../SlideDrawer'; export interface AsyncColumnsSettingProps { columns: TableProColumn[]; columnsDeps?: React.DependencyList; columnsSetting?: ColumnsSetting; } export interface ColumnItemProps extends Omit { column: TableProColumn; } export interface ColumnListProps { columns: TableProColumn[]; allowFixed?: boolean; diff?: number; columnsSetting?: ColumnsSetting; toggleColumnOrder: (key: string, targetIndex: number) => void; toggleColumnFixed: (key: string, fixed?: 'left' | 'right' | boolean) => void; toggleColumnEllipsis: (key: string, ellipsis?: boolean) => void; toggleColumnVisibility: (key: string, visible: boolean) => void; } /** 列配置数据 */ export type ColumnsSetting = { /** 字段:字段配置 */ [key: string]: ColumnSettingOptions; }; export interface CustomColumnProps extends Partial, Omit, 'title'> { /** 是否显示抽屉 */ visible: boolean; /** 抽屉关闭回调 */ onClose: () => void; /** 全量列(包含显示和隐藏的所有列) */ columns: TableProColumn[]; /** 列配置数据(用户保存的列配置数据) */ columnsSetting: ColumnsSetting; /** 列配置默认数据(系统为用户配置的初始设置,点击恢复默认时使用) */ defaultColumnsSetting?: ColumnsSetting; /**抽屉保存按钮加载状态 */ saving?: boolean; /** 列配置依赖 */ columnsDeps?: DependencyList; /** 列配置保存按钮点击回调 */ onSave: (newColumnsSetting: ColumnsSetting, closeDrawer: () => void) => Promise | void; } export interface CustomColumnTriggerProps extends Omit { /** 加载状态 */ loading?: boolean; /** 自定义按钮参数 */ buttonProps?: IIconButtonType; }