|
1 | 1 | <script lang="ts">
|
| 2 | + import ProjectMemberListEntry from "$lib/components/composites/project-components/settings/ProjectMemberListEntry.svelte"; |
| 3 | + import ProjectMemberListEntrySkeleton from "$lib/components/composites/project-components/settings/ProjectMemberListEntrySkeleton.svelte"; |
2 | 4 | import ProjectSettingsLayout from "$lib/components/composites/project-components/settings/ProjectSettingsLayout.svelte";
|
| 5 | + import Button from "$lib/components/primitives/button/button.svelte"; |
| 6 | + import Separator from "$lib/components/primitives/separator/separator.svelte"; |
3 | 7 |
|
4 | 8 | let { data } = $props();
|
5 |
| - const { projectId, loadingProject } = data; |
| 9 | + const { user, projectId, loadingProject, loadingMembers } = data; |
| 10 | + const numberOfSkeletons = 7; |
6 | 11 | </script>
|
7 | 12 |
|
8 | 13 | <svelte:head>
|
|
15 | 20 | {/await}
|
16 | 21 | </svelte:head>
|
17 | 22 |
|
18 |
| -<ProjectSettingsLayout {projectId} selectedTab="members">Members content</ProjectSettingsLayout> |
| 23 | +<ProjectSettingsLayout {projectId} selectedTab="members"> |
| 24 | + {#if user.isAdmin} |
| 25 | + <div class="flex flex-row items-center justify-between"> |
| 26 | + <h1>Manage Access</h1> |
| 27 | + <Button>Add User</Button> |
| 28 | + </div> |
| 29 | + {:else} |
| 30 | + <h1>Members</h1> |
| 31 | + {/if} |
| 32 | + <div class="flex flex-col w-full h-fit rounded-md border gap-3 py-2.5"> |
| 33 | + {#await loadingMembers} |
| 34 | + {#each { length: numberOfSkeletons }, i} |
| 35 | + <ProjectMemberListEntrySkeleton /> |
| 36 | + {#if i < numberOfSkeletons - 1} |
| 37 | + <Separator /> |
| 38 | + {/if} |
| 39 | + {/each} |
| 40 | + {:then members} |
| 41 | + {#each members as member, i} |
| 42 | + <!-- TODO: Replace isInvitationPending with actual value --> |
| 43 | + <ProjectMemberListEntry |
| 44 | + {member} |
| 45 | + isCurrentUser={member.id === user.id} |
| 46 | + isInvitationPending={i === 2} |
| 47 | + isAdminView={user.isAdmin} |
| 48 | + /> |
| 49 | + {#if i < members.length - 1} |
| 50 | + <Separator /> |
| 51 | + {/if} |
| 52 | + {/each} |
| 53 | + {:catch error} |
| 54 | + <div class="m-auto py-4"> |
| 55 | + <span class="text-error"> |
| 56 | + Loading Project Members failed{error ? `: ${error.message}` : "."} |
| 57 | + </span> |
| 58 | + </div> |
| 59 | + {/await} |
| 60 | + </div> |
| 61 | +</ProjectSettingsLayout> |
0 commit comments