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