{"version":3,"file":"chunks/125c1a6d5f99e8.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":""}