UNPKG

5.33 kBTypeScriptView Raw
1import * as React from 'react';
2import Input from '../input';
3import { ConfigConsumerProps, RenderEmptyHandler, DirectionType } from '../config-provider';
4import { SizeType } from '../config-provider/SizeContext';
5export 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}
14export interface FieldNamesType {
15 value?: string | number;
16 label?: string;
17 children?: string;
18}
19export interface FilledFieldNamesType {
20 value: string | number;
21 label: string;
22 children: string;
23}
24export declare type CascaderExpandTrigger = 'click' | 'hover';
25export declare type CascaderValueType = (string | number)[];
26export 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}
33export 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 /** 浮层预设位置:`bottomLeft` `bottomRight` `topLeft` `topRight` */
51 popupPlacement?: string;
52 /** 输入框占位文本 */
53 placeholder?: string;
54 /** 输入框大小,可选 `large` `default` `small` */
55 size?: SizeType;
56 /** 输入框 name */
57 name?: string;
58 /** 输入框 id */
59 id?: string;
60 /** Whether has border style */
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 /** 次级菜单的展开方式,可选 'click' 和 'hover' */
72 expandTrigger?: CascaderExpandTrigger;
73 expandIcon?: React.ReactNode;
74 /** 当此项为 true 时,点选每级菜单选项值都会发生变化 */
75 changeOnSelect?: boolean;
76 /** 浮层可见变化时回调 */
77 onPopupVisibleChange?: (popupVisible: boolean) => void;
78 prefixCls?: string;
79 inputPrefixCls?: string;
80 getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
81 popupVisible?: boolean;
82 /** Use this after antd@3.7.0 */
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}
90export interface CascaderState {
91 inputFocused: boolean;
92 inputValue: string;
93 value: CascaderValueType;
94 popupVisible: boolean | undefined;
95 flattenOptions: CascaderOptionType[][] | undefined;
96 prevProps: CascaderProps;
97}
98interface CascaderLocale {
99 placeholder?: string;
100}
101declare 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}
135export default Cascader;