123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- import React, { useState } from 'react'
- import { RiArrowRightSLine } from '@remixicon/react'
- import FileImageRender from './file-image-render'
- import FileTypeIcon from './file-type-icon'
- import FileItem from './file-uploader-in-attachment/file-item'
- import type { FileEntity } from './types'
- import {
- getFileAppearanceType,
- } from './utils'
- import Tooltip from '@/app/components/base/tooltip'
- import { SupportUploadFileTypes } from '@/app/components/workflow/types'
- import cn from '@/utils/classnames'
- type Props = {
- fileList: FileEntity[]
- }
- const FileListInLog = ({ fileList }: Props) => {
- const [expanded, setExpanded] = useState(false)
- if (!fileList.length)
- return null
- return (
- <div className={cn('border-t border-divider-subtle px-3 py-2', expanded && 'py-3')}>
- <div className='flex justify-between gap-1'>
- {expanded && (
- <div></div>
- )}
- {!expanded && (
- <div className='flex'>
- {fileList.map((file) => {
- const { id, name, type, supportFileType, base64Url, url } = file
- const isImageFile = supportFileType === SupportUploadFileTypes.image
- return (
- <>
- {isImageFile && (
- <Tooltip
- popupContent={name}
- >
- <div key={id}>
- <FileImageRender
- className='w-8 h-8'
- imageUrl={base64Url || url || ''}
- />
- </div>
- </Tooltip>
- )}
- {!isImageFile && (
- <Tooltip
- popupContent={name}
- >
- <div key={id} className='p-1.5 rounded-md bg-components-panel-on-panel-item-bg border-[0.5px] border-components-panel-border shadow-xs'>
- <FileTypeIcon
- type={getFileAppearanceType(name, type)}
- size='md'
- />
- </div>
- </Tooltip>
- )}
- </>
- )
- })}
- </div>
- )}
- <div className='flex items-center gap-1 cursor-pointer' onClick={() => setExpanded(!expanded)}>
- {!expanded && <div className='text-text-tertiary system-xs-medium-uppercase'>DETAIL</div>}
- <RiArrowRightSLine className={cn('w-4 h-4 text-text-tertiary', expanded && 'rotate-90')} />
- </div>
- </div>
- {expanded && (
- <div className='flex flex-col gap-1'>
- {fileList.map(file => (
- <FileItem
- key={file.id}
- file={file}
- showDeleteAction={false}
- showDownloadAction
- />
- ))}
- </div>
- )}
- </div>
- )
- }
- export default FileListInLog
|