mirror of
https://gitee.com/dromara/go-view.git
synced 2026-04-23 00:00:12 +08:00
fix: 修改右键
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user