484 lines
11 KiB
TypeScript
484 lines
11 KiB
TypeScript
import type { GlobalCal } from "./src/embed";
|
|
|
|
const Cal = window.Cal as GlobalCal;
|
|
const callback = function (e) {
|
|
const detail = e.detail;
|
|
console.log("Event: ", e.type, detail);
|
|
};
|
|
|
|
document.addEventListener("click", (e) => {
|
|
const target = e.target as HTMLElement;
|
|
if ("href" in target && typeof target.href === "string") {
|
|
const toUrl = new URL(target.href);
|
|
const pageUrl = new URL(document.URL);
|
|
for (const [name, value] of pageUrl.searchParams.entries()) {
|
|
if (toUrl.searchParams.get(name) === null) {
|
|
toUrl.searchParams.append(decodeURIComponent(name), value);
|
|
}
|
|
}
|
|
location.href = `?${toUrl.searchParams.toString()}#${toUrl.hash}`;
|
|
e.preventDefault();
|
|
}
|
|
});
|
|
|
|
const searchParams = new URL(document.URL).searchParams;
|
|
const only = searchParams.get("only");
|
|
const colorScheme = searchParams.get("color-scheme");
|
|
const prerender = searchParams.get("prerender");
|
|
if (colorScheme) {
|
|
document.documentElement.style.colorScheme = colorScheme;
|
|
}
|
|
const themeInParam = searchParams.get("theme");
|
|
const validThemes = ["light", "dark", "auto"] as const;
|
|
const theme = validThemes.includes((themeInParam as (typeof validThemes)[number]) || "")
|
|
? (themeInParam as (typeof validThemes)[number])
|
|
: null;
|
|
if (themeInParam && !theme) {
|
|
throw new Error(`Invalid theme: ${themeInParam}`);
|
|
}
|
|
|
|
const calLink = searchParams.get("cal-link");
|
|
|
|
if (only === "all" || only === "ns:default") {
|
|
Cal("init", {
|
|
debug: true,
|
|
calOrigin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal("inline", {
|
|
elementOrSelector: "#cal-booking-place-default .place",
|
|
calLink: "pro?case=1",
|
|
config: {
|
|
iframeAttrs: {
|
|
id: "cal-booking-place-default-iframe",
|
|
},
|
|
name: "John",
|
|
email: "johndoe@gmail.com",
|
|
notes: "Test Meeting",
|
|
guests: ["janedoe@example.com", "test@example.com"],
|
|
theme: "dark",
|
|
},
|
|
});
|
|
Cal("on", {
|
|
action: "*",
|
|
callback,
|
|
});
|
|
}
|
|
if (only === "all" || only === "ns:second") {
|
|
// Create a namespace "second". It can be accessed as Cal.ns.second with the exact same API as Cal
|
|
Cal("init", "second", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal.ns.second(
|
|
"inline",
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
//@ts-ignore
|
|
{
|
|
elementOrSelector: "#cal-booking-place-second .place",
|
|
calLink: "pro?case=2",
|
|
config: {
|
|
iframeAttrs: {
|
|
id: "cal-booking-place-second-iframe",
|
|
},
|
|
theme: "auto",
|
|
},
|
|
}
|
|
);
|
|
Cal.ns.second("on", {
|
|
action: "*",
|
|
callback,
|
|
});
|
|
}
|
|
if (only === "all" || only === "ns:third") {
|
|
// Create a namespace "third". It can be accessed as Cal.ns.second with the exact same API as Cal
|
|
Cal("init", "third", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal.ns.third(
|
|
[
|
|
"inline",
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
//@ts-ignore
|
|
{
|
|
elementOrSelector: "#cal-booking-place-third .place",
|
|
calLink: "pro/30min",
|
|
config: {
|
|
iframeAttrs: {
|
|
id: "cal-booking-place-third-iframe",
|
|
},
|
|
},
|
|
},
|
|
],
|
|
[
|
|
"ui",
|
|
{
|
|
styles: {
|
|
body: {
|
|
background: "transparent",
|
|
},
|
|
branding: {
|
|
brandColor: "#81e61c",
|
|
lightColor: "#494545",
|
|
lighterColor: "#4c4848",
|
|
lightestColor: "#7c7777",
|
|
highlightColor: "#9b0e0e",
|
|
medianColor: "black",
|
|
},
|
|
enabledDateButton: {
|
|
backgroundColor: "red",
|
|
},
|
|
disabledDateButton: {
|
|
backgroundColor: "green",
|
|
},
|
|
},
|
|
},
|
|
]
|
|
);
|
|
Cal.ns.third("on", {
|
|
action: "*",
|
|
callback,
|
|
});
|
|
}
|
|
if (only === "all" || only === "ns:fourth") {
|
|
Cal("init", "fourth", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
Cal.ns.fourth(
|
|
[
|
|
"inline",
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
//@ts-ignore
|
|
{
|
|
elementOrSelector: "#cal-booking-place-fourth .place",
|
|
calLink: "team/seeded-team",
|
|
config: {
|
|
iframeAttrs: {
|
|
id: "cal-booking-place-fourth-iframe",
|
|
},
|
|
},
|
|
},
|
|
],
|
|
[
|
|
"ui",
|
|
{
|
|
styles: {
|
|
body: {
|
|
background: "transparent",
|
|
},
|
|
branding: {
|
|
brandColor: "#81e61c",
|
|
lightColor: "#494545",
|
|
lighterColor: "#4c4848",
|
|
lightestColor: "#7c7777",
|
|
highlightColor: "#9b0e0e",
|
|
medianColor: "black",
|
|
},
|
|
},
|
|
},
|
|
]
|
|
);
|
|
Cal.ns.fourth("on", {
|
|
action: "*",
|
|
callback,
|
|
});
|
|
}
|
|
if (only === "all" || only === "ns:fifth") {
|
|
Cal("init", "fifth", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
Cal.ns.fifth([
|
|
"inline",
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
//@ts-ignore
|
|
{
|
|
elementOrSelector: "#cal-booking-place-fifth .place",
|
|
calLink: "team/seeded-team/collective-seeded-team-event",
|
|
config: {
|
|
iframeAttrs: {
|
|
id: "cal-booking-place-fifth-iframe",
|
|
},
|
|
},
|
|
},
|
|
]);
|
|
Cal.ns.fifth("on", {
|
|
action: "*",
|
|
callback,
|
|
});
|
|
}
|
|
|
|
if (only === "all" || only === "prerender-test") {
|
|
Cal("init", "e2ePrerenderLightTheme", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
Cal.ns.e2ePrerenderLightTheme("prerender", {
|
|
calLink: "free/30min",
|
|
type: "modal",
|
|
});
|
|
}
|
|
|
|
if (only === "all" || only === "preload-test") {
|
|
Cal("init", "preloadTest", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
Cal.ns.preloadTest("preload", {
|
|
calLink: "free/30min",
|
|
});
|
|
}
|
|
|
|
if (only === "all" || only === "inline-routing-form") {
|
|
Cal("init", "inline-routing-form", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
Cal.ns["inline-routing-form"]([
|
|
"inline",
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
//@ts-ignore
|
|
{
|
|
elementOrSelector: "#cal-booking-place-inline-routing-form .place",
|
|
calLink: "forms/948ae412-d995-4865-875a-48302588de03",
|
|
config: {
|
|
iframeAttrs: {
|
|
id: "cal-booking-place-inline-routing-form-iframe",
|
|
},
|
|
},
|
|
},
|
|
]);
|
|
}
|
|
|
|
if (only === "all" || only === "hideEventTypeDetails") {
|
|
const identifier = "hideEventTypeDetails";
|
|
Cal("init", identifier, {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal.ns.hideEventTypeDetails(
|
|
[
|
|
"inline",
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
//@ts-ignore
|
|
{
|
|
elementOrSelector: `#cal-booking-place-${identifier} .place`,
|
|
calLink: "free/30min",
|
|
config: {
|
|
iframeAttrs: {
|
|
id: `cal-booking-place-${identifier}-iframe`,
|
|
},
|
|
},
|
|
},
|
|
],
|
|
[
|
|
"ui",
|
|
{
|
|
hideEventTypeDetails: true,
|
|
},
|
|
]
|
|
);
|
|
}
|
|
|
|
if (only === "conflicting-theme") {
|
|
Cal("init", "conflictingTheme", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal.ns.conflictingTheme("inline", {
|
|
elementOrSelector: "#cal-booking-place-conflicting-theme .dark",
|
|
calLink: "pro/30min",
|
|
config: {
|
|
theme: "dark",
|
|
},
|
|
});
|
|
Cal.ns.conflictingTheme("inline", {
|
|
elementOrSelector: "#cal-booking-place-conflicting-theme .light",
|
|
calLink: "pro/30min",
|
|
config: {
|
|
theme: "light",
|
|
},
|
|
});
|
|
}
|
|
|
|
Cal("init", "popupDarkTheme", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal("init", "e2ePopupLightTheme", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal("init", "popupHideEventTypeDetails", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal.ns.popupHideEventTypeDetails("ui", {
|
|
hideEventTypeDetails: true,
|
|
});
|
|
|
|
Cal("init", "popupReschedule", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal("init", "popupAutoTheme", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal("init", "popupTeamLinkLightTheme", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal("init", "popupTeamLinkDarkTheme", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal("init", "popupTeamLinkDarkTheme", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal("init", "popupTeamLinksList", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal("init", "popupPaidEvent", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal("init", "floatingButton", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal("init", "routingFormAuto", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal("init", "routingFormDark", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
if (only === "all" || only == "ns:floatingButton") {
|
|
if (prerender == "true") {
|
|
Cal.ns.floatingButton("prerender", {
|
|
calLink: calLink || "pro",
|
|
type: "floatingButton",
|
|
});
|
|
}
|
|
Cal.ns.floatingButton("floatingButton", {
|
|
calLink: calLink || "pro",
|
|
config: {
|
|
iframeAttrs: {
|
|
id: "floatingtest",
|
|
},
|
|
name: "John",
|
|
email: "johndoe@gmail.com",
|
|
notes: "Test Meeting",
|
|
guests: ["janedoe@example.com", "test@example.com"],
|
|
...(theme ? { theme } : {}),
|
|
},
|
|
});
|
|
}
|
|
|
|
if (only === "all" || only == "ns:monthView") {
|
|
// Create a namespace "second". It can be accessed as Cal.ns.second with the exact same API as Cal
|
|
Cal("init", "monthView", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal.ns.monthView(
|
|
"inline",
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
//@ts-ignore
|
|
{
|
|
elementOrSelector: "#cal-booking-place-monthView .place",
|
|
calLink: "pro/paid",
|
|
config: {
|
|
iframeAttrs: {
|
|
id: "cal-booking-place-monthView-iframe",
|
|
},
|
|
layout: "month_view",
|
|
},
|
|
}
|
|
);
|
|
Cal.ns.monthView("on", {
|
|
action: "*",
|
|
callback,
|
|
});
|
|
}
|
|
|
|
if (only === "all" || only == "ns:weekView") {
|
|
// Create a namespace "second". It can be accessed as Cal.ns.second with the exact same API as Cal
|
|
Cal("init", "weekView", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal.ns.weekView(
|
|
"inline",
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
//@ts-ignore
|
|
{
|
|
elementOrSelector: "#cal-booking-place-weekView .place",
|
|
calLink: "pro/paid",
|
|
config: {
|
|
iframeAttrs: {
|
|
id: "cal-booking-place-weekView-iframe",
|
|
},
|
|
layout: "week_view",
|
|
},
|
|
}
|
|
);
|
|
Cal.ns.weekView("on", {
|
|
action: "*",
|
|
callback,
|
|
});
|
|
}
|
|
|
|
if (only === "all" || only == "ns:columnView") {
|
|
// Create a namespace "second". It can be accessed as Cal.ns.second with the exact same API as Cal
|
|
Cal("init", "columnView", {
|
|
debug: true,
|
|
origin: "http://localhost:3000",
|
|
});
|
|
|
|
Cal.ns.columnView(
|
|
"inline",
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
//@ts-ignore
|
|
{
|
|
elementOrSelector: "#cal-booking-place-columnView .place",
|
|
calLink: "pro/paid",
|
|
config: {
|
|
iframeAttrs: {
|
|
id: "cal-booking-place-columnView-iframe",
|
|
},
|
|
layout: "column_view",
|
|
},
|
|
}
|
|
);
|
|
Cal.ns.columnView("on", {
|
|
action: "*",
|
|
callback,
|
|
});
|
|
}
|