{"version":3,"file":"chunks/e4fc223e0a070c.js","mappings":"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","sources":["webpack:///./resources/js/components/navigation/tabs.ts"],"sourcesContent":["// tabs section component\nimport imkt from '../../imkt';\nimport url from '../../utils/url';\n\nexport default class Tabs {\n domRoot: HTMLElement;\n params: any;\n defaultTabName: any;\n tabs: any;\n tabLinks: any;\n tabIcon: any;\n tabBlocks: any;\n tabDescriptions: any;\n activeBlockClass: string;\n inactiveTabClasses: string;\n activeTabClasses: string;\n componentRoot: HTMLElement;\n dropdown: HTMLElement;\n dropdownSelection: any;\n\n constructor(domRoot: HTMLElement, params: any) {\n this.domRoot = domRoot;\n this.params = params;\n // component elements\n this.defaultTabName = params.firstTabName;\n this.tabs = this.domRoot.querySelectorAll('.imkt-tab, .tab-dropdown-option');\n this.tabLinks = this.domRoot.querySelectorAll('.imkt-tab a, .tab-dropdown-option a');\n this.tabIcon = this.domRoot.querySelectorAll('.imkt-tab img, .tab-dropdown-option img');\n this.tabBlocks = this.domRoot.querySelectorAll('.imkt-tab-block');\n this.tabDescriptions = this.domRoot.querySelectorAll('.imkt-tab-description');\n this.activeBlockClass = \"active\";\n this.inactiveTabClasses = params.tabBackgroundColor + \" text-\" + params.tabTextColor + \" border-color-\" + params.tabBorderColor;\n this.activeTabClasses = \"active \" + params.tabBackgroundColorActive + \" text-\" + params.tabTextColorActive + \" border-color-\" + params.tabBorderColor;\n this.componentRoot = domRoot;\n this.dropdown = document.getElementById(this.params.selectId) as HTMLElement;\n this.dropdownSelection = this.componentRoot.querySelector('.mobile-tab-navigation > button');\n this.init();\n }\n\n init() {\n this.bindEvents();\n this.setInitialState();\n console.log(this.params.defaultTab)\n }\n\n setInitialState() {\n var urlParams = url.getUrlParams();\n this.closeTabs();\n if (urlParams !== null && urlParams.tab !== undefined) {\n this.openTabByName(urlParams.tab);\n\n // if URL contains an anchor tag that is not on the\n // default tab jump to it after opening the tab\n if (window.location.hash && document.querySelector(window.location.hash)) {\n window.location = window.location.hash;\n }\n } else {\n this.openTabByName(this.params.defaultTab);\n }\n }\n\n bindEvents() {\n var self = this;\n if (self.params.linkedContainerTab) {\n document.body.addEventListener('tabClicked', () => {\n self.setInitialState();\n }, false);\n }\n Array.from(this.tabLinks).forEach(tabLink => {\n tabLink.addEventListener('click', (e) => {\n e.preventDefault();\n this.openTab(e);\n if (self.params.linkedContainerTab) {\n\n var event = document.createEvent('Event');\n event.initEvent('tabClicked', true, true);\n document.body.dispatchEvent(event);\n }\n e.preventDefault();\n })\n });\n\n if (this.dropdown && this.dropdownSelection) {\n let optionsList = this.dropdown.querySelector('.tab-dropdown-options');\n let options = optionsList.querySelectorAll('.tab-dropdown-option');\n let tabIndex = null;\n let selectedTab = null;\n\n this.dropdownSelection.addEventListener('click', () => {\n this.dropdown.classList.toggle(this.activeBlockClass);\n });\n\n this.dropdown.addEventListener('keydown', (e) => {\n if (e.key !== 'Tab') {\n e.preventDefault();\n }\n\n let acceptableKeys = ['ArrowDown', 'ArrowUp', 'Enter', 'Escape', 'Home', 'End'];\n if (acceptableKeys.includes(e.key)) {\n for (var i = 0; i < options.length; i += 1) {\n options[i].classList.remove(this.activeBlockClass);\n }\n if (e.key === 'ArrowDown') {\n tabIndex = (tabIndex !== null && tabIndex < options.length - 1) ? tabIndex + 1 : 0;\n options[tabIndex].classList.add(this.activeBlockClass);\n selectedTab = options[tabIndex];\n }\n if (e.key === 'ArrowUp') {\n tabIndex = tabIndex ? tabIndex - 1 : options.length - 1;\n options[tabIndex].classList.add(this.activeBlockClass);\n selectedTab = options[tabIndex];\n }\n if (e.key === 'Home') {\n tabIndex = 0;\n options[tabIndex].classList.add(this.activeBlockClass);\n selectedTab = options[tabIndex];\n }\n if (e.key === 'End') {\n tabIndex = options.length - 1;\n options[tabIndex].classList.add(this.activeBlockClass);\n selectedTab = options[tabIndex];\n }\n if (e.key === 'Enter') {\n this.dropdown.classList.toggle(this.activeBlockClass);\n if (selectedTab) {\n let tab = selectedTab.querySelector('a');\n this.openTabByName(tab.dataset.tabName);\n this.updateHistory(tab.dataset.tabName);\n selectedTab = null;\n }\n }\n if (e.key === 'Escape') {\n this.dropdown.classList.remove(this.activeBlockClass);\n selectedTab = null;\n }\n }\n });\n\n window.addEventListener('click', (e) => {\n if (e.target !== this.dropdownSelection) {\n this.dropdown.classList.remove(this.activeBlockClass);\n }\n });\n }\n\n }\n\n openTab(clicked) {\n this.closeTabs();\n this.updateHistory(clicked.target.dataset.tabName);\n clicked.target.className = this.activeTabClasses;\n if (this.domRoot.querySelector(clicked.target.hash)) {\n this.domRoot.querySelector(clicked.target.hash).classList.add(this.activeBlockClass);\n }\n if (this.domRoot.querySelector(clicked.target.hash + '-description')) {\n this.domRoot.querySelector(clicked.target.hash + '-description').classList.add(this.activeBlockClass);\n }\n this.openDropdownTab(clicked);\n\n window.dispatchEvent(new Event('resize'));\n }\n\n openDropdownTab(clicked) {\n if (this.dropdown) {\n let selectedTab = this.componentRoot.querySelectorAll('[data-tab-name=\"' + clicked.target.dataset.tabName + '\"]');\n let dropdownOption = this.dropdown.querySelector('[data-tab-name=\"' + clicked.target.dataset.tabName + '\"]');\n selectedTab.className = this.activeTabClasses;\n this.dropdownSelection.textContent = dropdownOption.textContent;\n }\n }\n\n openTabByName(tabName) {\n var tab = this.domRoot.querySelector('.imkt-tab > [data-tab-name=\"' + tabName + '\"]');\n if (!tab) {\n tab = this.domRoot.querySelector('.imkt-tab > [data-tab-name=\"' + this.params.defaultTab + '\"]');\n }\n var tabBlock = this.domRoot.querySelector(tab.getAttribute('href'));\n var tabDescription = this.domRoot.querySelector(tab.getAttribute('href') + '-description');\n\n this.closeTabs();\n tab.className = '';\n tab.className = this.activeTabClasses;\n tabBlock.classList.add(this.activeBlockClass);\n if (tabDescription) {\n tabDescription.classList.add(this.activeBlockClass);\n }\n\n this.openDropdownTabByName(tabName);\n }\n\n openDropdownTabByName(tabName) {\n if (this.dropdown) {\n let dropdownOption = this.dropdown.querySelector('[data-tab-name=\"' + tabName + '\"]');\n if (dropdownOption) {\n dropdownOption.classList.add(this.activeBlockClass);\n this.dropdownSelection.textContent = dropdownOption.textContent;\n }\n }\n }\n\n closeTabs() {\n Array.from(this.tabBlocks).forEach(tabBlock => {\n tabBlock.classList.remove(this.activeBlockClass);\n });\n Array.from(this.tabDescriptions).forEach(tabBlock => {\n tabBlock.classList.remove(this.activeBlockClass);\n });\n Array.from(this.tabLinks).forEach(tabLink => {\n tabLink.className = this.inactiveTabClasses;\n });\n }\n\n updateHistory(tabName) {\n if (imkt.core.supports.history()) {\n // Append url params from incoming URL on history state\n if (typeof tabName !== typeof undefined && tabName !== false) {\n var currentUrl = window.location.href;\n var urlParams = url.getUrlParams(currentUrl);\n var hash = window.location.hash;\n\n if (urlParams) {\n urlParams['tab'] = tabName;\n } else {\n urlParams = { tab: tabName };\n }\n window.history.replaceState(tabName, document.title, \"?\" + new URLSearchParams(Object.entries(urlParams)).toString() + hash);\n }\n }\n }\n}\n\n"],"names":["Tabs","domRoot","params","_classCallCheck","this","defaultTabName","firstTabName","tabs","querySelectorAll","tabLinks","tabIcon","tabBlocks","tabDescriptions","activeBlockClass","inactiveTabClasses","tabBackgroundColor","tabTextColor","tabBorderColor","activeTabClasses","tabBackgroundColorActive","tabTextColorActive","componentRoot","dropdown","document","getElementById","selectId","dropdownSelection","querySelector","init","key","value","bindEvents","setInitialState","console","log","defaultTab","urlParams","url","closeTabs","undefined","tab","openTabByName","window","location","hash","_this","self","linkedContainerTab","body","addEventListener","Array","from","forEach","tabLink","e","preventDefault","openTab","event","createEvent","initEvent","dispatchEvent","options","tabIndex","selectedTab","classList","toggle","includes","i","length","remove","add","dataset","tabName","updateHistory","target","clicked","className","openDropdownTab","Event","dropdownOption","textContent","tabBlock","getAttribute","tabDescription","openDropdownTabByName","_this2","imkt","_typeof","currentUrl","href","history","replaceState","title","URLSearchParams","Object","entries","toString"],"sourceRoot":""}