feat: jump to next field

This commit is contained in:
Catalin Pit
2024-01-05 12:56:07 +02:00
parent 6be119ac95
commit fface15a22
2 changed files with 12 additions and 3 deletions

View File

@ -49,6 +49,11 @@ export const SigningForm = ({ document, recipient, fields }: SigningFormProps) =
return sortFieldsByPosition(fields.filter((field) => !field.inserted)); return sortFieldsByPosition(fields.filter((field) => !field.inserted));
}, [fields]); }, [fields]);
const fieldsValidated = () => {
setValidateUninsertedFields(true);
validateFieldsInserted(fields);
};
const onFormSubmit = async () => { const onFormSubmit = async () => {
setValidateUninsertedFields(true); setValidateUninsertedFields(true);
@ -154,6 +159,7 @@ export const SigningForm = ({ document, recipient, fields }: SigningFormProps) =
onSignatureComplete={handleSubmit(onFormSubmit)} onSignatureComplete={handleSubmit(onFormSubmit)}
document={document} document={document}
fields={fields} fields={fields}
fieldsValidated={fieldsValidated}
/> />
</div> </div>
</div> </div>

View File

@ -15,6 +15,7 @@ export type SignDialogProps = {
isSubmitting: boolean; isSubmitting: boolean;
document: Document; document: Document;
fields: Field[]; fields: Field[];
fieldsValidated: () => void | Promise<void>;
onSignatureComplete: () => void | Promise<void>; onSignatureComplete: () => void | Promise<void>;
}; };
@ -22,6 +23,7 @@ export const SignDialog = ({
isSubmitting, isSubmitting,
document, document,
fields, fields,
fieldsValidated,
onSignatureComplete, onSignatureComplete,
}: SignDialogProps) => { }: SignDialogProps) => {
const [showDialog, setShowDialog] = useState(false); const [showDialog, setShowDialog] = useState(false);
@ -29,16 +31,17 @@ export const SignDialog = ({
const isComplete = fields.every((field) => field.inserted); const isComplete = fields.every((field) => field.inserted);
return ( return (
<Dialog open={showDialog} onOpenChange={setShowDialog}> <Dialog open={showDialog && isComplete} onOpenChange={isComplete ? setShowDialog : undefined}>
<DialogTrigger asChild> <DialogTrigger asChild>
<Button <Button
className="w-full" className="w-full"
type="button" type="button"
size="lg" size="lg"
disabled={!isComplete} variant={isComplete ? 'default' : 'outline'}
onClick={fieldsValidated}
loading={isSubmitting} loading={isSubmitting}
> >
Complete {isComplete ? 'Complete' : 'Fill fields'}
</Button> </Button>
</DialogTrigger> </DialogTrigger>
<DialogContent> <DialogContent>