diff --git a/packages/ui/primitives/template-flow/add-template-fields.tsx b/packages/ui/primitives/template-flow/add-template-fields.tsx index 71d868d0b..08a77ac5c 100644 --- a/packages/ui/primitives/template-flow/add-template-fields.tsx +++ b/packages/ui/primitives/template-flow/add-template-fields.tsx @@ -60,6 +60,7 @@ import { getSignerColorStyles, useSignerColors } from '../../lib/signer-colors'; import { Checkbox } from '../checkbox'; import type { FieldFormType } from '../document-flow/add-fields'; import { FieldAdvancedSettings } from '../document-flow/field-item-advanced-settings'; +import { MissingSignatureFieldDialog } from '../document-flow/missing-signature-field-dialog'; import { Form, FormControl, FormField, FormItem, FormLabel } from '../form/form'; import { useStep } from '../stepper'; import type { TAddTemplateFieldsFormSchema } from './add-template-fields.types'; @@ -110,6 +111,7 @@ export const AddTemplateFieldsFormPartial = ({ const [fieldClipboard, setFieldClipboard] = useState< TAddTemplateFieldsFormSchema['fields'][0] | null >(null); + const [isMissingSignatureDialogVisible, setIsMissingSignatureDialogVisible] = useState(false); const form = useForm({ defaultValues: { @@ -517,6 +519,23 @@ export const AddTemplateFieldsFormPartial = ({ form.setValue('typedSignatureEnabled', value, { shouldDirty: true }); }; + const handleGoNextClick = () => { + const everySignerHasSignature = recipientsByRole.SIGNER.every((signer) => + localFields.some( + (field) => + (field.type === FieldType.SIGNATURE || field.type === FieldType.FREE_SIGNATURE) && + field.recipientId === signer.id, + ), + ); + + if (!everySignerHasSignature) { + setIsMissingSignatureDialogVisible(true); + return; + } + + void onFormSubmit(); + }; + return ( <> {showAdvancedSettings && currentField ? ( @@ -1012,9 +1031,14 @@ export const AddTemplateFieldsFormPartial = ({ previousStep(); remove(); }} - onGoNextClick={() => void onFormSubmit()} + onGoNextClick={handleGoNextClick} /> + + setIsMissingSignatureDialogVisible(value)} + />