From 263533f09ad0e2e1316550b8d93877a3aeb76455 Mon Sep 17 00:00:00 2001 From: roymondchen Date: Fri, 3 Nov 2023 19:27:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(editor):=20=E7=BC=93=E5=AD=98=E5=8F=AF?= =?UTF-8?q?=E9=80=89=E7=BB=84=E4=BB=B6=E8=8F=9C=E5=8D=95=E7=BD=AE=E4=BA=8E?= =?UTF-8?q?=E9=A1=B6=E5=B1=82=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/editor/src/components/ContentMenu.vue | 8 ++------ .../src/layouts/workspace/viewer/NodeListMenu.vue | 13 +++++++++++-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/packages/editor/src/components/ContentMenu.vue b/packages/editor/src/components/ContentMenu.vue index 67385e2c..f2be3f09 100644 --- a/packages/editor/src/components/ContentMenu.vue +++ b/packages/editor/src/components/ContentMenu.vue @@ -126,17 +126,13 @@ const setPosition = (e: { clientY: number; clientX: number }) => { }; }; -const show = (e?: MouseEvent) => { +const show = (e?: { clientY: number; clientX: number }) => { // 加settimeout是以为,如果菜单中的按钮监听的是mouseup,那么菜单显示出来时鼠标如果正好在菜单上就会马上触发按钮的mouseup setTimeout(() => { visible.value = true; - if (!e) { - return; - } - nextTick(() => { - setPosition(e); + e && setPosition(e); emit('show'); }); diff --git a/packages/editor/src/layouts/workspace/viewer/NodeListMenu.vue b/packages/editor/src/layouts/workspace/viewer/NodeListMenu.vue index 4a917214..91df162d 100644 --- a/packages/editor/src/layouts/workspace/viewer/NodeListMenu.vue +++ b/packages/editor/src/layouts/workspace/viewer/NodeListMenu.vue @@ -26,11 +26,15 @@ import ContentMenu from '@editor/components/ContentMenu.vue'; import type { ComponentItem, MenuButton, Services } from '@editor/type'; import NodeListMenuTitle from './NodeListMenuTitle.vue'; + +const PINNED_STATUE_CACHE_KEY = 'tmagic-pinned-node-list-pinned-status'; + const props = defineProps<{ isMultiSelect?: boolean }>(); const menu = ref>(); const nodeList = ref([]); -const pinned = ref(false); +const pinned = ref(Boolean(globalThis.localStorage.getItem(PINNED_STATUE_CACHE_KEY))); +const firstShow = ref(true); const services = inject('services'); const editorService = services?.editorService; @@ -94,7 +98,8 @@ const unWatch = watch( nodeList.value = nodes; if (nodeList.value.length > 1) { - menu.value?.show(pinned.value ? undefined : event); + menu.value?.show(pinned.value && !firstShow.value ? undefined : event); + firstShow.value = false; } }, 1500); }); @@ -163,4 +168,8 @@ const dragMenuHandler = ({ deltaY, deltaX }: OnDrag) => { const closeHandler = () => { menu.value?.hide(); }; + +watch(pinned, () => { + globalThis.localStorage.setItem(PINNED_STATUE_CACHE_KEY, pinned.value.toString()); +});