import React, { ReactNode } from 'react'; export declare type ArtColumnAlign = 'left' | 'center' | 'right'; export declare type ArtColumnVerticalAlign = 'top' | 'bottom' | 'middle'; export declare type CellProps = React.TdHTMLAttributes; export interface selectRenderProps { type: 'multi' | 'single'; row: any; rowIndex: number; rowKey: string; checked: boolean; disabled: boolean; defaultElement: React.ReactNode; actions: { /** 将当前行设置为选中(若已选中则不操作) */ select: () => void; /** 切换当前行选中状态 */ toggle: (batch?: boolean) => void; }; } export interface ArtColumnStaticPart { /** 列的名称 */ name: string; /** 列的唯一标识 */ /** 在数据中的字段 code */ code?: string; /** 列标题的展示名称;在页面中进行展示时,该字段将覆盖 name 字段 */ title?: ReactNode[] | ReactNode; /** 列的宽度,如果该列是锁定的,则宽度为必传项 */ width?: number; /** 单元格中的文本或内容的 对其方向 */ align?: ArtColumnAlign; /** 单元格中的文本或内容的 垂直水平轴对其方向 */ verticalAlign?: ArtColumnVerticalAlign; /** @deprecated 是否隐藏 */ hidden?: boolean; /** 是否锁列 */ lock?: boolean; /** 是否允许拖拽 */ /** 表头单元格的 props */ headerCellProps?: CellProps; /** 功能开关 */ features?: { [key: string]: any; }; /** 表头设置操作项到自定义操作区 */ renderHeader?: (title: ReactNode, opr: ReactNode) => ReactNode; /** 自定义选择列渲染 **/ customRender?: selectRenderProps; /** 在分组情况下是否需要合并表头 默认不合并 */ isHeaderMerge?: boolean; } export interface Features { /** 是否开启排序功能 */ sortable?: boolean; /** 是否开启过滤功能 */ filterable?: boolean; } export interface ArtColumnDynamicPart { /** 自定义取数方法 */ getValue?(row: any, rowIndex: number): any; /** 自定义渲染方法 */ render?(value: any, row: any, rowIndex: number): ReactNode; /** 自定义的获取单元格 props 的方法 */ getCellProps?(value: any, row: any, rowIndex: number): CellProps; /** 自定义的获取单元格 SpanRect 方法 */ getSpanRect?(value: any, row: any, rowIndex: number): SpanRect; } export interface ArtColumn extends ArtColumnStaticPart, ArtColumnDynamicPart { /** 该列的子节点 */ children?: ArtColumn[]; } /** SpanRect 用于描述合并单元格的边界 * 注意 top/left 为 inclusive,而 bottom/right 为 exclusive */ export interface SpanRect { top: number; bottom: number; left: number; right: number; } export interface AbstractTreeNode { children?: AbstractTreeNode[]; } export declare type SortOrder = 'desc' | 'asc' | 'none'; export declare type SortItem = { code: string; order: SortOrder; }; export interface FilterItem { filter: any[]; code?: string; filterCondition?: string; } export declare type Filters = FilterItem[]; export declare type Transform = (input: T) => T; export declare type TableTransform = Transform<{ columns: ArtColumn[]; dataSource: any[]; }>; export interface HoverRange { start: number; end: number; } export interface ColumnResizeItem { width: number; index: number; } export interface FilterPanelProps { isFilterActive: boolean; hidePanel(): void; } export interface DefaultFilterPanelProps extends FilterPanelProps { setFilterModel(filterItem?: Pick): void; filterModel: FilterItem; localeText: { [key: string]: string; }; } export interface CustomeFilterPanelProps extends FilterPanelProps { setFilter(filter?: any[]): void; filterModel: FilterItem; } export declare type FilterPanel = React.ComponentType; export interface RowDragEvent { startRowIndex: number; startRow: any; endRowIndex: number; endRow: any; isFinished: boolean; dragPosition: string; startDropZoneTagret: Element; startCommonParams: any; commonParams?: any; dropZoneTarget: Element; event: MouseEvent; x: number; y: number; } export interface DragEvent { dragItem: any; startDropZoneTagret: Element; startCommonParams: any; commonParams?: any; dropZoneTarget: Element; dropZoneTableParams?: RowDropZoneTableParams; event: MouseEvent; x: number; y: number; } export interface RowDropZoneParams { getContainer: () => HTMLElement; onDragEnter?: (params: DragEvent) => void; onDragLeave?: (params: DragEvent) => void; onDragging?: (params: DragEvent) => void; onDragStop?: (params: DragEvent, source?: string) => void; isTable?: boolean; tableParams?: RowDropZoneTableParams; } interface RowDropZoneTableParams { getDataSource: () => any[]; getTreeModeOptions: () => any; getRowDragOptions: () => any; } export {};