From c40a7751b957eef5ba833bf901812bdba581a3b3 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 27 May 2025 15:59:17 -0700 Subject: [PATCH] Fix: include base href when opening global search result in new window (#10066) --- .../global-search/global-search.component.spec.ts | 11 +++++++++++ .../global-search/global-search.component.ts | 12 ++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src-ui/src/app/components/app-frame/global-search/global-search.component.spec.ts b/src-ui/src/app/components/app-frame/global-search/global-search.component.spec.ts index 4ff772eb9..eaae4a814 100644 --- a/src-ui/src/app/components/app-frame/global-search/global-search.component.spec.ts +++ b/src-ui/src/app/components/app-frame/global-search/global-search.component.spec.ts @@ -529,6 +529,17 @@ describe('GlobalSearchComponent', () => { expect(dispatchSpy).toHaveBeenCalledTimes(2) // once for keydown, second for click }) + it('should support using base href in navigateOrOpenInNewWindow', () => { + jest + .spyOn(component['locationStrategy'], 'getBaseHref') + .mockReturnValue('/base/') + const openSpy = jest.spyOn(window, 'open') + const event = new Event('click') + event['ctrlKey'] = true + component.primaryAction(DataType.Document, { id: 1 }, event as any) + expect(openSpy).toHaveBeenCalledWith('/base/documents/1', '_blank') + }) + it('should support title content search and advanced search', () => { const qfSpy = jest.spyOn(documentListViewService, 'quickFilter') component.query = 'test' diff --git a/src-ui/src/app/components/app-frame/global-search/global-search.component.ts b/src-ui/src/app/components/app-frame/global-search/global-search.component.ts index 8ef466d5b..36f2ed0b9 100644 --- a/src-ui/src/app/components/app-frame/global-search/global-search.component.ts +++ b/src-ui/src/app/components/app-frame/global-search/global-search.component.ts @@ -1,4 +1,4 @@ -import { NgTemplateOutlet } from '@angular/common' +import { LocationStrategy, NgTemplateOutlet } from '@angular/common' import { Component, ElementRef, @@ -99,7 +99,8 @@ export class GlobalSearchComponent implements OnInit { private permissionsService: PermissionsService, private toastService: ToastService, private hotkeyService: HotKeyService, - private settingsService: SettingsService + private settingsService: SettingsService, + private locationStrategy: LocationStrategy ) { this.queryDebounce = new Subject() @@ -421,10 +422,13 @@ export class GlobalSearchComponent implements OnInit { extras: Object = {} ) { if (newWindow) { - const url = this.router.serializeUrl( + const serializedUrl = this.router.serializeUrl( this.router.createUrlTree(commands, extras) ) - window.open(url, '_blank') + const baseHref = this.locationStrategy.getBaseHref() + const fullUrl = + baseHref.replace(/\/+$/, '') + '/' + serializedUrl.replace(/^\/+/, '') + window.open(fullUrl, '_blank') } else { this.router.navigate(commands, extras) }