From e6f344856c6c05e4eb5c78f0dffb9f52498795f4 Mon Sep 17 00:00:00 2001 From: mgabor <> Date: Wed, 24 Apr 2024 13:00:06 +0200 Subject: [PATCH] redesign user selection modal editor selector --- .../album-page/user-selection-modal.svelte | 65 +++++++++---------- 1 file changed, 31 insertions(+), 34 deletions(-) diff --git a/web/src/lib/components/album-page/user-selection-modal.svelte b/web/src/lib/components/album-page/user-selection-modal.svelte index e761edb073..74756975ca 100644 --- a/web/src/lib/components/album-page/user-selection-modal.svelte +++ b/web/src/lib/components/album-page/user-selection-modal.svelte @@ -21,7 +21,8 @@ export let album: AlbumResponseDto; export let onClose: () => void; let users: UserResponseDto[] = []; - let selectedUsers: Record = {}; + let selectedUsers: UserResponseDto[] = []; + let role = AlbumUserRole.Editor const dispatch = createEventDispatcher<{ select: AddUserDto[]; @@ -46,29 +47,26 @@ sharedLinks = data.filter((link) => link.album?.id === album.id); }; - const handleToggle = (user: UserResponseDto) => { - if (Object.keys(selectedUsers).includes(user.id)) { - delete selectedUsers[user.id]; - selectedUsers = selectedUsers; - } else { - selectedUsers[user.id] = { user, role: AlbumUserRole.Editor }; - } + const handleSelect = (user: UserResponseDto) => { + selectedUsers = selectedUsers.includes(user) + ? selectedUsers.filter((selectedUser) => selectedUser.id !== user.id) + : [...selectedUsers, user]; }; - const handleChangeRole = (user: UserResponseDto, role: AlbumUserRole) => { - selectedUsers[user.id].role = role; + const handleUnselect = (user: UserResponseDto) => { + selectedUsers = selectedUsers.filter((selectedUser) => selectedUser.id !== user.id); }; - {#if Object.keys(selectedUsers).length > 0} + {#if selectedUsers.length > 0}

To

- {#each Object.values(selectedUsers) as { user }} + {#each selectedUsers as user} {#key user.id} {/each}
@@ -133,19 +116,33 @@ {#if users.length > 0} -
+
+ Add users as: + title} + on:select={({ detail: { value } }) => role = value} + /> +
+
{/if}