diff --git a/vite-frontend/src/pages/node.tsx b/vite-frontend/src/pages/node.tsx index e0e56cc..6783693 100644 --- a/vite-frontend/src/pages/node.tsx +++ b/vite-frontend/src/pages/node.tsx @@ -388,10 +388,20 @@ export default function NodePage() { } const rect = triggerElement.getBoundingClientRect(); + const cardElement = triggerElement.closest("[data-node-card='true']"); + const cardRect = + cardElement instanceof HTMLElement + ? cardElement.getBoundingClientRect() + : null; const estimatedPanelWidth = 288; - const viewportPadding = 24; + const containerPadding = 16; + const availableLeftSpace = cardRect + ? rect.left - cardRect.left + : rect.left; const nextPlacement: "left" | "bottom" = - rect.left >= estimatedPanelWidth + viewportPadding ? "left" : "bottom"; + availableLeftSpace >= estimatedPanelWidth + containerPadding + ? "left" + : "bottom"; setInfoPopoverPlacement((prev) => prev[nodeId] === nextPlacement @@ -1689,6 +1699,7 @@ export default function NodePage() { {(listeners) => (