fix: select tool can select all

This commit is contained in:
Joel 2025-05-12 13:37:40 +08:00
parent 274d5c02f6
commit 626f2524e2
7 changed files with 27 additions and 8 deletions

View File

@ -32,7 +32,8 @@ type AllToolsProps = {
workflowTools: ToolWithProvider[] workflowTools: ToolWithProvider[]
mcpTools: ToolWithProvider[] mcpTools: ToolWithProvider[]
onSelect: OnSelectBlock onSelect: OnSelectBlock
onSelectMultiple: (type: BlockEnum, tools: ToolDefaultValue[]) => void canNotSelectMultiple?: boolean
onSelectMultiple?: (type: BlockEnum, tools: ToolDefaultValue[]) => void
selectedTools?: ToolValue[] selectedTools?: ToolValue[]
} }
@ -44,6 +45,7 @@ const AllTools = ({
searchText, searchText,
tags = DEFAULT_TAGS, tags = DEFAULT_TAGS,
onSelect, onSelect,
canNotSelectMultiple,
onSelectMultiple, onSelectMultiple,
buildInTools, buildInTools,
workflowTools, workflowTools,
@ -139,6 +141,7 @@ const AllTools = ({
showWorkflowEmpty={activeTab === ToolTypeEnum.Workflow} showWorkflowEmpty={activeTab === ToolTypeEnum.Workflow}
tools={tools} tools={tools}
onSelect={onSelect} onSelect={onSelect}
canNotSelectMultiple={canNotSelectMultiple}
onSelectMultiple={onSelectMultiple} onSelectMultiple={onSelectMultiple}
viewType={isSupportGroupView ? activeView : ViewType.flat} viewType={isSupportGroupView ? activeView : ViewType.flat}
hasSearchText={!!searchText} hasSearchText={!!searchText}

View File

@ -73,6 +73,7 @@ const Tabs: FC<TabsProps> = ({
searchText={searchText} searchText={searchText}
onSelect={onSelect} onSelect={onSelect}
tags={tags} tags={tags}
canNotSelectMultiple
buildInTools={buildInTools || []} buildInTools={buildInTools || []}
customTools={customTools || []} customTools={customTools || []}
workflowTools={workflowTools || []} workflowTools={workflowTools || []}

View File

@ -13,7 +13,8 @@ type Props = {
isShowLetterIndex: boolean isShowLetterIndex: boolean
hasSearchText: boolean hasSearchText: boolean
onSelect: (type: BlockEnum, tool?: ToolDefaultValue) => void onSelect: (type: BlockEnum, tool?: ToolDefaultValue) => void
onSelectMultiple: (type: BlockEnum, tools: ToolDefaultValue[]) => void canNotSelectMultiple?: boolean
onSelectMultiple?: (type: BlockEnum, tools: ToolDefaultValue[]) => void
letters: string[] letters: string[]
toolRefs: any toolRefs: any
selectedTools?: ToolValue[] selectedTools?: ToolValue[]
@ -25,6 +26,7 @@ const ToolViewFlatView: FC<Props> = ({
isShowLetterIndex, isShowLetterIndex,
hasSearchText, hasSearchText,
onSelect, onSelect,
canNotSelectMultiple,
onSelectMultiple, onSelectMultiple,
toolRefs, toolRefs,
selectedTools, selectedTools,
@ -55,6 +57,7 @@ const ToolViewFlatView: FC<Props> = ({
isShowLetterIndex={isShowLetterIndex} isShowLetterIndex={isShowLetterIndex}
hasSearchText={hasSearchText} hasSearchText={hasSearchText}
onSelect={onSelect} onSelect={onSelect}
canNotSelectMultiple={canNotSelectMultiple}
onSelectMultiple={onSelectMultiple} onSelectMultiple={onSelectMultiple}
selectedTools={selectedTools} selectedTools={selectedTools}
/> />

View File

@ -12,7 +12,8 @@ type Props = {
toolList: ToolWithProvider[] toolList: ToolWithProvider[]
hasSearchText: boolean hasSearchText: boolean
onSelect: (type: BlockEnum, tool?: ToolDefaultValue) => void onSelect: (type: BlockEnum, tool?: ToolDefaultValue) => void
onSelectMultiple: (type: BlockEnum, tools: ToolValue[]) => void canNotSelectMultiple?: boolean
onSelectMultiple?: (type: BlockEnum, tools: ToolDefaultValue[]) => void
selectedTools?: ToolValue[] selectedTools?: ToolValue[]
} }
@ -21,6 +22,7 @@ const Item: FC<Props> = ({
toolList, toolList,
hasSearchText, hasSearchText,
onSelect, onSelect,
canNotSelectMultiple,
onSelectMultiple, onSelectMultiple,
selectedTools, selectedTools,
}) => { }) => {
@ -38,6 +40,7 @@ const Item: FC<Props> = ({
isShowLetterIndex={false} isShowLetterIndex={false}
hasSearchText={hasSearchText} hasSearchText={hasSearchText}
onSelect={onSelect} onSelect={onSelect}
canNotSelectMultiple={canNotSelectMultiple}
onSelectMultiple={onSelectMultiple} onSelectMultiple={onSelectMultiple}
selectedTools={selectedTools} selectedTools={selectedTools}
/> />

View File

@ -12,7 +12,8 @@ type Props = {
payload: Record<string, ToolWithProvider[]> payload: Record<string, ToolWithProvider[]>
hasSearchText: boolean hasSearchText: boolean
onSelect: (type: BlockEnum, tool?: ToolDefaultValue) => void onSelect: (type: BlockEnum, tool?: ToolDefaultValue) => void
onSelectMultiple: (type: BlockEnum, tools: ToolValue[]) => void canNotSelectMultiple?: boolean
onSelectMultiple?: (type: BlockEnum, tools: ToolDefaultValue[]) => void
selectedTools?: ToolValue[] selectedTools?: ToolValue[]
} }
@ -20,6 +21,7 @@ const ToolListTreeView: FC<Props> = ({
payload, payload,
hasSearchText, hasSearchText,
onSelect, onSelect,
canNotSelectMultiple,
onSelectMultiple, onSelectMultiple,
selectedTools, selectedTools,
}) => { }) => {
@ -48,6 +50,7 @@ const ToolListTreeView: FC<Props> = ({
toolList={payload[groupName]} toolList={payload[groupName]}
hasSearchText={hasSearchText} hasSearchText={hasSearchText}
onSelect={onSelect} onSelect={onSelect}
canNotSelectMultiple={canNotSelectMultiple}
onSelectMultiple={onSelectMultiple} onSelectMultiple={onSelectMultiple}
selectedTools={selectedTools} selectedTools={selectedTools}
/> />

View File

@ -22,7 +22,8 @@ type Props = {
isShowLetterIndex: boolean isShowLetterIndex: boolean
hasSearchText: boolean hasSearchText: boolean
onSelect: (type: BlockEnum, tool?: ToolDefaultValue) => void onSelect: (type: BlockEnum, tool?: ToolDefaultValue) => void
onSelectMultiple: (type: BlockEnum, tools: ToolDefaultValue[]) => void canNotSelectMultiple?: boolean
onSelectMultiple?: (type: BlockEnum, tools: ToolDefaultValue[]) => void
selectedTools?: ToolValue[] selectedTools?: ToolValue[]
} }
@ -33,6 +34,7 @@ const Tool: FC<Props> = ({
isShowLetterIndex, isShowLetterIndex,
hasSearchText, hasSearchText,
onSelect, onSelect,
canNotSelectMultiple,
onSelectMultiple, onSelectMultiple,
selectedTools, selectedTools,
}) => { }) => {
@ -68,7 +70,7 @@ const Tool: FC<Props> = ({
return ( return (
<span className='system-xs-regular text-components-button-secondary-accent-text' <span className='system-xs-regular text-components-button-secondary-accent-text'
onClick={(e) => { onClick={(e) => {
onSelectMultiple(BlockEnum.Tool, actions.filter(action => !getIsDisabled(action)).map((tool) => { onSelectMultiple?.(BlockEnum.Tool, actions.filter(action => !getIsDisabled(action)).map((tool) => {
const params: Record<string, string> = {} const params: Record<string, string> = {}
if (tool.parameters) { if (tool.parameters) {
tool.parameters.forEach((item) => { tool.parameters.forEach((item) => {
@ -186,7 +188,7 @@ const Tool: FC<Props> = ({
</div> </div>
<div className='ml-2 flex items-center'> <div className='ml-2 flex items-center'>
{notShowProvider ? notShowProviderSelectInfo : selectedInfo} {!canNotSelectMultiple && (notShowProvider ? notShowProviderSelectInfo : selectedInfo)}
{hasAction && ( {hasAction && (
<FoldIcon className={cn('h-4 w-4 shrink-0 text-text-quaternary', isFold && 'text-text-tertiary')} /> <FoldIcon className={cn('h-4 w-4 shrink-0 text-text-quaternary', isFold && 'text-text-tertiary')} />
)} )}

View File

@ -17,7 +17,8 @@ import classNames from '@/utils/classnames'
type ToolsProps = { type ToolsProps = {
showWorkflowEmpty: boolean showWorkflowEmpty: boolean
onSelect: (type: BlockEnum, tool?: ToolDefaultValue) => void onSelect: (type: BlockEnum, tool?: ToolDefaultValue) => void
onSelectMultiple: (type: BlockEnum, tools: ToolDefaultValue[]) => void canNotSelectMultiple?: boolean
onSelectMultiple?: (type: BlockEnum, tools: ToolDefaultValue[]) => void
tools: ToolWithProvider[] tools: ToolWithProvider[]
viewType: ViewType viewType: ViewType
hasSearchText: boolean hasSearchText: boolean
@ -28,6 +29,7 @@ type ToolsProps = {
const Blocks = ({ const Blocks = ({
showWorkflowEmpty, showWorkflowEmpty,
onSelect, onSelect,
canNotSelectMultiple,
onSelectMultiple, onSelectMultiple,
tools, tools,
viewType, viewType,
@ -109,6 +111,7 @@ const Blocks = ({
isShowLetterIndex={isShowLetterIndex} isShowLetterIndex={isShowLetterIndex}
hasSearchText={hasSearchText} hasSearchText={hasSearchText}
onSelect={onSelect} onSelect={onSelect}
canNotSelectMultiple={canNotSelectMultiple}
onSelectMultiple={onSelectMultiple} onSelectMultiple={onSelectMultiple}
selectedTools={selectedTools} selectedTools={selectedTools}
/> />
@ -117,6 +120,7 @@ const Blocks = ({
payload={treeViewToolsData} payload={treeViewToolsData}
hasSearchText={hasSearchText} hasSearchText={hasSearchText}
onSelect={onSelect} onSelect={onSelect}
canNotSelectMultiple={canNotSelectMultiple}
onSelectMultiple={onSelectMultiple} onSelectMultiple={onSelectMultiple}
selectedTools={selectedTools} selectedTools={selectedTools}
/> />