{"version":3,"file":"../NewsSearch.js","names":["NewsSearch","newsResultsPerPage","newsRootId","newsCurrentResultPage","SearchType","searchTerm","docType","partialView","newsResultTarget","fallbackImageId","InitNewsSearch","_fallbackImageId","_rootId","hasSearchTerm","_itemsPerPage","_renderPartial","document","querySelectorAll","forEach","button","addEventListener","e","sortType","target","dataset","this","DoSearch","bind","querySelector","isEmptyOrSpaces","alert","renderPartial","parseInt","itemsPerPage","initialSearch","key","preventDefault","ClearFilters","ClearSiteSearch","nextElementSibling","event","searchText","value","DoAjaxSearch","searchTextEl","getElementById","length","classList","remove","textContent","add","checkbox","checked","labelText","li","createElement","setAttribute","id","activeFilterItem","title","icon","appendChild","pageNumber","window","location","hash","split","pop","GetSearchResults","then","result","removeAttribute","$","html","htmlResults","pagination","items","totalResultCount","itemsOnPage","cssStyle","onPageClick","scrollIntoView","onInit","resultCount","DoPagination","innerHTML","currentPage","$pagination","show","hide","pageNo","rootNode","newsResultsContainer","Promise","resolve","reject","Cookies","get","searchParams","JSON","parse","rootNodeId","fn","console","error","BuildSiteSearchParams","fetch","body","stringify","method","headers","Accept","response","json","catch","log","FilterToArray","collection","Array","j","push","val","currentResultPage","keywords","searchSpecificDocType","contentTypeCorM","dateFilterField","orderField","resultsPerPage","checks","people","nodeListToIds","customFilterCheckboxes","customFilters","startDate","endDate","toString","set","newsFilterButtons","handleNewsFilterButton","getAttribute","filterButton"],"sources":["NewsSearch.js"],"sourcesContent":["var NewsSearch = {\r\n newsResultsPerPage: 9,\r\n newsRootId: 0,\r\n newsCurrentResultPage: 1,\r\n SearchType: \"\",\r\n searchTerm: \"\",\r\n docType: \"newsArticle\",\r\n partialView: \"NewsResult_Rows\",\r\n newsResultTarget: null,\r\n fallbackImageId: \"\",\r\n\r\n InitNewsSearch: function (_fallbackImageId, _rootId, hasSearchTerm, _itemsPerPage, _renderPartial) {\r\n document.querySelectorAll('.newsSortButton').forEach(function (button) {\r\n button.addEventListener(\"click\", function (e) {\r\n var sortType = e.target.dataset.sortType;\r\n\r\n this.DoSearch(sortType);\r\n }.bind(this));\r\n }.bind(this));\r\n\r\n this.newsResultsPerPage = _itemsPerPage;\r\n this.newsRootId = _rootId;\r\n this.newsResultTarget = document.querySelector('#nextPageOfResults');\r\n this.SearchType = \"NewsSearch\";\r\n this.fallbackImageId = _fallbackImageId;\r\n if (isEmptyOrSpaces(_renderPartial)) {\r\n alert('Need to pass in the partial name that will render the result');\r\n return;\r\n }\r\n this.renderPartial = _renderPartial;\r\n\r\n if (_itemsPerPage !== undefined && _itemsPerPage !== null && parseInt(_itemsPerPage) > 0) {\r\n this.itemsPerPage = parseInt(_itemsPerPage);\r\n }\r\n\r\n\r\n if (hasSearchTerm === true) {\r\n this.initialSearch = false; // Prevent a keyword from the query string from being overwritten\r\n }\r\n\r\n document.querySelectorAll('.search__aggregation input[type=checkbox]').forEach(function (key) {\r\n key.addEventListener(\"change\", function (e) {\r\n e.preventDefault();\r\n this.DoSearch();\r\n }.bind(this));\r\n }.bind(this));\r\n\r\n document.querySelector(\"#clearFilters\").addEventListener(\"click\", function () {\r\n this.ClearFilters();\r\n }.bind(this));\r\n\r\n document.querySelector(\"#clearSearch\").addEventListener(\"click\", function () {\r\n this.ClearSiteSearch();\r\n }.bind(this));\r\n\r\n document.querySelector(\"#searchFieldInput\").nextElementSibling.addEventListener(\"click\", function (event) {\r\n event.preventDefault();\r\n var searchText = document.querySelector(\"#searchFieldInput\").value;\r\n // don't bother searching if it's the same as last time\r\n if (searchText !== this.searchTerm) {\r\n this.DoAjaxSearch(1);\r\n\r\n this.searchTerm = searchText;\r\n var searchTextEl = document.getElementById(\"searchResultsText\");\r\n if (searchText && searchText.length > 0) {\r\n // show search result text in sidebar\r\n searchTextEl.classList.remove(\"hidden\");\r\n searchTextEl.querySelector(\"span\").textContent = document.querySelector(\"#searchFieldInput\").value;\r\n // show clear search button\r\n document.getElementById(\"clearSearch\").classList.remove(\"hidden\");\r\n } else {\r\n searchTextEl.classList.add(\"hidden\");\r\n document.getElementById(\"clearSearch\").classList.add(\"hidden\");\r\n }\r\n }\r\n }.bind(this));\r\n\r\n\r\n // Add events for checkboxes\r\n document.querySelectorAll(\".customFilter\").forEach(function (checkbox) {\r\n checkbox.addEventListener(\"change\", function () {\r\n // show active filter area\r\n if (checkbox.checked) {\r\n // show active filters\r\n document.getElementById(\"activeFilters\").classList.remove(\"hidden\");\r\n\r\n // add item to active filters\r\n var labelText = checkbox.nextElementSibling.textContent;\r\n var li = document.createElement(\"li\");\r\n li.setAttribute(\"data-filter-id\", checkbox.id);\r\n var activeFilterItem = document.createElement(\"button\");\r\n activeFilterItem.textContent = labelText;\r\n activeFilterItem.classList.add(\"tag\", \"tag--filter\", \"button\", \"button--text\");\r\n activeFilterItem.title = \"Remove filter\";\r\n var icon = document.createElement(\"i\");\r\n icon.classList.add(\"icon\", \"icon--close\");\r\n icon.setAttribute(\"aria-hidden\", \"true\");\r\n activeFilterItem.appendChild(icon);\r\n li.appendChild(activeFilterItem);\r\n document.getElementById(\"activeFilterList\").appendChild(li);\r\n\r\n li.addEventListener(\"click\", function () {\r\n // uncheck filter checkbox\r\n checkbox.checked = false;\r\n li.remove();\r\n if (document.querySelectorAll(\".customFilter:checked\").length === 0) {\r\n // hide active filters\r\n document.getElementById(\"activeFilters\").classList.add(\"hidden\");\r\n }\r\n this.DoAjaxSearch(1);\r\n }.bind(this));\r\n } else {\r\n // remove item from active filters\r\n document.getElementById(\"activeFilterList\").querySelector(\"[data-filter-id='\" + checkbox.id + \"'\").remove();\r\n\r\n if (document.querySelectorAll(\".customFilter:checked\").length === 0) {\r\n // hide active filters\r\n document.getElementById(\"activeFilters\").classList.add(\"hidden\");\r\n }\r\n }\r\n this.DoAjaxSearch(1);\r\n }.bind(this));\r\n }.bind(this));\r\n\r\n\r\n var pageNumber = 1;\r\n if (window.location.hash && window.location.hash.split('-').pop()) {\r\n pageNumber = window.location.hash.split('-').pop();\r\n }\r\n var prom = this.GetSearchResults(pageNumber);\r\n prom.then(\r\n function (result) {\r\n // console.log(\"Search results : %o\", result);\r\n if (result.sortType === 'alphabetical') {\r\n var initialSortButton = document.querySelector(\"[data-sort-type='displayDateIndex']\");\r\n initialSortButton.removeAttribute(\"aria-current\");\r\n var alphabeticalSortButton = document.querySelector(\"[data-sort-type='alphabetical']\");\r\n alphabeticalSortButton.setAttribute(\"aria-current\", \"page\");\r\n } else {\r\n var initialSortButton = document.querySelector(\"[data-sort-type='displayDateIndex']\");\r\n initialSortButton.setAttribute(\"aria-current\", \"page\");\r\n var alphabeticalSortButton = document.querySelector(\"[data-sort-type='alphabetical']\");\r\n alphabeticalSortButton.removeAttribute(\"aria-current\");\r\n }\r\n\r\n $('#nextPageOfResults').html(result.htmlResults);\r\n\r\n $('.pagination-target').pagination({\r\n items: result.totalResultCount,\r\n itemsOnPage: this.itemsPerPage,\r\n cssStyle: 'light-theme',\r\n onPageClick: function (pageNumber, event) {\r\n this.DoAjaxSearch(pageNumber);\r\n\r\n document.getElementById(\"topOfSearch\").scrollIntoView();\r\n }.bind(this),\r\n onInit: function () {\r\n\r\n var resultCount = 0;\r\n if (result.totalResultCount !== null) {\r\n resultCount = result.totalResultCount;\r\n }\r\n\r\n this.DoPagination(resultCount, pageNumber);\r\n }.bind(this)\r\n });\r\n }.bind(this)\r\n );\r\n },\r\n\r\n ClearSiteSearch: function () {\r\n document.getElementById(\"searchFieldInput\").value = \"\";\r\n document.getElementById(\"searchResultsText\").classList.add(\"hidden\");\r\n document.getElementById(\"clearSearch\").classList.add(\"hidden\");\r\n this.searchTerm = \"\";\r\n this.DoAjaxSearch(1);\r\n },\r\n\r\n ClearFilters: function () {\r\n // remove all items from active filter list\r\n document.getElementById(\"activeFilterList\").innerHTML = \"\";\r\n\r\n // Uncheck all the boxes\r\n document.querySelectorAll(\".customFilter\").forEach((checkbox) => {\r\n checkbox.checked = false;\r\n });\r\n\r\n // hide active filters\r\n document.getElementById(\"activeFilters\").classList.add(\"hidden\");\r\n\r\n\r\n this.DoAjaxSearch(1);\r\n },\r\n\r\n DoSearch: function (sortType = 'displayDateIndex') {\r\n // reset url since we're always on page 1\r\n let prom = this.GetSearchResults(1, this.newsRootId, sortType);\r\n\r\n prom.then(\r\n function (result) {\r\n if (result.sortType === 'alphabetical') {\r\n var initialSortButton = document.querySelector(\"[data-sort-type='displayDateIndex']\");\r\n initialSortButton.removeAttribute(\"aria-current\");\r\n var alphabeticalSortButton = document.querySelector(\"[data-sort-type='alphabetical']\");\r\n alphabeticalSortButton.setAttribute(\"aria-current\", \"page\");\r\n } else {\r\n var initialSortButton = document.querySelector(\"[data-sort-type='displayDateIndex']\");\r\n initialSortButton.setAttribute(\"aria-current\", \"page\");\r\n var alphabeticalSortButton = document.querySelector(\"[data-sort-type='alphabetical']\");\r\n alphabeticalSortButton.removeAttribute(\"aria-current\");\r\n }\r\n\r\n this.DoPagination(result.totalResultCount, 1);\r\n\r\n\r\n this.newsResultTarget.innerHTML = result.htmlResults;\r\n this.newsCurrentResultPage++;\r\n }.bind(this) // Bind the parent scope to this\r\n );\r\n },\r\n\r\n DoPagination: function (resultCount, currentPage) {\r\n var $pagination = $('.pagination-target');\r\n\r\n // console.log('Page results count : %o - Per page : %o', resultCount, this.itemsPerPage);\r\n\r\n if (resultCount !== null && resultCount > this.itemsPerPage) {\r\n $pagination.pagination('destroy');\r\n $pagination.pagination('updateItems', resultCount);\r\n $pagination.pagination('drawPage', currentPage);\r\n $pagination.show();\r\n } else {\r\n $pagination.hide();\r\n }\r\n },\r\n DoAjaxSearch: function (pageNo) {\r\n var activeSortButton = document.querySelector(\".newsSortButton[aria-current='page']\");\r\n var sortType = activeSortButton.dataset.sortType;\r\n var prom = this.GetSearchResults(pageNo, this.newsRootId, sortType);\r\n prom.then(\r\n function (result) {\r\n // console.log(\"Processing ajax results : %o\", result);\r\n\r\n $('#nextPageOfResults').html(result.htmlResults);\r\n\r\n this.DoPagination(result.totalResultCount, pageNo);\r\n\r\n document.getElementById(\"topOfSearch\").scrollIntoView();\r\n }.bind(this)\r\n );\r\n },\r\n\r\n GetSearchResults: function (pageNo, rootNode, sortType) {\r\n var newsResultsContainer = document.getElementById(\"nextPageOfResults\");\r\n newsResultsContainer.setAttribute(\"aria-busy\", \"true\");\r\n\r\n return new Promise(function (resolve, reject) {\r\n\r\n //var searchParams = null;\r\n var paramSource = \"\";\r\n\r\n // If we have a cookie use that object to search and populate the form \r\n if (this.initialSearch === \"disabled\" && Cookies.get(SearchType)) {\r\n // Get from cookie\r\n paramSource = \"cookie\";\r\n searchParams = JSON.parse(Cookies.get(SearchType));\r\n // default\r\n searchParams.rootNodeId = rootNode;\r\n var fn = window['this.populate' + SearchType];\r\n if (typeof fn === \"function\") {\r\n fn(searchParams);\r\n } else {\r\n console.error('Missing populate function %o so can\\'t populate form', 'populate' + SearchType);\r\n }\r\n } else {\r\n // Default\r\n paramSource = \"fields\";\r\n \r\n searchParams = this.BuildSiteSearchParams(pageNo, sortType);\r\n }\r\n\r\n // console.log('GetSearchResults with %o searchParams : %o', paramSource, searchParams);\r\n this.initialSearch = false;\r\n\r\n fetch('/umbraco/surface/NewsSearch/DoNewsSearchView', {\r\n body: JSON.stringify(searchParams), method: 'post', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },\r\n })\r\n .then(function (response) {\r\n // console.log('response : %o', response.json());\r\n resolve(response.json());\r\n newsResultsContainer.setAttribute(\"aria-busy\", \"false\");\r\n })\r\n .catch(error => {\r\n newsResultsContainer.setAttribute(\"aria-busy\", \"false\");\r\n console.log('Failed', error);\r\n reject(error);\r\n });\r\n }.bind(this));\r\n },\r\n\r\n FilterToArray: function (collection) {\r\n var result = new Array();\r\n var length = collection.length;\r\n\r\n for (var j = 0; j < length; j++) {\r\n result.push($(collection[j]).val());\r\n }\r\n\r\n return result;\r\n },\r\n\r\n BuildSiteSearchParams: function (pageNo, sortType) {\r\n searchParams = {};\r\n searchParams.currentResultPage = pageNo;\r\n\r\n searchParams.partialView = this.renderPartial;\r\n\r\n // Keywords\r\n if ($('#searchFieldInput').val() !== '') {\r\n searchParams.keywords = $('#searchFieldInput').val();\r\n }\r\n\r\n // Specific doc type(s) - Can be used to create a news or event only listing\r\n if ($('#searchSpecificDocType').val() !== '') {\r\n searchParams.searchSpecificDocType = $('#searchSpecificDocType').val();\r\n }\r\n\r\n\r\n // content type : \"content\" or \"media\" - (empty = both)\r\n if ($('#searchContentType').val() !== null && $('#searchContentType').val() !== '') {\r\n searchParams.contentTypeCorM = $('#searchContentType').val();\r\n }\r\n\r\n // Root node restriction . e.g. publications only look in the archive folder\r\n //var rnv = $('#rootNode').val();\r\n //if (rnv !== null && rnv !== '' && rnv !== undefined) {\r\n // searchParams.rootNodeId = $('#rootNode').val();\r\n // console.log(searchParams.rootNodeId);\r\n //}\r\n\r\n // To handle multiple news listing pages\r\n if (this.newsRootId !== 0) {\r\n searchParams.rootNode = this.newsRootId;\r\n }\r\n\r\n // Date filter target field\r\n if ($('#dateFilterField').val() !== null && $('#dateFilterField').val() !== '') {\r\n searchParams.dateFilterField = $('#dateFilterField').val();\r\n }\r\n\r\n // Results order\r\n searchParams.orderField = sortType;\r\n //if ($('#orderField').val() !== null && $('#orderField').val() !== '') {\r\n // searchParams.orderField = $('#orderField').val();\r\n //}\r\n\r\n // Results per page\r\n //if ($('#resultsPerPage').val() !== null && $('#resultsPerPage').val() !== '') {\r\n // searchParams.resultsPerPage = $('#resultsPerPage').val();\r\n //}\r\n searchParams.resultsPerPage = this.itemsPerPage;\r\n\r\n /// =================================\r\n /// Custom taxonomy\r\n /// =================================\r\n\r\n // People\r\n var checks = $(\"input[type='checkbox'][data-group='people']\");\r\n if (checks.length) {\r\n searchParams.people = nodeListToIds(checks);\r\n }\r\n\r\n var customFilterCheckboxes = document.querySelectorAll(\".customFilter\");\r\n if (customFilterCheckboxes.length) {\r\n searchParams.customFilters = nodeListToIds(customFilterCheckboxes);\r\n }\r\n\r\n\r\n if (!isEmptyOrSpaces($('#startDate').val()) && !isEmptyOrSpaces($('#endDate').val())) {\r\n searchParams.startDate = $('#startDate').val();\r\n searchParams.endDate = $('#endDate').val();\r\n }\r\n\r\n // fallback image\r\n searchParams.fallbackImageId = this.fallbackImageId.toString();\r\n\r\n\r\n // Save a cookie\r\n if (this.SearchType === \"\") {\r\n console.log('Search type not set so no cookie name available');\r\n } else {\r\n // console.log('Setting %o cookie to %o', this.SearchType, searchParams);\r\n Cookies.set(this.SearchType, searchParams, {\r\n //expires: 1 - Session cookie\r\n });\r\n }\r\n\r\n return searchParams;\r\n }\r\n}\r\n\r\n\r\n\r\nvar newsFilterButtons = document.querySelectorAll(\".newsFilter\");\r\n\r\nif (newsFilterButtons) {\r\n newsFilterButtons.forEach((filterButton) => {\r\n filterButton.addEventListener(\"click\", handleNewsFilterButton);\r\n })\r\n}\r\n\r\nfunction handleNewsFilterButton(e) {\r\n var expanded = e.target.getAttribute(\"aria-expanded\");\r\n if (expanded === \"true\") {\r\n e.target.setAttribute(\"aria-expanded\", \"false\");\r\n } else {\r\n e.target.setAttribute(\"aria-expanded\", \"true\");\r\n }\r\n}\r\n\r\n"],"mappings":"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"}