import type { Key, ElementClassSet, ElementStyleSet } from '../_utils_'; import type { PropType, InjectionKey, Ref, VNodeChild, ComputedRef } from 'vue'; interface MenuInjection { activeKey: Ref; updateKey: (key: Key) => void; expandedKeys: Ref; updateExpandKeys: (key: Key | Key[]) => void; keyTree: KeyTree[]; options: Ref; padding: ComputedRef; isDisabled: Ref; isUnique: Ref; isCollapsed: Ref; isHorizontal: Ref; } interface SubMenuInjection { padding: ComputedRef; isDisabled: Ref; isUnique: Ref; hidePopover: () => void; } interface MenuGroupInjection { padding: ComputedRef; isDisabled: Ref; hidePopover: () => void; } export interface KeyTree { key: Key; children?: KeyTree[]; } export declare const menuInjectionKey: InjectionKey; export declare const subMenuInjectionKey: InjectionKey; export declare const menuGroupInjectionKey: InjectionKey; export declare const menuIKey: unique symbol; export declare const menuItemIKey: unique symbol; export declare const menuItemGroupIKey: unique symbol; export declare const subMenuIKey: unique symbol; export interface MenuExposeInstance { el: HTMLElement; expand: (key: Key | Key[], autoSelect?: boolean) => void; collapseAll: () => void; } export interface MenuOption { key?: Key; label?: string | (() => VNodeChild); icon?: () => VNodeChild; indent?: number; disabled?: boolean; unique?: boolean; group?: boolean; children?: MenuOption[]; extra?: Record; style?: ElementStyleSet; class?: ElementClassSet; } export interface MenuProps { value?: Key; expandKeys?: Key[]; disabled?: boolean; indent?: number; unique?: boolean; collapsed?: boolean; collapsedWidth?: number; collapsedIconSize?: number; horizontal?: boolean; options?: MenuOption[]; } export interface MenuItemProps { disabled?: boolean; indent?: number | 'auto'; } export interface MenuItemGroupProps { title?: string | (() => VNodeChild); disabled?: boolean; indent?: number | 'auto'; } export interface SubMenuProps { title?: string | (() => VNodeChild); disabled?: boolean; indent?: number | 'auto'; unique?: boolean; } export declare const menuProps: { value: { type: PropType; default: undefined; }; expandKeys: { type: PropType; default: undefined; }; disabled: { type: PropType; default: boolean; }; indent: { type: PropType; default: number; }; unique: { type: PropType; default: boolean; }; collapsed: { type: PropType; default: boolean; }; collapsedWidth: { type: PropType; default: number; }; collapsedIconSize: { type: PropType; default: number; }; horizontal: { type: PropType; default: boolean; }; options: { type: PropType; default: undefined; }; }; export declare const menuItemProps: { disabled: { type: PropType; default: boolean; }; indent: { type: PropType; default: undefined; }; }; export declare const menuItemGroupProps: { title: { type: PropType VNodeChild) | undefined>; default: undefined; }; disabled: { type: PropType; default: boolean; }; indent: { type: PropType; default: undefined; }; }; export declare const subMenuProps: { title: { type: PropType VNodeChild) | undefined>; default: undefined; }; disabled: { type: PropType; default: boolean; }; indent: { type: PropType; default: undefined; }; unique: { type: PropType; default: boolean; }; }; export {};