From 557498b80d8f5e3dcac0ccda7317157d775ddc19 Mon Sep 17 00:00:00 2001 From: Amit Sharma <74371312+Amit91848@users.noreply.github.com> Date: Thu, 4 Jul 2024 09:54:35 +0530 Subject: [PATCH] feat: embed: remove "Preview" tab and instead split code/preview layout 50/50 vertically (#15492) * feat: embed: remove "Preview" tab and instead split code/preview layout 50/50 vertically * fix: use single preview tab * fix e2e * add border radius * final e2e fix * fix: don't show preview tab component --------- Co-authored-by: Keith Williams Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com> --- .../playwright/embed-code-generator.e2e.ts | 37 ++-- packages/features/embed/Embed.tsx | 176 +++++++++--------- packages/features/embed/lib/EmbedTabs.tsx | 10 +- 3 files changed, 119 insertions(+), 104 deletions(-) diff --git a/apps/web/playwright/embed-code-generator.e2e.ts b/apps/web/playwright/embed-code-generator.e2e.ts index dec2200db9..28a0b4b7c2 100644 --- a/apps/web/playwright/embed-code-generator.e2e.ts +++ b/apps/web/playwright/embed-code-generator.e2e.ts @@ -59,8 +59,9 @@ test.describe("Embed Code Generator Tests", () => { orgSlug: null, }); - await goToPreviewTab(page); - + // To prevent early timeouts + // eslint-disable-next-line playwright/no-wait-for-timeout + await page.waitForTimeout(1000); await expectToContainValidPreviewIframe(page, { embedType: "inline", calLink: `${pro.username}/30-min`, @@ -96,7 +97,9 @@ test.describe("Embed Code Generator Tests", () => { orgSlug: null, }); - await goToPreviewTab(page); + // To prevent early timeouts + // eslint-disable-next-line playwright/no-wait-for-timeout + await page.waitForTimeout(1000); await expectToContainValidPreviewIframe(page, { embedType: "floating-popup", calLink: `${pro.username}/30-min`, @@ -132,7 +135,9 @@ test.describe("Embed Code Generator Tests", () => { orgSlug: null, }); - await goToPreviewTab(page); + // To prevent early timeouts + // eslint-disable-next-line playwright/no-wait-for-timeout + await page.waitForTimeout(1000); await expectToContainValidPreviewIframe(page, { embedType: "element-click", calLink: `${pro.username}/30-min`, @@ -170,8 +175,9 @@ test.describe("Embed Code Generator Tests", () => { orgSlug: null, }); - await goToPreviewTab(page); - + // To prevent early timeouts + // eslint-disable-next-line playwright/no-wait-for-timeout + await page.waitForTimeout(1000); await expectToContainValidPreviewIframe(page, { embedType: "inline", calLink: decodeURIComponent(embedUrl), @@ -227,7 +233,9 @@ test.describe("Embed Code Generator Tests", () => { orgSlug: org.slug, }); - await goToPreviewTab(page); + // To prevent early timeouts + // eslint-disable-next-line playwright/no-wait-for-timeout + await page.waitForTimeout(1000); await expectToContainValidPreviewIframe(page, { embedType: "inline", calLink: `${user.username}/30-min`, @@ -266,7 +274,9 @@ test.describe("Embed Code Generator Tests", () => { orgSlug: org.slug, }); - await goToPreviewTab(page); + // To prevent early timeouts + // eslint-disable-next-line playwright/no-wait-for-timeout + await page.waitForTimeout(1000); await expectToContainValidPreviewIframe(page, { embedType: "floating-popup", calLink: `${user.username}/30-min`, @@ -304,7 +314,9 @@ test.describe("Embed Code Generator Tests", () => { orgSlug: org.slug, }); - await goToPreviewTab(page); + // To prevent early timeouts + // eslint-disable-next-line playwright/no-wait-for-timeout + await page.waitForTimeout(1000); await expectToContainValidPreviewIframe(page, { embedType: "element-click", calLink: `${user.username}/30-min`, @@ -320,13 +332,6 @@ function chooseEmbedType(page: Page, embedType: EmbedType) { page.locator(`[data-testid=${embedType}]`).click(); } -async function goToPreviewTab(page: Page) { - // To prevent early timeouts - // eslint-disable-next-line playwright/no-wait-for-timeout - await page.waitForTimeout(1000); - await page.locator("[data-testid=horizontal-tab-Preview]").click(); -} - async function goToReactCodeTab(page: Page) { // To prevent early timeouts // eslint-disable-next-line playwright/no-wait-for-timeout diff --git a/packages/features/embed/Embed.tsx b/packages/features/embed/Embed.tsx index 9cf1f7310e..b64c17f657 100644 --- a/packages/features/embed/Embed.tsx +++ b/packages/features/embed/Embed.tsx @@ -715,6 +715,7 @@ const EmbedTypeCodeAndPreviewDialogContent = ({ label: "Bottom left", }, ]; + const previewTab = tabs.find((tab) => tab.name === "Preview"); return (
-
+
)}
-
+
tab.name === "Preview") : parsedTabs} + tabs={ + embedType === "email" + ? parsedTabs.filter((tab) => tab.name === "Preview") + : parsedTabs.filter((tab) => tab.name !== "Preview") + } linkShallow /> - {tabs.map((tab) => { - if (embedType !== "email") { - return ( -
-
- {tab.type === "code" ? ( - +
+ {tabs.map((tab) => { + if (embedType !== "email") { + if (tab.name === "Preview") return null; + return ( +
+ {tab.type === "code" && ( + + )} +
- ) : ( - + ); + } + + if (embedType === "email" && (tab.name !== "Preview" || !eventTypeData?.eventType)) return; + + return ( +
+
+ - )} +
+
-
- - - {tab.type === "code" ? ( - - ) : null} - -
- ); - } + ); + })} - if (embedType === "email" && (tab.name !== "Preview" || !eventTypeData?.eventType)) return; - - return ( -
-
- +
-
- - - - -
- ); - })} + )} +
+ + + + +
diff --git a/packages/features/embed/lib/EmbedTabs.tsx b/packages/features/embed/lib/EmbedTabs.tsx index 4c2dacc013..9b651efd60 100644 --- a/packages/features/embed/lib/EmbedTabs.tsx +++ b/packages/features/embed/lib/EmbedTabs.tsx @@ -36,7 +36,7 @@ export const tabs = [ return ( <>
- + {t("place_where_cal_widget_appear", { appName: APP_NAME })}
@@ -91,7 +91,7 @@ export const tabs = [ } return ( <> - {t("create_update_react_component")} + {t("create_update_react_component")}