{"version":3,"sources":["modules.quickNav.js"],"names":["app","quickNav","_chevronDown","util","_quickNav","_message","_triggers","let","quickNavJson","document","_items","_button","triggerEvent","event","preventDefault","itemContainer","options","index","querySelector","createElement","linkTextEl","triggerEl","activeItem","setAttribute","activeOptions","trigger","svgEl","push","addEventListener","slideDown","classList","add","dataset","closeText","closeOptions","initTrigger","option","optionEvent","length","parentNode","_clickedOption","getClickedOption","target","optionId","level","url","removeAttribute","window","setTimeout","appendChild","remove","innerHTML","initOptions","resetOptions","parseInt","id","forEach","pushEvent","text","containerEl","innerEl","listEl","items","optionEl","linkEl","message","href","contains","slideUp","container","removeEventListener","pageUrl","location","pathname","innerText","openOptions","item","answer","closeOpenOptions","init","questions","querySelectorAll","openText","activeTrigger"],"mappings":"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","file":"../modules.quickNav.min.js","sourcesContent":["app.quickNav = (function () {\r\n 'use strict';\r\n\r\n const _chevronDown =\r\n '';\r\n const _chevronRight =\r\n '';\r\n\r\n let _quickNav = null;\r\n let _button = null;\r\n let _message = null;\r\n let _items = null;\r\n let _triggers = [];\r\n let _clickedOption = null;\r\n\r\n function init() {\r\n if (quickNavJson === null) return;\r\n\r\n _quickNav = document.querySelector('[data-quicknav]');\r\n\r\n if (quickNavJson.levels < 2)\r\n _quickNav.querySelector('[data-level=\"2\"]').remove();\r\n if (quickNavJson.levels < 3)\r\n _quickNav.querySelector('[data-level=\"3\"]').remove();\r\n\r\n _button = _quickNav.querySelector('[data-quicknav-button]');\r\n _message = _quickNav.querySelector('[data-quicknav-message]');\r\n _items = _quickNav.querySelectorAll('[data-quicknav-item]');\r\n\r\n initTrigger(0);\r\n initTrigger(1);\r\n initTrigger(2);\r\n initOptions(0, quickNavJson.options);\r\n\r\n _quickNav.classList.remove('is-loading');\r\n\r\n document.addEventListener('click', (event) => {\r\n if (event.target.classList.contains('quickNav__trigger') === false) {\r\n closeOpenOptions();\r\n }\r\n });\r\n }\r\n\r\n //\r\n // Trigger\r\n //\r\n\r\n var triggerEvent = function (event) {\r\n event.preventDefault();\r\n\r\n const activeItem = _quickNav.querySelector(\r\n '[data-quicknav-item].is-active'\r\n );\r\n\r\n if (activeItem) {\r\n const activeTrigger = activeItem.querySelector('[data-quicknav-trigger]');\r\n const activeOptions = activeItem.querySelector(\r\n '[data-quicknav-options-inner]'\r\n );\r\n\r\n closeOptions(activeTrigger, activeItem, activeOptions);\r\n }\r\n\r\n const trigger = event.target;\r\n const itemContainer = trigger.parentNode;\r\n const options = itemContainer.querySelector(\r\n '[data-quicknav-options-inner]'\r\n );\r\n\r\n if (!options) return;\r\n\r\n if (options.classList.contains('is-active') === false) {\r\n openOptions(trigger, itemContainer, options);\r\n } else {\r\n closeOptions(trigger, itemContainer, options);\r\n }\r\n };\r\n\r\n function initTrigger(index) {\r\n if (index + 1 > _items.length) return;\r\n\r\n const triggerEl = document.createElement('a');\r\n triggerEl.classList.add('quickNav__trigger');\r\n triggerEl.setAttribute('href', '#');\r\n triggerEl.setAttribute('data-quicknav-trigger', '');\r\n triggerEl.setAttribute('data-open-text', 'Open vragenlijst');\r\n triggerEl.setAttribute('data-close-text', 'Sluit vragenlijst');\r\n triggerEl.setAttribute('aria-label', 'Open vragenlijst');\r\n triggerEl.setAttribute('aria-expanded', 'false');\r\n triggerEl.setAttribute('disabled', 'disabled');\r\n triggerEl.setAttribute('tabindex', '-1');\r\n\r\n const linkTextEl = document.createElement('span');\r\n linkTextEl.classList.add('quickNav__trigger__text');\r\n linkTextEl.setAttribute('data-quicknav-trigger-text', '');\r\n linkTextEl.innerHTML = quickNavJson.questions[index];\r\n\r\n const svgEl = document.createElement('span');\r\n svgEl.classList.add('quickNav__trigger__icon');\r\n svgEl.innerHTML = _chevronDown;\r\n\r\n triggerEl.appendChild(linkTextEl);\r\n triggerEl.appendChild(svgEl);\r\n\r\n _items[index].appendChild(triggerEl);\r\n _triggers.push(triggerEl);\r\n\r\n triggerEl.addEventListener('click', triggerEvent);\r\n }\r\n\r\n //\r\n // Options\r\n //\r\n\r\n var optionEvent = function (event) {\r\n event.preventDefault();\r\n\r\n var option = event.target;\r\n var options = option.parentNode.parentNode.parentNode;\r\n var itemContainer = options.parentNode.parentNode;\r\n var trigger = itemContainer.querySelector('[data-quicknav-trigger]');\r\n var level = parseInt(itemContainer.dataset.level);\r\n\r\n trigger.classList.add('is-selected');\r\n closeOptions(trigger, itemContainer, options);\r\n\r\n _clickedOption = null;\r\n getClickedOption(event.target.dataset.optionId);\r\n\r\n _triggers[level - 1].querySelector(\r\n '[data-quicknav-trigger-text]'\r\n ).innerHTML = option.text;\r\n\r\n // Handle options, text and button\r\n\r\n if (_clickedOption.url != null) {\r\n _button.setAttribute('href', _clickedOption.url);\r\n _button.setAttribute('target', _clickedOption.target);\r\n _button.removeAttribute('tabindex');\r\n\r\n window.setTimeout(() => {\r\n _button.classList.add('is-active');\r\n }, 500);\r\n } else {\r\n _button.removeAttribute('href');\r\n _button.removeAttribute('target');\r\n _button.setAttribute('tabindex', '-1');\r\n _button.classList.remove('is-active');\r\n }\r\n\r\n if (_clickedOption.message != null) {\r\n _message.innerHTML = _clickedOption.message;\r\n _message.classList.add('is-active');\r\n\r\n window.setTimeout(() => {\r\n util.slideDown(_message, 250);\r\n }, 500);\r\n } else if (_message.classList.contains('is-active')) {\r\n util.slideUp(_message, 250, () => {\r\n _message.innerHTML = '';\r\n });\r\n }\r\n\r\n if (level === 1) {\r\n initOptions(1, _clickedOption.options);\r\n resetOptions(2);\r\n }\r\n\r\n if (level === 2) {\r\n initOptions(2, _clickedOption.options);\r\n }\r\n\r\n // DATALAYER\r\n app.dataLayer.pushEvent('keuzehulpVraag' + level, {\r\n pageUrl: window.location.pathname,\r\n option: event.target.innerText,\r\n });\r\n };\r\n\r\n function initOptions(index, items) {\r\n resetOptions(index);\r\n\r\n if (items == null) return;\r\n if (index + 1 > _items.length) return;\r\n\r\n _triggers[index].removeAttribute('disabled');\r\n _triggers[index].removeAttribute('tabindex');\r\n\r\n const containerEl = document.createElement('div');\r\n containerEl.classList.add('quickNav__options');\r\n containerEl.setAttribute('data-quicknav-options', '');\r\n\r\n const innerEl = document.createElement('div');\r\n innerEl.classList.add('quickNav__options__inner');\r\n innerEl.classList.add('is-bs-md');\r\n innerEl.setAttribute('data-quicknav-options-inner', '');\r\n\r\n const listEl = document.createElement('ul');\r\n\r\n items.forEach((item) => {\r\n const optionEl = document.createElement('li');\r\n\r\n const svgEl = document.createElement('span');\r\n svgEl.innerHTML = _chevronRight;\r\n\r\n const linkEl = document.createElement('a');\r\n linkEl.setAttribute('data-option-id', item.id);\r\n linkEl.setAttribute('href', item.href ?? '#');\r\n linkEl.text = item.answer;\r\n linkEl.addEventListener('click', optionEvent);\r\n\r\n linkEl.appendChild(svgEl);\r\n optionEl.appendChild(linkEl);\r\n listEl.appendChild(optionEl);\r\n });\r\n\r\n innerEl.appendChild(listEl);\r\n containerEl.appendChild(innerEl);\r\n _items[index].appendChild(containerEl);\r\n }\r\n\r\n function resetOptions(index) {\r\n if (index + 1 > _items.length) return;\r\n\r\n _triggers[index].querySelector('[data-quicknav-trigger-text]').innerHTML =\r\n quickNavJson.questions[index];\r\n _triggers[index].setAttribute('disabled', 'disabled');\r\n _triggers[index].setAttribute('tabindex', '-1');\r\n _triggers[index].classList.remove('is-selected');\r\n\r\n const container = _items[index].querySelector('[data-quicknav-options]');\r\n\r\n if (container) {\r\n var options = container.querySelectorAll('a');\r\n options.forEach((option) => {\r\n option.removeEventListener('click', optionEvent);\r\n });\r\n container.remove();\r\n }\r\n }\r\n\r\n function getClickedOption(id, options) {\r\n if (_clickedOption != null) return;\r\n options = options || quickNavJson.options;\r\n\r\n options.forEach((option) => {\r\n if (option.id === id) {\r\n _clickedOption = option;\r\n } else if (option.options != null) {\r\n getClickedOption(id, option.options);\r\n }\r\n });\r\n }\r\n\r\n function openOptions(trigger, itemContainer, options) {\r\n util.slideDown(options, 250);\r\n trigger.classList.add('is-active');\r\n itemContainer.classList.add('is-active');\r\n options.classList.add('is-active');\r\n\r\n // a11y: update aria attributes\r\n trigger.setAttribute('aria-label', trigger.dataset.closeText);\r\n trigger.setAttribute('aria-expanded', true);\r\n }\r\n\r\n function closeOptions(trigger, itemContainer, options) {\r\n util.slideUp(options, 250);\r\n\r\n window.setTimeout(() => {\r\n trigger.classList.remove('is-active');\r\n itemContainer.classList.remove('is-active');\r\n options.classList.remove('is-active');\r\n }, 250);\r\n\r\n // a11y: update aria attributes\r\n trigger.setAttribute('aria-label', trigger.dataset.openText);\r\n trigger.setAttribute('aria-expanded', false);\r\n }\r\n\r\n function closeOpenOptions() {\r\n const trigger = document.querySelector('[data-quicknav-trigger].is-active');\r\n if (!trigger) return;\r\n\r\n const itemContainer = trigger.parentNode;\r\n const options = itemContainer.querySelector(\r\n '[data-quicknav-options-inner]'\r\n );\r\n\r\n closeOptions(trigger, itemContainer, options);\r\n }\r\n\r\n // Expose public functions and variables\r\n return {\r\n init: init,\r\n };\r\n})();\r\n"]}