Compare commits

..

No commits in common. "5dcb4cb508b204c5634804811a9f37db78e764ce" and "1505080afdd8b272b76584e2777df732001ce004" have entirely different histories.

8 changed files with 346 additions and 415 deletions

View File

@ -2,16 +2,8 @@
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.0](https://git.odit.services/lfk/frontend/compare/1.11.5...1.12.0)
- 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)
#### [1.11.5](https://git.odit.services/lfk/frontend/compare/1.11.4...1.11.5) #### [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) - 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) #### [1.11.4](https://git.odit.services/lfk/frontend/compare/1.11.3...1.11.4)

View File

@ -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.12.0-RELEASE_INFO</span >RELEASE_INFO-1.11.5-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>

View File

@ -1,6 +1,6 @@
{ {
"name": "@odit/lfk-frontend", "name": "@odit/lfk-frontend",
"version": "1.12.0", "version": "1.11.5",
"type": "module", "type": "module",
"scripts": { "scripts": {
"i18n-order": "node order.js", "i18n-order": "node order.js",

View File

@ -1,384 +1,340 @@
<script> <script>
import { _ } from "svelte-i18n"; import { _ } from "svelte-i18n";
import { clickOutside } from "../base/outsideclick"; import { clickOutside } from "../base/outsideclick";
import { import {
DonationService, DonationService,
DonorService, DonorService,
RunnerService, RunnerService,
} from "@odit/lfk-client-js"; } from "@odit/lfk-client-js";
import Select from "svelte-select"; import Select from "svelte-select";
import { createEventDispatcher, onMount } from "svelte"; import { createEventDispatcher, onMount } from "svelte";
import toast from "svelte-french-toast"; import toast from "svelte-french-toast";
export let modal_open; export let modal_open;
const dispatch = createEventDispatcher(); const dispatch = createEventDispatcher();
const getDonorLabel = (option) => const getDonorLabel = (option) =>
option.firstname + " " + (option.middlename || "") + " " + option.lastname; option.firstname + " " + (option.middlename || "") + " " + option.lastname;
const filterDonors = (label, filterText, option) => const filterDonors = (label, filterText, option) =>
label.toLowerCase().includes(filterText.toLowerCase()) || label.toLowerCase().includes(filterText.toLowerCase()) ||
option.value.id.toString().startsWith(filterText.toLowerCase()); option.value.id.toString().startsWith(filterText.toLowerCase());
$: donor = 0; $: donor = 0;
$: runner = 0; $: runner = 0;
$: donors = []; $: donors = [];
$: runners = []; $: runners = [];
$: type = "distance"; $: is_fixed = false;
$: is_paid = false; $: is_paid = false;
$: amount_input = 0; $: amount_input = 0;
$: processed_last_submit = true; $: processed_last_submit = true;
$: is_amount_valid = amount_input > 0; $: is_amount_valid = amount_input > 0;
$: createbtnenabled = is_amount_valid; $: createbtnenabled = is_amount_valid;
(() => { (() => {
document.onkeydown = (e) => { document.onkeydown = (e) => {
e = e || window.event; e = e || window.event;
if (e.key === "Escape") { if (e.key === "Escape") {
modal_open = false; modal_open = false;
} }
if (e.keyCode === 13) { if (e.keyCode === 13) {
if (createbtnenabled === true) { if (createbtnenabled === true) {
createbtnenabled = false; createbtnenabled = false;
submit(); submit();
} }
} }
}; };
})(); })();
function submit() { function submit() {
if (processed_last_submit === true) { if (processed_last_submit === true) {
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 (type === "fixed") { if (is_fixed) {
let postdata = { let postdata = {
donor, donor,
amount: amount_cent, amount: amount_cent,
paidAmount: 0, paidAmount: 0,
}; };
if (is_paid) { if (is_paid) {
postdata.paidAmount = amount_cent; postdata.paidAmount = amount_cent;
} }
DonationService.donationControllerPostFixed(postdata) DonationService.donationControllerPostFixed(postdata)
.then((result) => { .then((result) => {
donor = donors[0].id || 0; donor = donors[0].id || 0;
runner = runners[0].id || 0; runner = runners[0].id || 0;
amount_input = 0; amount_input = 0;
modal_open = false; modal_open = false;
// //
toast.dismiss(); toast.dismiss();
toast.success($_("donation_added")); toast.success($_("donation_added"));
dispatch("created", { donations: [result] }); dispatch("created", { donations: [result] });
}) })
.catch((err) => { .catch((err) => {
// //
}) })
.finally(() => { .finally(() => {
processed_last_submit = true; processed_last_submit = true;
}); });
} else if (type === "anonymous") { } else {
let postdata = { let postdata = {
amount: amount_cent, donor,
paidAmount: 0, runner,
}; amountPerDistance: amount_cent,
if (is_paid) { };
postdata.paidAmount = amount_cent; DonationService.donationControllerPostDistance(postdata)
} .then((result) => {
DonationService.donationControllerPostFixed(postdata) donor = donors[0].id || 0;
.then((result) => { runner = runners[0].id || 0;
amount_input = 0; amount_input = 0;
modal_open = false; modal_open = false;
// //
toast.dismiss(); toast.dismiss();
toast.success($_("donation_added")); toast.success($_("donation_added"));
dispatch("created", { donations: [result] }); dispatch("created", { donations: [result] });
}) })
.catch((err) => { .catch((err) => {
// //
}) })
.finally(() => { .finally(() => {
processed_last_submit = true; processed_last_submit = true;
}); });
} else if (type === "distance") { }
let postdata = { }
donor, }
runner,
amountPerDistance: amount_cent,
};
DonationService.donationControllerPostDistance(postdata)
.then((result) => {
donor = donors[0].id || 0;
runner = runners[0].id || 0;
amount_input = 0;
modal_open = false;
//
toast.dismiss();
toast.success($_("donation_added"));
dispatch("created", { donations: [result] });
})
.catch((err) => {
//
})
.finally(() => {
processed_last_submit = true;
});
}
}
}
onMount(async () => { onMount(async () => {
donors = (await DonorService.donorControllerGetAll()).map((r) => { donors = (await DonorService.donorControllerGetAll()).map(
return { label: getDonorLabel(r), value: r }; (r) => {
}); return { label: getDonorLabel(r), value: r };
runners = (await RunnerService.runnerControllerGetAll()).map((r) => { }
return { label: getDonorLabel(r), value: r }; );
}); runners = (await RunnerService.runnerControllerGetAll()).map(
}); (r) => {
return { label: getDonorLabel(r), value: r };
}
);
});
</script> </script>
{#if modal_open} {#if modal_open}
<div <div
class="fixed z-10 inset-0 overflow-y-hidden" class="fixed z-10 inset-0 overflow-y-hidden"
use:clickOutside use:clickOutside
on:click_outside={() => { on:click_outside={() => {
modal_open = false; modal_open = false;
}} }}
> >
<div <div
class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4"
> >
<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-neutral-500 opacity-75" class="absolute inset-0 bg-gray-500 opacity-75"
data-id="modal_backdrop" data-id="modal_backdrop"
/> />
</div> </div>
<span <span
class="hidden sm:inline-block sm:align-middle sm:h-screen" class="hidden sm:inline-block sm:align-middle sm:h-screen"
aria-hidden="true">&#8203;</span aria-hidden="true">&#8203;</span
> >
<div <div
class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw] relative z-10" class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw] relative z-10"
role="dialog" role="dialog"
aria-modal="true" aria-modal="true"
aria-labelledby="modal-headline" aria-labelledby="modal-headline"
> >
<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl">
<div class=""> <div class="">
<div <div
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="size-6 text-blue-600" class="h-6 w-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"
width="24" width="24"
height="24" height="24"
><path fill="none" d="M0 0h24v24H0z" /> ><path fill="none" d="M0 0h24v24H0z" />
<path <path
d="M14 2a8 8 0 013.3 15.3A8 8 0 116.7 6.7 8 8 0 0114 2zm-3 7H9v1a2.5 2.5 0 00-.16 5h2.25a.5.5 0 010 1H7v2h2v1h2v-1a2.5 2.5 0 00.16-5H8.91a.5.5 0 010-1H13v-2h-2V9zm3-5a5.99 5.99 0 00-4.48 2.01 8 8 0 018.47 8.47A6 6 0 0014 4z" d="M14 2a8 8 0 013.3 15.3A8 8 0 116.7 6.7 8 8 0 0114 2zm-3 7H9v1a2.5 2.5 0 00-.16 5h2.25a.5.5 0 010 1H7v2h2v1h2v-1a2.5 2.5 0 00.16-5H8.91a.5.5 0 010-1H13v-2h-2V9zm3-5a5.99 5.99 0 00-4.48 2.01 8 8 0 018.47 8.47A6 6 0 0014 4z"
/></svg /></svg
> >
</div> </div>
<div class="mt-3"> <div class="mt-3">
<h3 class="text-xl leading-6 font-medium text-neutral-900"> <h3 class="text-lg leading-6 font-medium text-gray-900">
Sponsoring erstellen {#if is_fixed}
{$_("create-a-new-fixed-donation")}
{:else}{$_("create-a-new-distance-donation")}{/if}
</h3> </h3>
<nav <label class="content-center align-middle object-center">
class="relative z-0 flex border border-neutral-200 rounded-xl overflow-hidden mb-2" <span class="text-base" class:text-gray-300={is_fixed}
> >{$_("distance-donation")}</span
<button >
on:click={() => { <input
type = "distance"; 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"
}} type="checkbox"
type="button" bind:checked={is_fixed}
id="bar-with-underline-item-1" />
class:donation_active_tab={type === "distance"} <span class="ml-2 text-base" class:text-gray-300={!is_fixed}
class:donation_inactive_tab={type !== "distance"} >{$_("fixed-donation")}</span
aria-selected={type === "distance"} >
role="tab" </label>
> <div class="mb-6">
{$_("spende_pro_km")} <p class="text-sm text-gray-500">
</button> {$_(
<button "please-provide-the-nessecary-information-to-create-a-new-donation"
on:click={() => { )}
type = "fixed"; </p>
}} </div>
type="button" <div class="grid grid-cols-6 gap-2 lg:gap-6 text-left">
id="bar-with-underline-item-2" <div class="col-span-6">
class:donation_active_tab={type === "fixed"} <label
class:donation_inactive_tab={type !== "fixed"} for="donor"
aria-selected={type === "fixed"} class="block text-sm font-medium text-gray-700"
role="tab" >{$_("donor")}</label
> >
{$_("festbetrag")} <Select
</button> 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"
<button itemFilter={(label, filterText, option) =>
on:click={() => { filterDonors(label, filterText, option)}
type = "anonymous"; items={donors}
}} showChevron={true}
type="button" placeholder={$_("search-for-donor-name-or-id")}
id="bar-with-underline-item-3" noOptionsMessage={$_("no-donors-found")}
class:donation_active_tab={type === "anonymous"} on:select={(selectedValue) =>
class:donation_inactive_tab={type !== "anonymous"} (donor = selectedValue.detail.value.id)}
aria-selected={type === "anonymous"} on:clear={() => (donors = null)}
role="tab" />
> </div>
{$_("anonyme_spende")} {#if !is_fixed}
</button> <div class="col-span-6">
</nav> <label
for="donor"
<div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> class="block text-sm font-medium text-gray-700"
{#if type === "anonymous"} >{$_("runner")}</label
<div class="col-span-6"> >
<label <Select
for="donation_amount_eur" 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"
class="block text-sm font-medium text-neutral-900" itemFilter={(label, filterText, option) =>
> filterDonors(label, filterText, option)}
{$_("donation-amount")}</label items={runners}
> showChevron={true}
<div class="mt-1 flex rounded-md shadow-sm"> placeholder={$_("search-for-runner-by-name-or-id")}
<input noOptionsMessage={$_("no-runners-found")}
autocomplete="off" on:select={(selectedValue) =>
class:border-red-500={!is_amount_valid} (runner = selectedValue.detail.value.id)}
class:focus:border-red-500={!is_amount_valid} on:clear={() => (runner = null)}
class:focus:ring-red-500={!is_amount_valid} />
bind:value={amount_input} </div>
type="number" {/if}
step="0.01" <div class="col-span-6">
name="donation_amount_eur" <label
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" for="donation_amount_eur"
placeholder="2.00" class="block text-sm font-medium text-gray-700"
/> >
<span {#if !is_fixed}
class="inline-flex items-center px-3 rounded-r-md border border-neutral-300 bg-neutral-50 text-neutral-500 text-sm" {$_("amount-per-kilometer")}
>€</span {:else}{$_("donation-amount")}{/if}</label
> >
</div> <div class="mt-1 flex rounded-md shadow-sm">
{#if !is_amount_valid} <input
<span autocomplete="off"
class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1" class:border-red-500={!is_amount_valid}
> class:focus:border-red-500={!is_amount_valid}
{$_("donation-amount-must-be-greater-that-0-00eur")} class:focus:ring-red-500={!is_amount_valid}
</span> bind:value={amount_input}
{/if} type="number"
</div> step="0.01"
{:else} name="donation_amount_eur"
<div class="col-span-6"> 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"
<label placeholder="2.00"
for="donor" />
class="block text-sm font-medium text-neutral-900" <span
>{$_("donor")}</label class="inline-flex items-center px-3 rounded-r-md border border-gray-300 bg-gray-50 text-gray-500 text-sm"
> >€</span
<Select >
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" </div>
itemFilter={(label, filterText, option) => {#if !is_amount_valid}
filterDonors(label, filterText, option)} <span
items={donors} class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1"
showChevron={true} >
placeholder={$_("search-for-donor-name-or-id")} {$_("donation-amount-must-be-greater-that-0-00eur")}
noOptionsMessage={$_("no-donors-found")} </span>
on:select={(selectedValue) => {/if}
(donor = selectedValue.detail.value.id)} </div>
on:clear={() => (donors = null)} {#if is_fixed}
/> <div class="col-span-6">
</div> <label
{#if type === "distance"} for="paid"
<div class="col-span-6"> class="block text-sm font-medium text-gray-700"
<label >{$_("already-paid")}</label
for="donor" >
class="block text-sm font-medium text-neutral-900" <p class="text-gray-500">
>{$_("runner")}</label <input
> id="paid"
<Select bind:checked={is_paid}
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" name="paid"
itemFilter={(label, filterText, option) => type="checkbox"
filterDonors(label, filterText, option)} class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
items={runners} />
showChevron={true} <span class="align-text-bottom">
placeholder={$_("search-for-runner-by-name-or-id")} {#if is_paid}
noOptionsMessage={$_("no-runners-found")} {$_("paid")}
on:select={(selectedValue) => {:else}
(runner = selectedValue.detail.value.id)} {$_("open")}
on:clear={() => (runner = null)} {/if}
/> </span>
</div> </p>
{/if} </div>
<div class="col-span-6"> {/if}
<label </div>
for="donation_amount_eur" </div>
class="block text-sm font-medium text-neutral-900" </div>
> </div>
{#if type === "fixed"} <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10">
{$_("donation-amount")} <button
{:else}{$_("amount-per-kilometer")}{/if}</label disabled={!createbtnenabled}
> class:opacity-50={!createbtnenabled}
<div class="mt-1 flex rounded-md shadow-sm"> on:click={submit}
<input type="button"
autocomplete="off" class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
class:border-red-500={!is_amount_valid} >
class:focus:border-red-500={!is_amount_valid} {$_("create")}
class:focus:ring-red-500={!is_amount_valid} </button>
bind:value={amount_input} <button
type="number" on:click={() => {
step="0.01" modal_open = false;
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" type="button"
placeholder="2.00" 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"
/> >
<span {$_("cancel")}
class="inline-flex items-center px-3 rounded-r-md border border-neutral-300 bg-neutral-50 text-neutral-500 text-sm" </button>
>€</span </div>
> </div>
</div> </div>
{#if !is_amount_valid} </div>
<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>
{/if}
{#if type === "fixed" || type === "anonymous"}
<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
for="hs-default-checkbox"
class="text-base text-neutral-900 ms-2 font-medium"
>{$_("already-paid")}</label
>
</div>
{/if}
</div>
</div>
</div>
</div>
<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
disabled={!createbtnenabled}
class:opacity-50={!createbtnenabled}
on:click={submit}
type="button"
class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
>
{$_("create")}
</button>
<button
on:click={() => {
modal_open = false;
}}
type="button"
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")}
</button>
</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>

View File

@ -1,21 +1,18 @@
<script> <script>
import { _ } from "svelte-i18n"; import { _ } from "svelte-i18n";
export let donor; export let donor;
</script> </script>
{#if !donor || donor.firstname == 0} {#if !donor || donor.firstname == 0}
<span {$_("donor-has-no-associated-donations")}
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
href="../donors/{donor.id}" href="../donors/{donor.id}"
class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-gray-100 text-gray-800 border border-current" class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-gray-100 text-gray-800 border border-current"
>{donor.firstname} >{donor.firstname}
{#if donor.middlename}{donor.middlename}{/if} {#if donor.middlename}{donor.middlename}{/if}
{donor.lastname}</a {donor.lastname}</a
> >
</div> </div>
{/if} {/if}

View File

@ -41,8 +41,6 @@
"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": "👻 Anonymer Sponsor",
"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",
@ -226,7 +224,6 @@
"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",
@ -421,7 +418,6 @@
"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",

View File

@ -41,8 +41,6 @@
"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 Donation",
"anonymer_sponsor": "👻 Anonymous Donor",
"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",
@ -226,7 +224,6 @@
"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 Donation",
"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",
@ -421,7 +418,6 @@
"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": "donation per km",
"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",

View File

@ -25,9 +25,3 @@
#html5-qrcode-button-camera-stop { #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; @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;
}