element-plus
Version:
A Component Library for Vue3.0
83 lines (82 loc) • 2.53 kB
TypeScript
import { Ref, ComputedRef } from 'vue';
import { Emitter } from 'mitt';
export interface RegisterMenuItem {
index: string;
indexPath: ComputedRef<string[]>;
active: ComputedRef<boolean>;
}
export interface RootMenuData {
activeIndex: string;
openedMenus: unknown[];
items: any;
submenus: any;
isMenuPopup: boolean;
}
export interface RootMenuProvider {
openedMenus: Ref<RootMenuData['openedMenus']>;
items: Ref<RootMenuData['items']>;
submenus: Ref<RootMenuData['submenus']>;
activeIndex: Ref<RootMenuData['activeIndex']>;
hoverBackground: Ref<string>;
isMenuPopup: Ref<RootMenuData['isMenuPopup']>;
props: Readonly<Partial<RootMenuProps>>;
methods: {
addMenuItem: (item: RegisterMenuItem) => void;
removeMenuItem: (item: RegisterMenuItem) => void;
addSubMenu: (item: RegisterMenuItem) => void;
removeSubMenu: (item: RegisterMenuItem) => void;
openMenu: (index: string, indexPath: Ref<string[]>) => 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;
}
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;
}
export interface ISubmenuProps {
index: string;
showTimeout?: number;
hideTimeout?: number;
popperClass?: string;
disabled?: boolean;
popperAppendToBody?: boolean;
}
export interface IMenuItemProps {
index: string;
route: string | Record<string, unknown>;
popperClass: string;
disabled: boolean;
popperAppendToBody?: boolean;
}
export interface IMenuGroupProps {
title: string;
}