UNPKG

3.52 kBTypeScriptView Raw
1import * as React from 'react';
2import type { KeyWiseTransferItem, RenderResult, SelectAllLabel, TransferDirection, TransferLocale } from './index';
3import type { PaginationType } from './interface';
4import type { TransferListBodyProps } from './ListBody';
5import DefaultListBody from './ListBody';
6export interface RenderedItem<RecordType> {
7 renderedText: string;
8 renderedEl: React.ReactNode;
9 item: RecordType;
10}
11type RenderListFunction<T> = (props: TransferListBodyProps<T>) => React.ReactNode;
12export interface TransferListProps<RecordType> extends TransferLocale {
13 prefixCls: string;
14 titleText: React.ReactNode;
15 dataSource: RecordType[];
16 filterOption?: (filterText: string, item: RecordType) => boolean;
17 style?: React.CSSProperties;
18 checkedKeys: string[];
19 handleFilter: (e: React.ChangeEvent<HTMLInputElement>) => void;
20 onItemSelect: (key: string, check: boolean) => void;
21 onItemSelectAll: (dataSource: string[], checkAll: boolean) => void;
22 onItemRemove?: (keys: string[]) => void;
23 handleClear: () => void;
24 /** Render item */
25 render?: (item: RecordType) => RenderResult;
26 showSearch?: boolean;
27 searchPlaceholder: string;
28 itemUnit: string;
29 itemsUnit: string;
30 renderList?: RenderListFunction<RecordType>;
31 footer?: (props: TransferListProps<RecordType>, info?: {
32 direction: TransferDirection;
33 }) => React.ReactNode;
34 onScroll: (e: React.UIEvent<HTMLUListElement>) => void;
35 disabled?: boolean;
36 direction: TransferDirection;
37 showSelectAll?: boolean;
38 selectAllLabel?: SelectAllLabel;
39 showRemove?: boolean;
40 pagination?: PaginationType;
41}
42interface TransferListState {
43 /** Filter input value */
44 filterValue: string;
45}
46export default class TransferList<RecordType extends KeyWiseTransferItem> extends React.PureComponent<TransferListProps<RecordType>, TransferListState> {
47 timer: number;
48 triggerScrollTimer: number;
49 defaultListBodyRef: React.RefObject<DefaultListBody<RecordType>>;
50 constructor(props: TransferListProps<RecordType>);
51 componentWillUnmount(): void;
52 getCheckStatus(filteredItems: RecordType[]): "none" | "all" | "part";
53 getFilteredItems(dataSource: RecordType[], filterValue: string): {
54 filteredItems: RecordType[];
55 filteredRenderItems: RenderedItem<RecordType>[];
56 };
57 handleFilter: (e: React.ChangeEvent<HTMLInputElement>) => void;
58 handleClear: () => void;
59 matchFilter: (text: string, item: RecordType) => boolean;
60 renderListBody: (renderList: RenderListFunction<RecordType> | undefined, props: TransferListBodyProps<RecordType>) => {
61 customize: boolean;
62 bodyContent: React.ReactNode;
63 };
64 getListBody(prefixCls: string, searchPlaceholder: string, filterValue: string, filteredItems: RecordType[], notFoundContent: React.ReactNode | React.ReactNode, filteredRenderItems: RenderedItem<RecordType>[], checkedKeys: string[], renderList?: RenderListFunction<RecordType>, showSearch?: boolean, disabled?: boolean): React.ReactNode;
65 getCheckBox({ filteredItems, onItemSelectAll, disabled, prefixCls, }: {
66 filteredItems: RecordType[];
67 onItemSelectAll: (dataSource: string[], checkAll: boolean) => void;
68 disabled?: boolean;
69 prefixCls?: string;
70 }): false | JSX.Element;
71 renderItem: (item: RecordType) => RenderedItem<RecordType>;
72 getSelectAllLabel: (selectedCount: number, totalCount: number) => React.ReactNode;
73 render(): JSX.Element;
74}
75export {};