diff --git a/web/src/components/search/search-results-panel.tsx b/web/src/components/search/search-results-panel.tsx
index 8830ea0..a7ecedd 100644
--- a/web/src/components/search/search-results-panel.tsx
+++ b/web/src/components/search/search-results-panel.tsx
@@ -28,9 +28,17 @@ type Props = {
isRunning: boolean;
className?: string;
enableKeyboardNavigation?: boolean;
+ openLinksInNewTab?: boolean;
};
-export function SearchResultsPanel({ search, isLoading, isRunning, className, enableKeyboardNavigation = false }: Props) {
+export function SearchResultsPanel({
+ search,
+ isLoading,
+ isRunning,
+ className,
+ enableKeyboardNavigation = false,
+ openLinksInNewTab = true,
+}: Props) {
const ANSWER_COLLAPSED_HEIGHT_CLASS = "h-[3rem]";
const [isAnswerExpanded, setIsAnswerExpanded] = useState(false);
const [canExpandAnswer, setCanExpandAnswer] = useState(false);
@@ -92,12 +100,16 @@ export function SearchResultsPanel({ search, isLoading, isRunning, className, en
const result = search.results[activeResultIndex >= 0 ? activeResultIndex : 0];
if (!result?.url) return;
event.preventDefault();
- window.open(result.url, "_blank", "noopener,noreferrer");
+ if (openLinksInNewTab) {
+ window.open(result.url, "_blank", "noopener,noreferrer");
+ } else {
+ window.location.assign(result.url);
+ }
};
window.addEventListener("keydown", onKeyDown);
return () => window.removeEventListener("keydown", onKeyDown);
- }, [activeResultIndex, enableKeyboardNavigation, search]);
+ }, [activeResultIndex, enableKeyboardNavigation, openLinksInNewTab, search]);
const citationEntries = (search?.answerCitations ?? [])
.map((citation, index) => {
@@ -185,8 +197,8 @@ export function SearchResultsPanel({ search, isLoading, isRunning, className, en
{citation.index}
@@ -218,7 +230,12 @@ export function SearchResultsPanel({ search, isLoading, isRunning, className, en
)}
>
{formatHost(result.url)}
{error}
: null} -