Compare commits
	
		
			11 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						7516d3579f
	
				 | 
					
					
						|||
| 
						
						
							
						
						2c503f9b03
	
				 | 
					
					
						|||
| 
						
						
							
						
						6a0b014d55
	
				 | 
					
					
						|||
| 
						
						
							
						
						b7f792c6f9
	
				 | 
					
					
						|||
| 
						
						
							
						
						528b025e55
	
				 | 
					
					
						|||
| 
						
						
							
						
						368e97c6bb
	
				 | 
					
					
						|||
| 
						
						
							
						
						6acd8bb634
	
				 | 
					
					
						|||
| 
						
						
							
						
						6dcdba6568
	
				 | 
					
					
						|||
| 
						
						
							
						
						525c096f7a
	
				 | 
					
					
						|||
| 
						
						
							
						
						0de50822cd
	
				 | 
					
					
						|||
| 
						
						
							
						
						0177c50651
	
				 | 
					
					
						
							
								
								
									
										27
									
								
								.gitea/workflows/dev.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								.gitea/workflows/dev.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					name: Build latest image
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  push:
 | 
				
			||||||
 | 
					    branches:
 | 
				
			||||||
 | 
					      - main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  build-container:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - name: Checkout
 | 
				
			||||||
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					      - name: Login to registry
 | 
				
			||||||
 | 
					        uses: docker/login-action@v3
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          registry: registry.odit.services
 | 
				
			||||||
 | 
					          username: ${{ vars.REGISTRY_USERNAME }}
 | 
				
			||||||
 | 
					          password: ${{ secrets.REGISTRY_PASSWORD }}
 | 
				
			||||||
 | 
					      - name: Set up Docker Buildx
 | 
				
			||||||
 | 
					        uses: docker/setup-buildx-action@v3
 | 
				
			||||||
 | 
					      - name: Build and push
 | 
				
			||||||
 | 
					        uses: docker/build-push-action@v6
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          push: true
 | 
				
			||||||
 | 
					          tags: |
 | 
				
			||||||
 | 
					            ${{ vars.REGISTRY }}/lfk/kiosk:latest
 | 
				
			||||||
 | 
					          platforms: linux/amd64,linux/arm64
 | 
				
			||||||
							
								
								
									
										27
									
								
								.gitea/workflows/release.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								.gitea/workflows/release.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					name: Build release images
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  push:
 | 
				
			||||||
 | 
					    tags:
 | 
				
			||||||
 | 
					      - "*.*.*"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  build-container:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - name: Checkout
 | 
				
			||||||
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					      - name: Login to registry
 | 
				
			||||||
 | 
					        uses: docker/login-action@v3
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          registry: registry.odit.services
 | 
				
			||||||
 | 
					          username: ${{ vars.REGISTRY_USERNAME }}
 | 
				
			||||||
 | 
					          password: ${{ secrets.REGISTRY_PASSWORD }}
 | 
				
			||||||
 | 
					      - name: Set up Docker Buildx
 | 
				
			||||||
 | 
					        uses: docker/setup-buildx-action@v3
 | 
				
			||||||
 | 
					      - name: Build and push
 | 
				
			||||||
 | 
					        uses: docker/build-push-action@v6
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          push: true
 | 
				
			||||||
 | 
					          tags: |
 | 
				
			||||||
 | 
					            ${{ vars.REGISTRY }}/lfk/kiosk:${{ github.ref_name }}
 | 
				
			||||||
 | 
					          platforms: linux/amd64,linux/arm64
 | 
				
			||||||
@@ -1,40 +0,0 @@
 | 
				
			|||||||
