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