From cafe030e79c688d82919103737378546916ec7c5 Mon Sep 17 00:00:00 2001 From: Alex <$(pass /github/email)> Date: Wed, 2 Oct 2024 14:32:14 +0200 Subject: [PATCH] add checkbox styling, driverslicence handling and validation --- frontend/src/app.d.ts | 1 + frontend/src/hooks.server.js | 2 + frontend/src/lib/components/InputField.svelte | 57 +++++++++- frontend/src/lib/img/Avatar-f3.jpeg | Bin 0 -> 210693 bytes frontend/src/lib/locales/de.js | 12 +- frontend/src/routes/+layout.js | 4 +- frontend/src/routes/+layout.server.js | 1 + .../src/routes/auth/about/[id]/+page.svelte | 105 ++++++++++++++++++ internal/controllers/user_controller.go | 24 ++-- internal/controllers/user_controller_test.go | 37 +++++- internal/models/drivers_licence.go | 17 +-- internal/models/user.go | 8 ++ .../drivers_licence_repository.go | 6 + internal/server/server.go | 3 +- internal/services/drivers_licence_service.go | 18 +++ internal/services/user_service.go | 9 +- internal/utils/validators.go | 43 +++++-- 17 files changed, 303 insertions(+), 44 deletions(-) create mode 100644 frontend/src/lib/img/Avatar-f3.jpeg create mode 100644 internal/services/drivers_licence_service.go diff --git a/frontend/src/app.d.ts b/frontend/src/app.d.ts index 663579e..4753812 100644 --- a/frontend/src/app.d.ts +++ b/frontend/src/app.d.ts @@ -73,6 +73,7 @@ declare global { interface Locals { user: User; subscriptions: Subscription[]; + licence_categories: LicenceCategory[]; } // interface PageData {} // interface Platform {} diff --git a/frontend/src/hooks.server.js b/frontend/src/hooks.server.js index 046ff59..ca883c4 100644 --- a/frontend/src/hooks.server.js +++ b/frontend/src/hooks.server.js @@ -46,6 +46,8 @@ export async function handle({ event, resolve }) { event.locals.subscriptions = data.subscriptions; event.locals.user = data.user; + event.locals.licence_categories = data.licence_categories; + console.dir(event.locals.licence_categories); if (event.locals.user.date_of_birth) { event.locals.user.date_of_birth = event.locals.user.date_of_birth.split("T")[0]; diff --git a/frontend/src/lib/components/InputField.svelte b/frontend/src/lib/components/InputField.svelte index 89ac750..7acf734 100644 --- a/frontend/src/lib/components/InputField.svelte +++ b/frontend/src/lib/components/InputField.svelte @@ -32,6 +32,9 @@ /** @type {boolean} */ export let toUpperCase = false; + /** @type {boolean} */ + export let checked = false; + /** * @param {Event} event - The input event */ @@ -97,6 +100,11 @@ /^[A-Z]{6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3})?$/.test(value) ? null : $t("validation.bic"); + case "licence_number": + return typeof value === "string" && value.length == 11 + ? null + : $t("validation.drivers_licence"); + default: return typeof value === "string" && !value.trim() && required ? $t("validation.required") @@ -109,8 +117,21 @@ $: selectedColor = selectedOption ? selectedOption.color : ""; -
- {label} +
+ {#if type === "checkbox"} + + {:else} + {label} + {/if}
{#if error} {error} @@ -137,7 +158,7 @@ class="input textarea" style="height:{rows * 1.5}em;" /> - {:else} + {:else if type != "checkbox"}