create-iking-admin
Version:
金合技术中台脚手架
50 lines (43 loc) • 1.2 kB
text/typescript
import { createInjectionKey } from '@main/utils/injectionKeys'
import type { Menu } from '#/global'
export interface MenuItem {
index: string
indexPath: string[]
active?: boolean
}
export interface MenuProps {
menu: Menu.recordRaw[] | undefined
value: string
accordion?: boolean
defaultOpeneds?: string[]
mode?: 'horizontal' | 'vertical'
collapse?: boolean
showCollapseName?: boolean
rounded?: boolean
}
export interface MenuInjection {
props: MenuProps
items: Record<string, MenuItem>
subMenus: Record<string, MenuItem>
activeIndex: MenuProps['value']
openedMenus: string[]
mouseInMenu: string[]
isMenuPopup: boolean
openMenu: (index: string, indexPath: string[]) => void
closeMenu: (index: string | string[]) => void
handleMenuItemClick: (index: string) => void
handleSubMenuClick: (index: string, indexPath: string[]) => void
}
export const rootMenuInjectionKey = createInjectionKey<MenuInjection>('rootMenu')
export interface SubMenuProps {
uniqueKey: string[]
menu: Menu.recordRaw
level?: number
}
export interface SubMenuItemProps {
uniqueKey: string[]
item: Menu.recordRaw
level?: number
subMenu?: boolean
expand?: boolean
}