import { useEffect } from 'react'; import { zodResolver } from '@hookform/resolvers/zod'; import { Trans, msg } from '@lingui/macro'; import { useLingui } from '@lingui/react'; import { useForm } from 'react-hook-form'; import { z } from 'zod'; import { Button } from './button'; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from './dialog'; import { Form, FormControl, FormField, FormItem, FormMessage } from './form/form'; import { Input } from './input'; const ZPasswordDialogFormSchema = z.object({ password: z.string(), }); type TPasswordDialogFormSchema = z.infer; type PasswordDialogProps = { open: boolean; onOpenChange: (_open: boolean) => void; defaultPassword?: string; onPasswordSubmit?: (password: string) => void; isError?: boolean; }; export const PasswordDialog = ({ open, onOpenChange, defaultPassword, onPasswordSubmit, isError, }: PasswordDialogProps) => { const { _ } = useLingui(); const form = useForm({ defaultValues: { password: defaultPassword ?? '', }, resolver: zodResolver(ZPasswordDialogFormSchema), }); const onFormSubmit = ({ password }: TPasswordDialogFormSchema) => { onPasswordSubmit?.(password); }; useEffect(() => { if (isError) { form.setError('password', { type: 'manual', message: _(msg`The password you have entered is incorrect. Please try again.`), }); } }, [form, isError]); return ( Password Required This document is password protected. Please enter the password to view the document.
( )} />
); };