diff --git a/web/app/components/workflow/block-selector/apoTools.tsx b/web/app/components/workflow/block-selector/apoTools.tsx index d69e9220d7..1060a39f91 100644 --- a/web/app/components/workflow/block-selector/apoTools.tsx +++ b/web/app/components/workflow/block-selector/apoTools.tsx @@ -12,22 +12,28 @@ import BlockIcon from '../block-icon' type APOToolsProps = { searchText: string; onSelect: (type: BlockEnum, tool?: ToolDefaultValue) => void; - apoNodes?: ToolWithProvider[] + apoNodes?: ToolWithProvider[]; } const APOTools = ({ searchText, onSelect, apoNodes = [] }: APOToolsProps) => { const language = useGetLanguage() const [openKey, setOpenKey] = useState>({}) - + const [hoveredKey, setHoveredKey] = useState>({}) const filteredApoNodes = useMemo(() => { const lowerCaseSearch = searchText.toLowerCase() - return apoNodes.filter(node => node.label[language]?.toLowerCase().includes(lowerCaseSearch)) + return apoNodes.filter(node => + node.label[language]?.toLowerCase().includes(lowerCaseSearch), + ) }, [searchText, apoNodes, language]) const handleOpenChange = (key: ApoToolTypeInfo, newOpen: boolean) => { setOpenKey(prev => ({ ...prev, [key]: newOpen })) + setHoveredKey({}) + } + const handleHoverChange = (key: ApoToolTypeInfo, newOpen: boolean) => { + setHoveredKey(prev => ({ ...prev, [key]: newOpen })) + setOpenKey({}) } - const hide = (key: ApoToolTypeInfo) => { setOpenKey(prev => ({ ...prev, [key]: false })) } @@ -37,19 +43,52 @@ const APOTools = ({ searchText, onSelect, apoNodes = [] }: APOToolsProps) => { {filteredApoNodes.map(node => ( handleOpenChange(node.id, newOpen)} - content={ - hide(node.name)} /> - } + placement="rightTop" + style={{ width: 500 }} + arrow={false} + content={
+ +
{node.label[language]}
+
{node.description[language]}
+
} + trigger="hover" + open={hoveredKey[node.id]} + onOpenChange={newOpen => handleHoverChange(node.id, newOpen)} > -
- -
{node.label[language]}
-
+ handleOpenChange(node.id, newOpen)} + content={ + hide(node.name)} + /> + } + > + +
+ +
+ {node.label[language]} +
+
+
+ ))} )