element-plus
Version:
A Component Library for Vue 3
40 lines (33 loc) • 1.11 kB
text/typescript
import type { RouteLocationRaw } from 'vue-router'
import type { MenuProps } from './menu'
export interface MenuItemRegistered {
index: string
indexPath: string[]
active: boolean
}
export interface MenuItemClicked {
index: string
indexPath: string[]
route?: RouteLocationRaw
}
export interface MenuProvider {
openedMenus: string[]
items: Record<string, MenuItemRegistered>
subMenus: Record<string, MenuItemRegistered>
activeIndex?: string
isMenuPopup: boolean
props: MenuProps
addMenuItem: (item: MenuItemRegistered) => void
removeMenuItem: (item: MenuItemRegistered) => void
addSubMenu: (item: MenuItemRegistered) => void
removeSubMenu: (item: MenuItemRegistered) => void
openMenu: (index: string, indexPath: string[]) => void
closeMenu: (index: string) => void
handleMenuItemClick: (item: MenuItemClicked) => void
handleSubMenuClick: (subMenu: MenuItemRegistered) => void
}
export interface SubMenuProvider {
addSubMenu: (item: MenuItemRegistered) => void
removeSubMenu: (item: MenuItemRegistered) => void
handleMouseleave?: (deepDispatch: boolean) => void
}