{"version":3,"sources":["archive-view.js","banner-editor.js","case-search-element.js","case-view.js","contact-form.js","dropdowns.js","faq-view.js","flickity.js","general-contact.js","helpers.js","grid-animation.js","image-fallback.js","link-list.js","logos-editor.js","navigation.js","popup.js","news-editor.js","privacy-view.js","preload.js","projects-view.js","rentals-view.js","scroll-to-top.js","selected-cases-editor.js","serviceworker.js","testimonials-editor.js","video-cta-editor.js"],"names":["archive","document","getElementById","mobileBannerSelector","Vue","el","data","initial","step","validated","email","passwordRepeat","facilities","areas","unitCaseTypes","loading","error","showAllCities","facilityIcons","unitTypeIcons","cityImages","appartments","acceptTerms","signup","firstname","lastname","phoneNumber","password","maxRent","minSize","minRooms","acquisitionDate","customAreaIds","unitCaseTypeIds","facilityIds","allowMailAndPhoneContact","methods","formatPrice","price","toString","replace","formatDate","date","dateObj","Date","toLocaleDateString","year","month","day","submit","_this","this","fetch","method","headers","Content-Type","body","JSON","stringify","then","response","status","json","window","location","href","getAttribute","Message","e","console","log","next","includes","push","errors","getElementsByClassName","length","focus","innerWidth","checkValidation","splice","indexOf","getImagesInOrder","images","_toConsumableArray","sort","a","b","DisplayOrder","goTo","setCity","name","zipCode","city","sectionActive","section","isDesktop","getFacilities","_this2","getAreas","_this3","getUnitCaseTypes","_this4","selectArea","id","arrayToggle","selectFacility","selectType","handleSearch","_this5","newZips","searchObj","forEach","x","find","y","Id","Cities","ZipCode","parse","ZipCodes","TypeIds","FacilityIds","MaxRent","MinSize","MinRooms","AcquisitionDate","toISOString","Cases","debounceSearch","_this6","searchTimeout","clearTimeout","setTimeout","mounted","watch","handler","deep","latest","addressSuggestions","areasSelected","citiesSelected","citySuggestions","citySuggestionsVisible","tags","getTags","debounceCitySearch","citySearch","handleCitySearch","clearLatest","localStorage","removeItem","obj","type","url","URL","origin","search","URLSearchParams","map","c","Name","value","postnummer","nr","navn","TagIds","AddressQuery","Text","setItem","Suggestions","computed","filteredAreaSuggestions","filter","toLowerCase","filteredCitySuggestions","_this7","zip","filteredTagSuggestions","_this8","_this9","targets","getItem","addEventListener","event","path","composedPath","isAnyInPath","i","passive","caseSearchElements","caseElement","_loop","caseSearchElement","area","parseInt","descriptionToggle","descriptionAbouts","descriptionWrapper","description","activeSliderClass","clientHeight","classList","add","style","maxHeight","minHeight","toggle","activeMapClass","initSliders","activeCaseSliders","activeCaseSlider","flkty","Flickity","cellAlign","wrapAround","groupCells","imagesLoaded","prevNextButtons","fullscreen","pageDots","autoPlay","on","viewFullscreen","caseSliders","mapWrapper","triggerButton","remove","scroll","top","left","behavior","initMap","mapEl","google","maps","Map","mapOptions","latlngbounds","LatLngBounds","latLng","LatLng","parseFloat","parentElement","extend","Marker","icon","position","title","animation","Animation","DROP","fitBounds","setOptions","maxZoom","imageTrigger","planTrigger","mapsTrigger","contactTriggers","caseContact","trigger","caseId","contactEditors","redirectLink","parentNode","isOpen","companyName","phone","comment","reference","accepted","success","department","open","general","getElementsByTagName","close","subject","preventDefault","address","querySelector","mailContent","toEmail","replyTo","fields","CompanyName","Phone","Email","Comment","Reference","Address","innerText","Link","dropdowns","dropdown","content","faqButtons","button","_step","tapArea","querySelectorAll","startX","_iterator","_createForOfIteratorHelper","s","n","done","item","ontouchstart","touches","clientX","ontouchmove","Math","abs","cancelable","err","f","generalContactClose","generalContact","gridElements","element","elementWatcher","scrollMonitor","create","enterViewport","exitViewport","isAboveViewport","isBelowViewport","isInViewport","array","support_format_webp","elem","getContext","setAttribute","img","svgImages","linkListEditors","listGroup","hasCollapse","childElementCount","linkListBtn","navigationTrigger","lazyLoad","navigationTriggerActiveClass","offcanvasNavigation","offcanvasNavigationActiveClass","offcanvasBackdrop","offcanvasBackdropActiveClass","openOffcanvas","closeOffcanvas","contains","popupClose","lastScrollPosition","navigation","isDark","mobileNavigation","scrollButton","newsSliders","currentScrollPosition","pageYOffset","documentElement","scrollTop","popup","slider","tabTrigger","projectElements","otherElement","freeNow","initialSearch","app","rentals","styles","featureType","elementType","stylers","gamma","visibility","lightness","color","hue","disableDefaultUI","zoomControl","searchParams","get","RentalPeriod","MaxRooms","AcquisitionDateFrom","AcquisitionDateTo","split","PageIndex","PageSize","openSearch","openFilter","fixButtons","fixHelp","helpHeight","citySearchTimeout","addressTimeout","tagsSelected","_objectSpread","hideTags","mode","markers","infowindow","prevPage","hasMorePages","featureds","featuredLoading","featuredFlkty","getFeatured","selectedAreaIds","zipCodes","areasFromZipCodes","some","featuredSearch","Areas","concat","FeaturedCases","destroy","draggable","flktyWrapper","toggleSearch","toggleFilter","reset","addTag","tag","removeTag","addArea","removeArea","addCity","suggestion","removeCity","setAddressQuery","tekst","localeCompare","slice","getTagsAndAreas","Promise","all","handleInitialSearch","urlParams","params","Object","fromEntries","_ref","_ref2","_slicedToArray","keys","key","zips","every","z","tagId","undefined","Set","HasMorePages","newLink","getNextPage","history","pushState","newUrl","endsWith","replaceState","prevCaseEl","scrollIntoView","block","skip","setMode","generateMap","oms","_this10","scrollTo","getBoundingClientRect","OverlappingMarkerSpiderfier","markersWontMove","markersWontHide","basicFormatEvents","keepSpiderfied","appartment","Latitude","Longitude","marker","store","addListener","openWindow","addMarker","generateInfoWindow","InfoWindow","State","Images","SmallSourceUrl","Title","Floor","Door","City","Tags","UnitType","Size","Rooms","Rent","goToLocation","stores","panTo","setZoom","_this11","_this12","_this13","triggerTop","$refs","triggers","offsetTop","stickyhelp","offsetHeight","stickHelpTrigger","_this14","scrollY","selectedCasesSliders","selectedCasesLists","watchCSS","innerHTML","sortings","sorting","direction","limit","showMore","setSorting","d","getDate","getMonth","getFullYear","navigator","register","registration","serviceWorker","scope","swRegistration","videoCtaEditors","editor","playButton","iframe","backdrop"],"mappings":"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","file":"lejeboligmaegleren.min.js","sourcesContent":["const archive = document.getElementById('js-archive-view')\n\nif (archive) {\n new Vue({\n el: archive,\n data() {\n return {\n initial: true,\n step: 1,\n validated: [],\n email: '',\n passwordRepeat: '',\n facilities: [],\n areas: [],\n unitCaseTypes: [],\n loading: false,\n error: '',\n showAllCities: false,\n\n facilityIcons: null,\n unitTypeIcons: null,\n cityImages: null,\n\n appartments: [],\n acceptTerms: false,\n\n signup: {\n firstname: '',\n lastname: '',\n phoneNumber: '',\n email: '',\n password: '',\n maxRent: null,\n minSize: null,\n minRooms: null,\n acquisitionDate: null,\n customAreaIds: [],\n unitCaseTypeIds: [],\n facilityIds: [],\n allowMailAndPhoneContact: false,\n },\n }\n },\n methods: {\n formatPrice(price) {\n return price.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.')\n },\n\n formatDate(date) {\n const dateObj = new Date(date)\n if(dateObj > new Date()) {\n return dateObj.toLocaleDateString('da-DK', \n {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n } else {\n return 'Ledig nu'\n }\n },\n\n submit() {\n this.loading = true\n\n this.signup.acquisitionDate = new Date(this.signup.acquisitionDate)\n\n fetch('/Umbraco/Api/Case/SignUp', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(this.signup),\n })\n .then((response) => {\n if (response.status === 200) {\n response.json().then((json) => {\n if (json) {\n this.error = json\n } else {\n window.location.href =\n archive.getAttribute('data-redirect-link')\n }\n })\n } else {\n response.json().then((json) => {\n this.error = json.Message\n })\n }\n })\n .catch((e) => {\n console.log('catch', e)\n this.error = e.Message\n })\n .finally(() => {\n this.loading = false\n })\n },\n next() {\n if (!this.validated.includes(this.step)) {\n this.validated.push(this.step)\n }\n\n const errors = document.getElementsByClassName(\n 'archive-view__section-error--active'\n )\n\n if (!errors.length) {\n const isDesktop = window.innerWidth > 985\n\n if (isDesktop ? this.step === 3 : this.step === 5) {\n this.submit()\n } else {\n this.step = this.step + 1\n\n this.checkValidation()\n }\n } else {\n errors[0].focus()\n }\n },\n checkValidation() {\n if (this.validated.includes(this.step)) {\n this.validated.splice(this.validated.indexOf(this.step), 1)\n }\n },\n\n getImagesInOrder(images) {\n return [...images].sort((a, b) => a.DisplayOrder - b.DisplayOrder)\n },\n\n goTo(step) {\n if (step < this.step) {\n this.step = step\n this.checkValidation()\n }\n },\n setCity(name, zipCode) {\n this.signup.city = { name, zipCode }\n },\n\n sectionActive(section) {\n const isDesktop = window.innerWidth > 985\n\n if (section == 'final') {\n return isDesktop ? this.step === 4 : this.step === 6\n } else if (section == 'information') {\n return isDesktop ? this.step === 3 : this.step === 5\n } else if (section == 'facilities') {\n return isDesktop ? this.step === 2 : this.step === 4\n } else if (section == 'appartment') {\n return isDesktop ? this.step === 1 : this.step === 3\n } else if (section == 'types') {\n return isDesktop ? this.step === 1 : this.step === 2\n } else if (section == 'cities') {\n return this.step === 1\n } else if (section == 'next') {\n return isDesktop ? this.step !== 4 : this.step !== 6\n }\n },\n\n getFacilities() {\n fetch('/Umbraco/Api/Case/Facilities', {\n method: 'GET',\n })\n .then((response) => response.json())\n .then((json) => {\n this.facilities = json\n })\n },\n\n getAreas() {\n fetch('/Umbraco/Api/Case/Areas', {\n method: 'GET',\n })\n .then((response) => response.json())\n .then((json) => {\n this.areas = json\n })\n },\n\n getUnitCaseTypes() {\n fetch('/Umbraco/Api/Case/UnitCaseTypes', {\n method: 'GET',\n })\n .then((response) => response.json())\n .then((json) => {\n this.unitCaseTypes = json\n })\n },\n selectArea(id) {\n arrayToggle(this.signup.customAreaIds, id)\n },\n selectFacility(id) {\n arrayToggle(this.signup.facilityIds, id)\n },\n selectType(id) {\n arrayToggle(this.signup.unitCaseTypeIds, id)\n },\n\n handleSearch() {\n let newZips = []\n\n if (this.signup.customAreaIds.length) {\n this.signup.customAreaIds.forEach((x) => {\n const area = this.areas.find((y) => y.Id == x)\n\n area.Cities.forEach((y) => {\n newZips.push(y.ZipCode.toString())\n })\n })\n }\n\n let searchObj = JSON.parse(\n JSON.stringify({\n ZipCodes: newZips,\n TypeIds: this.signup.unitCaseTypeIds,\n FacilityIds: this.signup.facilityIds,\n MaxRent: this.signup.maxRent,\n MinSize: this.signup.minSize,\n MinRooms: this.signup.minRooms,\n AcquisitionDate: null,\n })\n )\n\n if (this.signup.acquisitionDate) {\n searchObj.AcquisitionDate = new Date(\n this.signup.acquisitionDate\n ).toISOString()\n }\n\n fetch('/Umbraco/Api/Case/Search', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(searchObj),\n })\n .then((response) => response.json())\n .then((json) => {\n this.appartments = json.Cases\n this.initial = false\n })\n .catch((e) => {\n console.log('catch', e)\n })\n },\n\n debounceSearch() {\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout)\n }\n if (window.innerWidth > 985) {\n this.searchTimeout = setTimeout(() => {\n this.handleSearch()\n }, 500)\n }\n },\n },\n mounted() {\n this.getFacilities()\n this.getAreas()\n this.getUnitCaseTypes()\n\n this.facilityIcons = JSON.parse(\n archive.getAttribute('data-facility-icons')\n )\n this.unitTypeIcons = JSON.parse(\n archive.getAttribute('data-unittype-icons')\n )\n this.cityImages = JSON.parse(archive.getAttribute('data-city-images'))\n },\n watch: {\n signup: {\n handler: function () {\n this.debounceSearch()\n },\n deep: true,\n },\n },\n })\n}\n","const mobileBannerSelector = document.getElementById(\n 'js-banner-mobile-selector'\n)\n\nif (mobileBannerSelector) {\n new Vue({\n el: mobileBannerSelector,\n data() {\n return {\n latest: [],\n loading: false,\n addressSuggestions: [],\n areas: [],\n areasSelected: [],\n city: '',\n citiesSelected: [],\n citySuggestions: [],\n citySuggestionsVisible: false,\n searchTimeout: null,\n tags: [],\n }\n },\n methods: {\n getTags() {\n return fetch('/Umbraco/Api/Case/Tags', {\n method: 'GET',\n })\n .then((response) => response.json())\n .then((json) => {\n this.tags = json\n })\n },\n\n getAreas() {\n return fetch('/Umbraco/Api/Case/Areas', {\n method: 'GET',\n })\n .then((response) => response.json())\n .then((json) => {\n this.areas = json\n })\n },\n\n debounceCitySearch() {\n this.loading = true\n\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout)\n }\n\n this.searchTimeout = setTimeout(() => {\n this.citySearch()\n this.handleSearch()\n }, 500)\n },\n\n handleCitySearch() {\n if (this.city == '') {\n this.citySuggestionsVisible = false\n } else {\n this.citySuggestionsVisible = true\n this.debounceCitySearch()\n }\n },\n\n citySearch() {\n fetch('https://dawa.aws.dk/postnumre/autocomplete?q=' + this.city)\n .then((response) => response.json())\n .then((data) => {\n if (data.length) {\n this.citySuggestions = data\n }\n })\n },\n\n clearLatest() {\n window.localStorage.removeItem('latest')\n this.latest = []\n },\n\n submit(obj, type) {\n const url = new URL(window.location.origin + '/til-leje')\n\n console.log(obj)\n\n let ZipCodes = []\n let TagIds = []\n\n if (type == 'area') {\n url.search = new URLSearchParams({\n ZipCodes: obj.Cities.map((c) => c.ZipCode),\n })\n this.latest.push({\n name: obj.Name,\n value: url.href,\n })\n } else if (type == 'city') {\n url.search = new URLSearchParams({\n ZipCodes: [obj.postnummer.nr],\n })\n this.latest.push({\n name: obj.postnummer.navn,\n value: url.href,\n })\n } else if (type == 'tag') {\n url.search = new URLSearchParams({\n TagIds: [obj.Id],\n })\n this.latest.push({\n name: obj.Name,\n value: url.href,\n })\n } else if (type == 'address') {\n url.search = new URLSearchParams({\n AddressQuery: obj.Text,\n })\n this.latest.push({\n name: obj.Text,\n value: url.href,\n })\n }\n\n window.localStorage.setItem('latest', JSON.stringify(this.latest))\n\n window.location.href = url.href\n },\n\n handleSearch() {\n fetch('/Umbraco/Api/Case/Search', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n AddressQuery: this.city,\n }),\n })\n .then((response) => response.json())\n .then((json) => {\n this.addressSuggestions = json.Suggestions\n })\n .catch((e) => {\n console.log('catch', e)\n })\n .finally(() => {\n this.loading = false\n })\n },\n },\n computed: {\n filteredAreaSuggestions() {\n return this.areas.filter(\n (x) =>\n !this.areasSelected.find((y) => y.Id == x.Id) &&\n x.Name.toLowerCase().includes(this.city.toLowerCase())\n )\n },\n filteredCitySuggestions() {\n return this.citySuggestions.filter(\n (x) => !this.citiesSelected.find((y) => y.zip == x.postnummer.nr)\n )\n },\n filteredTagSuggestions() {\n return this.tags.filter((x) =>\n x.Name.toLowerCase().includes(this.city.toLowerCase())\n )\n },\n },\n mounted() {\n if (window.localStorage.getItem('latest')) {\n this.latest = JSON.parse(window.localStorage.getItem('latest'))\n }\n\n const targets = document.getElementsByClassName(\n 'js-banner-city-dropdown'\n )\n\n document.addEventListener(\n 'click',\n (event) => {\n const path = event.composedPath()\n let isAnyInPath = false\n\n for (let i = 0; i < targets.length; i++) {\n if (path.includes(targets[i])) {\n isAnyInPath = true\n }\n }\n\n if (!isAnyInPath) {\n this.citySuggestionsVisible = false\n }\n },\n { passive: true }\n )\n\n this.getTags()\n this.getAreas()\n },\n })\n}\n","const caseSearchElements = document.getElementsByClassName(\n 'js-case-search-element'\n)\n\nconst caseElement = document.getElementById('js-case-view')\n\nif (caseSearchElements.length) {\n for (let i = 0; i < caseSearchElements.length; i++) {\n const caseSearchElement = caseSearchElements[i]\n new Vue({\n el: caseSearchElement,\n data() {\n return {\n loading: false,\n appartments: [],\n areas: [],\n }\n },\n methods: {\n formatPrice(price) {\n return price.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.')\n },\n\n formatDate(date) {\n const dateObj = new Date(date)\n if(dateObj > new Date()) {\n return dateObj.toLocaleDateString('da-DK', \n {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n } else {\n return 'Ledig nu'\n }\n },\n \n getAreas() {\n fetch('/Umbraco/Api/Case/Areas', {\n method: 'GET',\n })\n .then((response) => response.json())\n .then((json) => {\n this.areas = json\n\n this.search()\n })\n },\n\n search() {\n this.loading = true\n\n const area = this.areas.find((area) =>\n area.Cities.find(\n (city) =>\n city.ZipCode ==\n parseInt(caseSearchElement.getAttribute('data-search'))\n )\n )\n\n if (!area) {\n return\n }\n\n const searchObj = {\n ZipCodes: area.Cities.map((x) => x.ZipCode),\n }\n\n fetch('/Umbraco/Api/Case/Search', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(searchObj),\n })\n .then((response) => response.json())\n .then((json) => {\n if (caseElement && caseElement.getAttribute('data-id')) {\n this.appartments = json.Cases.filter(\n (x) =>\n x.Id !==\n parseInt(caseElement.getAttribute('data-id'))\n )\n } else {\n this.appartments = json.Cases\n }\n })\n .catch((e) => {\n console.log('catch', e)\n })\n .finally(() => {\n setTimeout(() => {\n this.loading = false\n }, 200)\n })\n },\n\n getImagesInOrder(images) {\n return [...images].sort(\n (a, b) => a.DisplayOrder - b.DisplayOrder\n )\n },\n },\n\n mounted() {\n this.getAreas()\n },\n })\n }\n}\n","const descriptionToggle = document.getElementById(\n 'js-case-view-description-toggle'\n)\nconst descriptionAbouts = document.getElementById('js-case-abouts')\nconst descriptionWrapper = document.getElementById(\n 'js-case-view-description-wrapper'\n)\nconst description = document.getElementById('js-case-view-description')\n\nif (descriptionAbouts && descriptionToggle && description) {\n if (descriptionAbouts.clientHeight < description.clientHeight) {\n descriptionWrapper.classList.add(\n 'case-view__description-wrapper--has-more'\n )\n description.style.maxHeight = descriptionAbouts.clientHeight + 'px'\n } else {\n description.style.minHeight = descriptionAbouts.clientHeight + 'px'\n }\n\n descriptionToggle.addEventListener('click', () => {\n description.classList.toggle('case-view__description--open')\n descriptionToggle.classList.toggle('case-view__description-toggle--open')\n })\n}\n\nconst activeSliderClass = 'case-view__image-slider--active'\nconst activeMapClass = 'case-view__map-wrapper--active'\nconst isDesktop = window.innerWidth > 985\n\nconst initSliders = () => {\n const activeCaseSliders = document.getElementsByClassName(activeSliderClass)\n\n if (activeCaseSliders.length) {\n for (let i = 0; i < activeCaseSliders.length; i++) {\n const activeCaseSlider = activeCaseSliders[i]\n\n const flkty = new Flickity(activeCaseSlider, {\n cellAlign: 'left',\n wrapAround: true,\n groupCells: false,\n imagesLoaded: true,\n prevNextButtons: true,\n fullscreen: true,\n pageDots: true,\n autoPlay: true,\n })\n\n flkty.on('staticClick', () => {\n flkty.viewFullscreen()\n })\n }\n }\n}\ninitSliders()\n\nconst caseSliders = document.getElementsByClassName('case-view__image-slider')\nconst mapWrapper = document.getElementsByClassName('case-view__map-wrapper')\nconst triggerButton = () => {\n caseSliders[0].classList.remove(activeSliderClass)\n caseSliders[1].classList.remove(activeSliderClass)\n mapWrapper[0].classList.remove(activeMapClass)\n\n if (!isDesktop) {\n window.scroll({\n top: 80,\n left: 0,\n behavior: 'smooth',\n })\n }\n}\n\nconst initMap = () => {\n const mapEl = document.getElementById('case-map')\n const map = new google.maps.Map(mapEl, mapOptions)\n\n const latlngbounds = new google.maps.LatLngBounds()\n\n const latLng = new google.maps.LatLng(\n parseFloat(mapEl.parentElement.getAttribute('data-lat')),\n parseFloat(mapEl.parentElement.getAttribute('data-lng'))\n )\n\n latlngbounds.extend(latLng)\n\n new google.maps.Marker({\n icon: '/dist/img/pin.png',\n position: latLng,\n map,\n title: mapEl.parentElement.getAttribute('data-title'),\n animation: google.maps.Animation.DROP,\n })\n\n map.fitBounds(latlngbounds)\n\n setTimeout(() => {\n map.setOptions({\n maxZoom: null,\n })\n }, 100)\n}\n\nconst imageTrigger = document.getElementById('js-case-images')\nif (imageTrigger) {\n imageTrigger.addEventListener('click', () => {\n triggerButton()\n caseSliders[0].classList.add(activeSliderClass)\n initSliders()\n })\n}\n\nconst planTrigger = document.getElementById('js-case-plans')\nif (planTrigger) {\n planTrigger.addEventListener('click', () => {\n triggerButton()\n caseSliders[1].classList.add(activeSliderClass)\n initSliders()\n })\n}\n\nconst mapsTrigger = document.getElementById('js-case-map')\nif (mapsTrigger) {\n mapsTrigger.addEventListener('click', () => {\n triggerButton()\n mapWrapper[0].classList.add(activeMapClass)\n initMap()\n })\n}\n\nconst contactTriggers = document.getElementsByClassName(\n 'js-case-contact-toggle'\n)\nconst caseContact = document.getElementById('js-case-contact')\n\nif (contactTriggers.length) {\n for (let i = 0; i < contactTriggers.length; i++) {\n const trigger = contactTriggers[i]\n\n trigger.addEventListener('click', () => {\n caseContact.classList.toggle('modal--hidden')\n })\n }\n}\n\n// const caseNavigation = document.getElementById('js-case-footer')\n// if (caseNavigation) {\n// window.addEventListener('scroll', () => {\n// const currentScrollPosition =\n// window.pageYOffset || document.documentElement.scrollTop\n\n// if (currentScrollPosition < lastScrollPosition) {\n// caseNavigation.classList.remove('case-view__footer--hide')\n// } else {\n// caseNavigation.classList.add('case-view__footer--hide')\n// }\n\n// lastScrollPosition = currentScrollPosition\n// })\n// }\n\nconst caseElement = document.getElementById('js-case-view')\nif (caseElement) {\n const caseId = caseElement.getAttribute('data-id')\n if (caseId) {\n fetch('/Umbraco/Api/Case/Track?id=' + caseId + '&type=visited')\n\n window.localStorage.setItem('prevCaseId', caseId)\n }\n}\n\n// const casePhoneTrigger = document.getElementById('js-case-phone-trigger')\n// if (casePhoneTrigger) {\n// const caseId = caseElement.getAttribute('data-id')\n\n// casePhoneTrigger.addEventListener('click', () => {\n// fetch('/Umbraco/Api/Case/Track?id=' + caseId + '&type=inquired')\n// })\n// }\n","const contactEditors = document.getElementsByClassName('js-contact-form')\n\nif (contactEditors.length) {\n for (let i = 0; i < contactEditors.length; i++) {\n const el = contactEditors[i]\n\n\n const redirectLink = el.parentNode.getAttribute('data-after-link')\n\n new Vue({\n el,\n data() {\n return {\n isOpen: false,\n name: '',\n companyName: '',\n phone: '',\n email: '',\n comment: '',\n reference: '',\n accepted: false,\n loading: false,\n success: false,\n department: ''\n }\n },\n methods: {\n open(general) {\n if (general) {\n console.log('general')\n document.getElementById(\"js-general-contact\").classList.remove(\"modal--hidden\")\n } else {\n this.isOpen = true\n }\n document\n .getElementsByTagName('body')[0]\n .classList.add('modal-open')\n },\n close() {\n this.isOpen = false\n document\n .getElementsByTagName('body')[0]\n .classList.remove('modal-open')\n\n this.success = false\n this.accepted = false\n this.loading = false\n },\n submit(e) {\n e.preventDefault()\n\n this.loading = true\n\n let subject = window.location.href\n let address = document.querySelector('#js-case-view')\n if (address) {\n address = address.getAttribute('data-address')\n subject = address\n }\n\n const toEmail = this.department || el.getAttribute('data-email')\n\n const mailContent = {\n toEmail,\n replyTo: this.email,\n subject: 'Henvendelse fra ' + subject,\n fields: {\n Name: this.name,\n CompanyName: this.companyName,\n Phone: this.phone,\n Email: this.email,\n Comment: this.comment,\n Reference: this.reference,\n Address: address ? address.innerText : '',\n Link: window.location.href,\n },\n }\n\n fetch('/Umbraco/Api/Contact/Contact', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(mailContent),\n })\n .then((response) => response.json())\n .then(() => {\n const caseElement = document.getElementById('js-case-view')\n if (caseElement) {\n const caseId = caseElement.getAttribute('data-id')\n if (caseId) {\n fetch(\n '/Umbraco/Api/Case/Track?id=' +\n caseId +\n '&type=inquired'\n ).then(() => {\n if (redirectLink) {\n window.location.href = redirectLink\n }\n })\n }\n }\n\n this.success = true\n this.loading = false\n })\n .finally(() => {\n this.loading = false\n })\n },\n },\n })\n }\n}\n","const dropdowns = document.getElementsByClassName('js-dropdown')\n\nif (dropdowns.length) {\n for (let i = 0; i < dropdowns.length; i++) {\n const dropdown = dropdowns[i]\n const trigger = dropdown.querySelector('.dropdown__trigger')\n const tags = dropdown.querySelector('.dropdown__tags')\n const content = dropdown.querySelector('.dropdown__content')\n\n trigger.addEventListener('click', () => {\n if (tags) {\n tags.classList.toggle('dropdown__tags--active')\n }\n if (content) {\n content.classList.toggle('dropdown__content--active')\n }\n\n trigger.classList.toggle('dropdown__trigger--active')\n })\n }\n}\n","const faqButtons = document.getElementsByClassName('js-faq-button')\n\nif (faqButtons.length) {\n for (let i = 0; i < faqButtons.length; i++) {\n const button = faqButtons[i]\n button.addEventListener('click', () => {\n button.parentElement.classList.toggle('faq-view__question--active')\n })\n }\n}\n","document.addEventListener('DOMContentLoaded', function () {\n var tapArea, startX\n tapArea = document.querySelectorAll('.flickity-slider')\n startX = 0\n for (let item of tapArea) {\n item.ontouchstart = function (e) {\n startX = e.touches[0].clientX\n }\n item.ontouchmove = function (e) {\n if (Math.abs(e.touches[0].clientX - startX) > 5 && e.cancelable) {\n e.preventDefault()\n }\n }\n }\n})\n","const generalContact = document.getElementById('js-general-contact');\r\n\r\nif(generalContact) {\r\n const generalContactClose = document.getElementById(\"js-general-contact-close\");\r\n generalContactClose.addEventListener(\"click\", function() {\r\n generalContact.classList.add(\"modal--hidden\");\r\n document\r\n .getElementsByTagName('body')[0]\r\n .classList.remove('modal-open')\r\n });\r\n}","const arrayToggle = (array, element) => {\n if (array.includes(element)) {\n array.splice(array.indexOf(element), 1)\n } else {\n array.push(element)\n }\n}\n","document.addEventListener('DOMContentLoaded', function () {\n const gridElements = document.querySelectorAll('.js-grid-editor')\n\n if (gridElements.length) {\n gridElements.forEach((element) => {\n const elementWatcher = scrollMonitor.create(element, 0)\n\n elementWatcher.enterViewport(function () {\n element.classList.remove('grid-editor--top')\n element.classList.remove('grid-editor--bottom')\n })\n\n elementWatcher.exitViewport(function () {\n if (elementWatcher.isAboveViewport) {\n element.classList.add('grid-editor--top')\n } else if (elementWatcher.isBelowViewport) {\n element.classList.add('grid-editor--bottom')\n }\n })\n\n if (!elementWatcher.isInViewport) {\n if (elementWatcher.isAboveViewport) {\n element.classList.add('grid-editor--top')\n } else if (elementWatcher.isBelowViewport) {\n element.classList.add('grid-editor--bottom')\n }\n }\n })\n }\n})\n","// Image fallback for shit browsers\n\nfunction support_format_webp() {\n const elem = document.createElement('canvas')\n if (!!(elem.getContext && elem.getContext('2d'))) {\n return elem.toDataURL('image/webp').indexOf('data:image/webp') == 0\n } else {\n return false\n }\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n if (!support_format_webp()) {\n const images = document.querySelectorAll('img')\n images.forEach((img) => {\n img.setAttribute(\n 'src',\n img.getAttribute('src').replace('&format=webp', '&format=png')\n )\n })\n\n const svgImages = document.querySelectorAll('image')\n svgImages.forEach((img) => {\n img.setAttribute(\n 'xlink:href',\n img\n .getAttribute('xlink:href')\n .replace('&format=webp', '&format=png')\n )\n })\n }\n})\n","const linkListEditors = document.getElementsByClassName('js-link-list-editor')\n\nif (linkListEditors.length) {\n for (let i = 0; i < linkListEditors.length; i++) {\n const list = linkListEditors[i]\n\n const listGroup = list.querySelectorAll(\n '.link-list-editor__collapse-links'\n )\n\n let hasCollapse = false\n\n for (let x = 0; x < listGroup.length; x++) {\n if (listGroup[x].childElementCount > 10) {\n hasCollapse = true\n }\n }\n\n const linkListBtn = linkListEditors[i].querySelector(\n '.link-list-editor__show-more'\n )\n\n if (hasCollapse) {\n linkListBtn.classList.add('link-list-editor__show-more--show')\n\n linkListBtn.addEventListener('click', () => {\n linkListEditors[i]\n .querySelector('.link-list-editor')\n .classList.add('link-list-editor--show')\n linkListBtn.classList.remove('link-list-editor__show-more--show')\n })\n }\n }\n}\n","const elem = document.querySelector('.js-logos-slider')\n\nif (elem) {\n const flkty = new Flickity(elem, {\n cellAlign: 'left',\n wrapAround: true,\n groupCells: false,\n imagesLoaded: true,\n prevNextButtons: false,\n pageDots: false,\n autoPlay: true,\n lazyLoad: 5,\n })\n}\n","const navigationTrigger = document.getElementById('js-offcanvas-trigger')\nconst navigationTriggerActiveClass = 'offcanvas__trigger--active'\n\nconst offcanvasNavigation = document.getElementById('js-offcanvas')\nconst offcanvasNavigationActiveClass = 'offcanvas--active'\n\nconst offcanvasBackdrop = document.getElementById('js-offcanvas-backdrop')\nconst offcanvasBackdropActiveClass = 'offcanvas__backdrop--active'\n\nfunction openOffcanvas() {\n navigationTrigger.classList.add(navigationTriggerActiveClass)\n offcanvasNavigation.classList.add(offcanvasNavigationActiveClass)\n offcanvasBackdrop.classList.add(offcanvasBackdropActiveClass)\n}\n\nfunction closeOffcanvas() {\n navigationTrigger.classList.remove(navigationTriggerActiveClass)\n offcanvasNavigation.classList.remove(offcanvasNavigationActiveClass)\n offcanvasBackdrop.classList.remove(offcanvasBackdropActiveClass)\n}\n\nif (offcanvasBackdrop) {\n offcanvasBackdrop.addEventListener('click', () => {\n closeOffcanvas()\n })\n}\n\nif (navigationTrigger) {\n navigationTrigger.addEventListener('click', () => {\n if (\n offcanvasNavigation.classList.contains(offcanvasNavigationActiveClass)\n ) {\n closeOffcanvas()\n } else {\n openOffcanvas()\n }\n })\n}\n\nlet lastScrollPosition = 0\nconst navigation = document.getElementById('js-navigation')\nconst isDark = navigation.classList.contains('navigation--dark')\nconst mobileNavigation = document.getElementById('js-mobile-navigation')\nconst scrollButton = document.getElementById('js-scroll-to-top')\n\nif (navigation) {\n window.addEventListener('scroll', () => {\n const currentScrollPosition =\n window.pageYOffset || document.documentElement.scrollTop\n\n if (currentScrollPosition > 50) {\n navigation.classList.add('navigation--focus')\n\n if (isDark) {\n navigation.classList.remove('navigation--dark')\n }\n } else {\n navigation.classList.remove('navigation--focus')\n\n if (isDark) {\n navigation.classList.add('navigation--dark')\n }\n }\n\n if (currentScrollPosition < 200) {\n navigation.classList.remove('navigation--hide')\n return\n }\n\n if (mobileNavigation) {\n if (currentScrollPosition < lastScrollPosition) {\n navigation.classList.remove('navigation--hide')\n mobileNavigation.classList.remove('mobile-navigation--hide')\n scrollButton.classList.add('scroll-to-top--offset')\n } else {\n mobileNavigation.classList.add('mobile-navigation--hide')\n navigation.classList.add('navigation--hide')\n scrollButton.classList.remove('scroll-to-top--offset')\n }\n }\n lastScrollPosition = currentScrollPosition\n })\n}\n","const popup = document.getElementById('js-popup');\r\nif(popup) {\r\n const popupClose = document.getElementById('js-popup-close');\r\n popupClose.addEventListener('click', () => {\r\n popup.classList.add('modal--hidden');\r\n });\r\n\r\n setTimeout(() => {\r\n popup.classList.remove('modal--hidden');\r\n }, 3000)\r\n}","const newsSliders = document.querySelectorAll('.js-news-editor-slider')\n\nif (newsSliders) {\n newsSliders.forEach((slider) => {\n const flkty = new Flickity(slider, {\n cellAlign: 'center',\n wrapAround: true,\n groupCells: false,\n imagesLoaded: false,\n prevNextButtons: true,\n pageDots: true,\n autoPlay: false,\n lazyLoad: true,\n })\n })\n}\n","const tabTrigger = document.querySelector('.js-privacy-view-tabs-trigger')\n\nif (tabTrigger) {\n tabTrigger.addEventListener('click', () => {\n document\n .querySelector('.js-privacy-view-tabs')\n .classList.toggle('privacy-view__tabs--active')\n })\n}\n","document.addEventListener('DOMContentLoaded', function () {\n setTimeout(() => {\n document.getElementsByTagName('body')[0].classList.remove('preload')\n }, 100)\n})\n","document.addEventListener('DOMContentLoaded', function () {\n const projectElements = document.querySelectorAll('.js-project-element')\n\n if (projectElements.length) {\n projectElements.forEach((element) => {\n const elementWatcher = scrollMonitor.create(element, -150)\n\n element\n .querySelector('.js-project-close')\n .addEventListener('click', () => {\n element.classList.remove(\n 'projects-view__project-wrapper--active'\n )\n })\n\n element\n .querySelector('.projects-view__project')\n .addEventListener('click', () => {\n projectElements.forEach((otherElement) => {\n otherElement.classList.remove(\n 'projects-view__project-wrapper--active'\n )\n })\n\n element.classList.add('projects-view__project-wrapper--active')\n })\n\n elementWatcher.enterViewport(function () {\n element.classList.remove('projects-view__project-wrapper--top')\n element.classList.remove('projects-view__project-wrapper--bottom')\n })\n\n elementWatcher.exitViewport(function () {\n if (elementWatcher.isAboveViewport) {\n element.classList.add('projects-view__project-wrapper--top')\n } else if (elementWatcher.isBelowViewport) {\n element.classList.add('projects-view__project-wrapper--bottom')\n }\n })\n\n if (!elementWatcher.isInViewport) {\n if (elementWatcher.isAboveViewport) {\n element.classList.add('projects-view__project-wrapper--top')\n } else if (elementWatcher.isBelowViewport) {\n element.classList.add('projects-view__project-wrapper--bottom')\n }\n }\n })\n }\n})\n","const rentals = document.getElementById('js-rentals-view')\r\n\r\nconst styles = [\r\n {\r\n featureType: 'all',\r\n elementType: 'labels',\r\n stylers: [\r\n {\r\n gamma: 0.26,\r\n },\r\n {\r\n visibility: 'off',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'administrative.province',\r\n elementType: 'all',\r\n stylers: [\r\n {\r\n visibility: 'on',\r\n },\r\n {\r\n lightness: -50,\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'administrative.province',\r\n elementType: 'labels.text',\r\n stylers: [\r\n {\r\n lightness: 20,\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'administrative.province',\r\n elementType: 'labels.text.stroke',\r\n stylers: [\r\n {\r\n visibility: 'off',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'landscape',\r\n elementType: 'all',\r\n stylers: [\r\n {\r\n visibility: 'on',\r\n },\r\n {\r\n color: '#f3f4f4',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'poi',\r\n elementType: 'all',\r\n stylers: [\r\n {\r\n visibility: 'off',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'poi.park',\r\n elementType: 'geometry.fill',\r\n stylers: [\r\n {\r\n visibility: 'on',\r\n },\r\n {\r\n color: '#83cead',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'road',\r\n elementType: 'all',\r\n stylers: [\r\n {\r\n hue: '#ffffff',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'road',\r\n elementType: 'labels.text',\r\n stylers: [\r\n {\r\n visibility: 'on',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'road.highway',\r\n elementType: 'geometry',\r\n stylers: [\r\n {\r\n lightness: 50,\r\n },\r\n {\r\n hue: '#ffffff',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'road.arterial',\r\n elementType: 'geometry',\r\n stylers: [\r\n {\r\n lightness: 20,\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'road.highway',\r\n elementType: 'geometry',\r\n stylers: [\r\n {\r\n visibility: 'on',\r\n },\r\n {\r\n color: '#fee379',\r\n },\r\n ],\r\n },\r\n]\r\n\r\nconst mapOptions = {\r\n disableDefaultUI: true,\r\n zoomControl: true,\r\n maxZoom: 14,\r\n styles,\r\n}\r\n\r\n\r\n\r\nif (rentals) {\r\n const url = new URL(window.location.href);\r\n const freeNow = url.searchParams.get('FreeNow') === 'true';\r\n\r\n const initialSearch = {\r\n ZipCodes: [],\r\n TypeIds: [],\r\n TagIds: [],\r\n RentalPeriod: '',\r\n FacilityIds: [],\r\n MaxRent: null,\r\n MinSize: null,\r\n MinRooms: '0',\r\n MaxRooms: '0',\r\n AcquisitionDateFrom: null,\r\n AcquisitionDateTo: freeNow ? new Date().toISOString().split('T')[0] : null,\r\n PageIndex: 1,\r\n PageSize: 24,\r\n AddressQuery: '',\r\n }\r\n\r\n const app = new Vue({\r\n el: rentals,\r\n data() {\r\n return {\r\n addressSuggestions: [],\r\n city: '',\r\n citySuggestions: [],\r\n citySuggestionsVisible: false,\r\n citiesSelected: [],\r\n openSearch: false,\r\n openFilter: false,\r\n fixButtons: false,\r\n fixHelp: false,\r\n helpHeight: 0,\r\n loading: true,\r\n citySearchTimeout: null,\r\n searchTimeout: null,\r\n addressTimeout: null,\r\n appartments: [],\r\n areas: [],\r\n areasSelected: [],\r\n tags: [],\r\n tagsSelected: [],\r\n facilities: [],\r\n unitCaseTypes: [],\r\n search: {\r\n ...initialSearch,\r\n },\r\n\r\n hideTags: JSON.parse(rentals.getAttribute('data-hidden-tags')),\r\n\r\n freeNow,\r\n\r\n mode: 'list',\r\n map: null,\r\n markers: [],\r\n infowindow: null,\r\n\r\n prevPage: 0,\r\n hasMorePages: false,\r\n\r\n featureds: null,\r\n featuredLoading: true,\r\n featuredFlkty: null,\r\n }\r\n },\r\n methods: {\r\n formatPrice(price) {\r\n return price.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.')\r\n },\r\n getFeatured() {\r\n this.featuredLoading = true;\r\n \r\n const selectedAreaIds = this.areasSelected.map((x) =>\r\n x.Id.toString()\r\n )\r\n\r\n const zipCodes = this.citiesSelected.map((x) => x.zip)\r\n\r\n const areaZipCodes = this.areas.map((x) => ({\r\n ...x,\r\n ZipCodes: x.Cities.map((y) => y.ZipCode.toString()),\r\n }))\r\n\r\n const areasFromZipCodes = areaZipCodes.filter((x) =>\r\n x.ZipCodes.some((y) => zipCodes.includes(y))\r\n )\r\n\r\n const featuredSearch = {\r\n Areas: [\r\n ...selectedAreaIds,\r\n ...areasFromZipCodes.map((x) => x.Id),\r\n ],\r\n FeaturedCases: JSON.parse(rentals.getAttribute('data-featured')),\r\n }\r\n\r\n fetch('/Umbraco/Api/Case/Featured', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(featuredSearch),\r\n })\r\n .then((response) => response.json())\r\n .then((json) => {\r\n this.featuredLoading = false;\r\n \r\n this.featureds = json\r\n\r\n if (this.featuredFlkty) {\r\n this.featuredFlkty.forEach(x => x.destroy());\r\n }\r\n\r\n setTimeout(() => {\r\n this.featuredFlkty = [];\r\n document.querySelectorAll('.js-featured-element-slider').forEach((element) => {\r\n const flkty = new Flickity(element,\r\n {\r\n cellAlign: 'left',\r\n wrapAround: true,\r\n groupCells: false,\r\n imagesLoaded: true,\r\n prevNextButtons: true,\r\n pageDots: true,\r\n autoPlay: true,\r\n lazyLoad: true,\r\n draggable: false,\r\n }\r\n );\r\n this.featuredFlkty.push(flkty);\r\n })\r\n\r\n const flktyWrapper = new Flickity('.featured-element__wrapper',\r\n {\r\n cellAlign: 'left',\r\n wrapAround: true,\r\n groupCells: false,\r\n prevNextButtons: false,\r\n pageDots: true,\r\n autoPlay: true,\r\n }\r\n );\r\n\r\n this.featuredFlkty.push(flktyWrapper);\r\n })\r\n })\r\n },\r\n\r\n formatDate(date) {\r\n const dateObj = new Date(date)\r\n if(dateObj > new Date()) {\r\n return dateObj.toLocaleDateString('da-DK', \r\n {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n });\r\n } else {\r\n return 'Ledig nu'\r\n }\r\n },\r\n\r\n toggleSearch() {\r\n this.openSearch = !this.openSearch\r\n },\r\n\r\n toggleFilter() {\r\n if (this.openFilter) {\r\n document\r\n .getElementsByTagName('body')[0]\r\n .classList.remove('modal-open')\r\n } else {\r\n document\r\n .getElementsByTagName('body')[0]\r\n .classList.add('modal-open')\r\n }\r\n\r\n this.openFilter = !this.openFilter\r\n },\r\n reset() {\r\n this.citiesSelected = []\r\n this.areasSelected = []\r\n this.tagsSelected = []\r\n this.city = ''\r\n this.search = { ...initialSearch }\r\n },\r\n\r\n debounceCitySearch() {\r\n if (this.citySearchTimeout) {\r\n clearTimeout(this.citySearchTimeout)\r\n }\r\n\r\n this.citySearchTimeout = setTimeout(() => {\r\n this.citySearch()\r\n }, 500)\r\n },\r\n\r\n handleCitySearch() {\r\n this.search.AddressQuery = this.city\r\n\r\n if (this.city == '') {\r\n this.citySuggestionsVisible = false\r\n } else {\r\n this.citySuggestionsVisible = true\r\n this.debounceCitySearch()\r\n }\r\n },\r\n\r\n addTag(tag) {\r\n this.tagsSelected.push(tag)\r\n this.citySuggestionsVisible = false\r\n this.city = ''\r\n this.search.AddressQuery = ''\r\n },\r\n\r\n removeTag(id) {\r\n this.tagsSelected = [...this.tagsSelected].filter((x) => x.Id != id)\r\n },\r\n\r\n addArea(area) {\r\n this.areasSelected.push(area)\r\n this.citySuggestionsVisible = false\r\n this.city = ''\r\n this.search.AddressQuery = ''\r\n },\r\n\r\n removeArea(id) {\r\n this.areasSelected = [...this.areasSelected].filter(\r\n (x) => x.Id != id\r\n )\r\n },\r\n\r\n addCity(suggestion) {\r\n this.citiesSelected.push({\r\n name: suggestion.navn,\r\n zip: suggestion.nr,\r\n })\r\n this.citySuggestionsVisible = false\r\n this.city = ''\r\n this.search.AddressQuery = ''\r\n },\r\n\r\n removeCity(zip) {\r\n this.citiesSelected = [...this.citiesSelected].filter(\r\n (x) => x.zip != zip\r\n )\r\n },\r\n\r\n setAddressQuery(address) {\r\n this.city = address.Text\r\n this.search.AddressQuery = address.Text\r\n },\r\n\r\n citySearch() {\r\n fetch(\r\n 'https://dawa.aws.dk/postnumre/autocomplete?per_side=100&q=' +\r\n this.city\r\n )\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data) {\r\n this.citySuggestions = data\r\n .sort((a, b) => a.tekst.localeCompare(b.tekst))\r\n .slice(0, 20)\r\n }\r\n })\r\n },\r\n\r\n getTags() {\r\n return fetch('/Umbraco/Api/Case/Tags', {\r\n method: 'GET',\r\n }).then((response) => response.json())\r\n },\r\n\r\n getAreas() {\r\n return fetch('/Umbraco/Api/Case/Areas', {\r\n method: 'GET',\r\n }).then((response) => response.json())\r\n },\r\n\r\n getTagsAndAreas() {\r\n return Promise.all([this.getTags(), this.getAreas()])\r\n },\r\n\r\n handleInitialSearch() {\r\n const url = new URL(window.location.href)\r\n\r\n const urlParams = new URLSearchParams(url.search)\r\n const params = Object.fromEntries(urlParams)\r\n\r\n this.getTagsAndAreas().then(([tags, areas]) => {\r\n this.tags = tags\r\n this.areas = areas\r\n\r\n Object.keys(params).forEach((key) => {\r\n if (\r\n key == 'ZipCodes' ||\r\n key == 'TypeIds' ||\r\n key == 'TagIds' ||\r\n key == 'FacilityIds'\r\n ) {\r\n if (key == 'ZipCodes') {\r\n let zips = params[key].split(',')\r\n\r\n areas.forEach((x) => {\r\n if (\r\n x.Cities.every((c) =>\r\n zips.includes(c.ZipCode.toString())\r\n )\r\n ) {\r\n this.addArea(x)\r\n\r\n zips = zips.filter(\r\n (z) =>\r\n !x.Cities.find(\r\n (c) => c.ZipCode.toString() == z\r\n )\r\n )\r\n }\r\n })\r\n\r\n zips.forEach((zip) => {\r\n if (!this.citiesSelected.find((x) => x.zip == zip)) {\r\n this.citiesSelected.push({ zip })\r\n }\r\n })\r\n } else if (key == 'TagIds') {\r\n params[key] = params[key].split(',')\r\n\r\n params[key].forEach((tagId) => {\r\n if (!this.tagsSelected.find((x) => x.Id == tagId)) {\r\n console.log(this.tags.find((x) => x.Id == tagId))\r\n this.tagsSelected.push(\r\n this.tags.find((x) => x.Id == tagId)\r\n )\r\n }\r\n })\r\n } else {\r\n params[key] = params[key].split(',')\r\n }\r\n } else if (key == 'PageIndex') {\r\n params.PageSize =\r\n parseInt(params[key]) * initialSearch.PageSize\r\n\r\n params[key] = parseInt(params[key])\r\n }\r\n })\r\n\r\n if (params.AddressQuery !== undefined) {\r\n this.city = params.AddressQuery\r\n }\r\n\r\n this.search = { ...this.search, ...params }\r\n })\r\n },\r\n\r\n handleSearch() {\r\n this.loading = true\r\n\r\n let searchObj = JSON.parse(JSON.stringify(this.search))\r\n\r\n if (this.search.AcquisitionDateFrom) {\r\n searchObj.AcquisitionDateFrom = new Date(\r\n this.search.AcquisitionDateFrom\r\n ).toISOString().split('T')[0]\r\n }\r\n\r\n if (this.search.AcquisitionDateTo) {\r\n searchObj.AcquisitionDateTo = new Date(\r\n this.search.AcquisitionDateTo\r\n ).toISOString().split('T')[0]\r\n }\r\n\r\n if(this.freeNow) {\r\n searchObj.AcquisitionDateTo = new Date().toISOString().split('T')[0]\r\n searchObj.AcquisitionDateFrom = null\r\n }\r\n\r\n let newZips = []\r\n\r\n if (this.areasSelected.length) {\r\n this.areasSelected.forEach((x) => {\r\n x.Cities.forEach((y) => {\r\n newZips.push(y.ZipCode.toString())\r\n })\r\n })\r\n }\r\n\r\n if (this.tagsSelected.length) {\r\n searchObj.TagIds = this.tagsSelected.map((x) => x.Id)\r\n } else {\r\n searchObj.TagIds = []\r\n }\r\n\r\n if (this.citiesSelected.length) {\r\n this.citiesSelected.forEach((x) => {\r\n newZips.push(x.zip.toString())\r\n })\r\n }\r\n\r\n newZips = [...new Set(newZips)]\r\n\r\n searchObj.ZipCodes = [...newZips]\r\n\r\n fetch('/Umbraco/Api/Case/Search', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(searchObj),\r\n })\r\n .then((response) => response.json())\r\n .then((json) => {\r\n if (this.prevPage !== this.search.PageIndex) {\r\n this.appartments = [...this.appartments].concat(json.Cases)\r\n\r\n this.prevPage = this.search.PageIndex\r\n } else {\r\n this.appartments = json.Cases\r\n }\r\n\r\n this.addressSuggestions = json.Suggestions\r\n\r\n this.hasMorePages = json.HasMorePages\r\n })\r\n .catch((e) => {\r\n console.log('catch', e)\r\n })\r\n .finally(() => {\r\n if (this.hasMorePages && this.mode == 'map') {\r\n this.getNextPage()\r\n } else {\r\n this.loading = false\r\n\r\n if (history.pushState) {\r\n const newUrl = new URL(window.location.href)\r\n\r\n delete searchObj.PageSize\r\n\r\n newUrl.search = new URLSearchParams(searchObj)\r\n\r\n let newLink = newUrl.href\r\n\r\n if (!searchObj.ZipCodes.length) {\r\n newLink = newLink.replace('ZipCodes=', '')\r\n }\r\n\r\n if (!searchObj.TypeIds.length) {\r\n newLink = newLink.replace('&TypeIds=', '')\r\n }\r\n\r\n if (!searchObj.TagIds.length) {\r\n newLink = newLink.replace('&TagIds=', '')\r\n }\r\n\r\n if (!searchObj.RentalPeriod) {\r\n newLink = newLink.replace('&RentalPeriod=', '')\r\n }\r\n\r\n if (!searchObj.FacilityIds.length) {\r\n newLink = newLink.replace('&FacilityIds=', '')\r\n }\r\n\r\n if (!searchObj.MaxRent) {\r\n newLink = newLink.replace('&MaxRent=null', '')\r\n }\r\n\r\n if (!searchObj.MinSize) {\r\n newLink = newLink.replace('&MinSize=null', '')\r\n }\r\n\r\n if (!searchObj.MinRooms == '0') {\r\n newLink = newLink.replace('&MinRooms=0', '')\r\n }\r\n\r\n if (searchObj.MaxRooms == '0') {\r\n newLink = newLink.replace('&MaxRooms=0', '')\r\n }\r\n\r\n if (!searchObj.AddressQuery) {\r\n newLink = newLink.replace('&AddressQuery=', '')\r\n }\r\n\r\n if(this.freeNow) {\r\n if(!newLink.includes('&FreeNow=true')) {\r\n newLink += '&FreeNow=true'\r\n }\r\n } else {\r\n newLink = newLink.replace('&FreeNow=true', '')\r\n } \r\n \r\n if (!searchObj.AcquisitionDateFrom) {\r\n newLink = newLink.replace(\r\n '&AcquisitionDateFrom=null',\r\n ''\r\n )\r\n } \r\n\r\n if (!searchObj.AcquisitionDateTo) {\r\n newLink = newLink.replace(\r\n '&AcquisitionDateTo=null',\r\n ''\r\n )\r\n } \r\n\r\n if (newLink.endsWith('?')) {\r\n newLink = newLink.replace('?', '')\r\n }\r\n\r\n window.history.replaceState(\r\n { path: newLink },\r\n '',\r\n newLink\r\n )\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n const prevCaseEl = document.getElementById(\r\n `case-${window.localStorage.getItem('prevCaseId')}`\r\n )\r\n\r\n if (\r\n prevCaseEl &&\r\n window.localStorage.getItem('prevCaseId')\r\n ) {\r\n prevCaseEl.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n })\r\n\r\n window.localStorage.removeItem('prevCaseId')\r\n }\r\n })\r\n })\r\n },\r\n\r\n debounceSearch(skip) {\r\n if (this.searchTimeout) {\r\n clearTimeout(this.searchTimeout)\r\n }\r\n\r\n if (skip && this.appartments.length) {\r\n this.handleSearch()\r\n } else {\r\n this.searchTimeout = setTimeout(() => {\r\n this.handleSearch()\r\n this.getFeatured()\r\n }, 500)\r\n }\r\n },\r\n\r\n getNextPage() {\r\n this.search.PageIndex = parseInt(this.search.PageIndex) + 1\r\n },\r\n\r\n getImagesInOrder(images) {\r\n return [...images].sort((a, b) => a.DisplayOrder - b.DisplayOrder)\r\n },\r\n\r\n getFacilities() {\r\n fetch('/Umbraco/Api/Case/Facilities', {\r\n method: 'GET',\r\n })\r\n .then((response) => response.json())\r\n .then((json) => {\r\n this.facilities = json\r\n })\r\n },\r\n\r\n getUnitCaseTypes() {\r\n fetch('/Umbraco/Api/Case/UnitCaseTypes', {\r\n method: 'GET',\r\n })\r\n .then((response) => response.json())\r\n .then((json) => {\r\n this.unitCaseTypes = json\r\n })\r\n },\r\n\r\n setMode(type) {\r\n this.mode = type\r\n\r\n if (type == 'map') {\r\n if (this.hasMorePages) {\r\n this.getNextPage()\r\n }\r\n setTimeout(() => {\r\n this.generateMap()\r\n })\r\n } else {\r\n this.search.PageIndex = 1\r\n }\r\n },\r\n\r\n generateMap() {\r\n if (this.loading) {\r\n return\r\n }\r\n\r\n this.map = new google.maps.Map(\r\n document.getElementById('rentals-map'),\r\n mapOptions\r\n )\r\n\r\n if (window.innerWidth < 984) {\r\n window.scrollTo({\r\n top:\r\n document\r\n .getElementById('rentals-map')\r\n .getBoundingClientRect().top +\r\n window.pageYOffset +\r\n -55,\r\n behavior: 'smooth',\r\n })\r\n }\r\n\r\n const latlngbounds = new google.maps.LatLngBounds()\r\n\r\n var oms = new OverlappingMarkerSpiderfier(this.map, {\r\n markersWontMove: true,\r\n markersWontHide: true,\r\n basicFormatEvents: true,\r\n keepSpiderfied: true,\r\n })\r\n\r\n this.markers = []\r\n\r\n this.appartments.forEach((appartment) => {\r\n if (!appartment.Latitude || !appartment.Longitude) {\r\n return null\r\n }\r\n\r\n const latLng = new google.maps.LatLng(\r\n appartment.Latitude,\r\n appartment.Longitude\r\n )\r\n\r\n latlngbounds.extend(latLng)\r\n\r\n const marker = new google.maps.Marker({\r\n icon: '/dist/img/pin.png',\r\n position: latLng,\r\n id: appartment.id,\r\n title: appartment.store,\r\n animation: google.maps.Animation.DROP,\r\n })\r\n\r\n marker.addListener('spider_click', () => {\r\n this.openWindow(appartment, marker)\r\n })\r\n\r\n this.markers.push(marker)\r\n\r\n oms.addMarker(marker)\r\n })\r\n\r\n this.map.fitBounds(latlngbounds)\r\n\r\n setTimeout(() => {\r\n this.map.setOptions({\r\n maxZoom: null,\r\n })\r\n }, 100)\r\n },\r\n\r\n generateInfoWindow(appartment) {\r\n return new google.maps.InfoWindow({\r\n content: `
\r\n \r\n ${\r\n appartment.State == 'Kontrakt under udarbejdelse'\r\n ? `
Afventer underskrift
`\r\n : ''\r\n }\r\n \"${appartment.Title}\"\r\n
\r\n \r\n
\r\n \r\n

\r\n \r\n ${appartment.Address }${(appartment.Floor || appartment.Door) ? \", \" : '' }\r\n ${appartment.Floor ? (appartment.Floor + \". \") : ''}\r\n ${appartment.Door ? (appartment.Door + \". \") : '' }\r\n \r\n

\r\n\r\n
\r\n ${appartment.City.ZipCode} ${appartment.City.Name}\r\n
\r\n\r\n
\r\n ${appartment.Tags.map((tag) => `\r\n ${tag.Name} \r\n `)}\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n ${appartment.UnitType}\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n ${appartment.Size} m²\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n ${appartment.Rooms} værelser\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n ${this.formatDate(appartment.AcquisitionDate)}\r\n
\r\n
\r\n\r\n
\r\n ${this.formatPrice(appartment.Rent)} kr.\r\n
\r\n\r\n \r\n
\r\n
`,\r\n })\r\n },\r\n\r\n openWindow(appartment, marker) {\r\n if (this.infowindow) {\r\n this.infowindow.close()\r\n }\r\n\r\n this.infowindow = this.generateInfoWindow(appartment)\r\n this.infowindow.open(this.map, marker)\r\n },\r\n\r\n goToLocation(id) {\r\n window.scrollTo({ top: 0, behavior: 'smooth' })\r\n\r\n const marker = this.markers.find((item) => item.id === id)\r\n\r\n const appartment = this.stores.find((item) => item.id === id)\r\n\r\n this.openWindow(appartment, marker)\r\n this.map.panTo(marker.position)\r\n this.map.setZoom(12)\r\n },\r\n\r\n // CONTACT\r\n open() {\r\n document.getElementById(\"js-general-contact\").classList.remove(\"modal--hidden\")\r\n },\r\n },\r\n computed: {\r\n filteredAreaSuggestions() {\r\n return this.areas.filter(\r\n (x) =>\r\n !this.areasSelected.find((y) => y.Id == x.Id) &&\r\n x.Name.toLowerCase().includes(this.city.toLowerCase())\r\n )\r\n },\r\n filteredCitySuggestions() {\r\n return this.citySuggestions.filter(\r\n (x) => !this.citiesSelected.find((y) => y.zip == x.postnummer.nr)\r\n )\r\n },\r\n filteredTagSuggestions() {\r\n return this.tags.filter((x) =>\r\n x.Name.toLowerCase().includes(this.city.toLowerCase())\r\n )\r\n },\r\n },\r\n mounted() {\r\n this.handleInitialSearch()\r\n this.getFacilities()\r\n this.getUnitCaseTypes()\r\n\r\n const triggerTop = this.$refs.triggers.offsetTop - 100\r\n\r\n if(this.$refs.stickyhelp) {\r\n this.helpHeight = this.$refs.stickyhelp.parentNode.offsetHeight\r\n\r\n window.addEventListener('scroll', () => {\r\n if (this.$refs.stickyhelp) {\r\n const stickHelpTrigger = this.$refs.stickyhelp.offsetTop - 100\r\n\r\n if (window.scrollY > triggerTop) {\r\n this.fixButtons = true\r\n } else {\r\n this.fixButtons = false\r\n }\r\n\r\n if (window.scrollY > stickHelpTrigger) {\r\n this.fixHelp = true\r\n } else {\r\n this.fixHelp = false\r\n }\r\n }\r\n })\r\n }\r\n\r\n const targets = document.getElementsByClassName(\r\n 'js-rentals-city-dropdown'\r\n )\r\n\r\n document.addEventListener('click', (event) => {\r\n const path = event.composedPath()\r\n let isAnyInPath = false\r\n\r\n for (let i = 0; i < targets.length; i++) {\r\n if (path.includes(targets[i])) {\r\n isAnyInPath = true\r\n }\r\n }\r\n\r\n if (!isAnyInPath) {\r\n this.citySuggestionsVisible = false\r\n }\r\n })\r\n },\r\n watch: {\r\n search: {\r\n handler: function (value) {\r\n if (value.PageIndex == this.prevPage.toString()) {\r\n this.search.PageIndex = 1\r\n this.prevPage = 1\r\n this.debounceSearch()\r\n } else {\r\n this.debounceSearch(true)\r\n }\r\n },\r\n deep: true,\r\n },\r\n freeNow: {\r\n handler: function (value) {\r\n this.search.AcquisitionDateFrom = null\r\n\r\n if(value) {\r\n this.search.AcquisitionDateTo = new Date().toISOString().split('T')[0]\r\n } else {\r\n this.search.AcquisitionDateTo = null;\r\n }\r\n },\r\n },\r\n citiesSelected: {\r\n handler: function () {\r\n this.debounceSearch()\r\n },\r\n deep: true,\r\n },\r\n loading: {\r\n handler: function () {\r\n if (!this.loading && this.mode == 'map') {\r\n this.generateMap()\r\n }\r\n },\r\n },\r\n areasSelected: {\r\n handler: function () {\r\n this.debounceSearch()\r\n },\r\n deep: true,\r\n },\r\n tagsSelected: {\r\n handler: function () {\r\n this.debounceSearch()\r\n },\r\n deep: true,\r\n },\r\n },\r\n })\r\n}","const scrollButton = document.getElementById('js-scroll-to-top')\nif (scrollButton) {\n scrollButton.addEventListener('click', () => {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n })\n\n window.addEventListener('scroll', () => {\n if (window.scrollY > 200) {\n scrollButton.classList.add('scroll-to-top--visible')\n } else {\n scrollButton.classList.remove('scroll-to-top--visible')\n }\n })\n}\n","const selectedCasesSliders = document.querySelectorAll('.js-selected-cases-slider')\n\nif (selectedCasesSliders) {\n selectedCasesSliders.forEach((slider) => {\n const flkty = new Flickity(slider, {\n cellAlign: 'left',\n wrapAround: false,\n groupCells: false,\n imagesLoaded: true,\n prevNextButtons: false,\n pageDots: false,\n watchCSS: true,\n })\n })\n}\n\nconst selectedCasesLists = document.getElementsByClassName('js-selected-cases-list')\n\nif (selectedCasesLists.length) {\n for (let i = 0; i < selectedCasesLists.length; i++) {\n const el = selectedCasesLists[i]\n\n const appartments = JSON.parse(el.querySelector('.js-selected-cases-list-data').innerHTML);\n const sortings = JSON.parse(el.querySelector('.js-selected-cases-list-sortings').innerHTML);\n\n \n new Vue({\n el,\n data() {\n return {\n appartments,\n sortings,\n sorting: \"Address\",\n direction: \"desc\",\n open: false,\n limit: 15\n }\n },\n computed: {\n showMore() {\n return this.appartments.length > this.limit + 5\n }\n },\n methods: {\n setSorting(sort) {\n if (this.sorting === sort) {\n this.direction = this.direction === 'asc' ? 'desc' : 'asc'\n } else {\n this.sorting = sort\n this.direction = 'desc'\n }\n\n this.appartments.sort((a, b) => {\n if (this.direction === 'asc') {\n return a[this.sorting] > b[this.sorting] ? 1 : -1\n } else {\n return a[this.sorting] < b[this.sorting] ? 1 : -1\n }\n });\n },\n formatDate(date) {\n const d = new Date(date)\n\n const months = [\n 'Januar',\n 'Februar',\n 'Marts',\n 'April',\n 'Maj',\n 'Juni',\n 'Juli',\n 'August',\n 'September',\n 'Oktober',\n 'November',\n 'December',\n ];\n\n return d.getDate() + '. ' + months[d.getMonth()].toLowerCase() + ' ' + d.getFullYear()\n },\n formatPrice(price) {\n return price.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.')\n },\n }\n });\n }\n}\n","//Register Service Worker\nif ('serviceWorker' in navigator) {\n window.addEventListener('load', function () {\n navigator.serviceWorker.register('/sw.js').then(\n function (registration) {\n // Registration was successful\n console.log(\n 'ServiceWorker registration successful with scope: ',\n registration.scope\n )\n\n var swRegistration = registration\n },\n function (err) {\n // registration failed :(\n console.log('ServiceWorker registration failed: ', err)\n }\n )\n })\n}\n","const elem = document.querySelector('.js-testimonials-slider')\n\nif (elem) {\n const flkty = new Flickity(elem, {\n cellAlign: 'center',\n wrapAround: true,\n groupCells: false,\n imagesLoaded: false,\n prevNextButtons: true,\n pageDots: false,\n autoPlay: false,\n })\n}\n","const videoCtaEditors = document.getElementsByClassName('js-video-cta-editor')\n\nif (videoCtaEditors.length) {\n for (let i = 0; i < videoCtaEditors.length; i++) {\n const editor = videoCtaEditors[i]\n const playButton = editor.querySelector('.js-video-cta-editor-play')\n const iframe = editor.querySelector('.js-video-cta-editor-iframe')\n const backdrop = editor.querySelector('.js-video-cta-editor-backdrop')\n\n playButton.addEventListener('click', () => {\n iframe.classList.add('video-cta-editor__iframe--active')\n document.getElementsByTagName('body')[0].classList.add('modal-open')\n })\n\n backdrop.addEventListener('click', () => {\n iframe.classList.remove('video-cta-editor__iframe--active')\n document.getElementsByTagName('body')[0].classList.remove('modal-open')\n })\n }\n}\n"]}