{"version":3,"file":"zoomv.9189.min.js?t=301ebf3a0afb91972249","mappings":"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","sources":["webpack://@hero-digital/zoom/./src/components/pages/SecurityBulletinDetail/SecurityBulletinSearch.js","webpack://@hero-digital/zoom/./src/js/utilities/accordion.js"],"sourcesContent":["import { AccordionWidget } from '../../../js/utilities/accordion'\r\n\r\nclass SecurityBulletinSearch {\r\n constructor(el) {\r\n this.el = el\r\n this.apiEndpoint = this.el.dataset.apiEndpoint\r\n this.filters = this.el.querySelectorAll(\r\n '.grid-landing-page__filter:not(.grid-landing-page__sort-mobile)'\r\n )\r\n this.checkboxes = this.el.querySelectorAll(\r\n 'input[type=\"checkbox\"]:not(.checkbox-sort)'\r\n )\r\n this.sortCheckboxes = this.el.querySelectorAll('.checkbox-sort')\r\n this.resultsDiv = this.el.querySelector('.grid-landing-page__results')\r\n this.loadMoreBtn = this.el.querySelector('.btn-load-more')\r\n this.loadMoreSection = document.querySelector('#load-more-section')\r\n this.form = this.el.querySelector('form')\r\n ;(this.choicesMenus = {}),\r\n (this.query = {}),\r\n (this.searchBox = this.el.querySelector('#q')),\r\n (this.newSearch = false)\r\n this.clearSearch = this.el.querySelector(\r\n '.grid-landing-page__text-input__search-icon--close'\r\n )\r\n this.searchField = this.el.querySelector('input[type=\"text\"]')\r\n this.libraryPageId = this.el.querySelector('#library-page-id')\r\n this.pageSize = this.el.querySelector('#page-size') \r\n\r\n //mobile collapse expand holder\r\n const filterLists = document.querySelectorAll('.grid-landing-page__wrapper')\r\n const mobileButton = document.querySelector(\r\n '.grid-landing-page__mobile-filters'\r\n )\r\n const listHeightControl = document.querySelector(\r\n '.grid-landing-page__filter-wrap'\r\n )\r\n\r\n const heightArray = new Array()\r\n filterLists.forEach((list) => {\r\n var height = list.offsetHeight\r\n heightArray.push(height)\r\n })\r\n\r\n const sumOfHeights = heightArray.reduce(\r\n (partialSum, a) => partialSum + a,\r\n 0\r\n )\r\n const maxHeight = sumOfHeights + 'px'\r\n this.el.parentNode.style.setProperty('--max-height', maxHeight)\r\n\r\n // mobile expand collapse\r\n mobileButton.addEventListener('click', collapseExpand)\r\n function collapseExpand() {\r\n if (mobileButton.getAttribute('aria-expanded') === 'false') {\r\n mobileButton.setAttribute('aria-expanded', 'true')\r\n mobileButton.classList.add('isOpen')\r\n listHeightControl.classList.add('isOpen')\r\n } else {\r\n mobileButton.setAttribute('aria-expanded', 'false')\r\n mobileButton.classList.remove('isOpen')\r\n listHeightControl.classList.remove('isOpen')\r\n }\r\n }\r\n\r\n this.searchField.addEventListener('focus', (e) => {\r\n if (!e.target.classList.contains('lift-label')) {\r\n e.target.classList.add('lift-label')\r\n }\r\n })\r\n this.clearSearch.addEventListener('click', (e) => {\r\n this.searchBox.value = ''\r\n this.searchBox.focus()\r\n this.newSearch = true\r\n this.buildQuery()\r\n })\r\n\r\n this.searchField.addEventListener('blur', (e) => {\r\n if (e.target.value === '') {\r\n e.target.classList.remove('lift-label')\r\n }\r\n })\r\n this.searchField.onkeydown = function(e) {\r\n // disable form submit on enter key press\r\n if (e.keyCode === 13) {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }\r\n }\r\n\r\n //Media query vars\r\n const mobileQuery = window?.matchMedia('(max-width: 1025px)')\r\n const isMobile = mobileQuery?.matches\r\n\r\n this.checkboxes.forEach((el) => {\r\n el.addEventListener(\r\n 'change',\r\n (e) => {\r\n this.newSearch = true\r\n this.buildQuery()\r\n this.updatePills(el)\r\n },\r\n false\r\n )\r\n })\r\n this.sortCheckboxes.forEach((el) => {\r\n el.addEventListener(\r\n 'change',\r\n (e) => {\r\n if (el.checked) {\r\n this.sortCheckboxes.forEach((checkbox) => {\r\n checkbox.checked = false\r\n })\r\n el.checked = true\r\n this.newSearch = true\r\n this.buildQuery()\r\n } else {\r\n el.checked = true\r\n }\r\n },\r\n false\r\n )\r\n })\r\n\r\n if (this.searchBox != null) {\r\n this.searchBox.addEventListener('keyup', () => {\r\n if (this.searchBox.value.length > 2) {\r\n var duration = 1000\r\n clearTimeout(this.searchBox._timer)\r\n this.searchBox._timer = setTimeout(() => {\r\n this.newSearch = true\r\n this.buildQuery()\r\n }, duration)\r\n }\r\n })\r\n }\r\n\r\n this.pageOnLoad()\r\n this.initAccordion()\r\n }\r\n\r\n initAccordion() {\r\n new AccordionWidget(this.el)\r\n window.addEventListener('click', this.detectOutsideClick.bind(this))\r\n }\r\n\r\n detectOutsideClick(e) {\r\n if (this.el.classList.contains('has-expanded-el')) {\r\n if (\r\n !e.target.closest('.grid-landing-page__popup-button') &&\r\n !e.target.closest('.grid-landing-page__popup-container')\r\n ) {\r\n const expandedButton = this.el.querySelector(\r\n '.grid-landing-page__popup-button[aria-expanded=\"true\"]'\r\n )\r\n if (expandedButton) expandedButton.click()\r\n }\r\n if (\r\n !e.target.closest('.grid-landing-page__sort-button') &&\r\n !e.target.closest('.grid-landing-page__sort-container')\r\n ) {\r\n const expandedButton = this.el.querySelector(\r\n '.grid-landing-page__sort-button[aria-expanded=\"true\"]'\r\n )\r\n if (expandedButton) expandedButton.click()\r\n }\r\n }\r\n }\r\n\r\n pageOnLoad() {\r\n if (!this.loadMoreBtn) {\r\n this.loadMoreBtn = document.querySelector('.btn-load-more')\r\n }\r\n this.loadMoreBtn?.addEventListener('click', (e) => {\r\n e.preventDefault()\r\n const prevPage = this.loadMoreBtn?.getAttribute('data-page') * 1\r\n this.loadMoreBtn?.setAttribute('data-page', prevPage + 1)\r\n this.newSearch = false\r\n this.buildQuery()\r\n })\r\n if (window.location.search) {\r\n //const searchParams = new URLSearchParams(window.location.search)\r\n //const queryString = searchParams.toString()\r\n //this.fetchResults(queryString)\r\n this.updateFormFromParameters()\r\n // this.updateURL(queryString)\r\n } else {\r\n this.loadMoreBtn?.classList.remove('disabled')\r\n }\r\n if (this.searchField.value !== '') {\r\n this.searchField.classList.add('lift-label')\r\n }\r\n }\r\n\r\n updatePills(el) {\r\n let pills = document.querySelectorAll('.grid-landing-page__pill')\r\n let pillFound = false\r\n pills.forEach((pill) => {\r\n if (pill.innerHTML === el.getAttribute('value')) {\r\n this.removePill(pill)\r\n pillFound = true\r\n }\r\n })\r\n if (!pillFound) {\r\n this.addPill(el.getAttribute('value'))\r\n }\r\n }\r\n\r\n addPill(name) {\r\n const pillContainer = document.querySelector('.grid-landing-page__pills')\r\n let pill = document.createElement('button')\r\n pill.setAttribute('type', 'button')\r\n pill.classList.add('grid-landing-page__pill')\r\n pill.innerHTML = name\r\n pillContainer.appendChild(pill)\r\n pill.addEventListener(\r\n 'click',\r\n (e) => {\r\n this.removePill(pill)\r\n document.querySelector(\r\n \"input[type='checkbox'][value='\" + name + \"']\"\r\n ).checked = false\r\n this.newSearch = true\r\n this.buildQuery()\r\n },\r\n false\r\n )\r\n }\r\n\r\n removePill(name) {\r\n name.remove()\r\n }\r\n\r\n updateFormFromParameters() {\r\n this.filters.forEach((filter) => {\r\n const id = filter.querySelector('button').getAttribute('name')\r\n const activeFilters = this.getUrlParameter(id)\r\n activeFilters?.forEach((item) => {\r\n filter.querySelector(\r\n \"input[type='checkbox'][value='\" + item + \"']\"\r\n ).checked = true\r\n this.addPill(item)\r\n })\r\n })\r\n this.sortCheckboxes.forEach((checkbox) => {\r\n const activeSort = this.getUrlParameter('sort')\r\n if (activeSort && activeSort.length > 0) {\r\n activeSort?.forEach((item) => {\r\n if (checkbox.value === item) {\r\n checkbox.checked = true\r\n } else {\r\n checkbox.checked = false\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n getUrlParameter(sParam) {\r\n var sPageURL = decodeURIComponent(window.location.search.substring(1))\r\n var array = []\r\n var sURLVariables = sPageURL.split('&')\r\n for (var i = 0; i < sURLVariables.length; i++) {\r\n var sParameterName = sURLVariables[i].split('=')\r\n if (sParameterName[0] == sParam) {\r\n array.push(sParameterName[1].split(','))\r\n }\r\n }\r\n return array[0]\r\n }\r\n\r\n buildQuery() {\r\n let queryString\r\n this.query = {}\r\n\r\n let pageSize = this.pageSize.value\r\n if (pageSize != '9' && pageSize != '12')\r\n {\r\n pageSize = '20'\r\n }\r\n this.query.pageSize = pageSize \r\n\r\n if (this.newSearch) {\r\n if (this.loadMoreBtn != null) {\r\n this.loadMoreBtn?.setAttribute('data-page', 1)\r\n }\r\n this.query.page = 1\r\n if (this.loadMoreBtn != null) {\r\n this.loadMoreBtn.disabled = false\r\n }\r\n } else {\r\n const page = this.loadMoreBtn?.getAttribute('data-page')\r\n this.query.page = parseInt(page)\r\n }\r\n\r\n let searchTerm = this.searchBox.value\r\n if (searchTerm) {\r\n this.query['q'] = searchTerm\r\n }\r\n this.sortCheckboxes.forEach((el) => {\r\n if (el.checked && el.name !== 'sortMobile') {\r\n this.query.sort = el.value\r\n }\r\n })\r\n\r\n this.filters.forEach((el) => {\r\n const id = el.querySelector('button').getAttribute('name')\r\n\r\n let selected = el.querySelectorAll('input[type=\"checkbox\"]:checked')\r\n var values = Array.from(selected).map(({ value }) => value)\r\n let queryValue = ''\r\n values.forEach((value) => {\r\n if (queryValue.length > 0) {\r\n queryValue += ','\r\n }\r\n queryValue += value\r\n })\r\n if (queryValue.length > 0) {\r\n this.query[id] = queryValue\r\n }\r\n })\r\n\r\n // convert to string for AJAX call\r\n queryString = Object.keys(this.query)\r\n .map((key) => {\r\n return key + '=' + encodeURIComponent(this.query[key])\r\n })\r\n .join('&')\r\n\r\n this.updateURL(queryString)\r\n this.fetchResults(queryString)\r\n }\r\n\r\n resetResults() {\r\n let results = document.querySelector('#generic-landing-page__table__results')\r\n while (results?.firstChild) {\r\n results.removeChild(results.firstChild)\r\n }\r\n }\r\n\r\n findIndexfromOptionName(select, optionName) {\r\n let options = Array.from(select.options)\r\n return options.findIndex((opt) => opt.label == optionName)\r\n }\r\n\r\n fetchResults(queryString) {\r\n const fetchOpts = {\r\n method: 'GET',\r\n headers: {}\r\n }\r\n\r\n let url = ''\r\n if (queryString.length > 0) {\r\n if (!queryString.includes('lang=')) {\r\n queryString =\r\n 'lang=' + document.documentElement.lang + '&' + queryString\r\n }\r\n url = this.apiEndpoint + '?' + queryString\r\n } else {\r\n url = this.apiEndpoint\r\n }\r\n\r\n window\r\n .fetch(url, fetchOpts)\r\n .then((response) => {\r\n if (this.newSearch) {\r\n this.resetResults()\r\n }\r\n if (!response.ok) {\r\n throw new Error('Network response was not ok')\r\n }\r\n return response.json()\r\n })\r\n .then((body) => {\r\n this.processResponse(body.result)\r\n })\r\n .catch((err) => {\r\n console.log('Request Failed', err)\r\n })\r\n }\r\n\r\n processResponse(body) { \r\n if (body.items.length == 0) {\r\n this.showNoResults()\r\n this.hideLoadMoreBtn()\r\n } else {\r\n this.showResults()\r\n this.showLoadMoreBtn()\r\n }\r\n body.items.forEach((result) => {\r\n this.addSecurityBulletinTable(result);\r\n })\r\n if (!body.hasMoreItems) {\r\n this.hideLoadMoreBtn()\r\n }\r\n }\r\n\r\n showResults() {\r\n let results = document.querySelector('.grid-landing-page__has-results')\r\n let noResults = document.querySelector('.grid-landing-page__has-no-results')\r\n\r\n this.show(results)\r\n this.hide(noResults)\r\n }\r\n\r\n showNoResults() {\r\n let results = document.querySelector('.grid-landing-page__has-results')\r\n let noResults = document.querySelector('.grid-landing-page__has-no-results')\r\n\r\n this.hide(results)\r\n this.show(noResults)\r\n }\r\n\r\n show(element) {\r\n if (element) {\r\n element.style.display = 'block'\r\n }\r\n }\r\n\r\n hide(element) {\r\n if (element) {\r\n element.style.display = 'none'\r\n }\r\n }\r\n\r\n addSecurityBulletinTable(data) {\r\n let results = document.querySelector('#generic-landing-page__table__results')\r\n\r\n // Create the table row\r\n let tableRow = document.createElement('tr')\r\n tableRow.classList.add('cmp-table__row')\r\n\r\n // Create the table defination \r\n let bulletinTd = document.createElement('td')\r\n bulletinTd.classList.add('cmp-table__cell')\r\n\r\n let baseUrl=document.querySelector('#base-url')\r\n let anchor = document.createElement('a')\r\n anchor.setAttribute('target', \"_blank\")\r\n anchor.setAttribute('href',`${baseUrl.value}${data.bulletin}/`)\r\n anchor.textContent = data.bulletin;\r\n\r\n // Append the a element to the td element\r\n bulletinTd.appendChild(anchor);\r\n\r\n // Create the table defination \r\n let titleTd = document.createElement('td')\r\n titleTd.classList.add('cmp-table__cell')\r\n titleTd.textContent = data.title;\r\n\r\n // Create the table defination \r\n let cveSeverityTd = document.createElement('td')\r\n cveSeverityTd.classList.add('cmp-table__cell')\r\n cveSeverityTd.textContent = data.cveSeverity;\r\n\r\n \r\n // Create the table defination \r\n let cveIdTD = document.createElement('td')\r\n cveIdTD.classList.add('cmp-table__cell')\r\n cveIdTD.textContent = data.cveId;\r\n\r\n\r\n // Create the table defination \r\n let publishDateStringTd = document.createElement('td')\r\n publishDateStringTd.classList.add('cmp-table__cell')\r\n publishDateStringTd.textContent = data.publishDateString;\r\n \r\n // Create the table defination \r\n let dateUpdatedStringTd = document.createElement('td')\r\n dateUpdatedStringTd.classList.add('cmp-table__cell')\r\n dateUpdatedStringTd.textContent = data.dateUpdatedString;\r\n\r\n\r\n tableRow.appendChild(bulletinTd);\r\n tableRow.appendChild(titleTd);\r\n tableRow.appendChild(cveSeverityTd);\r\n tableRow.appendChild(cveIdTD);\r\n tableRow.appendChild(publishDateStringTd);\r\n tableRow.appendChild(dateUpdatedStringTd);\r\n\r\n\r\n results.appendChild(tableRow)\r\n }\r\n\r\n showLoadMoreBtn() {\r\n if (this.loadMoreSection) {\r\n this.loadMoreSection.style.display = 'block'\r\n }\r\n }\r\n\r\n hideLoadMoreBtn() {\r\n this.hide(this.loadMoreSection)\r\n }\r\n\r\n updateURL(queryString) {\r\n const url =\r\n window.location.origin + window.location.pathname + '?' + queryString\r\n window.history.replaceState({}, document.title, url)\r\n }\r\n}\r\n\r\nexport default SecurityBulletinSearch\r\n","/* ACCESSIBLE ACCORDION COMPONENT\r\n Code modified taken from here: https://codepen.io/stowball/pen/eZKwRv\r\n Options (add to parent element that has class \"accordion-interface\"):\r\n Multiselect: aria-multiselectable=\"true\"\r\n Always expand first item: data-firstexpanded=\"true\"\r\n To have selected panel(s) expanded at start use data-open-panels attribute with panel numbers separated by commas.\r\n Example: data-open-panels=\"1,2\"\r\n To keep panels always open at tablet breakpoints and above add to class list: accordion-interface__open-panels__md\r\n and for desktop only: accordion-interface__open-panels__lg\r\n*/\r\nimport gsap from 'gsap'\r\n\r\nfunction AccordionWidget(el, props = {}) {\r\n if (!el) return\r\n this.el = el\r\n\r\n let triggerClass = 'js-accordion-trigger'\r\n let panelClass = 'js-accordion-panel'\r\n if (props.id) {\r\n triggerClass += props.id\r\n panelClass += props.id\r\n }\r\n const expandFirst = el.dataset.firstexpanded === 'true'\r\n this.multiSelectable = this.el.hasAttribute('aria-multiselectable')\r\n\r\n let selectedIndex\r\n if (Number.isInteger(props.selectedIndex)) selectedIndex = props.selectedIndex\r\n else if (expandFirst) selectedIndex = 0\r\n\r\n this.accordionTriggers = this.el.getElementsByClassName(triggerClass)\r\n this.accordionPanels = this.el.getElementsByClassName(panelClass)\r\n\r\n if (\r\n this.accordionTriggers.length === 0 ||\r\n this.accordionTriggers.length !== this.accordionPanels.length\r\n ) {\r\n return\r\n }\r\n\r\n // if we do not already have a selected index see if we have the open panels attribute\r\n if (selectedIndex === undefined && el.dataset.openPanels) {\r\n let openPanels = el.dataset.openPanels\r\n openPanels = openPanels.split(',')\r\n const panelArr = []\r\n for (const panel of openPanels) {\r\n const n = parseInt(panel)\r\n // quick test to make sure we have a positive value\r\n if ((n | 0) > 0 && n % 1 === 0 && n <= this.accordionTriggers.length) {\r\n panelArr.push(n - 1)\r\n // if this is not multiselectable then stop after first validated value\r\n if (!this.multiSelectable) break\r\n }\r\n }\r\n if (panelArr.length) selectedIndex = panelArr\r\n }\r\n\r\n this._init(selectedIndex)\r\n}\r\n\r\nAccordionWidget.prototype._init = function (selectedIndex) {\r\n this.accordionTriggersLength = this.accordionTriggers.length\r\n this.expandedAccordions = new Array(this.accordionTriggersLength)\r\n this.clickListener = this._clickEvent.bind(this)\r\n this.keydownListener = this._keydownEvent.bind(this)\r\n this.focusListener = this._focusEvent.bind(this)\r\n this.keys = {\r\n prev: 38,\r\n next: 40,\r\n space: 32\r\n }\r\n\r\n let initialSelectedIndex\r\n\r\n for (let i = 0; i < this.accordionTriggersLength; i++) {\r\n this.accordionTriggers[i].index = i\r\n this.accordionTriggers[i].addEventListener(\r\n 'click',\r\n this.clickListener,\r\n false\r\n )\r\n this.accordionTriggers[i].addEventListener(\r\n 'keydown',\r\n this.keydownListener,\r\n false\r\n )\r\n this.accordionTriggers[i].addEventListener(\r\n 'focus',\r\n this.focusListener,\r\n false\r\n )\r\n this.accordionTriggers[i].classList.add('is-accordion-trigger')\r\n\r\n if (this.accordionTriggers[i].classList.contains('is-selected')) {\r\n this.expandedAccordions[i] = true\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.accordionPanels.length; i++) {\r\n this.accordionPanels[i].classList.add('is-accordion-panel')\r\n }\r\n\r\n // determine which panels need to be open\r\n if (!isNaN(selectedIndex)) {\r\n initialSelectedIndex = selectedIndex\r\n this.expandedAccordions = new Array(this.accordionTriggersLength)\r\n this.expandedAccordions[initialSelectedIndex] = true\r\n } else if (Array.isArray(selectedIndex)) {\r\n initialSelectedIndex = selectedIndex\r\n this.expandedAccordions = new Array(this.accordionTriggersLength)\r\n for (let i = 0; i < this.accordionTriggersLength; i++) {\r\n if (selectedIndex.includes(i)) this.expandedAccordions[i] = true\r\n }\r\n } else {\r\n initialSelectedIndex = this.expandedAccordions.lastIndexOf(true)\r\n\r\n if (!this.multiSelectable) {\r\n this.expandedAccordions = new Array(this.accordionTriggersLength)\r\n this.expandedAccordions[initialSelectedIndex] = true\r\n }\r\n }\r\n\r\n this.initialSetIndex = selectedIndex\r\n this.setSelected(initialSelectedIndex)\r\n this.setExpanded()\r\n this.setAPI()\r\n this.el.classList.add('is-accordion')\r\n this.el.classList.add('is-initialized')\r\n}\r\n\r\nAccordionWidget.prototype._clickEvent = function (e) {\r\n e.preventDefault()\r\n this.setSelected(e.target.index, true)\r\n this.setExpanded(e.target.index, true)\r\n}\r\n\r\nAccordionWidget.prototype._keydownEvent = function (e) {\r\n let targetIndex\r\n\r\n switch (e.keyCode) {\r\n case this.keys.space:\r\n case this.keys.prev:\r\n case this.keys.next:\r\n e.preventDefault()\r\n break\r\n default:\r\n return\r\n }\r\n\r\n if (e.keyCode === this.keys.space) {\r\n // this.setExpanded(e.target.index, true);\r\n e.target.click()\r\n\r\n return\r\n } else if (e.keyCode === this.keys.prev && e.target.index > 0) {\r\n targetIndex = e.target.index - 1\r\n } else if (\r\n e.keyCode === this.keys.next &&\r\n e.target.index < this.accordionTriggersLength - 1\r\n ) {\r\n targetIndex = e.target.index + 1\r\n } else {\r\n return\r\n }\r\n\r\n this.setSelected(targetIndex, true)\r\n}\r\n\r\nAccordionWidget.prototype._focusEvent = function () {\r\n if (this.accordionTriggersLength === 1) {\r\n this.setSelected(0)\r\n }\r\n}\r\n\r\nAccordionWidget.prototype.setSelected = function (index, userInvoked) {\r\n if (index === -1) {\r\n this.accordionTriggers[0].setAttribute('tabindex', 0)\r\n\r\n return\r\n }\r\n\r\n if (Array.isArray(index)) index = index[0]\r\n for (let i = 0; i < this.accordionTriggersLength; i++) {\r\n if (i === index) {\r\n this.accordionTriggers[i].classList.add('is-selected')\r\n // this.accordionTriggers[i].setAttribute('tabindex', 0);\r\n\r\n if (userInvoked) {\r\n this.accordionTriggers[i].focus()\r\n }\r\n } else {\r\n this.accordionTriggers[i].classList.remove('is-selected')\r\n\r\n // this.accordionTriggers[i].setAttribute('tabindex', -1);\r\n }\r\n }\r\n}\r\n\r\nAccordionWidget.prototype.setExpanded = function (index, userInvoked) {\r\n let i\r\n\r\n // special case to close all\r\n if (index === -1) this.expandedAccordions = []\r\n\r\n if (userInvoked) {\r\n if (this.multiSelectable) {\r\n this.expandedAccordions[index] = !this.expandedAccordions[index]\r\n } else {\r\n for (i = 0; i < this.accordionTriggersLength; i++) {\r\n if (i === index) {\r\n this.expandedAccordions[i] = !this.expandedAccordions[i]\r\n } else {\r\n this.expandedAccordions[i] = false\r\n }\r\n }\r\n }\r\n }\r\n\r\n AccordionWidget.prototype.hidePanelContent = function (item) {\r\n //allows animation to finish before hiding inner content from assistive technology\r\n setTimeout(() => {\r\n item.setAttribute('aria-hidden', true)\r\n item.setAttribute('hidden', true)\r\n }, 325)\r\n }\r\n\r\n let hasExpanded = false\r\n for (i = 0; i < this.accordionTriggersLength; i++) {\r\n if (this.expandedAccordions[i]) {\r\n this.accordionPanels[i].setAttribute('aria-hidden', false)\r\n this.accordionPanels[i].removeAttribute('hidden')\r\n\r\n this.accordionTriggers[i].setAttribute('aria-expanded', true)\r\n this.accordionTriggers[i].classList.add('is-expanded')\r\n\r\n this.accordionPanels[i].classList.add('is-open')\r\n gsap.to(this.accordionPanels[i], { height: 'auto', duration: 0.3 })\r\n\r\n this.accordionTriggers[i].parentElement.classList.add('is-active')\r\n\r\n hasExpanded = true\r\n } else {\r\n this.accordionTriggers[i].setAttribute('aria-expanded', false)\r\n this.accordionTriggers[i].classList.remove('is-expanded')\r\n\r\n this.accordionPanels[i].classList.remove('is-open')\r\n gsap.to(this.accordionPanels[i], { height: 0, duration: 0.3 })\r\n\r\n this.accordionTriggers[i].parentElement.classList.remove('is-active')\r\n this.hidePanelContent(this.accordionPanels[i])\r\n }\r\n }\r\n\r\n // add close to parent to indicate there is an open element\r\n if (hasExpanded) this.el.classList.add('has-expanded-el')\r\n else this.el.classList.remove('has-expanded-el')\r\n this.hasExpanded = hasExpanded\r\n}\r\n\r\nAccordionWidget.prototype.setAPI = function () {\r\n // add API functionality here\r\n this.close = function () {\r\n this.setSelected(-1)\r\n this.setExpanded(-1)\r\n }\r\n // open initial index\r\n this.openInit = function () {\r\n const index = this.initialSetIndex\r\n if (Number.isInteger(index)) {\r\n this.setSelected(index, true)\r\n this.setExpanded(index, true)\r\n }\r\n }\r\n}\r\n\r\nAccordionWidget.prototype.destroy = function () {\r\n this.el.classList.remove('is-initialized')\r\n\r\n for (let i = 0; i < this.accordionTriggersLength; i++) {\r\n this.accordionTriggers[i].removeAttribute('aria-expanded')\r\n this.accordionTriggers[i].classList.remove('is-expanded')\r\n\r\n this.accordionPanels[i].removeAttribute('aria-hidden')\r\n this.accordionPanels[i].classList.remove('is-open')\r\n this.accordionPanels[i].removeAttribute('tabindex')\r\n\r\n this.accordionTriggers[i].removeEventListener(\r\n 'click',\r\n this.clickListener,\r\n false\r\n )\r\n this.accordionTriggers[i].removeEventListener(\r\n 'keydown',\r\n this.keydownListener,\r\n false\r\n )\r\n this.accordionTriggers[i].removeEventListener(\r\n 'focus',\r\n this.focusListener,\r\n false\r\n )\r\n\r\n delete this.accordionTriggers[i].index\r\n }\r\n}\r\n\r\nexport { AccordionWidget }\r\n"],"names":["SecurityBulletinSearch","el","_window","_this","_classCallCheck","this","apiEndpoint","dataset","filters","querySelectorAll","checkboxes","sortCheckboxes","resultsDiv","querySelector","loadMoreBtn","loadMoreSection","document","form","choicesMenus","query","searchBox","newSearch","clearSearch","searchField","libraryPageId","pageSize","filterLists","mobileButton","listHeightControl","heightArray","Array","forEach","list","height","offsetHeight","push","maxHeight","reduce","partialSum","a","parentNode","style","setProperty","addEventListener","getAttribute","setAttribute","classList","add","remove","e","target","contains","value","focus","buildQuery","onkeydown","keyCode","preventDefault","stopPropagation","mobileQuery","window","matchMedia","matches","updatePills","checked","checkbox","length","clearTimeout","_timer","setTimeout","pageOnLoad","initAccordion","key","AccordionWidget","detectOutsideClick","bind","closest","expandedButton","click","_this$loadMoreBtn","_this$loadMoreBtn2","_this2","_this2$loadMoreBtn","_this2$loadMoreBtn2","prevPage","location","search","updateFormFromParameters","_this3","pills","pillFound","pill","innerHTML","removePill","addPill","name","_this4","pillContainer","createElement","appendChild","_this5","filter","id","activeFilters","getUrlParameter","item","activeSort","sParam","array","sURLVariables","decodeURIComponent","substring","split","i","sParameterName","queryString","_this6","_this$loadMoreBtn3","page","disabled","_this$loadMoreBtn4","parseInt","searchTerm","sort","selected","values","from","map","_ref","queryValue","Object","keys","encodeURIComponent","join","updateURL","fetchResults","results","firstChild","removeChild","select","optionName","options","findIndex","opt","label","_this7","url","includes","documentElement","lang","fetch","method","headers","then","response","resetResults","ok","Error","json","body","processResponse","result","err","console","log","_this8","items","showNoResults","hideLoadMoreBtn","showResults","showLoadMoreBtn","addSecurityBulletinTable","hasMoreItems","noResults","show","hide","element","display","data","tableRow","bulletinTd","baseUrl","anchor","concat","bulletin","textContent","titleTd","title","cveSeverityTd","cveSeverity","cveIdTD","cveId","publishDateStringTd","publishDateString","dateUpdatedStringTd","dateUpdatedString","origin","pathname","history","replaceState","props","arguments","undefined","triggerClass","panelClass","selectedIndex","expandFirst","firstexpanded","multiSelectable","hasAttribute","Number","isInteger","accordionTriggers","getElementsByClassName","accordionPanels","openPanels","_step","panelArr","_iterator","_createForOfIteratorHelper","s","n","done","panel","f","_init","prototype","initialSelectedIndex","accordionTriggersLength","expandedAccordions","clickListener","_clickEvent","keydownListener","_keydownEvent","focusListener","_focusEvent","prev","next","space","index","isNaN","isArray","lastIndexOf","initialSetIndex","setSelected","setExpanded","setAPI","targetIndex","userInvoked","hidePanelContent","hasExpanded","removeAttribute","gsap","to","duration","parentElement","close","openInit","destroy","removeEventListener"],"sourceRoot":""}