import * as React from 'react'; import { Moment } from 'moment'; export type Key = React.Key; export type DefaultRecordType = Record; export type DataIndex = string | number; export type FixedType = 'left' | 'right' | boolean | undefined; export type FilterTypes = 'text' | 'dropdown' | 'date' | 'dateyear' | 'datemonth' | 'dateweek' | 'daterange' | 'number' | 'time'; export type FilterDropdownTypes = 'show' | 'hide'; export type FilterDropdownAutoType = 'auto' | 'manual'; export type FilterDropdownDataType = { key: any; value: any; }; export type FieldTypes = 'string' | 'number' | 'currency' | 'bool' | 'link' | 'stringChinese' | 'date' | 'select'; export type AlignTypes = 'left' | 'center' | 'right'; export type SortDirectionsKey = 'ascend' | 'descend'; export type GetRowKey = (record: T, index?: number) => Key; export type GetComponentProps = (data: DataType, index?: number) => React.HTMLAttributes | React.TdHTMLAttributes; export type RowClassName = (record: T, index?: number, indent?: number) => string; export type TriggerEventHandler = (record: T, index?: number, event?: React.MouseEvent) => void; export type ExpandEventHandler = (status?: boolean, record?: T, index?: number, event?: React.MouseEvent) => void; export type PanelRender = (data: readonly T[]) => React.ReactNode; export type WrapperRener = (body: React.ReactNode) => React.ReactNode; export type DropEventHandler = (record?: T, index?: number) => void; export type DropDataEventHandlers = (data: DataType, record?: T, index?: number) => void; export type ScrollPositionType = 'left' | 'middle' | 'right'; export type EventHandler = (event?: React.MouseEvent) => void; export type PositonType = { row?: number; col?: number; fixed?: FixedType; }; export type DropDataSourceType = { columnKey?: Key; columnFixed?: FixedType; columnWidth?: number; columnIndex?: number; }; export type ObjRenderType = { [key: string]: any; }; export type GetSelectedDataFuncType = (selectedRows?: T[] | T, record?: T | number | undefined, index?: number | React.MouseEvent | undefined, checkedData?: T[]) => void; export type SingleGetSelectedDataFuncType = (// 兼容旧有的单选 record?: T | undefined, index?: number | undefined, e?: React.MouseEvent) => void; export type FocusHandler = (value: React.FocusEvent | string | number, event: React.FocusEvent) => any; export type FilterDropdownKeysStrType = 'LIKE' | 'ULIKE' | 'EQ' | 'UEQ' | 'START' | 'END'; export type FilterDropdownKeysNumType = 'GT' | 'GTEQ' | 'LT' | 'LTEQ' | 'EQ' | 'UEQ'; export type BrowserInfoType = { browserType?: string; osType?: string; }; export interface RenderExpandIconProps { expanded?: boolean; onExpand?: ExpandEventHandler; record?: T; } export type RenderExpandIcon = (props: RenderExpandIconProps) => React.ReactNode; export type GetTableOptions = { columns: T[]; fixed?: FixedType; }; export type AfterDragColWidthType = { rows?: DefaultRecordType[]; cols?: DefaultRecordType[]; currIndex?: number; }; export type RenderLinkTypeConfig = { url?: (data: any, record: T, index: number) => any; urlIndex?: Key; linkType?: '_self' | '_blank'; className?: string; underline?: boolean; descIndex?: Key; desc?: boolean | string | ((data: any, record: T, index: number) => any); linkColor?: string; }; export type RenderNumberConfig = { precision?: number; thousand?: boolean; makeUp?: boolean; preSymbol?: string; nextSymbol?: string; }; export type RenderDateConfig = { moment?: Moment; format?: string; }; export type RenderSelectConfig = { options?: DefaultRecordType; defaultShow?: string; }; export type MenuType = { key: string; text?: string; icon?: string | JSX.Element; callback?: (text?: any, record?: DefaultRecordType, index?: number) => void; }; export type ColMenuType = { menu?: MenuType[]; trigger?: 'hover' | 'click'; icon?: string | JSX.Element; iconSize?: number; className?: string; }; export type SelectDataSourceType = { key: string; value: any; }; export type MenuSelectionsType = { key: string; text: React.ReactNode | string; onSelect?: (changeableRowKeys: Key[]) => void; }; export interface PageInfo { current: number; pageSize: number; } export type InputValueType = Record; export type SortColType = { order?: string; field?: string | number | undefined; orderNum?: number; };