{"version":3,"file":"zoomv.8120.min.js?t=4362f38864f4657f09a8","mappings":"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","sources":["webpack://@hero-digital/zoom/./src/components/foundation/GridLandingPage/GridLandingPage.js"],"sourcesContent":["import { AccordionWidget } from '../../../js/utilities/accordion'\r\nimport { DataLayerSearch } from '../../../js/utilities/datalayer/data-layer-search'\r\nimport { DataLayerFilter } from '../../../js/utilities/datalayer/data-layer-filter'\r\n\r\n// Grid landing page Component\r\nclass GridLandingPage {\r\n constructor(el) {\r\n this.el = el\r\n this.apiEndpoint = this.el.dataset.apiEndpoint\r\n this.isCardContentRequired = false\r\n this.filters = this.el.querySelectorAll(\r\n '.grid-landing-page__filter:not(.grid-landing-page__sort-mobile)'\r\n )\r\n this.buttonFilters = this.el.querySelectorAll('.grid-landing-page__buttonfilters button')\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.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 this.buttonFilters.forEach((el) => {\r\n el.addEventListener('click', (e) => {\r\n this.el.querySelectorAll('.sort-button').forEach(btn => {\r\n btn.setAttribute('data-selected', 'false')\r\n })\r\n\r\n this.el.querySelectorAll('.grid-landing-page__buttonfilters button').forEach(btn => {\r\n btn.setAttribute('data-selected', 'false');\r\n })\r\n\r\n e.currentTarget.setAttribute('data-selected', 'true');\r\n this.currentStatus = e.currentTarget.id\r\n this.newSearch = true\r\n this.buildQuery()\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 this.pageOnLoad()\r\n this.initAccordion()\r\n this.initDataLayer()\r\n this.insertElementAfterSecondRow()\r\n }\r\n\r\n initDataLayer() {\r\n try {\r\n document.querySelectorAll('.column-1 a.js-analytics-cta').forEach(link => {\r\n link.removeEventListener(\"click\", this.trackDownloadAsset)\r\n link.addEventListener(\"click\", this.trackDownloadAsset)\r\n }, this)\r\n }\r\n catch (e) { }\r\n }\r\n\r\n trackDownloadAsset(e) {\r\n const cardType = e.target.getAttribute('data-location') || e.currentTarget.getAttribute('data-location') || 'Image Card'\r\n const downloadURL = e.target.href || e.currentTarget.href\r\n if (downloadURL) {\r\n const extensionRegex = /\\.(doc|txt|zip|exe|pdf|ppt|mp3|mp4)/i\r\n const match = downloadURL.match(extensionRegex)\r\n const linkText = e?.currentTarget?.parentNode?.querySelector(\"span.fdn-button--button-style-textLink\").innerText || e?.target?.innerText \r\n let eventData = \"\"\r\n let eventName = \"linkClick\"\r\n eventData = {\r\n event: eventName,\r\n linkUrl: downloadURL,\r\n linkText: linkText,\r\n uiLocation: cardType\r\n };\r\n if (match) {\r\n eventData.event = \"fileDownload\"\r\n eventData.fileExtension = match[1]?.toLowerCase()\r\n }\r\n window.dataLayer.push(eventData)\r\n }\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 const currentStatus = this.getUrlParameter('status');\r\n if (this.buttonFilters && this.buttonFilters.length > 0) {\r\n let statusSet = false;\r\n this.buttonFilters.forEach(btn => {\r\n const isSelected = btn.id.toLowerCase() === currentStatus?.[0]?.toLowerCase();\r\n btn.setAttribute('data-selected', isSelected.toString());\r\n if (isSelected) {\r\n this.currentStatus = btn.id;\r\n statusSet = true;\r\n }\r\n });\r\n if (!statusSet) {\r\n this.buttonFilters[0].setAttribute('data-selected', 'true');\r\n this.currentStatus = this.buttonFilters[0].id;\r\n }\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 = '9'\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 if (this.currentStatus) {\r\n this.query.status = this.currentStatus.toLowerCase()\r\n }\r\n if (this.query.status) {\r\n queryString += `&status=${encodeURIComponent(this.query.status)}`\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('.grid-landing-page__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 this.initDataLayer()\r\n this.DataLayerSearch = new DataLayerSearch()\r\n this.DataLayerSearch._updateDataLayerWithCardCount(body.result[\"totalCount\"])\r\n this.DataLayerFilter = new DataLayerFilter();\r\n this.DataLayerFilter._init(body.result[\"totalCount\"]);\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.addCard(result)\r\n })\r\n this.insertElementAfterSecondRow()\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 addCard(data) {\r\n this.isCardContentRequired = false\r\n let results = document.querySelector('.grid-landing-page__results')\r\n\r\n // Create the column\r\n let column = document.createElement('div')\r\n column.classList.add('column')\r\n column.classList.add('column-1')\r\n\r\n // Create the anchor - the whole card is a link\r\n let anchor = document.createElement('a')\r\n\r\n let target = '_blank'\r\n if (data.isBlog)\r\n {\r\n target = '_self'\r\n }\r\n\r\n anchor.setAttribute('target', target)\r\n anchor.setAttribute('href', data.url)\r\n anchor.classList.add('js-analytics-cta')\r\n\r\n // If its video, make a video card, otherwise its a regular card\r\n let uiLocation = ''\r\n if (data.isVideo) {\r\n uiLocation = 'Video Card'\r\n } else if (data.isBlog) {\r\n uiLocation = 'Blog Card'\r\n anchor.setAttribute('aria-label', data.title)\r\n } else {\r\n uiLocation = 'Image Card'\r\n anchor.classList.add('fdn-image-card')\r\n anchor.classList.add('medium-radius')\r\n\r\n anchor.setAttribute('id', data.id)\r\n\r\n if (data.image.url) {\r\n anchor.setAttribute('data-img', 'true')\r\n }\r\n }\r\n anchor.setAttribute('data-location', uiLocation)\r\n\r\n\r\n // Add the card accessibility text\r\n let accessibilitySpan = document.createElement('span')\r\n accessibilitySpan.classList.add('visually-hidden')\r\n accessibilitySpan.textContent = ' view: ' + data.title\r\n\r\n anchor.appendChild(accessibilitySpan)\r\n\r\n // If the card has a 'type' add the tag\r\n if (data.type) {\r\n let categoryTag = document.createElement('div')\r\n if (data.isVideo) {\r\n categoryTag.classList.add('fdn-video-card__category-tag')\r\n categoryTag.textContent = data.type\r\n } else if (data.isBlog) {\r\n categoryTag.classList.add('fdn-blog-card__category-tag')\r\n categoryTag.textContent = data.primaryCategory\r\n } else {\r\n categoryTag.classList.add('fdn-image-card__category-tag')\r\n categoryTag.textContent = data.type\r\n }\r\n anchor.appendChild(categoryTag)\r\n }\r\n\r\n // If it has an image, make it\r\n if (data.image && data.image.url) {\r\n let image = document.createElement('img')\r\n if (data.image.altText) {\r\n image.setAttribute('alt', data.image.altText)\r\n }\r\n if (data.image.title) {\r\n image.setAttribute('title', data.image.title)\r\n }\r\n image.setAttribute('src', data.image.url)\r\n image.setAttribute('srcset', data.image.lowResUrl + ' 2x')\r\n anchor.appendChild(image)\r\n }\r\n //add category if present\r\n if(data.primaryCategory){\r\n let categoryFlag = document.createElement('div')\r\n categoryFlag.classList.add('fdn-blog-card__category-tag')\r\n categoryFlag.textContent = data.primaryCategory\r\n anchor.appendChild(categoryFlag)\r\n }\r\n // Create the main container for either type of card\r\n let mainContainer = document.createElement('div')\r\n if (data.isVideo) {\r\n mainContainer.classList.add('fdn-video-card__main-container')\r\n } else if (data.isBlog) {\r\n mainContainer.classList.add('fdn-blog-card__main-container')\r\n } else {\r\n mainContainer.classList.add('fdn-image-card__main-container')\r\n }\r\n\r\n // Make a list of tags\r\n let listTags = document.createElement('ul')\r\n listTags.classList.add('fdn-hero-banner-card__tag-list')\r\n\r\n // Loop through the filters and create the tags\r\n if (!data.hideTags) {\r\n if (data.products) {\r\n this.isCardContentRequired = true\r\n data.products.forEach((product) => {\r\n let li = document.createElement('li')\r\n li.textContent = product\r\n listTags.appendChild(li)\r\n })\r\n }\r\n\r\n if (data.industries) {\r\n this.isCardContentRequired = true\r\n data.industries.forEach((industry) => {\r\n let li = document.createElement('li')\r\n li.textContent = industry\r\n listTags.appendChild(li)\r\n })\r\n }\r\n\r\n if (data.topics) {\r\n this.isCardContentRequired = true\r\n data.topics.forEach((topic) => {\r\n let li = document.createElement('li')\r\n li.textContent = topic\r\n listTags.appendChild(li)\r\n })\r\n }\r\n\r\n if (data.countries) {\r\n this.isCardContentRequired = true\r\n data.countries.forEach((country) => {\r\n let li = document.createElement('li')\r\n li.textContent = country\r\n listTags.appendChild(li)\r\n })\r\n }\r\n\r\n if (data.virtualBackgroundCategories) {\r\n this.isCardContentRequired = true\r\n data.virtualBackgroundCategories.forEach((background) => {\r\n let li = document.createElement('li')\r\n li.textContent = background\r\n listTags.appendChild(li)\r\n })\r\n }\r\n mainContainer.appendChild(listTags)\r\n }\r\n\r\n // Add a logo if there is one authored\r\n if (data.logo && data.logo.url) {\r\n if (data.logo.url.length > 0) {\r\n this.isCardContentRequired = true\r\n let logo = document.createElement('img')\r\n if (data.logo.altText) {\r\n logo.setAttribute('alt', data.logo.altText)\r\n }\r\n if (data.logo.title) {\r\n logo.setAttribute('title', data.logo.title)\r\n }\r\n logo.setAttribute('src', data.logo.url)\r\n logo.setAttribute('srcset', data.logo.lowResUrl + ' 2x')\r\n\r\n if (data.isVideo) {\r\n logo.classList.add('fdn-video-card__logo')\r\n } else {\r\n logo.classList.add('fdn-image-card__logo')\r\n }\r\n\r\n mainContainer.appendChild(logo)\r\n }\r\n }\r\n\r\n //Add Readtime \r\n if(data.timeRead){\r\n this.isCardContentRequired = true\r\n let readTimeWrapper = document.createElement('div')\r\n let readTimeIcon = document.createElement('img')\r\n let readTimeContent = document.createElement('span')\r\n //setup wrapper\r\n readTimeWrapper.classList.add('fdn-blog-card__readtime')\r\n //build out icon\r\n readTimeIcon.setAttribute('src', '/dist/assets/icons/read.svg')\r\n readTimeIcon.setAttribute('alt', '')\r\n readTimeIcon.setAttribute('role', 'presentation')\r\n readTimeIcon.classList.add('fdn-blog-card__readtime--icon')\r\n //append icon\r\n readTimeWrapper.appendChild(readTimeIcon)\r\n //build out content\r\n readTimeContent.classList.add('fdn-blog-card__readtime--content')\r\n readTimeContent.textContent = data.timeRead + ' ' + data.timeReadLabel\r\n //append read time content\r\n readTimeWrapper.appendChild(readTimeContent)\r\n //append readtime wrapper to card\r\n mainContainer.appendChild(readTimeWrapper)\r\n }\r\n // Add the title\r\n if (data.title) {\r\n this.isCardContentRequired = true\r\n let heading = document.createElement('h3')\r\n if (data.isVideo) {\r\n heading.classList.add('fdn-video-card__header')\r\n } else if (data.isBlog) {\r\n heading.classList.add('fdn-blog-card__header')\r\n } else {\r\n heading.classList.add('fdn-image-card__header')\r\n }\r\n heading.textContent = data.title\r\n mainContainer.appendChild(heading)\r\n }\r\n\r\n // Add the description\r\n if (data.text) {\r\n this.isCardContentRequired = true\r\n let body = document.createElement('div')\r\n if (data.isVideo) {\r\n body.classList.add('fdn-video-card__body')\r\n } else if (data.isBlog)\r\n {\r\n body.classList.add('fdn-blog-card__body')\r\n } else {\r\n body.classList.add('fdn-image-card__body')\r\n }\r\n body.innerHTML = data.text\r\n mainContainer.appendChild(body)\r\n }\r\n\r\n // Add the link text\r\n if (data.url && data.linkText) {\r\n this.isCardContentRequired = true\r\n let linkSpan = document.createElement('span')\r\n linkSpan.classList.add('fdn-button--button-style-textLink')\r\n let linkContent = document.createTextNode(data.linkText)\r\n linkSpan.appendChild(linkContent)\r\n mainContainer.appendChild(linkSpan)\r\n }\r\n\r\n if(this.isCardContentRequired) anchor.appendChild(mainContainer)\r\n\r\n // If its a video card we need this wrapper\r\n if (data.isVideo) {\r\n let videoWrapper = document.createElement('div')\r\n videoWrapper.classList.add('fdn-video-card')\r\n videoWrapper.classList.add('medium-radius')\r\n videoWrapper.setAttribute('id', data.id)\r\n\r\n if (data.image.url) {\r\n videoWrapper.setAttribute('data-img', 'true')\r\n }\r\n\r\n videoWrapper.appendChild(anchor)\r\n column.appendChild(videoWrapper)\r\n // If its a blog card we need this wrapper\r\n } else if (data.isBlog)\r\n {\r\n let article = document.createElement('article')\r\n article.classList.add(\"fdn-blog-card\")\r\n article.classList.add(\"medium-radius\")\r\n if(data.image == null || data.image.url == null || data.image.url == \"\")\r\n {\r\n article.classList.add(\"fdn-blog-card--no-image\")\r\n }\r\n\r\n if (data.image.url) {\r\n article.setAttribute('data-img', 'true')\r\n }\r\n\r\n article.setAttribute('id', data.id)\r\n article.appendChild(anchor)\r\n column.appendChild(article)\r\n }\r\n else {\r\n column.appendChild(anchor)\r\n }\r\n\r\n results.appendChild(column)\r\n }\r\n\r\n showLoadMoreBtn() {\r\n this.show(this.loadMoreBtn)\r\n }\r\n\r\n hideLoadMoreBtn() {\r\n this.hide(this.loadMoreBtn)\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 insertElementAfterSecondRow() {\r\n const hiddenFieldElement = document.querySelector(\".isInsertElementAfterSecondRow\")\r\n if (!hiddenFieldElement || hiddenFieldElement.value !== \"1\") return\r\n\r\n const wrapper = document.querySelector(\".grid-landing-page__results\")\r\n if (!wrapper) return\r\n\r\n const noResults = document.querySelector(\".grid-landing-page__has-no-results\")\r\n const miniCta = hiddenFieldElement.nextElementSibling\r\n if (!miniCta) return\r\n\r\n const adjustLayout = () => {\r\n const children = wrapper.children\r\n const secondRowStartIndex = Math.min(children.length, window.innerWidth > 1024 ? 3 : 2)\r\n\r\n // Remove existing cloned elements\r\n document.querySelectorAll(\".custom-placement\").forEach(el => el.remove())\r\n\r\n // Clone and insert the MiniCta element\r\n const clonedMiniCta = miniCta.cloneNode(true)\r\n clonedMiniCta.classList.replace(\"hide\", \"custom-placement\")\r\n\r\n // Determine insert position\r\n const referenceElement = children[secondRowStartIndex] || noResults?.nextSibling\r\n referenceElement ? referenceElement.parentNode.insertBefore(clonedMiniCta, referenceElement) : wrapper.appendChild(clonedMiniCta)\r\n };\r\n\r\n adjustLayout()\r\n window.addEventListener(\"resize\", adjustLayout, { passive: true })\r\n }\r\n}\r\n\r\nexport default GridLandingPage\r\n"],"names":["GridLandingPage","el","_window","_this","_classCallCheck","this","apiEndpoint","dataset","isCardContentRequired","filters","querySelectorAll","buttonFilters","checkboxes","sortCheckboxes","resultsDiv","querySelector","loadMoreBtn","form","choicesMenus","query","searchBox","newSearch","clearSearch","searchField","libraryPageId","pageSize","filterLists","document","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","btn","currentTarget","currentStatus","id","length","clearTimeout","_timer","setTimeout","pageOnLoad","initAccordion","initDataLayer","insertElementAfterSecondRow","key","_this2","link","removeEventListener","trackDownloadAsset","cardType","downloadURL","href","_e$currentTarget","_e$target","_match$","match","eventData","event","linkUrl","linkText","innerText","uiLocation","fileExtension","toLowerCase","dataLayer","AccordionWidget","detectOutsideClick","bind","closest","expandedButton","click","_this$loadMoreBtn","_this$loadMoreBtn2","_this3","_this3$loadMoreBtn","_this3$loadMoreBtn2","prevPage","location","search","updateFormFromParameters","getUrlParameter","statusSet","_currentStatus$","isSelected","toString","_this4","pills","pillFound","pill","innerHTML","removePill","addPill","name","_this5","pillContainer","createElement","appendChild","_this6","filter","activeFilters","item","activeSort","sParam","array","sURLVariables","decodeURIComponent","substring","split","i","sParameterName","queryString","_this7","_this$loadMoreBtn3","page","disabled","_this$loadMoreBtn4","parseInt","searchTerm","sort","selected","values","from","map","_ref","queryValue","status","concat","encodeURIComponent","Object","keys","join","updateURL","fetchResults","results","firstChild","removeChild","select","optionName","options","findIndex","opt","label","_this8","url","includes","documentElement","lang","fetch","method","headers","then","response","resetResults","ok","Error","json","body","processResponse","result","DataLayerSearch","_updateDataLayerWithCardCount","DataLayerFilter","_init","err","console","log","_this9","items","showNoResults","hideLoadMoreBtn","showResults","showLoadMoreBtn","addCard","hasMoreItems","noResults","show","hide","element","display","data","column","anchor","isBlog","isVideo","title","image","accessibilitySpan","textContent","type","categoryTag","primaryCategory","altText","lowResUrl","categoryFlag","mainContainer","listTags","hideTags","products","product","li","industries","industry","topics","topic","countries","country","virtualBackgroundCategories","background","logo","timeRead","readTimeWrapper","readTimeIcon","readTimeContent","timeReadLabel","heading","text","linkSpan","linkContent","createTextNode","videoWrapper","article","origin","pathname","history","replaceState","hiddenFieldElement","wrapper","miniCta","nextElementSibling","adjustLayout","children","secondRowStartIndex","Math","min","innerWidth","clonedMiniCta","cloneNode","replace","referenceElement","nextSibling","insertBefore","passive"],"sourceRoot":""}