hubs-travel-js 0.0.46 → 0.0.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle-about-us.min.js +1 -1
- package/bundle-about-us.min.js.map +2 -2
- package/bundle-all-destinations.min.js +1 -1
- package/bundle-all-destinations.min.js.map +2 -2
- package/bundle-book-workation.min.js +1 -1
- package/bundle-book-workation.min.js.map +4 -4
- package/bundle-business-destination.min.js +1 -1
- package/bundle-business-destination.min.js.map +2 -2
- package/bundle-contact.min.js +1 -1
- package/bundle-contact.min.js.map +4 -4
- package/bundle-destination.min.js +5 -5
- package/bundle-destination.min.js.map +2 -2
- package/bundle-faqs.min.js +1 -1
- package/bundle-faqs.min.js.map +2 -2
- package/bundle-homepage.min.js +1 -1
- package/bundle-homepage.min.js.map +2 -2
- package/bundle-hubs-business.min.js +1 -1
- package/bundle-hubs-business.min.js.map +2 -2
- package/bundle-request-quote.min.js +1 -1
- package/bundle-request-quote.min.js.map +2 -2
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
(()=>{
|
|
2
|
-
1st week: ${
|
|
3
|
-
2nd week: ${
|
|
4
|
-
1st month: ${
|
|
5
|
-
2nd month: ${g(q,i)}`,s.innerText=`${g(ee,i)} - 3rd month`,a.parentElement.style.display=B==0?"none":"block",a.innerText=`${B.toFixed(1)}% discount for the 3rd month!`;break}}function L(t){let e=document.querySelectorAll(".dropdown-discount-2-months"),n=document.querySelectorAll(".dropdown-discount-3-months"),i=k(t),r=i.map(s=>s.discountMonth2),o=i.map(s=>s.discountMonth3);e.forEach(s=>{O(s,r)}),n.forEach(s=>{O(s,o)})}function O(t,e){if(!e||e.length===0){t.style.display="none";return}t.style.display="flex";let n=e.every(r=>r===e[0]),i=Math.max(...e);i==0?t.innerText="":t.innerText=`${i.toFixed(1)}% discount`,n||(t.innerText="Up to "+t.innerText)}function x(){let t=document.querySelectorAll(".room-book-button"),e=document.querySelector("#rooms")?.getAttribute("data-destination-slug");t.forEach(n=>{let i=n.querySelector("a"),r=i.getAttribute("href").split("?")[0],o=n.getAttribute("data-roomslug"),s=CollectionListDropDown.getValue("#workation-season-dropdown"),a=CollectionListDropDown.getValue("#guest-count-dropdown")??1;i.setAttribute("href",`${r}?destination=${encodeURIComponent(e)}&edition=${encodeURIComponent(s)}&room=${encodeURIComponent(o)}&guests=${encodeURIComponent(a)}`)})}function P(){let t=new URLSearchParams(window.location.search).get("edition"),e=document.querySelectorAll("#workation-season-dropdown .dropdown-item"),n=t??(e.length>0?e[0].getAttribute("data-value"):null);CollectionListDropDown.setValue("#workation-season-dropdown",n)}var U=p(()=>{M()});function V(){let t=document.getElementById("map-data").dataset.address;if(!t)return;new google.maps.Geocoder().geocode({address:t},function(n,i){if(i==="OK"){let r=new google.maps.Map(document.getElementById("map"),{zoom:14,center:n[0].geometry.location});new google.maps.Marker({map:r,position:n[0].geometry.location})}else console.error("Geocode failed: "+i)})}var F=p(()=>{});function N(){document.querySelectorAll("#upcoming-workations .swiper-slide").forEach(t=>{let e=t.getAttribute("data-booking-state")?.toLowerCase();e==="closed"?(t.style.opacity="0.5",t.style.pointerEvents="none",t.style.cursor="not-allowed"):e==="available soon"&&(t.style.pointerEvents="none",t.style.cursor="default")})}var H=p(()=>{});var v,z=p(()=>{v=class{constructor(e){this.SELECTORS=e,this.swiperInstance=null,this.prevButton=null,this.nextButton=null}init(){document.addEventListener("DOMContentLoaded",()=>{let e=document.querySelector(this.SELECTORS.swiperWrapper);e.style.gap="0",this.initSwiper()})}initSwiper(){let e=document.querySelector(this.SELECTORS.refContainer),n=document.querySelector(this.SELECTORS.swiperWrapper);if(this.prevButton=document.querySelector(this.SELECTORS.prevButton),this.nextButton=document.querySelector(this.SELECTORS.nextButton),!e||!n||!this.prevButton||!this.nextButton)return console.error("Required elements not found"),null;let r=e.getBoundingClientRect().left,o=new Swiper(this.SELECTORS.swiper,{slidesPerView:"auto",spaceBetween:16,freeMode:!1,slidesOffsetBefore:r,slidesOffsetAfter:16,navigation:{nextEl:this.SELECTORS.nextButton,prevEl:this.SELECTORS.prevButton},watchOverflow:!0});return this.swiperInstance=o,this.updateButtonsState(),o.on("slideChange",this.updateButtonsState.bind(this)),window.addEventListener("resize",()=>{let s=e.getBoundingClientRect().left;o&&o.params&&(o.params.slidesOffsetBefore=s,o.update())}),o}updateButtonsState(){if(!this.prevButton||!this.nextButton)return;this.prevButton.style.opacity=this.swiperInstance.isBeginning?"0.5":"1",this.prevButton.style.pointerEvents=this.swiperInstance.isBeginning?"none":"auto";let e=this.swiperInstance.maxTranslate();this.swiperInstance.translate<=e+5?(this.nextButton.style.opacity="0.5",this.nextButton.style.pointerEvents="none"):(this.nextButton.style.opacity="1",this.nextButton.style.pointerEvents="auto")}}});var G,K=p(()=>{G=function(){let t,e,n=null,i=null;function r(){let s=document.querySelector(i.swiperWrapper);if(e=document.querySelector(i.prevButton),n=document.querySelector(i.nextButton),!s||!e||!n)return console.error("Required elements not found"),null;let a=new Swiper(i.swiper,{slidesPerView:"auto",spaceBetween:16,freeMode:!1,slidesOffsetAfter:16,navigation:{nextEl:i.nextButton,prevEl:i.prevButton},watchOverflow:!0});t=a,o(),a.on("slideChange",function(){o()});function c(){let d=s.getBoundingClientRect().left,u=document.querySelector("#features-cards-section .features-cards-carousel-container");u.style.width=`${window.innerWidth-d}px`,u.style.minWidth=`${window.innerWidth-d}px`,u.style.maxWidth=`${window.innerWidth-d}px`,s.style.width=`${window.innerWidth-d}px`,s.style.minWidth=`${window.innerWidth-d}px`,s.style.maxWidth=`${window.innerWidth-d}px`}return window.addEventListener("resize",c),c(),a}function o(){!e||!n||(e.style.opacity=t.isBeginning?"0.5":"1",e.style.pointerEvents=t.isBeginning?"none":"auto",n.style.opacity=t.isEnd?"0.5":"1",n.style.pointerEvents=t.isEnd?"none":"auto")}return{init:function(s){i=s,document.addEventListener("DOMContentLoaded",function(){let a=document.querySelector(i.swiperWrapper);a.style.gap="0",r()})}}}()});function J(){document.querySelectorAll("#edition-cards-section .edition-card-item").forEach(e=>{let n=e.querySelectorAll("a"),i=e.getAttribute("data-editionslug"),r=e.getAttribute("data-bookingstate");n.forEach(o=>{if(r=="Available Soon"){o.setAttribute("href","#"),o.style.cursor="auto";let s=o.querySelector(".edition-card-image");s.style.opacity=.4}else if(i){let s=o.getAttribute("href").split("?")[0];o.setAttribute("href",`${s}?edition=${encodeURIComponent(i)}`)}})})}var j,Q=p(()=>{j=function(){let t,e,n=null,i=[],r=null;function o(){let a=document.querySelector(r.refContainer),c=document.querySelector(r.swiperWrapper);if(e=document.querySelector(r.prevButton),n=document.querySelector(r.nextButton),i=Array.from(document.querySelectorAll("#edition-cards-section .swiper .swiper-slide")),!a||!c||!e||!n)return console.error("Required elements not found"),null;let d=a.getBoundingClientRect().left,u=new Swiper(r.swiper,{slidesPerView:"auto",spaceBetween:16,freeMode:!1,slidesOffsetBefore:d,slidesOffsetAfter:16,navigation:{nextEl:r.nextButton,prevEl:r.prevButton},watchOverflow:!0});return t=u,s(),u.on("slideChange",s),window.addEventListener("resize",()=>{let f=a.getBoundingClientRect().left;u&&u.params&&(u.params.slidesOffsetBefore=f,u.update())}),u}function s(){if(!e||!n)return;e.style.opacity=t.isBeginning?"0.5":"1",e.style.pointerEvents=t.isBeginning?"none":"auto";let a=t.maxTranslate();t.translate<=a+5?(n.style.opacity="0.5",n.style.pointerEvents="none"):(n.style.opacity="1",n.style.pointerEvents="auto")}return{init:function(a){r=a,document.addEventListener("DOMContentLoaded",function(){let c=document.querySelector(r.swiperWrapper);c.style.gap="0",o()})},filterSeason(a){if(!t)return;let c=i.filter(l=>a==="all"||a===l.getAttribute("data-season"));t.removeAllSlides(),t.addSlide(0,c),t.slideTo(0,0,!1),s()}}}()});function X(){let t=document.querySelectorAll(".filter-button"),e=document.querySelectorAll(".filter-list-item");t.forEach(i=>{i.addEventListener("click",function(){t.forEach(o=>o.classList.remove("active")),this.classList.add("active");let r=this.getAttribute("data-season");r==="all"?e.forEach(o=>{o.classList.remove("filtered-out")}):e.forEach(o=>{o.getAttribute("data-season")===r?o.classList.remove("filtered-out"):o.classList.add("filtered-out")})})});let n=document.querySelector('[data-season="all"]');n&&n.click()}var Y=p(()=>{});function Z(){function t(e){let n=document.createElement("a");return n.href="#",n.textContent=e?"Read more":"Read less",n.style.display="inline-block",n.style.color="#0a4915",n.style.fontWeight="600",n}document.querySelectorAll("[data-read-more]").forEach(e=>{let n=parseInt(e.getAttribute("data-read-more"),10);if(isNaN(n)||e.scrollHeight<=n)return;e.style.maxHeight=n+"px",e.style.overflow="hidden",e.dataset.readMoreState="collapsed";let i=t(!0);e.insertAdjacentElement("afterend",i),i.addEventListener("click",function(r){r.preventDefault(),e.dataset.readMoreState==="collapsed"?(e.style.maxHeight=e.scrollHeight+"px",e.dataset.readMoreState="expanded",this.textContent="Read less"):(e.style.maxHeight=n+"px",e.dataset.readMoreState="collapsed",this.textContent="Read more")})})}var _=p(()=>{});var se=ne(()=>{T();R();W();$();U();F();H();z();K();Q();Y();_();window.CollectionListDropDown=S;S.init({selector:"#workation-season-dropdown",onChange:t=>{let e=t.getAttribute("data-value");L(e),E(),x()}});S.init({selector:"#length-stay-dropdown",initialValue:"month-3",onChange:()=>E()});S.init({selector:"#guest-count-dropdown",initialValue:"1",onChange:()=>{E(),x()}});b.init({selectorId:"#impressions-cards-slider-1",isReverse:!1});b.init({selectorId:"#impressions-cards-slider-2",isReverse:!0});D.init({selectors:{swiper:"#upcoming-workations .swiper",swiperWrapper:"#upcoming-workations .swiper-wrapper",swiperSlides:"#upcoming-workations .upcoming-workation-card",prevButton:"#upcoming-workations-swiper-prev-btn",nextButton:"#upcoming-workations-swiper-next-btn"},onItemClick:t=>{let e=t.getAttribute("data-edition");window.CollectionListDropDown.setValue("#workation-season-dropdown",e)}});var re=new v({refContainer:"#activity-cards-swiper-ref-container",swiper:"#activity-cards-section .swiper",swiperWrapper:"#activity-cards-section .swiper-wrapper",prevButton:"#activity-cards-swiper-prev-btn",nextButton:"#activity-cards-swiper-next-btn"});re.init();var ie=new v({refContainer:"#common-facilities-cards-swiper-ref-container",swiper:"#common-facilities-cards-section .swiper",swiperWrapper:"#common-facilities-cards-section .swiper-wrapper",prevButton:"#common-facilities-cards-swiper-prev-btn",nextButton:"#common-facilities-cards-swiper-next-btn"});ie.init();G.init({swiper:"#features-cards-section .swiper",swiperWrapper:"#features-cards-section .swiper-wrapper",prevButton:"#features-cards-btn-left",nextButton:"#features-cards-btn-right"});j.init({refContainer:"#edition-cards-swiper-ref-container",swiper:"#edition-cards-section .swiper",swiperWrapper:"#edition-cards-section .swiper-wrapper",prevButton:"#edition-cards-swiper-prev-btn",nextButton:"#edition-cards-swiper-next-btn"});document.addEventListener("DOMContentLoaded",function(){A("#destination-testimonials-section"),P(),E(),L(),x(),V(),N(),J(),X(),Z()})});se();})();
|
|
1
|
+
(()=>{function q(t){let e=document.querySelectorAll(`${t} .destination-testimonials-item`),n=document.querySelectorAll(`${t} .dyn-author-image`);if(!e||e.length===0){console.error("No testimonials found");return}let i=0;e.forEach(c=>c.style.display="none"),n.forEach(c=>{c.style.display="none",c.classList.remove("active")});function r(c){e.forEach((l,d)=>{l.style.display=d===c?"block":"none"}),n.forEach((l,d)=>{l.classList.toggle("active",d===c)}),i=c}let o=[...e];o.forEach((c,l)=>{let d=c.querySelector(".testimonial-card-author-image")?.src,u=document.querySelector(`${t} [data-slot="${l+1}"]`);u&&d&&(u.src=d,u.style.display="inline",l===0&&u.classList.add("active"),u.addEventListener("click",()=>{r(l)}))}),r(0);let s=document.getElementById("destination-testimonials-btn-left"),a=document.getElementById("destination-testimonials-btn-right");s&&s.addEventListener("click",()=>{let c=(i-1+o.length)%o.length;r(c)}),a&&a.addEventListener("click",()=>{let c=(i+1)%o.length;r(c)})}var h=function(){let t={};function e(r,o,s){let a=document.querySelector(r),c=document.querySelector(`${r}.w-dropdown`),l=a.querySelector(`${r} .w-dropdown-toggle`),d=a.querySelector(`${r} .w-dropdown-list`),u=a.querySelector(`${r} .dropdown-selected-value`),m=a.querySelectorAll(`${r} .dropdown-item`);if(t[r]={container:a,dropdown:c,dropdownToggle:l,dropdownList:d,selectedItemValueContainer:u,collectionItems:m,onChange:o},m.forEach(p=>{p.addEventListener("click",function(g){g.preventDefault();let f=this;n(r,f),o&&o(f),d.classList.remove("w--open"),c.blur()})}),s){let p=i(r,s);p&&setTimeout(()=>{p.click()},200)}}function n(r,o){let s=t[r];if(!s)return;let a=s.selectedItemValueContainer;for(;a.firstChild;)a.removeChild(a.firstChild);let c=o;if(c){let l=c.cloneNode(!0);a.appendChild(l);let d=c.getAttribute("data-value");s.dropdown.setAttribute("data-current-value",d)}else console.error("SelectedItem Element not found.",o)}function i(r,o){let s=t[r];return Array.from(s.collectionItems).find(a=>a.getAttribute("data-value")===o)}return{init:function({selector:r,onChange:o,initialValue:s}){document.addEventListener("DOMContentLoaded",function(){e(r,o,s)})},setValue:function(r,o){let s=i(r,o);s?s.click():o!=null&&console.error(`No item with value '${o}' found in dropdown '${r}'`)},getValue:function(r){return t[r].dropdown.getAttribute("data-current-value")}}}();var C=function(){let t=null;function e({selectorId:n,isReverse:i}){if(!document.querySelector(`${n} .swiper-wrapper`))return console.error("Required elements not found"),null;let o=new Swiper(`${n}.swiper`,{spaceBetween:16,loop:!0,slidesPerView:"auto",freeMode:!0,speed:6500,autoplay:{delay:0,disableOnInteraction:!1,reverseDirection:i,pauseOnMouseEnter:!1}});return t=o,o}return{init:function({selectorId:n,isReverse:i}){document.addEventListener("DOMContentLoaded",function(){let r=document.querySelector(`${n} .swiper-wrapper`);r.style.gap="0",r.style.setProperty("transition-timing-function","linear","important"),e({selectorId:n,isReverse:i})})}}}();var A=function(){let t,e,n=null,i=null;function r({onItemClick:s}){let a=document.querySelector(i.swiperWrapper),c=document.querySelectorAll(i.swiperSlides);if(e=document.querySelector(i.prevButton),n=document.querySelector(i.nextButton),!a||!e||!n||!c)return console.error("Required elements not found"),null;let l=new Swiper(i.swiper,{direction:"vertical",slidesPerView:"auto",spaceBetween:8,freeMode:!1,navigation:{nextEl:i.nextButton,prevEl:i.prevButton},watchOverflow:!0});return t=l,o(),l.on("slideChange",function(){o()}),s&&c.forEach(d=>{d.addEventListener("click",u=>s(u.currentTarget))}),l}function o(){!e||!n||(e.style.opacity=t.isBeginning?"0.5":"1",e.style.pointerEvents=t.isBeginning?"none":"auto",n.style.opacity=t.isEnd?"0.5":"1",n.style.pointerEvents=t.isEnd?"none":"auto")}return{init:function({selectors:s,onItemClick:a}){i=s,document.addEventListener("DOMContentLoaded",function(){let c=document.querySelector(i.swiperWrapper);c.style.gap="0",r({onItemClick:a})})}}}();function b(t){let e=document.querySelectorAll(".room-price-data"),n=Array.from(e).map(i=>JSON.parse(i.textContent));return t?n.filter(i=>i.editionSlug===t):n}function y(t,e){return new Intl.NumberFormat("de-DE",{style:"currency",currency:e,currencyDisplay:"code"}).format(t)}function T(t,e=null){return isNaN(parseFloat(t))?e:parseFloat(t)}function S(){let t=CollectionListDropDown.getValue("#workation-season-dropdown"),e=CollectionListDropDown.getValue("#length-stay-dropdown"),n=document.querySelector("#rooms")?.getAttribute("data-currency")??"EUR",i=document.querySelectorAll(".room-list-item"),r=t?b(t):[];i.forEach(o=>{let s=o.getAttribute("data-roomslug"),a=o.getAttribute("data-allow-weekly-booking")==="Enabled",c=r.find(l=>l.roomSlug===s);N(o,c,e,n,a)})}function N(t,e,n,i,r){let o=t.querySelector(".room-item-price-breakdown"),s=t.querySelector(".room-item-price-month"),a=t.querySelector(".room-discount-text"),c=t.querySelector(".room-book-button"),l=t.querySelector(".room-item-price-not-avalable"),d=n&&n.startsWith("week"),u=l.innerText,m="Minimum length of stay for this room is 1 month",p=T(e?.basePriceWeek);if(!e||d&&!r||d&&r&&!p){l.innerText=d&&!r?m:u,l.style.display="flex",o.style.display="none",s.style.display="none",a.parentElement.style.display="none",c.style.opacity="0.5",c.style.pointerEvents="none",c.style.cursor="not-allowed";return}l.style.display="none",s.style.display="block",a.parentElement.style.display="flex",c.style.opacity="1",c.style.pointerEvents="auto",c.style.cursor="pointer";let g=e.basePriceMonth,f=e.discountMonth2,x=e.discountMonth3,L=g*(1-f/100),V=g*(1-x/100),w=p?y(p,i):"N/A",B=y(g,i),F=!n||n.endsWith("-1");switch(o.style.display=F?"none":"inline",n){case"week-1":s.innerText=`${w} / week`,a.innerText="Longer stays unlock better discounts!";break;case"week-2":o.innerText=`1st week: ${w}`,s.innerText=`${w} - 2nd week`,a.innerText="Longer stays unlock better discounts!";break;case"week-3":o.innerHTML=`
|
|
2
|
+
1st week: ${w}<br>
|
|
3
|
+
2nd week: ${w}`,s.innerText=`${w} - 3rd week`,a.innerText="Longer stays unlock better discounts!";break;default:case"month-1":s.innerText=`${B} / month`,a.innerText="Longer stays unlock better discounts!";break;case"month-2":o.innerText=`1st month: ${B}`,s.innerText=`${y(L,i)} - 2nd month`,a.parentElement.style.display=f==0?"none":"block",a.innerText=`${f.toFixed(1)}% discount for the 2nd month!`;break;case"month-3":o.innerHTML=`
|
|
4
|
+
1st month: ${B}<br>
|
|
5
|
+
2nd month: ${y(L,i)}`,s.innerText=`${y(V,i)} - 3rd month`,a.parentElement.style.display=x==0?"none":"block",a.innerText=`${x.toFixed(1)}% discount for the 3rd month!`;break}}function k(t){let e=document.querySelectorAll(".dropdown-discount-2-months"),n=document.querySelectorAll(".dropdown-discount-3-months"),i=b(t),r=i.map(s=>s.discountMonth2),o=i.map(s=>s.discountMonth3);e.forEach(s=>{R(s,r)}),n.forEach(s=>{R(s,o)})}function R(t,e){if(!e||e.length===0){t.style.display="none";return}t.style.display="flex";let n=e.every(r=>r===e[0]),i=Math.max(...e);i==0?t.innerText="":t.innerText=`${i.toFixed(1)}% discount`,n||(t.innerText="Up to "+t.innerText)}function v(){let t=document.querySelectorAll(".room-book-button"),e=document.querySelector("#rooms")?.getAttribute("data-destination-slug");t.forEach(n=>{let i=n.querySelector("a"),r=i.getAttribute("href").split("?")[0],o=n.getAttribute("data-roomslug"),s=CollectionListDropDown.getValue("#workation-season-dropdown"),a=CollectionListDropDown.getValue("#guest-count-dropdown")??1;i.setAttribute("href",`${r}?destination=${encodeURIComponent(e)}&edition=${encodeURIComponent(s)}&room=${encodeURIComponent(o)}&guests=${encodeURIComponent(a)}`)})}function W(){let t=new URLSearchParams(window.location.search).get("edition"),e=document.querySelectorAll("#workation-season-dropdown .dropdown-item"),n=t??(e.length>0?e[0].getAttribute("data-value"):null);CollectionListDropDown.setValue("#workation-season-dropdown",n)}function D(){let t=document.getElementById("map-data").dataset.address;if(!t)return;new google.maps.Geocoder().geocode({address:t},function(n,i){if(i==="OK"){let r=new google.maps.Map(document.getElementById("map"),{zoom:14,center:n[0].geometry.location});new google.maps.Marker({map:r,position:n[0].geometry.location})}else console.error("Geocode failed: "+i)})}function $(){document.querySelectorAll("#upcoming-workations .swiper-slide").forEach(t=>{let e=t.getAttribute("data-booking-state")?.toLowerCase();e==="closed"?(t.style.opacity="0.5",t.style.pointerEvents="none",t.style.cursor="not-allowed"):e==="available soon"&&(t.style.pointerEvents="none",t.style.cursor="default")})}var E=class{constructor(e){this.SELECTORS=e,this.swiperInstance=null,this.prevButton=null,this.nextButton=null}init(){document.addEventListener("DOMContentLoaded",()=>{let e=document.querySelector(this.SELECTORS.swiperWrapper);e.style.gap="0",this.initSwiper()})}initSwiper(){let e=document.querySelector(this.SELECTORS.refContainer),n=document.querySelector(this.SELECTORS.swiperWrapper);if(this.prevButton=document.querySelector(this.SELECTORS.prevButton),this.nextButton=document.querySelector(this.SELECTORS.nextButton),!e||!n||!this.prevButton||!this.nextButton)return console.error("Required elements not found"),null;let r=e.getBoundingClientRect().left,o=new Swiper(this.SELECTORS.swiper,{slidesPerView:"auto",spaceBetween:16,freeMode:!1,slidesOffsetBefore:r,slidesOffsetAfter:16,navigation:{nextEl:this.SELECTORS.nextButton,prevEl:this.SELECTORS.prevButton},watchOverflow:!0});return this.swiperInstance=o,this.updateButtonsState(),o.on("slideChange",this.updateButtonsState.bind(this)),window.addEventListener("resize",()=>{let s=e.getBoundingClientRect().left;o&&o.params&&(o.params.slidesOffsetBefore=s,o.update())}),o}updateButtonsState(){if(!this.prevButton||!this.nextButton)return;this.prevButton.style.opacity=this.swiperInstance.isBeginning?"0.5":"1",this.prevButton.style.pointerEvents=this.swiperInstance.isBeginning?"none":"auto";let e=this.swiperInstance.maxTranslate();this.swiperInstance.translate<=e+5?(this.nextButton.style.opacity="0.5",this.nextButton.style.pointerEvents="none"):(this.nextButton.style.opacity="1",this.nextButton.style.pointerEvents="auto")}};var I=function(){let t,e,n=null,i=null;function r(){let s=document.querySelector(i.swiperWrapper);if(e=document.querySelector(i.prevButton),n=document.querySelector(i.nextButton),!s||!e||!n)return console.error("Required elements not found"),null;let a=new Swiper(i.swiper,{slidesPerView:"auto",spaceBetween:16,freeMode:!1,slidesOffsetAfter:16,navigation:{nextEl:i.nextButton,prevEl:i.prevButton},watchOverflow:!0});t=a,o(),a.on("slideChange",function(){o()});function c(){let d=s.getBoundingClientRect().left,u=document.querySelector("#features-cards-section .features-cards-carousel-container");u.style.width=`${window.innerWidth-d}px`,u.style.minWidth=`${window.innerWidth-d}px`,u.style.maxWidth=`${window.innerWidth-d}px`,s.style.width=`${window.innerWidth-d}px`,s.style.minWidth=`${window.innerWidth-d}px`,s.style.maxWidth=`${window.innerWidth-d}px`}return window.addEventListener("resize",c),c(),a}function o(){!e||!n||(e.style.opacity=t.isBeginning?"0.5":"1",e.style.pointerEvents=t.isBeginning?"none":"auto",n.style.opacity=t.isEnd?"0.5":"1",n.style.pointerEvents=t.isEnd?"none":"auto")}return{init:function(s){i=s,document.addEventListener("DOMContentLoaded",function(){let a=document.querySelector(i.swiperWrapper);a.style.gap="0",r()})}}}();var M=function(){let t,e,n=null,i=[],r=null;function o(){let a=document.querySelector(r.refContainer),c=document.querySelector(r.swiperWrapper);if(e=document.querySelector(r.prevButton),n=document.querySelector(r.nextButton),i=Array.from(document.querySelectorAll("#edition-cards-section .swiper .swiper-slide")),!a||!c||!e||!n)return console.error("Required elements not found"),null;let d=a.getBoundingClientRect().left,u=new Swiper(r.swiper,{slidesPerView:"auto",spaceBetween:16,freeMode:!1,slidesOffsetBefore:d,slidesOffsetAfter:16,navigation:{nextEl:r.nextButton,prevEl:r.prevButton},watchOverflow:!0});return t=u,s(),u.on("slideChange",s),window.addEventListener("resize",()=>{let m=a.getBoundingClientRect().left;u&&u.params&&(u.params.slidesOffsetBefore=m,u.update())}),u}function s(){if(!e||!n)return;e.style.opacity=t.isBeginning?"0.5":"1",e.style.pointerEvents=t.isBeginning?"none":"auto";let a=t.maxTranslate();t.translate<=a+5?(n.style.opacity="0.5",n.style.pointerEvents="none"):(n.style.opacity="1",n.style.pointerEvents="auto")}return{init:function(a){r=a,document.addEventListener("DOMContentLoaded",function(){let c=document.querySelector(r.swiperWrapper);c.style.gap="0",o()})},filterSeason(a){if(!t)return;let c=i.filter(l=>a==="all"||a===l.getAttribute("data-season"));t.removeAllSlides(),t.addSlide(0,c),t.slideTo(0,0,!1),s()}}}();function O(){document.querySelectorAll("#edition-cards-section .edition-card-item").forEach(e=>{let n=e.querySelectorAll("a"),i=e.getAttribute("data-editionslug"),r=e.getAttribute("data-bookingstate");n.forEach(o=>{if(r=="Available Soon"){o.setAttribute("href","#"),o.style.cursor="auto";let s=o.querySelector(".edition-card-image");s.style.opacity=.4}else if(i){let s=o.getAttribute("href").split("?")[0];o.setAttribute("href",`${s}?edition=${encodeURIComponent(i)}`)}})})}function P(){let t=document.querySelectorAll(".filter-button"),e=document.querySelectorAll(".filter-list-item");t.forEach(i=>{i.addEventListener("click",function(){t.forEach(o=>o.classList.remove("active")),this.classList.add("active");let r=this.getAttribute("data-season");r==="all"?e.forEach(o=>{o.classList.remove("filtered-out")}):e.forEach(o=>{o.getAttribute("data-season")===r?o.classList.remove("filtered-out"):o.classList.add("filtered-out")})})});let n=document.querySelector('[data-season="all"]');n&&n.click()}function U(){function t(e){let n=document.createElement("a");return n.href="#",n.textContent=e?"Read more":"Read less",n.style.display="inline-block",n.style.color="#0a4915",n.style.fontWeight="600",n}document.querySelectorAll("[data-read-more]").forEach(e=>{let n=parseInt(e.getAttribute("data-read-more"),10);if(isNaN(n)||e.scrollHeight<=n)return;e.style.maxHeight=n+"px",e.style.overflow="hidden",e.dataset.readMoreState="collapsed";let i=t(!0);e.insertAdjacentElement("afterend",i),i.addEventListener("click",function(r){r.preventDefault(),e.dataset.readMoreState==="collapsed"?(e.style.maxHeight=e.scrollHeight+"px",e.dataset.readMoreState="expanded",this.textContent="Read less"):(e.style.maxHeight=n+"px",e.dataset.readMoreState="collapsed",this.textContent="Read more")})})}window.CollectionListDropDown=h;h.init({selector:"#workation-season-dropdown",onChange:t=>{let e=t.getAttribute("data-value");k(e),S(),v()}});h.init({selector:"#length-stay-dropdown",initialValue:"month-3",onChange:()=>S()});h.init({selector:"#guest-count-dropdown",initialValue:"1",onChange:()=>{S(),v()}});C.init({selectorId:"#impressions-cards-slider-1",isReverse:!1});C.init({selectorId:"#impressions-cards-slider-2",isReverse:!0});A.init({selectors:{swiper:"#upcoming-workations .swiper",swiperWrapper:"#upcoming-workations .swiper-wrapper",swiperSlides:"#upcoming-workations .upcoming-workation-card",prevButton:"#upcoming-workations-swiper-prev-btn",nextButton:"#upcoming-workations-swiper-next-btn"},onItemClick:t=>{let e=t.getAttribute("data-edition");window.CollectionListDropDown.setValue("#workation-season-dropdown",e)}});var H=new E({refContainer:"#activity-cards-swiper-ref-container",swiper:"#activity-cards-section .swiper",swiperWrapper:"#activity-cards-section .swiper-wrapper",prevButton:"#activity-cards-swiper-prev-btn",nextButton:"#activity-cards-swiper-next-btn"});H.init();var z=new E({refContainer:"#common-facilities-cards-swiper-ref-container",swiper:"#common-facilities-cards-section .swiper",swiperWrapper:"#common-facilities-cards-section .swiper-wrapper",prevButton:"#common-facilities-cards-swiper-prev-btn",nextButton:"#common-facilities-cards-swiper-next-btn"});z.init();I.init({swiper:"#features-cards-section .swiper",swiperWrapper:"#features-cards-section .swiper-wrapper",prevButton:"#features-cards-btn-left",nextButton:"#features-cards-btn-right"});M.init({refContainer:"#edition-cards-swiper-ref-container",swiper:"#edition-cards-section .swiper",swiperWrapper:"#edition-cards-section .swiper-wrapper",prevButton:"#edition-cards-swiper-prev-btn",nextButton:"#edition-cards-swiper-next-btn"});document.addEventListener("DOMContentLoaded",function(){q("#destination-testimonials-section"),W(),S(),k(),v(),D(),$(),O(),P(),U()});})();
|
|
6
6
|
//# sourceMappingURL=bundle-destination.min.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../pages/destination/testimonials.js", "../controls/collectionListDropdown.js", "../components/impression-cards-carousel.js", "../components/upcoming-workations-carousel.js", "../utils/commonUtils.js", "../pages/destination/rooms-list.js", "../pages/destination/location-map.js", "../pages/destination/upcoming-workations.js", "../components/simple-cards.js", "../components/feature-slider.js", "../components/upcoming-editions.js", "../components/upcoming-editions-filter.js", "../utils/readMore.js", "../pages/destination/index.js"],
|
|
4
4
|
"sourcesContent": ["\nexport function initTestimonials (selectorId) {\n const allTestimonials = document.querySelectorAll(`${selectorId} .destination-testimonials-item`);\n const allAuthorSlots = document.querySelectorAll(`${selectorId} .dyn-author-image`);\n \n if (!allTestimonials || allTestimonials.length === 0) {\n \tconsole.error(\"No testimonials found\");\n\t return;\n }\n\n let currentIndex = 0;\n\n // Hide all testimonials initially\n allTestimonials.forEach((el) => el.style.display = \"none\");\n allAuthorSlots.forEach((slot) => {\n slot.style.display = \"none\";\n slot.classList.remove(\"active\");\n });\n\n // Show initial\n function showTestimonial(index) {\n allTestimonials.forEach((el, i) => {\n el.style.display = i === index ? \"block\" : \"none\";\n });\n allAuthorSlots.forEach((slot, i) => {\n slot.classList.toggle(\"active\", i === index);\n });\n currentIndex = index;\n }\n\n // Inject author images into slots\n const authors = [...allTestimonials];\n authors.forEach((testimonial, index) => {\n const imgUrl = testimonial.querySelector('.testimonial-card-author-image')?.src;\n const slot = document.querySelector(`${selectorId} [data-slot=\"${index+1}\"]`);\n //const testimonialSlug = testimonial.dataset.slug;\n\n if (slot && imgUrl) {\n\t slot.src = imgUrl;\n slot.style.display = \"inline\";\n if (index === 0) slot.classList.add(\"active\");\n\n slot.addEventListener('click', () => {\n showTestimonial(index);\n });\n }\n });\n\n // Initial display\n showTestimonial(0);\n\n // Add navigation button logic\n const prevBtn = document.getElementById('destination-testimonials-btn-left');\n const nextBtn = document.getElementById('destination-testimonials-btn-right');\n\n if (prevBtn) {\n prevBtn.addEventListener('click', () => {\n const newIndex = (currentIndex - 1 + authors.length) % authors.length;\n showTestimonial(newIndex);\n });\n }\n\n if (nextBtn) {\n nextBtn.addEventListener('click', () => {\n const newIndex = (currentIndex + 1) % authors.length;\n showTestimonial(newIndex);\n });\n }\n}", "export const CollectionListDropDown = (function () {\n // Store dropdown instances to access them later\n const dropdowns = {};\n \n function initDropDown(selector, onChange, initialValue) {\n const container = document.querySelector(selector);\n const dropdown = document.querySelector(`${selector}.w-dropdown`);\n const dropdownToggle = container.querySelector(`${selector} .w-dropdown-toggle`); \n const dropdownList = container.querySelector(`${selector} .w-dropdown-list`);\n const selectedItemValueContainer = container.querySelector(`${selector} .dropdown-selected-value`);\n const collectionItems = container.querySelectorAll(`${selector} .dropdown-item`);\n \n // Store this dropdown instance data for later access\n dropdowns[selector] = {\n container,\n dropdown,\n dropdownToggle,\n dropdownList,\n selectedItemValueContainer,\n collectionItems,\n onChange\n };\n \n collectionItems.forEach(item => {\n item.addEventListener('click', function(event) {\n event.preventDefault(); // Prevent default link behavior if using Link Blocks\n const selectedOption = this;\n selectDropDownElement(selector, selectedOption);\n \n onChange && onChange(selectedOption);\n // Close the dropdown\n dropdownList.classList.remove('w--open'); // Close the dropdown\n // Move focus away to reset dropdown behavior\n dropdown.blur();\n });\n });\n \n if (initialValue) {\n const item = getElementByItemValue(selector, initialValue);\n if (item) { \n setTimeout(() => {\n item.click(); // Simulate a click on the matching item to activate filter\n }, 200);\n }\n }\n }\n \n function selectDropDownElement(selector, selectedItem) {\n const dropdown = dropdowns[selector];\n if (!dropdown) return;\n \n const selectedItemValueContainer = dropdown.selectedItemValueContainer;\n \n while (selectedItemValueContainer.firstChild) {\n selectedItemValueContainer.removeChild(selectedItemValueContainer.firstChild);\n }\n \n const sourceElement = selectedItem;\n if (sourceElement) {\n const clonedElement = sourceElement.cloneNode(true);\n selectedItemValueContainer.appendChild(clonedElement);\n const currentValue = sourceElement.getAttribute('data-value');\n dropdown.dropdown.setAttribute('data-current-value', currentValue);\n } else {\n console.error(\"SelectedItem Element not found.\", selectedItem);\n }\n }\n \n function getElementByItemValue(selector, value) {\n const dropdown = dropdowns[selector];\n return Array.from(dropdown.collectionItems).find((x) => {\n return x.getAttribute('data-value') === value;\n });\n }\n \n // Public methods\n return {\n init: function({ selector, onChange, initialValue }) {\n document.addEventListener('DOMContentLoaded', function() {\n initDropDown(selector, onChange, initialValue);\n });\n },\n // Add a new public method to change dropdown value from outside\n setValue: function(selector, value) {\n const item = getElementByItemValue(selector, value);\n if (item) {\n item.click(); // Trigger the click event on the item\n } else if (value !== undefined && value !== null) {\n console.error(`No item with value '${value}' found in dropdown '${selector}'`);\n }\n },\n // Get currently selected dropdown value\n getValue: function(selector) {\n const dropdown = dropdowns[selector];\n return dropdown.dropdown.getAttribute('data-current-value');\n }\n };\n})();", "export const ImpressionCardsCarousel = (function () {\n\tlet swiperInstance = null;\n \n function initSwiper({selectorId, isReverse}) {\n const swiperWrapper = document.querySelector(`${selectorId} .swiper-wrapper`);\n\n if (!swiperWrapper) {\n console.error('Required elements not found');\n return null;\n } \n \n // Initialize Swiper\n const swiper = new Swiper(`${selectorId}.swiper`, {\n spaceBetween: 16,\n loop: true,\n slidesPerView: \"auto\",\n freeMode: true,\n speed: 6500,\n autoplay: {\n delay: 0,\n disableOnInteraction: false,\n reverseDirection: isReverse,\n pauseOnMouseEnter: false\n },\n });\n\n\t\tswiperInstance = swiper;\n\n\t\treturn swiper;\n }\n\n // Public methods\n return {\n init: function({selectorId, isReverse}) {\n document.addEventListener('DOMContentLoaded', function() {\n \tconst swiperWrapper = document.querySelector(`${selectorId} .swiper-wrapper`);\n swiperWrapper.style.gap = '0';\n swiperWrapper.style.setProperty(\"transition-timing-function\", \"linear\", \"important\");\n \t\n // Initialize swiper\n initSwiper({selectorId, isReverse});\n });\n }\n };\n})();", "\nexport const UpcomingWorkationsCarousel = (function () {\n\tlet swiperInstance, prevButton, nextButton = null;\n let SELECTORS = null; // Declare SELECTORS as null initially\n\n function initSwiper({onItemClick}) {\n const swiperWrapper = document.querySelector(SELECTORS.swiperWrapper);\n const swiperSlides = document.querySelectorAll(SELECTORS.swiperSlides);\n\n prevButton = document.querySelector(SELECTORS.prevButton);\n nextButton = document.querySelector(SELECTORS.nextButton);\n\n if (!swiperWrapper || !prevButton || !nextButton || !swiperSlides) {\n console.error('Required elements not found');\n return null;\n } \n\n // Initialize Swiper\n const swiper = new Swiper(SELECTORS.swiper, {\n direction: \"vertical\",\n slidesPerView: \"auto\",\n spaceBetween: 8,\n freeMode: false,\n navigation: {\n nextEl: SELECTORS.nextButton,\n prevEl: SELECTORS.prevButton,\n },\n watchOverflow: true,\n });\n\n\t\tswiperInstance = swiper;\n\n // Set initial state of buttons\n updateButtonsState();\n\n // Add event listeners to update button states when slides change\n swiper.on('slideChange', function () {\n updateButtonsState();\n });\n \n if (onItemClick) {\n swiperSlides.forEach(slide => {\n slide.addEventListener('click', (e) => onItemClick(e.currentTarget));\n });\n }\n\n return swiper;\n }\n\n // Function to update button states\n function updateButtonsState() {\n \tif (!prevButton || !nextButton) return;\n \n prevButton.style.opacity = swiperInstance.isBeginning ? '0.5' : '1';\n prevButton.style.pointerEvents = swiperInstance.isBeginning ? 'none' : 'auto'; \n\n\t\tnextButton.style.opacity = swiperInstance.isEnd ? '0.5' : '1';\n nextButton.style.pointerEvents = swiperInstance.isEnd ? 'none' : 'auto';\n }\n\n // Public methods\n return {\n init: function({selectors, onItemClick}) {\n SELECTORS = selectors;\n document.addEventListener('DOMContentLoaded', function() {\n \tconst swiperWrapper = document.querySelector(SELECTORS.swiperWrapper);\n swiperWrapper.style.gap = '0';\n \t\n // Initialize swiper\n initSwiper({onItemClick});\n });\n }\n };\n})();", "\n// Get all room price data - this is done by a collection list element creating:\n// < script type=\"application/json\" class=\"room-price-data\"> \n// {\n// \"roomSlug\": \"\",\n// \"editionSlug\": \"\",\n// \"basePriceWeek\": ,\n// \"basePriceMonth\": ,\n// \"discountMonth2\": ,\n// \"discountMonth3\":\n// }\n// </ script > \nexport function getAllRoomPrices(editionSlugFilter) {\n const priceElements = document.querySelectorAll('.room-price-data');\n const roomPrices = Array.from(priceElements).map(x => JSON.parse(x.textContent));\n if (!editionSlugFilter) {\n \treturn roomPrices;\n }\n return roomPrices.filter((x) => x.editionSlug === editionSlugFilter)\n}\n\n// calculate month difference while 1 month is always 30 days\nexport function getMonthDifference(startDate, endDate) {\n if (!startDate || !endDate) return 0;\n return Math.floor((endDate - startDate) / (1000 * 60 * 60 * 24 * 30)); \n}\n\nexport function formatPrice(price, currency) {\n\t// That\u2019s the locale for German, which uses the formatting style we\u2019re after. \n // We could also use 'fr-FR', 'it-IT', etc. \u2014 most European locales format this way.\n return new Intl.NumberFormat('de-DE', {\n style: 'currency',\n \tcurrency,\n currencyDisplay: 'code'\n }).format(price);\n}\n\nexport function parseDecimalFromString(price, defaultValue = null) {\n return !isNaN(parseFloat(price))\n ? parseFloat(price)\n : defaultValue; \n}\n", "import { getAllRoomPrices, formatPrice, parseDecimalFromString } from \"../../utils/commonUtils\"\n\n// Updates all room prices in the list based on selected values on the dropdowns\nexport function updateRoomPrices() {\n\tconst editionSlug = CollectionListDropDown.getValue(\"#workation-season-dropdown\");\n const lengthOfStay = CollectionListDropDown.getValue(\"#length-stay-dropdown\");\n //const guestCount = parseInt(CollectionListDropDown.getValue(\"#guest-count-dropdown\"));\n const currency = document.querySelector(\"#rooms\")?.getAttribute(\"data-currency\") ?? \"EUR\";\n\n // Get all room items\n const allRooms = document.querySelectorAll('.room-list-item');\n \n const roomEditionPrices = editionSlug ? getAllRoomPrices(editionSlug) : []; //if no edition selected, we still want to loop and hide prices\n allRooms.forEach((room) => {\n const roomSlug = room.getAttribute('data-roomslug');\n const allowWeeklyBooking = room.getAttribute('data-allow-weekly-booking') === \"Enabled\";\n const roomEditionPrice = roomEditionPrices.find((x) => x.roomSlug === roomSlug);\n updateRoomPrice(room, roomEditionPrice, lengthOfStay, currency, allowWeeklyBooking);\n });\n}\n\n// Updates the price of one room\nfunction updateRoomPrice(room, roomEditionPrice, lengthOfStay, currency, allowWeeklyBooking) {\n const priceBreakdownElem = room.querySelector('.room-item-price-breakdown');\n const priceMonthElem = room.querySelector('.room-item-price-month');\n const roomDiscountElem = room.querySelector('.room-discount-text');\n const roomBookButton = room.querySelector('.room-book-button');\n const noPriceAvailable = room.querySelector('.room-item-price-not-avalable');\n const isWeekBooking = lengthOfStay && lengthOfStay.startsWith(\"week\");\n\n const noPriceAvailableText = noPriceAvailable.innerText;\n const weeklyBookingText = \"Minimum length of stay for this room is 1 month\";\n\n const basePriceWeek = parseDecimalFromString(roomEditionPrice?.basePriceWeek);\n\n // if there is no price set for the room, hide all prices and booking button\n if (!roomEditionPrice || (isWeekBooking && !allowWeeklyBooking) || (isWeekBooking && allowWeeklyBooking && !basePriceWeek)) {\n noPriceAvailable.innerText = (isWeekBooking && !allowWeeklyBooking) ? weeklyBookingText : noPriceAvailableText;\n\t noPriceAvailable.style.display = 'flex';\n priceBreakdownElem.style.display = 'none';\n priceMonthElem.style.display = 'none';\n roomDiscountElem.parentElement.style.display = 'none';\n roomBookButton.style.opacity = \"0.5\";\n roomBookButton.style.pointerEvents = \"none\";\n roomBookButton.style.cursor = \"not-allowed\";\n return;\n }\n \n // reset all elements in case they were hidden before\n noPriceAvailable.style.display = 'none';\n priceMonthElem.style.display = 'block';\n roomDiscountElem.parentElement.style.display = 'flex';\n roomBookButton.style.opacity = \"1\";\n roomBookButton.style.pointerEvents = \"auto\";\n roomBookButton.style.cursor = \"pointer\";\n \n const basePriceMonth = roomEditionPrice.basePriceMonth;\n\n const discount2months = roomEditionPrice.discountMonth2;\n const discount3months = roomEditionPrice.discountMonth3;\n const price2Month = basePriceMonth * (1 - discount2months / 100);\n const price3Month = basePriceMonth * (1 - discount3months / 100);\n\n const weeklyPriceFormatted = basePriceWeek ? formatPrice(basePriceWeek, currency) : \"N/A\";\n const basePriceFormatted = formatPrice(basePriceMonth, currency);\n\n // Hide price breakdown if guest stays only 1 month or 1 week (or no length is selected), else show it\n const hidePriceBreakdown = !lengthOfStay || lengthOfStay.endsWith(\"-1\");\n priceBreakdownElem.style.display = hidePriceBreakdown ? 'none' : 'inline';\n\n switch (lengthOfStay) {\n case 'week-1':\n priceMonthElem.innerText = `${weeklyPriceFormatted} / week`;\n roomDiscountElem.innerText = `Longer stays unlock better discounts!`;\n break;\n \n case 'week-2':\n priceBreakdownElem.innerText = `1st week: ${weeklyPriceFormatted}`;\n priceMonthElem.innerText = `${weeklyPriceFormatted} - 2nd week`;\n roomDiscountElem.innerText = `Longer stays unlock better discounts!`;\n break;\n \n case 'week-3':\n priceBreakdownElem.innerHTML = `\n \t1st week: ${weeklyPriceFormatted}<br>\n 2nd week: ${weeklyPriceFormatted}`;\n priceMonthElem.innerText = `${weeklyPriceFormatted} - 3rd week`;\n roomDiscountElem.innerText = `Longer stays unlock better discounts!`;\n break;\n\n default:\n case 'month-1':\n priceMonthElem.innerText = `${basePriceFormatted} / month`;\n roomDiscountElem.innerText = `Longer stays unlock better discounts!`;\n break;\n\n case 'month-2':\n priceBreakdownElem.innerText = `1st month: ${basePriceFormatted}`;\n priceMonthElem.innerText = `${formatPrice(price2Month, currency)} - 2nd month`;\n roomDiscountElem.parentElement.style.display = (discount2months == 0) ? \"none\": \"block\";\n roomDiscountElem.innerText = `${discount2months.toFixed(1)}% discount for the 2nd month!`;\n break;\n\n case 'month-3':\n priceBreakdownElem.innerHTML = `\n \t1st month: ${basePriceFormatted}<br>\n 2nd month: ${formatPrice(price2Month, currency)}`;\n priceMonthElem.innerText = `${formatPrice(price3Month, currency)} - 3rd month`;\n \n roomDiscountElem.parentElement.style.display = (discount3months == 0) ? \"none\": \"block\";\n roomDiscountElem.innerText = `${discount3months.toFixed(1)}% discount for the 3rd month!`;\n break;\n }\n}\n\n// updates the discount elements in the length of stay dropdown\nexport function updateLengthOfStayDropdownDiscounts(editionSlug) {\n const months2discountElems = document.querySelectorAll('.dropdown-discount-2-months');\n const months3discountElems = document.querySelectorAll('.dropdown-discount-3-months');\n \n const roomEditionPrices = getAllRoomPrices(editionSlug);\n const discounts2months = roomEditionPrices.map((x) => x.discountMonth2);\n const discounts3months = roomEditionPrices.map((x) => x.discountMonth3);\n \n //need to be forEach because if an item is selected there are 2 (selected one and in dropdown)\n months2discountElems.forEach((elem) => {\n \tupdateLengthOfStayDropdownDiscount(elem, discounts2months);\n });\n months3discountElems.forEach((elem) => {\n \tupdateLengthOfStayDropdownDiscount(elem, discounts3months);\n });\n}\n\n// updates a single discount element in the length of stay dropdown\nfunction updateLengthOfStayDropdownDiscount(elem, discounts) {\n\tif (!discounts || discounts.length === 0) {\n \telem.style.display = 'none';\n return;\n }\n elem.style.display = 'flex'; // reset previous hide\n\n const allEqual = discounts.every(val => val === discounts[0]);\n const highestDiscount = Math.max(...discounts);\n if (highestDiscount == 0) {\n \telem.innerText = ``;\n } else {\n \telem.innerText = `${highestDiscount.toFixed(1)}% discount`;\n }\n if (!allEqual) {\n elem.innerText = 'Up to ' + elem.innerText;\n }\n}\n\n// loop through all rooms and update the booking URLs accoring to the filter values\nexport function updateAllRoomBookingButtonsUrls() {\n\tconst allBookingButtons = document.querySelectorAll(\".room-book-button\");\n const destinationSlug = document.querySelector(\"#rooms\")?.getAttribute(\"data-destination-slug\");\n \n allBookingButtons.forEach((bookingButton) => {\n \tconst bookingLinkElem = bookingButton.querySelector(\"a\");\n const baseUrl = bookingLinkElem.getAttribute(\"href\").split(\"?\")[0]; // Remove existing query params\n\n\t\tconst roomSlug = bookingButton.getAttribute(\"data-roomslug\");\n const editionSlug = CollectionListDropDown.getValue(\"#workation-season-dropdown\");\n\t const guestsCount = CollectionListDropDown.getValue(\"#guest-count-dropdown\") ?? 1;\n\n // Update the link's href with the new query parameters\n bookingLinkElem.setAttribute(\"href\", `${baseUrl}` +\n \t`?destination=${encodeURIComponent(destinationSlug)}` +\n \t`&edition=${encodeURIComponent(editionSlug)}` +\n `&room=${encodeURIComponent(roomSlug)}` +\n `&guests=${encodeURIComponent(guestsCount)}`);\n });\n}\n\n// set initial value of the workation season dropdown\nexport function setInitialWorkationSeasonDropdownItem() {\n\tconst editionSlugQueryParam = new URLSearchParams(window.location.search).get(\"edition\");\n\tconst workationSeasonItems = document.querySelectorAll(\"#workation-season-dropdown .dropdown-item\");\n\tconst workationInitialValue = editionSlugQueryParam ?? (workationSeasonItems.length > 0 ? workationSeasonItems[0].getAttribute('data-value') : null);\n\tCollectionListDropDown.setValue(\"#workation-season-dropdown\", workationInitialValue);\n}\n", "export function initLocationMap () {\n const address = document.getElementById(\"map-data\").dataset.address;\n if (!address) return;\n\n // Geocode the address to get coordinates\n const geocoder = new google.maps.Geocoder();\n\n geocoder.geocode({ address: address }, function (results, status) {\n if (status === \"OK\") {\n const map = new google.maps.Map(document.getElementById(\"map\"), {\n zoom: 14,\n center: results[0].geometry.location,\n });\n\n new google.maps.Marker({\n map: map,\n position: results[0].geometry.location,\n });\n } else {\n console.error(\"Geocode failed: \" + status);\n }\n });\n}", "export function initUpcomingWorkations() {\n //reducing opacity for all CLOSED booking states \n document.querySelectorAll(\"#upcoming-workations .swiper-slide\").forEach(item => {\n let bookingState = item.getAttribute(\"data-booking-state\")?.toLowerCase();\n if (bookingState === \"closed\") {\n item.style.opacity = \"0.5\";\n item.style.pointerEvents = \"none\";\n\t\t\titem.style.cursor = \"not-allowed\";\n } else if (bookingState === \"available soon\") {\n item.style.pointerEvents = \"none\";\n item.style.cursor = \"default\";\n }\n });\n}\n", "export class SimpleCardsCarousel {\n constructor(selectors) {\n this.SELECTORS = selectors;\n this.swiperInstance = null;\n this.prevButton = null;\n this.nextButton = null;\n }\n\n init() {\n document.addEventListener('DOMContentLoaded', () => {\n const swiperWrapper = document.querySelector(this.SELECTORS.swiperWrapper);\n swiperWrapper.style.gap = '0';\n this.initSwiper();\n });\n }\n\n initSwiper() {\n const refContainer = document.querySelector(this.SELECTORS.refContainer);\n const swiperWrapper = document.querySelector(this.SELECTORS.swiperWrapper);\n this.prevButton = document.querySelector(this.SELECTORS.prevButton);\n this.nextButton = document.querySelector(this.SELECTORS.nextButton);\n\n if (!refContainer || !swiperWrapper || !this.prevButton || !this.nextButton) {\n console.error('Required elements not found');\n return null;\n }\n\n const refRect = refContainer.getBoundingClientRect();\n const offsetBefore = refRect.left;\n\n // Initialize Swiper\n const swiper = new Swiper(this.SELECTORS.swiper, {\n slidesPerView: 'auto',\n spaceBetween: 16,\n freeMode: false,\n slidesOffsetBefore: offsetBefore,\n slidesOffsetAfter: 16,\n navigation: {\n nextEl: this.SELECTORS.nextButton,\n prevEl: this.SELECTORS.prevButton,\n },\n watchOverflow: true,\n });\n\n this.swiperInstance = swiper;\n\n // Set initial state of buttons\n this.updateButtonsState();\n\n // Add event listeners to update button states when slides change\n swiper.on('slideChange', this.updateButtonsState.bind(this));\n\n // Add resize event listener separately\n window.addEventListener('resize', () => {\n const newOffsetBefore = refContainer.getBoundingClientRect().left;\n if (swiper && swiper.params) {\n swiper.params.slidesOffsetBefore = newOffsetBefore;\n swiper.update();\n }\n });\n\n return swiper;\n }\n\n updateButtonsState() {\n if (!this.prevButton || !this.nextButton) return;\n\n this.prevButton.style.opacity = this.swiperInstance.isBeginning ? '0.5' : '1';\n this.prevButton.style.pointerEvents = this.swiperInstance.isBeginning ? 'none' : 'auto';\n\n // Get Swiper's max translate position\n const maxTranslate = this.swiperInstance.maxTranslate();\n const currentTranslate = this.swiperInstance.translate;\n\n if (currentTranslate <= maxTranslate + 5) {\n this.nextButton.style.opacity = '0.5';\n this.nextButton.style.pointerEvents = 'none';\n } else {\n this.nextButton.style.opacity = '1';\n this.nextButton.style.pointerEvents = 'auto';\n }\n }\n}", "export const FeaturesCardsCarousel = (function () {\n let swiperInstance, prevButton, nextButton = null;\n let SELECTORS = null;\n\n function initSwiper() {\n const swiperWrapper = document.querySelector(SELECTORS.swiperWrapper);\n prevButton = document.querySelector(SELECTORS.prevButton);\n nextButton = document.querySelector(SELECTORS.nextButton);\n\n if (!swiperWrapper || !prevButton || !nextButton) {\n console.error('Required elements not found');\n return null;\n } \n\n // Initialize Swiper\n const swiper = new Swiper(SELECTORS.swiper, {\n slidesPerView: \"auto\",\n spaceBetween: 16,\n freeMode: false,\n slidesOffsetAfter: 16,\n navigation: {\n nextEl: SELECTORS.nextButton,\n prevEl: SELECTORS.prevButton,\n },\n watchOverflow: true,\n });\n\n\t\tswiperInstance = swiper;\n\n // Set initial state of buttons\n updateButtonsState();\n\n // Add event listeners to update button states when slides change\n swiper.on('slideChange', function () {\n updateButtonsState();\n });\n \n \n function setWrapperWidth() {\n const wrapperRect = swiperWrapper.getBoundingClientRect();\n \tconst wrapperBefore = wrapperRect.left;\n const carouselContainer = document.querySelector('#features-cards-section .features-cards-carousel-container')\n \n carouselContainer.style.width = `${window.innerWidth - wrapperBefore}px`;\n carouselContainer.style.minWidth = `${window.innerWidth - wrapperBefore}px`;\n carouselContainer.style.maxWidth = `${window.innerWidth - wrapperBefore}px`;\n\n swiperWrapper.style.width = `${window.innerWidth - wrapperBefore}px`;\n swiperWrapper.style.minWidth = `${window.innerWidth - wrapperBefore}px`;\n swiperWrapper.style.maxWidth = `${window.innerWidth - wrapperBefore}px`;\n }\n\n window.addEventListener('resize', setWrapperWidth);\n setWrapperWidth(); \n \n // Add resize event listener separately\n //window.addEventListener('resize', () => {\n // const newOffsetBefore = refContainer.getBoundingClientRect().left;\n // Check if Swiper instance exists and has a method to update params\n // if (swiper && swiper.params) {\n // swiper.params.slidesOffsetBefore = newOffsetBefore;\n // swiper.update(); // Refresh Swiper\n // }\n //});\n\n return swiper;\n }\n\n // Function to update button states\n function updateButtonsState() {\n \tif (!prevButton || !nextButton) return;\n \n prevButton.style.opacity = swiperInstance.isBeginning ? '0.5' : '1';\n prevButton.style.pointerEvents = swiperInstance.isBeginning ? 'none' : 'auto'; \n\n\t\tnextButton.style.opacity = swiperInstance.isEnd ? '0.5' : '1';\n nextButton.style.pointerEvents = swiperInstance.isEnd ? 'none' : 'auto';\n }\n\n // Public methods\n return {\n init: function(selectors) {\n SELECTORS = selectors;\n \tdocument.addEventListener('DOMContentLoaded', function() {\n\t\t\t\tconst swiperWrapper = document.querySelector(SELECTORS.swiperWrapper);\n swiperWrapper.style.gap = '0';\n \n // Initialize swiper\n initSwiper();\n\t\t\t});\n }\n };\n})();\n", "export const EditionCardsCarousel = (function () {\n let swiperInstance, prevButton, nextButton = null;\n let allSlides = []; // we need to store them for filtering \n let SELECTORS = null; \n\n function initSwiper() {\n const refContainer = document.querySelector(SELECTORS.refContainer); \n const swiperWrapper = document.querySelector(SELECTORS.swiperWrapper);\n prevButton = document.querySelector(SELECTORS.prevButton);\n nextButton = document.querySelector(SELECTORS.nextButton);\n allSlides = Array.from(document.querySelectorAll('#edition-cards-section .swiper .swiper-slide'));\n\n if (!refContainer || !swiperWrapper || !prevButton || !nextButton) {\n console.error('Required elements not found');\n return null;\n } \n \n\t\tconst refRect = refContainer.getBoundingClientRect();\n \tconst offsetBefore = refRect.left;\n\n // Initialize Swiper\n const swiper = new Swiper(SELECTORS.swiper, {\n slidesPerView: \"auto\",\n spaceBetween: 16,\n freeMode: false,\n slidesOffsetBefore: offsetBefore,\n slidesOffsetAfter: 16,\n navigation: {\n nextEl: SELECTORS.nextButton,\n \tprevEl: SELECTORS.prevButton,\n },\n watchOverflow: true,\n });\n\n\t swiperInstance = swiper;\n\n // Set initial state of buttons\n updateButtonsState();\n\n // Add event listeners to update button states when slides change\n swiper.on('slideChange', updateButtonsState);\n \n // Add resize event listener separately\n window.addEventListener('resize', () => {\n const newOffsetBefore = refContainer.getBoundingClientRect().left;\n\n // Check if Swiper instance exists and has a method to update params\n if (swiper && swiper.params) {\n swiper.params.slidesOffsetBefore = newOffsetBefore;\n swiper.update(); // Refresh Swiper\n }\n });\n\n return swiper;\n }\n\n // Function to update button states\n function updateButtonsState() {\n \tif (!prevButton || !nextButton) return;\n \n prevButton.style.opacity = swiperInstance.isBeginning ? '0.5' : '1';\n prevButton.style.pointerEvents = swiperInstance.isBeginning ? 'none' : 'auto'; \n\n //nextButton.style.opacity = swiperInstance.isEnd ? '0.5' : '1';\n //nextButton.style.pointerEvents = swiperInstance.isEnd ? 'none' : 'auto';\n // Get Swiper's max translate position\n const maxTranslate = swiperInstance.maxTranslate();\n const currentTranslate = swiperInstance.translate;\n\n if (currentTranslate <= maxTranslate + 5) { // buffer of 5 to prevent minor calculation errors.\n nextButton.style.opacity = '0.5';\n nextButton.style.pointerEvents = 'none';\n } else {\n nextButton.style.opacity = '1';\n nextButton.style.pointerEvents = 'auto';\n }\n }\n\n // Public methods\n return {\n init: function(selectors) {\n SELECTORS = selectors;\n document.addEventListener('DOMContentLoaded', function() {\n \tconst swiperWrapper = document.querySelector(SELECTORS.swiperWrapper);\n swiperWrapper.style.gap = '0';\n \t\n // Initialize swiper\n initSwiper();\n });\n },\n filterSeason(season) {\n \tif (!swiperInstance) return;\n \n \t// Collect slides to keep\n \tconst slidesToKeep = allSlides.filter(slideEl => \n \t\tseason === 'all' || \n \t\tseason === slideEl.getAttribute('data-season')\n \t);\n \n swiperInstance.removeAllSlides();\n\n // Add filtered slides\n swiperInstance.addSlide(0, slidesToKeep);\n\n // Reset to first slide\n swiperInstance.slideTo(0, 0, false);\n \n updateButtonsState();\n }\n };\n})();\n\n\n// loop through all edition cards and add the edition query param to all URLs\n// because we are linking to a destination page and want to pre-set the edition dropdown \nexport function updateEditionCardLinkUrls() {\n\tconst allEditionCards = document.querySelectorAll(\"#edition-cards-section .edition-card-item\");\n \n allEditionCards.forEach((editionCard) => {\n \tconst editionLinkElems = editionCard.querySelectorAll(\"a\"); // we defined the card multiple times in the collection item\n const editionSlug = editionCard.getAttribute(\"data-editionslug\");\n const bookingState = editionCard.getAttribute(\"data-bookingstate\");\n\n editionLinkElems.forEach((link) => {\n \t// remove link from card and give bg less opacity for booking state \"available soon\"\n \tif (bookingState == \"Available Soon\") {\n \t\tlink.setAttribute(\"href\", \"#\");\n link.style.cursor = \"auto\";\n \n const bgImage = link.querySelector(\".edition-card-image\");\n bgImage.style.opacity = 0.4;\n } else if (editionSlug) {\n const baseUrl = link.getAttribute(\"href\").split(\"?\")[0]; // Remove existing query params\n // Update the link's href with the new query parameter\n link.setAttribute(\"href\", `${baseUrl}?edition=${encodeURIComponent(editionSlug)}`);\n }\n });\n });\n}\n", "export function initUpcomingEditionsFilter() {\n // Set up filter buttons\n const filterButtons = document.querySelectorAll('.filter-button');\n const allItems = document.querySelectorAll('.filter-list-item');\n\n // Add click event to each filter button\n filterButtons.forEach(button => {\n button.addEventListener('click', function() {\n // Remove active class from all buttons\n filterButtons.forEach(btn => btn.classList.remove(\"active\"));\n \n // Add active class to current button\n this.classList.add(\"active\");\n \n // Get the season value from the button's data attribute\n const season = this.getAttribute('data-season');\n \n // If \"All\" is selected, show all items\n if (season === 'all') {\n allItems.forEach(item => {\n item.classList.remove(\"filtered-out\");\n \t});\n } else {\n \t// Filter items based on the selected season\n \tallItems.forEach(item => {\n const itemSeason = item.getAttribute('data-season');\n if (itemSeason === season) {\n item.classList.remove(\"filtered-out\");\n } else {\n item.classList.add(\"filtered-out\");\n }\n });\n }\n });\n });\n \n // Trigger \"All\" filter on page load\n const allButton = document.querySelector('[data-season=\"all\"]');\n if (allButton) {\n allButton.click();\n }\n}", "/**\n * Read-more truncator\n * ---------------------------------\n * 1. Finds every element that has data-read-more=\"123\" (height in px).\n * 2. If the element\u2019s scrollHeight > maxHeight, it:\n * \u2022 sets max-height + overflow: hidden\n * \u2022 appends a toggle link\n * 3. Clicking the link expands/collapses the element and updates the link text.\n *\n * Works for any text-based element (div, p, rich-text, etc.).\n */\nexport function initReadMore () {\n /** Utility to create the toggle link */\n function makeToggleLink(initial) {\n const link = document.createElement('a');\n link.href = '#';\n link.textContent = initial ? 'Read more' : 'Read less';\n link.style.display = 'inline-block';\n link.style.color = '#0a4915';\n link.style.fontWeight = '600';\n return link;\n }\n\n /** Main scan */\n document.querySelectorAll('[data-read-more]').forEach((el) => {\n const maxHeight = parseInt(el.getAttribute('data-read-more'), 10);\n if (isNaN(maxHeight)) return; // skip if attribute malformed\n\n // Already short enough? leave untouched\n if (el.scrollHeight <= maxHeight) return;\n\n // Prepare element: hide overflow & store full height\n el.style.maxHeight = maxHeight + 'px';\n el.style.overflow = 'hidden';\n el.dataset.readMoreState = 'collapsed';\n\n // Insert toggle link after the element\n const toggle = makeToggleLink(true);\n el.insertAdjacentElement('afterend', toggle);\n\n toggle.addEventListener('click', function (e) {\n e.preventDefault();\n const collapsed = el.dataset.readMoreState === 'collapsed';\n\n if (collapsed) {\n el.style.maxHeight = el.scrollHeight + 'px';\n el.dataset.readMoreState = 'expanded';\n this.textContent = 'Read less';\n } else {\n el.style.maxHeight = maxHeight + 'px';\n el.dataset.readMoreState = 'collapsed';\n this.textContent = 'Read more';\n }\n });\n });\n}", "import { initTestimonials } from './testimonials.js';\nimport { CollectionListDropDown } from \"../../controls/collectionListDropdown\"\nimport { ImpressionCardsCarousel } from \"../../components/impression-cards-carousel\";\nimport { UpcomingWorkationsCarousel } from \"../../components/upcoming-workations-carousel\";\nimport { setInitialWorkationSeasonDropdownItem, updateRoomPrices, updateLengthOfStayDropdownDiscounts, updateAllRoomBookingButtonsUrls } from './rooms-list.js';\nimport { initLocationMap } from './location-map.js';\nimport { initUpcomingWorkations } from './upcoming-workations.js';\nimport { SimpleCardsCarousel } from \"../../components/simple-cards.js\";\nimport { FeaturesCardsCarousel } from \"../../components/feature-slider\";\nimport { EditionCardsCarousel, updateEditionCardLinkUrls } from \"../../components/upcoming-editions\";\nimport { initUpcomingEditionsFilter } from \"../../components/upcoming-editions-filter\";\nimport { initReadMore } from \"../../utils/readMore.js\";\n\n// Make CollectionListDropDown globally accessible for other scripts\nwindow.CollectionListDropDown = CollectionListDropDown;\n\n\n/*****\n***\n*** Dropdown init\n***\n******/\n\n// Initialize the Room Filter Dropdowns\nCollectionListDropDown.init({ \n selector: \"#workation-season-dropdown\", \n onChange: (selectedItem) => {\n // Get the location value from the dropdown\n const editionSlug = selectedItem.getAttribute('data-value');\n updateLengthOfStayDropdownDiscounts(editionSlug);\n updateRoomPrices();\n updateAllRoomBookingButtonsUrls();\n }\n});\n\n// Initialize the Length of stay Dropdown\nCollectionListDropDown.init({ \n selector: \"#length-stay-dropdown\", \n initialValue: 'month-3', \n onChange: () => updateRoomPrices()\n});\n\n// Initialize the Guest Count Dropdown\nCollectionListDropDown.init({ \n selector: \"#guest-count-dropdown\", \n initialValue: '1', \n onChange: () => {\n updateRoomPrices();\n updateAllRoomBookingButtonsUrls();\n }\n});\n\n// Initialize the image carousels\nImpressionCardsCarousel.init({selectorId: '#impressions-cards-slider-1', isReverse: false});\nImpressionCardsCarousel.init({selectorId: '#impressions-cards-slider-2', isReverse: true});\n\n// Initialize the Upcoming Workations Carousel\nUpcomingWorkationsCarousel.init({\n selectors: {\n\t swiper: '#upcoming-workations .swiper',\n swiperWrapper: '#upcoming-workations .swiper-wrapper',\n swiperSlides: '#upcoming-workations .upcoming-workation-card', \n prevButton: '#upcoming-workations-swiper-prev-btn',\n nextButton: '#upcoming-workations-swiper-next-btn'\n },\n onItemClick: (item) => { \n\t\tconst editionSlug = item.getAttribute('data-edition');\n window.CollectionListDropDown.setValue(\"#workation-season-dropdown\", editionSlug);\n }\n});\n\n// Initialize the activity cards carousel with a separate instance\nconst activityCardsCarousel = new SimpleCardsCarousel({\n refContainer: \"#activity-cards-swiper-ref-container\", // this is needed for calculating the left offset\n swiper: '#activity-cards-section .swiper',\n swiperWrapper: '#activity-cards-section .swiper-wrapper', \n prevButton: '#activity-cards-swiper-prev-btn',\n nextButton: '#activity-cards-swiper-next-btn'\n});\nactivityCardsCarousel.init();\n\n// Initialize the common facilities cards carousel with a separate instance\nconst commonFacilitiesCardsCarousel = new SimpleCardsCarousel({\n refContainer: \"#common-facilities-cards-swiper-ref-container\", // this is needed for calculating the left offset\n swiper: '#common-facilities-cards-section .swiper',\n swiperWrapper: '#common-facilities-cards-section .swiper-wrapper', \n prevButton: '#common-facilities-cards-swiper-prev-btn',\n nextButton: '#common-facilities-cards-swiper-next-btn'\n});\ncommonFacilitiesCardsCarousel.init();\n\n// Initialize the feature cards carousel\nFeaturesCardsCarousel.init({\n swiper: '#features-cards-section .swiper',\n swiperWrapper: '#features-cards-section .swiper-wrapper', \n prevButton: '#features-cards-btn-left',\n nextButton: '#features-cards-btn-right'\n});\n\n// Initialize the carousel\nEditionCardsCarousel.init({\n refContainer: \"#edition-cards-swiper-ref-container\", // this is needed for calculating the left offset\n swiper: '#edition-cards-section .swiper',\n swiperWrapper: '#edition-cards-section .swiper-wrapper', \n prevButton: '#edition-cards-swiper-prev-btn',\n nextButton: '#edition-cards-swiper-next-btn'\n});\n\n\n/*****\n***\n*** Initial setup after dom load\n***\n******/\ndocument.addEventListener('DOMContentLoaded', function() {\n initTestimonials('#destination-testimonials-section');\n\n\t// set initial value of the workation season dropdown\n\tsetInitialWorkationSeasonDropdownItem();\n \n\t// initially update room prices and discounts\n\tupdateRoomPrices();\n updateLengthOfStayDropdownDiscounts();\n \n // update initially all booking button URLs of all rooms\n updateAllRoomBookingButtonsUrls();\n\n // init location map\n initLocationMap();\n\n // init upcoming workations\n initUpcomingWorkations();\n\n // update edition card links\n updateEditionCardLinkUrls();\n\n // init upcoming editions filter\n initUpcomingEditionsFilter();\n\n // init read more\n initReadMore();\n});\n\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["initTestimonials", "selectorId", "allTestimonials", "allAuthorSlots", "currentIndex", "el", "slot", "showTestimonial", "index", "i", "authors", "testimonial", "imgUrl", "prevBtn", "nextBtn", "newIndex", "
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["initTestimonials", "selectorId", "allTestimonials", "allAuthorSlots", "currentIndex", "el", "slot", "showTestimonial", "index", "i", "authors", "testimonial", "imgUrl", "prevBtn", "nextBtn", "newIndex", "CollectionListDropDown", "dropdowns", "initDropDown", "selector", "onChange", "initialValue", "container", "dropdown", "dropdownToggle", "dropdownList", "selectedItemValueContainer", "collectionItems", "item", "event", "selectedOption", "selectDropDownElement", "getElementByItemValue", "selectedItem", "sourceElement", "clonedElement", "currentValue", "value", "x", "ImpressionCardsCarousel", "swiperInstance", "initSwiper", "selectorId", "isReverse", "swiper", "swiperWrapper", "UpcomingWorkationsCarousel", "swiperInstance", "prevButton", "nextButton", "SELECTORS", "initSwiper", "onItemClick", "swiperWrapper", "swiperSlides", "swiper", "updateButtonsState", "slide", "e", "selectors", "getAllRoomPrices", "editionSlugFilter", "priceElements", "roomPrices", "x", "formatPrice", "price", "currency", "parseDecimalFromString", "defaultValue", "updateRoomPrices", "editionSlug", "lengthOfStay", "currency", "allRooms", "roomEditionPrices", "getAllRoomPrices", "room", "roomSlug", "allowWeeklyBooking", "roomEditionPrice", "x", "updateRoomPrice", "priceBreakdownElem", "priceMonthElem", "roomDiscountElem", "roomBookButton", "noPriceAvailable", "isWeekBooking", "noPriceAvailableText", "weeklyBookingText", "basePriceWeek", "parseDecimalFromString", "basePriceMonth", "discount2months", "discount3months", "price2Month", "price3Month", "weeklyPriceFormatted", "formatPrice", "basePriceFormatted", "hidePriceBreakdown", "updateLengthOfStayDropdownDiscounts", "months2discountElems", "months3discountElems", "discounts2months", "discounts3months", "elem", "updateLengthOfStayDropdownDiscount", "discounts", "allEqual", "val", "highestDiscount", "updateAllRoomBookingButtonsUrls", "allBookingButtons", "destinationSlug", "bookingButton", "bookingLinkElem", "baseUrl", "guestsCount", "setInitialWorkationSeasonDropdownItem", "editionSlugQueryParam", "workationSeasonItems", "workationInitialValue", "initLocationMap", "address", "results", "status", "map", "initUpcomingWorkations", "item", "bookingState", "SimpleCardsCarousel", "selectors", "swiperWrapper", "refContainer", "offsetBefore", "swiper", "newOffsetBefore", "maxTranslate", "FeaturesCardsCarousel", "swiperInstance", "prevButton", "nextButton", "SELECTORS", "initSwiper", "swiperWrapper", "swiper", "updateButtonsState", "setWrapperWidth", "wrapperBefore", "carouselContainer", "selectors", "EditionCardsCarousel", "swiperInstance", "prevButton", "nextButton", "allSlides", "SELECTORS", "initSwiper", "refContainer", "swiperWrapper", "offsetBefore", "swiper", "updateButtonsState", "newOffsetBefore", "maxTranslate", "selectors", "season", "slidesToKeep", "slideEl", "updateEditionCardLinkUrls", "editionCard", "editionLinkElems", "editionSlug", "bookingState", "link", "bgImage", "baseUrl", "initUpcomingEditionsFilter", "filterButtons", "allItems", "button", "btn", "season", "item", "allButton", "initReadMore", "makeToggleLink", "initial", "link", "el", "maxHeight", "toggle", "e", "CollectionListDropDown", "selectedItem", "editionSlug", "updateLengthOfStayDropdownDiscounts", "updateRoomPrices", "updateAllRoomBookingButtonsUrls", "ImpressionCardsCarousel", "UpcomingWorkationsCarousel", "item", "activityCardsCarousel", "SimpleCardsCarousel", "commonFacilitiesCardsCarousel", "FeaturesCardsCarousel", "EditionCardsCarousel", "initTestimonials", "setInitialWorkationSeasonDropdownItem", "initLocationMap", "initUpcomingWorkations", "updateEditionCardLinkUrls", "initUpcomingEditionsFilter", "initReadMore"]
|
|
7
7
|
}
|
package/bundle-faqs.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(()=>{
|
|
1
|
+
(()=>{function r(){let a=document.querySelectorAll("[data-target-destination]"),d=document.querySelectorAll("[data-faq-destination]");function l(t){d.forEach(e=>{let o=e.getAttribute("data-faq-destination")===t||e.getAttribute("data-faq-destination")==="";e.style.display=o?"block":"none"})}a.forEach(t=>{t.addEventListener("click",()=>{let e=t.getAttribute("data-target-destination");a.forEach(i=>{let n=i.querySelector("a");n&&n.classList.remove("active")});let o=t.querySelector("a");o&&o.classList.add("active"),l(e),document.querySelectorAll(".faq-list-wrapper").forEach(i=>{let n=Array.from(i.children).filter(c=>c.hasAttribute("data-faq-destination")),f=n.length>0&&n.every(c=>c.style.display==="none"),s=i.closest(".section");s&&(s.style.display=f?"none":"")})})}),a.length>0&&a[0].click()}document.addEventListener("DOMContentLoaded",function(){r()});})();
|
|
2
2
|
//# sourceMappingURL=bundle-faqs.min.js.map
|
package/bundle-faqs.min.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../pages/faqs/faq-tabs.js", "../pages/faqs/index.js"],
|
|
4
4
|
"sourcesContent": ["export function initFaqTabs () {\n const tabs = document.querySelectorAll(\"[data-target-destination]\");\n const faqs = document.querySelectorAll(\"[data-faq-destination]\");\n\n function showFAQsFor(destinationId) {\n faqs.forEach(faq => {\n const matchesDestination = faq.getAttribute(\"data-faq-destination\") === destinationId || faq.getAttribute(\"data-faq-destination\") === \"\";\n faq.style.display = matchesDestination ? \"block\" : \"none\";\n });\n }\n\n tabs.forEach(tab => {\n tab.addEventListener(\"click\", () => {\n const selectedId = tab.getAttribute(\"data-target-destination\");\n\n // UI update for active tab (on anchor child)\n tabs.forEach(t => {\n const anchor = t.querySelector(\"a\");\n if (anchor) anchor.classList.remove(\"active\");\n });\n\n const currentAnchor = tab.querySelector(\"a\");\n if (currentAnchor) currentAnchor.classList.add(\"active\");\n\n showFAQsFor(selectedId);\n\n // Show/hide \"no FAQs\" message if all children are hidden\n document.querySelectorAll('.faq-list-wrapper').forEach(wrapper => {\n const children = Array.from(wrapper.children).filter(child => child.hasAttribute('data-faq-destination'));\n const allHidden = children.length > 0 && children.every(child => child.style.display === 'none');\n const section = wrapper.closest('.section');\n if (section) {\n section.style.display = allHidden ? 'none' : '';\n }\n });\n });\n });\n\n //Trigger first tab\n if (tabs.length > 0) {\n tabs[0].click();\n }\n}", "import { initFaqTabs } from \"./faq-tabs.js\";\n\ndocument.addEventListener('DOMContentLoaded', function() {\n initFaqTabs();\n});"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["initFaqTabs", "tabs", "faqs", "showFAQsFor", "destinationId", "faq", "matchesDestination", "tab", "selectedId", "t", "anchor", "currentAnchor", "wrapper", "children", "child", "allHidden", "section", "
|
|
5
|
+
"mappings": "MAAO,SAASA,GAAe,CAC7B,IAAMC,EAAO,SAAS,iBAAiB,2BAA2B,EAC5DC,EAAO,SAAS,iBAAiB,wBAAwB,EAE/D,SAASC,EAAYC,EAAe,CAClCF,EAAK,QAAQG,GAAO,CAClB,IAAMC,EAAqBD,EAAI,aAAa,sBAAsB,IAAMD,GAAiBC,EAAI,aAAa,sBAAsB,IAAM,GACtIA,EAAI,MAAM,QAAUC,EAAqB,QAAU,MACrD,CAAC,CACH,CAEAL,EAAK,QAAQM,GAAO,CAClBA,EAAI,iBAAiB,QAAS,IAAM,CAClC,IAAMC,EAAaD,EAAI,aAAa,yBAAyB,EAG7DN,EAAK,QAAQQ,GAAK,CAChB,IAAMC,EAASD,EAAE,cAAc,GAAG,EAC9BC,GAAQA,EAAO,UAAU,OAAO,QAAQ,CAC9C,CAAC,EAED,IAAMC,EAAgBJ,EAAI,cAAc,GAAG,EACvCI,GAAeA,EAAc,UAAU,IAAI,QAAQ,EAEvDR,EAAYK,CAAU,EAGtB,SAAS,iBAAiB,mBAAmB,EAAE,QAAQI,GAAW,CAChE,IAAMC,EAAW,MAAM,KAAKD,EAAQ,QAAQ,EAAE,OAAOE,GAASA,EAAM,aAAa,sBAAsB,CAAC,EAClGC,EAAYF,EAAS,OAAS,GAAKA,EAAS,MAAMC,GAASA,EAAM,MAAM,UAAY,MAAM,EACzFE,EAAUJ,EAAQ,QAAQ,UAAU,EACtCI,IACFA,EAAQ,MAAM,QAAUD,EAAY,OAAS,GAEjD,CAAC,CACH,CAAC,CACH,CAAC,EAGGd,EAAK,OAAS,GAChBA,EAAK,CAAC,EAAE,MAAM,CAElB,CCxCA,SAAS,iBAAiB,mBAAoB,UAAW,CACvDgB,EAAY,CACd,CAAC",
|
|
6
|
+
"names": ["initFaqTabs", "tabs", "faqs", "showFAQsFor", "destinationId", "faq", "matchesDestination", "tab", "selectedId", "t", "anchor", "currentAnchor", "wrapper", "children", "child", "allHidden", "section", "initFaqTabs"]
|
|
7
7
|
}
|
package/bundle-homepage.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(()=>{var
|
|
1
|
+
(()=>{var S=function(){let i,o=null,n=null;function s(){let e=document.querySelector(n.swiperWrapper);if(o=document.querySelector(n.pagination),!e||!o)return console.error("Required elements not found"),null;let t=new Swiper(n.swiper,{slidesPerView:1,grid:{rows:5},spaceBetween:0,pagination:{el:n.pagination,clickable:!0}});return i=t,t.on("slideChange",function(){}),t}return{init:function(e){n=e,document.addEventListener("DOMContentLoaded",function(){s()})}}}();var E=function(){let i={};function o(e,t,r){let a=document.querySelector(e),c=document.querySelector(`${e}.w-dropdown`),u=a.querySelector(`${e} .w-dropdown-toggle`),d=a.querySelector(`${e} .w-dropdown-list`),l=a.querySelector(`${e} .dropdown-selected-value`),p=a.querySelectorAll(`${e} .dropdown-item`);if(i[e]={container:a,dropdown:c,dropdownToggle:u,dropdownList:d,selectedItemValueContainer:l,collectionItems:p,onChange:t},p.forEach(f=>{f.addEventListener("click",function(C){C.preventDefault();let m=this;n(e,m),t&&t(m),d.classList.remove("w--open"),c.blur()})}),r){let f=s(e,r);f&&setTimeout(()=>{f.click()},200)}}function n(e,t){let r=i[e];if(!r)return;let a=r.selectedItemValueContainer;for(;a.firstChild;)a.removeChild(a.firstChild);let c=t;if(c){let u=c.cloneNode(!0);a.appendChild(u);let d=c.getAttribute("data-value");r.dropdown.setAttribute("data-current-value",d)}else console.error("SelectedItem Element not found.",t)}function s(e,t){let r=i[e];return Array.from(r.collectionItems).find(a=>a.getAttribute("data-value")===t)}return{init:function({selector:e,onChange:t,initialValue:r}){document.addEventListener("DOMContentLoaded",function(){o(e,t,r)})},setValue:function(e,t){let r=s(e,t);r?r.click():t!=null&&console.error(`No item with value '${t}' found in dropdown '${e}'`)},getValue:function(e){return i[e].dropdown.getAttribute("data-current-value")}}}();var y=function(){let i,o,n=null,s=[],e=null;function t(){let a=document.querySelector(e.refContainer),c=document.querySelector(e.swiperWrapper);if(o=document.querySelector(e.prevButton),n=document.querySelector(e.nextButton),s=Array.from(document.querySelectorAll("#edition-cards-section .swiper .swiper-slide")),!a||!c||!o||!n)return console.error("Required elements not found"),null;let d=a.getBoundingClientRect().left,l=new Swiper(e.swiper,{slidesPerView:"auto",spaceBetween:16,freeMode:!1,slidesOffsetBefore:d,slidesOffsetAfter:16,navigation:{nextEl:e.nextButton,prevEl:e.prevButton},watchOverflow:!0});return i=l,r(),l.on("slideChange",r),window.addEventListener("resize",()=>{let p=a.getBoundingClientRect().left;l&&l.params&&(l.params.slidesOffsetBefore=p,l.update())}),l}function r(){if(!o||!n)return;o.style.opacity=i.isBeginning?"0.5":"1",o.style.pointerEvents=i.isBeginning?"none":"auto";let a=i.maxTranslate();i.translate<=a+5?(n.style.opacity="0.5",n.style.pointerEvents="none"):(n.style.opacity="1",n.style.pointerEvents="auto")}return{init:function(a){e=a,document.addEventListener("DOMContentLoaded",function(){let c=document.querySelector(e.swiperWrapper);c.style.gap="0",t()})},filterSeason(a){if(!i)return;let c=s.filter(u=>a==="all"||a===u.getAttribute("data-season"));i.removeAllSlides(),i.addSlide(0,c),i.slideTo(0,0,!1),r()}}}();function h(){document.querySelectorAll("#edition-cards-section .edition-card-item").forEach(o=>{let n=o.querySelectorAll("a"),s=o.getAttribute("data-editionslug"),e=o.getAttribute("data-bookingstate");n.forEach(t=>{if(e=="Available Soon"){t.setAttribute("href","#"),t.style.cursor="auto";let r=t.querySelector(".edition-card-image");r.style.opacity=.4}else if(s){let r=t.getAttribute("href").split("?")[0];t.setAttribute("href",`${r}?edition=${encodeURIComponent(s)}`)}})})}function v(){let i=document.querySelectorAll(".filter-button"),o=document.querySelectorAll(".filter-list-item");i.forEach(s=>{s.addEventListener("click",function(){i.forEach(t=>t.classList.remove("active")),this.classList.add("active");let e=this.getAttribute("data-season");e==="all"?o.forEach(t=>{t.classList.remove("filtered-out")}):o.forEach(t=>{t.getAttribute("data-season")===e?t.classList.remove("filtered-out"):t.classList.add("filtered-out")})})});let n=document.querySelector('[data-season="all"]');n&&n.click()}var w=class{constructor(o){this.SELECTORS=o,this.swiperInstance=null,this.prevButton=null,this.nextButton=null}init(){document.addEventListener("DOMContentLoaded",()=>{let o=document.querySelector(this.SELECTORS.swiperWrapper);o.style.gap="0",this.initSwiper()})}initSwiper(){let o=document.querySelector(this.SELECTORS.refContainer),n=document.querySelector(this.SELECTORS.swiperWrapper);if(this.prevButton=document.querySelector(this.SELECTORS.prevButton),this.nextButton=document.querySelector(this.SELECTORS.nextButton),!o||!n||!this.prevButton||!this.nextButton)return console.error("Required elements not found"),null;let e=o.getBoundingClientRect().left,t=new Swiper(this.SELECTORS.swiper,{slidesPerView:"auto",spaceBetween:16,freeMode:!1,slidesOffsetBefore:e,slidesOffsetAfter:16,navigation:{nextEl:this.SELECTORS.nextButton,prevEl:this.SELECTORS.prevButton},watchOverflow:!0});return this.swiperInstance=t,this.updateButtonsState(),t.on("slideChange",this.updateButtonsState.bind(this)),window.addEventListener("resize",()=>{let r=o.getBoundingClientRect().left;t&&t.params&&(t.params.slidesOffsetBefore=r,t.update())}),t}updateButtonsState(){if(!this.prevButton||!this.nextButton)return;this.prevButton.style.opacity=this.swiperInstance.isBeginning?"0.5":"1",this.prevButton.style.pointerEvents=this.swiperInstance.isBeginning?"none":"auto";let o=this.swiperInstance.maxTranslate();this.swiperInstance.translate<=o+5?(this.nextButton.style.opacity="0.5",this.nextButton.style.pointerEvents="none"):(this.nextButton.style.opacity="1",this.nextButton.style.pointerEvents="auto")}};var g=function(){function i(n){let s=new Swiper(n,{effect:"cards",grabCursor:!0,slidesPerView:1,spaceBetween:0,freeMode:!1,slidesOffsetAfter:0,watchOverflow:!0,navigation:{nextEl:"#testimonial-cards-swiper-next-btn",prevEl:"#testimonial-cards-swiper-prev-btn"}});return o(s),s.on("slideChange",function(){o(s)}),s}function o(n){let s=document.querySelector("#testimonial-cards-swiper-prev-btn"),e=document.querySelector("#testimonial-cards-swiper-next-btn");s.style.opacity=n.isBeginning?"0.5":"1",s.style.pointerEvents=n.isBeginning?"none":"auto",e.style.opacity=n.isEnd?"0.5":"1",e.style.pointerEvents=n.isEnd?"none":"auto"}return{initSwiper:i}}();function B(){document.querySelectorAll("#testimonial-cards-section .testimonial-card-slide").forEach(n=>{n.style.position="static"}),document.querySelectorAll("#testimonial-cards-section .swiper-slide-shadow").forEach(n=>{n.style.borderRadius="16px"})}document.addEventListener("DOMContentLoaded",function(){h(),v(),B()});E.init({selector:"#destination-dropdown",onChange:i=>{let o=i.getAttribute("data-value")||i.textContent.trim(),n=document.querySelector("#find-workation-button"),s=n.getAttribute("href").split("?")[0];n.setAttribute("href",`${s}?location=${encodeURIComponent(o)}`)}});S.init({swiper:"#special-room-offers-section .swiper",swiperWrapper:"#special-room-offers-section .swiper-wrapper",pagination:"#special-room-offers-section .swiper-pagination"});y.init({refContainer:"#edition-cards-swiper-ref-container",swiper:"#edition-cards-section .swiper",swiperWrapper:"#edition-cards-section .swiper-wrapper",prevButton:"#edition-cards-swiper-prev-btn",nextButton:"#edition-cards-swiper-next-btn"});var x=new w({refContainer:"#activity-cards-swiper-ref-container",swiper:"#activity-cards-section .swiper",swiperWrapper:"#activity-cards-section .swiper-wrapper",prevButton:"#activity-cards-swiper-prev-btn",nextButton:"#activity-cards-swiper-next-btn"});x.init();g.initSwiper("#testimonial-cards-section .swiper");})();
|
|
2
2
|
//# sourceMappingURL=bundle-homepage.min.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../components/special-room-offers-cards.js", "../controls/collectionListDropdown.js", "../components/upcoming-editions.js", "../components/upcoming-editions-filter.js", "../components/simple-cards.js", "../components/testimonial-cards.js", "../pages/homepage/index.js"],
|
|
4
4
|
"sourcesContent": ["export const SpecialRoomOffersCardsCarousel = (function () {\n\tlet swiperInstance, pagination = null;\n let SELECTORS = null;\n\n function initSwiper() {\n const swiperWrapper = document.querySelector(SELECTORS.swiperWrapper);\n pagination = document.querySelector(SELECTORS.pagination);\n\n if (!swiperWrapper || !pagination) { \n console.error('Required elements not found');\n return null;\n } \n\n // Initialize Swiper\n const swiper = new Swiper(SELECTORS.swiper, {\n slidesPerView: 1,\n grid: {\n rows: 5,\n },\n spaceBetween: 0,\n pagination: {\n el: SELECTORS.pagination,\n clickable: true,\n },\n });\n\n\t\tswiperInstance = swiper;\n\n // Add event listeners to update button states when slides change\n swiper.on('slideChange', function () {\n });\n\n return swiper;\n }\n\n // Public methods\n return {\n init: function(selectors) {\n SELECTORS = selectors;\n document.addEventListener('DOMContentLoaded', function() {\n\n // Initialize swiper\n initSwiper();\n });\n }\n };\n})();\n\n", "export const CollectionListDropDown = (function () {\n // Store dropdown instances to access them later\n const dropdowns = {};\n \n function initDropDown(selector, onChange, initialValue) {\n const container = document.querySelector(selector);\n const dropdown = document.querySelector(`${selector}.w-dropdown`);\n const dropdownToggle = container.querySelector(`${selector} .w-dropdown-toggle`); \n const dropdownList = container.querySelector(`${selector} .w-dropdown-list`);\n const selectedItemValueContainer = container.querySelector(`${selector} .dropdown-selected-value`);\n const collectionItems = container.querySelectorAll(`${selector} .dropdown-item`);\n \n // Store this dropdown instance data for later access\n dropdowns[selector] = {\n container,\n dropdown,\n dropdownToggle,\n dropdownList,\n selectedItemValueContainer,\n collectionItems,\n onChange\n };\n \n collectionItems.forEach(item => {\n item.addEventListener('click', function(event) {\n event.preventDefault(); // Prevent default link behavior if using Link Blocks\n const selectedOption = this;\n selectDropDownElement(selector, selectedOption);\n \n onChange && onChange(selectedOption);\n // Close the dropdown\n dropdownList.classList.remove('w--open'); // Close the dropdown\n // Move focus away to reset dropdown behavior\n dropdown.blur();\n });\n });\n \n if (initialValue) {\n const item = getElementByItemValue(selector, initialValue);\n if (item) { \n setTimeout(() => {\n item.click(); // Simulate a click on the matching item to activate filter\n }, 200);\n }\n }\n }\n \n function selectDropDownElement(selector, selectedItem) {\n const dropdown = dropdowns[selector];\n if (!dropdown) return;\n \n const selectedItemValueContainer = dropdown.selectedItemValueContainer;\n \n while (selectedItemValueContainer.firstChild) {\n selectedItemValueContainer.removeChild(selectedItemValueContainer.firstChild);\n }\n \n const sourceElement = selectedItem;\n if (sourceElement) {\n const clonedElement = sourceElement.cloneNode(true);\n selectedItemValueContainer.appendChild(clonedElement);\n const currentValue = sourceElement.getAttribute('data-value');\n dropdown.dropdown.setAttribute('data-current-value', currentValue);\n } else {\n console.error(\"SelectedItem Element not found.\", selectedItem);\n }\n }\n \n function getElementByItemValue(selector, value) {\n const dropdown = dropdowns[selector];\n return Array.from(dropdown.collectionItems).find((x) => {\n return x.getAttribute('data-value') === value;\n });\n }\n \n // Public methods\n return {\n init: function({ selector, onChange, initialValue }) {\n document.addEventListener('DOMContentLoaded', function() {\n initDropDown(selector, onChange, initialValue);\n });\n },\n // Add a new public method to change dropdown value from outside\n setValue: function(selector, value) {\n const item = getElementByItemValue(selector, value);\n if (item) {\n item.click(); // Trigger the click event on the item\n } else if (value !== undefined && value !== null) {\n console.error(`No item with value '${value}' found in dropdown '${selector}'`);\n }\n },\n // Get currently selected dropdown value\n getValue: function(selector) {\n const dropdown = dropdowns[selector];\n return dropdown.dropdown.getAttribute('data-current-value');\n }\n };\n})();", "export const EditionCardsCarousel = (function () {\n let swiperInstance, prevButton, nextButton = null;\n let allSlides = []; // we need to store them for filtering \n let SELECTORS = null; \n\n function initSwiper() {\n const refContainer = document.querySelector(SELECTORS.refContainer); \n const swiperWrapper = document.querySelector(SELECTORS.swiperWrapper);\n prevButton = document.querySelector(SELECTORS.prevButton);\n nextButton = document.querySelector(SELECTORS.nextButton);\n allSlides = Array.from(document.querySelectorAll('#edition-cards-section .swiper .swiper-slide'));\n\n if (!refContainer || !swiperWrapper || !prevButton || !nextButton) {\n console.error('Required elements not found');\n return null;\n } \n \n\t\tconst refRect = refContainer.getBoundingClientRect();\n \tconst offsetBefore = refRect.left;\n\n // Initialize Swiper\n const swiper = new Swiper(SELECTORS.swiper, {\n slidesPerView: \"auto\",\n spaceBetween: 16,\n freeMode: false,\n slidesOffsetBefore: offsetBefore,\n slidesOffsetAfter: 16,\n navigation: {\n nextEl: SELECTORS.nextButton,\n \tprevEl: SELECTORS.prevButton,\n },\n watchOverflow: true,\n });\n\n\t swiperInstance = swiper;\n\n // Set initial state of buttons\n updateButtonsState();\n\n // Add event listeners to update button states when slides change\n swiper.on('slideChange', updateButtonsState);\n \n // Add resize event listener separately\n window.addEventListener('resize', () => {\n const newOffsetBefore = refContainer.getBoundingClientRect().left;\n\n // Check if Swiper instance exists and has a method to update params\n if (swiper && swiper.params) {\n swiper.params.slidesOffsetBefore = newOffsetBefore;\n swiper.update(); // Refresh Swiper\n }\n });\n\n return swiper;\n }\n\n // Function to update button states\n function updateButtonsState() {\n \tif (!prevButton || !nextButton) return;\n \n prevButton.style.opacity = swiperInstance.isBeginning ? '0.5' : '1';\n prevButton.style.pointerEvents = swiperInstance.isBeginning ? 'none' : 'auto'; \n\n //nextButton.style.opacity = swiperInstance.isEnd ? '0.5' : '1';\n //nextButton.style.pointerEvents = swiperInstance.isEnd ? 'none' : 'auto';\n // Get Swiper's max translate position\n const maxTranslate = swiperInstance.maxTranslate();\n const currentTranslate = swiperInstance.translate;\n\n if (currentTranslate <= maxTranslate + 5) { // buffer of 5 to prevent minor calculation errors.\n nextButton.style.opacity = '0.5';\n nextButton.style.pointerEvents = 'none';\n } else {\n nextButton.style.opacity = '1';\n nextButton.style.pointerEvents = 'auto';\n }\n }\n\n // Public methods\n return {\n init: function(selectors) {\n SELECTORS = selectors;\n document.addEventListener('DOMContentLoaded', function() {\n \tconst swiperWrapper = document.querySelector(SELECTORS.swiperWrapper);\n swiperWrapper.style.gap = '0';\n \t\n // Initialize swiper\n initSwiper();\n });\n },\n filterSeason(season) {\n \tif (!swiperInstance) return;\n \n \t// Collect slides to keep\n \tconst slidesToKeep = allSlides.filter(slideEl => \n \t\tseason === 'all' || \n \t\tseason === slideEl.getAttribute('data-season')\n \t);\n \n swiperInstance.removeAllSlides();\n\n // Add filtered slides\n swiperInstance.addSlide(0, slidesToKeep);\n\n // Reset to first slide\n swiperInstance.slideTo(0, 0, false);\n \n updateButtonsState();\n }\n };\n})();\n\n\n// loop through all edition cards and add the edition query param to all URLs\n// because we are linking to a destination page and want to pre-set the edition dropdown \nexport function updateEditionCardLinkUrls() {\n\tconst allEditionCards = document.querySelectorAll(\"#edition-cards-section .edition-card-item\");\n \n allEditionCards.forEach((editionCard) => {\n \tconst editionLinkElems = editionCard.querySelectorAll(\"a\"); // we defined the card multiple times in the collection item\n const editionSlug = editionCard.getAttribute(\"data-editionslug\");\n const bookingState = editionCard.getAttribute(\"data-bookingstate\");\n\n editionLinkElems.forEach((link) => {\n \t// remove link from card and give bg less opacity for booking state \"available soon\"\n \tif (bookingState == \"Available Soon\") {\n \t\tlink.setAttribute(\"href\", \"#\");\n link.style.cursor = \"auto\";\n \n const bgImage = link.querySelector(\".edition-card-image\");\n bgImage.style.opacity = 0.4;\n } else if (editionSlug) {\n const baseUrl = link.getAttribute(\"href\").split(\"?\")[0]; // Remove existing query params\n // Update the link's href with the new query parameter\n link.setAttribute(\"href\", `${baseUrl}?edition=${encodeURIComponent(editionSlug)}`);\n }\n });\n });\n}\n", "export function initUpcomingEditionsFilter() {\n // Set up filter buttons\n const filterButtons = document.querySelectorAll('.filter-button');\n const allItems = document.querySelectorAll('.filter-list-item');\n\n // Add click event to each filter button\n filterButtons.forEach(button => {\n button.addEventListener('click', function() {\n // Remove active class from all buttons\n filterButtons.forEach(btn => btn.classList.remove(\"active\"));\n \n // Add active class to current button\n this.classList.add(\"active\");\n \n // Get the season value from the button's data attribute\n const season = this.getAttribute('data-season');\n \n // If \"All\" is selected, show all items\n if (season === 'all') {\n allItems.forEach(item => {\n item.classList.remove(\"filtered-out\");\n \t});\n } else {\n \t// Filter items based on the selected season\n \tallItems.forEach(item => {\n const itemSeason = item.getAttribute('data-season');\n if (itemSeason === season) {\n item.classList.remove(\"filtered-out\");\n } else {\n item.classList.add(\"filtered-out\");\n }\n });\n }\n });\n });\n \n // Trigger \"All\" filter on page load\n const allButton = document.querySelector('[data-season=\"all\"]');\n if (allButton) {\n allButton.click();\n }\n}", "export class SimpleCardsCarousel {\n constructor(selectors) {\n this.SELECTORS = selectors;\n this.swiperInstance = null;\n this.prevButton = null;\n this.nextButton = null;\n }\n\n init() {\n document.addEventListener('DOMContentLoaded', () => {\n const swiperWrapper = document.querySelector(this.SELECTORS.swiperWrapper);\n swiperWrapper.style.gap = '0';\n this.initSwiper();\n });\n }\n\n initSwiper() {\n const refContainer = document.querySelector(this.SELECTORS.refContainer);\n const swiperWrapper = document.querySelector(this.SELECTORS.swiperWrapper);\n this.prevButton = document.querySelector(this.SELECTORS.prevButton);\n this.nextButton = document.querySelector(this.SELECTORS.nextButton);\n\n if (!refContainer || !swiperWrapper || !this.prevButton || !this.nextButton) {\n console.error('Required elements not found');\n return null;\n }\n\n const refRect = refContainer.getBoundingClientRect();\n const offsetBefore = refRect.left;\n\n // Initialize Swiper\n const swiper = new Swiper(this.SELECTORS.swiper, {\n slidesPerView: 'auto',\n spaceBetween: 16,\n freeMode: false,\n slidesOffsetBefore: offsetBefore,\n slidesOffsetAfter: 16,\n navigation: {\n nextEl: this.SELECTORS.nextButton,\n prevEl: this.SELECTORS.prevButton,\n },\n watchOverflow: true,\n });\n\n this.swiperInstance = swiper;\n\n // Set initial state of buttons\n this.updateButtonsState();\n\n // Add event listeners to update button states when slides change\n swiper.on('slideChange', this.updateButtonsState.bind(this));\n\n // Add resize event listener separately\n window.addEventListener('resize', () => {\n const newOffsetBefore = refContainer.getBoundingClientRect().left;\n if (swiper && swiper.params) {\n swiper.params.slidesOffsetBefore = newOffsetBefore;\n swiper.update();\n }\n });\n\n return swiper;\n }\n\n updateButtonsState() {\n if (!this.prevButton || !this.nextButton) return;\n\n this.prevButton.style.opacity = this.swiperInstance.isBeginning ? '0.5' : '1';\n this.prevButton.style.pointerEvents = this.swiperInstance.isBeginning ? 'none' : 'auto';\n\n // Get Swiper's max translate position\n const maxTranslate = this.swiperInstance.maxTranslate();\n const currentTranslate = this.swiperInstance.translate;\n\n if (currentTranslate <= maxTranslate + 5) {\n this.nextButton.style.opacity = '0.5';\n this.nextButton.style.pointerEvents = 'none';\n } else {\n this.nextButton.style.opacity = '1';\n this.nextButton.style.pointerEvents = 'auto';\n }\n }\n}", "export const TestimonialCardsCarousel = (function () {\n function initSwiper(selector) {\n // Initialize Swiper\n const swiper = new Swiper(selector, {\n effect: \"cards\",\n grabCursor: true,\n slidesPerView: 1,\n spaceBetween: 0,\n freeMode: false,\n slidesOffsetAfter: 0,\n watchOverflow: true,\n navigation: {\n nextEl: '#testimonial-cards-swiper-next-btn',\n prevEl: '#testimonial-cards-swiper-prev-btn',\n },\n });\n\n // Set initial state of buttons\n updateButtonsState(swiper);\n\n // Add event listeners to update button states when slides change\n swiper.on('slideChange', function() {\n updateButtonsState(swiper);\n });\n\n return swiper;\n }\n\n // Function to update button states\n function updateButtonsState(swiper) {\n const prevButton = document.querySelector('#testimonial-cards-swiper-prev-btn');\n const nextButton = document.querySelector('#testimonial-cards-swiper-next-btn');\n\n prevButton.style.opacity = swiper.isBeginning ? '0.5' : '1';\n prevButton.style.pointerEvents = swiper.isBeginning ? 'none': 'auto'; \n\n nextButton.style.opacity = swiper.isEnd ? '0.5' : '1';\n nextButton.style.pointerEvents = swiper.isEnd ? 'none' : 'auto';\n }\n \n // Public API\n return {\n initSwiper\n };\n})();\n\nexport function initTestimonialCards() {\n //fix webflow designer display\n const slides = document.querySelectorAll('#testimonial-cards-section .testimonial-card-slide');\n slides.forEach(slide => {\n slide.style.position = \"static\";\n });\n \n //fix error of shadows\n const shadows = document.querySelectorAll('#testimonial-cards-section .swiper-slide-shadow');\n shadows.forEach(shadow => {\n shadow.style.borderRadius = \"16px\";\n });\n}", "import { SpecialRoomOffersCardsCarousel } from \"../../components/special-room-offers-cards\"; \nimport { CollectionListDropDown } from \"../../controls/collectionListDropdown\"\nimport { EditionCardsCarousel, updateEditionCardLinkUrls } from \"../../components/upcoming-editions\";\nimport { initUpcomingEditionsFilter } from \"../../components/upcoming-editions-filter\";\nimport { SimpleCardsCarousel } from \"../../components/simple-cards\";\nimport { TestimonialCardsCarousel, initTestimonialCards } from \"../../components/testimonial-cards\";\n\ndocument.addEventListener('DOMContentLoaded', function() {\n // Update edition card links\n updateEditionCardLinkUrls();\n\n // Initialize the upcoming editions filter\n initUpcomingEditionsFilter();\n\n // Initialize the testimonial cards\n initTestimonialCards();\n});\n\n// Initialize the Location Filter Dropdown in the Hero Section\nCollectionListDropDown.init({ selector: \"#destination-dropdown\", onChange: (selectedItem) => {\n\tconst selectedValue = selectedItem.getAttribute(\"data-value\") || selectedItem.textContent.trim(); \n const linkElement = document.querySelector(\"#find-workation-button\");\n const baseUrl = linkElement.getAttribute(\"href\").split(\"?\")[0]; // Remove existing query params\n\n // Update the link's href with the new query parameter\n linkElement.setAttribute(\"href\", `${baseUrl}?location=${encodeURIComponent(selectedValue)}`);\n}});\n\n// Initialize the carousel\nSpecialRoomOffersCardsCarousel.init({\n swiper: '#special-room-offers-section .swiper',\n swiperWrapper: '#special-room-offers-section .swiper-wrapper', \n pagination: '#special-room-offers-section .swiper-pagination',\n});\n\n// Initialize the carousel\nEditionCardsCarousel.init({\n refContainer: \"#edition-cards-swiper-ref-container\", // this is needed for calculating the left offset\n swiper: '#edition-cards-section .swiper',\n swiperWrapper: '#edition-cards-section .swiper-wrapper', \n prevButton: '#edition-cards-swiper-prev-btn',\n nextButton: '#edition-cards-swiper-next-btn'\n});\n\n// Initialize the carousel\nconst activityCardsCarousel = new SimpleCardsCarousel({\n refContainer: \"#activity-cards-swiper-ref-container\", // this is needed for calculating the left offset\n swiper: '#activity-cards-section .swiper',\n swiperWrapper: '#activity-cards-section .swiper-wrapper', \n prevButton: '#activity-cards-swiper-prev-btn',\n nextButton: '#activity-cards-swiper-next-btn'\n});\nactivityCardsCarousel.init();\n\nTestimonialCardsCarousel.initSwiper(\"#testimonial-cards-section .swiper\");\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["SpecialRoomOffersCardsCarousel", "
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["SpecialRoomOffersCardsCarousel", "swiperInstance", "pagination", "SELECTORS", "initSwiper", "swiperWrapper", "swiper", "selectors", "CollectionListDropDown", "dropdowns", "initDropDown", "selector", "onChange", "initialValue", "container", "dropdown", "dropdownToggle", "dropdownList", "selectedItemValueContainer", "collectionItems", "item", "event", "selectedOption", "selectDropDownElement", "getElementByItemValue", "selectedItem", "sourceElement", "clonedElement", "currentValue", "value", "x", "EditionCardsCarousel", "swiperInstance", "prevButton", "nextButton", "allSlides", "SELECTORS", "initSwiper", "refContainer", "swiperWrapper", "offsetBefore", "swiper", "updateButtonsState", "newOffsetBefore", "maxTranslate", "selectors", "season", "slidesToKeep", "slideEl", "updateEditionCardLinkUrls", "editionCard", "editionLinkElems", "editionSlug", "bookingState", "link", "bgImage", "baseUrl", "initUpcomingEditionsFilter", "filterButtons", "allItems", "button", "btn", "season", "item", "allButton", "SimpleCardsCarousel", "selectors", "swiperWrapper", "refContainer", "offsetBefore", "swiper", "newOffsetBefore", "maxTranslate", "TestimonialCardsCarousel", "initSwiper", "selector", "swiper", "updateButtonsState", "prevButton", "nextButton", "initTestimonialCards", "slide", "shadow", "updateEditionCardLinkUrls", "initUpcomingEditionsFilter", "initTestimonialCards", "CollectionListDropDown", "selectedItem", "selectedValue", "linkElement", "baseUrl", "SpecialRoomOffersCardsCarousel", "EditionCardsCarousel", "activityCardsCarousel", "SimpleCardsCarousel", "TestimonialCardsCarousel"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(()=>{var
|
|
1
|
+
(()=>{var d=function(){let r,i,o=null,e=null;function c(){let t=document.querySelector(e.swiperWrapper);if(i=document.querySelector(e.prevButton),o=document.querySelector(e.nextButton),!t||!i||!o)return console.error("Required elements not found"),null;let s=new Swiper(e.swiper,{slidesPerView:"auto",spaceBetween:16,freeMode:!1,slidesOffsetAfter:16,navigation:{nextEl:e.nextButton,prevEl:e.prevButton},watchOverflow:!0});r=s,p(),s.on("slideChange",function(){p()});function a(){let n=t.getBoundingClientRect().left,u=document.querySelector("#features-cards-section .features-cards-carousel-container");u.style.width=`${window.innerWidth-n}px`,u.style.minWidth=`${window.innerWidth-n}px`,u.style.maxWidth=`${window.innerWidth-n}px`,t.style.width=`${window.innerWidth-n}px`,t.style.minWidth=`${window.innerWidth-n}px`,t.style.maxWidth=`${window.innerWidth-n}px`}return window.addEventListener("resize",a),a(),s}function p(){!i||!o||(i.style.opacity=r.isBeginning?"0.5":"1",i.style.pointerEvents=r.isBeginning?"none":"auto",o.style.opacity=r.isEnd?"0.5":"1",o.style.pointerEvents=r.isEnd?"none":"auto")}return{init:function(t){e=t,document.addEventListener("DOMContentLoaded",function(){let s=document.querySelector(e.swiperWrapper);s.style.gap="0",c()})}}}();d.init({swiper:"#features-cards-section .swiper",swiperWrapper:"#features-cards-section .swiper-wrapper",prevButton:"#features-cards-btn-left",nextButton:"#features-cards-btn-right"});})();
|
|
2
2
|
//# sourceMappingURL=bundle-hubs-business.min.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../components/feature-slider.js", "../pages/hubs-business/index.js"],
|
|
4
4
|
"sourcesContent": ["export const FeaturesCardsCarousel = (function () {\n let swiperInstance, prevButton, nextButton = null;\n let SELECTORS = null;\n\n function initSwiper() {\n const swiperWrapper = document.querySelector(SELECTORS.swiperWrapper);\n prevButton = document.querySelector(SELECTORS.prevButton);\n nextButton = document.querySelector(SELECTORS.nextButton);\n\n if (!swiperWrapper || !prevButton || !nextButton) {\n console.error('Required elements not found');\n return null;\n } \n\n // Initialize Swiper\n const swiper = new Swiper(SELECTORS.swiper, {\n slidesPerView: \"auto\",\n spaceBetween: 16,\n freeMode: false,\n slidesOffsetAfter: 16,\n navigation: {\n nextEl: SELECTORS.nextButton,\n prevEl: SELECTORS.prevButton,\n },\n watchOverflow: true,\n });\n\n\t\tswiperInstance = swiper;\n\n // Set initial state of buttons\n updateButtonsState();\n\n // Add event listeners to update button states when slides change\n swiper.on('slideChange', function () {\n updateButtonsState();\n });\n \n \n function setWrapperWidth() {\n const wrapperRect = swiperWrapper.getBoundingClientRect();\n \tconst wrapperBefore = wrapperRect.left;\n const carouselContainer = document.querySelector('#features-cards-section .features-cards-carousel-container')\n \n carouselContainer.style.width = `${window.innerWidth - wrapperBefore}px`;\n carouselContainer.style.minWidth = `${window.innerWidth - wrapperBefore}px`;\n carouselContainer.style.maxWidth = `${window.innerWidth - wrapperBefore}px`;\n\n swiperWrapper.style.width = `${window.innerWidth - wrapperBefore}px`;\n swiperWrapper.style.minWidth = `${window.innerWidth - wrapperBefore}px`;\n swiperWrapper.style.maxWidth = `${window.innerWidth - wrapperBefore}px`;\n }\n\n window.addEventListener('resize', setWrapperWidth);\n setWrapperWidth(); \n \n // Add resize event listener separately\n //window.addEventListener('resize', () => {\n // const newOffsetBefore = refContainer.getBoundingClientRect().left;\n // Check if Swiper instance exists and has a method to update params\n // if (swiper && swiper.params) {\n // swiper.params.slidesOffsetBefore = newOffsetBefore;\n // swiper.update(); // Refresh Swiper\n // }\n //});\n\n return swiper;\n }\n\n // Function to update button states\n function updateButtonsState() {\n \tif (!prevButton || !nextButton) return;\n \n prevButton.style.opacity = swiperInstance.isBeginning ? '0.5' : '1';\n prevButton.style.pointerEvents = swiperInstance.isBeginning ? 'none' : 'auto'; \n\n\t\tnextButton.style.opacity = swiperInstance.isEnd ? '0.5' : '1';\n nextButton.style.pointerEvents = swiperInstance.isEnd ? 'none' : 'auto';\n }\n\n // Public methods\n return {\n init: function(selectors) {\n SELECTORS = selectors;\n \tdocument.addEventListener('DOMContentLoaded', function() {\n\t\t\t\tconst swiperWrapper = document.querySelector(SELECTORS.swiperWrapper);\n swiperWrapper.style.gap = '0';\n \n // Initialize swiper\n initSwiper();\n\t\t\t});\n }\n };\n})();\n", "import { FeaturesCardsCarousel } from \"../../components/feature-slider\";\n\n// Initialize the feature cards carousel\nFeaturesCardsCarousel.init({\n swiper: '#features-cards-section .swiper',\n swiperWrapper: '#features-cards-section .swiper-wrapper', \n prevButton: '#features-cards-btn-left',\n nextButton: '#features-cards-btn-right'\n});"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["FeaturesCardsCarousel", "
|
|
5
|
+
"mappings": "MAAO,IAAMA,EAAyB,UAAY,CAChD,IAAIC,EAAgBC,EAAYC,EAAa,KACzCC,EAAY,KAEhB,SAASC,GAAa,CACpB,IAAMC,EAAgB,SAAS,cAAcF,EAAU,aAAa,EAIpE,GAHAF,EAAa,SAAS,cAAcE,EAAU,UAAU,EACxDD,EAAa,SAAS,cAAcC,EAAU,UAAU,EAEpD,CAACE,GAAiB,CAACJ,GAAc,CAACC,EACpC,eAAQ,MAAM,6BAA6B,EACpC,KAIT,IAAMI,EAAS,IAAI,OAAOH,EAAU,OAAQ,CAC1C,cAAe,OACf,aAAc,GACd,SAAU,GACV,kBAAmB,GACnB,WAAY,CACV,OAAQA,EAAU,WAClB,OAAQA,EAAU,UACpB,EACA,cAAe,EACjB,CAAC,EAEHH,EAAiBM,EAGfC,EAAmB,EAGnBD,EAAO,GAAG,cAAe,UAAY,CACnCC,EAAmB,CACrB,CAAC,EAGD,SAASC,GAAkB,CAE1B,IAAMC,EADeJ,EAAc,sBAAsB,EACvB,KAC3BK,EAAoB,SAAS,cAAc,4DAA4D,EAE7GA,EAAkB,MAAM,MAAQ,GAAG,OAAO,WAAaD,CAAa,KACpEC,EAAkB,MAAM,SAAW,GAAG,OAAO,WAAaD,CAAa,KACvEC,EAAkB,MAAM,SAAW,GAAG,OAAO,WAAaD,CAAa,KAEvEJ,EAAc,MAAM,MAAQ,GAAG,OAAO,WAAaI,CAAa,KAChEJ,EAAc,MAAM,SAAW,GAAG,OAAO,WAAaI,CAAa,KACnEJ,EAAc,MAAM,SAAW,GAAG,OAAO,WAAaI,CAAa,IACrE,CAEA,cAAO,iBAAiB,SAAUD,CAAe,EACjDA,EAAgB,EAYTF,CACT,CAGA,SAASC,GAAqB,CACzB,CAACN,GAAc,CAACC,IAEnBD,EAAW,MAAM,QAAUD,EAAe,YAAc,MAAQ,IAChEC,EAAW,MAAM,cAAgBD,EAAe,YAAc,OAAS,OAEzEE,EAAW,MAAM,QAAUF,EAAe,MAAQ,MAAQ,IACxDE,EAAW,MAAM,cAAgBF,EAAe,MAAQ,OAAS,OACnE,CAGA,MAAO,CACL,KAAM,SAASW,EAAW,CACxBR,EAAYQ,EACZ,SAAS,iBAAiB,mBAAoB,UAAW,CAC3D,IAAMN,EAAgB,SAAS,cAAcF,EAAU,aAAa,EAChEE,EAAc,MAAM,IAAM,IAG1BD,EAAW,CAChB,CAAC,CACA,CACF,CACF,EAAG,ECzFHQ,EAAsB,KAAK,CACzB,OAAQ,kCACR,cAAe,0CACf,WAAY,2BACZ,WAAY,2BACd,CAAC",
|
|
6
|
+
"names": ["FeaturesCardsCarousel", "swiperInstance", "prevButton", "nextButton", "SELECTORS", "initSwiper", "swiperWrapper", "swiper", "updateButtonsState", "setWrapperWidth", "wrapperBefore", "carouselContainer", "selectors", "FeaturesCardsCarousel"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(()=>{
|
|
1
|
+
(()=>{function p(){document.querySelectorAll("[data-trigger]").forEach(e=>{e.addEventListener("change",()=>i(e)),i(e)});function i(e){let l=e.getAttribute("data-trigger"),c=e.value;document.querySelectorAll(`[data-condition-trigger="${l}"]`).forEach(s=>{let a=s.getAttribute("data-condition-value")===c,n=s.matches("input, select, textarea")?s:s.querySelector("input, select, textarea");s.style.display=a?"block":"none",n&&(n.required=a,a||(n.value=""))})}}function y(){document.querySelectorAll("[data-custom-dropdown]").forEach(r=>{let i=document.createElement("input");i.type="hidden",i.name=r.dataset.name||"custom-dropdown",i.setAttribute("required",r.dataset.required==="true"||!1),i.value="",r.appendChild(i);let e=r.querySelector(".dropdown-selected-value");r.querySelectorAll(".dropdown-item").forEach(c=>{c.addEventListener("click",d=>{d.preventDefault();let s=c.dataset.value,a=c.cloneNode(!0);a.style.padding=0,e.innerHTML="",e.appendChild(a),i.value=s})})})}function h(r,i,e=30){let l=document.querySelector(r),c=document.querySelector(i),d=new DateRangePicker(l,{format:"dd. MM yyyy"}),s=e;return d.setMinimumDays=a=>{s=a},d.validateDateRange=()=>{let[a,n]=d.getDates();a&&n&&Math.floor((n-a)/864e5)<s?(c.setCustomValidity(`You need to choose a minimum of ${s} days.`),d.setDates(a,new Date(a.getTime()+s*24*60*60*1e3))):c.setCustomValidity(""),c.reportValidity()},l.addEventListener("changeDate",d.validateDateRange),{rangepicker:d,datesInput:l,startDateField:c}}function v(){let r=document.querySelectorAll(".form-step"),i=document.querySelectorAll(".form-wizard-step .form-wizard-step-progress"),e=0;function l(n){r.forEach((o,t)=>{o.style.display=t===n?"block":"none"}),i.forEach((o,t)=>{t<n||t===n?o.classList.add("active"):o.classList.remove("active")})}function c(){let n=r[e].querySelectorAll("input, select, textarea"),o=[];return n.forEach(t=>{let u=t.type==="hidden"||t.offsetParent===null;if(t.required&&(!t.value||t.value.trim()==="")){let f=t.dataset.name||t.name||t.placeholder||"Unnamed field";o.push(`${f} is required.`)}if(!u&&t.value&&!t.checkValidity()){let m=t.name||t.placeholder||"Unnamed field";o.push(`${m} is invalid.`)}}),o}function d(n,o){let t=document.querySelector(n);if(!t)return;t.innerHTML="";let u=document.createElement("ul");o.forEach(m=>{let f=document.createElement("li");f.textContent=m,u.appendChild(f)}),t.appendChild(u)}function s(n){let o=document.querySelector(n);o&&(o.innerHTML="")}document.querySelectorAll(".form-next-step-btn").forEach(n=>{n.addEventListener("click",()=>{if(n.getAttribute("disabled")==="true")return;let o=c(),t=`#error-list-step-${e}`;s(t),o.length==0?(e=Math.min(e+1,r.length-1),e===r.length-1&&a(),l(e)):d(t,o)})});function a(){document.querySelectorAll('[id^="review-"]').forEach(o=>{let t=o.dataset.fieldname;try{let u=document.querySelector(`[name="${t}"]`).value;o.innerText=u}catch{}})}document.querySelectorAll(".form-previous-step-btn").forEach(n=>{n.addEventListener("click",()=>{e=Math.max(e-1,0),l(e)})}),l(e)}function g(){document.getElementById("close-button").addEventListener("click",function(){let r=document.referrer,i=window.location.hostname,e=null;try{e=r?new URL(r).hostname:null}catch{e=null}window.history.length>1&&e===i?window.history.back():window.location.href="/"})}document.addEventListener("DOMContentLoaded",function(){g(),p(),v(),y(),h("#dates-start-end-group","#Estimated-Start-Date")});})();
|
|
2
2
|
//# sourceMappingURL=bundle-request-quote.min.js.map
|