{"version":3,"sources":["webpack:///./app/util/getQueryValue.js","webpack:///./app/components/react/Navigation/Searchbar/layouts/full-width.js","webpack:///./app/components/react/Navigation/Searchbar/includes/hidden-values.js","webpack:///./app/components/react/Navigation/Searchbar/includes/show-other-dates.js","webpack:///./app/components/react/Navigation/Searchbar/layouts/sidebar.js","webpack:///./app/components/react/Navigation/Searchbar/index.js","webpack:///./app/components/render/Navigation/SearchBar.js","webpack:///./app/components/react/Navigation/Searchbar/includes/direct.js","webpack:///./app/components/react/Navigation/Searchbar/includes/invalid-dates.js","webpack:///./app/components/react/Navigation/Searchbar/includes/child-message.js","webpack:///./app/components/react/Navigation/Searchbar/includes/submit-button.js","webpack:///./app/components/react/Navigation/Searchbar/includes/room-list.js","webpack:///./app/components/react/Navigation/Searchbar/includes/room-number.js","webpack:///./app/components/react/Navigation/Searchbar/includes/airports.js","webpack:///./app/components/react/Navigation/Searchbar/includes/self-travel.js","webpack:///./app/components/react/Navigation/Searchbar/includes/duration.js","webpack:///./app/components/react/Navigation/Searchbar/includes/calendar.js"],"names":["key","defaultValue","arguments","length","undefined","query","window","location","search","params","URLSearchParams","has","get","__webpack_require__","FullWidth","props","_this2","this","_classCallCheck","_this","_possibleConstructorReturn","__proto__","Object","getPrototypeOf","call","initMultiCenterSearch","_asyncToGenerator","regeneratorRuntime","mark","_callee","_ref2","MultiCenterSearch","wrap","_context","prev","next","e","then","module","__esModule","assign","default","sent","setState","multiCenterSearchComponent","stop","onTabClick","tabName","changeTab","state","React","Component","selectedTab","_this3","_react2","createElement","className","hidden","data-toggle","onClick","labels","method","action","searchURL","ref","el","setFormRef","_Typeahead2","placeholder","Location","geoData","geo","update","updateRegion","errorMsg","activeRegion","_calendar2","handleCalendarToggle","handleDate","onFocusChange","shouldErrorBeShown","isDayBlocked","initialVisibleMonth","maxCalendarMonths","fakedateStartText","startDate","focused","isMobile","datepickerClass","handleShowOtherDates","showOtherDates","componentIdentifier","showOtherDatesLabel","isCalendarActive","_duration2","handleDurationChange","availableDurations","duration","_invalidDates2","_airports2","handleAirportChange","airports","airport","selfTravel","airportDisplayName","_submitButton2","isSubmitDisabled","isFullWidth","_selfTravel2","handleSelfTravel","type","id","name","value","checked","_direct2","handleDirect","dictionary","direct","_roomNumber2","handleRoomSizeChange","options","rooms","validOccupancy","validMaxNumberOfInfants","_roomList2","handleOccupancy","occupancy","ChildAges","showInfants","childRange","_childMessage2","childCount","recentSearches","event","toggleHandler","showRecentSearch","map","searchIndex","href","url","resort","replace","region","moment","date","format","departureAirport","Math","floor","getTotalAdultsString","getTotalChildrenString","getTotalInfantsString","updateSelectedTags","handleMultiCentreSearch","inspirationTags","showWhoValidation","showWhatValidation","showWhenValidation","_ref","selectedLocation","hotelCode","readOnly","Region","data-element","Resort","ArrivalAirports","AirportCode","GeoLocationName","show","onChange","htmlFor","_hiddenValues2","_breakpoints","_emptyHelpers","_dictionary","Searchbar","target","formRef","submit","querySelector","addEventListener","handleSubmit","preventDefault","destination","querySelectorAll","forEach","classList","remove","numberOfNights","occupancyCount","currency","typeAhead","resorts","activeResort","maxNumNights","roomLimit","adultLimit","_getQueryValue2","childLimit","infantLimit","defaultChildAge","dateRange","Adults","Children","Departure","Direct Flights","Duration Fllexibility","DurationDate","Infants","Search","Invalid Dates Error","Child Message Advice","Children Age Message","Max number of PAX error","Max number of Infants error","dateError","hasSearched","searchParams","StartDate","Duration","Airport","Occupancy","ages","endDate","calendarActive","viewportOffsetTop","displayTypeaheadError","selectedLocationDates","hasLoaded","dataError","bind","getTotalOccupancy","daydiff","parseDate","isOutsideRange","displayError","whoIds","whatIds","whenIds","WhoTags","element","selected","push","Id","WhatTags","WhenTags","context","scrollIntoView","inspirationResultsPage","join","newAirportOrder","airportOrder","airportOrderItem","index","splice","concat","sort","sortAirports","a","b","AirportName","seasonDates","isNotNullOrEmptyArray","seasonFromDate","FromDate","seasonToDate","ToDate","isBetween","sortedSeasonDates","handleSeasonDates","compare","JSON","parse","stringify","find","item","validationEls","contains","add","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","done","err","return","count","i","parseInt","_this4","searchbarData","dataset","componentLabel","limits","componentMetadata","data","componentGeogrpahydata","errorMessage","componentErrorMessage","componentInspirationMetadata","componentInspirationResultsPage","isCollection","componentIsCollection","relatedCollection","componentRelatedCollection","currentDestination","componentCurrentDestination","componentAirportOrder","tag","TagName","toLowerCase","DepartureAirports","LocationSeasonDates","_state","_extends","searchObj","queryString","substring","isNotNullOrWhitespace","room0adults","selftravel","geoLocationName","x","keys","includes","currentSearch","buildForm","document","travelinkLocation","split","pop","trim","sortedAirports","childArray","MinChildAge","MaxChildAge","innerWidth","tabletBreakpoint","MinNumberOfNights","MaxNumberOfNights","object","Value","Name","MaxRooms","MaxNumberOfAdults","MaxNumberOfChilds","MaxNumberOfInfants","ShowInfants","DefaultChildAge","MaxCalendarMonths","SearchResultPage","input","childAges","adults","children","infants","childIndex","query_string","lets","pair","decodeURIComponent","arr","str","mdy","Date","first","second","_this5","storage","localStorage","getItem","reverse","storageJSON","styles","getComputedStyle","minHeight","style","getDictionary","random","getGeoData","route","getText","limit","selectedValue","property","check","newValue","validateInfants","availableDayFirst","availableDayLast","getElementById","blockedDayFirst","blockedDayLast","blockDates","isDateBlocked","today","monthsFromToday","clone","firstFromDate","firstToDate","firstAvailableDate","autoClose","isValid","body","documentElement","header","scrollBy","stopPropagation","stickyBanner","getBoundingClientRect","top","setTimeout","activateNoScroll","scrollContainer","scrollTop","userAgent","iPhone","match","Mac","iPod","iOS","display","tagList","recentSearch","totalAdults","Number","totalChildren","totalInfants","class","clientWidth","isAirportValid","isAppleSafari","navigator","startDateString","_sidebar2","setSelfTravel","_fullWidth2","_class","init","ReactDOM","render","_Searchbar2","checkboxClass","disabled","country","child","cIndex","age","ageIndex","aria-hidden","_CustomSelect2","inputId","_SelectBox2","inputName","values","_react","Calendar","toggleCalender","SingleDatePicker","singleDatePicker","pageFirstLoad","handleTextDateInput","textDate","inputDate","_moment2","dateFormat","isAfter","setCustomValidity","checkValidity","handleCalendarSelect","copyWeekHeaders","weekHeaders","monthElements","month","weekHeaderClone","cloneNode","marginLeft","appendChild","singleDatePickerLoaded","_props","formattedDate","isUnderTablet","shouldShowCheckbox","pattern","onDateChange","hideKeyboardShortcutsPanel","orientation","displayFormat","showDefaultInputIcon","numberOfMonths","renderCalendarInfo","_showOtherDates2","xmlns","viewBox","d"],"mappings":"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","file":"SearchBarRender.js","sourcesContent":["export default function getQueryValue(key, defaultValue = false) {\r\n if (!key) return defaultValue;\r\n const query = window.location.search;\r\n if (!query) return defaultValue;\r\n const params = new URLSearchParams(query);\r\n return params.has(key) ? params.get(key) : defaultValue;\r\n}","import React from 'react';\r\n\r\n// Import all components used in the full width view\r\nimport Calendar from '../includes/calendar';\r\nimport Duration from '../includes/duration';\r\nimport SelfTravel from '../includes/self-travel';\r\nimport Airports from '../includes/airports';\r\nimport RoomNumber from '../includes/room-number';\r\nimport RoomList from '../includes/room-list';\r\nimport SubmitButton from '../includes/submit-button';\r\nimport ChildMessage from '../includes/child-message';\r\nimport InvalidDates from '../includes/invalid-dates';\r\nimport TypeaheadSearch from '../../../Atoms/Typeahead';\r\nimport Direct from '../includes/direct';\r\n\r\nexport default class FullWidth extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n multiCenterSearchComponent: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.selectedTab === 'multicentre') {\r\n this.onTabClick('multicentre');\r\n }\r\n }\r\n\r\n initMultiCenterSearch = async () => {\r\n const { default: MultiCenterSearch } = await import(/* webpackChunkName: \"MultiCenterSearch\" */ '../includes/multi-center-search');\r\n this.setState({\r\n multiCenterSearchComponent: MultiCenterSearch\r\n });\r\n }\r\n\r\n onTabClick = (tabName) => {\r\n if (tabName === 'multicentre') {\r\n this.initMultiCenterSearch();\r\n this.props.changeTab(\"multicentre\");\r\n } else {\r\n this.props.changeTab(\"search\");\r\n }\r\n }\r\n\r\n render() {\r\n const { multiCenterSearchComponent: MultiCenterSearch } = this.state;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
    \r\n
  • this.onTabClick(\"search\")}>{this.props.labels[\"Hotel Search Tab\"]}
  • \r\n
  • this.onTabClick(\"multicentre\")}>{this.props.labels[\"Multi Centre Search Tab\"]}
  • \r\n
\r\n
\r\n
\r\n {this.props.selectedTab === \"search\" &&\r\n
\r\n
\r\n
this.props.setFormRef(el)}>\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n {/*\r\n Special input to pull from the checkbox in the calendar\r\n As this form submits to the querystring, the input value\r\n from the calendar doesn't get pulled through, so we\r\n inject it into this hidden input. This is a text input\r\n because checkboxes don't add to the querystring if they\r\n are off, which is needed here\r\n */}\r\n \r\n
\r\n \r\n
\r\n
\r\n {!this.props.isSubmitDisabled && [\r\n \r\n ,
\r\n \r\n
\r\n ]}\r\n
\r\n
\r\n \r\n {this.props.recentSearches.length > 0 &&\r\n \r\n }\r\n
\r\n
\r\n }\r\n {MultiCenterSearch && this.props.selectedTab === \"multicentre\" &&\r\n \r\n }\r\n
\r\n
\r\n );\r\n }\r\n}","import React from 'react';\r\n\r\nconst HiddenValues = ({\r\n selectedLocation,\r\n hotelCode\r\n}) => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default HiddenValues;\r\n","import React from 'react';\r\n\r\nconst ShowOtherDates = ({\r\n handleShowOtherDates,\r\n showOtherDates,\r\n componentIdentifier,\r\n showOtherDatesLabel,\r\n show\r\n}) => {\r\n return (\r\n
\r\n handleShowOtherDates(e)} />\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default ShowOtherDates;","import React from 'react';\r\n\r\n// Import all components used in the sidebar\r\nimport Calendar from '../includes/calendar';\r\nimport HiddenValues from '../includes/hidden-values';\r\nimport Duration from '../includes/duration';\r\nimport SelfTravel from '../includes/self-travel';\r\nimport Airports from '../includes/airports';\r\nimport RoomNumber from '../includes/room-number';\r\nimport RoomList from '../includes/room-list';\r\nimport SubmitButton from '../includes/submit-button';\r\nimport ChildMessage from '../includes/child-message';\r\nimport InvalidDates from '../includes/invalid-dates';\r\nimport Direct from '../includes/direct';\r\n\r\nconst Sidebar = ({\r\n handleCalendarToggle,\r\n handleDate,\r\n onFocusChange,\r\n shouldErrorBeShown,\r\n handleRoomSizeChange,\r\n handleOccupancy,\r\n handleAirportChange,\r\n handleSelfTravel,\r\n handleDirect,\r\n handleDurationChange,\r\n handleShowOtherDates,\r\n showOtherDates,\r\n initialVisibleMonth,\r\n dictionary,\r\n setFormRef,\r\n searchURL,\r\n hotelCode,\r\n selectedLocation,\r\n isMobile,\r\n fakedateStartText,\r\n datepickerClass,\r\n startDate,\r\n focused,\r\n isDayBlocked,\r\n labels,\r\n availableDurations,\r\n duration,\r\n direct,\r\n selfTravel,\r\n airports,\r\n airport,\r\n airportDisplayName,\r\n rooms,\r\n options,\r\n validOccupancy,\r\n validMaxNumberOfInfants,\r\n occupancy,\r\n ChildAges,\r\n isSubmitDisabled,\r\n showInfants,\r\n childCount,\r\n childRange,\r\n componentIdentifier,\r\n maxCalendarMonths,\r\n isCalendarActive,\r\n}) => {\r\n\r\n return (\r\n
\r\n
\r\n
setFormRef(el)}>\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {/*\r\n Special input to pull from the checkbox in the calendar\r\n As this form submits to the querystring, the input value\r\n from the calendar doesn't get pulled through, so we\r\n inject it into this hidden input. This is a text input\r\n because checkboxes don't add to the querystring if they\r\n are off, which is needed here\r\n */}\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default Sidebar;\r\n","import React from 'react';\r\nimport { tabletBreakpoint } from '../../../../constants/breakpoints';\r\nimport { isNotNullOrWhitespace, isNotNullOrEmptyArray } from '../../../../util/empty-helpers.js';\r\nimport Sidebar from './layouts/sidebar';\r\nimport FullWidth from './layouts/full-width';\r\nimport { getDictionary, getText } from '../../../../util/dictionary';\r\nimport getQueryValue from \"../../../../util/getQueryValue\";\r\n\r\nclass Searchbar extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.formRef = null;\r\n\r\n this.state = {\r\n numberOfNights: \"7\",\r\n occupancyCount: 1,\r\n currency: \"£\",\r\n geo: [],\r\n typeAhead: [],\r\n availableDurations: [],\r\n duration: \"\",\r\n airports: [],\r\n resorts: [],\r\n activeRegion: \"default\",\r\n activeResort: \"default\",\r\n airport: \"default\",\r\n destination: \"\",\r\n maxNumNights: 20,\r\n roomLimit: 5,\r\n adultLimit: 9,\r\n selfTravel: false,\r\n showOtherDates: getQueryValue('showOtherDates', 'on') === 'on',\r\n direct: false,\r\n childLimit: 8,\r\n infantLimit: 4,\r\n defaultChildAge: 0,\r\n labels: {\"dateRange\": [\"Check In\",\"Check Out\"],\r\n \"Adults\":\"Adults\",\r\n \"Children\":\"Children\",\r\n \"Departure\":\"Select a departure airport...\",\r\n \"Direct Flights\":\"Direct flights only\",\r\n \"Duration Fllexibility\":\"I'm flexible (+/- 2 days)\",\r\n \"DurationDate\":\"Check In - Check Out\",\r\n \"Infants\":\"Infants\",\r\n \"Location\":\"Location or hotel name...\",\r\n \"Search\":\"Search\",\r\n \"Invalid Dates Error\": \"You have entered invalid dates.\",\r\n \"Child Message Advice\": \"13 year old should be classed as an adult\",\r\n \"Children Age Message\": \"(0-17 yrs on return date)\",\r\n \"Max number of PAX error\": \"Invalid search, please amend your search criteria\",\r\n \"Max number of Infants error\": \"You can not have more infants than adults\"\r\n },\r\n rooms: 1,\r\n dateError: false,\r\n childRange: [],\r\n showInfants: true,\r\n hasSearched: false,\r\n validOccupancy: true,\r\n validMaxNumberOfInfants: true,\r\n childCount: 0,\r\n recentSearches: [],\r\n showRecentSearch: false,\r\n searchParams: {\r\n Region: \"\",\r\n Resort: \"\",\r\n StartDate: \"\",\r\n Duration: \"\",\r\n Airport: \"\",\r\n Occupancy: [{Adults: 2, Children: 0, Infants: 0}],\r\n ChildAges: [{ages:[]}]\r\n },\r\n searchURL: \"/\",\r\n startDate: null,\r\n endDate: null,\r\n focused: false,\r\n calendarActive: false,\r\n viewportOffsetTop: 0,\r\n isMobile: false,\r\n displayTypeaheadError: false,\r\n selectedTab:\"search\",\r\n showWhoValidation: false,\r\n showWhatValidation: false,\r\n showWhenValidation: false,\r\n selectedLocationDates: [],\r\n dictionary: null,\r\n hasLoaded: false,\r\n dataError: false,\r\n }\r\n\r\n this.handleRoomSizeChange = this.handleRoomSizeChange.bind(this);\r\n this.handleOccupancy = this.handleOccupancy.bind(this);\r\n this.getTotalOccupancy = this.getTotalOccupancy.bind(this);\r\n this.daydiff = this.daydiff.bind(this);\r\n this.dictionary = this.dictionary.bind(this);\r\n this.parseDate = this.parseDate.bind(this);\r\n this.validOccupancy = this.validOccupancy.bind(this);\r\n this.isOutsideRange = this.isOutsideRange.bind(this);\r\n this.isDayBlocked = this.isDayBlocked.bind(this);\r\n this.updateRegion = this.updateRegion.bind(this);\r\n this.handleSelfTravel = this.handleSelfTravel.bind(this);\r\n this.handleDirect = this.handleDirect.bind(this);\r\n this.handleAirportChange = this.handleAirportChange.bind(this);\r\n this.toggleHandler = this.toggleHandler.bind(this);\r\n this.handleDate = this.handleDate.bind(this);\r\n this.handleDurationChange = this.handleDurationChange.bind(this);\r\n this.displayError = this.displayError.bind(this);\r\n this.onFocusChange = this.onFocusChange.bind(this);\r\n this.changeTab = this.changeTab.bind(this);\r\n this.updateSelectedTags = this.updateSelectedTags.bind(this);\r\n this.handleMultiCentreSearch = this.handleMultiCentreSearch.bind(this);\r\n this.handleCalendarToggle = this.handleCalendarToggle.bind(this);\r\n this.initialVisibleMonth = this.initialVisibleMonth.bind(this);\r\n this.getTotalAdultsString = this.getTotalAdultsString.bind(this);\r\n this.getTotalChildrenString = this.getTotalChildrenString.bind(this);\r\n this.getTotalInfantsString = this.getTotalInfantsString.bind(this);\r\n }\r\n\r\n handleMultiCentreSearch() {\r\n let inspirationTags = {...this.state.inspirationTags};\r\n\r\n let whoIds = [];\r\n let whatIds = [];\r\n let whenIds = [];\r\n\r\n inspirationTags.WhoTags.forEach(element => {\r\n if (element.selected === true) {\r\n whoIds.push(element.Id);\r\n }\r\n });\r\n\r\n inspirationTags.WhatTags.forEach(element => {\r\n if (element.selected === true) {\r\n whatIds.push(element.Id);\r\n }\r\n });\r\n\r\n inspirationTags.WhenTags.forEach(element => {\r\n if (element.selected === true) {\r\n whenIds.push(element.Id);\r\n }\r\n });\r\n\r\n let showWhoValidation = whoIds.length === 0;\r\n let showWhatValidation = whatIds.length === 0;\r\n let showWhenValidation = whenIds.length === 0;\r\n\r\n if (showWhoValidation || showWhatValidation || showWhenValidation) {\r\n this.setState({showWhoValidation, showWhatValidation, showWhenValidation}, () => {\r\n let elementToScroll = this.props.context.querySelector('[data-error]');\r\n elementToScroll.scrollIntoView();\r\n });\r\n } else {\r\n let query = this.state.inspirationResultsPage + '?WhoTagIds=' + whoIds.join(',') + '&WhatTagIds=' + whatIds.join(',') + '&WhenTagIds=' + whenIds.join(',');\r\n window.location = query;\r\n }\r\n }\r\n\r\n changeTab(selectedTab) {\r\n this.setState({selectedTab})\r\n }\r\n\r\n validOccupancy(occupancy) {\r\n let Adults = this.getTotalOccupancy(occupancy, 'Adults');\r\n let Children = this.getTotalOccupancy(occupancy, 'Children');\r\n let Infants = this.getTotalOccupancy(occupancy, 'Infants');\r\n const total = Adults + Children + Infants;\r\n\r\n if (total > 9) return false;\r\n\r\n if (Children > this.state.childLimit || Adults > this.state.adultLimit || Infants > this.state.infantLimit) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n compare(airports) {\r\n const { airportOrder } = this.state;\r\n const newAirportOrder = [];\r\n airportOrder.forEach(airportOrderItem => {\r\n airports.forEach((airport, index) => {\r\n if (airportOrderItem.AirportCode === airport.AirportCode) {\r\n newAirportOrder.push(airport);\r\n airports.splice(index, 1);\r\n }\r\n });\r\n });\r\n\r\n return newAirportOrder.concat(airports.sort(this.sortAirports));\r\n }\r\n\r\n sortAirports(a,b) {\r\n if (a.AirportName < b.AirportName)\r\n return -1;\r\n if (a.AirportName > b.AirportName)\r\n return 1;\r\n return 0;\r\n }\r\n\r\n handleSeasonDates(seasonDates) {\r\n let selectedLocationDates = [];\r\n let startDate = this.state.startDate;\r\n\r\n if (isNotNullOrEmptyArray(seasonDates)) {\r\n seasonDates.forEach(element => {\r\n let seasonFromDate = moment(element.FromDate);\r\n let seasonToDate = moment(element.ToDate);\r\n\r\n if (startDate !== null && startDate.isBetween(seasonFromDate, seasonToDate, \"days\", \"[]\")) {\r\n startDate = null;\r\n }\r\n\r\n selectedLocationDates.push({\r\n seasonFromDate,\r\n seasonToDate\r\n });\r\n });\r\n }\r\n\r\n return {\r\n startDate,\r\n selectedLocationDates\r\n };\r\n }\r\n\r\n updateRegion(activeRegion, airports, seasonDates) {\r\n let sortedSeasonDates = this.handleSeasonDates(seasonDates);\r\n\r\n if (airports.length > 0) {\r\n let airportDisplayName = this.state.airportDisplayName;\r\n let airport = this.state.airport;\r\n\r\n airports = this.compare(JSON.parse(JSON.stringify(airports)));\r\n\r\n // set airport to default value for another destination\r\n const airportDisplayNameExists = this.state.airportDisplayName !== \"\" && this.state.airportDisplayName !== undefined;\r\n if (airportDisplayNameExists && airports.find((item) => {\r\n return item.AirportName === this.state.airportDisplayName\r\n }) == undefined) {\r\n airport = \"default\";\r\n airportDisplayName = \"\";\r\n }\r\n\r\n // Check if validation is opened\r\n if(this.formRef) {\r\n const validationEls = this.formRef.querySelectorAll(\".dateErrorContainer\");\r\n if(this.state.activeRegion !== 'default' || this.state.activeRegion !== '') {\r\n if (validationEls.length > 0) {\r\n validationEls.forEach(el => {\r\n if(!el.classList.contains('hidden')) {\r\n el.classList.add('hidden');\r\n }\r\n })\r\n };\r\n }\r\n }\r\n\r\n this.setState({\r\n activeRegion,\r\n airports,\r\n airport,\r\n airportDisplayName,\r\n selectedLocationDates: sortedSeasonDates.selectedLocationDates,\r\n startDate: sortedSeasonDates.startDate\r\n }, () => {\r\n if (this.state.isMobile) {\r\n this.setState({ focused: true }); // Reinitialise the calendar if mobile\r\n }\r\n });\r\n } else {\r\n this.setState({\r\n activeRegion,\r\n airports,\r\n selectedLocationDates: sortedSeasonDates.selectedLocationDates,\r\n startDate: sortedSeasonDates.startDate\r\n }, () => {\r\n if (this.state.isMobile) {\r\n this.setState({ focused: true }); // Reinitialise the calendar if mobile\r\n }\r\n });\r\n }\r\n }\r\n\r\n handleSelfTravel() {\r\n let selfTravel = !this.state.selfTravel,\r\n search = this.state.searchParams.Occupancy,\r\n validOccupancy = true;\r\n for (let {Adults, Children, Infants} of search) {\r\n if (Adults < Children + Infants && !selfTravel) {\r\n validOccupancy = false;\r\n }\r\n }\r\n // set airport to default value for \"hotel Only\"\r\n if (selfTravel) {\r\n const airport = \"default\";\r\n const airportDisplayName = \"\";\r\n this.setState({selfTravel, validOccupancy, airportDisplayName, airport});\r\n } else {\r\n this.setState({selfTravel, validOccupancy});\r\n }\r\n }\r\n\r\n handleShowOtherDates = (e) => {\r\n this.setState({\r\n showOtherDates: e.target.checked,\r\n })\r\n }\r\n\r\n handleDirect() {\r\n this.setState({ direct: !this.state.direct });\r\n }\r\n\r\n getTotalOccupancy(occupancy, type) {\r\n let count = 0;\r\n if (type) {\r\n for (let i=0; i < occupancy.length; i++) {\r\n count += parseInt(occupancy[i][type]);\r\n }\r\n } else {\r\n for (let i=0; i < occupancy.length; i++) {\r\n count += parseInt(occupancy[i].Adults) + parseInt(occupancy[i].Children) + parseInt(occupancy[i].Infants);\r\n }\r\n }\r\n return count;\r\n }\r\n\r\n componentWillMount() {\r\n const searchbarData = this.props.context;\r\n const labels = JSON.parse(searchbarData.dataset.componentLabel);\r\n const limits = JSON.parse(searchbarData.dataset.componentMetadata);\r\n const data = JSON.parse(searchbarData.dataset.componentGeogrpahydata); \r\n const errorMessage = searchbarData.dataset.componentErrorMessage;\r\n const inspirationTags = JSON.parse(searchbarData.dataset.componentInspirationMetadata);\r\n const inspirationResultsPage = searchbarData.dataset.componentInspirationResultsPage;\r\n const isCollection = searchbarData.dataset.componentIsCollection;\r\n const relatedCollection = searchbarData.dataset.componentRelatedCollection;\r\n const currentDestination = searchbarData.dataset.componentCurrentDestination.replace(/\\-/g, \" \");\r\n const airportOrder = JSON.parse(searchbarData.dataset.componentAirportOrder);\r\n inspirationTags.WhatTags.forEach(tag => {\r\n tag.selected = false;\r\n if (tag.TagName === relatedCollection) {\r\n tag.selected = true;\r\n }\r\n });\r\n this.setState({\r\n labels,\r\n limits,\r\n data,\r\n inspirationTags,\r\n inspirationResultsPage,\r\n selectedTab: isCollection === \"True\" ? \"multicentre\" : \"search\",\r\n airportOrder,\r\n errorMessage,\r\n }, () => {\r\n data.forEach(location => {\r\n if (location.Region.toLowerCase() !== '' && (location.Region.toLowerCase() === currentDestination.toLowerCase())) {\r\n this.updateRegion(location.Region, location.DepartureAirports, location.LocationSeasonDates);\r\n }\r\n });\r\n });\r\n }\r\n\r\n getGeoData() {\r\n let searchParams = JSON.parse(JSON.stringify(this.state.searchParams));\r\n let rooms = this.state.rooms;\r\n\r\n let {\r\n labels,\r\n limits,\r\n data,\r\n inspirationTags,\r\n inspirationResultsPage,\r\n } = {...this.state};\r\n\r\n let searchObj = this.queryString(window.location.search.substring(1));\r\n\r\n // Work out the end date and give it the same format as the start date.\r\n let duration = \"\";\r\n if (isNotNullOrWhitespace(searchObj) && isNotNullOrWhitespace(searchObj.duration) && isNotNullOrWhitespace(searchObj.date)) {\r\n searchObj.duration = parseInt(searchObj.duration);\r\n duration = searchObj.duration;\r\n searchObj.endDate = moment(searchObj.date, \"YYYY-MM-DD\").add(searchObj.duration, 'days').format(\"YYYY-MM-DD\");\r\n searchObj.startDate = searchObj.date;\r\n }\r\n\r\n let sortedSeasonDates = {\r\n selectedLocationDates: [],\r\n startDate: this.state.startDate\r\n }\r\n\r\n let airport = \"default\";\r\n let airports = this.state.airports;\r\n let selectedLocation = null;\r\n let activeRegion = this.state.activeRegion;\r\n let selfTravel = this.state.selfTravel;\r\n if (isNotNullOrWhitespace(searchObj) && isNotNullOrWhitespace(searchObj.room0adults)) {\r\n selfTravel = searchObj.selftravel === 'on' ? true : false;\r\n if (isNotNullOrWhitespace(searchObj.geoLocationName)) {\r\n let selectedLocation = data.find(x => x.GeoLocationName === searchObj.geoLocationName);\r\n if (selectedLocation && Object.keys(selectedLocation).includes('DepartureAirports')) {\r\n if (isNotNullOrWhitespace(searchObj.departureAirport)) {\r\n airport = selectedLocation.DepartureAirports.find(x => x.AirportCode === searchObj.departureAirport).AirportCode;\r\n }\r\n airports = selectedLocation.DepartureAirports;\r\n if (selectedLocation && selectedLocation.LocationSeasonDates) {\r\n sortedSeasonDates = this.handleSeasonDates(selectedLocation.LocationSeasonDates);\r\n }\r\n }\r\n }\r\n let currentSearch = this.buildForm(searchObj);\r\n searchParams.Occupancy = currentSearch.Occupancy;\r\n searchParams.ChildAges = currentSearch.ChildAges;\r\n rooms = currentSearch.rooms;\r\n }\r\n if (document.querySelector('[data-element=\"search-basket\"]') !== null) {\r\n let location = document.querySelector('[data-travelink-location]').dataset.travelinkLocation;\r\n location = location.split(',').pop().trim();\r\n selectedLocation = data.find(x => x.GeoLocationName.toLowerCase() === location.toLowerCase());\r\n\r\n let sortedAirports;\r\n if (selectedLocation && airports.length > 0) {\r\n sortedAirports = this.compare(airports)\r\n } else if (selectedLocation && airports.length === 0) {\r\n sortedAirports = this.compare(selectedLocation.DepartureAirports);\r\n }\r\n\r\n airports = selectedLocation ? sortedAirports || \"\" : \"\";\r\n activeRegion = location;\r\n\r\n if (selectedLocation && selectedLocation.LocationSeasonDates) {\r\n sortedSeasonDates = this.handleSeasonDates(selectedLocation.LocationSeasonDates);\r\n }\r\n\r\n if (!selectedLocation) {\r\n this.setState({\r\n dataError: true,\r\n });\r\n }\r\n }\r\n\r\n labels.dateRange = labels.DurationDate.split('-');\r\n let childArray = [];\r\n\r\n for (let i=limits.MinChildAge; i <= limits.MaxChildAge; i++) {\r\n childArray.push(i);\r\n }\r\n\r\n data = data.sort();\r\n let airportDisplayName = '';\r\n\r\n if (airports) {\r\n airports.map((item, i) => {\r\n if (item.AirportCode === airport) {\r\n airportDisplayName = item.AirportName;\r\n }\r\n })\r\n }\r\n\r\n const isMobile = window.innerWidth < tabletBreakpoint;\r\n let focused = isMobile ? true : false;\r\n\r\n let availableDurations = [];\r\n const minNights = limits.MinNumberOfNights === 0 ? 1 : limits.MinNumberOfNights;\r\n // Start from 1 because 0 nights is not valid.\r\n for (let i = minNights; i < (limits.MaxNumberOfNights + 1); i++) {\r\n let label = i === 1 ? ' Night' : ' Nights';\r\n let object = {\r\n Value: i,\r\n Name: i + label\r\n }\r\n availableDurations.push(object);\r\n }\r\n\r\n this.setState({\r\n geo: data,\r\n labels,\r\n roomLimit: limits.MaxRooms,\r\n adultLimit: limits.MaxNumberOfAdults,\r\n childLimit: limits.MaxNumberOfChilds,\r\n infantLimit: limits.MaxNumberOfInfants,\r\n childRange: childArray,\r\n showInfants: limits.ShowInfants,\r\n maxNumNights: limits.MaxNumberOfNights,\r\n defaultChildAge: limits.DefaultChildAge,\r\n maxCalendarMonths: limits.MaxCalendarMonths,\r\n searchParams,\r\n selfTravel,\r\n rooms,\r\n airports,\r\n airport,\r\n airportDisplayName,\r\n activeRegion,\r\n selectedLocation,\r\n searchURL: limits.SearchResultPage,\r\n focused,\r\n isMobile,\r\n availableDurations,\r\n duration,\r\n inspirationTags,\r\n inspirationResultsPage,\r\n selectedLocationDates: sortedSeasonDates.selectedLocationDates,\r\n hasLoaded: true,\r\n });\r\n }\r\n\r\n handleInputFocus(event, input) {\r\n event.preventDefault();\r\n input.scrollIntoView();\r\n }\r\n\r\n handleAirportChange(item) {\r\n this.setState({airport: item.AirportCode, airportDisplayName: item.AirportName});\r\n }\r\n\r\n buildForm(query) {\r\n let occupancy = [];\r\n let childAges = [];\r\n let rooms = query.rooms;\r\n for (let index = 0; index < rooms; index++) {\r\n let adults = 0;\r\n let children = 0;\r\n let infants = 0;\r\n if (query['room' + index + 'adults'] !== undefined) {\r\n adults = query['room' + index + 'adults'];\r\n }\r\n if (query['room' + index + 'children'] !== undefined) {\r\n children = query['room' + index + 'children'];\r\n }\r\n if (query['room' + index + 'infants'] !== undefined) {\r\n infants = query['room' + index + 'infants'];\r\n }\r\n let ages = [];\r\n for (let childIndex = 0; childIndex < children; childIndex++) {\r\n ages.push(query['room' + index + 'child' + childIndex]);\r\n }\r\n occupancy.push({ Adults: parseInt(adults), Children: parseInt(children), Infants: parseInt(infants) });\r\n childAges.push({ ages: ages });\r\n }\r\n return {\r\n Occupancy: occupancy,\r\n ChildAges: childAges,\r\n rooms: rooms\r\n };\r\n }\r\n\r\n queryString(query) {\r\n if (!query) return;\r\n let query_string = {};\r\n let lets = query.replace(/\\+/g, \" \").split(\"&\");\r\n\r\n for (let i = 0; i < lets.length; i++) {\r\n let pair = lets[i].split(\"=\");\r\n // If first entry with this name\r\n if (typeof query_string[pair[0]] === \"undefined\") {\r\n query_string[pair[0]] = decodeURIComponent(pair[1]);\r\n // If second entry with this name\r\n } else if (typeof query_string[pair[0]] === \"string\") {\r\n let arr = [ query_string[pair[0]],decodeURIComponent(pair[1]) ];\r\n query_string[pair[0]] = arr;\r\n // If third or later entry with this name\r\n } else {\r\n query_string[pair[0]].push(decodeURIComponent(pair[1]));\r\n }\r\n }\r\n\r\n return query_string;\r\n\r\n };\r\n\r\n parseDate(str) {\r\n var mdy = str.split('-');\r\n return new Date(mdy[0], mdy[1]-1, mdy[2]);\r\n }\r\n\r\n daydiff(first, second) {\r\n return (second-first)/(1000*60*60*24);\r\n }\r\n\r\n componentDidMount() {\r\n let searchObj = this.queryString(window.location.search.substring(1));\r\n if (searchObj !== '' && searchObj !== undefined && searchObj !== null) {\r\n if (searchObj.region !== '' && searchObj.region !== undefined) {\r\n this.setState({hasSearched: true, activeRegion: searchObj.region.replace(/\\+/g, ' ')});\r\n }\r\n if (searchObj.region !== '' && searchObj.resort !== undefined) {\r\n this.setState({hasSearched: true, activeResort: searchObj.resort.replace(/\\+/g, ' ')});\r\n }\r\n if (searchObj.date !== '' && searchObj.date !== undefined) {\r\n this.setState({startDate: moment(searchObj.date)});\r\n }\r\n }\r\n let storage = JSON.parse(localStorage.getItem(\"history\"));\r\n if (storage === null) {\r\n storage = [];\r\n }\r\n storage.reverse();\r\n let recentSearches = [];\r\n for (let i = 0; i < storage.length; i++) {\r\n // Added in null check to prevent user from making invalid searches now that we don't use end date.\r\n if (i < 3 && storage[i] !== '' && !isNotNullOrWhitespace(storage.endDate)) {\r\n let storageJSON = this.queryString(storage[i]);\r\n storageJSON.url = storage[i];\r\n if (storageJSON.date !== undefined && storageJSON.duration !== undefined) {\r\n recentSearches.push(storageJSON);\r\n }\r\n }\r\n }\r\n\r\n // Layout Shift fix for when there are no recent searches\r\n // This is the only place we have knowledge of whether there are\r\n // recent searches, so can't be done in CSS or CSHTML\r\n const styles = window.getComputedStyle(this.props.context);\r\n if (!recentSearches.length && styles) {\r\n const { minHeight } = styles;\r\n if (minHeight !== '0px') {\r\n const isMobile = window.innerWidth < tabletBreakpoint;\r\n this.props.context.style.minHeight = isMobile ? \"350px\" : \"250px\";\r\n }\r\n }\r\n\r\n getDictionary('Search Bar', (dictionary) => {\r\n this.setState({\r\n dictionary,\r\n recentSearches: recentSearches,\r\n componentIdentifier: Math.random()\r\n }, () => { this.getGeoData() });\r\n })\r\n }\r\n\r\n dictionary(route) {\r\n return this.state.dictionary ? getText(route, this.state.dictionary) : \"\";\r\n }\r\n\r\n // Pull a DOM ref to the form so we can hijack the submit event\r\n setFormRef = (ref) => {\r\n if(this.formRef) return;\r\n this.formRef = ref\r\n // find submit button\r\n const submit = this.formRef.querySelector(\"[type='submit']\");\r\n if(submit) {\r\n // Hijack submit event\r\n submit.addEventListener('click', this.handleSubmit);\r\n };\r\n };\r\n\r\n // Event capture for checking form validation\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n if (!this.formRef) return;\r\n const destination = this.formRef.querySelector(\".typeahead__input\");\r\n if (!destination) {\r\n this.formRef.submit()\r\n return;\r\n };\r\n const value = destination.value;\r\n if(value === 'default' || value === '' || value === undefined) {\r\n const validationEls = this.formRef.querySelectorAll(\".dateErrorContainer-alt\");\r\n validationEls.forEach((el) => el.classList.remove('hidden'));\r\n return;\r\n }\r\n this.formRef.submit();\r\n }\r\n\r\n handleRoomSizeChange(event) {\r\n const limit = this.state.roomLimit;\r\n let selectedValue = +event.target.value,\r\n count = 0,\r\n search = JSON.parse(JSON.stringify(this.state.searchParams)),\r\n startValue = search.Occupancy.length,\r\n state = { validOccupancy: false };\r\n\r\n if (selectedValue > this.state.rooms) {\r\n if (selectedValue <= limit) {\r\n for(let i = search.Occupancy.length; i < selectedValue; i++) {\r\n let obj = {Adults: 1, Children: 0, Infants: 0};\r\n let childObj = {ages:[]};\r\n search.Occupancy.push(obj);\r\n search.ChildAges.push(childObj);\r\n }\r\n\r\n count = this.getTotalOccupancy(search.Occupancy);\r\n let validOccupancy = this.validOccupancy(search.Occupancy);\r\n state = { searchParams: search, occupancyCount: count, rooms: search.Occupancy.length, validOccupancy };\r\n }\r\n } else {\r\n search.Occupancy.splice(selectedValue);\r\n search.ChildAges.splice(selectedValue);\r\n\r\n count = this.getTotalOccupancy(search.Occupancy);\r\n let validOccupancy = this.validOccupancy(search.Occupancy);\r\n state = { searchParams: search, occupancyCount: count, rooms: search.Occupancy.length, validOccupancy }\r\n }\r\n\r\n this.setState(state);\r\n }\r\n\r\n handleOccupancy(type, index, property, check) {\r\n let search = JSON.parse(JSON.stringify(this.state.searchParams));\r\n if (property === 'Infants' && type === 'add') {\r\n let newValue = search.Occupancy[index][property] + 1;\r\n if ((search.Occupancy[index].Adults < newValue) && !this.state.selfTravel) {\r\n this.setState({validMaxNumberOfInfants: false});\r\n return;\r\n }\r\n } else if (property === 'Adults' && type === 'remove') {\r\n let newValue = search.Occupancy[index][property] - 1,\r\n validateInfants = search.Occupancy[index].Infants > newValue;\r\n if (search.Occupancy[index].Children > newValue || validateInfants) {\r\n validateInfants && this.setState({validMaxNumberOfInfants: false});\r\n return;\r\n }\r\n }\r\n if (type === 'add' && this.state[check] >= search.Occupancy[index][property]) {\r\n search.Occupancy[index][property] = search.Occupancy[index][property] + 1;\r\n if (property === 'Children') {\r\n search.ChildAges[index].ages.push(this.state.defaultChildAge);\r\n }\r\n } else if (type === 'remove') {\r\n if (search.Occupancy[index][property] > 1 && property === 'Adults') {\r\n search.Occupancy[index][property] = search.Occupancy[index][property] - 1;\r\n } else {\r\n if (search.Occupancy[index][property] > 0) {\r\n if (property !== 'Adults') {\r\n search.Occupancy[index][property] = search.Occupancy[index][property] -1;\r\n }\r\n if (property === 'Children') {\r\n search.ChildAges[index].ages.pop();\r\n }\r\n }\r\n }\r\n }\r\n let childCount = this.getTotalOccupancy(search.Occupancy, 'Children');\r\n let count = this.getTotalOccupancy(search.Occupancy);\r\n let validOccupancy = this.validOccupancy(search.Occupancy);\r\n if (validOccupancy) {\r\n this.setState({ searchParams: search, occupancyCount: count, childCount, validOccupancy: true, validMaxNumberOfInfants: true });\r\n } else {\r\n this.setState({ validOccupancy: false, validMaxNumberOfInfants: true });\r\n }\r\n }\r\n\r\n isOutsideRange(date) {\r\n const availableDayFirst = moment().add(-1, 'd');\r\n const availableDayLast = moment().add(18, 'M');\r\n // respect limit of 18 months\r\n if ( date > availableDayFirst && date < availableDayLast ) {\r\n if (this.state.startDate) {\r\n // respect nights limit from CMS\r\n if (this.state.startDate !== null &&\r\n date > moment(this.state.startDate).add(this.state.maxNumNights, 'd')) { return true };\r\n }\r\n return false\r\n }\r\n return true;\r\n }\r\n\r\n shouldErrorBeShown() {\r\n let startDate = document.getElementById('startDate');\r\n if (startDate) {\r\n if (startDate.value.length > 9) {\r\n let isOutsideStart = this.isOutsideRange(moment(startDate.value));\r\n if (isOutsideStart) { return true } else return false;\r\n } else return false\r\n }\r\n }\r\n\r\n isDayBlocked(date) {\r\n const blockedDayFirst = moment().add(-1, 'd');\r\n const blockedDayLast = moment().add(2, 'd');\r\n const blockDates = this.state.selectedLocationDates;\r\n let isDateBlocked = false;\r\n\r\n if ( date > blockedDayFirst && date < blockedDayLast ) {\r\n isDateBlocked = true;\r\n }\r\n\r\n blockDates.forEach(element => {\r\n if ( element.seasonFromDate !== null && element.seasonToDate !== null ) {\r\n if (date.isBetween(element.seasonFromDate, element.seasonToDate, \"days\", \"[]\")) {\r\n isDateBlocked = true;\r\n }\r\n }\r\n });\r\n\r\n const today = moment();\r\n const monthsFromToday = moment().add(this.state.maxCalendarMonths, 'months');\r\n if (!date.isBetween(today, monthsFromToday, \"days\", \"[]\")) {\r\n isDateBlocked = true;\r\n }\r\n\r\n return isDateBlocked;\r\n }\r\n\r\n initialVisibleMonth() {\r\n // As the mobile datepicker is not dynamic, we want to show the\r\n // earliest month we can (i.e. now)\r\n if (this.state.isMobile) return moment();\r\n if (this.state.startDate !== null) {\r\n // clone moment as we allow this part of state to leave this component\r\n return this.state.startDate.clone();\r\n }\r\n\r\n if (this.state.selectedLocationDates.length > 0) {\r\n const firstFromDate = moment({...this.state.selectedLocationDates[0].seasonFromDate});\r\n const firstToDate = moment({...this.state.selectedLocationDates[0].seasonToDate});\r\n\r\n if (firstToDate === null) {\r\n return moment();\r\n } else {\r\n let firstAvailableDate = moment().add(3, 'd');\r\n if (firstAvailableDate < firstFromDate) {\r\n return moment();\r\n } else if (firstAvailableDate > firstToDate) {\r\n return firstAvailableDate;\r\n }\r\n return firstToDate.add(1, 'd');\r\n }\r\n }\r\n return moment();\r\n }\r\n\r\n // reset calendar\r\n handleDate(startDate, autoClose = true) {\r\n if (!startDate.isValid()) return;\r\n if (autoClose) {\r\n document.body.classList.remove('no-scroll');\r\n document.documentElement.classList.remove('no-scroll');\r\n const header = document.querySelector('[data-element=\"header\"]');\r\n if (header) {\r\n header.classList.remove('hidden');\r\n }\r\n window.scrollBy(0, this.state.viewportOffsetTop);\r\n }\r\n this.setState({ startDate, calendarActive: autoClose ? false : true });\r\n }\r\n\r\n toggleHandler(event){\r\n event.stopPropagation();\r\n this.setState({showRecentSearch: !this.state.showRecentSearch});\r\n }\r\n\r\n onFocusChange(focused) {\r\n focused = focused.focused;\r\n if (this.state.isMobile && !focused) {\r\n return; // doesn't update the focused if it is trying to close the DRP\r\n }\r\n this.setState({ focused });\r\n }\r\n\r\n activateNoScroll() {\r\n document.body.classList.add('no-scroll');\r\n document.documentElement.classList.add('no-scroll');\r\n\r\n let stickyBanner = document.querySelector('[data-component=\"sticky-banner\"]');\r\n if (stickyBanner) {\r\n stickyBanner.classList.add('hidden');\r\n }\r\n\r\n let header = document.querySelector('[data-element=\"header\"]');\r\n if (header) {\r\n header.classList.add('hidden');\r\n }\r\n }\r\n\r\n handleCalendarToggle(show) {\r\n if (show) {\r\n let viewportOffset = document.body.getBoundingClientRect();\r\n let viewportOffsetTop =- viewportOffset.top;\r\n setTimeout(this.activateNoScroll, 250);\r\n const stickyBanner = document.querySelector('[data-component=\"StickyBanner\"]');\r\n if (stickyBanner) {\r\n stickyBanner.classList.add('StickyBanner--hide');\r\n }\r\n\r\n this.setState({\r\n calendarActive: true,\r\n focused: 'startDate',\r\n viewportOffsetTop\r\n });\r\n if (this.state.startDate === null) {\r\n let scrollContainer = document.querySelector('.transition-container--vertical');\r\n if (scrollContainer) {\r\n scrollContainer.scrollTop = 0;\r\n }\r\n }\r\n } else {\r\n document.body.classList.remove('no-scroll');\r\n document.documentElement.classList.remove('no-scroll');\r\n\r\n const stickyBanner = document.querySelector('[data-component=\"StickyBanner\"]');\r\n if (stickyBanner) {\r\n stickyBanner.classList.remove('hidden');\r\n stickyBanner.classList.remove('StickyBanner--hide');\r\n }\r\n\r\n let header = document.querySelector('[data-element=\"header\"]');\r\n if (header) {\r\n header.classList.remove('hidden');\r\n }\r\n\r\n window.scrollBy(0, this.state.viewportOffsetTop);\r\n this.setState({calendarActive: false});\r\n }\r\n }\r\n\r\n handleDurationChange(item) {\r\n this.setState({duration: item.Value});\r\n }\r\n\r\n isAppleSafari(userAgent){\r\n let iPhone = userAgent.match(/iPhone/i) !== null;\r\n let Mac = userAgent.match(/Mac/i) !== null;\r\n let iPod = userAgent.match(/iPod/i) !== null;\r\n let iOS = userAgent.match(/iOS/i) !== null;\r\n let Safari = userAgent.match(/Safari/i) !== null;\r\n return Safari && (iPhone || Mac || iPod || iOS);\r\n }\r\n\r\n displayError(display) {\r\n this.setState({displayTypeaheadError: display});\r\n }\r\n\r\n updateSelectedTags(index, tagList) {\r\n let showWhoValidation = this.state.showWhoValidation;\r\n let showWhatValidation = this.state.showWhatValidation;\r\n let showWhenValidation = this.state.showWhenValidation;\r\n\r\n // Handle validation messaging. Reset on change.\r\n if (tagList == 'WhoTags') showWhoValidation = false;\r\n if (tagList == 'WhatTags') showWhatValidation = false;\r\n if (tagList == 'WhenTags') showWhenValidation = false;\r\n\r\n let inspirationTags = {...this.state.inspirationTags};\r\n if (inspirationTags[tagList][index].selected) {\r\n inspirationTags[tagList][index].selected = false;\r\n } else {\r\n inspirationTags[tagList][index].selected = true;\r\n }\r\n this.setState({inspirationTags, showWhoValidation, showWhatValidation, showWhenValidation});\r\n }\r\n\r\n getTotalAdultsString(recentSearch) {\r\n let totalAdults = 0;\r\n for (let i = 0; i < this.state.roomLimit; i++) {\r\n if (recentSearch[`room${i}adults`]) {\r\n totalAdults += Number(recentSearch[`room${i}adults`]);\r\n }\r\n }\r\n const adultLabel = totalAdults > 1 ? 'Adults' : 'Adult';\r\n let totalAdultsString = totalAdults > 0 ? `, ${totalAdults} ${adultLabel}` : '';\r\n\r\n return totalAdultsString;\r\n }\r\n\r\n getTotalChildrenString(recentSearch) {\r\n let totalChildren = 0;\r\n for (let i = 0; i < this.state.roomLimit; i++) {\r\n if (recentSearch[`room${i}children`]) {\r\n totalChildren += Number(recentSearch[`room${i}children`]);\r\n }\r\n }\r\n const childrenLabel = totalChildren > 1 ? 'Children' : 'Child';\r\n let totalChildrenString = totalChildren > 0 ? `, ${totalChildren} ${childrenLabel}` : '';\r\n\r\n return totalChildrenString;\r\n }\r\n\r\n getTotalInfantsString(recentSearch) {\r\n let totalInfants = 0;\r\n for (let i = 0; i < this.state.roomLimit; i++) {\r\n if (recentSearch[`room${i}infants`]) {\r\n totalInfants += Number(recentSearch[`room${i}infants`]);\r\n }\r\n }\r\n const infantsLabel = totalInfants > 1 ? 'Infants' : 'Infant';\r\n let totalInfantsString = totalInfants > 0 ? `, ${totalInfants} ${infantsLabel}` : '';\r\n\r\n return totalInfantsString;\r\n }\r\n\r\n render() {\r\n if (!this.state.hasLoaded) return null;\r\n\r\n if (this.state.dataError) {\r\n return (\r\n

{this.state.errorMessage}

\r\n );\r\n }\r\n\r\n const occupancy = this.state.searchParams.Occupancy;\r\n const ChildAges = this.state.searchParams.ChildAges;\r\n const labels = this.state.labels;\r\n const showInfants = this.state.showInfants;\r\n const isMobile = document.body.clientWidth < tabletBreakpoint;\r\n const componentIdentifier = this.state.componentIdentifier;\r\n let adults = [];\r\n let children = [];\r\n let infants = [];\r\n let isAirportValid = false;\r\n let datepickerClass = this.state.calendarActive ? 'DateOverlay active' : 'DateOverlay';\r\n datepickerClass = this.isAppleSafari(navigator.userAgent) ? datepickerClass + ' ios' : datepickerClass;\r\n datepickerClass = isMobile ? datepickerClass : '';\r\n let startDateString = this.state.startDate === null ? '' : moment(this.state.startDate).format('DD-MM-YYYY');\r\n let fakedateStartText = this.state.startDate === null ? labels.dateRange[0] : startDateString;\r\n\r\n if (this.state.selfTravel || (this.state.airport !== '' && this.state.airport !== 'default')) {\r\n isAirportValid = true;\r\n }\r\n let isSubmitDisabled = !(this.state.startDate && (this.state.activeRegion !== 'default' && this.state.activeRegion !== '' && this.state.duration !== '') && isAirportValid);\r\n\r\n for (let i=0; i < this.state.adultLimit; i++) {\r\n adults.push();\r\n }\r\n\r\n for (let i=0; i <= this.state.childLimit; i++) {\r\n children.push();\r\n }\r\n\r\n for (let i=0; i <= this.state.infantLimit; i++) {\r\n infants.push();\r\n }\r\n\r\n let hidden = '';\r\n if (this.state.hasSearched) {\r\n hidden = 'hidden';\r\n }\r\n\r\n let options = [];\r\n for (let i = 1; i < this.state.roomLimit+1; i++) {\r\n options.push(\r\n \r\n );\r\n }\r\n let searchBasket = document.querySelector('[data-element=\"search-basket\"]') !== null;\r\n if (searchBasket) {\r\n let hotelCode = document.querySelector('[data-hotel-code]').dataset.hotelCode;\r\n let selectedLocation = {\r\n Region: \"\",\r\n Resort: \"\",\r\n ArrivalAirports: [\r\n {\r\n AirportCode: \"\"\r\n }\r\n ],\r\n GeoLocationName: \"\"\r\n }\r\n if (this.state.selectedLocation !== undefined) {\r\n selectedLocation = this.state.selectedLocation;\r\n }\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n