<html> <head> <!-- <link rel="prerender" href="http://localhost:3000/free"> --> <script> if (!location.search.includes("nonResponsive")) { document.write('<meta name="viewport" content="width=device-width"/>'); } </script> <script> (function (C, A, L) { let p = function (a, ar) { a.q.push(ar); }; let d = C.document; C.Cal = C.Cal || function () { let cal = C.Cal; let ar = arguments; if (!cal.loaded) { cal.ns = {}; cal.q = cal.q || []; d.head.appendChild(d.createElement("script")).src = A; cal.loaded = true; } if (ar[0] === L) { const api = function () { p(api, arguments); }; const namespace = ar[1]; api.q = api.q || []; typeof namespace === "string" ? (cal.ns[namespace] = api) && p(api, ar) : p(cal, ar); return; } p(cal, ar); }; })(window, "//localhost:3002/dist/embed.umd.js", "init"); </script> <style> .debug { /* border: 1px solid black; */ margin-bottom: 5px; } .loader { color: green; } </style> </head> <body> <h3>This page has a non responsive version accessible <a href="?nonResponsive">here</a></h3> <h3>Pre-render test page available at <a href="?only=prerender-test">here</a></h3> <div> <button data-cal-link="free">Book with Free User</button> <div> <i >Corresponding Cal Link is being preloaded. Assuming that it would take you some time to click this as you are reading this text, it would open up super fast[If you are running a production build on local]. Try switching to slow 3G or create a custom Network configuration which is impossibly slow</i > </div> </div> <div id="namespaces-test"> <div class="debug" id="cal-booking-place-default"> <h2> Default Namespace(Cal)<i>[Dark Theme][inline][Guests(janedoe@gmail.com and test@gmail.com)]</i> </h2> <div> <i><a href="?only=ns:default">Test in Zen Mode</a></i> </div> <i class="last-action"> You would see last Booking page action in my place </i> <div style="max-height: 30vh; overflow: scroll" class="place"> <div> if you render booking embed in me, I would not let it be more than 30vh in height. So you would have to scroll to see the entire content </div> <div class="loader" id="cal-booking-loader-">Loading .....</div> </div> </div> <div class="debug" id="cal-booking-place-second"> <h2>Namespace "second"(Cal.ns.second)[Custom Styling][inline]</h2> <div> <i><a href="?only=ns:second">Test in Zen Mode</a></i> </div> <i class="last-action"> <i>You would see last Booking page action in my place</i> </i> <div class="place"> <div>If you render booking embed in me, I won't restrict you. The entire page is yours.</div> <button onclick="(function () {Cal.ns.second('ui', {styles:{eventTypeListItem:{backgroundColor:'blue'}}})})()"> Change <code>eventTypeListItem</code> bg color </button> <button onclick="(function () {Cal.ns.second('ui', {styles:{body:{background:'red'}}})})()"> Change <code>body</code> bg color </button> <div class="loader" id="cal-booking-loader-second">Loading .....</div> </div> </div> <div class="debug" id="cal-booking-place-third"> <h2>Namespace "third"(Cal.ns.third)[inline]</h2> <div> <i><a href="?only=ns:third">Test in Zen Mode</a></i> </div> <i class="last-action"> <i>You would see last Booking page action in my place</i> </i> <div style="width: 30%" class="place"> <div>If you render booking embed in me, I would not let you be more than 30% wide</div> <div class="loader" id="cal-booking-loader-third">Loading .....</div> </div> </div> <div class="debug" id="cal-booking-place-fourth"> <h2>Namespace "fourth"(Cal.ns.fourth)[Team Event Test][inline]</h2> <div> <i><a href="?only=ns:fourth">Test in Zen Mode</a></i> </div> <i class="last-action"> <i>You would see last Booking page action in my place</i> </i> <div style="width: 30%" class="place"> <div>If you render booking embed in me, I would not let you be more than 30% wide</div> <div class="loader" id="cal-booking-loader-third">Loading .....</div> </div> </div> </div> <script> const callback = function (e) { const detail = e.detail; const namespace = detail.namespace || "default"; if (detail.type === "linkReady") { document.querySelector(`#cal-booking-place-${namespace} .loader`).remove(); } document.querySelector(`#cal-booking-place-${namespace} .last-action`).innerHTML = JSON.stringify( e.detail ); }; const searchParams = new URL(document.URL).searchParams; const only = searchParams.get("only"); if (!only || only === "ns:default") { Cal("init", { debug: 1, origin: "http://localhost:3000", }); Cal("inline", { elementOrSelector: "#cal-booking-place-default .place", calLink: "pro?case=1", config: { name: "John Doe", email: "johndoe@gmail.com", notes: "Test Meeting", guests: ["janedoe@gmail.com", "test@gmail.com"], theme: "dark", }, }); Cal("on", { action: "*", callback, }); } if (!only || 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: 1, origin: "http://localhost:3000", }); // Bulk API is supported - Keep all configuration at one place. Cal.ns.second( [ "inline", { elementOrSelector: "#cal-booking-place-second .place", calLink: "pro?case=2", }, ], [ "ui", { styles: { body: { background: "white", }, eventTypeListItem: { backgroundColor: "#D3D3D3", }, enabledDateButton: { backgroundColor: "#D3D3D3", }, disabledDateButton: { backgroundColor: "lightslategray", }, }, }, ] ); Cal.ns.second("on", { action: "*", callback, }); } if (!only || 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: 1, origin: "http://localhost:3000", }); Cal.ns.third( [ "inline", { elementOrSelector: "#cal-booking-place-third .place", calLink: "pro/30min", }, ], [ "ui", { styles: { body: { background: "white", }, }, }, ] ); Cal.ns.third("on", { action: "*", callback, }); } if (!only || only === "ns:fourth") { Cal("init", "fourth", { debug: 1, origin: "http://localhost:3000", }); Cal.ns.fourth( [ "inline", { elementOrSelector: "#cal-booking-place-fourth .place", calLink: "team/test-team", }, ], [ "ui", { styles: { body: { background: "white", }, }, }, ] ); Cal.ns.fourth("on", { action: "*", callback, }); } if (!only || only === "prerender-test") { Cal("preload", { calLink: "free", }); } </script> <script></script> </body> </html>