diff --git a/web/app/(commonLayout)/plugins/test/tools-picker/page.tsx b/web/app/(commonLayout)/plugins/test/tools-picker/page.tsx new file mode 100644 index 0000000000..e2b9bd9dc8 --- /dev/null +++ b/web/app/(commonLayout)/plugins/test/tools-picker/page.tsx @@ -0,0 +1,39 @@ +'use client' +import { useEffect, useState } from 'react' +import AllTools from '@/app/components/workflow/block-selector/all-tools' +import { + fetchAllBuiltInTools, + fetchAllCustomTools, + fetchAllWorkflowTools, +} from '@/service/tools' +import type { ToolWithProvider } from '@/app/components/workflow/types' + +const ToolsPicker = () => { + const [buildInTools, setBuildInTools] = useState([]) + const [customTools, setCustomTools] = useState([]) + const [workflowTools, setWorkflowTools] = useState([]) + + useEffect(() => { + (async () => { + const buildInTools = await fetchAllBuiltInTools() + const customTools = await fetchAllCustomTools() + const workflowTools = await fetchAllWorkflowTools() + setBuildInTools(buildInTools) + setCustomTools(customTools) + setWorkflowTools(workflowTools) + })() + }) + return ( +
+ { }} + buildInTools={buildInTools} + customTools={customTools} + workflowTools={workflowTools} + /> +
+ ) +} + +export default ToolsPicker diff --git a/web/app/components/workflow/block-selector/all-tools.tsx b/web/app/components/workflow/block-selector/all-tools.tsx index 8925649226..9ef239ce18 100644 --- a/web/app/components/workflow/block-selector/all-tools.tsx +++ b/web/app/components/workflow/block-selector/all-tools.tsx @@ -6,7 +6,6 @@ import type { OnSelectBlock, ToolWithProvider, } from '../types' -import { useStore } from '../store' import { ToolTypeEnum } from './types' import Tools from './tools' import { useToolTabs } from './hooks' @@ -15,18 +14,21 @@ import { useGetLanguage } from '@/context/i18n' type AllToolsProps = { searchText: string + buildInTools: ToolWithProvider[] + customTools: ToolWithProvider[] + workflowTools: ToolWithProvider[] onSelect: OnSelectBlock } const AllTools = ({ searchText, onSelect, + buildInTools, + workflowTools, + customTools, }: AllToolsProps) => { const language = useGetLanguage() const tabs = useToolTabs() const [activeTab, setActiveTab] = useState(ToolTypeEnum.All) - const buildInTools = useStore(s => s.buildInTools) - const customTools = useStore(s => s.customTools) - const workflowTools = useStore(s => s.workflowTools) const tools = useMemo(() => { let mergedTools: ToolWithProvider[] = [] diff --git a/web/app/components/workflow/block-selector/index-bar.tsx b/web/app/components/workflow/block-selector/index-bar.tsx index 6eab51246d..7432358c9c 100644 --- a/web/app/components/workflow/block-selector/index-bar.tsx +++ b/web/app/components/workflow/block-selector/index-bar.tsx @@ -47,7 +47,7 @@ const IndexBar: FC = ({ letters, itemRefs }) => { element.scrollIntoView({ behavior: 'smooth' }) } return ( -
+
{letters.map(letter => (
handleIndexClick(letter)}> {letter} diff --git a/web/app/components/workflow/block-selector/tabs.tsx b/web/app/components/workflow/block-selector/tabs.tsx index 8c410b5641..5d44011465 100644 --- a/web/app/components/workflow/block-selector/tabs.tsx +++ b/web/app/components/workflow/block-selector/tabs.tsx @@ -1,5 +1,6 @@ import type { FC } from 'react' import { memo } from 'react' +import { useStore } from '../store' import type { BlockEnum } from '../types' import { useTabs } from './hooks' import type { ToolDefaultValue } from './types' @@ -25,6 +26,9 @@ const Tabs: FC = ({ noBlocks, }) => { const tabs = useTabs() + const buildInTools = useStore(s => s.buildInTools) + const customTools = useStore(s => s.customTools) + const workflowTools = useStore(s => s.workflowTools) return (
e.stopPropagation()}> @@ -64,6 +68,9 @@ const Tabs: FC = ({ ) }