diff --git a/ui/src/layout/sidebar/ResourceDetailMenu.vue b/ui/src/layout/sidebar/ResourceDetailMenu.vue index a2c6e420530..822627e95a7 100644 --- a/ui/src/layout/sidebar/ResourceDetailMenu.vue +++ b/ui/src/layout/sidebar/ResourceDetailMenu.vue @@ -8,85 +8,52 @@ const props = defineProps<{ menuItems: LayoutMenuItem[]; activeName: string }>() const emit = defineEmits<{ select: [menuItem: LayoutMenuItem] }>() /* 初始展开分组;导航时展开当前页所属分组,保留用户对其他分组的选择。 */ -const expandedGroups = ref(props.menuItems.filter((menuItem) => menuItem.children?.length).map((menuItem) => menuItem.name)) +const expandedGroups = ref>( + Object.fromEntries(props.menuItems.filter((menuItem) => menuItem.children?.length).map((menuItem) => [menuItem.name, true])), +) watch( () => props.activeName, (activeName) => { const activeGroup = props.menuItems.find((menuItem) => menuItem.children?.some((child) => child.name === activeName)) - if (activeGroup && !expandedGroups.value.includes(activeGroup.name)) expandedGroups.value.push(activeGroup.name) + if (activeGroup) expandedGroups.value[activeGroup.name] = true }, { immediate: true }, )