/** * To match accessibility requirement, we always provide an input in the component. * Other element will not set `tabindex` to avoid `onBlur` sequence problem. * For focused select, we set `aria-live="polite"` to update the accessibility content. * * ref: * - keyboard: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#Keyboard_interactions * * New api: * - listHeight * - listItemHeight * - component * * Remove deprecated api: * - multiple * - tags * - combobox * - firstActiveValue * - dropdownMenuStyle * - openClassName (Not list in api) * * Update: * - `backfill` only support `combobox` mode * - `combobox` mode not support `labelInValue` since it's meaningless * - `getInputElement` only support `combobox` mode * - `onChange` return OptionData instead of ReactNode * - `filterOption` `onChange` `onSelect` accept OptionData instead of ReactNode * - `combobox` mode trigger `onChange` will get `undefined` if no `value` match in Option * - `combobox` mode not support `optionLabelProp` */ import type { DisplayValueType } from './BaseSelect'; import type { Key, VueNode } from '../_util/type'; import type { ExtractPropTypes, PropType } from 'vue'; declare type ArrayElementType = T extends (infer E)[] ? E : T; export declare type OnActiveValue = (active: RawValueType, index: number, info?: { source?: 'keyboard' | 'mouse'; }) => void; export declare type OnInternalSelect = (value: RawValueType, info: { selected: boolean; }) => void; export declare type RawValueType = string | number; export interface LabelInValueType { label: any; originLabel?: any; value: RawValueType; /** @deprecated `key` is useless since it should always same as `value` */ key?: Key; } export declare type DraftValueType = RawValueType | LabelInValueType | DisplayValueType | (RawValueType | LabelInValueType | DisplayValueType)[]; export declare type FilterFunc = (inputValue: string, option?: OptionType) => boolean; export interface FieldNames { value?: string; label?: string; options?: string; } export interface BaseOptionType { disabled?: boolean; [name: string]: any; } export interface DefaultOptionType extends BaseOptionType { label?: any; value?: string | number | null; children?: Omit[]; } export declare type SelectHandler = ((value: RawValueType | LabelInValueType, option: OptionType) => void) | ((value: ValueType, option: OptionType) => void); export declare function selectProps(): { prefixCls: StringConstructor; id: StringConstructor; backfill: { type: BooleanConstructor; default: any; }; fieldNames: PropType; /** @deprecated Use `searchValue` instead */ inputValue: StringConstructor; searchValue: StringConstructor; onSearch: PropType<(value: string) => void>; autoClearSearchValue: { type: BooleanConstructor; default: any; }; onSelect: PropType, OptionType>>; onDeselect: PropType, OptionType>>; /** * In Select, `false` means do nothing. * In TreeSelect, `false` will highlight match item. * It's by design. */ filterOption: { type: PropType>; default: any; }; filterSort: PropType<(optionA: OptionType, optionB: OptionType) => number>; optionFilterProp: StringConstructor; optionLabelProp: StringConstructor; options: PropType; defaultActiveFirstOption: { type: BooleanConstructor; default: any; }; virtual: { type: BooleanConstructor; default: any; }; listHeight: NumberConstructor; listItemHeight: NumberConstructor; menuItemSelectedIcon: import("vue-types").VueTypeValidableDef; mode: PropType<"multiple" | "tags" | "combobox">; labelInValue: { type: BooleanConstructor; default: any; }; value: import("vue-types").VueTypeValidableDef; defaultValue: import("vue-types").VueTypeValidableDef; onChange: PropType<(value: ValueType, option: OptionType | OptionType[]) => void>; children: PropType; showSearch: { type: BooleanConstructor; default: any; }; tagRender: { type: PropType<(props: import("./BaseSelect").CustomTagProps) => any>; }; optionLabelRender: { type: PropType<(option: Record) => any>; }; direction: { type: PropType<"ltr" | "rtl">; }; tabindex: NumberConstructor; autofocus: BooleanConstructor; notFoundContent: import("vue-types").VueTypeValidableDef; placeholder: import("vue-types").VueTypeValidableDef; onClear: PropType<() => void>; choiceTransitionName: StringConstructor; disabled: { type: BooleanConstructor; default: any; }; loading: { type: BooleanConstructor; default: any; }; open: { type: BooleanConstructor; default: any; }; defaultOpen: { type: BooleanConstructor; default: any; }; onDropdownVisibleChange: { type: PropType<(open: boolean) => void>; }; getInputElement: { type: PropType<() => any>; }; getRawInputElement: { type: PropType<() => any>; }; maxTagTextLength: NumberConstructor; maxTagCount: { type: PropType; }; maxTagPlaceholder: import("vue-types").VueTypeValidableDef; tokenSeparators: { type: PropType; }; allowClear: { type: BooleanConstructor; default: any; }; showArrow: { type: BooleanConstructor; default: any; }; inputIcon: import("vue-types").VueTypeValidableDef; clearIcon: import("vue-types").VueTypeValidableDef; removeIcon: import("vue-types").VueTypeValidableDef; animation: StringConstructor; transitionName: StringConstructor; dropdownStyle: { type: PropType; }; dropdownClassName: StringConstructor; dropdownMatchSelectWidth: { type: PropType; default: any; }; dropdownRender: { type: PropType; }; dropdownAlign: PropType; placement: { type: PropType; }; getPopupContainer: { type: PropType; }; showAction: { type: PropType<("click" | "focus")[]>; }; onBlur: { type: PropType<(e: FocusEvent) => void>; }; onFocus: { type: PropType<(e: FocusEvent) => void>; }; onKeyup: PropType<(e: KeyboardEvent) => void>; onKeydown: PropType<(e: KeyboardEvent) => void>; onMousedown: PropType<(e: MouseEvent) => void>; onPopupScroll: PropType<(e: UIEvent) => void>; onInputKeyDown: PropType<(e: KeyboardEvent) => void>; onMouseenter: PropType<(e: MouseEvent) => void>; onMouseleave: PropType<(e: MouseEvent) => void>; onClick: PropType<(e: MouseEvent) => void>; }; export declare type SelectProps = Partial>>; declare const _default: import("vue").DefineComponent<{ prefixCls: StringConstructor; id: StringConstructor; backfill: { type: BooleanConstructor; default: any; }; fieldNames: PropType; /** @deprecated Use `searchValue` instead */ inputValue: StringConstructor; searchValue: StringConstructor; onSearch: PropType<(value: string) => void>; autoClearSearchValue: { type: BooleanConstructor; default: any; }; onSelect: PropType>; onDeselect: PropType>; /** * In Select, `false` means do nothing. * In TreeSelect, `false` will highlight match item. * It's by design. */ filterOption: { type: PropType>; default: any; }; filterSort: PropType<(optionA: DefaultOptionType, optionB: DefaultOptionType) => number>; optionFilterProp: StringConstructor; optionLabelProp: StringConstructor; options: PropType; defaultActiveFirstOption: { type: BooleanConstructor; default: any; }; virtual: { type: BooleanConstructor; default: any; }; listHeight: NumberConstructor; listItemHeight: NumberConstructor; menuItemSelectedIcon: import("vue-types").VueTypeValidableDef; mode: PropType<"multiple" | "tags" | "combobox">; labelInValue: { type: BooleanConstructor; default: any; }; value: import("vue-types").VueTypeValidableDef; defaultValue: import("vue-types").VueTypeValidableDef; onChange: PropType<(value: any, option: DefaultOptionType | DefaultOptionType[]) => void>; children: PropType; showSearch: { type: BooleanConstructor; default: any; }; tagRender: { type: PropType<(props: import("./BaseSelect").CustomTagProps) => any>; }; optionLabelRender: { type: PropType<(option: Record) => any>; }; direction: { type: PropType<"ltr" | "rtl">; }; tabindex: NumberConstructor; autofocus: BooleanConstructor; notFoundContent: import("vue-types").VueTypeValidableDef; placeholder: import("vue-types").VueTypeValidableDef; onClear: PropType<() => void>; choiceTransitionName: StringConstructor; disabled: { type: BooleanConstructor; default: any; }; loading: { type: BooleanConstructor; default: any; }; open: { type: BooleanConstructor; default: any; }; defaultOpen: { type: BooleanConstructor; default: any; }; onDropdownVisibleChange: { type: PropType<(open: boolean) => void>; }; getInputElement: { type: PropType<() => any>; }; getRawInputElement: { type: PropType<() => any>; }; maxTagTextLength: NumberConstructor; maxTagCount: { type: PropType; }; maxTagPlaceholder: import("vue-types").VueTypeValidableDef; tokenSeparators: { type: PropType; }; allowClear: { type: BooleanConstructor; default: any; }; showArrow: { type: BooleanConstructor; default: any; }; inputIcon: import("vue-types").VueTypeValidableDef; clearIcon: import("vue-types").VueTypeValidableDef; removeIcon: import("vue-types").VueTypeValidableDef; animation: StringConstructor; transitionName: StringConstructor; dropdownStyle: { type: PropType; }; dropdownClassName: StringConstructor; dropdownMatchSelectWidth: { type: PropType; default: any; }; dropdownRender: { type: PropType; }; dropdownAlign: PropType; placement: { type: PropType; }; getPopupContainer: { type: PropType; }; showAction: { type: PropType<("click" | "focus")[]>; }; onBlur: { type: PropType<(e: FocusEvent) => void>; }; onFocus: { type: PropType<(e: FocusEvent) => void>; }; onKeyup: PropType<(e: KeyboardEvent) => void>; onKeydown: PropType<(e: KeyboardEvent) => void>; onMousedown: PropType<(e: MouseEvent) => void>; onPopupScroll: PropType<(e: UIEvent) => void>; onInputKeyDown: PropType<(e: KeyboardEvent) => void>; onMouseenter: PropType<(e: MouseEvent) => void>; onMouseleave: PropType<(e: MouseEvent) => void>; onClick: PropType<(e: MouseEvent) => void>; }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly; /** @deprecated Use `searchValue` instead */ inputValue: StringConstructor; searchValue: StringConstructor; onSearch: PropType<(value: string) => void>; autoClearSearchValue: { type: BooleanConstructor; default: any; }; onSelect: PropType>; onDeselect: PropType>; /** * In Select, `false` means do nothing. * In TreeSelect, `false` will highlight match item. * It's by design. */ filterOption: { type: PropType>; default: any; }; filterSort: PropType<(optionA: DefaultOptionType, optionB: DefaultOptionType) => number>; optionFilterProp: StringConstructor; optionLabelProp: StringConstructor; options: PropType; defaultActiveFirstOption: { type: BooleanConstructor; default: any; }; virtual: { type: BooleanConstructor; default: any; }; listHeight: NumberConstructor; listItemHeight: NumberConstructor; menuItemSelectedIcon: import("vue-types").VueTypeValidableDef; mode: PropType<"multiple" | "tags" | "combobox">; labelInValue: { type: BooleanConstructor; default: any; }; value: import("vue-types").VueTypeValidableDef; defaultValue: import("vue-types").VueTypeValidableDef; onChange: PropType<(value: any, option: DefaultOptionType | DefaultOptionType[]) => void>; children: PropType; showSearch: { type: BooleanConstructor; default: any; }; tagRender: { type: PropType<(props: import("./BaseSelect").CustomTagProps) => any>; }; optionLabelRender: { type: PropType<(option: Record) => any>; }; direction: { type: PropType<"ltr" | "rtl">; }; tabindex: NumberConstructor; autofocus: BooleanConstructor; notFoundContent: import("vue-types").VueTypeValidableDef; placeholder: import("vue-types").VueTypeValidableDef; onClear: PropType<() => void>; choiceTransitionName: StringConstructor; disabled: { type: BooleanConstructor; default: any; }; loading: { type: BooleanConstructor; default: any; }; open: { type: BooleanConstructor; default: any; }; defaultOpen: { type: BooleanConstructor; default: any; }; onDropdownVisibleChange: { type: PropType<(open: boolean) => void>; }; getInputElement: { type: PropType<() => any>; }; getRawInputElement: { type: PropType<() => any>; }; maxTagTextLength: NumberConstructor; maxTagCount: { type: PropType; }; maxTagPlaceholder: import("vue-types").VueTypeValidableDef; tokenSeparators: { type: PropType; }; allowClear: { type: BooleanConstructor; default: any; }; showArrow: { type: BooleanConstructor; default: any; }; inputIcon: import("vue-types").VueTypeValidableDef; clearIcon: import("vue-types").VueTypeValidableDef; removeIcon: import("vue-types").VueTypeValidableDef; animation: StringConstructor; transitionName: StringConstructor; dropdownStyle: { type: PropType; }; dropdownClassName: StringConstructor; dropdownMatchSelectWidth: { type: PropType; default: any; }; dropdownRender: { type: PropType; }; dropdownAlign: PropType; placement: { type: PropType; }; getPopupContainer: { type: PropType; }; showAction: { type: PropType<("click" | "focus")[]>; }; onBlur: { type: PropType<(e: FocusEvent) => void>; }; onFocus: { type: PropType<(e: FocusEvent) => void>; }; onKeyup: PropType<(e: KeyboardEvent) => void>; onKeydown: PropType<(e: KeyboardEvent) => void>; onMousedown: PropType<(e: MouseEvent) => void>; onPopupScroll: PropType<(e: UIEvent) => void>; onInputKeyDown: PropType<(e: KeyboardEvent) => void>; onMouseenter: PropType<(e: MouseEvent) => void>; onMouseleave: PropType<(e: MouseEvent) => void>; onClick: PropType<(e: MouseEvent) => void>; }>>, { open: boolean; disabled: boolean; virtual: boolean; dropdownMatchSelectWidth: number | boolean; autofocus: boolean; loading: boolean; showSearch: boolean; defaultOpen: boolean; allowClear: boolean; showArrow: boolean; backfill: boolean; autoClearSearchValue: boolean; filterOption: boolean | FilterFunc; defaultActiveFirstOption: boolean; labelInValue: boolean; }>; export default _default;