import type { CheckStrategy, TreeNode } from 'treemate'; import type { CSSProperties, Ref, Slots, VNode, VNodeChild } from 'vue'; import type { ScrollbarProps } from '../../_internal'; import type { MergedTheme } from '../../_mixins'; import type { NLocale } from '../../locales'; import type { CascaderTheme } from '../styles'; import type { CascaderSpinProps } from './public-types'; export type ValueAtom = string | number; export type Value = ValueAtom | ValueAtom[]; export type Key = ValueAtom; export interface CascaderOption { label?: string; value?: ValueAtom; disabled?: boolean; children?: CascaderOption[]; [key: string]: unknown; } export type ExpandTrigger = 'hover' | 'click'; export type TmNode = TreeNode; export type Filter = (pattern: string, option: CascaderOption, path: CascaderOption[]) => boolean; export type OnLoad = (option: CascaderOption) => Promise; export type OnUpdateValue = (value: string & number & string[] & number[] & Array & (string | null) & (number | null) & (string[] | null) & (number[] | null) & (Array | null), option: null & CascaderOption & CascaderOption[] & Array, path: null & CascaderOption[] & Array) => void; export type OnUpdateValueImpl = (value: Value | null, option: CascaderOption | null | Array, path: Array | CascaderOption[] | null) => void; export type MenuModel = TmNode[][]; export interface CascaderInjection { slots: Slots; mergedClsPrefixRef: Ref; mergedThemeRef: Ref>; mergedValueRef: Ref; checkedKeysRef: Ref; indeterminateKeysRef: Ref; hoverKeyPathRef: Ref; mergedCheckStrategyRef: Ref; multipleRef: Ref; keyboardKeyRef: Ref; hoverKeyRef: Ref; remoteRef: Ref; loadingKeySetRef: Ref>; expandTriggerRef: Ref; isMountedRef: Ref; cascadeRef: Ref; onLoadRef: Ref<((value: CascaderOption) => Promise) | undefined>; localeRef: Ref; virtualScrollRef: Ref; optionHeightRef: Ref; labelFieldRef: Ref; showCheckboxRef: Ref; getColumnStyleRef: Ref<((detail: { level: number; }) => string | CSSProperties) | undefined>; renderPrefixRef: Ref<((info: { option: CascaderOption; checked: boolean; node: VNode | null; }) => VNodeChild) | undefined>; renderSuffixRef: Ref<((info: { option: CascaderOption; checked: boolean; node: VNode | null; }) => VNodeChild) | undefined>; syncCascaderMenuPosition: () => void; syncSelectMenuPosition: () => void; updateKeyboardKey: (value: Key | null) => void; updateHoverKey: (value: Key | null) => void; addLoadingKey: (value: Key) => void; deleteLoadingKey: (value: Key) => void; doCheck: (value: Key) => void; doUncheck: (value: Key) => void; closeMenu: (returnFocus?: boolean) => void; handleSelectMenuClickOutside: (e: MouseEvent) => void; handleCascaderMenuClickOutside: (e: MouseEvent) => void; renderLabelRef: Ref<((option: CascaderOption, checked: boolean) => VNodeChild) | undefined>; spinPropsRef: Ref; scrollbarPropsRef: Ref; clearPattern: () => void; } export interface CascaderSubmenuInstance { scroll: (index: number, elSize: number) => void; } export interface CascaderMenuExposedMethods { scroll: (depth: number, index: number, elSize: number) => void; showErrorMessage: (label: string) => void; } export type CascaderMenuInstance = { $el: HTMLElement; } & CascaderMenuExposedMethods; export interface SelectMenuInstance { prev: () => void; next: () => void; enter: () => boolean; } export declare const cascaderInjectionKey: import("vue").InjectionKey; export interface CascaderInst { focus: () => void; blur: () => void; getCheckedData: () => { keys: Key[]; options: Array; }; getIndeterminateData: () => { keys: Key[]; options: Array; }; }