Compare commits
	
		
			24 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 868dc3f7e2 | |||
| 9e8c236281 | |||
| 827fb317bc | |||
| edd5da89a7 | |||
| 27187b428d | |||
| e28f543d89 | |||
| 1ec8e2186b | |||
| 657fb04f1b | |||
| dc1e6b7a67 | |||
| 77a432817e | |||
| 31a4ff9d90 | |||
| cb315d94fd | |||
| 32f72df105 | |||
| 724e84441e | |||
| ecd418c5db | |||
| 5dcb4cb508 | |||
| 9c03e359a4 | |||
| 1505080afd | |||
| 8cb6093f0b | |||
| 7a92adcd3a | |||
| 27396e17f2 | |||
| fefd5c8237 | |||
| f9993c60f5 | |||
| 8e314f8676 | 
							
								
								
									
										48
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								CHANGELOG.md
									
									
									
									
									
								
							| @@ -2,9 +2,57 @@ | |||||||
|  |  | ||||||
| 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.12.2](https://git.odit.services/lfk/frontend/compare/1.12.1...1.12.2) | ||||||
|  |  | ||||||
|  | - feat(cardassignment): Now with hand scanner support [`9e8c236`](https://git.odit.services/lfk/frontend/commit/9e8c236281f6686318c27dcb1bd02dfbc2b30ee8) | ||||||
|  |  | ||||||
|  | #### [1.12.1](https://git.odit.services/lfk/frontend/compare/1.12.0...1.12.1) | ||||||
|  |  | ||||||
|  | > 28 April 2025 | ||||||
|  |  | ||||||
|  | - chore(release): 1.12.1 [`827fb31`](https://git.odit.services/lfk/frontend/commit/827fb317bc946268e4a1d60b15f3805b67b240f6) | ||||||
|  | - fix(donations): Don't show enter payment for anon donations [`32f72df`](https://git.odit.services/lfk/frontend/commit/32f72df10583a08efb26e0983c0c5c829ab03e19) | ||||||
|  | - chore(deps): Fresh lock [`1ec8e21`](https://git.odit.services/lfk/frontend/commit/1ec8e2186bdcd69c2acbc785feef4927973bc986) | ||||||
|  | - fix(donations): Support anon donations in deletion modal [`27187b4`](https://git.odit.services/lfk/frontend/commit/27187b428da1e757f85392d77d49670f51a19829) | ||||||
|  | - fix(donations): Don't show details for anon donations [`ecd418c`](https://git.odit.services/lfk/frontend/commit/ecd418c5db0910d64cdf5336d72a10ebff38e065) | ||||||
|  | - refactor(i18n): Update translations [`77a4328`](https://git.odit.services/lfk/frontend/commit/77a432817ef644ff1be8a5ebcd284b7d67f742bd) | ||||||
|  | - fix(donations): Remove paid from anon donations [`31a4ff9`](https://git.odit.services/lfk/frontend/commit/31a4ff9d909742df3ed3d6cecae57870e287afcc) | ||||||
|  | - fix(donations): Move amount to extra line [`edd5da8`](https://git.odit.services/lfk/frontend/commit/edd5da89a7e741d48078125f68b6dd6d3d88a7a1) | ||||||
|  | - refactor(i18n): Shortened translation [`657fb04`](https://git.odit.services/lfk/frontend/commit/657fb04f1b5b439ef5fac834740ba00548b758de) | ||||||
|  | - feat(donation): Use new endpoint for creating anon donations [`e28f543`](https://git.odit.services/lfk/frontend/commit/e28f543d89efff80a84131df59bfb26a5ea92d14) | ||||||
|  | - fix(donations): Translate modal title [`dc1e6b7`](https://git.odit.services/lfk/frontend/commit/dc1e6b7a67c4761a007ffe3b71fd851fb569fb7c) | ||||||
|  | - chore(deps): Bump @odit/lfk-client-js [`cb315d9`](https://git.odit.services/lfk/frontend/commit/cb315d94fd2331bd49aa6d54b9ca0bfbf11f00d9) | ||||||
|  | - feat(shared): Hide link while keeping width [`724e844`](https://git.odit.services/lfk/frontend/commit/724e84441e8b71b7d89a8c3804467edebfd58365) | ||||||
|  |  | ||||||
|  | #### [1.12.0](https://git.odit.services/lfk/frontend/compare/1.11.5...1.12.0) | ||||||
|  |  | ||||||
|  | > 28 April 2025 | ||||||
|  |  | ||||||
|  | - feat: anonymous donations [`9c03e35`](https://git.odit.services/lfk/frontend/commit/9c03e359a4e8f43452475b02bcabcb354987ab75) | ||||||
|  | - refactor: use modern tailwindcss features [`1505080`](https://git.odit.services/lfk/frontend/commit/1505080afdd8b272b76584e2777df732001ce004) | ||||||
|  | - chore(release): 1.12.0 [`5dcb4cb`](https://git.odit.services/lfk/frontend/commit/5dcb4cb508b204c5634804811a9f37db78e764ce) | ||||||
|  |  | ||||||
|  | #### [1.11.5](https://git.odit.services/lfk/frontend/compare/1.11.4...1.11.5) | ||||||
|  |  | ||||||
|  | > 25 April 2025 | ||||||
|  |  | ||||||
|  | - chore(release): 1.11.5 [`8cb6093`](https://git.odit.services/lfk/frontend/commit/8cb6093f0b3474c0952a8a51a47683262fc31f8f) | ||||||
|  | - fix(cards): Update table for edit events [`27396e1`](https://git.odit.services/lfk/frontend/commit/27396e17f2cd8be72c9c8100afe6ec75ac66dceb) | ||||||
|  |  | ||||||
|  | #### [1.11.4](https://git.odit.services/lfk/frontend/compare/1.11.3...1.11.4) | ||||||
|  |  | ||||||
|  | > 25 April 2025 | ||||||
|  |  | ||||||
|  | - feat(CardAssign): styled buttons [`f9993c6`](https://git.odit.services/lfk/frontend/commit/f9993c60f565d7270b3a269e934b42b945c24b99) | ||||||
|  | - chore(release): 1.11.4 [`fefd5c8`](https://git.odit.services/lfk/frontend/commit/fefd5c8237b91ac7fd7ecf467a6feb1100f84811) | ||||||
|  | - feat(CardAssignment): support EAN13 [`8e314f8`](https://git.odit.services/lfk/frontend/commit/8e314f8676e5c189c09a33c9a382a8b984af5e30) | ||||||
|  |  | ||||||
| #### [1.11.3](https://git.odit.services/lfk/frontend/compare/1.11.2...1.11.3) | #### [1.11.3](https://git.odit.services/lfk/frontend/compare/1.11.2...1.11.3) | ||||||
|  |  | ||||||
|  | > 25 April 2025 | ||||||
|  |  | ||||||
| - chore(deps): Updated lock [`bce6d48`](https://git.odit.services/lfk/frontend/commit/bce6d484a9b1d7c40d4575a64ad528da2cc8fb3c) | - chore(deps): Updated lock [`bce6d48`](https://git.odit.services/lfk/frontend/commit/bce6d484a9b1d7c40d4575a64ad528da2cc8fb3c) | ||||||
|  | - chore(release): 1.11.3 [`98a3b07`](https://git.odit.services/lfk/frontend/commit/98a3b072370f029f82f79a75b8f809bc1b41d82f) | ||||||
| - fix(cards): Z-Index for bulk card modal [`efad6fd`](https://git.odit.services/lfk/frontend/commit/efad6fdf2eae12c904575727b61fc61ed8a27d14) | - fix(cards): Z-Index for bulk card modal [`efad6fd`](https://git.odit.services/lfk/frontend/commit/efad6fdf2eae12c904575727b61fc61ed8a27d14) | ||||||
|  |  | ||||||
| #### [1.11.2](https://git.odit.services/lfk/frontend/compare/1.11.1...1.11.2) | #### [1.11.2](https://git.odit.services/lfk/frontend/compare/1.11.1...1.11.2) | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ | |||||||
|  |  | ||||||
|   <body> |   <body> | ||||||
|     <span style="display: none; visibility: hidden" id="buildinfo" |     <span style="display: none; visibility: hidden" id="buildinfo" | ||||||
|       >RELEASE_INFO-1.11.3-RELEASE_INFO</span |       >RELEASE_INFO-1.12.2-RELEASE_INFO</span | ||||||
|     > |     > | ||||||
|     <noscript>You need to enable JavaScript to run this app.</noscript> |     <noscript>You need to enable JavaScript to run this app.</noscript> | ||||||
|     <script src="/env.js"></script> |     <script src="/env.js"></script> | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@odit/lfk-frontend", |   "name": "@odit/lfk-frontend", | ||||||
|   "version": "1.11.3", |   "version": "1.12.2", | ||||||
|   "type": "module", |   "type": "module", | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "i18n-order": "node order.js", |     "i18n-order": "node order.js", | ||||||
| @@ -43,7 +43,7 @@ | |||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@bwip-js/browser": "^4.6.0", |     "@bwip-js/browser": "^4.6.0", | ||||||
|     "@fontsource/athiti": "^5.2.5", |     "@fontsource/athiti": "^5.2.5", | ||||||
|     "@odit/lfk-client-js": "1.2.4", |     "@odit/lfk-client-js": "1.2.5", | ||||||
|     "@paralleldrive/cuid2": "2.2.2", |     "@paralleldrive/cuid2": "2.2.2", | ||||||
|     "@tailwindcss/vite": "^4.1.4", |     "@tailwindcss/vite": "^4.1.4", | ||||||
|     "@tanstack/svelte-table": "8.9.1", |     "@tanstack/svelte-table": "8.9.1", | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							| @@ -15,8 +15,8 @@ importers: | |||||||
|         specifier: ^5.2.5 |         specifier: ^5.2.5 | ||||||
|         version: 5.2.5 |         version: 5.2.5 | ||||||
|       '@odit/lfk-client-js': |       '@odit/lfk-client-js': | ||||||
|         specifier: 1.2.4 |         specifier: 1.2.5 | ||||||
|         version: 1.2.4 |         version: 1.2.5 | ||||||
|       '@paralleldrive/cuid2': |       '@paralleldrive/cuid2': | ||||||
|         specifier: 2.2.2 |         specifier: 2.2.2 | ||||||
|         version: 2.2.2 |         version: 2.2.2 | ||||||
| @@ -491,8 +491,8 @@ packages: | |||||||
|   '@octokit/types@13.10.0': |   '@octokit/types@13.10.0': | ||||||
|     resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==} |     resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==} | ||||||
|  |  | ||||||
|   '@odit/lfk-client-js@1.2.4': |   '@odit/lfk-client-js@1.2.5': | ||||||
|     resolution: {integrity: sha512-eJRsjtpMm/VsQ1v2I+inMWCZmzL+WoOvsA+hj8IGsyCVn0td+z/HAwQ0SuXXNZpLPL3qSlENHXjFNrgztExEgA==} |     resolution: {integrity: sha512-a5vwqpjFXB5cVOCmjC/tZVi9OXJS8aMesNidSqwK2cwA/oC5yTJAqxKXGDhq9k/JLLipVGDJdaKMYmYVzRWkgA==} | ||||||
|  |  | ||||||
|   '@odit/license-exporter@0.2.0': |   '@odit/license-exporter@0.2.0': | ||||||
|     resolution: {integrity: sha512-RRyfQzDLoyLQlGSd8ThJQ3h0fiCe4tkmm935AUvSVQWP+p88FcnI4iaktKBJJVBnIpDhkv/7sDSA5dFc/QMM5w==} |     resolution: {integrity: sha512-RRyfQzDLoyLQlGSd8ThJQ3h0fiCe4tkmm935AUvSVQWP+p88FcnI4iaktKBJJVBnIpDhkv/7sDSA5dFc/QMM5w==} | ||||||
| @@ -2412,7 +2412,7 @@ snapshots: | |||||||
|     dependencies: |     dependencies: | ||||||
|       '@octokit/openapi-types': 24.2.0 |       '@octokit/openapi-types': 24.2.0 | ||||||
|  |  | ||||||
|   '@odit/lfk-client-js@1.2.4': {} |   '@odit/lfk-client-js@1.2.5': {} | ||||||
|  |  | ||||||
|   '@odit/license-exporter@0.2.0': |   '@odit/license-exporter@0.2.0': | ||||||
|     dependencies: |     dependencies: | ||||||
|   | |||||||
| @@ -122,7 +122,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
|   | |||||||
| @@ -115,7 +115,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
|   | |||||||
| @@ -109,7 +109,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
| @@ -162,7 +162,7 @@ | |||||||
|                       name="enabled" |                       name="enabled" | ||||||
|                       type="checkbox" |                       type="checkbox" | ||||||
|                       checked={editable.enabled} |                       checked={editable.enabled} | ||||||
|                       class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" |                       class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded" | ||||||
|                     /> |                     /> | ||||||
|                     {$_("this-card-is")} |                     {$_("this-card-is")} | ||||||
|                     {#if editable.enabled} |                     {#if editable.enabled} | ||||||
|   | |||||||
| @@ -180,11 +180,9 @@ | |||||||
|     bind:runner |     bind:runner | ||||||
|     bind:editable |     bind:editable | ||||||
|     bind:original_data |     bind:original_data | ||||||
|     on:dataUpdated={(event) => { |     on:dataUpdated={(editevent) => { | ||||||
|       current_cards[ |       console.log(editevent.detail.card) | ||||||
|         current_cards.findIndex((c) => c.id === event.detail.card.id) |       current_cards = current_cards.filter((c) => c.id !== editevent.detail.card.id).concat([editevent.detail.card]).sort((a, b) => a.code - b.code); | ||||||
|       ] = event.detail.card; |  | ||||||
|       current_cards = current_cards; |  | ||||||
|       options.update((options) => ({ |       options.update((options) => ({ | ||||||
|         ...options, |         ...options, | ||||||
|         data: current_cards, |         data: current_cards, | ||||||
|   | |||||||
| @@ -65,7 +65,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
|   | |||||||
| @@ -167,7 +167,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
| @@ -345,7 +345,7 @@ | |||||||
|                       id="comments" |                       id="comments" | ||||||
|                       name="comments" |                       name="comments" | ||||||
|                       type="checkbox" |                       type="checkbox" | ||||||
|                       class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" |                       class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded" | ||||||
|                     /> |                     /> | ||||||
|                   </div> |                   </div> | ||||||
|                   <div class="ml-3 text-sm"> |                   <div class="ml-3 text-sm"> | ||||||
|   | |||||||
| @@ -300,7 +300,7 @@ | |||||||
| 					id="comments" | 					id="comments" | ||||||
| 					name="comments" | 					name="comments" | ||||||
| 					type="checkbox" | 					type="checkbox" | ||||||
| 					class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" | 					class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded" | ||||||
| 				/> | 				/> | ||||||
| 			</div> | 			</div> | ||||||
| 			<div class="ml-3 text-sm"> | 			<div class="ml-3 text-sm"> | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ | |||||||
| 	$: runner = 0; | 	$: runner = 0; | ||||||
| 	$: donors = []; | 	$: donors = []; | ||||||
| 	$: runners = []; | 	$: runners = []; | ||||||
|   $: is_fixed = false; | 	$: type = "distance"; | ||||||
| 	$: is_paid = false; | 	$: is_paid = false; | ||||||
| 	$: amount_input = 0; | 	$: amount_input = 0; | ||||||
| 	$: processed_last_submit = true; | 	$: processed_last_submit = true; | ||||||
| @@ -46,7 +46,7 @@ | |||||||
| 			let amount_cent = Math.floor(amount_input * 100); | 			let amount_cent = Math.floor(amount_input * 100); | ||||||
| 			processed_last_submit = false; | 			processed_last_submit = false; | ||||||
| 			toast.loading($_("adding-donation")); | 			toast.loading($_("adding-donation")); | ||||||
|       if (is_fixed) { | 			if (type === "fixed") { | ||||||
| 				let postdata = { | 				let postdata = { | ||||||
| 					donor, | 					donor, | ||||||
| 					amount: amount_cent, | 					amount: amount_cent, | ||||||
| @@ -72,7 +72,26 @@ | |||||||
| 					.finally(() => { | 					.finally(() => { | ||||||
| 						processed_last_submit = true; | 						processed_last_submit = true; | ||||||
| 					}); | 					}); | ||||||
|       } else { | 			} else if (type === "anonymous") { | ||||||
|  | 				let postdata = { | ||||||
|  | 					amount: amount_cent, | ||||||
|  | 				}; | ||||||
|  | 				DonationService.donationControllerPostAnonymous(postdata) | ||||||
|  | 					.then((result) => { | ||||||
|  | 						amount_input = 0; | ||||||
|  | 						modal_open = false; | ||||||
|  | 						// | ||||||
|  | 						toast.dismiss(); | ||||||
|  | 						toast.success($_("donation_added")); | ||||||
|  | 						dispatch("created", { donations: [result] }); | ||||||
|  | 					}) | ||||||
|  | 					.catch((err) => { | ||||||
|  | 						// | ||||||
|  | 					}) | ||||||
|  | 					.finally(() => { | ||||||
|  | 						processed_last_submit = true; | ||||||
|  | 					}); | ||||||
|  | 			} else if (type === "distance") { | ||||||
| 				let postdata = { | 				let postdata = { | ||||||
| 					donor, | 					donor, | ||||||
| 					runner, | 					runner, | ||||||
| @@ -100,16 +119,12 @@ | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	onMount(async () => { | 	onMount(async () => { | ||||||
|     donors = (await DonorService.donorControllerGetAll()).map( | 		donors = (await DonorService.donorControllerGetAll()).map((r) => { | ||||||
|       (r) => { |  | ||||||
| 			return { label: getDonorLabel(r), value: r }; | 			return { label: getDonorLabel(r), value: r }; | ||||||
|       } | 		}); | ||||||
|     ); | 		runners = (await RunnerService.runnerControllerGetAll()).map((r) => { | ||||||
|     runners = (await RunnerService.runnerControllerGetAll()).map( |  | ||||||
|       (r) => { |  | ||||||
| 			return { label: getDonorLabel(r), value: r }; | 			return { label: getDonorLabel(r), value: r }; | ||||||
|       } | 		}); | ||||||
|     ); |  | ||||||
| 	}); | 	}); | ||||||
| </script> | </script> | ||||||
|  |  | ||||||
| @@ -126,7 +141,7 @@ | |||||||
| 		> | 		> | ||||||
| 			<div class="fixed inset-0 transition-opacity" aria-hidden="true"> | 			<div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||||
| 				<div | 				<div | ||||||
|           class="absolute inset-0 bg-gray-500 opacity-75" | 					class="absolute inset-0 bg-neutral-500 opacity-75" | ||||||
| 					data-id="modal_backdrop" | 					data-id="modal_backdrop" | ||||||
| 				/> | 				/> | ||||||
| 			</div> | 			</div> | ||||||
| @@ -146,7 +161,7 @@ | |||||||
| 							class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | 							class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
| 						> | 						> | ||||||
| 							<svg | 							<svg | ||||||
|                 class="h-6 w-6 text-blue-600" | 								class="size-6 text-blue-600" | ||||||
| 								fill="currentColor" | 								fill="currentColor" | ||||||
| 								xmlns="http://www.w3.org/2000/svg" | 								xmlns="http://www.w3.org/2000/svg" | ||||||
| 								viewBox="0 0 24 24" | 								viewBox="0 0 24 24" | ||||||
| @@ -159,40 +174,97 @@ | |||||||
| 							> | 							> | ||||||
| 						</div> | 						</div> | ||||||
| 						<div class="mt-3"> | 						<div class="mt-3"> | ||||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> |               <h3 class="text-xl leading-6 font-medium text-neutral-900"> | ||||||
|                 {#if is_fixed} |                 {$_("add-donation")} | ||||||
|                   {$_("create-a-new-fixed-donation")} |  | ||||||
|                 {:else}{$_("create-a-new-distance-donation")}{/if} |  | ||||||
|               </h3> |               </h3> | ||||||
|               <label class="content-center align-middle object-center"> | 							<nav | ||||||
|                 <span class="text-base" class:text-gray-300={is_fixed} | 								class="relative z-0 flex border border-neutral-200 rounded-xl overflow-hidden mb-2" | ||||||
|                   >{$_("distance-donation")}</span |  | ||||||
| 							> | 							> | ||||||
|                 <input | 								<button | ||||||
|                   class="toggle relative w-10 h-5 transition-all duration-200 ease-in-out bg-gray-400 rounded-full shadow-inner outline-none appearance-none align-middle" | 									on:click={() => { | ||||||
|                   type="checkbox" | 										type = "distance"; | ||||||
|                   bind:checked={is_fixed} | 									}} | ||||||
|                 /> | 									type="button" | ||||||
|                 <span class="ml-2 text-base" class:text-gray-300={!is_fixed} | 									id="bar-with-underline-item-1" | ||||||
|                   >{$_("fixed-donation")}</span | 									class:donation_active_tab={type === "distance"} | ||||||
|  | 									class:donation_inactive_tab={type !== "distance"} | ||||||
|  | 									aria-selected={type === "distance"} | ||||||
|  | 									role="tab" | ||||||
| 								> | 								> | ||||||
|               </label> | 									{$_("spende_pro_km")} | ||||||
|               <div class="mb-6"> | 								</button> | ||||||
|                 <p class="text-sm text-gray-500"> | 								<button | ||||||
|                   {$_( | 									on:click={() => { | ||||||
|                     "please-provide-the-nessecary-information-to-create-a-new-donation" | 										type = "fixed"; | ||||||
|                   )} | 									}} | ||||||
|                 </p> | 									type="button" | ||||||
|               </div> | 									id="bar-with-underline-item-2" | ||||||
|  | 									class:donation_active_tab={type === "fixed"} | ||||||
|  | 									class:donation_inactive_tab={type !== "fixed"} | ||||||
|  | 									aria-selected={type === "fixed"} | ||||||
|  | 									role="tab" | ||||||
|  | 								> | ||||||
|  | 									{$_("festbetrag")} | ||||||
|  | 								</button> | ||||||
|  | 								<button | ||||||
|  | 									on:click={() => { | ||||||
|  | 										type = "anonymous"; | ||||||
|  | 									}} | ||||||
|  | 									type="button" | ||||||
|  | 									id="bar-with-underline-item-3" | ||||||
|  | 									class:donation_active_tab={type === "anonymous"} | ||||||
|  | 									class:donation_inactive_tab={type !== "anonymous"} | ||||||
|  | 									aria-selected={type === "anonymous"} | ||||||
|  | 									role="tab" | ||||||
|  | 								> | ||||||
|  | 									{$_("anonyme_spende")} | ||||||
|  | 								</button> | ||||||
|  | 							</nav> | ||||||
|  |  | ||||||
| 							<div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> | 							<div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> | ||||||
|  | 								{#if type === "anonymous"} | ||||||
|  | 									<div class="col-span-6"> | ||||||
|  | 										<label | ||||||
|  | 											for="donation_amount_eur" | ||||||
|  | 											class="block text-sm font-medium text-neutral-900" | ||||||
|  | 										> | ||||||
|  | 											{$_("donation-amount")}</label | ||||||
|  | 										> | ||||||
|  | 										<div class="mt-1 flex rounded-md shadow-sm"> | ||||||
|  | 											<input | ||||||
|  | 												autocomplete="off" | ||||||
|  | 												class:border-red-500={!is_amount_valid} | ||||||
|  | 												class:focus:border-red-500={!is_amount_valid} | ||||||
|  | 												class:focus:ring-red-500={!is_amount_valid} | ||||||
|  | 												bind:value={amount_input} | ||||||
|  | 												type="number" | ||||||
|  | 												step="0.01" | ||||||
|  | 												name="donation_amount_eur" | ||||||
|  | 												class="focus:ring-indigo-500 focus:border-indigo-500 flex-1 block w-full rounded-none rounded-l-md sm:text-sm border-neutral-300 border bg-neutral-50 text-neutral-800 p-2" | ||||||
|  | 												placeholder="2.00" | ||||||
|  | 											/> | ||||||
|  | 											<span | ||||||
|  | 												class="inline-flex items-center px-3 rounded-r-md border border-neutral-300 bg-neutral-50 text-neutral-500 text-sm" | ||||||
|  | 												>€</span | ||||||
|  | 											> | ||||||
|  | 										</div> | ||||||
|  | 										{#if !is_amount_valid} | ||||||
|  | 											<span | ||||||
|  | 												class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1" | ||||||
|  | 											> | ||||||
|  | 												{$_("donation-amount-must-be-greater-that-0-00eur")} | ||||||
|  | 											</span> | ||||||
|  | 										{/if} | ||||||
|  | 									</div> | ||||||
|  | 								{:else} | ||||||
| 									<div class="col-span-6"> | 									<div class="col-span-6"> | ||||||
| 										<label | 										<label | ||||||
| 											for="donor" | 											for="donor" | ||||||
|                     class="block text-sm font-medium text-gray-700" | 											class="block text-sm font-medium text-neutral-900" | ||||||
| 											>{$_("donor")}</label | 											>{$_("donor")}</label | ||||||
| 										> | 										> | ||||||
| 										<Select | 										<Select | ||||||
|                     containerClasses="rounded-l-md mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm sm:text-sm border-gray-300 border bg-gray-50 text-neutral-800 rounded-md p-2" | 											containerClasses="rounded-l-md mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm sm:text-sm border-neutral-300 border bg-neutral-50 text-neutral-800 rounded-md p-2" | ||||||
| 											itemFilter={(label, filterText, option) => | 											itemFilter={(label, filterText, option) => | ||||||
| 												filterDonors(label, filterText, option)} | 												filterDonors(label, filterText, option)} | ||||||
| 											items={donors} | 											items={donors} | ||||||
| @@ -204,15 +276,15 @@ | |||||||
| 											on:clear={() => (donors = null)} | 											on:clear={() => (donors = null)} | ||||||
| 										/> | 										/> | ||||||
| 									</div> | 									</div> | ||||||
|                 {#if !is_fixed} | 									{#if type === "distance"} | ||||||
| 										<div class="col-span-6"> | 										<div class="col-span-6"> | ||||||
| 											<label | 											<label | ||||||
| 												for="donor" | 												for="donor" | ||||||
|                       class="block text-sm font-medium text-gray-700" | 												class="block text-sm font-medium text-neutral-900" | ||||||
| 												>{$_("runner")}</label | 												>{$_("runner")}</label | ||||||
| 											> | 											> | ||||||
| 											<Select | 											<Select | ||||||
|                       containerClasses="rounded-l-md mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm sm:text-sm border-gray-300 border bg-gray-50 text-neutral-800 rounded-md p-2" | 												containerClasses="rounded-l-md mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm sm:text-sm border-neutral-300 border bg-neutral-50 text-neutral-800 rounded-md p-2" | ||||||
| 												itemFilter={(label, filterText, option) => | 												itemFilter={(label, filterText, option) => | ||||||
| 													filterDonors(label, filterText, option)} | 													filterDonors(label, filterText, option)} | ||||||
| 												items={runners} | 												items={runners} | ||||||
| @@ -228,11 +300,11 @@ | |||||||
| 									<div class="col-span-6"> | 									<div class="col-span-6"> | ||||||
| 										<label | 										<label | ||||||
| 											for="donation_amount_eur" | 											for="donation_amount_eur" | ||||||
|                     class="block text-sm font-medium text-gray-700" | 											class="block text-sm font-medium text-neutral-900" | ||||||
| 										> | 										> | ||||||
|                     {#if !is_fixed} | 											{#if type === "fixed"} | ||||||
|                       {$_("amount-per-kilometer")} | 												{$_("donation-amount")} | ||||||
|                     {:else}{$_("donation-amount")}{/if}</label | 											{:else}{$_("amount-per-kilometer")}{/if}</label | ||||||
| 										> | 										> | ||||||
| 										<div class="mt-1 flex rounded-md shadow-sm"> | 										<div class="mt-1 flex rounded-md shadow-sm"> | ||||||
| 											<input | 											<input | ||||||
| @@ -244,11 +316,11 @@ | |||||||
| 												type="number" | 												type="number" | ||||||
| 												step="0.01" | 												step="0.01" | ||||||
| 												name="donation_amount_eur" | 												name="donation_amount_eur" | ||||||
|                       class="focus:ring-indigo-500 focus:border-indigo-500 flex-1 block w-full rounded-none rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-neutral-800 p-2" | 												class="focus:ring-indigo-500 focus:border-indigo-500 flex-1 block w-full rounded-none rounded-l-md sm:text-sm border-neutral-300 border bg-neutral-50 text-neutral-800 p-2" | ||||||
| 												placeholder="2.00" | 												placeholder="2.00" | ||||||
| 											/> | 											/> | ||||||
| 											<span | 											<span | ||||||
|                       class="inline-flex items-center px-3 rounded-r-md border border-gray-300 bg-gray-50 text-gray-500 text-sm" | 												class="inline-flex items-center px-3 rounded-r-md border border-neutral-300 bg-neutral-50 text-neutral-500 text-sm" | ||||||
| 												>€</span | 												>€</span | ||||||
| 											> | 											> | ||||||
| 										</div> | 										</div> | ||||||
| @@ -260,36 +332,29 @@ | |||||||
| 											</span> | 											</span> | ||||||
| 										{/if} | 										{/if} | ||||||
| 									</div> | 									</div> | ||||||
|                 {#if is_fixed} | 								{/if} | ||||||
|                   <div class="col-span-6"> | 								{#if type === "fixed"} | ||||||
|  | 									<div class="flex"> | ||||||
|  | 										<input | ||||||
|  | 											bind:checked={is_paid} | ||||||
|  | 											type="checkbox" | ||||||
|  | 											class="shrink-0 mt-0.5 border-neutral-200 rounded-sm text-blue-600 focus:ring-blue-500 checked:border-blue-500 disabled:opacity-50 disabled:pointer-events-none" | ||||||
|  | 											id="hs-default-checkbox" | ||||||
|  | 										/> | ||||||
| 										<label | 										<label | ||||||
|                       for="paid" | 											for="hs-default-checkbox" | ||||||
|                       class="block text-sm font-medium text-gray-700" | 											class="text-base text-neutral-900 ms-2 font-medium" | ||||||
| 											>{$_("already-paid")}</label | 											>{$_("already-paid")}</label | ||||||
| 										> | 										> | ||||||
|                     <p class="text-gray-500"> |  | ||||||
|                       <input |  | ||||||
|                         id="paid" |  | ||||||
|                         bind:checked={is_paid} |  | ||||||
|                         name="paid" |  | ||||||
|                         type="checkbox" |  | ||||||
|                         class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" |  | ||||||
|                       /> |  | ||||||
|                       <span class="align-text-bottom"> |  | ||||||
|                         {#if is_paid} |  | ||||||
|                           {$_("paid")} |  | ||||||
|                         {:else} |  | ||||||
|                           {$_("open")} |  | ||||||
|                         {/if} |  | ||||||
|                       </span> |  | ||||||
|                     </p> |  | ||||||
| 									</div> | 									</div> | ||||||
| 								{/if} | 								{/if} | ||||||
| 							</div> | 							</div> | ||||||
| 						</div> | 						</div> | ||||||
| 					</div> | 					</div> | ||||||
| 				</div> | 				</div> | ||||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | 				<div | ||||||
|  | 					class="bg-neutral-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10" | ||||||
|  | 				> | ||||||
| 					<button | 					<button | ||||||
| 						disabled={!createbtnenabled} | 						disabled={!createbtnenabled} | ||||||
| 						class:opacity-50={!createbtnenabled} | 						class:opacity-50={!createbtnenabled} | ||||||
| @@ -304,7 +369,7 @@ | |||||||
| 							modal_open = false; | 							modal_open = false; | ||||||
| 						}} | 						}} | ||||||
| 						type="button" | 						type="button" | ||||||
|             class="w-full justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 hidden lg:block" | 						class="w-full justify-center rounded-md border border-neutral-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-neutral-900 hover:bg-neutral-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 hidden lg:block" | ||||||
| 					> | 					> | ||||||
| 						{$_("cancel")} | 						{$_("cancel")} | ||||||
| 					</button> | 					</button> | ||||||
| @@ -313,28 +378,3 @@ | |||||||
| 		</div> | 		</div> | ||||||
| 	</div> | 	</div> | ||||||
| {/if} | {/if} | ||||||
|  |  | ||||||
| <style> |  | ||||||
|   .toggle:before { |  | ||||||
|     content: ""; |  | ||||||
|     position: absolute; |  | ||||||
|     width: 1.25rem; |  | ||||||
|     height: 1.25rem; |  | ||||||
|     border-radius: 50%; |  | ||||||
|     top: 0; |  | ||||||
|     left: 0; |  | ||||||
|     transform: scale(1.1); |  | ||||||
|     box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.2); |  | ||||||
|     background-color: white; |  | ||||||
|     transition: 0.2s ease-in-out; |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   .toggle:checked { |  | ||||||
|     /* @apply: bg-indigo-400; */ |  | ||||||
|     background-color: #7f9cf5; |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   .toggle:checked:before { |  | ||||||
|     left: 1.25rem; |  | ||||||
|   } |  | ||||||
| </style> |  | ||||||
|   | |||||||
| @@ -107,7 +107,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
|   | |||||||
| @@ -13,6 +13,7 @@ | |||||||
|       firstname: "", |       firstname: "", | ||||||
|       lastname: "", |       lastname: "", | ||||||
|     }, |     }, | ||||||
|  |     amount: 0, | ||||||
|   }; |   }; | ||||||
|   const dispatch = createEventDispatcher(); |   const dispatch = createEventDispatcher(); | ||||||
|   onMount(() => { |   onMount(() => { | ||||||
| @@ -68,7 +69,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
| @@ -86,8 +87,12 @@ | |||||||
|               </h3> |               </h3> | ||||||
|               <div class="w-full"> |               <div class="w-full"> | ||||||
|                 <span class="inline-block" |                 <span class="inline-block" | ||||||
|                   ><b>{$_("donor")}</b>: {delete_donation.donor.firstname} |                   >{#if delete_donation.donor}<b>{$_("donor")}</b>: {delete_donation.donor.firstname} | ||||||
|                   {delete_donation.donor.lastname}</span |                   {delete_donation.donor.lastname}{:else}{$_("anonymer_sponsor")}{/if} | ||||||
|  |                   <br> | ||||||
|  |                   <b>{$_("amount")}</b>: {`${(delete_donation.amount / 100) | ||||||
|  |           .toFixed(2) | ||||||
|  |           .toLocaleString("de-DE", { valute: "EUR" })}€`}</span | ||||||
|                 > |                 > | ||||||
|               </div> |               </div> | ||||||
|             </div> |             </div> | ||||||
|   | |||||||
| @@ -4,7 +4,10 @@ | |||||||
| </script> | </script> | ||||||
|  |  | ||||||
| {#if !donor || donor.firstname == 0} | {#if !donor || donor.firstname == 0} | ||||||
|   {$_("donor-has-no-associated-donations")} | 	<span | ||||||
|  | 		class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-gray-100 text-gray-800 border border-current" | ||||||
|  | 		>{$_('anonymer_sponsor')}</span | ||||||
|  | 	> | ||||||
| {:else} | {:else} | ||||||
| 	<div class="flex items-center"> | 	<div class="flex items-center"> | ||||||
| 		<a | 		<a | ||||||
|   | |||||||
| @@ -9,10 +9,15 @@ | |||||||
|   export let paymentAction; |   export let paymentAction; | ||||||
| </script> | </script> | ||||||
|  |  | ||||||
|  | {#if paymentAction} | ||||||
| <button | <button | ||||||
|   on:click={paymentAction} |   on:click={paymentAction} | ||||||
|   class="text-[#025a21] hover:text-green-900 mr-4">{$_("enter-payment")}</button |   class="text-[#025a21] hover:text-green-900 mr-4">{$_("enter-payment")}</button | ||||||
| > | > | ||||||
|  | {:else} | ||||||
|  | <span class="inline-block opacity-0 cursor-default mr-4" style="">{$_("enter-payment")}</span> | ||||||
|  |  | ||||||
|  | {/if} | ||||||
| <TableActions | <TableActions | ||||||
|   bind:detailsAction |   bind:detailsAction | ||||||
|   bind:detailsLink |   bind:detailsLink | ||||||
|   | |||||||
| @@ -112,18 +112,25 @@ | |||||||
|       accessorKey: "actions", |       accessorKey: "actions", | ||||||
|       header: () => $_("action"), |       header: () => $_("action"), | ||||||
|       cell: (info) => { |       cell: (info) => { | ||||||
|  |         let detailsLink | ||||||
|  |         let paymentAction | ||||||
|  |         if (info.row.original.donor != undefined){ | ||||||
|  |           detailsLink = `./${info.row.original.id}` | ||||||
|  |           paymentAction = () => { | ||||||
|  |             active_edits = current_donations.filter( | ||||||
|  |               (r) => r.id == info.row.original.id | ||||||
|  |             ); | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |          | ||||||
|         return renderComponent(DonationTableAction, { |         return renderComponent(DonationTableAction, { | ||||||
|           detailsLink: `./${info.row.original.id}`, |           detailsLink: detailsLink, | ||||||
|           deleteAction: () => { |           deleteAction: () => { | ||||||
|             active_deletes = current_donations.filter( |             active_deletes = current_donations.filter( | ||||||
|               (r) => r.id == info.row.original.id |               (r) => r.id == info.row.original.id | ||||||
|             ); |             ); | ||||||
|           }, |           }, | ||||||
|           paymentAction: () => { |           paymentAction: paymentAction, | ||||||
|             active_edits = current_donations.filter( |  | ||||||
|               (r) => r.id == info.row.original.id |  | ||||||
|             ); |  | ||||||
|           }, |  | ||||||
|           deleteEnabled: |           deleteEnabled: | ||||||
|             store.state.jwtinfo.userdetails.permissions.includes( |             store.state.jwtinfo.userdetails.permissions.includes( | ||||||
|               "DONATION:DELETE" |               "DONATION:DELETE" | ||||||
|   | |||||||
| @@ -155,7 +155,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
| @@ -309,7 +309,7 @@ | |||||||
|                       id="comments" |                       id="comments" | ||||||
|                       name="comments" |                       name="comments" | ||||||
|                       type="checkbox" |                       type="checkbox" | ||||||
|                       class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" |                       class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded" | ||||||
|                     /> |                     /> | ||||||
|                   </div> |                   </div> | ||||||
|                   <div class="ml-3 text-sm"> |                   <div class="ml-3 text-sm"> | ||||||
|   | |||||||
| @@ -45,7 +45,7 @@ | |||||||
| 							class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | 							class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
| 						> | 						> | ||||||
| 							<svg | 							<svg | ||||||
| 								class="h-6 w-6 text-blue-600" | 								class="size-6 text-blue-600" | ||||||
| 								fill="currentColor" | 								fill="currentColor" | ||||||
| 								xmlns="http://www.w3.org/2000/svg" | 								xmlns="http://www.w3.org/2000/svg" | ||||||
| 								viewBox="0 0 24 24" | 								viewBox="0 0 24 24" | ||||||
|   | |||||||
| @@ -314,7 +314,7 @@ | |||||||
| 					id="comments" | 					id="comments" | ||||||
| 					name="comments" | 					name="comments" | ||||||
| 					type="checkbox" | 					type="checkbox" | ||||||
| 					class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" | 					class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded" | ||||||
| 				/> | 				/> | ||||||
| 			</div> | 			</div> | ||||||
| 			<div class="ml-3"> | 			<div class="ml-3"> | ||||||
|   | |||||||
| @@ -56,7 +56,7 @@ | |||||||
| 						> | 						> | ||||||
| 							<svg | 							<svg | ||||||
| 								fill="currentColor" | 								fill="currentColor" | ||||||
| 								class="h-6 w-6 text-blue-600" | 								class="size-6 text-blue-600" | ||||||
| 								xmlns="http://www.w3.org/2000/svg" | 								xmlns="http://www.w3.org/2000/svg" | ||||||
| 								viewBox="0 0 24 24" | 								viewBox="0 0 24 24" | ||||||
| 								width="24" | 								width="24" | ||||||
|   | |||||||
| @@ -1,16 +1,111 @@ | |||||||
| <script> | <script> | ||||||
| 	import { _ } from "svelte-i18n"; |   import { _, time } from "svelte-i18n"; | ||||||
|   import { RunnerCardService, RunnerService } from "@odit/lfk-client-js"; |   import { RunnerCardService, RunnerService } from "@odit/lfk-client-js"; | ||||||
|   import QrCodeScanner from "./QrCodeScanner.svelte"; |   import QrCodeScanner from "./QrCodeScanner.svelte"; | ||||||
|  |   import { onMount } from "svelte"; | ||||||
|   let state = "scan_runner"; |   let state = "scan_runner"; | ||||||
|   let runnerinfo = { id: 0, firstname: "", lastname: "" }; |   let runnerinfo = { id: 0, firstname: "", lastname: "" }; | ||||||
|   let cardCode = ""; |   let cardCode = ""; | ||||||
|   let scannerActive = true; |   let scannerActive = true; | ||||||
|  |   let barcodeInput; | ||||||
|  |   let nextButton; | ||||||
|  |   let tryAgainButton; | ||||||
|  |  | ||||||
|   function resetAll() { |   function resetAll() { | ||||||
|     state = "scan_runner"; |     state = "scan_runner"; | ||||||
|     runnerinfo = { id: 0, firstname: "", lastname: "" }; |     runnerinfo = { id: 0, firstname: "", lastname: "" }; | ||||||
|     cardCode = ""; |     cardCode = ""; | ||||||
|     scannerActive = true; |     scannerActive = true; | ||||||
|  |     setTimeout(() => { | ||||||
|  |       barcodeInput && barcodeInput.focus(); | ||||||
|  |     }, 100); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   onMount(() => { | ||||||
|  |     if (barcodeInput) { | ||||||
|  |       barcodeInput.focus(); | ||||||
|  |     } | ||||||
|  |   }); | ||||||
|  |  | ||||||
|  |   function handleInput(input) { | ||||||
|  |     if (runnerinfo.id === 0) { | ||||||
|  |       new Audio("/beep.mp3").play(); | ||||||
|  |       if (input.includes("https://portal.lauf-fuer-kaya.de/profile/")) { | ||||||
|  |         const runnerID = JSON.parse( | ||||||
|  |           atob( | ||||||
|  |             input | ||||||
|  |               .replace("https://portal.lauf-fuer-kaya.de/profile/", "") | ||||||
|  |               .split(".")[1] | ||||||
|  |           ) | ||||||
|  |         ).id; | ||||||
|  |         RunnerService.runnerControllerGetOne(runnerID) | ||||||
|  |           .then((runner) => { | ||||||
|  |             runnerinfo = runner; | ||||||
|  |           }) | ||||||
|  |           .catch((e) => { | ||||||
|  |             console.error(e); | ||||||
|  |             state = "error_runner"; | ||||||
|  |             setTimeout(() => { | ||||||
|  |               tryAgainButton && tryAgainButton.focus(); | ||||||
|  |             }, 100); | ||||||
|  |             // resetAll(); | ||||||
|  |           }); | ||||||
|  |       } else { | ||||||
|  |         const runnerID = parseInt(input); | ||||||
|  |         RunnerService.runnerControllerGetOne(runnerID) | ||||||
|  |           .then((runner) => { | ||||||
|  |             runnerinfo = runner; | ||||||
|  |           }) | ||||||
|  |           .catch((e) => { | ||||||
|  |             console.error(e); | ||||||
|  |             state = "error_runner"; | ||||||
|  |             setTimeout(() => { | ||||||
|  |               tryAgainButton && tryAgainButton.focus(); | ||||||
|  |             }, 100); | ||||||
|  |             // resetAll(); | ||||||
|  |           }); | ||||||
|  |       } | ||||||
|  |     } else { | ||||||
|  |       if (`${input}`.length > 10) { | ||||||
|  |         cardCode = input; | ||||||
|  |         new Audio("/beep.mp3").play(); | ||||||
|  |         state = "assigning"; | ||||||
|  |         RunnerCardService.runnerCardControllerGetAll() | ||||||
|  |           .then((cards) => { | ||||||
|  |             // console.log(cards); | ||||||
|  |             const card = cards.find((c) => c.code === cardCode); | ||||||
|  |             if (card) { | ||||||
|  |               console.log("card found", card); | ||||||
|  |               RunnerCardService.runnerCardControllerPut(card.id, { | ||||||
|  |                 enabled: true, | ||||||
|  |                 id: card.id, | ||||||
|  |                 runner: runnerinfo.id, | ||||||
|  |               }) | ||||||
|  |                 .then(() => { | ||||||
|  |                   state = "done"; | ||||||
|  |                   setTimeout(() => { | ||||||
|  |                     nextButton && nextButton.focus(); | ||||||
|  |                   }, 100); | ||||||
|  |                 }) | ||||||
|  |                 .catch(() => { | ||||||
|  |                   state = "error_card"; | ||||||
|  |                   scannerActive = false; | ||||||
|  |                   setTimeout(() => { | ||||||
|  |                     tryAgainButton && tryAgainButton.focus(); | ||||||
|  |                   }, 100); | ||||||
|  |                 }); | ||||||
|  |             } else { | ||||||
|  |               console.log("card not found"); | ||||||
|  |               // scannerActive = true; | ||||||
|  |               state = "error_card"; | ||||||
|  |               scannerActive = false; | ||||||
|  |             } | ||||||
|  |           }) | ||||||
|  |           .catch(() => { | ||||||
|  |             scannerActive = true; | ||||||
|  |           }); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|   } |   } | ||||||
| </script> | </script> | ||||||
|  |  | ||||||
| @@ -257,6 +352,7 @@ | |||||||
|         on:click={() => { |         on:click={() => { | ||||||
|           resetAll(); |           resetAll(); | ||||||
|         }} |         }} | ||||||
|  |         bind:this={nextButton} | ||||||
|         type="button" |         type="button" | ||||||
|         class="py-3 px-4 inline-flex items-center gap-x-2 text-sm font-medium rounded-lg border border-transparent bg-blue-100 text-blue-800 hover:bg-blue-200 focus:outline-hidden focus:bg-blue-200 disabled:opacity-50 disabled:pointer-events-none dark:text-blue-500 dark:bg-blue-800/30 dark:hover:bg-blue-800/20 dark:focus:bg-blue-800/20 mt-2" |         class="py-3 px-4 inline-flex items-center gap-x-2 text-sm font-medium rounded-lg border border-transparent bg-blue-100 text-blue-800 hover:bg-blue-200 focus:outline-hidden focus:bg-blue-200 disabled:opacity-50 disabled:pointer-events-none dark:text-blue-500 dark:bg-blue-800/30 dark:hover:bg-blue-800/20 dark:focus:bg-blue-800/20 mt-2" | ||||||
|       > |       > | ||||||
| @@ -307,6 +403,7 @@ | |||||||
|         on:click={() => { |         on:click={() => { | ||||||
|           resetAll(); |           resetAll(); | ||||||
|         }} |         }} | ||||||
|  |         bind:this={tryAgainButton} | ||||||
|         type="button" |         type="button" | ||||||
|         class="py-3 px-4 inline-flex items-center gap-x-2 text-sm font-medium rounded-lg border border-transparent bg-blue-100 text-blue-800 hover:bg-blue-200 focus:outline-hidden focus:bg-blue-200 disabled:opacity-50 disabled:pointer-events-none dark:text-blue-500 dark:bg-blue-800/30 dark:hover:bg-blue-800/20 dark:focus:bg-blue-800/20 mt-2" |         class="py-3 px-4 inline-flex items-center gap-x-2 text-sm font-medium rounded-lg border border-transparent bg-blue-100 text-blue-800 hover:bg-blue-200 focus:outline-hidden focus:bg-blue-200 disabled:opacity-50 disabled:pointer-events-none dark:text-blue-500 dark:bg-blue-800/30 dark:hover:bg-blue-800/20 dark:focus:bg-blue-800/20 mt-2" | ||||||
|       > |       > | ||||||
| @@ -389,84 +486,36 @@ | |||||||
|         :paused={!scannerActive} |         :paused={!scannerActive} | ||||||
|         on:detect={(e) => { |         on:detect={(e) => { | ||||||
|           if (scannerActive) { |           if (scannerActive) { | ||||||
|  |             if (`${e.detail.decodedText}`.length === 13) { | ||||||
|  |               e.detail.decodedText = e.detail.decodedText.substring( | ||||||
|  |                 0, | ||||||
|  |                 e.detail.decodedText.length - 1 | ||||||
|  |               ); | ||||||
|  |             } | ||||||
|             scannerActive = false; |             scannerActive = false; | ||||||
|             console.log({ type: "DETECT", code: e.detail.decodedText }); |             console.log({ type: "DETECT", code: e.detail.decodedText }); | ||||||
| 						if (runnerinfo.id === 0) { |             handleInput(e.detail.decodedText); | ||||||
| 							new Audio("/beep.mp3").play(); |  | ||||||
| 							if ( |  | ||||||
| 								e.detail.decodedText.includes( |  | ||||||
| 									"https://portal.lauf-fuer-kaya.de/profile/" |  | ||||||
| 								) |  | ||||||
| 							) { |  | ||||||
| 								const runnerID = JSON.parse( |  | ||||||
| 									atob( |  | ||||||
| 										e.detail.decodedText |  | ||||||
| 											.replace("https://portal.lauf-fuer-kaya.de/profile/", "") |  | ||||||
| 											.split(".")[1] |  | ||||||
| 									) |  | ||||||
| 								).id; |  | ||||||
| 								RunnerService.runnerControllerGetOne(runnerID) |  | ||||||
| 									.then((runner) => { |  | ||||||
| 										runnerinfo = runner; |  | ||||||
| 									}) |  | ||||||
| 									.catch((e) => { |  | ||||||
| 										console.error(e); |  | ||||||
| 										state = "error_runner"; |  | ||||||
| 										// resetAll(); |  | ||||||
| 									}); |  | ||||||
| 							} else { |  | ||||||
| 								const runnerID = parseInt(e.detail.decodedText); |  | ||||||
| 								RunnerService.runnerControllerGetOne(runnerID) |  | ||||||
| 									.then((runner) => { |  | ||||||
| 										runnerinfo = runner; |  | ||||||
| 									}) |  | ||||||
| 									.catch((e) => { |  | ||||||
| 										console.error(e); |  | ||||||
| 										state = "error_runner"; |  | ||||||
| 										// resetAll(); |  | ||||||
| 									}); |  | ||||||
| 							} |  | ||||||
| 						} else { |  | ||||||
| 							if (`${e.detail.decodedText}`.length > 10) { |  | ||||||
| 								cardCode = e.detail.decodedText; |  | ||||||
| 								new Audio("/beep.mp3").play(); |  | ||||||
| 								state = "assigning"; |  | ||||||
| 								RunnerCardService.runnerCardControllerGetAll() |  | ||||||
| 									.then((cards) => { |  | ||||||
| 										// console.log(cards); |  | ||||||
| 										const card = cards.find((c) => c.code === cardCode); |  | ||||||
| 										if (card) { |  | ||||||
| 											console.log("card found", card); |  | ||||||
| 											RunnerCardService.runnerCardControllerPut(card.id, { |  | ||||||
| 												enabled: true, |  | ||||||
| 												id: card.id, |  | ||||||
| 												runner: runnerinfo.id, |  | ||||||
| 											}) |  | ||||||
| 												.then(() => { |  | ||||||
| 													state = "done"; |  | ||||||
| 												}) |  | ||||||
| 												.catch(() => { |  | ||||||
| 													state = "error_card"; |  | ||||||
| 													scannerActive = false; |  | ||||||
| 												}); |  | ||||||
| 										} else { |  | ||||||
| 											console.log("card not found"); |  | ||||||
| 											// scannerActive = true; |  | ||||||
| 											state = "error_card"; |  | ||||||
| 											scannerActive = false; |  | ||||||
| 										} |  | ||||||
| 									}) |  | ||||||
| 									.catch(() => { |  | ||||||
| 										scannerActive = true; |  | ||||||
| 									}); |  | ||||||
| 							} |  | ||||||
| 						} |  | ||||||
|           } |           } | ||||||
|         }} |         }} | ||||||
|         width={320} |         width={320} | ||||||
|         height={320} |         height={320} | ||||||
|         class="w-full max-w-sm bg-neutral-300 rounded-lg overflow-hidden" |         class="w-full max-w-sm bg-neutral-300 rounded-lg overflow-hidden" | ||||||
|       /> |       /> | ||||||
|  |       <form | ||||||
|  |         on:submit={(e) => { | ||||||
|  |           handleInput(barcodeInput.value); | ||||||
|  |           barcodeInput.value = ""; | ||||||
|  |           e.preventDefault(); | ||||||
|  |         }} | ||||||
|  |         class="mt-2" | ||||||
|  |       > | ||||||
|  |         <input | ||||||
|  |           type="text" | ||||||
|  |           placeholder={$_("barcode_scanner")} | ||||||
|  |           class="w-full max-w-sm bg-neutral-300 rounded-lg overflow-hidden mt-2" | ||||||
|  |           bind:this={barcodeInput} | ||||||
|  |         /> | ||||||
|  |       </form> | ||||||
|     {/if} |     {/if} | ||||||
|     {#if runnerinfo.id !== 0 && state !== "scan_card"} |     {#if runnerinfo.id !== 0 && state !== "scan_card"} | ||||||
|       <button |       <button | ||||||
|   | |||||||
| @@ -1,103 +0,0 @@ | |||||||
| <script> |  | ||||||
|   let open = false; |  | ||||||
| </script> |  | ||||||
|  |  | ||||||
| <div class="md:flex flex-col md:flex-row h-screen w-full"> |  | ||||||
|   <div |  | ||||||
|     class="flex flex-col w-full md:w-64 text-gray-700 bg-white dark-mode:text-gray-200 dark-mode:bg-gray-800 flex-shrink-0" |  | ||||||
|   > |  | ||||||
|     <div |  | ||||||
|       class="flex-shrink-0 px-8 py-4 flex flex-row items-center justify-between" |  | ||||||
|     > |  | ||||||
|       <a |  | ||||||
|         href="/#/test" |  | ||||||
|         class="text-lg font-semibold tracking-widest text-gray-900 uppercase rounded-lg dark-mode:text-white focus:outline-none focus:shadow-outline" |  | ||||||
|         >Sidebar</a |  | ||||||
|       > |  | ||||||
|       <button |  | ||||||
|         class="rounded-lg md:hidden focus:outline-none focus:shadow-outline" |  | ||||||
|       > |  | ||||||
|         <svg fill="currentColor" viewBox="0 0 20 20" class="w-6 h-6"> |  | ||||||
|           {#if open} |  | ||||||
|             <path |  | ||||||
|               fill-rule="evenodd" |  | ||||||
|               d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" |  | ||||||
|               clip-rule="evenodd" |  | ||||||
|             /> |  | ||||||
|           {/if} |  | ||||||
|           {#if !open} |  | ||||||
|             <path |  | ||||||
|               fill-rule="evenodd" |  | ||||||
|               d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM9 15a1 1 0 011-1h6a1 1 0 110 2h-6a1 1 0 01-1-1z" |  | ||||||
|               clip-rule="evenodd" |  | ||||||
|             /> |  | ||||||
|           {/if} |  | ||||||
|         </svg> |  | ||||||
|       </button> |  | ||||||
|     </div> |  | ||||||
|     <nav |  | ||||||
|       :class:block={open} |  | ||||||
|       :class:hidden={!open} |  | ||||||
|       class="flex-grow md:block px-4 pb-4 md:pb-0 md:overflow-y-auto" |  | ||||||
|     > |  | ||||||
|       <a |  | ||||||
|         class="block px-4 py-2 mt-2 text-sm font-semibold text-gray-900 bg-gray-200 rounded-lg dark-mode:bg-gray-700 dark-mode:hover:bg-gray-600 dark-mode:focus:bg-gray-600 dark-mode:focus:text-white dark-mode:hover:text-white dark-mode:text-gray-200 hover:text-gray-900 focus:text-gray-900 hover:bg-gray-200 focus:bg-gray-200 focus:outline-none focus:shadow-outline" |  | ||||||
|         href="#">Blog</a |  | ||||||
|       > |  | ||||||
|       <a |  | ||||||
|         class="block px-4 py-2 mt-2 text-sm font-semibold text-gray-900 bg-transparent rounded-lg dark-mode:bg-transparent dark-mode:hover:bg-gray-600 dark-mode:focus:bg-gray-600 dark-mode:focus:text-white dark-mode:hover:text-white dark-mode:text-gray-200 hover:text-gray-900 focus:text-gray-900 hover:bg-gray-200 focus:bg-gray-200 focus:outline-none focus:shadow-outline" |  | ||||||
|         href="#">Portfolio</a |  | ||||||
|       > |  | ||||||
|       <a |  | ||||||
|         class="block px-4 py-2 mt-2 text-sm font-semibold text-gray-900 bg-transparent rounded-lg dark-mode:bg-transparent dark-mode:hover:bg-gray-600 dark-mode:focus:bg-gray-600 dark-mode:focus:text-white dark-mode:hover:text-white dark-mode:text-gray-200 hover:text-gray-900 focus:text-gray-900 hover:bg-gray-200 focus:bg-gray-200 focus:outline-none focus:shadow-outline" |  | ||||||
|         href="#">About</a |  | ||||||
|       > |  | ||||||
|       <a |  | ||||||
|         class="block px-4 py-2 mt-2 text-sm font-semibold text-gray-900 bg-transparent rounded-lg dark-mode:bg-transparent dark-mode:hover:bg-gray-600 dark-mode:focus:bg-gray-600 dark-mode:focus:text-white dark-mode:hover:text-white dark-mode:text-gray-200 hover:text-gray-900 focus:text-gray-900 hover:bg-gray-200 focus:bg-gray-200 focus:outline-none focus:shadow-outline" |  | ||||||
|         href="#">Contact</a |  | ||||||
|       > |  | ||||||
|       <div class="relative"> |  | ||||||
|         <button |  | ||||||
|           on:click={() => { |  | ||||||
|             open = !open; |  | ||||||
|           }} |  | ||||||
|           class="flex flex-row items-center w-full px-4 py-2 mt-2 text-sm font-semibold text-left bg-transparent rounded-lg dark-mode:bg-transparent dark-mode:focus:text-white dark-mode:hover:text-white dark-mode:focus:bg-gray-600 dark-mode:hover:bg-gray-600 md:block hover:text-gray-900 focus:text-gray-900 hover:bg-gray-200 focus:bg-gray-200 focus:outline-none focus:shadow-outline" |  | ||||||
|         > |  | ||||||
|           <span>Dropdown</span> |  | ||||||
|           <svg |  | ||||||
|             fill="currentColor" |  | ||||||
|             viewBox="0 0 20 20" |  | ||||||
|             class="inline w-4 h-4 mt-1 ml-1 transition-transform duration-200 transform md:-mt-1" |  | ||||||
|             ><path |  | ||||||
|               fill-rule="evenodd" |  | ||||||
|               d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" |  | ||||||
|               clip-rule="evenodd" |  | ||||||
|             /></svg |  | ||||||
|           > |  | ||||||
|         </button> |  | ||||||
|         <div |  | ||||||
|           class:block={open} |  | ||||||
|           class:hidden={!open} |  | ||||||
|           class="absolute right-0 w-full mt-2 origin-top-right rounded-md shadow-lg" |  | ||||||
|         > |  | ||||||
|           <div |  | ||||||
|             class="px-2 py-2 bg-white rounded-md shadow dark-mode:bg-gray-800" |  | ||||||
|           > |  | ||||||
|             <a |  | ||||||
|               class="block px-4 py-2 mt-2 text-sm font-semibold bg-transparent rounded-lg dark-mode:bg-transparent dark-mode:hover:bg-gray-600 dark-mode:focus:bg-gray-600 dark-mode:focus:text-white dark-mode:hover:text-white dark-mode:text-gray-200 md:mt-0 hover:text-gray-900 focus:text-gray-900 hover:bg-gray-200 focus:bg-gray-200 focus:outline-none focus:shadow-outline" |  | ||||||
|               href="#">Link #1</a |  | ||||||
|             > |  | ||||||
|             <a |  | ||||||
|               class="block px-4 py-2 mt-2 text-sm font-semibold bg-transparent rounded-lg dark-mode:bg-transparent dark-mode:hover:bg-gray-600 dark-mode:focus:bg-gray-600 dark-mode:focus:text-white dark-mode:hover:text-white dark-mode:text-gray-200 md:mt-0 hover:text-gray-900 focus:text-gray-900 hover:bg-gray-200 focus:bg-gray-200 focus:outline-none focus:shadow-outline" |  | ||||||
|               href="#">Link #2</a |  | ||||||
|             > |  | ||||||
|             <a |  | ||||||
|               class="block px-4 py-2 mt-2 text-sm font-semibold bg-transparent rounded-lg dark-mode:bg-transparent dark-mode:hover:bg-gray-600 dark-mode:focus:bg-gray-600 dark-mode:focus:text-white dark-mode:hover:text-white dark-mode:text-gray-200 md:mt-0 hover:text-gray-900 focus:text-gray-900 hover:bg-gray-200 focus:bg-gray-200 focus:outline-none focus:shadow-outline" |  | ||||||
|               href="#">Link #3</a |  | ||||||
|             > |  | ||||||
|           </div> |  | ||||||
|         </div> |  | ||||||
|       </div> |  | ||||||
|     </nav> |  | ||||||
|   </div> |  | ||||||
| </div> |  | ||||||
| @@ -92,7 +92,7 @@ | |||||||
|               <svg |               <svg | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 640 512" |                 viewBox="0 0 640 512" | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 width="24" |                 width="24" | ||||||
|                 height="24" |                 height="24" | ||||||
|   | |||||||
| @@ -113,7 +113,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
| @@ -170,7 +170,7 @@ | |||||||
|                       id="comments" |                       id="comments" | ||||||
|                       name="comments" |                       name="comments" | ||||||
|                       type="checkbox" |                       type="checkbox" | ||||||
|                       class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" |                       class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded" | ||||||
|                     /> |                     /> | ||||||
|                   </div> |                   </div> | ||||||
|                   <div class="ml-3 text-sm"> |                   <div class="ml-3 text-sm"> | ||||||
|   | |||||||
| @@ -56,7 +56,7 @@ | |||||||
| 							class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | 							class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
| 						> | 						> | ||||||
| 							<svg | 							<svg | ||||||
| 								class="h-6 w-6 text-blue-600" | 								class="size-6 text-blue-600" | ||||||
| 								fill="currentColor" | 								fill="currentColor" | ||||||
| 								width="24" | 								width="24" | ||||||
| 								height="24" | 								height="24" | ||||||
|   | |||||||
| @@ -246,7 +246,7 @@ | |||||||
| 						id="toggle_selfservice_feature" | 						id="toggle_selfservice_feature" | ||||||
| 						name="toggle_selfservice_feature" | 						name="toggle_selfservice_feature" | ||||||
| 						type="checkbox" | 						type="checkbox" | ||||||
| 						class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" | 						class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded" | ||||||
| 					/> | 					/> | ||||||
| 				</div> | 				</div> | ||||||
| 				<div class="ml-3 text-sm"> | 				<div class="ml-3 text-sm"> | ||||||
| @@ -303,7 +303,7 @@ | |||||||
| 								id="toggle_address_checkbox" | 								id="toggle_address_checkbox" | ||||||
| 								name="toggle_address_checkbox" | 								name="toggle_address_checkbox" | ||||||
| 								type="checkbox" | 								type="checkbox" | ||||||
| 								class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" | 								class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded" | ||||||
| 							/> | 							/> | ||||||
| 						</div> | 						</div> | ||||||
| 						<div class="ml-3 text-sm"> | 						<div class="ml-3 text-sm"> | ||||||
|   | |||||||
| @@ -159,7 +159,7 @@ | |||||||
| 											<input | 											<input | ||||||
| 												bind:checked={o.is_selected} | 												bind:checked={o.is_selected} | ||||||
| 												type="checkbox" | 												type="checkbox" | ||||||
| 												class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" | 												class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded" | ||||||
| 											/> | 											/> | ||||||
| 										</td> | 										</td> | ||||||
| 										<td class="px-6 py-4 whitespace-nowrap"> | 										<td class="px-6 py-4 whitespace-nowrap"> | ||||||
|   | |||||||
| @@ -55,7 +55,7 @@ | |||||||
| 							<svg | 							<svg | ||||||
| 								xmlns="http://www.w3.org/2000/svg" | 								xmlns="http://www.w3.org/2000/svg" | ||||||
| 								viewBox="0 0 24 24" | 								viewBox="0 0 24 24" | ||||||
| 								class="h-6 w-6 text-blue-600" | 								class="size-6 text-blue-600" | ||||||
| 								fill="currentColor" | 								fill="currentColor" | ||||||
| 								width="24" | 								width="24" | ||||||
| 								height="24" | 								height="24" | ||||||
|   | |||||||
| @@ -150,7 +150,7 @@ | |||||||
|               <svg |               <svg | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 width="24" |                 width="24" | ||||||
|                 height="24" |                 height="24" | ||||||
|   | |||||||
| @@ -64,7 +64,7 @@ | |||||||
|               <svg |               <svg | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 width="24" |                 width="24" | ||||||
|                 height="24" |                 height="24" | ||||||
|   | |||||||
| @@ -225,7 +225,7 @@ | |||||||
| 							<svg | 							<svg | ||||||
| 								xmlns="http://www.w3.org/2000/svg" | 								xmlns="http://www.w3.org/2000/svg" | ||||||
| 								viewBox="0 0 24 24" | 								viewBox="0 0 24 24" | ||||||
| 								class="h-6 w-6 text-blue-600" | 								class="size-6 text-blue-600" | ||||||
| 								fill="currentColor" | 								fill="currentColor" | ||||||
| 								width="24" | 								width="24" | ||||||
| 								height="24" | 								height="24" | ||||||
|   | |||||||
| @@ -99,7 +99,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
|   | |||||||
| @@ -66,7 +66,7 @@ | |||||||
|               <svg |               <svg | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 width="24" |                 width="24" | ||||||
|                 height="24" |                 height="24" | ||||||
|   | |||||||
| @@ -103,7 +103,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
| @@ -178,7 +178,7 @@ | |||||||
|                       name="enabled" |                       name="enabled" | ||||||
|                       type="checkbox" |                       type="checkbox" | ||||||
|                       checked={enabled} |                       checked={enabled} | ||||||
|                       class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" |                       class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded" | ||||||
|                     /> |                     /> | ||||||
|                     {$_("this-scanstation-is")} |                     {$_("this-scanstation-is")} | ||||||
|                     {#if enabled}{$_("enabled")}{:else}{$_("disabled")}{/if} |                     {#if enabled}{$_("enabled")}{:else}{$_("disabled")}{/if} | ||||||
|   | |||||||
| @@ -53,7 +53,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
|   | |||||||
| @@ -86,7 +86,7 @@ | |||||||
| 							class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | 							class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
| 						> | 						> | ||||||
| 							<svg | 							<svg | ||||||
| 								class="h-6 w-6 text-blue-600" | 								class="size-6 text-blue-600" | ||||||
| 								fill="currentColor" | 								fill="currentColor" | ||||||
| 								xmlns="http://www.w3.org/2000/svg" | 								xmlns="http://www.w3.org/2000/svg" | ||||||
| 								viewBox="0 0 24 24" | 								viewBox="0 0 24 24" | ||||||
|   | |||||||
| @@ -178,7 +178,7 @@ | |||||||
| 					name="enabled" | 					name="enabled" | ||||||
| 					type="checkbox" | 					type="checkbox" | ||||||
| 					checked={editable.enabled} | 					checked={editable.enabled} | ||||||
| 					class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" | 					class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded" | ||||||
| 				/> | 				/> | ||||||
| 				{$_("this-scanstation-is")} | 				{$_("this-scanstation-is")} | ||||||
| 				{#if editable.enabled}{$_("enabled")}{:else}{$_("disabled")}{/if} | 				{#if editable.enabled}{$_("enabled")}{:else}{$_("disabled")}{/if} | ||||||
|   | |||||||
| @@ -54,7 +54,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
|   | |||||||
| @@ -15,6 +15,8 @@ | |||||||
| 	<button on:click={detailsAction} class="text-indigo-600 hover:text-indigo-900" | 	<button on:click={detailsAction} class="text-indigo-600 hover:text-indigo-900" | ||||||
| 		>{$_("details")}</button | 		>{$_("details")}</button | ||||||
| 	> | 	> | ||||||
|  | {:else} | ||||||
|  | <span class="inline-block opacity-0 cursor-default" style="">{$_("details")}</span> | ||||||
| {/if} | {/if} | ||||||
| {#if deleteEnabled} | {#if deleteEnabled} | ||||||
| 	<button | 	<button | ||||||
|   | |||||||
| @@ -89,7 +89,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
|   | |||||||
| @@ -52,7 +52,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
|   | |||||||
| @@ -63,7 +63,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 xmlns="http://www.w3.org/2000/svg" |                 xmlns="http://www.w3.org/2000/svg" | ||||||
|                 viewBox="0 0 24 24" |                 viewBox="0 0 24 24" | ||||||
|   | |||||||
| @@ -100,7 +100,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 width="24" |                 width="24" | ||||||
|                 height="24" |                 height="24" | ||||||
|   | |||||||
| @@ -55,7 +55,7 @@ | |||||||
| 							class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | 							class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
| 						> | 						> | ||||||
| 							<svg | 							<svg | ||||||
| 								class="h-6 w-6 text-blue-600" | 								class="size-6 text-blue-600" | ||||||
| 								fill="currentColor" | 								fill="currentColor" | ||||||
| 								width="24" | 								width="24" | ||||||
| 								height="24" | 								height="24" | ||||||
|   | |||||||
| @@ -144,7 +144,7 @@ | |||||||
| 											<input | 											<input | ||||||
| 												bind:checked={t.is_selected} | 												bind:checked={t.is_selected} | ||||||
| 												type="checkbox" | 												type="checkbox" | ||||||
| 												class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" | 												class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded" | ||||||
| 											/> | 											/> | ||||||
| 										</td> | 										</td> | ||||||
| 										<td class="px-6 py-4 whitespace-nowrap"> | 										<td class="px-6 py-4 whitespace-nowrap"> | ||||||
|   | |||||||
| @@ -98,7 +98,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="none" |                 fill="none" | ||||||
|                 width="24" |                 width="24" | ||||||
|                 height="24" |                 height="24" | ||||||
|   | |||||||
| @@ -115,7 +115,7 @@ | |||||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" |               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||||
|             > |             > | ||||||
|               <svg |               <svg | ||||||
|                 class="h-6 w-6 text-blue-600" |                 class="size-6 text-blue-600" | ||||||
|                 fill="currentColor" |                 fill="currentColor" | ||||||
|                 width="24" |                 width="24" | ||||||
|                 height="24" |                 height="24" | ||||||
|   | |||||||
| @@ -192,7 +192,7 @@ | |||||||
| 					name="enabled" | 					name="enabled" | ||||||
| 					type="checkbox" | 					type="checkbox" | ||||||
| 					checked={editable_userdata.enabled} | 					checked={editable_userdata.enabled} | ||||||
| 					class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" | 					class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded" | ||||||
| 				/> | 				/> | ||||||
| 				{$_("set-the-user-active-inactive")} | 				{$_("set-the-user-active-inactive")} | ||||||
| 			</p> | 			</p> | ||||||
|   | |||||||
| @@ -41,6 +41,8 @@ | |||||||
|     "already-paid": "Bereits bezahlt", |     "already-paid": "Bereits bezahlt", | ||||||
|     "amount": "Anzahl", |     "amount": "Anzahl", | ||||||
|     "amount-per-kilometer": "Betrag pro Kilometer", |     "amount-per-kilometer": "Betrag pro Kilometer", | ||||||
|  |     "anonyme_spende": "Anonyme Spende", | ||||||
|  |     "anonymer_sponsor": "👻 Anonym", | ||||||
|     "apartment-suite-etc": "Apartment, Wohnung, etc.", |     "apartment-suite-etc": "Apartment, Wohnung, etc.", | ||||||
|     "api-endpoint": "API-Endpunkt", |     "api-endpoint": "API-Endpunkt", | ||||||
|     "application_name": "Lauf für Kaya! - Admin", |     "application_name": "Lauf für Kaya! - Admin", | ||||||
| @@ -50,6 +52,7 @@ | |||||||
|     "available-permissions": "Verfügbar", |     "available-permissions": "Verfügbar", | ||||||
|     "average-distance": "∅ Strecke/Läufer", |     "average-distance": "∅ Strecke/Läufer", | ||||||
|     "average-donation": "∅ Sponsoring", |     "average-donation": "∅ Sponsoring", | ||||||
|  |     "barcode_scanner": "Scannen mit Handscanner", | ||||||
|     "by": "von", |     "by": "von", | ||||||
|     "cancel": "Abbrechen", |     "cancel": "Abbrechen", | ||||||
|     "cancel-delete": "Löschen abbrechen", |     "cancel-delete": "Löschen abbrechen", | ||||||
| @@ -224,6 +227,7 @@ | |||||||
|     "error_on_login": "😢Fehler beim Login", |     "error_on_login": "😢Fehler beim Login", | ||||||
|     "everything-concerning-your-profile": "Alles zu deinem Profil", |     "everything-concerning-your-profile": "Alles zu deinem Profil", | ||||||
|     "faq": "FAQ", |     "faq": "FAQ", | ||||||
|  |     "festbetrag": "Festbetrag", | ||||||
|     "filename_sponsoringquittungsliste": "SponsoringQuittungsListe", |     "filename_sponsoringquittungsliste": "SponsoringQuittungsListe", | ||||||
|     "filter-by-organization-team": "Filtern nach Organisation / Team", |     "filter-by-organization-team": "Filtern nach Organisation / Team", | ||||||
|     "first-name": "Vorname", |     "first-name": "Vorname", | ||||||
| @@ -418,6 +422,7 @@ | |||||||
|     "settings": "Einstellungen", |     "settings": "Einstellungen", | ||||||
|     "settings-for-your-profile": "Die Einstellungen deines Accounts", |     "settings-for-your-profile": "Die Einstellungen deines Accounts", | ||||||
|     "something-about-the-group": "Infos zur Gruppe", |     "something-about-the-group": "Infos zur Gruppe", | ||||||
|  |     "spende_pro_km": "Spende pro km", | ||||||
|     "sponsoring-quittungs-liste_herunterladen": "Sponsoring-Quittungs-Liste herunterladen", |     "sponsoring-quittungs-liste_herunterladen": "Sponsoring-Quittungs-Liste herunterladen", | ||||||
|     "sponsorings": "Sponsoringerklaerungen", |     "sponsorings": "Sponsoringerklaerungen", | ||||||
|     "station-deleted": "Scannerstation gelöscht", |     "station-deleted": "Scannerstation gelöscht", | ||||||
|   | |||||||
| @@ -41,6 +41,8 @@ | |||||||
|     "already-paid": "Already paid", |     "already-paid": "Already paid", | ||||||
|     "amount": "Amount", |     "amount": "Amount", | ||||||
|     "amount-per-kilometer": "Amount per kilometer", |     "amount-per-kilometer": "Amount per kilometer", | ||||||
|  |     "anonyme_spende": "Anonymous", | ||||||
|  |     "anonymer_sponsor": "👻 Anonymous", | ||||||
|     "apartment-suite-etc": "Apartment, suite, etc.", |     "apartment-suite-etc": "Apartment, suite, etc.", | ||||||
|     "api-endpoint": "API-Endpoint", |     "api-endpoint": "API-Endpoint", | ||||||
|     "application_name": "Lauf für Kaya! - Admin", |     "application_name": "Lauf für Kaya! - Admin", | ||||||
| @@ -50,6 +52,7 @@ | |||||||
|     "available-permissions": "available", |     "available-permissions": "available", | ||||||
|     "average-distance": "∅ distance", |     "average-distance": "∅ distance", | ||||||
|     "average-donation": "∅ donation", |     "average-donation": "∅ donation", | ||||||
|  |     "barcode_scanner": "Scan via barcode scanner", | ||||||
|     "by": "by", |     "by": "by", | ||||||
|     "cancel": "Cancel", |     "cancel": "Cancel", | ||||||
|     "cancel-delete": "Cancel Delete", |     "cancel-delete": "Cancel Delete", | ||||||
| @@ -224,6 +227,7 @@ | |||||||
|     "error_on_login": "Error on login", |     "error_on_login": "Error on login", | ||||||
|     "everything-concerning-your-profile": "Everything concerning your profile", |     "everything-concerning-your-profile": "Everything concerning your profile", | ||||||
|     "faq": "FAQ", |     "faq": "FAQ", | ||||||
|  |     "festbetrag": "Fixed amount", | ||||||
|     "filename_sponsoringquittungsliste": "DonorReceiptList", |     "filename_sponsoringquittungsliste": "DonorReceiptList", | ||||||
|     "filter-by-organization-team": "Filter by Organization/ Team", |     "filter-by-organization-team": "Filter by Organization/ Team", | ||||||
|     "first-name": "First name", |     "first-name": "First name", | ||||||
| @@ -418,6 +422,7 @@ | |||||||
|     "settings": "Settings", |     "settings": "Settings", | ||||||
|     "settings-for-your-profile": "Settings for your profile", |     "settings-for-your-profile": "Settings for your profile", | ||||||
|     "something-about-the-group": "Something about the group...", |     "something-about-the-group": "Something about the group...", | ||||||
|  |     "spende_pro_km": "Per Kilometer", | ||||||
|     "sponsoring-quittungs-liste_herunterladen": "Download donor receipt list", |     "sponsoring-quittungs-liste_herunterladen": "Download donor receipt list", | ||||||
|     "sponsorings": "Sponsorings", |     "sponsorings": "Sponsorings", | ||||||
|     "station-deleted": "station deleted", |     "station-deleted": "station deleted", | ||||||
|   | |||||||
| @@ -7,3 +7,27 @@ | |||||||
| * { | * { | ||||||
| 	font-family: Athiti; | 	font-family: Athiti; | ||||||
| } | } | ||||||
|  | .html5-qrcode-element { | ||||||
|  | 	@apply block; | ||||||
|  | 	@apply w-full; | ||||||
|  | 	@apply p-4; | ||||||
|  | } | ||||||
|  | #qr-scanner__dashboard_section_csr { | ||||||
|  | 	/* padding-right: 20px; */ | ||||||
|  | 	padding: 1rem; | ||||||
|  | } | ||||||
|  | #html5-qrcode-select-camera { | ||||||
|  | 	@apply px-2 py-2 inline-flex text-lg leading-5 font-semibold rounded-md border border-current bg-neutral-100 text-neutral-800 mb-2; | ||||||
|  | } | ||||||
|  | #html5-qrcode-button-camera-start { | ||||||
|  | 	@apply px-2 inline-flex text-lg leading-5 font-semibold rounded-md border border-current bg-green-100 text-green-800 mb-2 cursor-pointer; | ||||||
|  | } | ||||||
|  | #html5-qrcode-button-camera-stop { | ||||||
|  | 	@apply px-2 inline-flex text-lg leading-5 font-semibold rounded-md border border-current bg-red-100 text-red-800 mb-2 cursor-pointer; | ||||||
|  | } | ||||||
|  | .donation_inactive_tab { | ||||||
|  | 	@apply min-w-0 flex-1 bg-white first:border-s-0 border-s border-b-2 border-neutral-200 py-4 px-4 text-neutral-800 hover:text-neutral-700 text-sm font-medium text-center overflow-hidden hover:bg-neutral-200 cursor-pointer focus:z-10 focus:outline-hidden focus:bg-neutral-200 disabled:opacity-50 disabled:pointer-events-none; | ||||||
|  | } | ||||||
|  | .donation_active_tab { | ||||||
|  | 	@apply min-w-0 flex-1 bg-blue-400 text-white first:border-s-0 border-s border-b-2 border-neutral-200 py-4 px-4 text-sm font-medium text-center overflow-hidden cursor-pointer focus:outline-hidden; | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user