| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | 
							- 'use client'
 
- import type { FC } from 'react'
 
- import React, { useCallback } from 'react'
 
- import { useBoolean } from 'ahooks'
 
- import { RiArrowDownSLine } from '@remixicon/react'
 
- import { useTranslation } from 'react-i18next'
 
- import FileIcon from '../document-file-icon'
 
- import DocumentList from './document-list'
 
- import {
 
-   PortalToFollowElem,
 
-   PortalToFollowElemContent,
 
-   PortalToFollowElemTrigger,
 
- } from '@/app/components/base/portal-to-follow-elem'
 
- import cn from '@/utils/classnames'
 
- import Loading from '@/app/components/base/loading'
 
- import type { DocumentItem } from '@/models/datasets'
 
- type Props = {
 
-   className?: string
 
-   value: DocumentItem
 
-   files: DocumentItem[]
 
-   onChange: (value: DocumentItem) => void
 
- }
 
- const PreviewDocumentPicker: FC<Props> = ({
 
-   className,
 
-   value,
 
-   files,
 
-   onChange,
 
- }) => {
 
-   const { t } = useTranslation()
 
-   const { name, extension } = value
 
-   const [open, {
 
-     set: setOpen,
 
-     toggle: togglePopup,
 
-   }] = useBoolean(false)
 
-   const ArrowIcon = RiArrowDownSLine
 
-   const handleChange = useCallback((item: DocumentItem) => {
 
-     onChange(item)
 
-     setOpen(false)
 
-   }, [onChange, setOpen])
 
-   return (
 
-     <PortalToFollowElem
 
-       open={open}
 
-       onOpenChange={setOpen}
 
-       placement='bottom-start'
 
-       offset={4}
 
-     >
 
-       <PortalToFollowElemTrigger onClick={togglePopup}>
 
-         <div className={cn('flex items-center h-6 px-1 rounded-md hover:bg-state-base-hover select-none', open && 'bg-state-base-hover', className)}>
 
-           <FileIcon name={name} extension={extension} size='md' />
 
-           <div className='flex flex-col items-start ml-1'>
 
-             <div className='flex items-center space-x-0.5'>
 
-               <span className={cn('system-md-semibold max-w-[200px] truncate text-text-primary')}> {name || '--'}</span>
 
-               <ArrowIcon className={'h-[18px] w-[18px] text-text-primary'} />
 
-             </div>
 
-           </div>
 
-         </div>
 
-       </PortalToFollowElemTrigger>
 
-       <PortalToFollowElemContent className='z-[11]'>
 
-         <div className='w-[392px] p-1 rounded-xl border-[0.5px] border-components-panel-border bg-components-panel-bg-blur shadow-lg backdrop-blur-[5px]'>
 
-           {files?.length > 1 && <div className='pl-2 flex items-center h-8 system-xs-medium-uppercase text-text-tertiary'>{t('dataset.preprocessDocument', { num: files.length })}</div>}
 
-           {files?.length > 0
 
-             ? (
 
-               <DocumentList
 
-                 list={files}
 
-                 onChange={handleChange}
 
-               />
 
-             )
 
-             : (<div className='mt-2 flex items-center justify-center w-[360px] h-[100px]'>
 
-               <Loading />
 
-             </div>)}
 
-         </div>
 
-       </PortalToFollowElemContent>
 
-     </PortalToFollowElem>
 
-   )
 
- }
 
- export default React.memo(PreviewDocumentPicker)
 
 
  |