12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import {
- useCallback,
- useState,
- } from 'react'
- import { useTranslation } from 'react-i18next'
- import { RiAddLine } from '@remixicon/react'
- import type { HandleAddCondition } from '../types'
- import Button from '@/app/components/base/button'
- import {
- PortalToFollowElem,
- PortalToFollowElemContent,
- PortalToFollowElemTrigger,
- } from '@/app/components/base/portal-to-follow-elem'
- import VarReferenceVars from '@/app/components/workflow/nodes/_base/components/variable/var-reference-vars'
- import type {
- NodeOutPutVar,
- ValueSelector,
- Var,
- } from '@/app/components/workflow/types'
- type ConditionAddProps = {
- className?: string
- caseId: string
- variables: NodeOutPutVar[]
- onSelectVariable: HandleAddCondition
- disabled?: boolean
- }
- const ConditionAdd = ({
- className,
- caseId,
- variables,
- onSelectVariable,
- disabled,
- }: ConditionAddProps) => {
- const { t } = useTranslation()
- const [open, setOpen] = useState(false)
- const handleSelectVariable = useCallback((valueSelector: ValueSelector, varItem: Var) => {
- onSelectVariable(caseId, valueSelector, varItem)
- setOpen(false)
- }, [caseId, onSelectVariable, setOpen])
- return (
- <PortalToFollowElem
- open={open}
- onOpenChange={setOpen}
- placement='bottom-start'
- offset={{
- mainAxis: 4,
- crossAxis: 0,
- }}
- >
- <PortalToFollowElemTrigger onClick={() => setOpen(!open)}>
- <Button
- size='small'
- className={className}
- disabled={disabled}
- >
- <RiAddLine className='mr-1 w-3.5 h-3.5' />
- {t('workflow.nodes.ifElse.addCondition')}
- </Button>
- </PortalToFollowElemTrigger>
- <PortalToFollowElemContent className='z-[1000]'>
- <div className='w-[296px] bg-components-panel-bg-blur rounded-lg border-[0.5px] border-components-panel-border shadow-lg'>
- <VarReferenceVars
- vars={variables}
- isSupportFileVar
- onChange={handleSelectVariable}
- />
- </div>
- </PortalToFollowElemContent>
- </PortalToFollowElem>
- )
- }
- export default ConditionAdd
|