'use client'; import React from 'react'; import { AnimatePresence, motion } from 'framer-motion'; import { Plus, Trash } from 'lucide-react'; import { nanoid } from 'nanoid'; import { Control, Controller, FieldErrors, UseFormWatch, useFieldArray } from 'react-hook-form'; import { cn } from '@documenso/ui/lib/utils'; import { Button } from '@documenso/ui/primitives/button'; import { Input } from '@documenso/ui/primitives/input'; import { Label } from '@documenso/ui/primitives/label'; import { FormErrorMessage } from '~/components/form/form-error-message'; import { TEditDocumentFormSchema } from './types'; export type AddSignersFormProps = { className?: string; control: Control; watch: UseFormWatch; errors: FieldErrors; isSubmitting: boolean; }; export const AddSignersFormPartial = ({ className, control, errors, isSubmitting, }: AddSignersFormProps) => { const { append: appendSigner, fields: signers, remove: removeSigner, } = useFieldArray({ control, name: 'signers', }); const { remove: removeField, fields: fields } = useFieldArray({ name: 'fields', control, }); const onAddSigner = () => { appendSigner({ formId: nanoid(12), name: '', email: '', }); }; const onRemoveSigner = (index: number) => { const signer = signers[index]; removeSigner(index); const fieldsToRemove: number[] = []; fields.forEach((field, fieldIndex) => { if (field.signerEmail === signer.email) { fieldsToRemove.push(fieldIndex); } }); removeField(fieldsToRemove); }; const onKeyDown = (event: React.KeyboardEvent) => { if (event.key === 'Enter' && event.target instanceof HTMLInputElement) { onAddSigner(); } }; return (

Add Signers

Add the people who will sign the document.


{signers.map((signer, index) => (
( )} />
( )} />
))}
); };