123456789101112131415161718192021222324252627282930313233343536373839404142 |
- 'use client'
- import type { FC } from 'react'
- import React, { useCallback } from 'react'
- import FileIcon from '../document-file-icon'
- import cn from '@/utils/classnames'
- import type { DocumentItem } from '@/models/datasets'
- type Props = {
- className?: string
- list: DocumentItem[]
- onChange: (value: DocumentItem) => void
- }
- const DocumentList: FC<Props> = ({
- className,
- list,
- onChange,
- }) => {
- const handleChange = useCallback((item: DocumentItem) => {
- return () => onChange(item)
- }, [onChange])
- return (
- <div className={cn(className)}>
- {list.map((item) => {
- const { id, name, extension } = item
- return (
- <div
- key={id}
- className='flex items-center h-8 px-2 hover:bg-state-base-hover rounded-lg space-x-2 cursor-pointer'
- onClick={handleChange(item)}
- >
- <FileIcon name={item.name} extension={extension} size='md' />
- <div className='truncate text-text-secondary text-sm'>{name}</div>
- </div>
- )
- })}
- </div>
- )
- }
- export default React.memo(DocumentList)
|