1 | import * as React from 'react';
|
2 | import Input from '../input';
|
3 | import { ConfigConsumerProps, RenderEmptyHandler, DirectionType } from '../config-provider';
|
4 | import { SizeType } from '../config-provider/SizeContext';
|
5 | export interface CascaderOptionType {
|
6 | value?: string | number;
|
7 | label?: React.ReactNode;
|
8 | disabled?: boolean;
|
9 | isLeaf?: boolean;
|
10 | loading?: boolean;
|
11 | children?: Array<CascaderOptionType>;
|
12 | [key: string]: any;
|
13 | }
|
14 | export interface FieldNamesType {
|
15 | value?: string | number;
|
16 | label?: string;
|
17 | children?: string;
|
18 | }
|
19 | export interface FilledFieldNamesType {
|
20 | value: string | number;
|
21 | label: string;
|
22 | children: string;
|
23 | }
|
24 | export declare type CascaderExpandTrigger = 'click' | 'hover';
|
25 | export declare type CascaderValueType = (string | number)[];
|
26 | export interface ShowSearchType {
|
27 | filter?: (inputValue: string, path: CascaderOptionType[], names: FilledFieldNamesType) => boolean;
|
28 | render?: (inputValue: string, path: CascaderOptionType[], prefixCls: string | undefined, names: FilledFieldNamesType) => React.ReactNode;
|
29 | sort?: (a: CascaderOptionType[], b: CascaderOptionType[], inputValue: string, names: FilledFieldNamesType) => number;
|
30 | matchInputWidth?: boolean;
|
31 | limit?: number | false;
|
32 | }
|
33 | export interface CascaderProps {
|
34 |
|
35 | options: CascaderOptionType[];
|
36 |
|
37 | defaultValue?: CascaderValueType;
|
38 |
|
39 | value?: CascaderValueType;
|
40 |
|
41 | onChange?: (value: CascaderValueType, selectedOptions?: CascaderOptionType[]) => void;
|
42 |
|
43 | displayRender?: (label: string[], selectedOptions?: CascaderOptionType[]) => React.ReactNode;
|
44 |
|
45 | style?: React.CSSProperties;
|
46 |
|
47 | className?: string;
|
48 |
|
49 | popupClassName?: string;
|
50 |
|
51 | popupPlacement?: string;
|
52 |
|
53 | placeholder?: string;
|
54 |
|
55 | size?: SizeType;
|
56 |
|
57 | name?: string;
|
58 |
|
59 | id?: string;
|
60 |
|
61 | bordered?: boolean;
|
62 |
|
63 | disabled?: boolean;
|
64 |
|
65 | allowClear?: boolean;
|
66 |
|
67 | autoFocus?: boolean;
|
68 | showSearch?: boolean | ShowSearchType;
|
69 | notFoundContent?: React.ReactNode;
|
70 | loadData?: (selectedOptions?: CascaderOptionType[]) => void;
|
71 |
|
72 | expandTrigger?: CascaderExpandTrigger;
|
73 | expandIcon?: React.ReactNode;
|
74 |
|
75 | changeOnSelect?: boolean;
|
76 |
|
77 | onPopupVisibleChange?: (popupVisible: boolean) => void;
|
78 | prefixCls?: string;
|
79 | inputPrefixCls?: string;
|
80 | getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
|
81 | popupVisible?: boolean;
|
82 |
|
83 | fieldNames?: FieldNamesType;
|
84 | suffixIcon?: React.ReactNode;
|
85 | dropdownRender?: (menus: React.ReactNode) => React.ReactNode;
|
86 | autoComplete?: string;
|
87 | transitionName?: string;
|
88 | children?: React.ReactElement;
|
89 | }
|
90 | export interface CascaderState {
|
91 | inputFocused: boolean;
|
92 | inputValue: string;
|
93 | value: CascaderValueType;
|
94 | popupVisible: boolean | undefined;
|
95 | flattenOptions: CascaderOptionType[][] | undefined;
|
96 | prevProps: CascaderProps;
|
97 | }
|
98 | interface CascaderLocale {
|
99 | placeholder?: string;
|
100 | }
|
101 | declare class Cascader extends React.Component<CascaderProps, CascaderState> {
|
102 | static defaultProps: {
|
103 | options: never[];
|
104 | disabled: boolean;
|
105 | allowClear: boolean;
|
106 | bordered: boolean;
|
107 | };
|
108 | static getDerivedStateFromProps(nextProps: CascaderProps, { prevProps }: CascaderState): Partial<CascaderState>;
|
109 | cachedOptions: CascaderOptionType[];
|
110 | clearSelectionTimeout: any;
|
111 | private input;
|
112 | constructor(props: CascaderProps);
|
113 | componentWillUnmount(): void;
|
114 | setValue: (value: CascaderValueType, selectedOptions?: CascaderOptionType[]) => void;
|
115 | getLabel(): any;
|
116 | saveInput: (node: Input) => void;
|
117 | handleChange: (value: any, selectedOptions: CascaderOptionType[]) => void;
|
118 | handlePopupVisibleChange: (popupVisible: boolean) => void;
|
119 | handleInputBlur: () => void;
|
120 | handleInputClick: (e: React.MouseEvent<HTMLInputElement>) => void;
|
121 | handleKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
|
122 | handleInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
123 | clearSelection: (e: React.MouseEvent<HTMLElement>) => void;
|
124 | generateFilteredOptions(prefixCls: string | undefined, renderEmpty: RenderEmptyHandler): CascaderOptionType[] | {
|
125 | [x: string]: {} | null | undefined;
|
126 | disabled: boolean;
|
127 | isEmptyNode: boolean;
|
128 | }[];
|
129 | focus(): void;
|
130 | blur(): void;
|
131 | getPopupPlacement(direction?: DirectionType): string;
|
132 | renderCascader: ({ getPopupContainer: getContextPopupContainer, getPrefixCls, renderEmpty, direction, }: ConfigConsumerProps, locale: CascaderLocale) => JSX.Element;
|
133 | render(): JSX.Element;
|
134 | }
|
135 | export default Cascader;
|