From 3a293277618627268c183cf7471d562fe0bf010d Mon Sep 17 00:00:00 2001
From: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
Date: Wed, 12 Feb 2025 16:15:47 +0530
Subject: [PATCH] fix: overlapping-dropdown-bookings-page (#19216)
---
.../components/booking/BookingListItem.tsx | 105 +++++++++---------
apps/web/playwright/bookings-list.e2e.ts | 18 +--
2 files changed, 63 insertions(+), 60 deletions(-)
diff --git a/apps/web/components/booking/BookingListItem.tsx b/apps/web/components/booking/BookingListItem.tsx
index 4b713967ff..556f4f31ba 100644
--- a/apps/web/components/booking/BookingListItem.tsx
+++ b/apps/web/components/booking/BookingListItem.tsx
@@ -38,6 +38,7 @@ import {
DropdownMenuLabel,
DropdownMenuSeparator,
DropdownMenuTrigger,
+ DropdownMenuPortal,
Icon,
MeetingTimeInTimezones,
showToast,
@@ -909,71 +910,73 @@ const Attendee = (attendeeProps: AttendeeProps & NoShowProps) => {
onClick={(e) => e.stopPropagation()}
className="radix-state-open:text-blue-500 transition hover:text-blue-500">
{noShow ? (
-
+ <>
{name || email}
-
+ >
) : (
<>{name || email}>
)}
-
- {!isSmsCalEmail(email) && (
+
+
+ {!isSmsCalEmail(email) && (
+
+ {
+ setOpenDropdown(false);
+ e.stopPropagation();
+ }}>
+ {t("email")}
+
+
+ )}
+
{
+ e.preventDefault();
+ const isEmailCopied = isSmsCalEmail(email);
+ copyToClipboard(isEmailCopied ? email : phoneNumber ?? "");
setOpenDropdown(false);
- e.stopPropagation();
+ showToast(isEmailCopied ? t("email_copied") : t("phone_number_copied"), "success");
}}>
- {t("email")}
+ {!isCopied ? t("copy") : t("copied")}
- )}
-
- {
- e.preventDefault();
- const isEmailCopied = isSmsCalEmail(email);
- copyToClipboard(isEmailCopied ? email : phoneNumber ?? "");
- setOpenDropdown(false);
- showToast(isEmailCopied ? t("email_copied") : t("phone_number_copied"), "success");
- }}>
- {!isCopied ? t("copy") : t("copied")}
-
-
-
- {isBookingInPast && (
-
- {noShow ? (
- {
- e.preventDefault();
- setOpenDropdown(false);
- toggleNoShow({ attendee: { noShow: false, email }, bookingUid });
- }}
- StartIcon="eye">
- {t("unmark_as_no_show")}
-
- ) : (
- {
- e.preventDefault();
- setOpenDropdown(false);
- toggleNoShow({ attendee: { noShow: true, email }, bookingUid });
- }}
- StartIcon="eye-off">
- {t("mark_as_no_show")}
-
- )}
-
- )}
-
+ {isBookingInPast && (
+
+ {noShow ? (
+ {
+ e.preventDefault();
+ setOpenDropdown(false);
+ toggleNoShow({ attendee: { noShow: false, email }, bookingUid });
+ }}
+ StartIcon="eye">
+ {t("unmark_as_no_show")}
+
+ ) : (
+ {
+ e.preventDefault();
+ setOpenDropdown(false);
+ toggleNoShow({ attendee: { noShow: true, email }, bookingUid });
+ }}
+ StartIcon="eye-off">
+ {t("mark_as_no_show")}
+
+ )}
+
+ )}
+
+
);
};
diff --git a/apps/web/playwright/bookings-list.e2e.ts b/apps/web/playwright/bookings-list.e2e.ts
index 2960d0ebeb..6ee5ff75e4 100644
--- a/apps/web/playwright/bookings-list.e2e.ts
+++ b/apps/web/playwright/bookings-list.e2e.ts
@@ -90,12 +90,12 @@ test.describe("Bookings", () => {
const titleAndAttendees = firstPastBooking.locator('[data-testid="title-and-attendees"]');
const firstGuest = firstPastBooking.locator('[data-testid="guest"]').nth(0);
await firstGuest.click();
- await expect(titleAndAttendees.locator('[data-testid="unmark-no-show"]')).toBeHidden();
- await expect(titleAndAttendees.locator('[data-testid="mark-no-show"]')).toBeVisible();
- await titleAndAttendees.locator('[data-testid="mark-no-show"]').click();
+ await expect(page.locator('[data-testid="unmark-no-show"]')).toBeHidden();
+ await expect(page.locator('[data-testid="mark-no-show"]')).toBeVisible();
+ await page.locator('[data-testid="mark-no-show"]').click();
await firstGuest.click();
- await expect(titleAndAttendees.locator('[data-testid="unmark-no-show"]')).toBeVisible();
- await expect(titleAndAttendees.locator('[data-testid="mark-no-show"]')).toBeHidden();
+ await expect(page.locator('[data-testid="unmark-no-show"]')).toBeVisible();
+ await expect(page.locator('[data-testid="mark-no-show"]')).toBeHidden();
await webhookReceiver.waitForRequestCount(1);
const [request] = webhookReceiver.requestList;
const body = request.body;
@@ -181,11 +181,11 @@ test.describe("Bookings", () => {
const titleAndAttendees = firstPastBooking.locator('[data-testid="title-and-attendees"]');
const firstGuest = firstPastBooking.locator('[data-testid="guest"]').nth(0);
await firstGuest.click();
- await expect(titleAndAttendees.locator('[data-testid="mark-no-show"]')).toBeVisible();
- await titleAndAttendees.locator('[data-testid="mark-no-show"]').click();
+ await expect(page.locator('[data-testid="mark-no-show"]')).toBeVisible();
+ await page.locator('[data-testid="mark-no-show"]').click();
await firstGuest.click();
- await expect(titleAndAttendees.locator('[data-testid="unmark-no-show"]')).toBeVisible();
- await expect(titleAndAttendees.locator('[data-testid="mark-no-show"]')).toBeHidden();
+ await expect(page.locator('[data-testid="unmark-no-show"]')).toBeVisible();
+ await expect(page.locator('[data-testid="mark-no-show"]')).toBeHidden();
await webhookReceiver.waitForRequestCount(1);
const [request] = webhookReceiver.requestList;
const body = request.body;