diff --git a/packages/editor/src/layouts/sidebar/LayerMenu.vue b/packages/editor/src/layouts/sidebar/LayerMenu.vue index b644245f7..ed31ac5a6 100644 --- a/packages/editor/src/layouts/sidebar/LayerMenu.vue +++ b/packages/editor/src/layouts/sidebar/LayerMenu.vue @@ -22,6 +22,7 @@ const props = defineProps<{ const services = inject('services'); const menu = ref>(); const node = computed(() => services?.editorService.get('node')); +const nodes = computed(() => services?.editorService.get('nodes')); const isRoot = computed(() => node.value?.type === NodeType.ROOT); const isPage = computed(() => node.value?.type === NodeType.PAGE); const componentList = computed(() => services?.componentListService.getList() || []); @@ -82,7 +83,7 @@ const menuData = computed<(MenuButton | MenuComponent)[]>(() => [ type: 'button', text: '新增', icon: markRaw(Plus), - display: () => node.value?.items, + display: () => node.value?.items && nodes.value?.length === 1, items: getSubMenuData.value, }, { @@ -91,7 +92,7 @@ const menuData = computed<(MenuButton | MenuComponent)[]>(() => [ icon: markRaw(CopyDocument), display: () => !isRoot.value, handler: () => { - node.value && services?.editorService.copy(node.value); + node.value && services?.editorService.copy(nodes.value || []); }, }, { @@ -100,7 +101,7 @@ const menuData = computed<(MenuButton | MenuComponent)[]>(() => [ icon: markRaw(Delete), display: () => !isRoot.value && !isPage.value, handler: () => { - node.value && services?.editorService.remove(node.value); + node.value && services?.editorService.remove(nodes.value || []); }, }, ...props.layerContentMenu, diff --git a/packages/editor/src/layouts/sidebar/LayerPanel.vue b/packages/editor/src/layouts/sidebar/LayerPanel.vue index 3b94699b2..b1feaf795 100644 --- a/packages/editor/src/layouts/sidebar/LayerPanel.vue +++ b/packages/editor/src/layouts/sidebar/LayerPanel.vue @@ -350,7 +350,11 @@ const clickHandler = (data: MNode): void => { // 右键菜单 const contextmenu = async (event: MouseEvent, data: MNode): Promise => { event.preventDefault(); - await select(data); + + if (nodes.value.length < 2) { + await select(data); + } + menu.value?.show(event); };