{"version":3,"file":"tabs.def007dbb43679584081.min.js","mappings":"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","sources":["webpack://intracto-deheus/./Frontend/js/components/tabs/index.js"],"sourcesContent":["export default class Tabs {\r\n constructor (component) {\r\n this.component = component;\r\n this.componentId = this.component.getAttribute('data-tabs-id');\r\n this.titles = this.component.querySelectorAll('[data-tabs-title]');\r\n this.triggers = this.component.querySelectorAll('[data-tabs-trigger]');\r\n this.items = this.component.querySelectorAll('[data-tabs-item]');\r\n\r\n this.init();\r\n }\r\n\r\n switchTabs (targets, triggers) {\r\n for (let i = 0; i < targets[0].length; i += 1) {\r\n targets[0][i].setAttribute('aria-selected', false);\r\n if (!targets[0][i].hasAttribute('data-tabs-title')) targets[0][i].setAttribute('tabindex', -1);\r\n }\r\n\r\n if (targets[1]) targets[1].setAttribute('hidden', true);\r\n \r\n if (targets[1] !== targets[2]) {\r\n targets[2].removeAttribute('hidden');\r\n\r\n const tabTriggers = (!triggers.length) ? [triggers] : triggers;\r\n for (let i = 0; i < tabTriggers.length; i += 1) {\r\n tabTriggers[i].setAttribute('aria-selected', true);\r\n tabTriggers[i].removeAttribute('tabindex');\r\n tabTriggers[i].focus();\r\n }\r\n }\r\n }\r\n\r\n getTargets (sId) {\r\n const target = document.getElementById(sId);\r\n const parent = target.closest('[data-component=\"tabs\"]');\r\n const currentTriggers = parent.querySelectorAll('[role=\"tab\"][aria-selected=\"true\"]');\r\n const currentContent = parent.querySelector('[role=\"tabpanel\"]:not([hidden])');\r\n\r\n return [currentTriggers, currentContent, target];\r\n }\r\n\r\n hashHandler () {\r\n const sHash = window.location.hash.substr(1);\r\n\r\n if (!sHash) return;\r\n\r\n const triggers = document.querySelectorAll(`[aria-controls=\"${sHash}\"]`);\r\n const targets = this.getTargets(sHash);\r\n\r\n this.switchTabs(targets, triggers);\r\n }\r\n\r\n getPanel (trigger) {\r\n const sId = trigger.getAttribute('aria-controls');\r\n const targets = this.getTargets(sId);\r\n\r\n this.switchTabs(targets, trigger);\r\n\r\n targets[2].id = '';\r\n window.location.hash = `#${sId}`;\r\n targets[2].id = sId;\r\n }\r\n\r\n setTriggerAttributes (element, index, componentId, isAccordionTitle = false) {\r\n element.setAttribute('id', `tab-${componentId}-${index}`);\r\n element.setAttribute('role', 'tab');\r\n element.setAttribute('aria-controls', `tab-content-${componentId}-${index}`);\r\n element.setAttribute('href', `#tab-content-${componentId}-${index}`);\r\n\r\n if (index > 0 && !isAccordionTitle) element.setAttribute('tabindex', -1);\r\n if (matchMedia('(min-width: 1024px)').matches && index === 0) element.setAttribute('aria-selected', true);\r\n }\r\n\r\n createButtonFromTitle (title) {\r\n const button = document.createElement('button');\r\n\r\n button.setAttribute('type', 'button');\r\n button.setAttribute('data-tabs-title', true);\r\n button.innerHTML = title.innerHTML;\r\n\r\n for (let i = 0; i < title.classList.length; i += 1) {\r\n button.classList.add(title.classList[i]);\r\n }\r\n\r\n return button;\r\n }\r\n\r\n initTitles (root, title, index, componentId) {\r\n const button = root.createButtonFromTitle(title);\r\n\r\n root.setTriggerAttributes(button, index, componentId, true);\r\n title.parentNode.replaceChild(button, title);\r\n }\r\n\r\n initItems (item, index, componentId) {\r\n item.setAttribute('id', `tab-content-${componentId}-${index}`);\r\n item.setAttribute('role', 'tabpanel');\r\n item.setAttribute('aria-labelledby', `tab-${componentId}-${index}`);\r\n item.setAttribute('tabindex', 0);\r\n \r\n if (matchMedia('(min-width: 1024px)').matches) {\r\n if (index > 0) item.setAttribute('hidden', true);\r\n } else {\r\n if (index > 0) item.setAttribute('hidden', true);\r\n }\r\n }\r\n\r\n init() {\r\n const root = this;\r\n\r\n root.titles.forEach((title, index) => {\r\n root.initTitles(root, title, index, root.componentId);\r\n });\r\n\r\n root.triggers.forEach((trigger, index) => {\r\n root.setTriggerAttributes(trigger, index, root.componentId);\r\n });\r\n\r\n root.items.forEach((item, index) => {\r\n root.initItems(item, index, root.componentId);\r\n });\r\n \r\n root.component.setAttribute('data-tabs-initialized', true);\r\n\r\n root.component.addEventListener('click', function (event) {\r\n const tabsButton = event.target.closest('[role=\"tab\"]');\r\n\r\n if (tabsButton) {\r\n root.getPanel(tabsButton);\r\n }\r\n });\r\n \r\n root.component.addEventListener('keydown', function(event) {\r\n if (event.target.closest('[role=\"tab\"]')) {\r\n if (event.key === 'ArrowRight' || event.code === 'ArrowRight') {\r\n if (event.target.nextElementSibling) root.getPanel(event.target.nextElementSibling);\r\n } else if (event.key === 'ArrowLeft' || event.code === 'ArrowLeft') {\r\n if (event.target.previousElementSibling) root.getPanel(event.target.previousElementSibling);\r\n }\r\n }\r\n });\r\n\r\n root.hashHandler();\r\n }\r\n}"],"names":["Tabs","constructor","component","this","componentId","getAttribute","titles","querySelectorAll","triggers","items","init","switchTabs","targets","i","length","setAttribute","hasAttribute","removeAttribute","tabTriggers","focus","getTargets","sId","target","document","getElementById","parent","closest","querySelector","hashHandler","sHash","window","location","hash","substr","getPanel","trigger","id","setTriggerAttributes","element","index","isAccordionTitle","arguments","undefined","matchMedia","matches","createButtonFromTitle","title","button","createElement","innerHTML","classList","add","initTitles","root","parentNode","replaceChild","initItems","item","forEach","addEventListener","event","tabsButton","key","code","nextElementSibling","previousElementSibling"],"sourceRoot":""}