variable-modal-trigger.tsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. 'use client'
  2. import React from 'react'
  3. import { useTranslation } from 'react-i18next'
  4. import { RiAddLine } from '@remixicon/react'
  5. import Button from '@/app/components/base/button'
  6. import VariableModal from '@/app/components/workflow/panel/chat-variable-panel/components/variable-modal'
  7. import {
  8. PortalToFollowElem,
  9. PortalToFollowElemContent,
  10. PortalToFollowElemTrigger,
  11. } from '@/app/components/base/portal-to-follow-elem'
  12. import type { ConversationVariable } from '@/app/components/workflow/types'
  13. type Props = {
  14. open: boolean
  15. setOpen: (value: React.SetStateAction<boolean>) => void
  16. showTip: boolean
  17. chatVar?: ConversationVariable
  18. onClose: () => void
  19. onSave: (env: ConversationVariable) => void
  20. }
  21. const VariableModalTrigger = ({
  22. open,
  23. setOpen,
  24. showTip,
  25. chatVar,
  26. onClose,
  27. onSave,
  28. }: Props) => {
  29. const { t } = useTranslation()
  30. return (
  31. <PortalToFollowElem
  32. open={open}
  33. onOpenChange={() => {
  34. setOpen(v => !v)
  35. open && onClose()
  36. }}
  37. placement='left-start'
  38. offset={{
  39. mainAxis: 8,
  40. alignmentAxis: showTip ? -278 : -48,
  41. }}
  42. >
  43. <PortalToFollowElemTrigger onClick={() => {
  44. setOpen(v => !v)
  45. open && onClose()
  46. }}>
  47. <Button variant='primary'>
  48. <RiAddLine className='mr-1 w-4 h-4' />
  49. <span className='system-sm-medium'>{t('workflow.chatVariable.button')}</span>
  50. </Button>
  51. </PortalToFollowElemTrigger>
  52. <PortalToFollowElemContent className='z-[11]'>
  53. <VariableModal
  54. chatVar={chatVar}
  55. onSave={onSave}
  56. onClose={() => {
  57. onClose()
  58. setOpen(false)
  59. }}
  60. />
  61. </PortalToFollowElemContent>
  62. </PortalToFollowElem>
  63. )
  64. }
  65. export default VariableModalTrigger