@imcyk/context-menu
Version:
基于vue3+vite+ts的右键菜单组件,适用于组合式api和选项式api。
84 lines (78 loc) • 1.91 kB
TypeScript
/*
* @Author: Chen Yankai
* @Date: 2022-11-15 15:51:15
* @LastEditTime: 2022-11-28 08:48:22
* @LastEditors: Chen Yankai
* @Description:
*/
export interface DefaultInstallOptions {
prefix?: string
alias?: string
namespace?: string
globalMenus?: ContextMenuMemory
}
export interface ContextMenuInstance {
closeMenu(): void
}
export interface MenuOptions {
items: MenuItem[]
x: number
y: number
xOffset?: number
yOffset?: number
zIndex?: number
customClass?: string
iconFontClass?: string
moreArrow?: string | object
maxWidth?: number
minWidth?: number
maxHeight?: number
closeWhenScroll?: boolean
namespace?: string
key?: string
}
export interface MenuItem {
label?: string | object
icon?: string | object
disabled?: boolean
adjustSubMenuPosition?: boolean
clickableWhenHasChildren?: boolean
clickClose?: boolean
divided?: boolean
customClass?: string
maxWidth?: number
minWidth?: number
onClick?: () => void
customComponent?: object
metadata?: object | string
children?: MenuItem[]
}
export interface MenuItemData {
label?: string | object
icon?: string | object
disabled?: boolean
divided?: boolean
metadata?: object | string
children?: MenuItem[]
clickableWhenHasChildren?: boolean
clickClose?: boolean
iconFontClass?: string
showRightArrow: boolean
from?: string
}
export interface ContextMenuPositionData {
x: number
y: number
}
export interface SubMenuParentContext {
zIndex: number
getMyPosition: () => ContextMenuPositionData
getParentWidth: () => number
addOpenedSubMenu: (closeFn: Function) => void
closeOtherSubMenu: () => void
closeOtherSubMenuWithTimeOut: () => void
checkCloseOtherSubMenuTimeOut: () => boolean
}
export interface ContextMenuMemory {
[key: string]: MenuOptions | MenuItem
}