| 'use client'; | |
| import { zodResolver } from '@hookform/resolvers/zod'; | |
| import { useForm } from 'react-hook-form'; | |
| import { z } from 'zod'; | |
| import { | |
| Form, | |
| FormControl, | |
| FormField, | |
| FormItem, | |
| FormLabel, | |
| FormMessage, | |
| } from '@/components/ui/form'; | |
| import { Input } from '@/components/ui/input'; | |
| import { IModalProps } from '@/interfaces/common'; | |
| import { TagRenameId } from '@/pages/add-knowledge/constant'; | |
| import { useEffect } from 'react'; | |
| import { useTranslation } from 'react-i18next'; | |
| export function RenameForm({ | |
| initialName, | |
| hideModal, | |
| onOk, | |
| }: IModalProps<any> & { initialName: string }) { | |
| const { t } = useTranslation(); | |
| const FormSchema = z.object({ | |
| name: z | |
| .string() | |
| .min(1, { | |
| message: t('common.namePlaceholder'), | |
| }) | |
| .trim(), | |
| }); | |
| const form = useForm<z.infer<typeof FormSchema>>({ | |
| resolver: zodResolver(FormSchema), | |
| defaultValues: { name: '' }, | |
| }); | |
| async function onSubmit(data: z.infer<typeof FormSchema>) { | |
| const ret = await onOk?.(data.name); | |
| if (ret) { | |
| hideModal?.(); | |
| } | |
| } | |
| useEffect(() => { | |
| form.setValue('name', initialName); | |
| }, [form, initialName]); | |
| return ( | |
| <Form {...form}> | |
| <form | |
| onSubmit={form.handleSubmit(onSubmit)} | |
| className="space-y-6" | |
| id={TagRenameId} | |
| > | |
| <FormField | |
| control={form.control} | |
| name="name" | |
| render={({ field }) => ( | |
| <FormItem> | |
| <FormLabel>{t('common.name')}</FormLabel> | |
| <FormControl> | |
| <Input | |
| placeholder={t('common.namePlaceholder')} | |
| {...field} | |
| autoComplete="off" | |
| /> | |
| </FormControl> | |
| <FormMessage /> | |
| </FormItem> | |
| )} | |
| /> | |
| </form> | |
| </Form> | |
| ); | |
| } | |