diff --git a/web/app/components/base/select/index.tsx b/web/app/components/base/select/index.tsx index fb5c2a4bcf..53af9c45ff 100644 --- a/web/app/components/base/select/index.tsx +++ b/web/app/components/base/select/index.tsx @@ -96,7 +96,7 @@ const Select: FC = ({
{allowSearch ? { if (!disabled) setQuery(event.target.value) @@ -200,7 +200,7 @@ const SimpleSelect: FC = ({ }} >
- + {selectedItem?.name ?? localPlaceholder} {selectedItem diff --git a/web/app/components/workflow/nodes/if-else/components/condition-list/condition-item.tsx b/web/app/components/workflow/nodes/if-else/components/condition-list/condition-item.tsx index bcbaf2be69..df19f77e97 100644 --- a/web/app/components/workflow/nodes/if-else/components/condition-list/condition-item.tsx +++ b/web/app/components/workflow/nodes/if-else/components/condition-list/condition-item.tsx @@ -1,17 +1,22 @@ import { useCallback, + useMemo, useState, } from 'react' +import { useTranslation } from 'react-i18next' import { RiDeleteBinLine } from '@remixicon/react' import type { VarType as NumberVarType } from '../../../tool/types' import type { - ComparisonOperator, Condition, HandleRemoveCondition, HandleUpdateCondition, } from '../../types' +import { + ComparisonOperator, +} from '../../types' import { comparisonOperatorNotRequireValue } from '../../utils' import ConditionNumberInput from '../condition-number-input' +import { FILE_TYPE_OPTIONS, TRANSFER_METHOD } from '../../default' import ConditionOperator from './condition-operator' import ConditionInput from './condition-input' import VariableTag from '@/app/components/workflow/nodes/_base/components/variable-tag' @@ -21,6 +26,9 @@ import type { } from '@/app/components/workflow/types' import { VarType } from '@/app/components/workflow/types' import cn from '@/utils/classnames' +import { SimpleSelect as Select } from '@/app/components/base/select' + +const optionNameI18NPrefix = 'workflow.nodes.ifElse.optionName' type ConditionItemProps = { disabled?: boolean @@ -44,6 +52,8 @@ const ConditionItem = ({ availableNodes, numberVariables, }: ConditionItemProps) => { + const { t } = useTranslation() + const [isHovered, setIsHovered] = useState(false) const handleUpdateConditionOperator = useCallback((value: ComparisonOperator) => { @@ -71,6 +81,26 @@ const ConditionItem = ({ onUpdateCondition(caseId, condition.id, newCondition) }, [caseId, condition, onUpdateCondition]) + const isSelect = condition.comparison_operator && [ComparisonOperator.in, ComparisonOperator.notIn].includes(condition.comparison_operator) + const selectOptions = useMemo(() => { + if (isSelect) { + if (file?.key === 'type') { + return FILE_TYPE_OPTIONS.map(item => ({ + name: t(`${optionNameI18NPrefix}.${item.i18nKey}`), + value: item.value, + })) + } + if (file?.key === 'transfer_method') { + return TRANSFER_METHOD.map(item => ({ + name: t(`${optionNameI18NPrefix}.${item.i18nKey}`), + value: item.value, + })) + } + return [] + } + return [] + }, [file?.key, isSelect, t]) + return (
{ - !comparisonOperatorNotRequireValue(condition.comparison_operator) && condition.varType !== VarType.number && ( + !comparisonOperatorNotRequireValue(condition.comparison_operator) && !isSelect && condition.varType !== VarType.number && (
) } + { + !comparisonOperatorNotRequireValue(condition.comparison_operator) && isSelect && ( +
+