|
'use client' |
|
import React from 'react' |
|
import { useTranslation } from 'react-i18next' |
|
import { RiAddLine } from '@remixicon/react' |
|
import Button from '@/app/components/base/button' |
|
import VariableModal from '@/app/components/workflow/panel/env-panel/variable-modal' |
|
import { |
|
PortalToFollowElem, |
|
PortalToFollowElemContent, |
|
PortalToFollowElemTrigger, |
|
} from '@/app/components/base/portal-to-follow-elem' |
|
import type { EnvironmentVariable } from '@/app/components/workflow/types' |
|
|
|
type Props = { |
|
open: boolean |
|
setOpen: (value: React.SetStateAction<boolean>) => void |
|
env?: EnvironmentVariable |
|
onClose: () => void |
|
onSave: (env: EnvironmentVariable) => void |
|
} |
|
|
|
const VariableTrigger = ({ |
|
open, |
|
setOpen, |
|
env, |
|
onClose, |
|
onSave, |
|
}: Props) => { |
|
const { t } = useTranslation() |
|
|
|
return ( |
|
<PortalToFollowElem |
|
open={open} |
|
onOpenChange={() => { |
|
setOpen(v => !v) |
|
open && onClose() |
|
}} |
|
placement='left-start' |
|
offset={{ |
|
mainAxis: 8, |
|
alignmentAxis: -104, |
|
}} |
|
> |
|
<PortalToFollowElemTrigger onClick={() => { |
|
setOpen(v => !v) |
|
open && onClose() |
|
}}> |
|
<Button variant='primary'> |
|
<RiAddLine className='mr-1 w-4 h-4' /> |
|
<span className='system-sm-medium'>{t('workflow.env.envPanelButton')}</span> |
|
</Button> |
|
</PortalToFollowElemTrigger> |
|
<PortalToFollowElemContent className='z-[11]'> |
|
<VariableModal |
|
env={env} |
|
onSave={onSave} |
|
onClose={() => { |
|
onClose() |
|
setOpen(false) |
|
}} |
|
/> |
|
</PortalToFollowElemContent> |
|
</PortalToFollowElem> |
|
) |
|
} |
|
|
|
export default VariableTrigger |
|
|