import { JSX } from 'solid-js'; import type { BasicConfig, CustomElement, PaginationProps } from '..'; import { type JSXElement } from '../basic-config'; declare function Table(_: TableProps): JSX.Element; declare namespace Table { var registry: () => void; } /** API * @since 2.1.0 */ export interface TableProps = Record> extends Cell { /** 自定义类名 */ class?: string; /** 自定义类名 */ css?: string; /** 加载中 */ loading?: boolean; /** 单元格值为 null 或 undefined 时的回填 * @default '-' */ emptyVal?: string; /** 栏配置 */ columns?: Record | string>; /** 数据源 */ data?: T[]; /** 表格标题, 支持直接赋值给 'title' 属性, 或者通过[slot="title"]插槽 */ title?: JSXElement | 'slot'; /** 汇总行 */ summary?: (keyof T)[]; /** 汇总行描述 * @default '合计' */ summaryText?: JSXElement; /** 分页器 * @default false */ pagination?: PaginationProps | false; /** 尺寸 * @default 'normal' */ size?: BasicConfig['size']; children?: JSXElement; } /** 栏 */ interface Column> extends Cell { /** 自定义取值的 key */ key?: keyof T; /** 原始 key */ originKey?: keyof T; /** 单元格表头标题 */ label?: JSXElement; /** 自定义渲染单元格 */ render?(item: T[keyof T], row: T, index: number): JSXElement; /** 单元格横跨的列数 */ colspan?: number; /** 单元格横跨的行数 */ rowspan?: number; /** 设置为 'order' 时则当作序号行 */ type?: 'order'; /** 单元格宽 */ width?: number; } /** 单元格布局排列 */ interface Cell { /** 单元格内容的水平对齐方式 * @default 'left' */ align?: keyof typeof Align; /** 规定根据哪个字符来进行文本对齐 */ char?: string; /** 规定第一个对齐字符的偏移量 */ charoff?: string; /** 单元格内容的垂直对齐方式 * @default 'middle' */ valign?: keyof typeof Valign; } /** 水平对齐方式 */ declare enum Align { /** 左对齐 */ left = "left", /** 右对齐 */ right = "right", /** 居中对齐 */ center = "center", /** 对行进行伸展,这样每行都可以有相等的长度 */ justify = "justify", /** 将内容对准指定字符 */ char = "char" } /** 垂直对齐方式 */ declare enum Valign { /** 上对齐 */ top = "top", /** 居中对齐 */ middle = "middle", /** 下对齐 */ bottom = "bottom", /** 与基线对齐 */ baseline = "baseline" } export type TableElement = CustomElement; export default Table;