diff --git a/src/lib/components/Input/Input.svelte b/src/lib/components/Input/Input.svelte index 8a22aee..feb04d8 100644 --- a/src/lib/components/Input/Input.svelte +++ b/src/lib/components/Input/Input.svelte @@ -12,6 +12,7 @@ export let readonly = false; export let size: 'xs' | 'sm' | 'md' | 'lg' = 'md'; export let pickyWidth = true; + export let containerClass = ''; export let inputElement: HTMLInputElement | undefined = undefined; @@ -34,7 +35,7 @@ </script> <!-- the cursor-not-allowed class must be set here because a disabled button does not respect the 'cursor' css property --> -<div class={type === 'submit' && disabled ? 'cursor-not-allowed' : ''}> +<div class={containerClass} class:cursor-not-allowed={type === 'submit' && disabled}> {#if type === 'submit'} <input class="btn" diff --git a/src/routes/register/+layout.svelte b/src/routes/register/+layout.svelte index ddb9ee8..5884975 100644 --- a/src/routes/register/+layout.svelte +++ b/src/routes/register/+layout.svelte @@ -1,23 +1,3 @@ -<script> - import { env } from '$env/dynamic/public'; -</script> - -<div class="fixed top-0 left-0 h-full w-full bg-[#050505]" /> -<img - class="bg-snipped bg-black fixed top-0 left-0 h-full w-full object-cover pointer-events-none blur-[2px]" - src="{env.PUBLIC_BASE_PATH}/img/register-background.webp" - alt="" -/> -<div class="flex justify-center w-full"> +<div class="flex justify-center w-full bg-base-200"> <slot /> </div> - -<style> - .bg-snipped { - /* prettier-ignore */ - clip-path: polygon( - 0 20%, 100% -35%, 100% -5%, 0 50%, - 0 110%, 100% 50%, 100% 80%, 0 140% - ); - } -</style> diff --git a/src/routes/register/+page.svelte b/src/routes/register/+page.svelte index a191529..8717ea3 100644 --- a/src/routes/register/+page.svelte +++ b/src/routes/register/+page.svelte @@ -12,7 +12,7 @@ <!--the tooltip when not all fields are correctly filled won't completely show if the overflow is hidden--> <div - class="grid card w-11/12 xl:w-2/3 2xl:w-1/2 p-6 my-12 bg-base-100 shadow-[0_0_10px_10px_rgba(0,0,0,0.7)]" + class="grid card w-11/12 xl:w-2/3 2xl:w-1/2 p-6 my-12 bg-base-100 shadow-lg" class:overflow-hidden={registered} > {#if !registered} diff --git a/src/routes/register/Register.svelte b/src/routes/register/Register.svelte index 09c77ff..28519bf 100644 --- a/src/routes/register/Register.svelte +++ b/src/routes/register/Register.svelte @@ -55,7 +55,9 @@ } let rulesAccepted = false; - let rulesModal: HTMLDialogElement | null = null; + let rulesModal: HTMLDialogElement; + let rulesModalSecondsOpened = 0; + let rulesModalTimer: number | null = null; let inputsInvalidMessage: string | null = 'Bitte fülle alle erforderlichen Felder aus'; let registerRequest: Promise<void> | null = null; @@ -162,6 +164,7 @@ if (!rulesAccepted) { e.detail.target.checked = false; rulesModal.show(); + rulesModalTimer = setInterval(() => rulesModalSecondsOpened++, 1000); } }} bind:inputElement={rulesInput} @@ -219,7 +222,14 @@ </div> </form> -<dialog class="modal" bind:this={rulesModal}> +<dialog + class="modal" + on:close={() => { + clearInterval(rulesModalTimer); + rulesModalTimer = null; + }} + bind:this={rulesModal} +> <form method="dialog" class="modal-box flex max-w-[95%] md:max-w-[90%] lg:max-w-[75%]"> <button class="btn btn-sm btn-circle btn-ghost absolute right-2 top-2">✕</button> <div class="overflow-auto"> @@ -248,15 +258,30 @@ <span class="block w-full h-[1px] mx-auto mb-1 bg-gray-600" /> {/each} </div> - <div> + <div + class="relative w-min" + title={rulesModalSecondsOpened < 30 + ? `Regeln können in ${Math.max( + 30 - rulesModalSecondsOpened, + 0 + )} Sekunden akzeptiert werden` + : ''} + > + <div class="absolute top-0 left-0 h-full w-full overflow-hidden rounded-lg"> + <div + style="width: {Math.min((rulesModalSecondsOpened / 30) * 100, 100)}%" + class="h-full bg-base-300" + /> + </div> <Input id="rules-accept" type="submit" value="Akzeptieren" + disabled={rulesModalSecondsOpened < 30} + containerClass="bg-transparent z-[1] relative" on:click={() => { rulesAccepted = true; rulesInput.checked = true; - // doesn't get triggered by `rulesInput.checked = true` so it must be called manually checkInputs(); }} />