diff --git a/frontend/src/components/WorkspaceChat/ChatContainer/PromptInput/ToolsMenu/Tabs/SlashCommands/SlashCommandRow/index.jsx b/frontend/src/components/WorkspaceChat/ChatContainer/PromptInput/ToolsMenu/Tabs/SlashCommands/SlashCommandRow/index.jsx index e20266c8..2af07532 100644 --- a/frontend/src/components/WorkspaceChat/ChatContainer/PromptInput/ToolsMenu/Tabs/SlashCommands/SlashCommandRow/index.jsx +++ b/frontend/src/components/WorkspaceChat/ChatContainer/PromptInput/ToolsMenu/Tabs/SlashCommands/SlashCommandRow/index.jsx @@ -1,4 +1,5 @@ import { useState, useRef, useEffect } from "react"; +import { createPortal } from "react-dom"; import { DotsThree } from "@phosphor-icons/react"; import { useTranslation } from "react-i18next"; @@ -13,6 +14,7 @@ export default function SlashCommandRow({ }) { const { t } = useTranslation(); const [menuOpen, setMenuOpen] = useState(false); + const [menuPosition, setMenuPosition] = useState({ top: 0, left: 0 }); const menuRef = useRef(null); const menuBtnRef = useRef(null); @@ -32,6 +34,16 @@ export default function SlashCommandRow({ return () => document.removeEventListener("mousedown", handleClickOutside); }, [menuOpen]); + useEffect(() => { + if (menuOpen && menuBtnRef.current) { + const rect = menuBtnRef.current.getBoundingClientRect(); + setMenuPosition({ + top: rect.bottom + window.scrollY, + left: rect.right + window.scrollX - 120, + }); + } + }, [menuOpen]); + return (
- {menuOpen && ( -