From b6a951a7b6bfa31eb14616dc57084f194ea2feca Mon Sep 17 00:00:00 2001 From: "@milesibastos" Date: Tue, 4 Mar 2025 07:24:12 -0300 Subject: [PATCH] feat: update registration form schema and validation for terms and policies, enhance checkbox layout --- src/routes/[[locale]]/register/+page.svelte | 40 ++++++++++++--------- src/routes/[[locale]]/register/schema.ts | 14 +++++--- 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/src/routes/[[locale]]/register/+page.svelte b/src/routes/[[locale]]/register/+page.svelte index 732bd242..bc5dc7b6 100644 --- a/src/routes/[[locale]]/register/+page.svelte +++ b/src/routes/[[locale]]/register/+page.svelte @@ -15,6 +15,8 @@ let { data } = $props(); const form = superForm(data.form, { + resetForm: false, + clearOnSubmit: "none", validators: zodClient(schema), // Optional: Handle form submission outcomes onResult: ({ result }) => { @@ -74,14 +76,15 @@ - + -
- - Deseo desgravar esta donación. Es necesario indicar el número de DNI para comunicárselo a Hacienda. - -
+ + Deseo desgravar esta donación. Es necesario indicar el número de DNI para comunicárselo a Hacienda. + +
@@ -91,24 +94,27 @@
- + -
- Acepto las condiciones legales -
+ Acepto las condiciones legales +
- + -
- - Al registrarme confirmo mi aceptación de vuestros términos de uso, política de privacidad y política de - cookies. - -
+ + Al registrarme confirmo mi aceptación de vuestros términos de uso, política de privacidad y política de + cookies. + +
diff --git a/src/routes/[[locale]]/register/schema.ts b/src/routes/[[locale]]/register/schema.ts index 55c3408d..f68a5ebe 100644 --- a/src/routes/[[locale]]/register/schema.ts +++ b/src/routes/[[locale]]/register/schema.ts @@ -4,11 +4,17 @@ export const schema = z.object({ first_name: z.string().min(1, "First name is required"), last_name: z.string().min(1, "Last name is required"), email: z.string().email("Please enter a valid email address"), - password: z.string().min(8, "Password must be at least 8 characters"), - taxId: z.string().min(8, "Password must be at least 8 characters"), + password: z.string().min(8, "Password must be at least 8 characters long"), + taxId: z.string().min(8, "Tax ID must be at least 8 characters long"), hasTaxId: z.boolean().default(false), - terms: z.boolean().refine((value) => value, { message: "You must agree to the terms" }), - policies: z.boolean().default(false), + terms: z + .boolean() + .default(false) + .refine((value) => value === true, { message: "You must agree to the terms" }), + policies: z + .boolean() + .default(false) + .refine((value) => value === true, { message: "You must accept our privacy policies" }), }); export type FormSchema = z.infer;