steps:
 | 
					 | 
				
			||||||
  - name: build edge
 | 
					 | 
				
			||||||
    image: woodpeckerci/plugin-docker-buildx
 | 
					 | 
				
			||||||
    settings:
 | 
					 | 
				
			||||||
      repo: registry.odit.services/lfk/kiosk
 | 
					 | 
				
			||||||
      tags:
 | 
					 | 
				
			||||||
        - edge
 | 
					 | 
				
			||||||
      registry: registry.odit.services
 | 
					 | 
				
			||||||
      platforms: linux/amd64,linux/arm64
 | 
					 | 
				
			||||||
      cache_from: registry.odit.services/lfk/kiosk:edge
 | 
					 | 
				
			||||||
      username:
 | 
					 | 
				
			||||||
        from_secret: odit-registry-builder-username
 | 
					 | 
				
			||||||
      password:
 | 
					 | 
				
			||||||
        from_secret: odit-registry-builder-password
 | 
					 | 
				
			||||||
    secrets:
 | 
					 | 
				
			||||||
      - source: odit-npm-cache-url
 | 
					 | 
				
			||||||
        target: NPM_REGISTRY_URL
 | 
					 | 
				
			||||||
    when:
 | 
					 | 
				
			||||||
      branch: dev
 | 
					 | 
				
			||||||
  - name: build latest
 | 
					 | 
				
			||||||
    image: woodpeckerci/plugin-docker-buildx
 | 
					 | 
				
			||||||
    settings:
 | 
					 | 
				
			||||||
      repo: registry.odit.services/lfk/kiosk
 | 
					 | 
				
			||||||
      tags:
 | 
					 | 
				
			||||||
        - latest
 | 
					 | 
				
			||||||
      registry: registry.odit.services
 | 
					 | 
				
			||||||
      platforms: linux/amd64,linux/arm64
 | 
					 | 
				
			||||||
      username:
 | 
					 | 
				
			||||||
        from_secret: odit-registry-builder-username
 | 
					 | 
				
			||||||
      password:
 | 
					 | 
				
			||||||
        from_secret: odit-registry-builder-password
 | 
					 | 
				
			||||||
    secrets:
 | 
					 | 
				
			||||||
      - source: odit-npm-cache-url
 | 
					 | 
				
			||||||
        target: NPM_REGISTRY_URL
 | 
					 | 
				
			||||||
    when:
 | 
					 | 
				
			||||||
      branch: main
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
when:
 | 
					 | 
				
			||||||
  event:
 | 
					 | 
				
			||||||
    - push
 | 
					 | 
				
			||||||
@@ -1,22 +0,0 @@
 | 
				
			|||||||
steps:
 | 
					 | 
				
			||||||
  - name: type checks
 | 
					 | 
				
			||||||
    image: registry.odit.services/hub/library/node:19.9.0-alpine3.16
 | 
					 | 
				
			||||||
    commands:
 | 
					 | 
				
			||||||
      - npm config set registry $NPM_REGISTRY_URL && npm i -g pnpm@8
 | 
					 | 
				
			||||||
      - pnpm i
 | 
					 | 
				
			||||||
      - pnpm check
 | 
					 | 
				
			||||||
    secrets:
 | 
					 | 
				
			||||||
      - source: odit-npm-cache-url
 | 
					 | 
				
			||||||
        target: NPM_REGISTRY_URL
 | 
					 | 
				
			||||||
  - name: build check
 | 
					 | 
				
			||||||
    image: registry.odit.services/hub/library/node:19.9.0-alpine3.16
 | 
					 | 
				
			||||||
    commands:
 | 
					 | 
				
			||||||
      - npm config set registry $NPM_REGISTRY_URL && npm i -g pnpm@8
 | 
					 | 
				
			||||||
      - pnpm i
 | 
					 | 
				
			||||||
      - pnpm build
 | 
					 | 
				
			||||||
    secrets:
 | 
					 | 
				
			||||||
      - source: odit-npm-cache-url
 | 
					 | 
				
			||||||
        target: NPM_REGISTRY_URL
 | 
					 | 
				
			||||||
