{"version":3,"sources":["vue.change-ticket.js","kilroy.helpers.js"],"names":["kilroy","_dompurify","document","addEventListener","api","market","nodeId","successUrl","changeTicketForm","querySelector","receiptPage","getAttribute","Vue","use","VeeValidate","errorBagName","fieldsBagName","delay","locale","dictionary","strict","classes","classNames","touched","untouched","valid","invalid","pristine","dirty","events","inject","validity","aria","i18n","i18nRootKey","el","data","isFetching","passengers","dates","route","comment","confirm","showDates","showRoutes","calendars","type","bookingReference","mounted","this","initDatePicker","methods","addPassenger","push","removePassenger","index","splice","addDate","_this","nextTick","then","removeDate","_this2","switchTabs","_this3","showTips","event","element","error","tip","keyCode","parent","currentTarget","parentNode","activeElement","classList","contains","style","display","hideTips","flatpickr","minDate","dateFormat","validateAndSubmit","_this4","$validator","validateAll","result","submit","_this5","extraPassengers","length","firstname","firstName","lastname","lastName","routeObj","dateObj","phoneNumber","phone","email","changeTicketOrderType","routeChange","dateChanges","comments","cleanData","helpers","sanitizeObject","axios","method","url","response","status","window","location","href","concat","failed","getParameterByName","isFailed","_interopRequireDefault","require","obj","__esModule","default","_typeof","Symbol","iterator","constructor","prototype","key","DOMPurify","sanitize","init","getCookie","cname","name","ca","cookie","split","i","c","charAt","substring","indexOf","setCookie","cvalue","exdays","d","Date","expires","setTime","getTime","toUTCString","pushToDataLayer","eventName","pageCategory","buttonName","dataLayer","sourceUrl","initContactTrigger","contactSliderTrigger","querySelectorAll","contactSlider","stickyCtaButtons","overlay","x","remove","add","isElementInViewport","rect","getBoundingClientRect","top","left","bottom","innerHeight","documentElement","clientHeight","right","innerWidth","clientWidth","scrollStop","callback","isScrolling","clearTimeout","setTimeout","initFlightTrigger","flightSearchOpen","flightSearchSection","bookAFlightSearch","overlaysClose","setAttribute","SweetScroll","trigger","offset","header","newUrl","updateQueryString","history","replaceState","path","bodyScrollLock","disableBodyScroll","enableBodyScroll","decodeUri","arguments","undefined","replace","results","RegExp","exec","decodeURIComponent","value","hash","re","test","separator"],"mappings":"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","file":"changeTicket.min.js","sourcesContent":["'use strict'\n\nvar kilroy = kilroy || {}\ndocument.addEventListener('DOMContentLoaded', function () {\n var changeTicketForm = document.querySelector('#change-ticket-form')\n if (changeTicketForm) {\n const config = {\n errorBagName: 'errors', // change if property conflicts\n fieldsBagName: 'fields',\n delay: 0,\n locale: 'en',\n dictionary: null,\n strict: true,\n classes: true,\n classNames: {\n touched: 'touched', // the control has been blurred\n untouched: 'untouched', // the control hasn't been blurred\n valid: 'valid', // model is valid\n invalid: 'invalid', // model is invalid\n pristine: 'pristine', // control has not been interacted with\n dirty: 'dirty', // control has been interacted with\n },\n events: 'input|blur',\n inject: true,\n validity: false,\n aria: true,\n i18n: null, // the vue-i18n plugin instance\n i18nRootKey: 'validations', // the nested key under which the validation messsages will be located\n }\n\n const api = document.querySelector('#api').getAttribute('data-api')\n const market = document.querySelector('#market').getAttribute('data-market')\n const nodeId = document.querySelector('#nodeId').getAttribute('data-nodeId')\n const successUrl = document.querySelector('#successUrl').getAttribute('data-successUrl')\n\n Vue.use(VeeValidate, config)\n var changeTicketVue = new Vue({\n el: changeTicketForm,\n data: {\n isFetching : false,\n passengers: [{}],\n dates: [{}],\n route: {},\n comment: '',\n confirm: false,\n showDates: true,\n showRoutes: false,\n calendars: [],\n type: 'Date',\n bookingReference: '',\n },\n mounted() {\n this.initDatePicker()\n // this.initTermsOverlay();\n },\n methods: {\n addPassenger() {\n this.passengers.push({})\n },\n removePassenger(index) {\n this.passengers.splice(index, 1)\n },\n addDate() {\n this.dates.push({})\n Vue.nextTick()\n .then(() => {\n this.initDatePicker()\n })\n },\n removeDate(index) {\n this.dates.splice(index, 1)\n Vue.nextTick()\n .then(() => {\n this.initDatePicker()\n })\n },\n switchTabs() {\n if (this.showRoutes) {\n this.showDates = true\n this.showRoutes = false\n this.type = 'Date'\n } else {\n this.showDates = false\n this.showRoutes = true\n this.type = 'Route'\n }\n Vue.nextTick()\n .then(() => {\n this.initDatePicker()\n })\n },\n showTips(event) {\n //tab key\n if (event.keyCode == 9) {\n return\n }\n\n const element = event.currentTarget\n const parent = element.parentNode\n const error = parent.querySelector('.input-error')\n const tip = parent.querySelector('.input-tip')\n\n Vue.nextTick()\n .then(() => {\n if (document.activeElement === element) {\n if (element.classList.contains('invalid') && element.classList.contains('touched')) {\n error.style.display = 'block'\n tip.style.display = 'none'\n } else {\n tip.style.display = 'block'\n error.style.display = 'none'\n }\n }\n })\n\n },\n hideTips(event) {\n const element = event.currentTarget\n Vue.nextTick()\n .then(() => {\n // DOM updated\n const parent = element.parentNode\n const error = parent.querySelector('.input-error')\n const tip = parent.querySelector('.input-tip')\n error.style.display = 'none'\n tip.style.display = 'none'\n })\n\n },\n initDatePicker() {\n const self = this\n this.calendars = flatpickr('.js-datepicker:not(.flatpickr-input)', {\n minDate: 'today',\n dateFormat: \"d/m/Y\",\n // onChange: function (selectedDates, dateStr, instance) {\n // if (instance.input.classList.contains('newDate')) {\n // console.log('test');\n // const parent = instance.input.closest('.date');\n // parent.querySelector('.notEarlierDate')._flatpickr.config.maxDate = dateStr;\n // parent.querySelector('.notLaterDate')._flatpickr.config.minDate = dateStr;\n // }\n // },\n })\n },\n validateAndSubmit() {\n if ( this.isFetching ) return\n\n this.$validator.validateAll().then((result) => { \n if (result) {\n this.submit()\n }\n })\n },\n submit() {\n this.isFetching = true\n\n let extraPassengers = []\n for (let index = 1; index < this.passengers.length; index++) {\n const element = this.passengers[index]\n extraPassengers.push(\n {\n 'firstname': element.firstName,\n 'lastname': element.lastName,\n }\n )\n }\n\n const routeObj = this.showRoutes ? this.route : null\n const dateObj = this.showDates ? this.dates : null\n\n const data = {\n 'market': market,\n 'firstName': this.passengers[0].firstName,\n 'lastName': this.passengers[0].lastName,\n 'phoneNumber': this.passengers[0].phone,\n 'email': this.passengers[0].email,\n 'extraPassengers': extraPassengers,\n 'changeTicketOrderType': this.type,\n 'routeChange': routeObj,\n 'dateChanges': dateObj,\n 'comments': this.comment,\n 'nodeId': nodeId,\n 'bookingReference': this.bookingReference,\n \n }\n const cleanData = kilroy.helpers.sanitizeObject(data)\n\n \n axios({\n method: 'post',\n url: api,\n data: cleanData,\n }).then((response) => {\n if (response.status == 200) {\n window.location.href = successUrl\n } else {\n window.location.href = `${successUrl}?failed=true`\n }\n this.isFetching = false\n }).catch((error) => {\n // handle error\n this.isFetching = false\n window.location.href = `${successUrl}?failed=true`\n })\n },\n },\n })\n }\n\n const receiptPage = document.querySelector('#change-ticket-receipt')\n const failed = kilroy.helpers.getParameterByName('failed')\n if (receiptPage) {\n var receiptPagetVue = new Vue({\n el: receiptPage,\n data: {\n isFailed: failed === 'true' ? true : false,\n },\n })\n }\n})\n","'use strict'\n\nimport DOMPurify from \"dompurify\"\n\nvar kilroy = kilroy || {}\n\nkilroy.helpers = kilroy.helpers || {}\n\nkilroy.helpers.init = function () {\n}\n\n/* Cookie helper functions\n*******************************/\nkilroy.helpers.getCookie = function (cname) {\n var name = cname + \"=\"\n var ca = document.cookie.split(';')\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i]\n while (c.charAt(0) == ' ') { c = c.substring(1) }\n if (c.indexOf(name) === 0) { return c.substring(name.length, c.length) }\n }\n return \"\"\n}\n\nkilroy.helpers.setCookie = function (cname, cvalue, exdays) {\n var d = new Date()\n d.setTime(d.getTime() + (exdays * 60 * 60 * 1000 * 24))\n var expires = \"expires=\" + d.toUTCString() + \";\"\n var path = \"path=/\"\n document.cookie = cname + \"=\" + cvalue + \"; \" + expires + path\n}\n\n/* Google Tag Manager helper functions\n*******************************/\nkilroy.helpers.pushToDataLayer = function (eventName, pageCategory, buttonName) {\n window.dataLayer = window.dataLayer || []\n window.dataLayer.push({\n 'event': eventName,\n 'pageCategory': pageCategory,\n 'buttonName': buttonName,\n \"sourceUrl\": window.location.href,\n })\n}\n\nkilroy.helpers.initContactTrigger = () => {\n //Contact button fix\n var contactSliderTrigger = document.querySelectorAll('.js-contact-slider-trigger')\n var contactSlider = document.querySelector('.contact-slider')\n var stickyCtaButtons = document.querySelector('.contact-sticky-cta')\n var overlay = document.querySelector(\".overlay\")\n\n for (var x = 0; x < contactSliderTrigger.length; x++) {\n contactSliderTrigger[x].addEventListener('click', function () {\n\n stickyCtaButtons.classList.remove('contact-sticky-cta--show')\n stickyCtaButtons.classList.add('contact-sticky-cta--hide')\n contactSlider.classList.remove('contact-slider--hide')\n contactSlider.classList.add('contact-slider--show')\n overlay.classList.add(\"overlay--active\")\n\n })\n }\n}\n\nkilroy.helpers.isElementInViewport = (el) => {\n var rect = el.getBoundingClientRect()\n\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */\n rect.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */\n )\n}\n\nkilroy.helpers.scrollStop = (callback, element) => {\n\n // Make sure a valid callback was provided\n if (!callback || typeof callback !== 'function') { return }\n\n // Setup scrolling variable\n var isScrolling\n // Listen for scroll events\n element.addEventListener('scroll', function (event) {\n // Clear our timeout throughout the scroll\n window.clearTimeout(isScrolling)\n\n // Set a timeout to run after scrolling ends\n isScrolling = setTimeout(function () {\n\n // Run the callback\n callback()\n\n }, 66)\n\n }, false)\n\n}\nkilroy.helpers.initFlightTrigger = () => {\n //Flight button fix\n var flightSearchOpen = document.querySelectorAll(\".flight-search-trigger\")\n var flightSearchSection = document.querySelector(\".flight-search-section\")\n var bookAFlightSearch = document.querySelector('#book-a-flight-search-section')\n\n var overlay = document.querySelector(\".overlay\")\n var overlaysClose = document.querySelector(\".overlays-close\")\n\n if (bookAFlightSearch) {\n for (var i = 0; i < flightSearchOpen.length; i++) {\n flightSearchOpen[i].addEventListener(\"click\", function () {\n this.setAttribute('href', '#book-a-flight-search-section')\n var sweetScroll\n if (window.innerWidth < 992) {\n sweetScroll = new SweetScroll({\n trigger: '.flight-search-trigger',\n offset: 70,\n })\n } else {\n sweetScroll = new SweetScroll({\n trigger: '.flight-search-trigger',\n header: '.site-navigation',\n })\n }\n })\n }\n } else if (flightSearchSection) {\n for (var x = 0; x < flightSearchOpen.length; x++) {\n flightSearchOpen[x].addEventListener(\"click\", function () {\n var newUrl = kilroy.helpers.updateQueryString('flightsearchOverlay', true)\n window.history.replaceState({ path: newUrl }, '', newUrl)\n bodyScrollLock.disableBodyScroll()\n flightSearchSection.classList.add(\"flight-search-section--active\")\n setTimeout(() => {\n overlay.classList.add(\"overlay--active\")\n overlaysClose.classList.add('overlays-close--active')\n\n })\n })\n }\n if (kilroy.helpers.getParameterByName('flightsearchOverlay')) {\n flightSearchSection.classList.add(\"flight-search-section--active\")\n overlay.classList.add(\"overlay--active\")\n bodyScrollLock.disableBodyScroll()\n overlaysClose.classList.add('overlays-close--active')\n }\n\n //open the overlay when the back button in the browser is hit\n window.addEventListener('popstate', function () {\n if (kilroy.helpers.getParameterByName('flightsearchOverlay')) {\n flightSearchSection.classList.add(\"flight-search-section--active\")\n overlay.classList.add(\"overlay--active\")\n bodyScrollLock.disableBodyScroll()\n overlaysClose.classList.add('overlays-close--active')\n } else {\n flightSearchSection.classList.remove(\"flight-search-section--active\")\n overlay.classList.remove(\"overlay--active\")\n bodyScrollLock.enableBodyScroll()\n overlaysClose.classList.remove('overlays-close--active')\n }\n }, false)\n }\n}\n\nkilroy.helpers.getParameterByName = (name, url, decodeUri = true) => {\n if (!url) {\n url = window.location.href\n }\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\")\n var regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"),\n results = regex.exec(url)\n if (!results) {\n return ''\n }\n if (!results[2]) {\n return ''\n }\n if (decodeUri) {\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"))\n } else {\n return results[2]\n }\n}\n\nkilroy.helpers.updateQueryString = (key, value, url) => {\n if (!url) { url = window.location.href }\n var re = new RegExp(\"([?&])\" + key + \"=.*?(&|#|$)(.*)\", \"gi\"),\n hash\n\n if (re.test(url)) {\n if (typeof value !== 'undefined' && value !== null) {\n return url.replace(re, '$1' + key + \"=\" + value + '$2$3')\n }\n else {\n hash = url.split('#')\n url = hash[0].replace(re, '$1$3').replace(/(&|\\?)$/, '')\n if (typeof hash[1] !== 'undefined' && hash[1] !== null) {\n url += '#' + hash[1]\n }\n return url\n }\n }\n else {\n if (typeof value !== 'undefined' && value !== null) {\n var separator = url.indexOf('?') !== -1 ? '&' : '?'\n hash = url.split('#')\n url = hash[0] + separator + key + '=' + value\n if (typeof hash[1] !== 'undefined' && hash[1] !== null) {\n url += '#' + hash[1]\n }\n return url\n }\n else {\n return url\n }\n }\n}\n\nfunction sanitizeObject(obj) {\n // Iterate through the object properties\n for (const key in obj) {\n if (typeof obj[key] === 'string') {\n obj[key] = DOMPurify.sanitize(obj[key])\n } else if (typeof obj[key] === 'object' && obj[key] !== null) {\n // Recursively sanitize nested objects\n sanitizeObject(obj[key])\n }\n }\n return obj\n}\nkilroy.helpers.sanitizeObject = sanitizeObject"]}