{"version":3,"file":"4796.646bf81e60cb61365e6e.js","mappings":"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","sources":["webpack://UKCISA/./wwwroot/app/src/modules/filter-listing/filter-listing.js"],"sourcesContent":["import './filter-listing.scss';\r\n\r\nconst naturalSorter = (as, bs) => {\r\n var a, b, a1, b1, i = 0, n, L,\r\n rx = /(\\.\\d+)|(\\d+(\\.\\d+)?)|([^\\d.]+)|(\\.\\D+)|(\\.$)/g;\r\n if (as === bs) return 0;\r\n a = as.toLowerCase().match(rx);\r\n b = bs.toLowerCase().match(rx);\r\n L = a.length;\r\n while (i < L) {\r\n if (!b[i]) return 1;\r\n a1 = a[i],\r\n b1 = b[i++];\r\n if (a1 !== b1) {\r\n n = a1 - b1;\r\n if (!isNaN(n)) return n;\r\n return a1 > b1 ? 1 : -1;\r\n }\r\n }\r\n return b[i] ? -1 : 0;\r\n};\r\n\r\nconst filteringEvent = new Event('listingUpdated');\r\n\r\nclass FilterListing {\r\n\r\n constructor(el) {\r\n // store element\r\n this.el = el;\r\n // is this a live-filter listing?\r\n this.liveFiltering = this.el.classList.contains('live-filter-listing');\r\n // array to store filter settings\r\n this.filters = [];\r\n // array to store all tags\r\n this.allTags = [];\r\n // find filter controls\r\n this.filtersForm = el.querySelector('form.filter-listing--filters');\r\n this.filterControls = [];\r\n let findFilterControls = this.filtersForm.querySelectorAll('.filter-listing--filters--filter');\r\n if(findFilterControls.length > 0) {\r\n findFilterControls.forEach((fc,i) => {\r\n let filterIndex = parseFloat(fc.dataset.filterIndex);\r\n // store filterControl in array using index value taken from 'data-filter-index' in HTML\r\n this.filterControls[filterIndex] = {\r\n index: filterIndex,\r\n el: fc,\r\n tags: []\r\n }\r\n let findTags = fc.querySelectorAll('.filter-tag');\r\n findTags.forEach((t,i) => {\r\n this.filterControls[filterIndex].tags[i] = {\r\n input: t.querySelector('input[type=\"checkbox\"]'),\r\n label: t.querySelector('label').innerHTML,\r\n };\r\n // add behaviour\r\n if(this.liveFiltering) {\r\n this.filterControls[filterIndex].tags[i].input.onclick = () => {\r\n this.updateFilter(filterIndex);\r\n }\r\n }\r\n });\r\n this.filters[filterIndex] = this.getFilterSetting(filterIndex);\r\n });\r\n }\r\n if(this.liveFiltering) {\r\n // find results\r\n this.resultsWrapper = el.querySelector('.filter-listing--results');\r\n this.results = [];\r\n let findResults = el.querySelectorAll('.filter-listing--results > li');\r\n if(findResults.length > 0) {\r\n findResults.forEach((r,i) => {\r\n this.results[i] = {\r\n itemIndex: i,\r\n el: r,\r\n hmItem: r.querySelector('*[data-hm-item]'),\r\n filterData: this.processFilterData(r),\r\n // text for a-z sorting\r\n azValue: r.dataset.sortAz\r\n }\r\n // sort numeric (eg. price)\r\n let n = r.dataset.sortNumeric;\r\n this.results[i].numericValue = typeof(n) != 'undefined' ? parseFloat(n) : 0;\r\n });\r\n }\r\n // sorting\r\n this.virtualArray = [];\r\n this.sortMode = '';\r\n this.sortingControl = el.querySelector('.filter-listing--sorting select');\r\n if(this.sortingControl != null) {\r\n // create a-z sort order array\r\n this.sortOrderAZ = [];\r\n for(let x = 0, l = this.results.length; x < l; x++) {\r\n this.sortOrderAZ.push({itemIndex: x, azValue: this.results[x].azValue});\r\n }\r\n this.sortOrderAZ.sort(function (a, b) {\r\n return naturalSorter(a.azValue, b.azValue);\r\n });\r\n // create z-a sort order array\r\n this.sortOrderZA = this.sortOrderAZ.slice();\r\n this.sortOrderZA.reverse();\r\n // create numeric-lh sorting array?\r\n this.sortOrderNumericLH = [];\r\n for(let x = 0, l = this.results.length; x < l; x++) {\r\n this.sortOrderNumericLH.push({itemIndex: x, numericValue: this.results[x].numericValue});\r\n }\r\n this.sortOrderNumericLH.sort(function (a, b) {\r\n return (a.numericValue - b.numericValue);\r\n });\r\n // create numeric-hl sorting array?\r\n this.sortOrderNumericHL = this.sortOrderNumericLH.slice();\r\n this.sortOrderNumericHL.reverse();\r\n // control behaviour\r\n this.sortingControl.onchange = () => {\r\n window.requestAnimationFrame(() => {\r\n this.sort(this.sortingControl.options[this.sortingControl.selectedIndex].value);\r\n });\r\n };\r\n // look for sort mode in localStorage and apply if exists\r\n let findSortMode = localStorage.getItem('filterListingSortMode');\r\n if(findSortMode != null) {\r\n this.sort(findSortMode);\r\n // update select element\r\n let sIndex = 0;\r\n for(let x = 0, l = this.sortingControl.options.length; x < l; x++) {\r\n if(this.sortingControl.options[x].value == findSortMode) {\r\n sIndex = x;\r\n break;\r\n }\r\n }\r\n this.sortingControl.selectedIndex = sIndex;\r\n }\r\n }\r\n // reset\r\n this.resetBtn = el.querySelector('.filter-listing--filters button[type=\"reset\"]');\r\n this.resetBtn.onclick = () => {\r\n setTimeout(() => {\r\n for(let x = 0, l = this.filterControls.length; x < l; x++) this.filters[x] = this.getFilterSetting(x);\r\n this.sort(this.sortingControl.options[this.sortingControl.selectedIndex].value);\r\n this.updateResults();\r\n }, 200);\r\n }\r\n } else {\r\n // reset\r\n this.resetBtn = el.querySelector('.filter-listing--filters button[type=\"reset\"]');\r\n this.resetBtn.onclick = (e) => {\r\n e.preventDefault();\r\n if(this.activeTagsWrapper != null) {\r\n this.activeTagsWrapper.innerHTML = '';\r\n }\r\n this.filterControls.forEach(fc => {\r\n fc.tags.forEach(t => {\r\n t.input.checked = false;\r\n });\r\n });\r\n this.filtersForm.submit();\r\n }\r\n }\r\n // active filters tag list\r\n this.activeTagsContent = '';\r\n this.activeTagsWrapper = el.querySelector('ul.filter-listing--active-tags');\r\n if(this.activeTagsWrapper != null) this.updateActivetags();\r\n }\r\n\r\n processFilterData(r) {\r\n let d = [];\r\n let findData = r.dataset.filterValues;\r\n if(typeof(findData) != 'undefined') {\r\n let filter = findData.split('|');\r\n filter.forEach(f => {\r\n d.push(f.split(','));\r\n });\r\n }\r\n return d;\r\n }\r\n\r\n getFilterSetting(getIndex) {\r\n let filterSetting = [];\r\n this.filterControls[getIndex].tags.forEach((t,i) => {\r\n if(t.input.checked) filterSetting.push(i.toString());\r\n });\r\n return filterSetting;\r\n }\r\n\r\n updateFilter(getIndex) {\r\n this.filters[getIndex] = this.getFilterSetting(getIndex);\r\n this.updateResults();\r\n }\r\n\r\n sort(mode) { // sorting uses flex-order and is therefore only visual, not structural\r\n this.sortMode = mode;\r\n // store current mode in localStorage\r\n localStorage.setItem('filterListingSortMode', mode);\r\n switch(mode) {\r\n case 'az':\r\n // alphabetical\r\n this.virtualArray = this.sortOrderAZ.slice();\r\n break\r\n case 'za':\r\n // reverse alphabetical\r\n this.virtualArray = this.sortOrderZA.slice();\r\n break\r\n case 'numeric-lh':\r\n // numeric low to high\r\n this.virtualArray = this.sortOrderNumericLH.slice();\r\n break\r\n case 'numeric-hl':\r\n // numeric high to low\r\n this.virtualArray = this.sortOrderNumericHL.slice();\r\n break\r\n default:\r\n // default order - clear all order classes\r\n this.virtualArray = this.results.slice();\r\n break\r\n }\r\n // rearrange dom structure (fixes tabbing + height-matching)\r\n let frag = document.createDocumentFragment();\r\n for(let x = 0, l = this.virtualArray.length; x < l; x++) {\r\n frag.appendChild(this.results[this.virtualArray[x].itemIndex].el);\r\n }\r\n this.resultsWrapper.appendChild(frag);\r\n frag = null;\r\n window.dispatchEvent(filteringEvent);\r\n }\r\n\r\n updateActivetags() {\r\n let ariaHidden = true;\r\n this.activeTagsWrapper.innerHTML = '';\r\n this.filterControls.forEach(f => {\r\n f.tags.forEach((t,i) => {\r\n if(t.input.checked) {\r\n ariaHidden = false;\r\n let newLi = document.createElement('LI');\r\n newLi.innerHTML = `${t.label}`;\r\n this.activeTagsWrapper.appendChild(newLi);\r\n newLi.querySelector('button').onclick = () => {\r\n f.tags[i].input.click();\r\n if(!this.liveFiltering) {\r\n this.filtersForm.submit();\r\n }\r\n };\r\n }\r\n });\r\n });\r\n if(ariaHidden) {\r\n this.activeTagsWrapper.setAttribute('aria-hidden',true);\r\n } else {\r\n this.activeTagsWrapper.removeAttribute('aria-hidden');\r\n }\r\n }\r\n\r\n updateURL() {\r\n let url = location.href.replace(/\\/$/, \"\").toString();\r\n let oldUrl = url;\r\n let hasQuery = url.indexOf('?') > 0;\r\n this.filterControls.forEach(f => {\r\n f.tags.forEach((t,i) => {\r\n let encodedTag = `cat=${encodeURIComponent(t.label)}`;\r\n if(t.input.checked) {\r\n if(url.indexOf(encodedTag) < 0) {\r\n url = hasQuery ? (url + '&' + encodedTag) : (url + '?' + encodedTag);\r\n }\r\n } else {\r\n if(url.indexOf(encodedTag) > -1) {\r\n url = url.replace('&' + encodedTag, '');\r\n url = url.replace('?' + encodedTag, '?');\r\n url = url.replace('?&', '?');\r\n }\r\n }\r\n });\r\n });\r\n if(oldUrl != url) history.replaceState(null, null, url);\r\n }\r\n\r\n updateResults() {\r\n // update results list\r\n for(let x = 0, l = this.results.length; x < l; x++) {\r\n let hideResult = false;\r\n this.filters.forEach((f,i) => {\r\n let match = true;\r\n if(f.length > 0) {\r\n f.forEach(ff => {\r\n if(!this.results[x].filterData[i].includes(ff)) match = false;\r\n });\r\n if(!match) hideResult = true;\r\n }\r\n });\r\n if(hideResult) {\r\n this.results[x].el.setAttribute('aria-hidden', 'true');\r\n this.results[x].hmItem.setAttribute('data-hm-hidden', true);\r\n } else {\r\n this.results[x].el.removeAttribute('aria-hidden');\r\n this.results[x].hmItem.removeAttribute('data-hm-hidden');\r\n }\r\n }\r\n window.dispatchEvent(filteringEvent);\r\n // update active tags list?\r\n if(this.activeTagsWrapper != null) this.updateActivetags();\r\n // update page url?\r\n this.updateURL();\r\n }\r\n\r\n}\r\n\r\n// export the default function to create\r\nexport function createFrom(wrappers) {\r\n wrappers.forEach((node) => {\r\n // if node is an element\r\n if (node.nodeType === 1) {\r\n new FilterListing(node);\r\n }\r\n });\r\n}"],"names":["filteringEvent","Event","FilterListing","constructor","el","this","liveFiltering","classList","contains","filters","allTags","filtersForm","querySelector","filterControls","findFilterControls","querySelectorAll","length","forEach","fc","i","filterIndex","parseFloat","dataset","index","tags","t","input","label","innerHTML","onclick","updateFilter","getFilterSetting","resultsWrapper","results","findResults","r","itemIndex","hmItem","filterData","processFilterData","azValue","sortAz","n","sortNumeric","numericValue","virtualArray","sortMode","sortingControl","sortOrderAZ","x","l","push","sort","a","b","naturalSorter","as","bs","a1","b1","L","rx","toLowerCase","match","isNaN","sortOrderZA","slice","reverse","sortOrderNumericLH","sortOrderNumericHL","onchange","window","requestAnimationFrame","options","selectedIndex","value","findSortMode","localStorage","getItem","sIndex","resetBtn","setTimeout","updateResults","e","preventDefault","activeTagsWrapper","checked","submit","activeTagsContent","updateActivetags","d","findData","filterValues","split","f","getIndex","filterSetting","toString","mode","setItem","frag","document","createDocumentFragment","appendChild","dispatchEvent","ariaHidden","newLi","createElement","click","setAttribute","removeAttribute","updateURL","url","location","href","replace","oldUrl","hasQuery","indexOf","encodedTag","encodeURIComponent","history","replaceState","hideResult","ff","includes","createFrom","wrappers","node","nodeType"],"sourceRoot":""}