1 | import { CSSProperties, Key, ReactNode } from 'react';
|
2 | import { PaginationProps } from '../pagination';
|
3 | import { SpinProps } from '../spin';
|
4 | import { Store } from './createStore';
|
5 | import { RadioChangeEvent } from '../radio';
|
6 | import { CheckboxChangeEvent } from '../checkbox';
|
7 | import { Size } from '../_util/enum';
|
8 | export declare type CompareFn<T> = (a: T, b: T) => number;
|
9 | export declare type ColumnFilterItem = {
|
10 | text: string;
|
11 | value: string;
|
12 | children?: ColumnFilterItem[];
|
13 | };
|
14 | export interface ColumnProps<T> {
|
15 | title?: ReactNode;
|
16 | filterTitle?: ReactNode;
|
17 | empty?: ReactNode;
|
18 | key?: Key;
|
19 | dataIndex?: string;
|
20 | render?: (text: any, record: T, index: number) => ReactNode;
|
21 | align?: 'left' | 'right' | 'center';
|
22 | filters?: ColumnFilterItem[];
|
23 | onFilter?: (value: any, record: T, filters?: ColumnFilterItem[]) => boolean;
|
24 | onColumnFilterChange?: (item: any) => void;
|
25 | filterMultiple?: boolean;
|
26 | filterDropdown?: ReactNode;
|
27 | filterDropdownVisible?: boolean;
|
28 | onFilterDropdownVisibleChange?: (visible: boolean) => void;
|
29 | sorter?: boolean | CompareFn<T>;
|
30 | defaultSortOrder?: 'ascend' | 'descend';
|
31 | colSpan?: number;
|
32 | width?: string | number;
|
33 | className?: string;
|
34 | fixed?: boolean | ('left' | 'right');
|
35 | filterIcon?: ReactNode;
|
36 | filteredValue?: any[];
|
37 | sortOrder?: boolean | ('ascend' | 'descend');
|
38 | children?: ColumnProps<T>[];
|
39 | onCellClick?: (record: T, event: any) => void;
|
40 | onCell?: (record: T) => any;
|
41 | onHeaderCell?: (props: ColumnProps<T>) => any;
|
42 | hidden?: boolean;
|
43 | notDisplay?: boolean;
|
44 | disableClick?: boolean;
|
45 | }
|
46 | export interface TableComponents {
|
47 | table?: any;
|
48 | header?: {
|
49 | wrapper?: any;
|
50 | row?: any;
|
51 | cell?: any;
|
52 | };
|
53 | body?: {
|
54 | wrapper?: any;
|
55 | row?: any;
|
56 | cell?: any;
|
57 | };
|
58 | }
|
59 | export interface TableLocale {
|
60 | filterTitle?: string;
|
61 | filterConfirm?: ReactNode;
|
62 | filterReset?: ReactNode;
|
63 | emptyText?: ReactNode | (() => ReactNode);
|
64 | selectAll?: ReactNode;
|
65 | selectInvert?: ReactNode;
|
66 | }
|
67 | export declare type RowSelectionType = 'checkbox' | 'radio';
|
68 | export declare type SelectionSelectFn<T> = (record: T, selected: boolean, selectedRows: Object[]) => any;
|
69 | export interface TablePaginationConfig extends PaginationProps {
|
70 | position?: 'top' | 'bottom' | 'both';
|
71 | size?: Size;
|
72 | }
|
73 | export interface TableRowSelection<T> {
|
74 | type?: RowSelectionType;
|
75 | selectedRowKeys?: string[] | number[];
|
76 | onChange?: (selectedRowKeys: string[] | number[], selectedRows: Object[]) => any;
|
77 | getCheckboxProps?: (record: T) => Object;
|
78 | onSelect?: SelectionSelectFn<T>;
|
79 | onSelectAll?: (selected: boolean, selectedRows: Object[], changeRows: Object[]) => any;
|
80 | onSelectInvert?: (selectedRows: Object[]) => any;
|
81 | selections?: SelectionItem[] | boolean;
|
82 | hideDefaultSelections?: boolean;
|
83 | fixed?: boolean;
|
84 | columnWidth?: string | number;
|
85 | }
|
86 | export interface TableProps<T> {
|
87 | prefixCls?: string;
|
88 | dropdownPrefixCls?: string;
|
89 | noFilter?: boolean;
|
90 | autoScroll?: boolean;
|
91 | rowSelection?: TableRowSelection<T>;
|
92 | pagination?: TablePaginationConfig | false;
|
93 | size?: Size;
|
94 | dataSource?: T[];
|
95 | components?: TableComponents;
|
96 | columns?: ColumnProps<T>[];
|
97 | rowKey?: string | ((record: T, index: number) => string);
|
98 | rowClassName?: (record: T, index: number) => string;
|
99 | expandedRowRender?: any;
|
100 | defaultExpandAllRows?: boolean;
|
101 | defaultExpandedRowKeys?: string[] | number[];
|
102 | expandedRowKeys?: string[] | number[];
|
103 | expandIconAsCell?: boolean;
|
104 | expandIconColumnIndex?: number;
|
105 | expandRowByClick?: boolean;
|
106 | onExpandedRowsChange?: (expandedRowKeys: string[] | number[]) => void;
|
107 | onExpand?: (expanded: boolean, record: T) => void;
|
108 | onChange?: (pagination: TablePaginationConfig | boolean, filters: string[], sorter: Object, params: any[]) => any;
|
109 | onFilterSelectChange?: (item: any) => void;
|
110 | onColumnFilterChange?: (item: any) => void;
|
111 | loading?: boolean | SpinProps;
|
112 | locale?: Object;
|
113 | indentSize?: number;
|
114 | onRowClick?: (record: T, index: number, event: Event) => any;
|
115 | onRow?: (record: T, index: number) => any;
|
116 | useFixedHeader?: boolean;
|
117 | bordered?: boolean;
|
118 | showHeader?: boolean;
|
119 | footer?: (currentPageData: Object[]) => ReactNode;
|
120 | title?: (currentPageData: Object[]) => ReactNode;
|
121 | empty?: (currentPageData: Object[]) => ReactNode;
|
122 | scroll?: {
|
123 | x?: boolean | number | string;
|
124 | y?: boolean | number | string;
|
125 | };
|
126 | childrenColumnName?: string;
|
127 | bodyStyle?: CSSProperties;
|
128 | className?: string;
|
129 | style?: CSSProperties;
|
130 | children?: ReactNode;
|
131 | filterBar?: boolean;
|
132 | filters?: string[];
|
133 | filterBarPlaceholder?: string;
|
134 | filterBarMultiple?: boolean;
|
135 | }
|
136 | export interface TableStateFilters {
|
137 | [key: string]: string[];
|
138 | }
|
139 | export interface TableState<T> {
|
140 | pagination: TablePaginationConfig;
|
141 | filters: TableStateFilters;
|
142 | barFilters: any[];
|
143 | sortColumn: ColumnProps<T> | null;
|
144 | sortOrder?: boolean | string | null;
|
145 | }
|
146 | export declare type SelectionItemSelectFn = (key: string[]) => any;
|
147 | export interface SelectionItem {
|
148 | key: string;
|
149 | text: ReactNode;
|
150 | onSelect: SelectionItemSelectFn;
|
151 | }
|
152 | export interface SelectionCheckboxAllProps<T> {
|
153 | store: Store;
|
154 | locale: any;
|
155 | disabled: boolean;
|
156 | getCheckboxPropsByItem: (item: any, index: number) => any;
|
157 | getRecordKey: (record: any, index?: number) => string;
|
158 | data: T[];
|
159 | prefixCls: string | undefined;
|
160 | onSelect: (key: string, index: number, selectFunc: any) => void;
|
161 | hideDefaultSelections?: boolean;
|
162 | selections?: SelectionItem[] | boolean;
|
163 | getPopupContainer: (triggerNode?: Element) => HTMLElement;
|
164 | }
|
165 | export interface SelectionCheckboxAllState {
|
166 | checked: boolean;
|
167 | indeterminate: boolean;
|
168 | }
|
169 | export interface SelectionBoxProps {
|
170 | store: Store;
|
171 | type?: RowSelectionType;
|
172 | defaultSelection: string[];
|
173 | rowIndex: string;
|
174 | name?: string;
|
175 | disabled?: boolean;
|
176 | onChange: (e: RadioChangeEvent | CheckboxChangeEvent) => void;
|
177 | }
|
178 | export interface SelectionBoxState {
|
179 | checked?: boolean;
|
180 | }
|
181 | export interface FilterMenuProps<T> {
|
182 | locale: TableLocale;
|
183 | selectedKeys: string[];
|
184 | column: ColumnProps<T>;
|
185 | confirmFilter: (column: ColumnProps<T>, selectedKeys: string[]) => any;
|
186 | prefixCls: string;
|
187 | dropdownPrefixCls: string;
|
188 | getPopupContainer: (triggerNode?: Element) => HTMLElement;
|
189 | }
|
190 | export interface FilterMenuState {
|
191 | selectedKeys: string[];
|
192 | keyPathOfSelectedItem: {
|
193 | [key: string]: string;
|
194 | };
|
195 | visible?: boolean;
|
196 | }
|