Spaces:
Build error
Build error
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 | |