import { useVirtualScroll } from './hooks/useVirtualScroll'; import { CSSProperties } from 'vue'; export interface LoadMoreConfig { /** 是否启用滚动加载更多 */ enabled?: boolean; /** 是否显示加载更多指示器 */ showIndicator?: boolean; /** 触发加载更多的距离阈值(像素) */ threshold?: number; /** 加载更多文本 */ loadmoreText?: string; /** 加载中文本 */ loadingText?: string; /** 没有更多数据文本 */ nomoreText?: string; /** 加载更多容器样式 */ wrapperStyle?: CSSProperties; /** 加载更多容器高度 */ height?: number; } export interface TableColumn { /** 列键值 */ key?: string; /** 数据索引 */ dataIndex: string; /** 列标题 */ title: string; /** 列宽度 */ width?: string | number; /** 文字颜色 */ color?: string; /** 是否可以点击 */ clickable?: boolean; /** 文字对齐方式 */ align?: 'left' | 'center' | 'right'; /** 是否省略超长文本 */ ellipsis?: boolean; /** 固定列方向,true 表示固定在左侧 */ fixed?: boolean | 'left' | 'right'; } export interface TableRowData { /** 行唯一标识 */ key?: string | number; /** 行默认背景颜色 */ bgColor?: string; /** 行悬浮背景颜色 */ hoverColor?: string; /** 其他数据 */ [key: string]: any; } /** 虚拟滚动项 */ export interface VirtualScrollItem { /** 数据索引 */ index: number; /** 顶部距离 */ top: number; /** 高度 */ height: number; /** 数据项 */ data: TableRowData; } export interface TableContext { /** 表格属性 */ props: TableProps; /** 事件触发器 */ emit: any; /** 虚拟滚动 */ virtualScroll: ReturnType; /** 加载更多配置 */ loadMoreConfig: LoadMoreConfig; } export interface TableProps { /** 列配置 */ columns?: TableColumn[]; /** 数据源 */ dataSource?: TableRowData[]; /** 是否启用滚动加载更多 */ loadMore?: boolean | LoadMoreConfig; /** 是否正在加载 */ loading?: boolean; /** 是否还有更多数据 */ hasMore?: boolean; /** 表头行高 */ headerRowHeight?: string | number; /** 表体行高 */ bodyRowHeight?: string | number; /** 虚拟滚动缓冲区大小 */ bench?: number; /** 圆角大小 */ tableBorderRadius?: string | number; /** 文字 */ tableTextSize?: string | number; /** 表格元素的 table-layout 属性,设为 fixed 表示内容不会影响列的布局 */ tableLayout?: 'fixed' | 'auto'; /** 表格高度 */ height?: string | number; }