diff --git a/apps/web/modules/organization/settings/teams/components/edit-memberships/edit-memberships.tsx b/apps/web/modules/organization/settings/teams/components/edit-memberships/edit-memberships.tsx index 5dcce36ac5..3994a9b196 100644 --- a/apps/web/modules/organization/settings/teams/components/edit-memberships/edit-memberships.tsx +++ b/apps/web/modules/organization/settings/teams/components/edit-memberships/edit-memberships.tsx @@ -26,12 +26,15 @@ export const EditMemberships = async ({ return (
-
-
{t("common.full_name")}
-
{t("common.email")}
- {canDoRoleManagement &&
{t("common.role")}
} -
{t("common.status")}
-
+
+
{t("common.full_name")}
+
{t("common.email")}
+ + {canDoRoleManagement &&
{t("common.role")}
} + +
{t("common.status")}
+ +
{t("common.actions")}
{role && ( diff --git a/apps/web/modules/organization/settings/teams/components/edit-memberships/member-actions.tsx b/apps/web/modules/organization/settings/teams/components/edit-memberships/member-actions.tsx index 4ff70c973b..b8e31a4aa4 100644 --- a/apps/web/modules/organization/settings/teams/components/edit-memberships/member-actions.tsx +++ b/apps/web/modules/organization/settings/teams/components/edit-memberships/member-actions.tsx @@ -110,47 +110,46 @@ export const MemberActions = ({ organization, member, invite, showDeleteButton } return (
- {showDeleteButton && ( - <> - - - - - )} + + + - {invite && ( - <> - - - + + + - - - - - )} + + + +
{allMembers.map((member) => (
-
-

{member.name}

+
+

{member.name}

-
- {member.email} +
+

{member.email}

-
- {canDoRoleManagement && allMembers?.length > 0 && ( + {canDoRoleManagement && allMembers?.length > 0 && ( +
- )} -
-
{getMembershipBadge(member)}
-
- -
+
+ )} +
{getMembershipBadge(member)}
+ +
))}
diff --git a/apps/web/modules/organization/settings/teams/components/invite-member/bulk-invite-tab.tsx b/apps/web/modules/organization/settings/teams/components/invite-member/bulk-invite-tab.tsx index 91680395f6..1f28ca6284 100644 --- a/apps/web/modules/organization/settings/teams/components/invite-member/bulk-invite-tab.tsx +++ b/apps/web/modules/organization/settings/teams/components/invite-member/bulk-invite-tab.tsx @@ -39,19 +39,23 @@ export const BulkInviteTab = ({ } Papa.parse(csvFile, { skipEmptyLines: true, - comments: "Full Name,Email Address,Role", - complete: (results: ParseResult) => { + header: true, + transformHeader: (header) => { + if (header === "Full Name") return "name"; + if (header === "Email Address") return "email"; + if (header === "Role") return "role"; + return header; + }, + complete: (results: ParseResult<{ name: string; email: string; role: string }>) => { const members = results.data.map((csv) => { - const [name, email, role] = csv; - - let orgRole = canDoRoleManagement ? role.trim().toLowerCase() : "owner"; + let orgRole = canDoRoleManagement ? csv.role.trim().toLowerCase() : "owner"; if (!isFormbricksCloud) { orgRole = orgRole === "billing" ? "owner" : orgRole; } return { - name: name.trim(), - email: email.trim(), + name: csv.name.trim(), + email: csv.email.trim(), role: orgRole as TOrganizationRole, teamIds: [], }; @@ -60,7 +64,6 @@ export const BulkInviteTab = ({ ZInvitees.parse(members); onSubmit(members); } catch (err) { - console.error(err.message); toast.error(t("environments.settings.general.please_check_csv_file")); } setOpen(false); diff --git a/apps/web/playwright/organization.spec.ts b/apps/web/playwright/organization.spec.ts index e1ef5aaa44..5b839afd38 100644 --- a/apps/web/playwright/organization.spec.ts +++ b/apps/web/playwright/organization.spec.ts @@ -48,7 +48,7 @@ test.describe("Invite, accept and remove organization member", async () => { await test.step("Copy invite Link", async () => { await expect(page.locator("#membersInfoWrapper")).toBeVisible(); - const lastMemberInfo = page.locator("#membersInfoWrapper > .singleMemberInfo:last-child"); + const lastMemberInfo = page.locator("#membersInfoWrapper > #singleMemberInfo:last-child"); await expect(lastMemberInfo).toBeVisible(); const pendingSpan = lastMemberInfo.locator("span").locator("span").filter({ hasText: "Pending" }); @@ -106,7 +106,7 @@ test.describe("Invite, accept and remove organization member", async () => { // await expect(page.locator("#membersInfoWrapper")).toBeVisible(); - // const lastMemberInfo = page.locator("#membersInfoWrapper > .singleMemberInfo:last-child"); + // const lastMemberInfo = page.locator("#membersInfoWrapper > #singleMemberInfo:last-child"); // await expect(lastMemberInfo).toBeVisible(); // const deleteMemberButton = lastMemberInfo.locator("#deleteMemberButton");