import { z } from 'zod'; import { FileUpload, FileUploadDropzone, FileUploadItem, FileUploadItemDelete, FileUploadItemMetadata, FileUploadItemPreview, FileUploadList, FileUploadTrigger, } from '@/components/file-upload'; import { RAGFlowFormItem } from '@/components/ragflow-form'; import { Button } from '@/components/ui/button'; import { Form, FormControl, FormItem, FormLabel } from '@/components/ui/form'; import { Input } from '@/components/ui/input'; import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group'; import { Textarea } from '@/components/ui/textarea'; import { useTranslate } from '@/hooks/common-hooks'; import { useFetchAgent } from '@/hooks/use-agent-request'; import { transformBase64ToFile } from '@/utils/file-util'; import { zodResolver } from '@hookform/resolvers/zod'; import { CloudUpload, X } from 'lucide-react'; import { useEffect } from 'react'; import { useForm } from 'react-hook-form'; const formSchema = z.object({ title: z.string().min(1, {}), avatar: z.array(z.custom()), description: z.string(), permission: z.string(), }); export type SettingFormSchemaType = z.infer; export const AgentSettingId = 'agentSettingId'; type SettingFormProps = { submit: (values: SettingFormSchemaType) => void; }; export function SettingForm({ submit }: SettingFormProps) { const { t } = useTranslate('flow.settings'); const { data } = useFetchAgent(); const form = useForm({ resolver: zodResolver(formSchema), defaultValues: { title: '', permission: 'me', }, }); useEffect(() => { form.reset({ title: data?.title, description: data?.description, avatar: data.avatar ? [transformBase64ToFile(data.avatar)] : [], permission: data?.permission, }); }, [data, form]); return (
{(field) => ( { form.setError('avatar', { message, }); }} multiple > Drag and drop or to upload {field.value?.map((file: File, index: number) => ( ))} )}