diff --git a/ui/src/components/IssueDocumentAnnotations.tsx b/ui/src/components/IssueDocumentAnnotations.tsx index b38768b36c4..e17a24fcd26 100644 --- a/ui/src/components/IssueDocumentAnnotations.tsx +++ b/ui/src/components/IssueDocumentAnnotations.tsx @@ -242,6 +242,30 @@ export function IssueDocumentAnnotations({ [allThreads], ); + const fallbackDesktopPanelFrame = useMemo(() => { + if (!panelOpen || isMobile || desktopPanelFrame || typeof window === "undefined") return null; + const width = Math.min( + DESKTOP_ANNOTATION_PANEL_WIDTH, + Math.max( + DESKTOP_ANNOTATION_PANEL_MIN_WIDTH, + window.innerWidth - DESKTOP_ANNOTATION_PANEL_VIEWPORT_MARGIN * 2, + ), + ); + return { + left: Math.max( + DESKTOP_ANNOTATION_PANEL_VIEWPORT_MARGIN, + window.innerWidth - width - DESKTOP_ANNOTATION_PANEL_VIEWPORT_MARGIN, + ), + top: DESKTOP_ANNOTATION_PANEL_VIEWPORT_MARGIN, + maxHeight: Math.max( + 240, + window.innerHeight - DESKTOP_ANNOTATION_PANEL_VIEWPORT_MARGIN * 2, + ), + width, + }; + }, [desktopPanelFrame, isMobile, panelOpen]); + const renderedDesktopPanelFrame = desktopPanelFrame ?? fallbackDesktopPanelFrame; + const annotationPanel = panelOpen ? ( @@ -307,15 +331,15 @@ export function IssueDocumentAnnotations({ /> ) : null} - {panelOpen && !isMobile && desktopPanelFrame ? ( + {panelOpen && !isMobile && renderedDesktopPanelFrame ? (
{annotationPanel}