diff --git a/dashboard/src/components/settings/InviteTeamMemberDialog.vue b/dashboard/src/components/settings/InviteTeamMemberDialog.vue
index 964ef95..f222be5 100644
--- a/dashboard/src/components/settings/InviteTeamMemberDialog.vue
+++ b/dashboard/src/components/settings/InviteTeamMemberDialog.vue
@@ -21,27 +21,28 @@
/>
-
-
+
+
+
-
-
-
-
-
- {{ $t('Add') }}
-
+
+
+
+
+ {{ $t('Add') }}
+
+
@@ -76,7 +77,7 @@
role.value !== roleToRemove,
);
},
- inviteMember() {
+ async inviteMember() {
if (!this.username) {
toast.error(this.$t('Username is required'));
return;
}
+ if (!this.$team?.inviteTeamMember) {
+ toast.error(this.$t('Team service is not available'));
+ return;
+ }
if (this.$team.inviteTeamMember.loading) return;
- toast.success(this.$t('Member added to team'), { duration: 2000 });
- this.$team.inviteTeamMember.submit({
- username: this.username,
- roles: this.selectedRoles.map((role) => role.value),
- });
- this.hide();
- setTimeout(() => {
- if (this.$team?.getTeamMembers) {
- this.$team.getTeamMembers.submit();
- }
- this.$emit('success');
- }, 500);
+ try {
+ await this.$team.inviteTeamMember.submit({
+ username: this.username,
+ roles: this.selectedRoles.map((role) => role.value),
+ });
+ toast.success(this.$t('Member added to team'), { duration: 2000 });
+ this.hide();
+ setTimeout(() => {
+ if (this.$team?.getTeamMembers) {
+ this.$team.getTeamMembers.submit();
+ }
+ this.$emit('success');
+ }, 500);
+ } catch (error) {
+ // Error will be displayed in the alert component
+ console.error('Failed to invite team member:', error);
+ }
},
hide() {
this.showDialog = false;
@@ -266,6 +282,29 @@ export default {
width: 100%;
}
+.role-select-row {
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+}
+
+.role-select-label {
+ font-size: 14px;
+ font-weight: 500;
+ color: var(--n-text-color);
+ margin-bottom: 0;
+}
+
+.role-select-row .flex {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+
+.role-select-row .n-select {
+ flex: 1;
+}
+
:deep(.invite-member-modal .n-card__action) {
padding: 16px 24px;
}