From 55f146f527a47baf3b5a1973cf1c84d44145d09d Mon Sep 17 00:00:00 2001 From: JzoNg Date: Mon, 15 Sep 2025 16:30:25 +0800 Subject: [PATCH] node selector --- .../components/node-selector.tsx | 34 +++++++++++++++---- .../hooks/use-form/use-memory-schema.ts | 1 - 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/web/app/components/workflow/panel/chat-variable-panel/components/node-selector.tsx b/web/app/components/workflow/panel/chat-variable-panel/components/node-selector.tsx index c7fc3852ee..246295ecba 100644 --- a/web/app/components/workflow/panel/chat-variable-panel/components/node-selector.tsx +++ b/web/app/components/workflow/panel/chat-variable-panel/components/node-selector.tsx @@ -1,6 +1,10 @@ 'use client' import type { FC } from 'react' -import React, { useState } from 'react' +import React, { useMemo, useState } from 'react' +import { + RiArrowDownSLine, + RiCheckLine, +} from '@remixicon/react' import { useNodes, } from 'reactflow' @@ -9,14 +13,16 @@ import { PortalToFollowElemContent, PortalToFollowElemTrigger, } from '@/app/components/base/portal-to-follow-elem' +import BlockIcon from '@/app/components/workflow/block-icon' import type { CommonNodeType, } from '@/app/components/workflow/types' import { BlockEnum } from '@/app/components/workflow/types' +import cn from '@/utils/classnames' type Props = { - value: boolean - onChange: (value: boolean) => void + value: string + onChange: (value: string) => void nodeType?: BlockEnum } @@ -30,6 +36,8 @@ const NodeSelector: FC = ({ const filteredNodes = nodeType ? nodes.filter(node => node.data?.type === nodeType) : nodes + const currentNode = useMemo(() => filteredNodes.find(node => node.id === value), [filteredNodes, value]) + return ( = ({ offset={4} > setOpen(v => !v)}> - Select Node + {currentNode && ( +
{currentNode.data?.title}
+ )} + {!currentNode && ( +
+
Select node...
+ +
+ )}
-
+
{filteredNodes.map(node => ( -
- {node.data?.title} +
onChange(node.id)}> + +
{node.data?.title}
+ {currentNode?.id === node.id && ( + + )}
))}
diff --git a/web/app/components/workflow/panel/chat-variable-panel/hooks/use-form/use-memory-schema.ts b/web/app/components/workflow/panel/chat-variable-panel/hooks/use-form/use-memory-schema.ts index 686d5a9d1d..1ae6c53eb9 100644 --- a/web/app/components/workflow/panel/chat-variable-panel/hooks/use-form/use-memory-schema.ts +++ b/web/app/components/workflow/panel/chat-variable-panel/hooks/use-form/use-memory-schema.ts @@ -118,7 +118,6 @@ export const useMemorySchema = () => { label: 'Node', type: FormTypeEnum.nodeSelector, fieldClassName: 'flex justify-between', - inputClassName: 'w-[102px]', default: '', show_on: [ {