{"version":3,"sources":["template-available-locations.js"],"names":["TemplateAvailableLocations","constructor","container","options","this","Object","assign","states","tabStates","stateItems","desktop","mobile","inputText","venue","body","document","querySelector","statesContainer","querySelectorAll","venueSelectorDesktop","venueSelectorMobile","inputTextElement","setEvents","onLoad","let","self","addEventListener","hideVenueSelectorDisplay","bind","forEach","elem","event","clickState","firstState","children","classList","add","filterStateItems","dataset","id","textContent","element","remove","venues","getElementsByClassName","i","length","filterStateItemsRemoveClass","region","filterStateItemsAddClass","name","arr1","className","split","arr2","indexOf","splice","join","getVenueSelector","window","innerWidth","venueSelector","contains"],"mappings":"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","file":"template-available-locations.min.js","sourcesContent":["export default class TemplateAvailableLocations {\r\n constructor(container, options) {\r\n const defaultOptions = {\r\n states: '.list-states',\r\n tabStates: '.region-tabs-container .list-states',\r\n stateItems: '.list-states .state',\r\n desktop: '.venue-selector',\r\n mobile: '.venue-selector-mobile',\r\n inputText: '.input-text',\r\n venue: 'venue',\r\n body: 'body'\r\n };\r\n this.options = Object.assign({}, defaultOptions, options);\r\n this.body = document.querySelector(this.options.body)\r\n this.container = document.querySelector(container);\r\n this.statesContainer = this.container.querySelector(this.options.states);\r\n this.tabStates = this.container.querySelector(this.options.tabStates);\r\n this.stateItems = this.container.querySelectorAll(this.options.stateItems);\r\n this.venueSelectorDesktop = this.container.querySelector(this.options.desktop);\r\n this.venueSelectorMobile = this.container.querySelector(this.options.mobile);\r\n this.inputTextElement = this.container.querySelector(this.options.inputText);\r\n \r\n this.setEvents();\r\n this.onLoad();\r\n }\r\n \r\n setEvents() {\r\n let self = this;\r\n this.container.addEventListener('blur', this.hideVenueSelectorDisplay.bind(this));\r\n \r\n this.stateItems.forEach(elem => {\r\n elem.addEventListener('click', function(event) {\r\n self.clickState(event, this);\r\n self.hideVenueSelectorDisplay();\r\n });\r\n });\r\n }\r\n \r\n onLoad() {\r\n if (this.tabStates !== null) {\r\n let firstState = this.tabStates.children[0];\r\n firstState.classList.add('active');\r\n this.filterStateItems(firstState.dataset.id);\r\n \r\n this.inputTextElement.textContent = firstState.dataset.id;\r\n }\r\n }\r\n \r\n clickState(event, element) {\r\n let id = element.dataset.id;\r\n this.stateItems.forEach(elem => {\r\n elem.classList.remove('active');\r\n });\r\n element.classList.add('active');\r\n this.body.classList.remove('disable-scrolling')\r\n this.filterStateItems(id);\r\n\r\n if (this.inputTextElement !== null) {\r\n this.inputTextElement.textContent = element.textContent;\r\n }\r\n }\r\n \r\n filterStateItems(id) {\r\n var venues = document.getElementsByClassName(this.options.venue);\r\n \r\n for (let i = 0; i < venues.length; i++) {\r\n this.filterStateItemsRemoveClass(venues[i], 'show');\r\n // TODO update this to support states\r\n if (venues[i].dataset.region == id) {\r\n this.filterStateItemsAddClass(venues[i], 'show');\r\n }\r\n }\r\n }\r\n\r\n filterStateItemsAddClass(element, name) {\r\n var i;\r\n var arr1;\r\n var arr2;\r\n\r\n arr1 = element.className.split(\" \");\r\n arr2 = name.split(\" \");\r\n\r\n for (i = 0; i < arr2.length; i++) {\r\n if (arr1.indexOf(arr2[i]) == -1) {\r\n element.className += \" \" + arr2[i];\r\n }\r\n }\r\n }\r\n\r\n filterStateItemsRemoveClass(element, name) {\r\n var i;\r\n var arr1;\r\n var arr2;\r\n\r\n arr1 = element.className.split(\" \");\r\n arr2 = name.split(\" \");\r\n for (i = 0; i < arr2.length; i++) {\r\n while (arr1.indexOf(arr2[i]) > -1) {\r\n arr1.splice(arr1.indexOf(arr2[i]), 1);\r\n }\r\n }\r\n element.className = arr1.join(\" \");\r\n }\r\n\r\n getVenueSelector() {\r\n let windowWidth = window.innerWidth\r\n if (windowWidth >= 768) {\r\n return this.venueSelectorDesktop;\r\n }\r\n else {\r\n return this.venueSelectorMobile;\r\n }\r\n }\r\n\r\n hideVenueSelectorDisplay() {\r\n let venueSelector = this.getVenueSelector();\r\n if (venueSelector !== null && venueSelector.classList.contains('show')) {\r\n venueSelector.classList.remove('show');\r\n }\r\n }\r\n}"]}