@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
68 lines • 2.41 kB
text/typescript
import { CSSProperties, HTMLAttributes, Key, ReactNode, Ref, TdHTMLAttributes } from "react";
//#region src/base-ui/Table/type.d.ts
type SortOrder = 'ascend' | 'descend';
type FilterValue = string | number | boolean;
interface TableColumn<T> {
align?: 'left' | 'center' | 'right';
className?: string;
dataIndex?: Extract<keyof T, string>;
defaultSortOrder?: SortOrder;
ellipsis?: boolean;
filters?: {
text: ReactNode;
value: FilterValue;
}[];
fixed?: 'left' | 'right';
key?: Key;
onCell?: (record: T, index: number) => TdHTMLAttributes<HTMLTableCellElement>;
onFilter?: (value: FilterValue, record: T) => boolean;
render?: (value: any, record: T, index: number) => ReactNode;
sortDirections?: SortOrder[];
sorter?: boolean | ((a: T, b: T) => number);
title?: ReactNode;
width?: number | string;
}
interface TablePaginationConfig {
current?: number;
defaultCurrent?: number;
defaultPageSize?: number;
onChange?: (page: number, pageSize: number) => void;
onShowSizeChange?: (current: number, size: number) => void;
pageSize?: number;
pageSizeOptions?: number[];
showSizeChanger?: boolean;
total?: number;
}
interface TableSorterResult<T> {
column?: TableColumn<T>;
columnKey?: Key;
order?: SortOrder;
}
type TableFilters = Record<string, FilterValue[] | null>;
type TableSemanticName = 'body' | 'cell' | 'header' | 'row' | 'wrapper';
interface TableProps<T> {
bordered?: boolean;
className?: string;
classNames?: Partial<Record<TableSemanticName, string>>;
columns: TableColumn<T>[];
dataSource?: T[];
emptyText?: ReactNode;
loading?: boolean;
onChange?: (pagination: TablePaginationConfig, filters: TableFilters, sorter: TableSorterResult<T>) => void;
onRow?: (record: T, index: number) => HTMLAttributes<HTMLTableRowElement>;
pagination?: false | TablePaginationConfig;
ref?: Ref<HTMLDivElement>;
rowClassName?: string | ((record: T, index: number) => string);
rowKey: Extract<keyof T, string> | ((record: T) => Key);
scroll?: {
x?: number | string;
y?: number | string;
};
size?: 'small' | 'middle';
style?: CSSProperties;
styles?: Partial<Record<TableSemanticName, CSSProperties>>;
tableLayout?: 'auto' | 'fixed';
}
//#endregion
export { FilterValue, SortOrder, TableColumn, TableFilters, TablePaginationConfig, TableProps, TableSemanticName, TableSorterResult };
//# sourceMappingURL=type.d.mts.map