diff --git a/web-admin/src/features/organizations/user-management/dialogs/AddGuestsDialog.svelte b/web-admin/src/features/organizations/user-management/dialogs/AddGuestsDialog.svelte index e2f13f2600c..9838f58d81c 100644 --- a/web-admin/src/features/organizations/user-management/dialogs/AddGuestsDialog.svelte +++ b/web-admin/src/features/organizations/user-management/dialogs/AddGuestsDialog.svelte @@ -43,6 +43,14 @@ let projectDropdownOpen = false; let selectedRole: "admin" | "editor" | "viewer" = "viewer"; let roleDropdownOpen = false; + let hasAutoSelectedProject = false; + + function resetDialogState() { + failedInvites = []; + selectedProjects = []; + selectedRole = "viewer"; + hasAutoSelectedProject = false; + } // Projects list $: projectsQuery = createAdminServiceListProjectsForOrganization( @@ -63,6 +71,20 @@ $: selectedRoleLabel = ORG_ROLES_OPTIONS.find((o) => o.value === selectedRole)?.label ?? ""; + $: selectedProjectsLabel = (() => { + if (selectedProjects.length === 0) return "Select projects"; + if (selectedProjects.length === 1) return selectedProjects[0]; + return `${selectedProjects.length} Project${selectedProjects.length > 1 ? "s" : ""}`; + })(); + + $: if (open && !hasAutoSelectedProject && projects.length > 0) { + const firstProjectName = projects[0]?.name; + if (firstProjectName) { + selectedProjects = [firstProjectName]; + hasAutoSelectedProject = true; + } + } + function toggleProjectSelection(projectName: string) { const idx = selectedProjects.indexOf(projectName); if (idx >= 0) { @@ -153,8 +175,7 @@ if (failedInvites.length === 0) { open = false; - selectedProjects = []; - selectedRole = "viewer"; + resetDialogState(); } }, validationMethod: "oninput", @@ -173,15 +194,11 @@ onOutsideClick={(e) => { e.preventDefault(); open = false; - failedInvites = []; - selectedProjects = []; - selectedRole = "viewer"; + resetDialogState(); }} - onOpenChange={(open) => { - if (!open) { - failedInvites = []; - selectedProjects = []; - selectedRole = "viewer"; + onOpenChange={(dialogOpen) => { + if (!dialogOpen) { + resetDialogState(); } }} > @@ -231,16 +248,17 @@ {:else if projects.length === 0}
No projects
{:else} - + - {selectedProjects.length > 0 - ? `${selectedProjects.length} Project${selectedProjects.length > 1 ? "s" : ""}` - : "Select projects"} + {selectedProjectsLabel} {#if projectDropdownOpen} @@ -253,7 +271,7 @@ toggleProjectSelection(p.name)} + onCheckedChange={() => toggleProjectSelection(p.name)} > {p.name}