1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- import type { FC } from 'react'
- import { useTranslation } from 'react-i18next'
- import { useEffect, useRef, useState } from 'react'
- import { useClickAway } from 'ahooks'
- import { RiCloseLine } from '@remixicon/react'
- import cn from '@/utils/classnames'
- import type { IChatItem } from '@/app/components/base/chat/chat/type'
- import Run from '@/app/components/workflow/run'
- type MessageLogModalProps = {
- currentLogItem?: IChatItem
- defaultTab?: string
- width: number
- fixedWidth?: boolean
- onCancel: () => void
- }
- const MessageLogModal: FC<MessageLogModalProps> = ({
- currentLogItem,
- defaultTab = 'DETAIL',
- width,
- fixedWidth,
- onCancel,
- }) => {
- const { t } = useTranslation()
- const ref = useRef(null)
- const [mounted, setMounted] = useState(false)
- useClickAway(() => {
- if (mounted)
- onCancel()
- }, ref)
- useEffect(() => {
- setMounted(true)
- }, [])
- if (!currentLogItem || !currentLogItem.workflow_run_id)
- return null
- return (
- <div
- className={cn('relative flex flex-col pt-3 bg-components-panel-bg border-[0.5px] border-components-panel-border rounded-xl shadow-xl z-10')}
- style={{
- width: fixedWidth ? width : 480,
- ...(!fixedWidth
- ? {
- position: 'fixed',
- top: 56 + 8,
- left: 8 + (width - 480),
- bottom: 16,
- }
- : {
- marginRight: 8,
- }),
- }}
- ref={ref}
- >
- <h1 className='shrink-0 px-4 py-1 text-text-primary system-xl-semibold'>{t('appLog.runDetail.title')}</h1>
- <span className='absolute right-3 top-4 p-1 cursor-pointer z-20' onClick={onCancel}>
- <RiCloseLine className='w-4 h-4 text-text-tertiary' />
- </span>
- <Run
- hideResult
- activeTab={defaultTab as any}
- runID={currentLogItem.workflow_run_id}
- />
- </div>
- )
- }
- export default MessageLogModal
|