when:
 | 
					 | 
				
			||||||
  event:
 | 
					 | 
				
			||||||
    - pull_request
 | 
					 | 
				
			||||||
							
								
								
									
										30
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -2,9 +2,39 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
 | 
					All notable changes to this project will be documented in this file. Dates are displayed in UTC.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### [1.1.4](https://git.odit.services/lfk/kiosk/compare/1.1.3...1.1.4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- feat: improve registration flow [`2c503f9`](https://git.odit.services/lfk/kiosk/commit/2c503f9b0333b668730c4eb11deb5184ee49f295)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### [1.1.3](https://git.odit.services/lfk/kiosk/compare/1.1.2...1.1.3)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> 2 April 2025
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- chore(release): 1.1.3 [`6a0b014`](https://git.odit.services/lfk/kiosk/commit/6a0b014d55b129eef17d70bb9a86203a272d3ad3)
 | 
				
			||||||
 | 
					- fix: registration without email [`b7f792c`](https://git.odit.services/lfk/kiosk/commit/b7f792c6f99249acd0c8c1154800c4442ad5a8b0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### [1.1.2](https://git.odit.services/lfk/kiosk/compare/1.1.1...1.1.2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> 2 April 2025
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- fix: build [`368e97c`](https://git.odit.services/lfk/kiosk/commit/368e97c6bba238b605532aa9c598ace5f2bac592)
 | 
				
			||||||
 | 
					- chore(release): 1.1.2 [`528b025`](https://git.odit.services/lfk/kiosk/commit/528b025e55ce6d4ab0dec32803d201d057725dac)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### [1.1.1](https://git.odit.services/lfk/kiosk/compare/1.1.0...1.1.1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> 2 April 2025
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- refactor(ci): Switch to actions [`0177c50`](https://git.odit.services/lfk/kiosk/commit/0177c506516c5e21b4f73e1086b587ab2f1d8f50)
 | 
				
			||||||
 | 
					- feat: improved registration [`6dcdba6`](https://git.odit.services/lfk/kiosk/commit/6dcdba6568def337dcd1e4e6db5c75df09c1f938)
 | 
				
			||||||
 | 
					- 🚀Bumped version to 1.1.1 [`6acd8bb`](https://git.odit.services/lfk/kiosk/commit/6acd8bb6340f0d874e8ab8b9e1a93a5fd05fd3b6)
 | 
				
			||||||
 | 
					- feat: disable chrome autocomplete [`525c096`](https://git.odit.services/lfk/kiosk/commit/525c096f7a757105947da62e8dac75a24e0aa757)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### [1.1.0](https://git.odit.services/lfk/kiosk/compare/1.0.0...1.1.0)
 | 
					#### [1.1.0](https://git.odit.services/lfk/kiosk/compare/1.0.0...1.1.0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> 16 December 2024
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- chore(deps): bump all [`b969932`](https://git.odit.services/lfk/kiosk/commit/b9699325828dd9b3ed51997d7a72f43449f000cf)
 | 
					- chore(deps): bump all [`b969932`](https://git.odit.services/lfk/kiosk/commit/b9699325828dd9b3ed51997d7a72f43449f000cf)
 | 
				
			||||||
 | 
					- 🚀Bumped version to 1.1.0 [`f7575f4`](https://git.odit.services/lfk/kiosk/commit/f7575f46e4197da893c002299f8e7fdefc5cb026)
 | 
				
			||||||
- feat(ci)!: Switch to woodpecker [`16f9228`](https://git.odit.services/lfk/kiosk/commit/16f92283904bc3a2825ebb0fb0c7f130ffa8f057)
 | 
					- feat(ci)!: Switch to woodpecker [`16f9228`](https://git.odit.services/lfk/kiosk/commit/16f92283904bc3a2825ebb0fb0c7f130ffa8f057)
 | 
				
			||||||
- feat: email [`a8d90d4`](https://git.odit.services/lfk/kiosk/commit/a8d90d48829fa708d1cdc5029d1e1ac2f28b1e4c)
 | 
					- feat: email [`a8d90d4`](https://git.odit.services/lfk/kiosk/commit/a8d90d48829fa708d1cdc5029d1e1ac2f28b1e4c)
 | 
				
			||||||
- 2025 [`a2ffa50`](https://git.odit.services/lfk/kiosk/commit/a2ffa5055e58445bbbc6f932495eb8c4952fec99)
 | 
					- 2025 [`a2ffa50`](https://git.odit.services/lfk/kiosk/commit/a2ffa5055e58445bbbc6f932495eb8c4952fec99)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,9 @@
 | 
				
			|||||||
FROM registry.odit.services/hub/library/node:19.9.0-alpine3.16 AS build
 | 
					FROM registry.odit.services/hub/library/node:23.10.0-alpine3.21 AS build
 | 
				
			||||||
ARG NPM_REGISTRY_URL=registry.npmjs.org
 | 
					# ARG NPM_REGISTRY_URL=registry.npmjs.org
 | 
				
			||||||
WORKDIR /app
 | 
					WORKDIR /app
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COPY package.json *.config.cjs *.config.js *.config.ts tsconfig.json .npmrc ./
 | 
					COPY package.json *.config.cjs *.config.js *.config.ts tsconfig.json .npmrc ./
 | 
				
			||||||
RUN npm config set registry $NPM_REGISTRY_URL && npm i -g pnpm@8
 | 
					RUN npm i -g pnpm@10.7
 | 
				
			||||||
RUN pnpm i
 | 
					RUN pnpm i
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COPY src ./src
 | 
					COPY src ./src
 | 
				
			||||||
@@ -11,5 +11,5 @@ COPY static ./static
 | 
				
			|||||||
RUN pnpm build
 | 
					RUN pnpm build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# final image
 | 
					# final image
 | 
				
			||||||
FROM registry.odit.services/library/nginx-brotli:3.15 as final
 | 
					FROM registry.odit.services/library/nginx-brotli:3.15 AS final
 | 
				
			||||||
COPY --from=build /app/build /usr/share/nginx/html
 | 
					COPY --from=build /app/build /usr/share/nginx/html
 | 
				
			||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	"name": "@lfk/kiosk",
 | 
						"name": "@lfk/kiosk",
 | 
				
			||||||
	"version": "1.1.0",
 | 
						"version": "1.1.4",
 | 
				
			||||||
	"private": false,
 | 
						"private": false,
 | 
				
			||||||
	"license": "MIT",
 | 
						"license": "MIT",
 | 
				
			||||||
	"repository": "https://git.odit.services/lfk/kiosk",
 | 
						"repository": "https://git.odit.services/lfk/kiosk",
 | 
				
			||||||
@@ -68,11 +68,11 @@
 | 
				
			|||||||
		"git": {
 | 
							"git": {
 | 
				
			||||||
			"commit": true,
 | 
								"commit": true,
 | 
				
			||||||
			"requireCleanWorkingDir": false,
 | 
								"requireCleanWorkingDir": false,
 | 
				
			||||||
			"commitMessage": "🚀Bumped version to ${version}",
 | 
								"commitMessage": "chore(release): ${version}",
 | 
				
			||||||
			"requireBranch": "main",
 | 
								"requireBranch": "main",
 | 
				
			||||||
			"push": true,
 | 
								"push": true,
 | 
				
			||||||
			"tag": true,
 | 
								"tag": true,
 | 
				
			||||||
			"tagName": null,
 | 
								"tagName": "${version}",
 | 
				
			||||||
			"tagAnnotation": "${version}"
 | 
								"tagAnnotation": "${version}"
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		"npm": {
 | 
							"npm": {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,11 +1,10 @@
 | 
				
			|||||||
<script>
 | 
					<script>
 | 
				
			||||||
	import { OpenAPI } from '@odit/lfk-client-js';
 | 
						import { OpenAPI } from '@odit/lfk-client-js';
 | 
				
			||||||
	import { env } from '$env/dynamic/public';
 | 
					 | 
				
			||||||
	import '../app.postcss';
 | 
						import '../app.postcss';
 | 
				
			||||||
	import '@fontsource/athiti';
 | 
						import '@fontsource/athiti';
 | 
				
			||||||
	import { onMount } from 'svelte';
 | 
						import { onMount } from 'svelte';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	OpenAPI.BASE = env.PUBLIC_BASE_URL || 'https://run.lauf-fuer-kaya.de';
 | 
						OpenAPI.BASE = 'https://run.lauf-fuer-kaya.de';
 | 
				
			||||||
	onMount(() => {
 | 
						onMount(() => {
 | 
				
			||||||
		window.addEventListener('keydown', (e) => {
 | 
							window.addEventListener('keydown', (e) => {
 | 
				
			||||||
			// F1
 | 
								// F1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,6 +75,7 @@
 | 
				
			|||||||
								<div class="relative">
 | 
													<div class="relative">
 | 
				
			||||||
									<input
 | 
														<input
 | 
				
			||||||
										bind:value={username}
 | 
															bind:value={username}
 | 
				
			||||||
 | 
															autocomplete="one-time-code"
 | 
				
			||||||
										type="username"
 | 
															type="username"
 | 
				
			||||||
										id="username"
 | 
															id="username"
 | 
				
			||||||
										name="username"
 | 
															name="username"
 | 
				
			||||||
@@ -94,6 +95,7 @@
 | 
				
			|||||||
								<div class="relative">
 | 
													<div class="relative">
 | 
				
			||||||
									<input
 | 
														<input
 | 
				
			||||||
										bind:value={password}
 | 
															bind:value={password}
 | 
				
			||||||
 | 
															autocomplete="one-time-code"
 | 
				
			||||||
										type="password"
 | 
															type="password"
 | 
				
			||||||
										id="password"
 | 
															id="password"
 | 
				
			||||||
										name="password"
 | 
															name="password"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,10 +32,16 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	async function register() {
 | 
						async function register() {
 | 
				
			||||||
		try {
 | 
							try {
 | 
				
			||||||
 | 
								let emailToSend = null;
 | 
				
			||||||
 | 
								if (email !== '') {
 | 
				
			||||||
 | 
									if (email.includes('@')) {
 | 
				
			||||||
 | 
										emailToSend = email;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			response = (await RunnerService.runnerControllerPost({
 | 
								response = (await RunnerService.runnerControllerPost({
 | 
				
			||||||
				firstname,
 | 
									firstname,
 | 
				
			||||||
				lastname,
 | 
									lastname,
 | 
				
			||||||
				email,
 | 
									email: emailToSend,
 | 
				
			||||||
				group
 | 
									group
 | 
				
			||||||
			})) as ResponseRunner;
 | 
								})) as ResponseRunner;
 | 
				
			||||||
			showResult = true;
 | 
								showResult = true;
 | 
				
			||||||
@@ -84,7 +90,7 @@
 | 
				
			|||||||
>
 | 
					>
 | 
				
			||||||
	<div class="w-full max-w-md mx-auto p-6">
 | 
						<div class="w-full max-w-md mx-auto p-6">
 | 
				
			||||||
		<!-- <div
 | 
							<!-- <div
 | 
				
			||||||
			class="mt-7 bg-white border border-gray-200 rounded-xl shadow-sm dark:bg-gray-800 dark:border-gray-700"
 | 
								class="mt-7 bg-white border border-gray-200 rounded-xl shadow-sm dark:bg-gray-800 dark:border-gray-200"
 | 
				
			||||||
		> -->
 | 
							> -->
 | 
				
			||||||
		<div class="p-4 sm:p-7">
 | 
							<div class="p-4 sm:p-7">
 | 
				
			||||||
			<div class="mt-5">
 | 
								<div class="mt-5">
 | 
				
			||||||
@@ -104,13 +110,18 @@
 | 
				
			|||||||
									<input
 | 
														<input
 | 
				
			||||||
										on:keydown={(e) => {
 | 
															on:keydown={(e) => {
 | 
				
			||||||
											if (e.keyCode === 13) {
 | 
																if (e.keyCode === 13) {
 | 
				
			||||||
 | 
																	e.preventDefault();
 | 
				
			||||||
 | 
																	document.getElementById('lastname')?.focus();
 | 
				
			||||||
 | 
																}
 | 
				
			||||||
 | 
																if (e.keyCode === 40) {
 | 
				
			||||||
												document.getElementById('lastname')?.focus();
 | 
																	document.getElementById('lastname')?.focus();
 | 
				
			||||||
											}
 | 
																}
 | 
				
			||||||
										}}
 | 
															}}
 | 
				
			||||||
										type="text"
 | 
															type="text"
 | 
				
			||||||
 | 
															autocomplete="one-time-code"
 | 
				
			||||||
										id="firstname"
 | 
															id="firstname"
 | 
				
			||||||
										name="firstname"
 | 
															name="firstname"
 | 
				
			||||||
										class="py-3 px-4 block w-full border-gray-200 rounded-md focus:border-blue-500 focus:ring-blue-500 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 border"
 | 
															class="font-semibold placeholder:font-normal placeholder:text-black dark:placeholder:text-gray-200 py-3 px-4 block w-full border-gray-500 rounded-md focus:border-blue-500 focus:ring-blue-500 dark:bg-gray-800 dark:border-gray-200 dark:text-white border"
 | 
				
			||||||
										required
 | 
															required
 | 
				
			||||||
										placeholder="Vorname"
 | 
															placeholder="Vorname"
 | 
				
			||||||
										bind:value={firstname}
 | 
															bind:value={firstname}
 | 
				
			||||||
@@ -149,10 +160,23 @@
 | 
				
			|||||||
								<label for="lastname" class="block text-lg font-bold mb-2 sr-only">Nachname</label>
 | 
													<label for="lastname" class="block text-lg font-bold mb-2 sr-only">Nachname</label>
 | 
				
			||||||
								<div class="relative">
 | 
													<div class="relative">
 | 
				
			||||||
									<input
 | 
														<input
 | 
				
			||||||
 | 
															on:keydown={(e) => {
 | 
				
			||||||
 | 
																if (e.keyCode === 13) {
 | 
				
			||||||
 | 
																	e.preventDefault();
 | 
				
			||||||
 | 
																	document.getElementById('email')?.focus();
 | 
				
			||||||
 | 
																}
 | 
				
			||||||
 | 
																if (e.keyCode === 38) {
 | 
				
			||||||
 | 
																	document.getElementById('firstname')?.focus();
 | 
				
			||||||
 | 
																}
 | 
				
			||||||
 | 
																if (e.keyCode === 40) {
 | 
				
			||||||
 | 
																	document.getElementById('email')?.focus();
 | 
				
			||||||
 | 
																}
 | 
				
			||||||
 | 
															}}
 | 
				
			||||||
 | 
															autocomplete="one-time-code"
 | 
				
			||||||
										type="lastname"
 | 
															type="lastname"
 | 
				
			||||||
										id="lastname"
 | 
															id="lastname"
 | 
				
			||||||
										name="lastname"
 | 
															name="lastname"
 | 
				
			||||||
										class="py-3 px-4 block w-full border-gray-200 rounded-md focus:border-blue-500 focus:ring-blue-500 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 border"
 | 
															class="font-semibold placeholder:font-normal placeholder:text-black dark:placeholder:text-gray-200 py-3 px-4 block w-full border-gray-500 rounded-md focus:border-blue-500 focus:ring-blue-500 dark:bg-gray-800 dark:border-gray-200 dark:text-white border"
 | 
				
			||||||
										required
 | 
															required
 | 
				
			||||||
										placeholder="Nachname"
 | 
															placeholder="Nachname"
 | 
				
			||||||
										aria-describedby="lastname-error"
 | 
															aria-describedby="lastname-error"
 | 
				
			||||||
@@ -188,14 +212,28 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
							<!-- Form Group -->
 | 
												<!-- Form Group -->
 | 
				
			||||||
							<div>
 | 
												<div>
 | 
				
			||||||
								<label for="email" class="block text-lg font-bold mb-2 sr-only">E-Mail (optional)</label>
 | 
													<label for="email" class="block text-lg font-bold mb-2 sr-only"
 | 
				
			||||||
 | 
														>E-Mail (optional)</label
 | 
				
			||||||
 | 
													>
 | 
				
			||||||
								<div class="relative">
 | 
													<div class="relative">
 | 
				
			||||||
									<input
 | 
														<input
 | 
				
			||||||
 | 
															on:keydown={(e) => {
 | 
				
			||||||
 | 
																if (e.keyCode === 13) {
 | 
				
			||||||
 | 
																	e.preventDefault();
 | 
				
			||||||
 | 
																	document.getElementById('submit')?.focus();
 | 
				
			||||||
 | 
																}
 | 
				
			||||||
 | 
																if (e.keyCode === 38) {
 | 
				
			||||||
 | 
																	document.getElementById('lastname')?.focus();
 | 
				
			||||||
 | 
																}
 | 
				
			||||||
 | 
																if (e.keyCode === 40) {
 | 
				
			||||||
 | 
																	document.getElementById('submit')?.focus();
 | 
				
			||||||
 | 
																}
 | 
				
			||||||
 | 
															}}
 | 
				
			||||||
 | 
															autocomplete="one-time-code"
 | 
				
			||||||
										type="email"
 | 
															type="email"
 | 
				
			||||||
										id="email"
 | 
															id="email"
 | 
				
			||||||
										name="email"
 | 
															name="email"
 | 
				
			||||||
										class="py-3 px-4 block w-full border-gray-200 rounded-md focus:border-blue-500 focus:ring-blue-500 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 border"
 | 
															class="font-semibold placeholder:font-normal placeholder:text-black dark:placeholder:text-gray-200 py-3 px-4 block w-full border-gray-500 rounded-md focus:border-blue-500 focus:ring-blue-500 dark:bg-gray-800 dark:border-gray-200 dark:text-white border"
 | 
				
			||||||
										required
 | 
					 | 
				
			||||||
										placeholder="E-Mail (optional)"
 | 
															placeholder="E-Mail (optional)"
 | 
				
			||||||
										aria-describedby="lastname-error"
 | 
															aria-describedby="lastname-error"
 | 
				
			||||||
										bind:value={email}
 | 
															bind:value={email}
 | 
				
			||||||
@@ -229,6 +267,12 @@
 | 
				
			|||||||
							<!-- End Form Group -->
 | 
												<!-- End Form Group -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							<button
 | 
												<button
 | 
				
			||||||
 | 
													on:keydown={(e) => {
 | 
				
			||||||
 | 
														if (e.keyCode === 38) {
 | 
				
			||||||
 | 
															document.getElementById('email')?.focus();
 | 
				
			||||||
 | 
														}
 | 
				
			||||||
 | 
													}}
 | 
				
			||||||
 | 
													id="submit"
 | 
				
			||||||
								type="submit"
 | 
													type="submit"
 | 
				
			||||||
								disabled={!firstname || !lastname}
 | 
													disabled={!firstname || !lastname}
 | 
				
			||||||
								class="py-3 px-4 inline-flex justify-center items-center gap-2 rounded-md border border-transparent font-semibold disabled:opacity-70 bg-blue-600 text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition-all dark:focus:ring-offset-gray-800"
 | 
													class="py-3 px-4 inline-flex justify-center items-center gap-2 rounded-md border border-transparent font-semibold disabled:opacity-70 bg-blue-600 text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition-all dark:focus:ring-offset-gray-800"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user