{"version":3,"file":"search-bar-c544cbdb5e.js","sources":["search-bar-c544cbdb5e.js"],"sourcesContent":["import { setOccupancyLimits, setMaxRooms } from './folks-selector.js'\r\nimport { confirm } from \"./popups.js\"\r\n\r\nlet request = null;\r\nlet triggerSearchAfterUpdate = false\r\n\r\nconst updatetriggerSearchAfterUpdateValue = (val) => triggerSearchAfterUpdate = val;\r\n\r\nconst updateSearchBarOptions = (context) => {\r\n\tvar wrapper = context || $('.js-selector-destination-wrapper:visible').first() || $('.js-folks-selector-wrapper:visible').first(),\r\n\t\tdestination = wrapper.find('.js-folks-selector-destination'),\r\n\t\tdeparting = wrapper.find('.js-folks-selector-departing'),\r\n\t\tduration = wrapper.find(\".js-folks-selector-duration\");\r\n\r\n\t// Update all destination selectors with the currently selected destination\r\n\t$('.js-folks-selector-destination').each(function() {\r\n\t\t$(this).val(destination.val())\r\n\t})\r\n\r\n\tgetSearchBarOptions(\r\n\t\twrapper.find('input,select'),\r\n\t\tdeparting,\r\n\t\tduration,\r\n\t\ttrue,\r\n\t\twrapper);\r\n}\r\n\r\nconst getSearchBarOptions = function(form, dateField, durationSelect, enable, folksSelectorWrapper) {\r\n\r\n\tvar loader = folksSelectorWrapper.find(\".js-loader\");\r\n\t// show loader\r\n\tloader.show();\r\n\t// ajax\r\n\trequest = $.ajax({\r\n\t\turl: \"/api/search-block-options\",\r\n\t\tdata: form.serialize(),\r\n\t\tsuccess: function(response) {\r\n\t\t\tresponse = JSON.parse(response);\r\n\r\n\t\t\tsetSearchModuleOptions(response, dateField, durationSelect, enable, folksSelectorWrapper);\r\n\r\n\t\t\t// set the translated destination\r\n\t\t\tlet selectedDestination;\r\n\t\t\tif ($('.js-destination-picker-input')[2]) selectedDestination = $('.js-destination-picker-input')[2].value;\r\n\t\t\telse selectedDestination = $('.js-destination-picker-input')[0].value;\r\n\t\t\tlet translatedDestination = $(\"[data-destination-value = '\" + selectedDestination + \"']\").first().text().trim();\r\n\t\t\t$('.js-destination-picker-facade').val(translatedDestination);\r\n\r\n\t\t\t// remove loader\r\n\t\t\tloader.hide();\r\n\t\t\t// only allow search update if response is success\r\n\t\t\tif (!response.Success && triggerSearchAfterUpdate) {\r\n\t\t\t\ttriggerSearchAfterUpdate = false;\r\n\t\t\t}\r\n\t\t},\r\n\t\terror: function(e) {\r\n\t\t\tif (e.statusText != \"abort\") {\r\n\t\t\t\tconfirm(\"Error\", \"Sorry, there was an error (\" + e.statusText.toLowerCase() + \").\", \"\", true);\r\n\t\t\t}\r\n\t\t\t// remove loader\r\n\t\t\tloader.hide();\r\n\t\t}\r\n\t});\r\n\tlet destinationId = form.serialize().split('&')[3];\r\n\tif (destinationId && destinationId != '' && destinationId.includes('destination=')) {\r\n\t\tdestinationId = destinationId.split('=')[1];\r\n\t\tgetSearchBarMessage(folksSelectorWrapper, destinationId);\r\n\t}\r\n\r\n\r\n}\r\n\r\nconst setSearchModuleOptions = function(response, dateField, durationSelect, enable, folksSelectorWrapper) {\r\n\r\n\tvar availableDates = [];\r\n\r\n\tif (response.Success) {\r\n\t\tif (folksSelectorWrapper !== null) {\r\n\t\t\tupdateOccupancyLimits(folksSelectorWrapper, response);\r\n\t\t}\r\n\r\n\t\tavailableDates = makeAvailableDates(response);\r\n\t\tdateField.datepicker(\"option\", \"beforeShowDay\", checkAvailableDate);\r\n\r\n\t\tif (folksSelectorWrapper.is(':visible')) {\r\n\t\t\t$(\"body\").trigger({\r\n\t\t\t\ttype: \"availableDatesLoaded\",\r\n\t\t\t\tavailableDates: availableDates\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t$(\"body\").trigger({\r\n\t\t\t\ttype: \"availableDatesLoaded\",\r\n\t\t\t\tavailableDates: availableDates\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tupdateDurationOptions(durationSelect);\r\n\r\n\t\tif (enable) { dateField.removeAttr(\"disabled\"); }\r\n\t\tsetTimeout(function() {\r\n\t\t\twindow.site.doc.trigger({\r\n\t\t\t\ttype: \"searchOptionsReceived\",\r\n\t\t\t\twrapper: folksSelectorWrapper,\r\n\t\t\t\toptions: response\r\n\t\t\t});\r\n\t\t}, 100);\r\n\r\n\t} else {\r\n\t\tconfirm(\"Error\", \"Sorry, there was an error (no dates found). Please try again.\", \"\", true);\r\n\t}\r\n\r\n\tfunction updateOccupancyLimits(folksSelectorWrapper, response) {\r\n\t\tsetOccupancyLimits(folksSelectorWrapper, response.MinOccupancy, response.MaxOccupancy, response.AbsoluteMaxChildOccupancy);\r\n\t\tsetMaxRooms(folksSelectorWrapper, response.MaxRooms);\r\n\t}\r\n\r\n\tfunction makeAvailableDates(response) {\r\n\t\tvar dates = [];\r\n\t\tfor (var i = 0; i < response.Departing.length; i++) {\r\n\t\t\tvar d = new Date(response.Departing[i]).getTime();\r\n\t\t\tdates.push(d);\r\n\t\t}\r\n\t\treturn dates;\r\n\t}\r\n\r\n\tfunction checkAvailableDate(date) {\r\n\t\tvar ret = [true, \"\", \"\"];\r\n\t\tif ($.inArray(date.getTime(), availableDates) === -1) {\r\n\t\t\tret[0] = false;\r\n\t\t\tret[1] = \"\"; // Custom disabled CSS class\r\n\t\t\tret[2] = \"Date not available\"; // Custom message\r\n\t\t}\r\n\t\treturn ret;\r\n\t}\r\n\r\n\tfunction updateDurationOptions(durationSelect) {\r\n\t\tdurationSelect.find(\"option\").each(function() {\r\n\t\t\tvar option = $(this);\r\n\t\t\tif (option.val() === '' || $.inArray(parseInt(option.val()), response.Durations) > -1) {\r\n\t\t\t\toption.show();\r\n\t\t\t} else {\r\n\t\t\t\toption.hide();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\n\r\nconst getSearchBarMessage = function(folksSelectorWrapper, destinationId) {\r\n\tif (destinationId === '') {\r\n\t\treturn;\r\n\t}\r\n\r\n\t$.ajax({\r\n\t\turl: \"/SearchBarMessage/Get?destinationId=\" + destinationId,\r\n\t\tsuccess: function(response) {\r\n\t\t\tsetSearchBarMessageDisplay(folksSelectorWrapper, response);\r\n\t\t},\r\n\t\terror: function(e) {\r\n\t\t\tconsole.log(e);\r\n\t\t}\r\n\t});\r\n}\r\n\r\nconst setSearchBarMessageDisplay = function(folksSelectorWrapper, response) {\r\n\tif (response.message) {\r\n\t\tfolksSelectorWrapper.find('.js-search-bar-message-text').text(response.message);\r\n\t\tfolksSelectorWrapper.find('.js-search-bar-message').addClass('is-active');\r\n\t\treturn;\r\n\t}\r\n\tfolksSelectorWrapper.find('.js-search-bar-message').removeClass('is-active');\r\n}\r\n\r\nconst searchBlockPickerOpen = function(trigger) {\r\n\tif (trigger.parents('.l-nav').length === 0) {\r\n\t\twindow.site.html.addClass('search-picker-open--nav');\r\n\t}\r\n}\r\n\r\nconst searchBlockPickerClose = function() {\r\n\twindow.site.html.removeClass('search-picker-open--nav');\r\n}\r\n\r\nexport { searchBlockPickerClose, searchBlockPickerOpen, updateSearchBarOptions, getSearchBarOptions, updatetriggerSearchAfterUpdateValue }\r\n"],"names":["setOccupancyLimits","setMaxRooms","confirm","let","request","triggerSearchAfterUpdate","updatetriggerSearchAfterUpdateValue","val","updateSearchBarOptions","wrapper","context","$","first","destination","find","departing","duration","each","this","getSearchBarOptions","form","dateField","durationSelect","enable","folksSelectorWrapper","loader","show","ajax","url","data","serialize","success","response","JSON","parse","setSearchModuleOptions","selectedDestination","value","translatedDestination","text","trim","hide","Success","error","e","statusText","toLowerCase","destinationId","split","includes","getSearchBarMessage","availableDates","MinOccupancy","MaxOccupancy","AbsoluteMaxChildOccupancy","MaxRooms","dates","i","Departing","length","d","Date","getTime","push","datepicker","date","ret","inArray","is","trigger","type","option","parseInt","Durations","removeAttr","setTimeout","window","site","doc","options","setSearchBarMessageDisplay","console","log","message","addClass","removeClass","searchBlockPickerOpen","parents","html","searchBlockPickerClose"],"mappings":"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"}