import { CSSProperties, TransitionProps, VNode } from 'vue'; import { FloatingPlacement, FloatingVirtualAnchor, MountElement } from '../utils'; export type Key = string | number; export interface MenuOption { key?: Key; label?: string; icon?: VNode; disabled?: boolean; danger?: boolean; loading?: boolean; href?: string; target?: '_self' | '_blank'; type?: 'item' | 'divider' | 'group'; children?: MenuOption[]; [propName: string]: any; } export interface DropdownArrowOptions { pointAtCenter?: boolean; } export type DropdownTrigger = 'hover' | 'click' | 'contextmenu'; export interface Props { open?: boolean; menus?: MenuOption[]; placement?: 'topLeft' | 'top' | 'topRight' | 'bottomLeft' | 'bottom' | 'bottomRight'; arrow?: boolean | DropdownArrowOptions; disabled?: boolean; trigger?: DropdownTrigger | DropdownTrigger[]; flip?: boolean; mouseEnterDelay?: number; mouseLeaveDelay?: number; transitionDuration?: number; destroyOnHide?: boolean; to?: string | MountElement | false; overlayClassName?: string; overlayStyle?: CSSProperties; zIndex?: number; } export interface DropdownSlots { default?: () => VNode[]; overlay?: () => VNode[]; label?: (props: { option: MenuOption; }) => VNode[]; } declare function __VLS_template(): { attrs: Partial<{}>; slots: Readonly & DropdownSlots; refs: { triggerRef: HTMLSpanElement; popupRef: ({ $: import('vue').ComponentInternalInstance; $data: {}; $props: { readonly show?: boolean | undefined; readonly closeOnOutsideClick?: boolean | undefined; readonly destroyOnHide?: boolean | undefined; readonly forceRender?: boolean | undefined; readonly to?: (string | MountElement | false) | undefined; readonly anchor?: (MountElement | null) | undefined; readonly virtualAnchor?: (FloatingVirtualAnchor | null) | undefined; readonly point?: (import('../utils').FloatingPoint | null) | undefined; readonly placement?: FloatingPlacement | undefined; readonly flip?: boolean | undefined; readonly shift?: boolean | undefined; readonly offset?: number | undefined; readonly boundary?: import('../utils').FloatingBoundary | undefined; readonly matchTriggerWidth?: "width" | "minWidth" | number | false | undefined; readonly arrow?: boolean | undefined; readonly arrowClass?: string | undefined; readonly defaultZIndex: number; readonly zIndex?: number | undefined; readonly panelClass?: string | undefined; readonly panelStyle?: CSSProperties | undefined; readonly transitionProps?: TransitionProps | undefined; readonly onAnimationend?: (() => any) | undefined; readonly onAfterLeave?: (() => any) | undefined; readonly onOutsideClick?: ((e: MouseEvent | TouchEvent) => any) | undefined; } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps; $attrs: import('vue').Attrs; $refs: { [x: string]: unknown; } & { containerRef: HTMLDivElement; panelRef: HTMLDivElement; }; $slots: Readonly<{ [name: string]: import('vue').Slot | undefined; }>; $root: import('vue').ComponentPublicInstance | null; $parent: import('vue').ComponentPublicInstance | null; $host: Element | null; $emit: ((event: "animationend") => void) & ((event: "afterLeave") => void) & ((event: "outsideClick", e: MouseEvent | TouchEvent) => void); $el: any; $options: import('vue').ComponentOptionsBase & Readonly<{ onAnimationend?: (() => any) | undefined; onAfterLeave?: (() => any) | undefined; onOutsideClick?: ((e: MouseEvent | TouchEvent) => any) | undefined; }>, { panelRef: import('vue').Ref; actualPlacement: import('vue').Ref; update: () => void; sync: () => void; }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, { animationend: () => any; afterLeave: () => any; outsideClick: (e: MouseEvent | TouchEvent) => any; }, string, { anchor: MountElement | null; shift: boolean; virtualAnchor: FloatingVirtualAnchor | null; point: import('../utils').FloatingPoint | null; placement: FloatingPlacement; flip: boolean; offset: number; boundary: import('../utils').FloatingBoundary; matchTriggerWidth: "width" | "minWidth" | number | false; show: boolean; closeOnOutsideClick: boolean; destroyOnHide: boolean; forceRender: boolean; to: string | MountElement | false; arrow: boolean; arrowClass: string; zIndex: number; panelClass: string; panelStyle: CSSProperties; transitionProps: TransitionProps; }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & { beforeCreate?: (() => void) | (() => void)[]; created?: (() => void) | (() => void)[]; beforeMount?: (() => void) | (() => void)[]; mounted?: (() => void) | (() => void)[]; beforeUpdate?: (() => void) | (() => void)[]; updated?: (() => void) | (() => void)[]; activated?: (() => void) | (() => void)[]; deactivated?: (() => void) | (() => void)[]; beforeDestroy?: (() => void) | (() => void)[]; beforeUnmount?: (() => void) | (() => void)[]; destroyed?: (() => void) | (() => void)[]; unmounted?: (() => void) | (() => void)[]; renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[]; renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[]; errorCaptured?: ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void)[]; }; $forceUpdate: () => void; $nextTick: typeof import('vue').nextTick; $watch any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle; } & Readonly<{ anchor: MountElement | null; shift: boolean; virtualAnchor: FloatingVirtualAnchor | null; point: import('../utils').FloatingPoint | null; placement: FloatingPlacement; flip: boolean; offset: number; boundary: import('../utils').FloatingBoundary; matchTriggerWidth: "width" | "minWidth" | number | false; show: boolean; closeOnOutsideClick: boolean; destroyOnHide: boolean; forceRender: boolean; to: string | MountElement | false; arrow: boolean; arrowClass: string; zIndex: number; panelClass: string; panelStyle: CSSProperties; transitionProps: TransitionProps; }> & Omit & Readonly<{ onAnimationend?: (() => any) | undefined; onAfterLeave?: (() => any) | undefined; onOutsideClick?: ((e: MouseEvent | TouchEvent) => any) | undefined; }>, "sync" | "actualPlacement" | "update" | "panelRef" | ("anchor" | "shift" | "virtualAnchor" | "point" | "placement" | "flip" | "offset" | "boundary" | "matchTriggerWidth" | "show" | "closeOnOutsideClick" | "destroyOnHide" | "forceRender" | "to" | "arrow" | "arrowClass" | "zIndex" | "panelClass" | "panelStyle" | "transitionProps")> & { panelRef: HTMLElement | null; actualPlacement: FloatingPlacement; update: () => void; sync: () => void; } & {} & import('vue').ComponentCustomProperties & {} & { $slots: { default?(_: {}): any; }; }) | null; }; rootEl: any; }; type __VLS_TemplateResult = ReturnType; declare const __VLS_component: import('vue').DefineComponent any; "update:open": (open: boolean) => any; menuClick: (key: Key | undefined, option: MenuOption) => any; }, string, import('vue').PublicProps, Readonly & Readonly<{ onOpenChange?: ((open: boolean) => any) | undefined; "onUpdate:open"?: ((open: boolean) => any) | undefined; onMenuClick?: ((key: Key | undefined, option: MenuOption) => any) | undefined; }>, { placement: "topLeft" | "top" | "topRight" | "bottomLeft" | "bottom" | "bottomRight"; flip: boolean; destroyOnHide: boolean; to: string | MountElement | false; arrow: boolean | DropdownArrowOptions; zIndex: number; open: boolean; disabled: boolean; transitionDuration: number; trigger: DropdownTrigger | DropdownTrigger[]; menus: MenuOption[]; mouseEnterDelay: number; mouseLeaveDelay: number; overlayClassName: string; overlayStyle: CSSProperties; }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, { triggerRef: HTMLSpanElement; popupRef: ({ $: import('vue').ComponentInternalInstance; $data: {}; $props: { readonly show?: boolean | undefined; readonly closeOnOutsideClick?: boolean | undefined; readonly destroyOnHide?: boolean | undefined; readonly forceRender?: boolean | undefined; readonly to?: (string | MountElement | false) | undefined; readonly anchor?: (MountElement | null) | undefined; readonly virtualAnchor?: (FloatingVirtualAnchor | null) | undefined; readonly point?: (import('../utils').FloatingPoint | null) | undefined; readonly placement?: FloatingPlacement | undefined; readonly flip?: boolean | undefined; readonly shift?: boolean | undefined; readonly offset?: number | undefined; readonly boundary?: import('../utils').FloatingBoundary | undefined; readonly matchTriggerWidth?: "width" | "minWidth" | number | false | undefined; readonly arrow?: boolean | undefined; readonly arrowClass?: string | undefined; readonly defaultZIndex: number; readonly zIndex?: number | undefined; readonly panelClass?: string | undefined; readonly panelStyle?: CSSProperties | undefined; readonly transitionProps?: TransitionProps | undefined; readonly onAnimationend?: (() => any) | undefined; readonly onAfterLeave?: (() => any) | undefined; readonly onOutsideClick?: ((e: MouseEvent | TouchEvent) => any) | undefined; } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps; $attrs: import('vue').Attrs; $refs: { [x: string]: unknown; } & { containerRef: HTMLDivElement; panelRef: HTMLDivElement; }; $slots: Readonly<{ [name: string]: import('vue').Slot | undefined; }>; $root: import('vue').ComponentPublicInstance | null; $parent: import('vue').ComponentPublicInstance | null; $host: Element | null; $emit: ((event: "animationend") => void) & ((event: "afterLeave") => void) & ((event: "outsideClick", e: MouseEvent | TouchEvent) => void); $el: any; $options: import('vue').ComponentOptionsBase & Readonly<{ onAnimationend?: (() => any) | undefined; onAfterLeave?: (() => any) | undefined; onOutsideClick?: ((e: MouseEvent | TouchEvent) => any) | undefined; }>, { panelRef: import('vue').Ref; actualPlacement: import('vue').Ref; update: () => void; sync: () => void; }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, { animationend: () => any; afterLeave: () => any; outsideClick: (e: MouseEvent | TouchEvent) => any; }, string, { anchor: MountElement | null; shift: boolean; virtualAnchor: FloatingVirtualAnchor | null; point: import('../utils').FloatingPoint | null; placement: FloatingPlacement; flip: boolean; offset: number; boundary: import('../utils').FloatingBoundary; matchTriggerWidth: "width" | "minWidth" | number | false; show: boolean; closeOnOutsideClick: boolean; destroyOnHide: boolean; forceRender: boolean; to: string | MountElement | false; arrow: boolean; arrowClass: string; zIndex: number; panelClass: string; panelStyle: CSSProperties; transitionProps: TransitionProps; }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & { beforeCreate?: (() => void) | (() => void)[]; created?: (() => void) | (() => void)[]; beforeMount?: (() => void) | (() => void)[]; mounted?: (() => void) | (() => void)[]; beforeUpdate?: (() => void) | (() => void)[]; updated?: (() => void) | (() => void)[]; activated?: (() => void) | (() => void)[]; deactivated?: (() => void) | (() => void)[]; beforeDestroy?: (() => void) | (() => void)[]; beforeUnmount?: (() => void) | (() => void)[]; destroyed?: (() => void) | (() => void)[]; unmounted?: (() => void) | (() => void)[]; renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[]; renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[]; errorCaptured?: ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void)[]; }; $forceUpdate: () => void; $nextTick: typeof import('vue').nextTick; $watch any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle; } & Readonly<{ anchor: MountElement | null; shift: boolean; virtualAnchor: FloatingVirtualAnchor | null; point: import('../utils').FloatingPoint | null; placement: FloatingPlacement; flip: boolean; offset: number; boundary: import('../utils').FloatingBoundary; matchTriggerWidth: "width" | "minWidth" | number | false; show: boolean; closeOnOutsideClick: boolean; destroyOnHide: boolean; forceRender: boolean; to: string | MountElement | false; arrow: boolean; arrowClass: string; zIndex: number; panelClass: string; panelStyle: CSSProperties; transitionProps: TransitionProps; }> & Omit & Readonly<{ onAnimationend?: (() => any) | undefined; onAfterLeave?: (() => any) | undefined; onOutsideClick?: ((e: MouseEvent | TouchEvent) => any) | undefined; }>, "sync" | "actualPlacement" | "update" | "panelRef" | ("anchor" | "shift" | "virtualAnchor" | "point" | "placement" | "flip" | "offset" | "boundary" | "matchTriggerWidth" | "show" | "closeOnOutsideClick" | "destroyOnHide" | "forceRender" | "to" | "arrow" | "arrowClass" | "zIndex" | "panelClass" | "panelStyle" | "transitionProps")> & { panelRef: HTMLElement | null; actualPlacement: FloatingPlacement; update: () => void; sync: () => void; } & {} & import('vue').ComponentCustomProperties & {} & { $slots: { default?(_: {}): any; }; }) | null; }, any>; declare const _default: __VLS_WithTemplateSlots; export default _default; type __VLS_WithTemplateSlots = T & { new (): { $slots: S; }; };