import { KeyboardEvent, RefObject, FocusEvent, MouseEvent } from 'react'; import { Menu, MenuItemId, MenuProps } from '@befe/brick-comp-menu'; import { EventListenerHandler } from '@befe/brick-utils'; import { BaseSuggest, BaseSuggestProps, SuggestState, SuggestOption, SuggestOnChange } from './index'; export type MultiSuggestValue = SuggestOption[]; export interface MultiSuggestProps extends BaseSuggestProps { /** * 自定义 class */ className?: string; /** * 选中控制值 */ value?: MultiSuggestValue; /** * 选中默认值 */ defaultValue?: MultiSuggestValue; /** * 值变化时的回调 * @type (value: MultiSuggestValue) => void */ onChange?: SuggestOnChange; /** * 是否显示计数 */ withCount?: boolean; /** * 最大选择个数 */ maxNumber?: number; /** * 多项选择的分隔符 * 使用 config context `selectedSeparator` 作为默认值 * 一个主题下应是统一的,所以不应滥用此配置项 * @private */ selectedSeparator?: string; /** * (暂定)选项类型,对应 Menu prop `multipleItemType` * @type 'normal' | 'checkbox' * @private 一个规范下不应该有多种类型 */ itemType?: MenuProps['multipleItemType']; /** * 尺寸 * use config context `baseSize` as default */ size?: 'sm' | 'md' | 'lg' | 'xl'; } interface MultiSuggestState extends SuggestState { isSelectionVisible: boolean; } /** * @types * MultiSuggestValue = SuggestOption[] */ export declare class MultiSuggest extends BaseSuggest { static displayName: string; static defaultProps: { className: string; itemType: string; suffixIcon: null; }; state: MultiSuggestState; multiple: boolean; refSelectionInput: RefObject; refSelectionInputShadow: RefObject; refSelectionSuffix: RefObject; get className(): string; get withStats(): boolean; get withClear(): boolean; get maxNumber(): number; get isFull(): boolean; get selectedSeparator(): string; get menuProps(): Partial & { ref: RefObject; }; clickDocHandler: EventListenerHandler | null; handleClickStaticSelection: () => void; handleFocusStaticSelection: () => void; handleKeyDown: (e: KeyboardEvent) => void; handleClickDoc: (e: Event) => void; handleClickSuffix: () => void; handleClickClearAll: (e: MouseEvent) => void; handleMouseDownClearAll: (e: MouseEvent) => void; handleBlurInput: (e: FocusEvent) => void; handleFocusInput: (e: FocusEvent) => void; handleSelect: (id: MenuItemId, selectedIds: MenuItemId[]) => void; handleDeselect: (id: MenuItemId) => void; activateSelection(): void; activate(): void; deactivate(): void; select(): void; focus(): void; blur(): void; clearClickDocHandler(): void; updateClickDocHandler(): void; updateSelectionInput(): void; updateSelectionInputWidth(width: number): void; deselect(option: SuggestOption): void; deselectByBackspace(): void; getMenuItemProps(opt: SuggestOption): Pick; renderSuffixStats(): import("react/jsx-runtime").JSX.Element | null; renderClearBtn(): import("react/jsx-runtime").JSX.Element | null; renderSuffix(): import("react/jsx-runtime").JSX.Element; renderTarget(): import("react/jsx-runtime").JSX.Element; renderStaticSelected(): import("react/jsx-runtime").JSX.Element; renderSelectedItem: (opt: SuggestOption) => import("react/jsx-runtime").JSX.Element; renderSelectionInputItem(): import("react/jsx-runtime").JSX.Element | null; renderSelection(): import("react/jsx-runtime").JSX.Element; componentDidMount(): void; componentDidUpdate(): void; render(): import("react/jsx-runtime").JSX.Element; } export {};