{"version":3,"sources":["webpack:///../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./scripts/bookingform/BookingForm.js"],"names":["_arrayLikeToArray","arr","len","length","i","arr2","Array","_slicedToArray","isArray","_i","Symbol","iterator","_s","_e","_arr","_n","_d","call","next","done","push","value","err","unsupportedIterableToArray","TypeError","_unsupportedIterableToArray","o","minLen","n","Object","prototype","toString","slice","constructor","name","from","test","BookingForm","bookingForm","options","this","namespace","dataset","formNamespace","$bookingForm","$dateLabel","document","body","querySelector","$roomsLabel","$guestsLabel","$ageLabel","$destinationInput","$bookingDateInput","$roomsInput","$normalRoomInput","$suiteInput","$villaInput","$adultsInput","$childrenInput","$promoInput","$corpIdInput","$childAgeCol","$additionalTriggers","$additionalCols","querySelectorAll","$submitButton","APIService","formValues","hotelDetail","bookingDate","startDate","endDate","rooms","guests","adults","children","childrenAges","promoCode","corpId","otherAPIData","maxGuestInc","maxGuests","hotelType","dateFormat","settings","animationOptions","assign","ease","messageOptions","success","error","HTTPErrors","overlayLoading","additionalTl","showAdditional","events","endDateDefaultInc","defaultEndDateInc","init","initAPI","initTweens","formEvents","checkForm","maxGuestUpdater","addListeners","genericValueUpdate","getForm","API","cols","gsap","triggerIconClose","triggerIconOpen","colSpacing","parseInt","utilities","autoAlpha","y","marginBottom","display","scale","paused","to","duration","height","stagger","timeScale","play","reverse","forEach","p","remove","clearDropdownPanels","dropdown","createElement","classList","add","setAttribute","innerHTML","dpPanelContainer","list","key","appendChild","dropdownListItem","Dropdown","v","listItem","calcItem","calc","id","min","max","Calc","addEventListener","e","childAgeUpdate","removeChildAgeDropdown","dropdownTemplate","_updateChildAgeHtml","str","placeholder","placeholderAdult","placeholderChildren","agesArray","$roomSelects","$select","style","match","getAttribute","valid","findIndex","c","addLoader","formError","removeAttribute","maxGuestSetter","selectedId","onHotelSelect","_updateDateTitleHtml","_updateRoomsHtml","_updateRoomSelect","roomCount","setValue","update","maxAdults","maxChildren","detail","_updateGuestHtml","pop","addChildAgeDropdown","closeAllDropdowns","$loader","onComplete","getFetch","BOOK_A_STAY_HOTEL_SELECT_URL","data","hotel","maxoccupancy","updateDateOptions","maxSpan","maxnights","startingdate","_setMinDate","_setStartDate","_setEndDate","endingdate","Date","setDate","getDate","window","firstTracker","ga","getAll","get","preventDefault","SubmitData","Hotel","arrive","nights","Rooms","adult","child","childages","map","age","Rate","IATA","form","overflow","opacity","actionLink","trackerLink","BOOK_A_STAY_URL","method","action","BOOK_A_STAY_LOGGING_URL","post","entries","input","submit","dispatchEvent","$dd","panelClose","type","CustomEvent","bubbles","getValues","adultsUpdate","childrenUpdate","closeAdditionals","openAdditionals","onsubmit"],"mappings":"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","file":"js/650.2b6621a9f87a4d2f7146.bundle.js","sourcesContent":["export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]);\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import Dropdown from '../dropdown/Dropdown'\r\nimport Calc from '../calc-input/Calc'\r\nimport gsap from 'gsap/gsap-core'\r\nimport utilities from \"../common/utilities\"\r\nimport settings from \"../common/settings\"\r\nimport { API } from '@/scripts/common/api/api.services'\r\nimport {\r\n BOOK_A_STAY_URL,\r\n BOOK_A_STAY_HOTEL_SELECT_URL,\r\n BOOK_A_STAY_LOGGING_URL\r\n} from '@/scripts/config/api.config'\r\n\r\nexport class BookingForm {\r\n constructor(bookingForm, options) {\r\n this.namespace = bookingForm.dataset.formNamespace || null\r\n this.$bookingForm = bookingForm\r\n this.$dateLabel = document.body.querySelector(`#booking__label${this.namespace ? '--' + this.namespace : ''}`)\r\n this.$roomsLabel = document.body.querySelector(`#rooms__label${this.namespace ? '--' + this.namespace: ''}`)\r\n this.$guestsLabel = document.body.querySelector(`#guest__label${this.namespace ? '--' + this.namespace : ''}`)\r\n this.$ageLabel = document.body.querySelector(`#age__label${this.namespace ? '--' + this.namespace : ''}`)\r\n this.$destinationInput = this.$bookingForm.querySelector('input[name=\"destination\"]')\r\n this.$bookingDateInput = document.body.querySelector(`#booking__daterange${this.namespace ? '--' + this.namespace : ''}`)\r\n this.$roomsInput = document.body.querySelector(`#rooms-form${this.namespace ? '--' + this.namespace : ''}`)\r\n\r\n this.$normalRoomInput = this.$bookingForm.querySelector('.dropdown--rooms')\r\n this.$suiteInput = this.$bookingForm.querySelector('.dropdown--bedroomsuite')\r\n this.$villaInput = this.$bookingForm.querySelector('.dropdown--bedroomvilla')\r\n\r\n this.$adultsInput = document.body.querySelector(`#adults-count-form${this.namespace ? '--' + this.namespace : ''}`)\r\n this.$childrenInput = document.body.querySelector(`#children-count-form${this.namespace ? '--' + this.namespace : ''}`)\r\n this.$promoInput = this.$bookingForm.querySelector('input[name=\"promo\"]')\r\n this.$corpIdInput = this.$bookingForm.querySelector('input[name=\"corpId\"]')\r\n this.$childAgeCol = this.$bookingForm.querySelector('.col--age')\r\n this.$additionalTriggers = this.$bookingForm.querySelector('.additional-info__trigger')\r\n this.$additionalCols = this.$bookingForm.querySelectorAll('.additional-col')\r\n this.$submitButton = this.$bookingForm.querySelector('button[type=\"submit\"]')\r\n\r\n this.APIService = null\r\n\r\n this.formValues = {\r\n hotelDetail: null,\r\n bookingDate: {\r\n startDate: null,\r\n endDate: null\r\n },\r\n rooms: 0,\r\n guests: {\r\n adults: 0,\r\n children: 0,\r\n childrenAges: []\r\n },\r\n promoCode: '',\r\n corpId: ''\r\n }\r\n\r\n this.otherAPIData = {}\r\n\r\n this.maxGuestInc = 4\r\n this.maxGuests = this.maxGuestInc * this.$roomsInput.value\r\n\r\n this.hotelType = 0\r\n\r\n this.dateFormat = settings.dateAPIFormat\r\n this.animationOptions = Object.assign({\r\n ease: 'power2.inOut'\r\n }, options && options.animationOptions)\r\n this.messageOptions = Object.assign({\r\n success: 'Success!',\r\n error: 'Something Went Wrong!'\r\n }, options && options.messageOptions)\r\n this.HTTPErrors = null\r\n\r\n this.overlayLoading = false\r\n\r\n this.additionalTl = null\r\n this.showAdditional = false\r\n this.events = {}\r\n\r\n this.endDateDefaultInc = this.$bookingForm.dataset.defaultEndDateInc || 2\r\n\r\n this.init()\r\n }\r\n\r\n init() {\r\n\r\n this.initAPI()\r\n this.initTweens()\r\n this.formEvents()\r\n this.checkForm()\r\n this.maxGuestUpdater()\r\n this.addListeners()\r\n this.genericValueUpdate()\r\n this.$bookingForm.getForm = () => this\r\n }\r\n\r\n // setData(msg) {\r\n // console.log(msg)\r\n // }\r\n\r\n initAPI() {\r\n this.APIService = new API.Controller()\r\n \r\n }\r\n\r\n initTweens() {\r\n const cols = gsap.utils.toArray(this.$additionalCols)\r\n const triggerIconClose = this.$additionalTriggers.querySelector('.icon-svg--close')\r\n const triggerIconOpen = this.$additionalTriggers.querySelector('.icon-svg--open')\r\n const colSpacing = parseInt(utilities.getStyle(cols[0], 'margin-bottom'), 10)\r\n gsap.set(cols, { autoAlpha: 0, y: -20, marginBottom: 0 })\r\n gsap.set(triggerIconClose, { display: 'block', scale: 1, autoAlpha: 1 })\r\n\r\n this.additionalTl = gsap.timeline({ paused: true })\r\n .to(cols, {\r\n duration: 0.3,\r\n height: 'auto',\r\n autoAlpha: 1,\r\n stagger: 0.05,\r\n marginBottom: colSpacing,\r\n y: 0\r\n })\r\n .to(triggerIconOpen, {\r\n scale: 0,\r\n autoAlpha: 0,\r\n duration: 0.2,\r\n display: 'none'\r\n })\r\n .from(triggerIconClose, {\r\n scale: 0,\r\n autoAlpha: 0,\r\n duration: 0.2,\r\n display: 'none'\r\n })\r\n }\r\n\r\n openAdditionals() {\r\n const cols = gsap.utils.toArray(this.$additionalCols)\r\n this.showAdditional = true\r\n this.additionalTl.timeScale(1).play()\r\n }\r\n\r\n closeAdditionals() {\r\n const cols = gsap.utils.toArray(this.$additionalCols)\r\n this.showAdditional = false\r\n this.additionalTl.timeScale(1.5).reverse()\r\n }\r\n\r\n clearDropdownPanels() {\r\n const childAgeDropDownPanels = document.body.querySelectorAll('.dropdown__panel--children-age')\r\n childAgeDropDownPanels.forEach(p => p.remove())\r\n }\r\n\r\n // Templates\r\n dropdownTemplate() {\r\n this.clearDropdownPanels()\r\n const dropdown = document.createElement('div')\r\n dropdown.classList.add(\"dropdown\", \"dropdown--age\")\r\n dropdown.setAttribute('data-panel-append', 'body')\r\n dropdown.setAttribute('data-backdrop', 'mobile')\r\n dropdown.setAttribute('data-panel-mobile', 'bottom')\r\n dropdown.setAttribute('data-panel-mobile-header', 'Children Ages')\r\n\r\n const dpTpl = `
Children age * \r\n \r\n \r\n
\r\n
`\r\n\r\n dropdown.innerHTML = dpTpl\r\n const dpPanel = dropdown.querySelector('.dropdown__panel')\r\n const dpPanelContainer = dropdown.querySelector('.dropdown__panel-container')\r\n const list = document.createElement('div')\r\n list.classList.add('dropdown__list')\r\n\r\n for (const key in this.formValues.guests.childrenAges) {\r\n list.appendChild(this.dropdownListItem(parseInt(key) + 1, this.formValues.guests.childrenAges[key]))\r\n }\r\n\r\n dpPanelContainer.appendChild(list)\r\n\r\n this.$ageLabel = dropdown.querySelector('#age__label')\r\n new Dropdown(dropdown).init() // Init dropdown\r\n return dropdown\r\n }\r\n\r\n dropdownListItem(i, v) {\r\n const listItem = document.createElement('div')\r\n listItem.classList.add(\"dropdown__list-item\")\r\n listItem.innerHTML = `
Child ${i}\r\n \r\n \r\n
`\r\n listItem.querySelector('.tile__action').appendChild(this.calcItem(i, v))\r\n\r\n return listItem\r\n }\r\n\r\n calcItem(i, v) {\r\n const calc = document.createElement('div')\r\n calc.classList.add(\"calc\")\r\n calc.id = `child-age-form-${i}`\r\n calc.dataset.min = 0\r\n calc.dataset.max = 12\r\n calc.innerHTML = `
\r\n \r\n
`\r\n new Calc(calc) // Init calc\r\n calc.addEventListener(\"valueUpdated\", (e) => this.childAgeUpdate(i, e))\r\n return calc\r\n }\r\n\r\n // remove childage col\r\n removeChildAgeDropdown() {\r\n this.$bookingForm.querySelector('.dropdown--age') && this.$bookingForm.querySelector('.dropdown--age').remove()\r\n }\r\n // add child age col\r\n addChildAgeDropdown() {\r\n this.removeChildAgeDropdown()\r\n if (this.formValues.guests.children < 1) return\r\n this.$childAgeCol.appendChild(this.dropdownTemplate())\r\n this._updateChildAgeHtml()\r\n }\r\n\r\n // Htmls updates\r\n _updateDateTitleHtml() {\r\n let str = ''\r\n str = (this.formValues.bookingDate.startDate && this.formValues.bookingDate.endDate) ? `${this.formValues.bookingDate.startDate} - ${this.formValues.bookingDate.endDate}` : ''\r\n this.$dateLabel.innerHTML = str ? str : this.$dateLabel.dataset.placeholder || 'Check in - Check out *'\r\n }\r\n\r\n _updateRoomsHtml() {\r\n let str = ''\r\n const rooms = this.formValues.rooms\r\n if (rooms) {\r\n str += rooms > 1 ? this.$roomsLabel.dataset.placeholder || 'Rooms' : this.$roomsLabel.dataset.placeholder || 'Room'\r\n str += `: ${rooms}`\r\n }\r\n\r\n if (str) {\r\n this.$roomsLabel.innerHTML = `${str}`\r\n } else {\r\n this.$roomsLabel.innerHTML = this.$roomsLabel.dataset.placeholder || `Rooms *`\r\n }\r\n }\r\n\r\n _updateGuestHtml() {\r\n let str = ''\r\n const adults = this.formValues.guests.adults\r\n const children = this.formValues.guests.children\r\n\r\n if (adults) {\r\n str += `${adults}`\r\n str += adults > 1 ? this.$guestsLabel.dataset.placeholderAdult || ' Adults' : this.$guestsLabel.dataset.placeholderAdult || ' Adult'\r\n }\r\n\r\n if (children) {\r\n str += adults ? ', ' : ''\r\n str += `${children}`\r\n str += children > 1 ? this.$guestsLabel.dataset.placeholderChildren || ' Childrens' : this.$guestsLabel.dataset.placeholderChildren || ' Children'\r\n }\r\n\r\n if (str) {\r\n this.$guestsLabel.innerHTML = `${str}`\r\n } else {\r\n this.$guestsLabel.innerHTML = this.$guestsLabel.dataset.placeholder || `Guests *`\r\n }\r\n }\r\n\r\n _updateChildAgeHtml() {\r\n let str = ''\r\n const agesArray = this.formValues.guests.childrenAges\r\n agesArray.forEach((v, i) => {\r\n if (i === 0) str += `${this.$ageLabel.dataset.placeholder || 'Children Age'} : `\r\n str += `${v}`\r\n if (i !== agesArray.length - 1) str += `, `\r\n })\r\n\r\n this.$ageLabel.innerHTML = str\r\n }\r\n\r\n _updateRoomSelect() {\r\n const $roomSelects = [this.$normalRoomInput, this.$suiteInput, this.$villaInput]\r\n $roomSelects.forEach(($select) => $select.style.display = 'none')\r\n\r\n switch(parseInt(this.hotelType)) {\r\n case 0:\r\n $roomSelects[0].style.display = 'block'\r\n break \r\n case 1:\r\n $roomSelects[1].style.display = 'block'\r\n break \r\n case 2:\r\n $roomSelects[2].style.display = 'block'\r\n break \r\n }\r\n }\r\n\r\n // Checkers and validators\r\n formError() {\r\n\r\n return this.formValues.hotelDetail === '' ||\r\n (this.formValues.hotelDetail && this.formValues.hotelDetail.match(/^\\s*$/) !== null) ||\r\n (this.$destinationInput && this.$destinationInput.getAttribute('type')!== 'hidden' && !this.$destinationInput.valid) ||\r\n this.formValues.bookingDate.startDate === null ||\r\n this.formValues.bookingDate.endDate === null ||\r\n !this.formValues.rooms ||\r\n this.formValues.guests.adults === 0 ||\r\n this.formValues.guests.adults < this.formValues.rooms ||\r\n (this.formValues.guests.childrenAges.length && this.formValues.guests.childrenAges.findIndex(c => c === 0) !== -1)\r\n }\r\n\r\n checkForm() {\r\n this.addLoader()\r\n if (!this.formError()) {\r\n this.$bookingForm.classList.add('booking-form--success')\r\n this.$submitButton.removeAttribute(\"disabled\")\r\n } else {\r\n this.$bookingForm.classList.remove('booking-form--success')\r\n this.$submitButton.setAttribute(\"disabled\", \"\")\r\n }\r\n }\r\n // Updates\r\n // Normal value update\r\n genericValueUpdate(e) {\r\n if (this.$roomsInput.value && (this.$roomsInput.value !== this.formValues.rooms)) this.maxGuestSetter()\r\n if(this.hotelType === 1 && (this.$suiteInput.value !== this.formValues.rooms)) {\r\n if(parseInt(this.$suiteInput.value) === 1) this.maxGuestInc = 5\r\n if(parseInt(this.$suiteInput.value) === 2) this.maxGuestInc = 9\r\n this.maxGuestSetter()\r\n } \r\n if(this.hotelType === 2 && (this.$villaInput.value !== this.formValues.rooms)) {\r\n if(this.$villaInput.value === 'VLA,VLB') this.maxGuestInc = 7\r\n if(this.$villaInput.value === 'VLC,VLD') this.maxGuestInc = 9\r\n this.maxGuestSetter()\r\n }\r\n if (this.$destinationInput && this.$destinationInput.dataset.selectedId && this.$destinationInput.dataset.selectedId !== this.formValues.hotelDetail)\r\n this.onHotelSelect()\r\n\r\n this.formValues = Object.assign(this.formValues, {\r\n hotelDetail: this.$destinationInput && this.$destinationInput.dataset.selectedId,\r\n bookingDate: {\r\n startDate: this.$bookingDateInput.startDate || null,\r\n endDate: this.$bookingDateInput.endDate && this.$bookingDateInput.endDate !== this.$bookingDateInput.startDate ? this.$bookingDateInput.endDate : null\r\n },\r\n //rooms: this.$roomsInput.value,\r\n promoCode: this.$promoInput.value,\r\n corpId: this.$corpIdInput.value\r\n })\r\n\r\n if(this.hotelType === 0) {\r\n this.formValues.rooms = this.$roomsInput.value\r\n }\r\n\r\n if(this.hotelType === 1) {\r\n this.formValues.rooms = this.$suiteInput.value\r\n }\r\n\r\n if(this.hotelType === 2) {\r\n this.formValues.rooms = this.$villaInput.value\r\n }\r\n\r\n this._updateDateTitleHtml() // Updating title html for Date\r\n this._updateRoomsHtml() // Updating title html for rooms\r\n this._updateRoomSelect() // Updating select type\r\n this.checkForm() // check form\r\n }\r\n // Max Guest setters\r\n maxGuestSetter() {\r\n const roomCount = this.hotelType === 0 ? this.$roomsInput.value : 1\r\n this.maxGuests = this.maxGuestInc * roomCount\r\n this.$childrenInput.setValue(0)\r\n\r\n this.$adultsInput.update({\r\n min: roomCount\r\n })\r\n this.$adultsInput.setValue(roomCount === 1 ? 2 : roomCount)\r\n\r\n this.formValues.guests.childrenAges = []\r\n }\r\n // Guest Updater\r\n maxGuestUpdater() {\r\n const maxAdults = this.maxGuests - this.$childrenInput.value\r\n const maxChildren = this.maxGuests - this.$adultsInput.value\r\n this.$adultsInput.update({\r\n max: maxAdults\r\n })\r\n\r\n this.$childrenInput.update({\r\n max: maxChildren\r\n })\r\n\r\n }\r\n\r\n // Update for adult calc\r\n adultsUpdate(e) {\r\n this.maxGuestUpdater()\r\n this.formValues.guests.adults = e.detail.value()\r\n this._updateGuestHtml() // Updating title html for Guest\r\n this.checkForm() // Check form\r\n }\r\n\r\n // Update for children calc\r\n childrenUpdate(e) {\r\n this.maxGuestUpdater()\r\n // Pop or push to children age array depending on children number\r\n if (e.detail.value() !== this.formValues.guests.children) {\r\n if (e.detail.value() < this.formValues.guests.children) {\r\n this.formValues.guests.childrenAges.pop()\r\n } else {\r\n this.formValues.guests.childrenAges.push(0)\r\n }\r\n }\r\n\r\n this.formValues.guests.children = e.detail.value()\r\n this._updateGuestHtml() // Updating title html for Guest\r\n this.addChildAgeDropdown() // adding drop down based on number of childrens\r\n this.checkForm() // Check form\r\n }\r\n\r\n // Update for children generated age\r\n childAgeUpdate(i, e) {\r\n this.formValues.guests.childrenAges[i - 1] = e.detail.value()\r\n this._updateChildAgeHtml()\r\n this.checkForm() // Check form\r\n }\r\n\r\n // Loaders\r\n addLoader() {\r\n const loading = this.overlayLoading\r\n if (!loading) {\r\n const $loader = this.$bookingForm.querySelector('.overlay-loader')\r\n if ($loader)\r\n gsap.to($loader, {\r\n autoAlpha: 0,\r\n display: 'none',\r\n onComplete() {\r\n $loader.remove()\r\n }\r\n })\r\n return\r\n }\r\n if (this.$bookingForm.querySelector('.overlay-loader')) this.$bookingForm.querySelector('.overlay-loader').remove()\r\n this.closeAllDropdowns()\r\n const $loader = document.createElement('div')\r\n $loader.classList.add('overlay-loader', 'bg-gray-lighter--faded')\r\n $loader.innerHTML = ``\r\n gsap.from($loader, {\r\n autoAlpha: 0\r\n })\r\n\r\n if ($loader) this.$bookingForm.appendChild($loader)\r\n }\r\n\r\n // On Hotel Select\r\n async onHotelSelect() {\r\n \r\n if (this.overlayLoading) return\r\n this.otherAPIData = {}\r\n this.overlayLoading = true\r\n const data = await this.APIService.getFetch(`${BOOK_A_STAY_HOTEL_SELECT_URL}?hotelId=${this.$destinationInput.dataset.selectedId}&langId=${settings.locale}`)\r\n Object.assign(this.otherAPIData, {\r\n ...data.hotel\r\n })\r\n if (data.settings.maxoccupancy) {\r\n this.maxGuestInc = data.settings.maxoccupancy\r\n this.$roomsInput.setValue(1) // To Update room value set to 1\r\n } else {\r\n this.maxGuestInc = 4\r\n }\r\n this.$bookingDateInput.updateDateOptions({\r\n maxSpan: {\r\n \"days\": data.settings.maxnights || 120\r\n }\r\n })\r\n if(data.settings.startingdate)\r\n this.$bookingDateInput._setMinDate(data.settings.startingdate)\r\n ._setStartDate(data.settings.startingdate)\r\n ._setEndDate( data.settings.endingdate || new Date (new Date(data.settings.startingdate).setDate(new Date(data.settings.startingdate).getDate() + parseInt(this.endDateDefaultInc))) )\r\n \r\n this.hotelType = data.settings.hotelType || 0\r\n this.$roomsInput.setValue(1) // To reset rooms value\r\n this.$suiteInput.setValue(1) // To Reset Suite value\r\n this.$villaInput.setValue('VLA,VLB') // To Reset Villa value\r\n this.overlayLoading = false\r\n this._updateRoomSelect() // For select for different type of hotels\r\n this.checkForm()\r\n \r\n }\r\n\r\n trackerLink() {\r\n if (typeof(window[\"ga\"]) !== \"undefined\") {\r\n var firstTracker = ga.getAll()[0]\r\n if (firstTracker) return firstTracker.get(\"linkerParam\")\r\n }\r\n\r\n return false\r\n }\r\n\r\n // On form Submit\r\n async onsubmit(e) {\r\n e.preventDefault()\r\n this.HTTPErrors = null\r\n // Rooms string => Rooms dropdown selected value\r\n // dest string => if it returns as Get SynxisPost Data api response\r\n // hotellist string => if it returns as Get SynxisPost Data api response\r\n // Hotel string => if it returns as Get SynxisPost Data api response\r\n // start string => if it returns as Get SynxisPost Data api response\r\n // arrive string => Datepicker value\r\n // adult string => Adults dropdown selected value\r\n // child string => Children dropdown selected value\r\n // nights string => Nights dropdown selected value\r\n // childages string => Child Ages dropdown selected value (by separated by comma)\r\n // locale string => if it returns as Get SynxisPost Data api response\r\n // Rate string => Promotion Code textbox value\r\n // room string => if it returns as Get SynxisPost Data api response\r\n // IATA string => IATA textbox value\r\n // template string => if it returns as Get SynxisPost Data api response\r\n // session string => if it returns as Get SynxisPost Data api response\r\n\r\n if (!this.formError()) {\r\n this.$submitButton.classList.add('btn-loading')\r\n const SubmitData = {\r\n Hotel: this.formValues.Hotel,\r\n arrive: `${utilities.formatDateForApi(this.formValues.bookingDate.startDate)}`,\r\n nights: utilities.noOfDays(this.formValues.bookingDate.startDate, this.formValues.bookingDate.endDate),\r\n Rooms: this.formValues.rooms,\r\n adult: this.formValues.guests['adults'],\r\n child: this.formValues.guests['children'],\r\n childages: `${this.formValues.guests.childrenAges.map((age, i) => age)}`, // same as Array.join(',')\r\n Rate: this.formValues.promoCode,\r\n IATA: this.formValues.corpId,\r\n ...this.otherAPIData\r\n }\r\n\r\n const form = document.createElement(\"form\")\r\n\r\n Object.assign(form.style, {\r\n overflow: 'hidden',\r\n height: 0,\r\n opacity: 0\r\n })\r\n \r\n const actionLink = !this.trackerLink() ? BOOK_A_STAY_URL : `${BOOK_A_STAY_URL}&${this.trackerLink()}`\r\n form.method = \"POST\"\r\n form.action = actionLink\r\n\r\n if(BOOK_A_STAY_LOGGING_URL) {\r\n this.APIService.post(BOOK_A_STAY_LOGGING_URL, {\r\n \"book_url\": actionLink,\r\n \"form_data\": SubmitData\r\n })\r\n }\r\n\r\n for (const [key, value] of Object.entries(SubmitData)) {\r\n const input = document.createElement(\"input\")\r\n input.value = value\r\n input.name = key\r\n form.appendChild(input)\r\n }\r\n document.body.appendChild(form);\r\n form.submit()\r\n return\r\n }\r\n\r\n this.$bookingForm.dispatchEvent(this.events['error'])\r\n }\r\n\r\n // Utils\r\n // Close Dropdowns\r\n closeAllDropdowns() {\r\n const $dds = this.$bookingForm.querySelectorAll('.dropdown')\r\n $dds.forEach($dd => $dd.panelClose())\r\n }\r\n\r\n // Events\r\n formEvents(type) {\r\n this.events['success'] = new CustomEvent('formSuccess', {\r\n bubbles: false,\r\n detail: {\r\n getValues: () => this.formValues\r\n }\r\n })\r\n\r\n this.events['error'] = new CustomEvent('formError', {\r\n bubbles: false,\r\n detail: {\r\n error: () => 'Form has errors!'\r\n }\r\n })\r\n }\r\n\r\n // Event Listeners\r\n addListeners() {\r\n this.$adultsInput.addEventListener(\"valueUpdated\", (e) => this.adultsUpdate(e))\r\n this.$childrenInput.addEventListener(\"valueUpdated\", (e) => this.childrenUpdate(e))\r\n\r\n this.$bookingDateInput.addEventListener('dateUpdated', (e) => this.genericValueUpdate())\r\n if (this.$destinationInput) this.$destinationInput.addEventListener(\"change\", () => this.genericValueUpdate())\r\n this.$roomsInput.addEventListener(\"valueUpdated\", () => this.genericValueUpdate())\r\n this.$suiteInput.addEventListener(\"select\", () => this.genericValueUpdate())\r\n this.$villaInput.addEventListener(\"select\", () => this.genericValueUpdate())\r\n this.$promoInput.addEventListener(\"change\", () => this.genericValueUpdate())\r\n this.$corpIdInput.addEventListener(\"change\", () => this.genericValueUpdate())\r\n\r\n this.$additionalTriggers.addEventListener(\"click\", (e) => {\r\n e.preventDefault()\r\n !this.showAdditional ? this.openAdditionals() : this.closeAdditionals()\r\n })\r\n\r\n this.$bookingForm.addEventListener(\"submit\", (e) => this.onsubmit(e))\r\n }\r\n\r\n}"],"sourceRoot":""}