fix: 修改右键

This commit is contained in:
MTrun
2022-02-07 20:55:40 +08:00
parent 8fb8b9328d
commit 88b03a416c
8 changed files with 83 additions and 54 deletions
+36 -24
View File
@@ -1,4 +1,4 @@
import { ref, nextTick } from 'vue'
import { reactive, nextTick } from 'vue'
import { useChartEditStoreStore } from '@/store/modules/chartEditStore/chartEditStore'
import { CreateComponentType } from '@/packages/index.d'
import { renderIcon, loadingError } from '@/utils'
@@ -104,38 +104,49 @@ const defaultOptions: MenuOptionsItemType[] = [
}
]
// * 去除隐藏选项
const clearHideOption = (options: MenuOptionsItemType[], hideList?: MenuEnum[]) => {
if(!hideList) return options
const a = options.filter((op: MenuOptionsItemType) => {
return hideList.findIndex((e: MenuEnum) => e !== op.key)
})
}
// * 右键处理
const handleContextMenu = (e: MouseEvent, item: CreateComponentType) => {
e.stopPropagation()
e.preventDefault()
let target = e.target
while (target instanceof SVGElement) {
target = target.parentNode
}
chartEditStore.setRightMenuShow(false)
nextTick().then(() => {
chartEditStore.setMousePosition(e.clientX, e.clientY)
chartEditStore.setRightMenuShow(true)
})
}
/**
* * 右键hook
* @param menuOption
* @param menuConfig
* @returns
*/
export const useContextMenu = (menuOption?: {
export const useContextMenu = (menuConfig: {
// 自定义右键配置
selfOptions: MenuOptionsItemType[]
selfOptions?: MenuOptionsItemType[]
// 前置处理函数
optionsHandle: Function
optionsHandle?: Function
// 隐藏列表
hideOptionsList?: MenuEnum[]
}) => {
const selfOptions = menuOption?.selfOptions
const optionsHandle = menuOption?.optionsHandle
const selfOptions = menuConfig?.selfOptions
const optionsHandle = menuConfig?.optionsHandle
const hideOptionsList = menuConfig?.hideOptionsList
// * 右键选项
const menuOptions: MenuOptionsItemType[] = selfOptions || defaultOptions
// * 右键处理
const handleContextMenu = (e: MouseEvent, item: CreateComponentType) => {
e.stopPropagation()
e.preventDefault()
let target = e.target
while (target instanceof SVGElement) {
target = target.parentNode
}
chartEditStore.setRightMenuShow(false)
nextTick().then(() => {
chartEditStore.setMousePosition(e.clientX, e.clientY)
chartEditStore.setRightMenuShow(true)
})
}
// * 失焦
const onClickoutside = () => {
chartEditStore.setRightMenuShow(false)
@@ -158,9 +169,10 @@ export const useContextMenu = (menuOption?: {
}
})
}
return {
menuOptions: optionsHandle ? optionsHandle(menuOptions) : menuOptions,
// todo 每次都重新计算的功能
// menuOptions: clearHideOption ? clearHideOption(menuOptions, hideOptionsList) : menuOptions,
menuOptions: menuOptions,
handleContextMenu,
onClickoutside,
handleMenuSelect,