UNPKG

6.6 kBTypeScriptView Raw
1import { CSSProperties, Key, ReactNode } from 'react';
2import { PaginationProps } from '../pagination';
3import { SpinProps } from '../spin';
4import { Store } from './createStore';
5import { RadioChangeEvent } from '../radio';
6import { CheckboxChangeEvent } from '../checkbox';
7import { Size } from '../_util/enum';
8export declare type CompareFn<T> = (a: T, b: T) => number;
9export declare type ColumnFilterItem = {
10 text: string;
11 value: string;
12 children?: ColumnFilterItem[];
13};
14export 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}
46export 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}
59export interface TableLocale {
60 filterTitle?: string;
61 filterConfirm?: ReactNode;
62 filterReset?: ReactNode;
63 emptyText?: ReactNode | (() => ReactNode);
64 selectAll?: ReactNode;
65 selectInvert?: ReactNode;
66}
67export declare type RowSelectionType = 'checkbox' | 'radio';
68export declare type SelectionSelectFn<T> = (record: T, selected: boolean, selectedRows: Object[]) => any;
69export interface TablePaginationConfig extends PaginationProps {
70 position?: 'top' | 'bottom' | 'both';
71 size?: Size;
72}
73export 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}
86export 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}
136export interface TableStateFilters {
137 [key: string]: string[];
138}
139export interface TableState<T> {
140 pagination: TablePaginationConfig;
141 filters: TableStateFilters;
142 barFilters: any[];
143 sortColumn: ColumnProps<T> | null;
144 sortOrder?: boolean | string | null;
145}
146export declare type SelectionItemSelectFn = (key: string[]) => any;
147export interface SelectionItem {
148 key: string;
149 text: ReactNode;
150 onSelect: SelectionItemSelectFn;
151}
152export 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}
165export interface SelectionCheckboxAllState {
166 checked: boolean;
167 indeterminate: boolean;
168}
169export 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}
178export interface SelectionBoxState {
179 checked?: boolean;
180}
181export 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}
190export interface FilterMenuState {
191 selectedKeys: string[];
192 keyPathOfSelectedItem: {
193 [key: string]: string;
194 };
195 visible?: boolean;
196}