diff --git a/web/app/(commonLayout)/plugins/test/tools-picker/page.tsx b/web/app/(commonLayout)/plugins/test/tools-picker/page.tsx index 37c3b3b1cf..0b6242a42e 100644 --- a/web/app/(commonLayout)/plugins/test/tools-picker/page.tsx +++ b/web/app/(commonLayout)/plugins/test/tools-picker/page.tsx @@ -3,11 +3,19 @@ import React from 'react' import ToolPicker from '@/app/components/workflow/block-selector/tool-picker' const ToolsPicker = () => { + const [show, setShow] = React.useState(true) return ( - { }} - /> +
+ Click me
} + isShow={show} + onShowChange={setShow} + disabled={false} + supportAddCustomTool={true} + onSelect={() => { }} + /> + + ) } diff --git a/web/app/components/workflow/block-selector/tool-picker.tsx b/web/app/components/workflow/block-selector/tool-picker.tsx index db59d044d2..ffa6f3233c 100644 --- a/web/app/components/workflow/block-selector/tool-picker.tsx +++ b/web/app/components/workflow/block-selector/tool-picker.tsx @@ -2,6 +2,15 @@ import type { FC } from 'react' import React from 'react' import { useEffect, useState } from 'react' +import { + PortalToFollowElem, + PortalToFollowElemContent, + PortalToFollowElemTrigger, +} from '@/app/components/base/portal-to-follow-elem' +import type { + OffsetOptions, + Placement, +} from '@floating-ui/react' import AllTools from '@/app/components/workflow/block-selector/all-tools' import type { ToolDefaultValue } from './types' import { @@ -12,11 +21,23 @@ import { import type { BlockEnum, ToolWithProvider } from '@/app/components/workflow/types' type Props = { + disabled: boolean + trigger: React.ReactNode + placement?: Placement + offset?: OffsetOptions + isShow: boolean + onShowChange: (isShow: boolean) => void onSelect: (tool: ToolDefaultValue) => void supportAddCustomTool?: boolean } const ToolPicker: FC = ({ + disabled, + trigger, + placement = 'right-start', + offset = 0, + isShow, + onShowChange, onSelect, supportAddCustomTool, }) => { @@ -37,23 +58,44 @@ const ToolPicker: FC = ({ })() }, []) + const handleTriggerClick = () => { + if (disabled) return + onShowChange(true) + } + const handleSelect = (_type: BlockEnum, tool?: ToolDefaultValue) => { onSelect(tool!) } return ( -
- setSearchText(e.target.value)} /> - -
+ + + {trigger} + + + +
+ setSearchText(e.target.value)} /> + +
+
+
) }