Skip to content

Commit 96a8e18

Browse files
fix
1 parent 3a498e9 commit 96a8e18

1 file changed

Lines changed: 43 additions & 40 deletions

File tree

  • packages/web/src/ee/features/codeNav/components/symbolHoverPopup

packages/web/src/ee/features/codeNav/components/symbolHoverPopup/index.tsx

Lines changed: 43 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { Loader2 } from "lucide-react";
77
import { useCallback, useEffect, useRef, useState } from "react";
88
import { SymbolDefinition, useHoveredOverSymbolInfo } from "./useHoveredOverSymbolInfo";
99
import { SymbolDefinitionPreview } from "./symbolDefinitionPreview";
10+
import { createPortal } from "react-dom";
1011

1112
interface SymbolHoverPopupProps {
1213
editorRef: ReactCodeMirrorRef;
@@ -55,9 +56,11 @@ export const SymbolHoverPopup: React.FC<SymbolHoverPopupProps> = ({
5556
crossAxis: false,
5657
fallbackPlacements: ['bottom'],
5758
boundary: editorRef.view?.dom,
59+
padding: 20,
5860
}),
5961
shift({
6062
padding: 5,
63+
boundary: editorRef.view?.dom,
6164
})
6265
]
6366
}).then(({ x, y }) => {
@@ -92,47 +95,47 @@ export const SymbolHoverPopup: React.FC<SymbolHoverPopupProps> = ({
9295
}, [symbolInfo, onGotoDefinition]);
9396

9497
return symbolInfo ? (
95-
<div
96-
ref={ref}
97-
className="absolute z-10 flex flex-col gap-2 bg-background border border-gray-300 dark:border-gray-700 rounded-md shadow-lg p-2 max-w-3xl"
98-
onMouseOver={() => setIsSticky(true)}
99-
onMouseOut={() => setIsSticky(false)}
100-
>
101-
{symbolInfo.isSymbolDefinitionsLoading ? (
102-
<div className="flex flex-row items-center gap-2 text-sm">
103-
<Loader2 className="w-4 h-4 animate-spin" />
104-
Loading...
98+
<div
99+
ref={ref}
100+
className="absolute z-10 flex flex-col gap-2 bg-background border border-gray-300 dark:border-gray-700 rounded-md shadow-lg p-2 max-w-3xl"
101+
onMouseOver={() => setIsSticky(true)}
102+
onMouseOut={() => setIsSticky(false)}
103+
>
104+
{symbolInfo.isSymbolDefinitionsLoading ? (
105+
<div className="flex flex-row items-center gap-2 text-sm">
106+
<Loader2 className="w-4 h-4 animate-spin" />
107+
Loading...
108+
</div>
109+
) : symbolInfo.symbolDefinitions && symbolInfo.symbolDefinitions.length > 0 ? (
110+
<SymbolDefinitionPreview
111+
symbolDefinition={symbolInfo.symbolDefinitions[0]}
112+
/>
113+
) : (
114+
<p className="text-sm font-medium text-muted-foreground">No hover info found</p>
115+
)}
116+
<Separator />
117+
<div className="flex flex-row gap-2 mt-2">
118+
<LoadingButton
119+
loading={symbolInfo.isSymbolDefinitionsLoading}
120+
disabled={!symbolInfo.symbolDefinitions || symbolInfo.symbolDefinitions.length === 0}
121+
variant="outline"
122+
size="sm"
123+
onClick={onGotoDefinition}
124+
>
125+
{
126+
!symbolInfo.isSymbolDefinitionsLoading && (!symbolInfo.symbolDefinitions || symbolInfo.symbolDefinitions.length === 0) ?
127+
"No definition found" :
128+
`Go to ${symbolInfo.symbolDefinitions && symbolInfo.symbolDefinitions.length > 1 ? "definitions" : "definition"}`
129+
}
130+
</LoadingButton>
131+
<Button
132+
variant="outline"
133+
size="sm"
134+
onClick={() => onFindReferences(symbolInfo.symbolName)}
135+
>
136+
Find references
137+
</Button>
105138
</div>
106-
) : symbolInfo.symbolDefinitions && symbolInfo.symbolDefinitions.length > 0 ? (
107-
<SymbolDefinitionPreview
108-
symbolDefinition={symbolInfo.symbolDefinitions[0]}
109-
/>
110-
) : (
111-
<p className="text-sm font-medium text-muted-foreground">No hover info found</p>
112-
)}
113-
<Separator />
114-
<div className="flex flex-row gap-2 mt-2">
115-
<LoadingButton
116-
loading={symbolInfo.isSymbolDefinitionsLoading}
117-
disabled={!symbolInfo.symbolDefinitions || symbolInfo.symbolDefinitions.length === 0}
118-
variant="outline"
119-
size="sm"
120-
onClick={onGotoDefinition}
121-
>
122-
{
123-
!symbolInfo.isSymbolDefinitionsLoading && (!symbolInfo.symbolDefinitions || symbolInfo.symbolDefinitions.length === 0) ?
124-
"No definition found" :
125-
`Go to ${symbolInfo.symbolDefinitions && symbolInfo.symbolDefinitions.length > 1 ? "definitions" : "definition"}`
126-
}
127-
</LoadingButton>
128-
<Button
129-
variant="outline"
130-
size="sm"
131-
onClick={() => onFindReferences(symbolInfo.symbolName)}
132-
>
133-
Find references
134-
</Button>
135-
</div>
136139
</div>
137140
) : null;
138141
};

0 commit comments

Comments
 (0)