226 lines
		
	
	
	
		
			7.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
		
		
			
		
	
	
			226 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> |