refactor admin crud popups
All checks were successful
deploy / build-and-deploy (push) Successful in 23s
All checks were successful
deploy / build-and-deploy (push) Successful in 23s
This commit is contained in:
@@ -1,14 +1,14 @@
|
||||
<script lang="ts">
|
||||
import Input from '@components/input/Input.svelte';
|
||||
import Icon from '@iconify/svelte';
|
||||
import { addTeam, fetchTeams } from './actions.ts';
|
||||
import CreateOrEditPopup from '@app/admin/teams/CreateOrEditPopup.svelte';
|
||||
import CrudPopup from '@components/admin/popup/CrudPopup.svelte';
|
||||
import { addTeam, fetchTeams } from '@app/admin/teams/teams.ts';
|
||||
|
||||
// states
|
||||
let teamNameFilter = $state<string | null>(null);
|
||||
let memberUsernameFilter = $state<string | null>(null);
|
||||
|
||||
let newTeamPopupOpen = $state(false);
|
||||
let createPopupOpen = $state(false);
|
||||
|
||||
// lifecycle
|
||||
$effect(() => {
|
||||
@@ -23,21 +23,51 @@
|
||||
<Input bind:value={memberUsernameFilter} label="Spieler Username" />
|
||||
</fieldset>
|
||||
<div class="divider my-1"></div>
|
||||
<button class="btn btn-soft w-full" onclick={() => (newTeamPopupOpen = true)}>
|
||||
<button class="btn btn-soft w-full" onclick={() => (createPopupOpen = true)}>
|
||||
<Icon icon="heroicons:plus-16-solid" />
|
||||
<span>Neues Team</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{#key newTeamPopupOpen}
|
||||
<CreateOrEditPopup
|
||||
popupTitle="Neues Team"
|
||||
submitButtonTitle="Team erstellen"
|
||||
confirmPopupTitle="Team erstellen"
|
||||
confirmPopupMessage="Bist du sicher, dass du das Team erstellen möchtest?"
|
||||
team={null}
|
||||
open={newTeamPopupOpen}
|
||||
onSubmit={addTeam}
|
||||
onClose={() => (newTeamPopupOpen = false)}
|
||||
/>
|
||||
{/key}
|
||||
<CrudPopup
|
||||
texts={{
|
||||
title: 'Team erstellen',
|
||||
submitButtonTitle: 'Erstellen',
|
||||
confirmPopupTitle: 'Team erstellen?',
|
||||
confirmPopupMessage: 'Sollen das neue Team erstellt werden?'
|
||||
}}
|
||||
target={null}
|
||||
keys={[
|
||||
[
|
||||
{ key: 'name', type: 'text', label: 'Name', options: { required: true } },
|
||||
{ key: 'color', type: 'color', label: 'Farbe', options: { required: true } }
|
||||
],
|
||||
[
|
||||
{
|
||||
key: 'memberOne',
|
||||
type: 'user-search',
|
||||
label: 'Spieler 1',
|
||||
default: { id: null, username: '' },
|
||||
options: { required: true, validate: (user) => !!user.username }
|
||||
},
|
||||
{
|
||||
key: 'memberTwo',
|
||||
type: 'user-search',
|
||||
label: 'Spieler 2',
|
||||
default: { id: null, username: '' },
|
||||
options: { required: true, validate: (user) => !!user.username }
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
key: 'lastJoined',
|
||||
type: 'datetime-local',
|
||||
label: 'Zuletzt gejoined',
|
||||
default: null,
|
||||
options: { convert: (date) => (date ? date : null) }
|
||||
}
|
||||
]
|
||||
]}
|
||||
onSubmit={addTeam}
|
||||
bind:open={createPopupOpen}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user