From 332089228e3fab97c6c339f5885132da3368141d Mon Sep 17 00:00:00 2001 From: bytedream Date: Mon, 2 Dec 2024 21:27:13 +0100 Subject: [PATCH] add confirmation popups to admin interface --- src/routes/admin/admin/+page.svelte | 106 ++++++++++++++++++++++------ src/routes/admin/users/+page.svelte | 63 +++++++++++++++-- 2 files changed, 143 insertions(+), 26 deletions(-) diff --git a/src/routes/admin/admin/+page.svelte b/src/routes/admin/admin/+page.svelte index 7134221..4797198 100644 --- a/src/routes/admin/admin/+page.svelte +++ b/src/routes/admin/admin/+page.svelte @@ -8,9 +8,12 @@ import { goto } from '$app/navigation'; // eslint-disable-next-line @typescript-eslint/no-unused-vars import { adminCount } from '$lib/stores'; + import { getPopupModalShowFn } from '$lib/context'; let { data } = $props(); + let showPopupModal = getPopupModalShowFn(); + let admins = $state(data.admins); let allPermissionBadges = { @@ -136,17 +139,29 @@ @@ -199,13 +247,29 @@ class="btn btn-sm btn-square" disabled={!newAdminUsername || !newAdminPassword} onclick={async (e) => { - await buttonTriggeredRequest( - e, - addAdmin(newAdminUsername, newAdminPassword, new Permissions(newAdminPermissions)) - ); - newAdminUsername = ''; - newAdminPassword = ''; - newAdminPermissions = []; + showPopupModal({ + title: 'Admin hinzugügen', + text: `Soll der neue Admin ${newAdminUsername} hinzugefügt werden?`, + actions: [ + { + text: 'Hinzufügen', + action: async () => { + await buttonTriggeredRequest( + e, + addAdmin( + newAdminUsername, + newAdminPassword, + new Permissions(newAdminPermissions) + ) + ); + newAdminUsername = ''; + newAdminPassword = ''; + newAdminPermissions = []; + } + }, + { text: 'Abbrechen' } + ] + }); }} > diff --git a/src/routes/admin/users/+page.svelte b/src/routes/admin/users/+page.svelte index 346b68c..f9ca1d5 100644 --- a/src/routes/admin/users/+page.svelte +++ b/src/routes/admin/users/+page.svelte @@ -11,6 +11,9 @@ import SortableTh from '$lib/components/Table/SortableTh.svelte'; import NewUserModal from './NewUserModal.svelte'; import PaginationTableBody from '$lib/components/PaginationTable/PaginationTableBody.svelte'; + import { getPopupModalShowFn } from '$lib/context'; + + let showPopupModal = getPopupModalShowFn(); let users: (typeof User.prototype.dataValues)[] = $state([]); let usersPerRequest = 25; @@ -154,8 +157,20 @@