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;
}