225 lines
		
	
	
	
		
			7.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			225 lines
		
	
	
	
		
			7.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <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 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 () {
 | |
|                 api.q.push(arguments);
 | |
|               };
 | |
|               const namespace = arguments[1];
 | |
|               api.q = api.q || [];
 | |
|               namespace ? (cal.ns[namespace] = api) : null;
 | |
|             }
 | |
|             cal.q.push(ar);
 | |
|           };
 | |
|       })(window, "//localhost:3002/dist/embed.umd.js", "init");
 | |
|     </script>
 | |
|     <script>
 | |
|       Cal("init");
 | |
| 
 | |
|       // Create a namespace "second". It can be accessed as Cal.ns.second with the exact same API as Cal
 | |
|       Cal("init", "second");
 | |
| 
 | |
|       // Create a namespace "third". It can be accessed as Cal.ns.second with the exact same API as Cal
 | |
|       Cal("init", "third");
 | |
|     </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="?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">
 | |
|         <h2>Default Namespace(Cal)<i>[Black Theme][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 id="booking-status-"> You would see last Booking page action in my place </i>
 | |
|         <div id="cal-booking-place-" style="max-height: 30vh; overflow: scroll">
 | |
|           <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">
 | |
|         <h2>Namespace "second"(Cal.ns.second)[Custom Styling]</h2>
 | |
|         <div>
 | |
|           <i><a href="?only=ns:second">Test in Zen Mode</a></i>
 | |
|         </div>
 | |
|         <i id="booking-status-second">
 | |
|           <i>You would see last Booking page action in my place</i>
 | |
|         </i>
 | |
|         <div id="cal-booking-place-second">
 | |
|           <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">
 | |
|         <h2>Namespace "third"(Cal.ns.third)</h2>
 | |
|         <div>
 | |
|           <i><a href="?only=ns:third">Test in Zen Mode</a></i>
 | |
|         </div>
 | |
|         <i id="booking-status-third">
 | |
|           <i>You would see last Booking page action in my place</i>
 | |
|         </i>
 | |
|         <div id="cal-booking-place-third" style="width: 30%">
 | |
|           <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 searchParams = new URL(document.URL).searchParams;
 | |
|       const only = searchParams.get("only");
 | |
|       // In prerender-test, we would want to test just the prerender case and nothing else.
 | |
|       if (searchParams.get("prerender-test") === null) {
 | |
|         if (!only || only === "ns:default") {
 | |
|           Cal("inline", {
 | |
|             elementOrSelector: "#cal-booking-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",
 | |
|             },
 | |
|           });
 | |
|         }
 | |
|         if (!only || only === "ns:second") {
 | |
|           // Bulk API is supported - Keep all configuration at one place.
 | |
|           Cal.ns.second(
 | |
|             [
 | |
|               "inline",
 | |
|               {
 | |
|                 elementOrSelector: "#cal-booking-place-second",
 | |
|                 calLink: "pro?case=2",
 | |
|               },
 | |
|             ],
 | |
|             [
 | |
|               "ui",
 | |
|               {
 | |
|                 styles: {
 | |
|                   body: {
 | |
|                     background: "white",
 | |
|                   },
 | |
|                   eventTypeListItem: {
 | |
|                     backgroundColor: "#D3D3D3",
 | |
|                   },
 | |
|                   enabledDateButton: {
 | |
|                     backgroundColor: "#D3D3D3",
 | |
|                   },
 | |
|                   disabledDateButton: {
 | |
|                     backgroundColor: "lightslategray",
 | |
|                   },
 | |
|                 },
 | |
|               },
 | |
|             ]
 | |
|           );
 | |
|         }
 | |
| 
 | |
|         if (!only || only === "ns:third") {
 | |
|           Cal.ns.third(
 | |
|             [
 | |
|               "inline",
 | |
|               {
 | |
|                 elementOrSelector: "#cal-booking-place-third",
 | |
|                 calLink: "pro?case=3",
 | |
|               },
 | |
|             ],
 | |
|             [
 | |
|               "ui",
 | |
|               {
 | |
|                 styles: {
 | |
|                   body: {
 | |
|                     background: "white",
 | |
|                   },
 | |
|                 },
 | |
|               },
 | |
|             ]
 | |
|           );
 | |
|         }
 | |
|       } else {
 | |
|         document.getElementById("namespaces-test").style.display = "none";
 | |
|       }
 | |
| 
 | |
|       Cal("preload", {
 | |
|         calLink: "free",
 | |
|       });
 | |
|     </script>
 | |
|     <script>
 | |
|       const callback = function (e) {
 | |
|         const detail = e.detail;
 | |
|         const namespace = detail.namespace;
 | |
| 
 | |
|         if (detail.type === "linkReady") {
 | |
|           document.getElementById("cal-booking-loader-" + namespace).remove();
 | |
|         }
 | |
| 
 | |
|         document.getElementById(`booking-status-${namespace}`).innerHTML = JSON.stringify(e.detail);
 | |
|       };
 | |
| 
 | |
|       Cal("on", {
 | |
|         action: "*",
 | |
|         callback,
 | |
|       });
 | |
|       Cal.ns.second("on", {
 | |
|         action: "*",
 | |
|         callback,
 | |
|       });
 | |
|       Cal.ns.third("on", {
 | |
|         action: "*",
 | |
|         callback,
 | |
|       });
 | |
|     </script>
 | |
|   </body>
 | |
| </html>
 | 
