chore: disable next step for signers without signature field

This commit is contained in:
Catalin Pit
2025-02-13 10:21:24 +02:00
parent c670f64b1f
commit 763b7f82c9

View File

@ -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<TAddTemplateFieldsFormSchema>({
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}
/>
</DocumentFlowFormContainerFooter>
<MissingSignatureFieldDialog
isOpen={isMissingSignatureDialogVisible}
onOpenChange={(value) => setIsMissingSignatureDialogVisible(value)}
/>
</div>
</DocumentFlowFormContainerContent>
</>