選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

file-list.tsx 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { useFile } from '../hooks'
  2. import { useStore } from '../store'
  3. import type { FileEntity } from '../types'
  4. import FileImageItem from './file-image-item'
  5. import FileItem from './file-item'
  6. import type { FileUpload } from '@/app/components/base/features/types'
  7. import { SupportUploadFileTypes } from '@/app/components/workflow/types'
  8. type FileListProps = {
  9. files: FileEntity[]
  10. onRemove?: (fileId: string) => void
  11. onReUpload?: (fileId: string) => void
  12. showDeleteAction?: boolean
  13. showDownloadAction?: boolean
  14. }
  15. export const FileList = ({
  16. files,
  17. onReUpload,
  18. onRemove,
  19. showDeleteAction = true,
  20. showDownloadAction = false,
  21. }: FileListProps) => {
  22. return (
  23. <div className='flex flex-wrap gap-2'>
  24. {
  25. files.map((file) => {
  26. if (file.supportFileType === SupportUploadFileTypes.image) {
  27. return (
  28. <FileImageItem
  29. key={file.id}
  30. file={file}
  31. showDeleteAction={showDeleteAction}
  32. onRemove={onRemove}
  33. onReUpload={onReUpload}
  34. />
  35. )
  36. }
  37. return (
  38. <FileItem
  39. key={file.id}
  40. file={file}
  41. showDeleteAction={showDeleteAction}
  42. showDownloadAction={showDownloadAction}
  43. onRemove={onRemove}
  44. onReUpload={onReUpload}
  45. />
  46. )
  47. })
  48. }
  49. </div>
  50. )
  51. }
  52. type FileListInChatInputProps = {
  53. fileConfig: FileUpload
  54. }
  55. export const FileListInChatInput = ({
  56. fileConfig,
  57. }: FileListInChatInputProps) => {
  58. const files = useStore(s => s.files)
  59. const {
  60. handleRemoveFile,
  61. handleReUploadFile,
  62. } = useFile(fileConfig)
  63. return (
  64. <FileList
  65. files={files}
  66. onReUpload={handleReUploadFile}
  67. onRemove={handleRemoveFile}
  68. />
  69. )
  70. }