diff --git a/apps/web/src/app/(signing)/sign/[token]/form.tsx b/apps/web/src/app/(signing)/sign/[token]/form.tsx index 17872a7ab..5c6779c62 100644 --- a/apps/web/src/app/(signing)/sign/[token]/form.tsx +++ b/apps/web/src/app/(signing)/sign/[token]/form.tsx @@ -19,6 +19,7 @@ import { Label } from '@documenso/ui/primitives/label'; import { SignaturePad } from '@documenso/ui/primitives/signature-pad'; import { useRequiredSigningContext } from './provider'; +import { SignDialog } from './sign-dialog'; export type SigningFormProps = { document: Document; @@ -31,7 +32,6 @@ export const SigningForm = ({ document, recipient, fields }: SigningFormProps) = const { data: session } = useSession(); const { fullName, signature, setFullName, setSignature } = useRequiredSigningContext(); - const [validateUninsertedFields, setValidateUninsertedFields] = useState(false); const { @@ -45,6 +45,7 @@ export const SigningForm = ({ document, recipient, fields }: SigningFormProps) = const onFormSubmit = async () => { setValidateUninsertedFields(true); + const isFieldsValid = validateFieldsInserted(fields); if (!isFieldsValid) { @@ -132,9 +133,12 @@ export const SigningForm = ({ document, recipient, fields }: SigningFormProps) = Cancel - - Complete - + diff --git a/apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx b/apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx new file mode 100644 index 000000000..0ce750a39 --- /dev/null +++ b/apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx @@ -0,0 +1,77 @@ +import { useState } from 'react'; + +import { Document, Field } from '@documenso/prisma/client'; +import { Button } from '@documenso/ui/primitives/button'; +import { + Dialog, + DialogContent, + DialogFooter, + DialogTrigger, +} from '@documenso/ui/primitives/dialog'; + +export type SignDialogProps = { + isSubmitting: boolean; + document: Document; + fields: Field[]; + onSignatureComplete: () => void | Promise; +}; + +export const SignDialog = ({ + isSubmitting, + document, + fields, + onSignatureComplete, +}: SignDialogProps) => { + const [showDialog, setShowDialog] = useState(false); + + const isComplete = fields.every((field) => field.inserted); + + return ( + + + + Complete + + + + + Sign Document + + You are about to finish signing "{document.title}". Are you sure? + + + + + + { + setShowDialog(false); + }} + > + Cancel + + + + Sign + + + + + + ); +};