11<template >
2- <RouterLink
3- :to =" item.url || { name: item.resourceId ? 'resource-list' : item.path, params: item.resourceId ? { resourceId: item.resourceId }: {}}"
2+ <component
3+ :is =" isExternalUrl(item.url) ? 'a' : RouterLink"
4+ v-bind =" isExternalUrl(item.url)
5+ ? { href: item.url }
6+ : { to: item.url || { name: item.resourceId ? 'resource-list' : item.path, params: item.resourceId ? { resourceId: item.resourceId }: {} } }"
47 :target =" item.isOpenInNewTab ? '_blank' : '_self'"
5- class =" af-menu-link flex group relative items-center w-full py-2 text-lightSidebarText dark:text-darkSidebarText rounded-default transition-all duration-200 ease-in-out"
6- :class =" {
8+ class =" af-menu-link flex group relative items-center w-full py-2 text-lightSidebarText dark:text-darkSidebarText rounded-default transition-all duration-200 ease-in-out"
9+ :class =" {
710 'hover:bg-lightSidebarItemHover hover:text-lightSidebarTextHover dark:hover:bg-darkSidebarItemHover dark:hover:text-darkSidebarTextHover active:bg-lightSidebarActive dark:active:bg-darkSidebarHover': !['divider', 'gap', 'heading'].includes(item.type),
811 'pl-6 pr-3.5': (isChild && !isSidebarIconOnly && !isSidebarHovering) || (isChild && isSidebarIconOnly && isSidebarHovering),
912 'px-3.5 ': !isChild || (isSidebarIconOnly && !isSidebarHovering),
5154 <div v-if =" (item.badge || item.badge === 0) && isSidebarIconOnly && !isSidebarHovering" class =" af-badge absolute right-0.5 bottom-1 -translate-y-1/2 inline-flex items-center justify-center h-2 w-2 text-sm font-medium rounded-full bg-lightAnnouncementBG dark:bg-darkAnnouncementBG
5255 fill-lightAnnouncementText dark:fill-darkAccent text-lightAnnouncementText dark:text-darkAccent" >
5356 </div >
54- </RouterLink >
57+ </component >
5558</template >
5659
5760<script setup lang="ts">
@@ -60,13 +63,15 @@ import { Tooltip } from '@/afcl';
6063import { ref , watch , computed } from ' vue' ;
6164import { useCoreStore } from ' @/stores/core' ;
6265import { IconFileImageOutline } from ' @iconify-prerendered/vue-flowbite' ;
63- import { useRoute } from ' vue-router' ;
66+ import { useRoute , RouterLink } from ' vue-router' ;
67+
68+ const isExternalUrl = (url : string ) => / ^ https? :\/\/ / .test (url || ' ' );
6469
6570const route = useRoute ();
6671
6772const isItemActive = (item : any ) => {
6873 if (item .url ) {
69- return route .fullPath === item .url ;
74+ return ! isExternalUrl ( item . url ) && route .fullPath === item .url ;
7075 }
7176
7277 if (item .resourceId ) {
0 commit comments