diff options
| author | ivarlovlie <git@ivarlovlie.no> | 2022-10-01 10:44:31 +0200 |
|---|---|---|
| committer | ivarlovlie <git@ivarlovlie.no> | 2022-10-01 10:44:31 +0200 |
| commit | 7a5ba5ea4aec0704070cfe8d63ba504a07d88cc6 (patch) | |
| tree | 683a6a121e02b4413774dcc36522c5d3817c9867 /apps/kit/src/routes/(main)/(public)/sign-up/+page.svelte | |
| parent | 33b5c5a72974af5bd8745298772fe7cc71b87b76 (diff) | |
| download | greatoffice-7a5ba5ea4aec0704070cfe8d63ba504a07d88cc6.tar.xz greatoffice-7a5ba5ea4aec0704070cfe8d63ba504a07d88cc6.zip | |
feat: Functionality complete public sites
Diffstat (limited to 'apps/kit/src/routes/(main)/(public)/sign-up/+page.svelte')
| -rw-r--r-- | apps/kit/src/routes/(main)/(public)/sign-up/+page.svelte | 61 |
1 files changed, 47 insertions, 14 deletions
diff --git a/apps/kit/src/routes/(main)/(public)/sign-up/+page.svelte b/apps/kit/src/routes/(main)/(public)/sign-up/+page.svelte index 8b89190..0dfa41a 100644 --- a/apps/kit/src/routes/(main)/(public)/sign-up/+page.svelte +++ b/apps/kit/src/routes/(main)/(public)/sign-up/+page.svelte @@ -1,29 +1,62 @@ -<script> - import { Button, Input } from "$lib/components"; +<script lang="ts"> + import { goto } from "$app/navigation"; + import { create_account } from "$lib/api/user"; + import { Button, Input, Alert } from "$lib/components"; import LL from "$lib/i18n/i18n-svelte"; + import type { CreateAccountPayload } from "$lib/models/CreateAccountPayload"; + import type { ErrorResult } from "$lib/models/ErrorResult"; const formData = { - emailAddress: "", + username: "", password: "", - }; + } as CreateAccountPayload; + + const errorData = { + text: "", + title: "", + } as ErrorResult; + let loading = false; + $: showErrorAlert = + (errorData?.text.length ?? 0 + errorData?.title.length ?? 0) > 0; + + async function submitFormAsync() { + loading = true; + errorData.text = ""; + errorData.title = ""; + const response = await create_account(formData); + loading = false; + if (response.ok) { + await goto("/home"); + return; + } + errorData.title = response.data?.title ?? $LL.unexpectedError(); + errorData.text = response.data?.text ?? $LL.tryAgainSoon(); + } </script> <div class="min-h-full flex flex-col justify-center py-12 sm:px-6 lg:px-8"> - <div class="sm:mx-auto sm:w-full sm:max-w-md"> - <h2 - class="mt-6 text-center text-3xl tracking-tight font-bold text-gray-900" - > - {$LL.createYourNewAccount()} + <div class="sm:mx-auto sm:w-full p-2 sm:p-0 sm:max-w-md"> + <h2 class="mt-6 text-3xl tracking-tight font-bold text-gray-900"> + {$LL.signUpPage.createYourNewAccount()} </h2> - <p class="mt-2 text-center text-sm text-gray-600"> + <p class="mt-2 text-sm text-gray-600"> {$LL.or().toLowerCase()} - <a href="/sign-in" class="link">{$LL.signIntoYourAccount()}</a> + <a href="/sign-in" class="link"> + {$LL.signIntoYourAccount().toLowerCase()} + </a> </p> </div> <div class="mt-8 sm:mx-auto sm:w-full sm:max-w-md"> <div class="bg-white py-8 px-4 shadow sm:rounded-lg sm:px-10"> - <form class="space-y-6" action="#"> + <Alert + title={errorData.title} + message={errorData.text} + type="error" + class="mb-2" + visible={showErrorAlert} + /> + <form class="space-y-6" on:submit|preventDefault={submitFormAsync}> <Input label={$LL.emailAddress()} id="email" @@ -31,7 +64,7 @@ autocomplete="email" required type="email" - bind:value={formData.emailAddress} + bind:value={formData.username} /> <Input @@ -42,7 +75,7 @@ type="password" bind:value={formData.password} /> - <Button type="submit" text={$LL.submit()} fullWidth /> + <Button type="submit" text={$LL.submit()} {loading} fullWidth /> </form> </div> </div> |
