123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- import type { MenuRecordBadgeRaw, ThemeModeType } from '@vben-core/typings';
- import type { Ref } from 'vue';
- interface MenuProps {
- /**
- * @zh_CN 是否开启手风琴模式
- * @default true
- */
- accordion?: boolean;
- /**
- * @zh_CN 菜单是否折叠
- * @default false
- */
- collapse?: boolean;
- /**
- * @zh_CN 菜单折叠时是否显示菜单名称
- * @default false
- */
- collapseShowTitle?: boolean;
- /**
- * @zh_CN 默认激活的菜单
- */
- defaultActive?: string;
- /**
- * @zh_CN 默认展开的菜单
- */
- defaultOpeneds?: string[];
- /**
- * @zh_CN 菜单模式
- * @default vertical
- */
- mode?: 'horizontal' | 'vertical';
- /**
- * @zh_CN 是否圆润风格
- * @default true
- */
- rounded?: boolean;
- /**
- * @zh_CN 菜单主题
- * @default dark
- */
- theme?: ThemeModeType;
- }
- interface SubMenuProps extends MenuRecordBadgeRaw {
- /**
- * @zh_CN 是否禁用
- */
- disabled?: boolean;
- /**
- * @zh_CN 图标
- */
- icon?: string;
- /**
- * @zh_CN submenu 名称
- */
- path: string;
- }
- interface MenuItemProps extends MenuRecordBadgeRaw {
- /**
- * @zh_CN 是否禁用
- */
- disabled?: boolean;
- /**
- * @zh_CN 图标
- */
- icon?: string;
- /**
- * @zh_CN menuitem 名称
- */
- path: string;
- }
- interface MenuItemRegistered {
- active: boolean;
- parentPaths: string[];
- path: string;
- }
- // export interface MenuItemClicked {
- // name: string;
- // }
- interface MenuItemClicked {
- parentPaths: string[];
- path: string;
- }
- interface MenuProvider {
- activePath?: string;
- addMenuItem: (item: MenuItemRegistered) => void;
- addSubMenu: (item: MenuItemRegistered) => void;
- closeMenu: (path: string, parentLinks: string[]) => void;
- handleMenuItemClick: (item: MenuItemClicked) => void;
- handleSubMenuClick: (subMenu: MenuItemRegistered) => void;
- isMenuPopup: boolean;
- items: Record<string, MenuItemRegistered>;
- openMenu: (path: string, parentLinks: string[]) => void;
- openedMenus: string[];
- props: MenuProps;
- removeMenuItem: (item: MenuItemRegistered) => void;
- removeSubMenu: (item: MenuItemRegistered) => void;
- subMenus: Record<string, MenuItemRegistered>;
- theme: string;
- }
- interface SubMenuProvider {
- addSubMenu: (item: MenuItemRegistered) => void;
- handleMouseleave?: (deepDispatch: boolean) => void;
- level: number;
- mouseInChild: Ref<boolean>;
- removeSubMenu: (item: MenuItemRegistered) => void;
- }
- export type {
- MenuItemClicked,
- MenuItemProps,
- MenuItemRegistered,
- MenuProps,
- MenuProvider,
- SubMenuProps,
- SubMenuProvider,
- };
|