| import type { FC } from 'react' |
| import { |
| memo, |
| } from 'react' |
| import { useTranslation } from 'react-i18next' |
| import { |
| RiAddLine, |
| } from '@remixicon/react' |
| import useConfig from './use-config' |
| import type { IfElseNodeType } from './types' |
| import ConditionWrap from './components/condition-wrap' |
| import Button from '@/app/components/base/button' |
| import type { NodePanelProps } from '@/app/components/workflow/types' |
| import Field from '@/app/components/workflow/nodes/_base/components/field' |
|
|
| const i18nPrefix = 'workflow.nodes.ifElse' |
|
|
| const Panel: FC<NodePanelProps<IfElseNodeType>> = ({ |
| id, |
| data, |
| }) => { |
| const { t } = useTranslation() |
| const { |
| readOnly, |
| inputs, |
| filterVar, |
| handleAddCase, |
| handleRemoveCase, |
| handleSortCase, |
| handleAddCondition, |
| handleUpdateCondition, |
| handleRemoveCondition, |
| handleToggleConditionLogicalOperator, |
| handleAddSubVariableCondition, |
| handleRemoveSubVariableCondition, |
| handleUpdateSubVariableCondition, |
| handleToggleSubVariableConditionLogicalOperator, |
| nodesOutputVars, |
| availableNodes, |
| varsIsVarFileAttribute, |
| } = useConfig(id, data) |
| const cases = inputs.cases || [] |
|
|
| return ( |
| <div className='p-1'> |
| <ConditionWrap |
| nodeId={id} |
| cases={cases} |
| readOnly={readOnly} |
| handleSortCase={handleSortCase} |
| handleRemoveCase={handleRemoveCase} |
| handleAddCondition={handleAddCondition} |
| handleRemoveCondition={handleRemoveCondition} |
| handleUpdateCondition={handleUpdateCondition} |
| handleToggleConditionLogicalOperator={handleToggleConditionLogicalOperator} |
| handleAddSubVariableCondition={handleAddSubVariableCondition} |
| handleRemoveSubVariableCondition={handleRemoveSubVariableCondition} |
| handleUpdateSubVariableCondition={handleUpdateSubVariableCondition} |
| handleToggleSubVariableConditionLogicalOperator={handleToggleSubVariableConditionLogicalOperator} |
| nodesOutputVars={nodesOutputVars} |
| availableNodes={availableNodes} |
| varsIsVarFileAttribute={varsIsVarFileAttribute} |
| filterVar={filterVar} |
| /> |
| <div className='px-4 py-2'> |
| <Button |
| className='w-full' |
| variant='tertiary' |
| onClick={() => handleAddCase()} |
| disabled={readOnly} |
| > |
| <RiAddLine className='mr-1 w-4 h-4' /> |
| ELIF |
| </Button> |
| </div> |
| <div className='my-2 mx-3 h-[1px] bg-divider-subtle'></div> |
| <Field |
| title={t(`${i18nPrefix}.else`)} |
| className='px-4 py-2' |
| > |
| <div className='leading-[18px] text-xs font-normal text-text-tertiary'>{t(`${i18nPrefix}.elseDescription`)}</div> |
| </Field> |
| </div> |
| ) |
| } |
|
|
| export default memo(Panel) |
|
|