From 12e1a6a8557f3a7b40b6052f6f6f887bed00ccb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=98=AD?= <81747598+lan-yonghui@users.noreply.github.com> Date: Mon, 20 Oct 2025 21:47:32 +0800 Subject: [PATCH] fix: App menu and setting menu cannot be set as secondary menu (#10701) --- .../src/views/setting/panel/hidemenu/index.vue | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/frontend/src/views/setting/panel/hidemenu/index.vue b/frontend/src/views/setting/panel/hidemenu/index.vue index 95c303e49..6ebbab4ed 100644 --- a/frontend/src/views/setting/panel/hidemenu/index.vue +++ b/frontend/src/views/setting/panel/hidemenu/index.vue @@ -70,13 +70,17 @@ const acceptParams = (params: DialogProps): void => { type Node = RenderContentContext['node']; const allowDrag = (draggingNode: Node) => { - return !draggingNode.data.label.includes('Home-Menu') || draggingNode.level < 3; + const { label } = draggingNode.data; + const forbidden = ['Home-Menu']; + return draggingNode.level < 3 && !forbidden.some((key) => label.includes(key)); }; const allowDrop = (draggingNode: Node, dropNode: Node, type: AllowDropType) => { if (dropNode.data.label === 'Home-Menu') { return type !== 'prev' && type !== 'inner'; } + const label = draggingNode.data.label; + const restricted = ['App-Menu', 'Setting-Menu']; const draggingHasChildren = draggingNode.childNodes?.length > 0; const isDraggingTooDeep = draggingNode.level > 2; const isDraggingFirstLevel = draggingNode.level === 1; @@ -89,7 +93,7 @@ const allowDrop = (draggingNode: Node, dropNode: Node, type: AllowDropType) => { return false; } - if (isDropFirstLevel && dropHasChildren) { + if (isDropFirstLevel && dropHasChildren && !restricted.includes(label)) { return type === 'inner' || type === 'prev' || type === 'next'; } @@ -97,7 +101,12 @@ const allowDrop = (draggingNode: Node, dropNode: Node, type: AllowDropType) => { return type === 'prev' || type === 'next'; } - if (isDraggingFirstLevel && draggingNode.childNodes?.length > 0 && dropNode.level !== 2) { + if ( + isDraggingFirstLevel && + draggingNode.childNodes?.length > 0 && + dropNode.level !== 2 && + !restricted.includes(label) + ) { return type === 'inner' || type === 'prev' || type === 'next'; }