| 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) | |