{"version":3,"sources":["component-location-dropdown.js"],"names":["ComponentLocationDropdown","constructor","container","this","options","selectedState","selectedVenue","selectorText","clickArea","desktop","mobile","states","venues","stateItem","venueItem","body","querySelector","items","querySelectorAll","item","document","venueSelectorDesktop","venueSelectorMobile","defaultState","dataset","state","defaultVenue","venue","filterStateItems","setAttribute","setVenue","setEvents","self","stateItems","addEventListener","toggleVenueSelectorDisplay","bind","hideVenueSelectorDisplay","i","length","let","id","event","selectState","venueItems","selectVenue","element","forEach","innerHTML","classList","add","getVenueSelector","window","innerWidth","venueSelector","windowWidth","contains","remove","filterStateItemsRemoveClass","region","filterStateItemsAddClass","name","arr1","className","split","arr2","indexOf","splice","join"],"mappings":"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","file":"component-location-dropdown.min.js","sourcesContent":["export default class ComponentLocationDropdown {\r\n constructor(container) {\r\n this.options = {\r\n selectedState: 'data-state',\r\n selectedVenue: 'data-venue',\r\n selectorText: '.input-text',\r\n clickArea: '.click-area',\r\n desktop: '.venue-selector',\r\n mobile: '.venue-selector-mobile',\r\n states: '.states',\r\n venues: '.venues',\r\n stateItem: '.states .state',\r\n venueItem: '.venues .venue',\r\n body: 'body'\r\n };\r\n this.container = container;\r\n this.clickArea = this.container.querySelector(this.options.clickArea);\r\n this.items = this.container.querySelectorAll(this.options.item);\r\n this.selectorText = this.container.querySelector(this.options.selectorText);\r\n \r\n this.body = document.querySelector(this.options.body)\r\n this.venueSelectorDesktop = this.container.querySelector(this.options.desktop);\r\n this.venueSelectorMobile = this.container.querySelector(this.options.mobile);\r\n this.states = this.container.querySelectorAll(this.options.states);\r\n this.venues = this.container.querySelectorAll(this.options.venues);\r\n \r\n this.defaultState = this.container.dataset.state;\r\n this.defaultVenue = this.container.dataset.venue;\r\n \r\n if (this.defaultState !== null && this.defaultState !== '') {\r\n this.filterStateItems(this.defaultState);\r\n } else {\r\n this.container.setAttribute(this.options.selectedState, '');\r\n }\r\n\r\n if (this.defaultVenue !== null && this.defaultVenue !== '') {\r\n this.setVenue(this.defaultVenue);\r\n } else {\r\n this.container.setAttribute(this.options.selectedVenue, '');\r\n }\r\n\r\n this.setEvents();\r\n }\r\n \r\n setEvents() {\r\n var self = this;\r\n this.clickArea.addEventListener('click', this.toggleVenueSelectorDisplay.bind(this));\r\n this.container.addEventListener('blur', this.hideVenueSelectorDisplay.bind(this));\r\n\r\n let stateItems = this.container.querySelectorAll(this.options.stateItem);\r\n for(var i = 0; i < stateItems.length; i++) {\r\n let stateItem = stateItems[i];\r\n\r\n if(this.defaultState === null || this.defaultState === '') {\r\n if (i === 0) {\r\n this.filterStateItems(stateItem.dataset.id);\r\n this.container.setAttribute(this.options.selectedState, stateItem.dataset.id);\r\n }\r\n }\r\n stateItem.addEventListener('click', function(event) {\r\n self.selectState(event, this);\r\n });\r\n }\r\n\r\n let venueItems = this.container.querySelectorAll(this.options.venueItem);\r\n for(var i = 0; i < venueItems.length; i++) {\r\n let venueItem = venueItems[i];\r\n venueItem.addEventListener('click', function(event) {\r\n self.selectVenue(event, this);\r\n });\r\n }\r\n }\r\n \r\n selectState(event, element) {\r\n let id = element.dataset.id;\r\n this.filterStateItems(id);\r\n this.container.setAttribute(this.options.selectedState, id);\r\n }\r\n \r\n selectVenue(event, element) {\r\n let id = element.dataset.id;\r\n this.setVenue(id);\r\n }\r\n \r\n setVenue(id) {\r\n this.container.setAttribute(this.options.selectedVenue, id);\r\n let venueItems = this.container.querySelectorAll(this.options.venueItem);\r\n venueItems.forEach(item => {\r\n if(item.dataset.id == id) {\r\n this.selectorText.innerHTML = item.innerHTML;\r\n }\r\n });\r\n \r\n \r\n this.selectorText.classList.add('active');\r\n\r\n this.hideVenueSelectorDisplay();\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 toggleVenueSelectorDisplay() {\r\n let venueSelector = this.getVenueSelector();\r\n let windowWidth = window.innerWidth\r\n \r\n if (venueSelector.classList.contains('show')) {\r\n venueSelector.classList.remove('show');\r\n this.body.classList.remove('disable-scrolling')\r\n } else {\r\n venueSelector.classList.add('show');\r\n \r\n if (windowWidth <= 768) {\r\n this.body.classList.add('disable-scrolling')\r\n }\r\n }\r\n }\r\n \r\n hideVenueSelectorDisplay() {\r\n let venueSelector = this.getVenueSelector();\r\n if (venueSelector.classList.contains('show')) {\r\n venueSelector.classList.remove('show');\r\n this.body.classList.remove('disable-scrolling')\r\n }\r\n }\r\n\r\n\r\n filterStateItems(id) {\r\n let states = this.container.querySelectorAll(this.options.stateItem);\r\n for(var i = 0; i < states.length; i++) {\r\n var state = states[i];\r\n state.classList.remove('active');\r\n if(state.classList.contains(id)) {\r\n state.classList.add('active');\r\n }\r\n }\r\n \r\n let venues = this.container.querySelectorAll(this.options.venueItem);\r\n for (let i = 0; i < venues.length; i++) {\r\n this.filterStateItemsRemoveClass(venues[i], 'show');\r\n\r\n // TODO update this to work with multiple states.\r\n if (typeof venues[i].dataset.region !== 'undefined' && 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 let i\r\n let arr1\r\n let 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 let i\r\n let arr1\r\n let 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 \r\n}"]}