import { ButtonLoading } from '@/components/ui/button'; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { IModalProps } from '@/interfaces/common'; import { zodResolver } from '@hookform/resolvers/zod'; import { TFunction } from 'i18next'; import { useForm } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; import { z } from 'zod'; import { FileUploader } from '../file-uploader'; import { RAGFlowFormItem } from '../ragflow-form'; import { Form } from '../ui/form'; import { Switch } from '../ui/switch'; function buildUploadFormSchema(t: TFunction) { const FormSchema = z.object({ parseOnCreation: z.boolean().optional(), fileList: z .array(z.instanceof(File)) .min(1, { message: t('fileManager.pleaseUploadAtLeastOneFile') }), }); return FormSchema; } export type UploadFormSchemaType = z.infer< ReturnType >; const UploadFormId = 'UploadFormId'; type UploadFormProps = { submit: (values?: UploadFormSchemaType) => void; showParseOnCreation?: boolean; }; function UploadForm({ submit, showParseOnCreation }: UploadFormProps) { const { t } = useTranslation(); const FormSchema = buildUploadFormSchema(t); type UploadFormSchemaType = z.infer; const form = useForm({ resolver: zodResolver(FormSchema), defaultValues: { parseOnCreation: false, fileList: [], }, }); return (
{showParseOnCreation && ( {(field) => ( )} )} {(field) => ( )}
); } type FileUploadDialogProps = IModalProps & Pick; export function FileUploadDialog({ hideModal, onOk, loading, showParseOnCreation = false, }: FileUploadDialogProps) { const { t } = useTranslation(); return ( {t('fileManager.uploadFile')} {t('fileManager.local')} {t('fileManager.s3')} {t('common.comingSoon')} {t('common.save')} ); }