import type { Placement } from '@popperjs/core'; import type React from 'react'; import type { PopperProps } from '../Popper'; import type { RenderTagsProps } from './types'; import { AutoCompleteCloseReason } from './types'; /** * 自动补全组件变更原因 */ export declare enum AutoCompleteChangeReason { /** * 选中选项 */ selectOption = "select-option", /** * 创建选项。用于`freeSolo`模式。 */ createOption = "create-option", /** * 删除选项 */ removeOption = "remove-option", /** * 清除 */ clear = "clear", /** * 失去焦点 */ blur = "blur" } /** * 自动填充组件属性类型 */ export interface Props { /** * 渲染输入框。 * * //TODO: 输入框属性类型 */ renderInput: (props: any) => React.ReactElement; /** * 值 * * //TODO: 值的类型 */ value?: any; /** * 指定值变更的回调函数。 * * @param value 新的值 * @param reason 引起值变更的原因 */ onChange?: (value: any, reason: AutoCompleteChangeReason) => void; /** * 指定选项 */ options: any[]; /** * 用于确定给定选项的标签 */ getOptionLabel: (option: any) => string; /** * 选项渲染方式 */ renderOption?: (option: any) => React.ReactNode; /** * 自定义分组数据的渲染 */ renderGroup?: (option: any) => React.ReactNode; /** * 指定分组依据 */ groupBy?: (option: any) => string; /** * 设置为`true`时,按下Escape键,关闭选项弹窗。默认为`true`。 */ closeOnEscape?: boolean; /** * 用于定位弹窗的组件。默认为`Popper`。 */ PopperComponent?: React.ElementType; /** * 弹窗图标。默认为``。 */ popupIcon?: React.ReactNode; /** * 设置为`true`,则会强制显示弹窗图标。默认为`auto`。 */ forcePopupIcon?: 'auto' | boolean; /** * 设置为`true`,则会在输入框文本为空时,清空`value`。默认为`true`。 */ clearable?: boolean; /** * 设置清除图标。默认为``。 */ clearIcon?: React.ReactNode; /** * 设置为`true`,则按下Escape键时,清空`value`。默认为`false`。 */ clearOnEscape?: boolean; /** * 设置为`true`,则在获取焦点时出现弹窗 */ openOnFocus?: boolean; /** * 指定弹窗出现时的效果组件 */ TransitionComponent?: React.ElementType; /** * 如果为`true`,则支持多选 */ multiple?: boolean; /** * 选中选项时,是否关闭弹窗,默认为`true` */ closeOnSelect?: boolean; /** * 按`Home`键和`End`键是否高亮选项,默认为`true` */ handleHomeEndKeys?: boolean; /** * 指定标签形态 */ tagVariant?: 'outlined' | 'standard'; /** * 设置为`true`,则点击选项标签时打开选项弹窗。在多选模式下,默认为`true`。 */ openOnClickTags?: boolean; /** * 渲染选项标签。 */ renderTags?: (props: RenderTagsProps) => React.ReactNode; /** * 如果设置为`true`,则为freeSolo模式。默认为`false` */ freeSolo?: boolean; /** * 如果设置为`true`,则为密集模式 */ dense?: boolean; /** * 设置多选时显示的标签数 */ limitTags?: number; /** * 是否将弹出内容以传送门的方式渲染。默认为`false`。 */ portal?: boolean; /** * 错误状态 */ error?: boolean; /** * 不可用状态 */ disabled?: boolean; /** * 只读状态 */ readOnly?: boolean; /** * 宽度自适应 */ autoWidth?: boolean; /** * 失去焦点时关闭弹窗,默认为`true` */ closeOnBlur?: boolean; /** * 控制选项打开状态 */ open?: boolean; /** * 打开选项的回调函数 */ onOpen?: (state: boolean) => void; /** * 关闭选项的回调函数 */ onClose?: (reason: AutoCompleteCloseReason) => void; /** * 输入框引用 */ textInputRef?: React.Ref; /** * 弹出层元素引用 */ popperRef?: React.Ref; /** * 指定弹出层位置 */ placement?: Placement; /** * 弹出元素属性 */ popperComponentProps?: Partial; /** * 是否允许弹层获取焦点。默认为`false`。 */ popperFocusable?: boolean; /** * 是否允许删除,默认为true */ allowClear?: boolean; /** * 是否允许显示title提示,默认为false */ allowShowTitle?: boolean; /** * 指定渲染选项列表的容器组件 */ ListboxComponent?: React.ElementType; /** * 自定义样式类 */ className?: string; /** * 如果设置为`true`,则显示加载中图标 */ loading?: boolean; } /** * 自动补全组件。 * * @param props 组件属性。 */ export default function AutoComplete(props: Props): JSX.Element;