diff --git a/packages/effects/layouts/package.json b/packages/effects/layouts/package.json index 3379f983..388f0c84 100644 --- a/packages/effects/layouts/package.json +++ b/packages/effects/layouts/package.json @@ -24,6 +24,7 @@ "@vben-core/menu-ui": "workspace:*", "@vben-core/popup-ui": "workspace:*", "@vben-core/shadcn-ui": "workspace:*", + "@vben-core/shared": "workspace:*", "@vben-core/tabs-ui": "workspace:*", "@vben/constants": "workspace:*", "@vben/hooks": "workspace:*", diff --git a/packages/effects/layouts/src/widgets/global-search/search-panel.vue b/packages/effects/layouts/src/widgets/global-search/search-panel.vue index a381f49c..56fe5959 100644 --- a/packages/effects/layouts/src/widgets/global-search/search-panel.vue +++ b/packages/effects/layouts/src/widgets/global-search/search-panel.vue @@ -8,6 +8,7 @@ import { SearchX, X } from '@vben/icons'; import { $t } from '@vben/locales'; import { mapTree, traverseTreeValues, uniqueByField } from '@vben/utils'; import { VbenIcon, VbenScrollbar } from '@vben-core/shadcn-ui'; +import { isHttpUrl } from '@vben-core/shared'; import { onKeyStroke, useLocalStorage, useThrottleFn } from '@vueuse/core'; @@ -99,7 +100,11 @@ async function handleEnter() { searchHistory.value.push(to); handleClose(); await nextTick(); - router.push(to.path); + if (isHttpUrl(to.path)) { + window.open(to.path, '_blank'); + } else { + router.push({ path: to.path, replace: true }); + } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c0226108..72366b5e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1002,6 +1002,9 @@ importers: '@vben-core/shadcn-ui': specifier: workspace:* version: link:../../@core/ui-kit/shadcn-ui + '@vben-core/shared': + specifier: workspace:* + version: link:../../@core/base/shared '@vben-core/tabs-ui': specifier: workspace:* version: link:../../@core/ui-kit/tabs-ui