This is a custom code placeholder.
Switch to Preview or publish the page
to see how your code works.
Double-click to edit
<link href="https://vjs.zencdn.net/7.20.3/video-js.css" rel="stylesheet" /> <style> *, body { padding: 0; margin: 0; box-sizing: border-box; } .demo { // width: 100vw; height: 100vh; display: flex; justify-content: center; align-items: center; opacity: 0; transition: opacity 0.3s ease; position: relative; } .center { width: 100%; height: auto; position: absolute; top: 0; } .video-js { box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3); } </style> <div class="demo"> <div class="center"> <video id="player" class="video-js" controls playsinline preload="auto" autoplay="muted" > <source src="https://multimedia.postmaster.inspiraholidays.com/inspirahold-z/recordings/9195f3f6-1867-4f83-8ff9-6d1d7267f5f0.mp4" type="video/mp4" /> </video> </div> </div> <script src="https://vjs.zencdn.net/7.20.3/video.min.js"></script> <script> const options = { muted: true, language: "en", preload: "auto", fluid: true, autoplay: 'muted', controls: false, loop: true, html5: { hls: { overrideNative: true, limitRenditionByPlayerDimensions: true, useDevicePixelRatio: true, // bandwidth: 16777216, }, nativeAudioTracks: false, nativeVideoTracks: false, useBandwidthFromLocalStorage: true, }, controlBar: { pictureInPictureToggle: false, }, }; setTimeout(() => { const player = videojs("player", options, () => { let element = document.querySelector(".demo"); element.style.opacity = "1"; }); player.ready(function() { setTimeout(function() { player.autoplay('muted'); player.fluid('true') }, 1000); }); //video.httpSourceSelector(); }, 500); </script>
Discover Paradise with Grand Solmar at Rancho San Lucas
Imagine traveling on a winding road through secluded Cabo San Lucas desert landscapes when suddenly appearing before you on the horizon is the vast expanse of the Pacific Ocean. Continuing your descent through a private resort community toward the huddle of buildings nestled on beachfront terrain, you encounter a peaceful disconnect from the conundrum of the outside world, and at last: you’re home. 

Located just north of Cabo San Lucas on a stretch of private beach, Grand Solmar at Rancho San Lucas is a vacation destination like no other. Endless ocean views and gentle sea breezes are just the beginning of your stay in paradise. Offering the option of an All-Inclusive or European Plan, this oceanfront resort features a Greg Norman Signature golf course, luxurious full-service spa, flavorsome cuisine, infinity pools, and a unique lagoon with activities and water slides. 

Built for adventure and leisure alike, this incredible retreat leaves the ordinary behind to deliver an unforgettable experience.
This is a custom code placeholder.
Switch to Preview or publish the page
to see how your code works.
Double-click to edit
<button onclick="Previous()" class="btn-back-redirect">Go back</button> <script> function Previous() { window.history.back(); } </script> <style scoped> .btn-back-redirect { width: 7rem; background-color: rgb(0, 0, 0); font-family: Poppins, Arial, sans-serif; font-size: small; font-weight: 700; color: #ffffff; border-radius: 2rem; padding: 0.4rem 0rem; text-transform: uppercase; text-align: center; cursor: pointer; } </style>
This is a custom code placeholder.
Switch to Preview or publish the page
to see how your code works.
Double-click to edit
<script src="https://unpkg.com/vue@3.2.41/dist/vue.global.js"></script> <!-- <script src="https://unpkg.com/@vuepic/vue-datepicker@3.5.2/dist/vue-datepicker.iife.js" ></script> --> <link rel="stylesheet" href="https://unpkg.com/@vuepic/vue-datepicker@3.5.2/dist/main.css" /> <div id="app"> <div :class="['main-div', 'row',hideClass]" style="visibility: hidden"> <div class="col-6 select-div"> <select v-model="selected" class="select-hotels" placeholder="please"> <option v-for="option in data" :value="option.value"> {{ option.text }}{{ option.textCity }} </option> </select> </div> <div class="calendar-div col-5"> <Datepicker id="calendar-range" class="calendar-range" v-model="date" :enableTimePicker="false" :format="format" :autoApply="true" cancelText="Close" range /> </div> <div class="btn-div col-1"> <button @click="redirectTo" class="btn-search"></button> </div> </div> </div> <script> const page = "GrandSolmar"; const loadDatePickerScript = (url, id = "box") => { const script = document.createElement("script"); // 👇️ local file // script.setAttribute('src', 'another-file.js'); // 👇️ remote file script.setAttribute( "src", url // "https://unpkg.com/@vuepic/vue-datepicker@3.5.2/dist/vue-datepicker.iife.js" ); // script.setAttribute("async", ""); script.async = false; // 👇️ optionally set script to be treated as JS module // script.setAttribute('type', 'module'); script.onload = function handleScriptLoaded() { console.log("script has loaded"); // document.getElementById(id).textContent = "Script loaded successfully"; }; script.onerror = function handleScriptError() { console.log("error loading script"); }; document.head.appendChild(script); setTimeout(() => { console.log("Script loaded successfully"); }, 500); return true; }; const main = () => { const { ref, createApp, onMounted } = Vue; const getParams = () => { if (typeof window != "undefined") { const queryString = window.location.search; const urlParams = new URLSearchParams(queryString); const vid = urlParams.get("vid"); const checkin = urlParams.get("checkin"); const checkout = urlParams.get("checkout"); const paxConfig = urlParams.get("paxConfig"); console.log("vid", vid, checkin, checkout); // 2022-09-24 let checkinDate; let checkoutDate; if (checkin && checkout) { checkinDate = new Date(checkin); checkoutDate = new Date(checkout); } return { vid, checkin, checkout, checkinDate, checkoutDate, paxConfig, }; } return null; }; const getData = () => { const data = ref(null); const error = ref(null); const selected = ref(null); const hideClass = ref(); const params = getParams(); let myHeaders = new Headers(); myHeaders.append("Content-Type", "application/json"); myHeaders.append("withCredentials", "true"); myHeaders.append("crossorigin", "true"); myHeaders.append("mode", "cors"); let requestOptions = { method: "GET", redirect: "follow", headers: myHeaders, }; fetch( "https://hotelslanding.inspirayouth.com/hotels-groups/" + page, requestOptions ) .then((res) => res.json()) .then((json) => { const mapping = json?.map((r) => { const city = decodeURIComponent(escape(r.city || "")); const textCity = city ? ` - ${city}` : ""; return { vid: r.vid, value: r._id, text: r.hotel, url: r.searchUrl, city: city, textCity: textCity, }; }); data.value = mapping; if (params && params.vid) { const hotel = mapping.find((f) => f.vid == params.vid); if (hotel) { selected.value = hotel.value; } } else { const pre = mapping.length > 0 ? mapping[0].value : undefined; selected.value = pre; } setTimeout(() => { hideClass.value = "hide"; }, 100); }) .catch((err) => { console.log(err); error.value = err; }); return { data, error, selected, hideClass }; }; const searchBar = createApp({ setup() { const { data, selected, hideClass } = getData(); const date = ref(); const format = (date1) => { const day = date1[0].getDate(); const month = date1[0].getMonth() + 1; const year = date1[0].getFullYear(); const day2 = date1[1].getDate(); const month2 = date1[1].getMonth() + 1; const year2 = date1[1].getFullYear(); return `${day}/${month}/${year} - ${day2}/${month2}/${year2}`; }; const objectToQueryString = (obj) => { let str = []; for (let p in obj) if (obj.hasOwnProperty(p)) { str.push( encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]) ); } return str.join("&"); }; const redirectTo = () => { if (!selected.value) { console.log("hotel empty", "previus", document.referrer); return; } const paramsUrl = getParams(); const previousURL = document.referrer; console.log("previousURL", previousURL); console.log("hostname", window.location.hostname); const referrer = previousURL ? new URL(previousURL) : ""; // const isPreviousURLExternal = // referrer.origin == new URL(window.location.hostname).origin; const id = selected.value; const hotel = data.value.find((f) => f.value == id); let domain = referrer.origin + hotel.url.split("?")[0]; let search = hotel.url.split("?")[1]; let params = JSON.parse( '{"' + search.replace(/&/g, '","').replace(/=/g, '":"') + '"}', function (key, value) { return key === "" ? value : decodeURIComponent(value); } ); let location = params?.Location || params?.location; location = location?.replaceAll("+", " "); const dateSelected = date.value; const year = String(dateSelected[0].getFullYear()).substring(2); const year2 = String(dateSelected[1].getFullYear()).substring(2); let options = { weekday: "short", // year: "numeric", month: "short", day: "numeric", }; const checkin = dateSelected[0].toLocaleDateString("en-US", options); const checkout = dateSelected[1].toLocaleDateString("en-US", options); const dateRange = `${checkin} ${year} - ${checkout} ${year2}`; params = { ...params, Location: location, dateRange }; if (paramsUrl.paxConfig) { params = { ...params, paxConfig: paramsUrl.paxConfig }; } let queryString = objectToQueryString(params); const fullUrl = `${domain}?${queryString}&searchall=true`; console.log("fullUrl", fullUrl); window.location.href = fullUrl; }; // For demo purposes assign range from the current date onMounted(() => { const params = getParams(); if (params && params.checkoutDate && params.checkinDate) { date.value = [params.checkinDate, params.checkoutDate]; } else { const startDate = new Date(); const endDate = new Date( new Date().setDate(startDate.getDate() + 7) ); date.value = [startDate, endDate]; } }); return { data, date, selected, format, redirectTo, hideClass, }; }, components: { Datepicker: VueDatePicker }, }); // searchBar.use(window.vuedatepickerui) const app = searchBar.mount("#app"); }; loadDatePickerScript( "https://unpkg.com/vue@3.2.41/dist/vue.global.js", "vue-script" ); const loaded = loadDatePickerScript( "https://unpkg.com/@vuepic/vue-datepicker@3.5.2/dist/vue-datepicker.iife.js", "date-vue-script" ); if (loaded) { setTimeout(() => { main(); }, 1000); } </script> <style scoped> .hide { visibility: visible !important; } .main-div { margin: 1rem; height: 3rem; text-align: center; padding: 0 0.5rem; } .col-1 { -webkit-box-flex: 0; -ms-flex: 0 0 8.333333%; flex: 0 0 8.333333%; max-width: 8.333333%; } .col-2 { -webkit-box-flex: 0; -ms-flex: 0 0 16.666667%; flex: 0 0 16.666667%; max-width: 16.666667%; } .col-3 { -webkit-box-flex: 0; -ms-flex: 0 0 25%; flex: 0 0 25%; max-width: 25%; } .col-4 { -webkit-box-flex: 0; -ms-flex: 0 0 33.333333%; flex: 0 0 33.333333%; max-width: 33.333333%; } .col-5 { -webkit-box-flex: 0; -ms-flex: 0 0 41.666667%; flex: 0 0 41.666667%; max-width: 41.666667%; } .col-6 { -webkit-box-flex: 0; -ms-flex: 0 0 50%; flex: 0 0 50%; max-width: 50%; } .col-7 { -webkit-box-flex: 0; -ms-flex: 0 0 58.333333%; flex: 0 0 58.333333%; max-width: 58.333333%; } .col-8 { -webkit-box-flex: 0; -ms-flex: 0 0 66.666667%; flex: 0 0 66.666667%; max-width: 66.666667%; } .col-9 { -webkit-box-flex: 0; -ms-flex: 0 0 75%; flex: 0 0 75%; max-width: 75%; } .col-10 { -webkit-box-flex: 0; -ms-flex: 0 0 83.333333%; flex: 0 0 83.333333%; max-width: 83.333333%; } .col-11 { -webkit-box-flex: 0; -ms-flex: 0 0 91.666667%; flex: 0 0 91.666667%; max-width: 91.666667%; } .col-12 { -webkit-box-flex: 0; -ms-flex: 0 0 100%; flex: 0 0 100%; max-width: 100%; } .col { -ms-flex-preferred-size: 0; flex-basis: 0; -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; max-width: 100%; } .row { display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; margin-right: -15px; margin-left: -15px; } .select-hotels { height: 3rem; border: 1px solid #ccc; border-radius: 2rem; background-color: rgb(245, 245, 245); padding-left: 0.5rem; color: #455461; font-size: 0.9rem; font-weight: 600; text-align: center; width: 95%; } .select-hotels:hover { border: 0px solid rgb(174, 177, 214); box-shadow: rgb(66 69 119) 0px 0px 4px 0px; } .select-hotels:focus { outline: rgb(174, 177, 214); } .btn-search { width: 55%; transition-duration: 0.4s; background-image: url(https://hotelsv2.inspiratest.com/images/search/search_new.svg); background-repeat: no-repeat; background-position: center center; background-size: 20px; background-color: #0b1050; border-color: #0b1050; border-radius: 5px; cursor: pointer; height: 3rem; } .dp__selection_preview { display: none; } .dp__button { display: none; } .dp__action_buttons { width: 100%; } .dp__select { font-weight: 600; color: rgb(69, 67, 124); text-transform: capitalize; font-family: Overpass, sans-serif; } .dp__range_start { background-color: rgb(64, 67, 119); border-radius: 50%; color: rgb(255, 255, 255); } .dp__range_end { border-radius: 50%; background-color: rgb(255, 255, 255); color: rgb(64, 67, 120); border-color: rgb(64, 67, 120); } .dp__input_wrap > input { background-color: rgb(245, 245, 245); color: #455461; font-size: 0.9rem; font-weight: 600; text-align: center; border-radius: 2rem; height: 3rem; } @media screen and (max-width: 992px) { .col-6 { -webkit-box-flex: 0; -ms-flex: 0 0 100%; flex: 0 0 100%; max-width: 100%; text-align: center; } .col-5 { -webkit-box-flex: 0; -ms-flex: 0 0 100%; flex: 0 0 100%; max-width: 100%; text-align: center; } .col-2 { -webkit-box-flex: 0; -ms-flex: 0 0 100%; flex: 0 0 100%; max-width: 100%; text-align: center; } .col-1 { -webkit-box-flex: 0; -ms-flex: 0 0 100%; flex: 0 0 100%; max-width: 100%; text-align: center; } .calendar-div { /* width: 45%; */ /* display: flex; */ /* padding: 0 0.5rem; */ height: 3rem; text-align: center; } .btn-search { width: 95%; border-radius: 3rem; margin: 1rem 0rem; margin-top: 2rem; } .calendar-range { font-size: 0.6rem; /* padding: 0rem 3rem; */ width: 95%; margin: 1rem 0.7rem; } } @media screen and (min-width: 992px) { .btn-div { /* width: 10%; */ /* display: flex; */ font-size: 1rem; height: 3rem; text-align: left; } .btn-search { width: 75%; border-radius: 5px; } .calendar-range { font-size: 0.6rem; /* padding: 0rem 3rem; */ width: 95%; } } </style>
A One-of-a-Kind Los Cabos Vacation
Suites
Enclosed by the majestic granite cliffs of the coast, Grand Solmar at Rancho San Lucas offers unrivaled privacy and tranquility.
/
/
Dining
Make your escape and taste the bold flavors of the Baja coast, while enjoying a melting pot of authentic regional and local culinary experiences.
Spa
You can revitalize your body, recharge your spirit, and renew your well being with a variety of treatments and services.
/
/
Pools
Lounge along our infinity pools while sipping a mojito from our swim up bars.
Explore Cabo San Lucas
Situated in the captivating destination of Cabo San Lucas, Grand Solmar at Rancho San Lucas Resort is a haven nestled within a regional park and boasts a private beachfront location. This exceptional resort offers an idyllic setting, with Land's End and The Arch standing as prominent landmarks in the vicinity. 
/
The Arc
/
/
Nature & Adventure
Beach Life
/
Art & Culture
/
/
Spa & Wellness
Nightlife
© 2023 All Rights Reserved.