import * as React from "react"; import { ConfigConsumerProps } from "../Config"; export interface CascaderOption { value?: string; label?: React.ReactNode; disabled?: boolean; isLeaf?: boolean; loading?: boolean; children?: CascaderOption[]; [key: string]: any; } export interface FieldNamesType { value?: string; label?: string; children?: string; } export interface FilledFieldNamesType { value: string; label: string; children: string; } export interface ShowSearchType { filter?: (inputValue: string, path: CascaderOption[], names: FilledFieldNamesType) => boolean; render?: (inputValue: string, path: CascaderOption[], prefixCls: string | undefined, names: FilledFieldNamesType) => React.ReactNode; sort?: (a: CascaderOption[], b: CascaderOption[], inputValue: string, names: FilledFieldNamesType) => number; matchInputWidth?: boolean; limit?: number | false; } export interface ICascaderProps { /** * 输入框占位文本 * * @default '请选择' **/ placeholder?: string; /** * 自定义组件类名 * * @default '' **/ className?: string; /** * 次级菜单的展开方式,可选 'click' 和 'hover' * * @default 'click' **/ trigger?: "hover" | "click"; /** * 输入框大小,可选 default small * * @default 'default' **/ size?: "default" | "small"; /** * 自定义 cascaderData 中 label name children 的字段 * * @default '{ label: "label", value: "value", children: "children" }' **/ fieldNames?: FieldNamesType; /** * 输入框 显示内容 * * @default '(value: string[]) => value.join(" / ")' **/ displayRender?: (value: any, Data: any) => React.ReactNode; /** * 默认显示内容 * * @default [] **/ defaultValue?: string[]; /** * 选择完成后的回调 * * @default '(value,node, selectedOptions) => React.ReactNode' **/ onChange?: (value: string[], selectOptions: CascaderOption[]) => void; /** * 数据源 **/ cascaderData: CascaderOption[]; /** * 默认前缀 * * @default 'lg' **/ prefixCls?: string; /** * 自定义样式 * * @default **/ style?: React.CSSProperties; /** * 显示文案是 “value” | "lable" * * @default "label" **/ showText?: string; /** * 过滤条件 * * @default **/ showSearch?: ShowSearchType | boolean; /** * 当下拉列表为空时显示的内容 * * @default 暂无数据 **/ notFoundContent?: React.ReactNode; /** * 用于动态加载选项,无法与 showSearch 一起使用 * * @default **/ loadData?: (selectOptions: CascaderOption[]) => void; /** * 点选每级菜单时显示会发生变化 * * @default **/ changeOnSelect?: boolean; } interface IState { inputValue: string; wrapFocus: boolean; searchInput: string; showPopper: boolean; activeValue: string[]; activeOptions: CascaderOption[]; flattenOptions: CascaderOption[][] | undefined; } export default class Cascader extends React.PureComponent { private container; private wrapper; private prefixCls; private inputRef; static defaultProps: { placeholder: string; className: string; trigger: string; size: string; fieldNames: { label: string; value: string; children: string; }; defaultValue: never[]; showText: string; notFoundContent: string; changeOnSelect: boolean; }; constructor(props: ICascaderProps); componentWillReceiveProps(nextprops: any): void; componentDidMount(): void; componentWillUnmount(): void; handleClickOutside: (e: any) => void; handleEvent: () => void; blurEvent: () => void; focusEvent: () => void; getFieldName: (name: any) => any; handleInput: (e: any) => void; getFilteredOptions: () => CascaderOption[] | null; handleChange: (options: CascaderOption[]) => void; getValue: (value: any, activeOptions: any) => string; itemEvent: (targetOption: CascaderOption, isLeaf: any, menuIndex: number, e: any) => void; getActiveOptions: (values?: string[] | undefined) => CascaderOption[]; getShowOptions: () => CascaderOption[][]; getOption: (item: CascaderOption, menuIndex: number) => JSX.Element; renderList: () => JSX.Element; searchItemEvent: (targetOption: any) => void; renderSearchList: (filteredOptions: any) => JSX.Element; renderCascader: ({ getPrefixCls }: ConfigConsumerProps) => JSX.Element; render(): JSX.Element; } export {};