import { type ComputedRef, type Ref } from 'vue'; import { type Placement } from '@floating-ui/vue'; interface FmMenu { /** Placement for the dropdown content relative to the button */ placement?: Placement; disabled?: boolean; /** Trigger for the main menu button only (does not affect submenu(s)) */ trigger?: 'click' | 'hover'; /** When set to `true`, menu will close on item clicks */ closeOnClick?: boolean; /** Custom class list for the close on click behaviour, if you want this behaviour on element other than FmMenuItem */ customElementClassListForCloseOnClick?: string[]; closeOnMouseLeave?: boolean; /** Set the width of the content box */ width?: number | undefined; /** Set the max height of the content box */ maxHeight?: number; /** * @depcreated * Temporary internal use, do not use this prop * This temporary solves issues with Menu in Popover * */ inPopover?: boolean; /** Stop click event propagation to parent elements */ stopClickPropagation?: boolean; /** Z-index of the menu */ zIndex?: number; /** Offset for the menu */ offset?: number; /** shift the menu when it's near the edge */ shift?: boolean; /** shift the menu when it's height is lower than the available height */ minHeight?: number; /** padding for the menu */ flipPadding?: { bottom?: number; top?: number; }; /** * The element ids to exclude from click window behavior. */ elementIdsUseForDismissAwayEventExclusion?: string[]; /** * The selector to exclude from click window behavior. */ selectorForDismissAwayEventExclusion?: string; } export interface MenuProvider { register: ({ injectProps, }: { injectProps: ComputedRef<{ mouseInMenu: Ref; }>; }) => number; closeParent: () => void; setChildId: (id: number) => void; mouseInChildId: Ref; trigger: 'click' | 'hover'; } export interface MenuToItemProvider { handleContentClick: () => void; } declare function toggleMenu(val: boolean | undefined): void; declare const _default: __VLS_WithTemplateSlots, { showMenu: boolean; placement: string; disabled: boolean; trigger: string; closeOnClick: boolean; closeOnMouseLeave: boolean; width: undefined; maxHeight: number; inPopover: boolean; zIndex: number; shift: boolean; flipPadding: () => { bottom: number; }; }>, { toggleMenu: typeof toggleMenu; }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { "menu-changed": (opened: boolean) => void; }, string, import("vue").PublicProps, Readonly, { showMenu: boolean; placement: string; disabled: boolean; trigger: string; closeOnClick: boolean; closeOnMouseLeave: boolean; width: undefined; maxHeight: number; inPopover: boolean; zIndex: number; shift: boolean; flipPadding: () => { bottom: number; }; }>>> & { "onMenu-changed"?: ((opened: boolean) => any) | undefined; }, { shift: boolean; disabled: boolean; placement: Placement; zIndex: number; width: number; maxHeight: number; trigger: "click" | "hover"; closeOnClick: boolean; closeOnMouseLeave: boolean; inPopover: boolean; flipPadding: { bottom?: number | undefined; top?: number | undefined; }; }, {}>, { "menu-button"?(_: {}): any; "menu-wrapper"?(_: { maxHeight: number; width: string; }): any; default?(_: {}): any; }>; export default _default; type __VLS_NonUndefinedable = T extends undefined ? never : T; type __VLS_TypePropsToRuntimeProps = { [K in keyof T]-?: {} extends Pick ? { type: import('vue').PropType<__VLS_NonUndefinedable>; } : { type: import('vue').PropType; required: true; }; }; type __VLS_WithDefaults = { [K in keyof Pick]: K extends keyof D ? __VLS_Prettify : P[K]; }; type __VLS_Prettify = { [K in keyof T]: T[K]; } & {}; type __VLS_WithTemplateSlots = T & { new (): { $slots: S; }; };