import { Ref, ComputedRef } from 'vue' import { Emitter } from 'mitt' export interface RegisterMenuItem { index: string indexPath: ComputedRef active: ComputedRef } export interface RootMenuData { activeIndex: string openedMenus: unknown[] items: any submenus: any isMenuPopup: boolean } export interface RootMenuProvider { openedMenus: Ref items: Ref submenus: Ref activeIndex: Ref hoverBackground: Ref isMenuPopup: Ref props: Readonly> methods: { addMenuItem: (item: RegisterMenuItem) => void removeMenuItem: (item: RegisterMenuItem) => void addSubMenu: (item: RegisterMenuItem) => void removeSubMenu: (item: RegisterMenuItem) => void openMenu: (index: string, indexPath: Ref) => void closeMenu: (index: string) => void } rootMenuEmit: Emitter['emit'] rootMenuOn: Emitter['on'] } export interface SubMenuProvider { addSubMenu: (item: RegisterMenuItem) => void removeSubMenu: (item: RegisterMenuItem) => void handleMouseleave?: (deepDispatch: boolean) => void } // root menu export interface IMenuProps { mode?: string | 'vertical' | 'horizontal' defaultActive?: string defaultOpeneds?: unknown[] uniqueOpened?: boolean router?: boolean menuTrigger?: string | 'hover' | 'click' collapse?: boolean backgroundColor?: string textColor?: string activeTextColor?: string collapseTransition?: boolean } export interface RootMenuProps { mode: string defaultActive: string defaultOpeneds: unknown[] uniqueOpened: boolean router: boolean menuTrigger: string collapse: boolean backgroundColor: string textColor: string activeTextColor: string collapseTransition: boolean } // submenu export interface ISubmenuProps { index: string showTimeout?: number hideTimeout?: number popperClass?: string disabled?: boolean popperAppendToBody?: boolean } // menuItem export interface IMenuItemProps { index: string route: string | Record popperClass: string disabled: boolean popperAppendToBody?: boolean } // menuGroup export interface IMenuGroupProps { title: string }