From 6b8ca6af87cdb9719403bd2b53fb836e13450dc4 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Sat, 30 May 2026 16:09:34 +0800 Subject: [PATCH] fix(sidebar): scroll to newly created groups --- .../src/components/sidebar/ConnectionTree.vue | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/apps/desktop/src/components/sidebar/ConnectionTree.vue b/apps/desktop/src/components/sidebar/ConnectionTree.vue index 05eaf2a06..fad38199a 100644 --- a/apps/desktop/src/components/sidebar/ConnectionTree.vue +++ b/apps/desktop/src/components/sidebar/ConnectionTree.vue @@ -163,9 +163,36 @@ const activeTab = computed(() => queryStore.tabs.find((tab) => tab.id === queryS const pendingRenameGroupId = ref(null); -function createNewGroup() { +async function scrollToSidebarNode(nodeId: string) { + await nextTick(); + + const index = flatNodes.value.findIndex((item) => item.id === nodeId); + const scroller = currentTreeScroller(); + if (!scroller || index < 0) return; + + const nextScrollTop = scrollTopForSidebarNode({ + index, + currentScrollTop: scroller.scrollTop, + viewportHeight: scroller.clientHeight, + }); + if (nextScrollTop !== scroller.scrollTop) { + scroller.scrollTop = nextScrollTop; + } +} + +async function createNewGroup() { const groupId = store.createConnectionGroup(t("connectionGroup.newGroupDefault")); pendingRenameGroupId.value = groupId; + store.selectedTreeNodeId = groupId; + + if (isFiltering.value) { + searchQuery.value = ""; + deferredSearchQuery.value = ""; + clearSearchScopeFilter(); + } + + await scrollToSidebarNode(groupId); + store.selectedTreeNodeId = groupId; } function onSearchToggle(node: TreeNode) {