{"version":3,"file":"4796.eb0920d7dfffe8750eee.js","mappings":"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","sources":["webpack://National Motor Museum Trust/./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 singleSelectionMode: fc.classList.contains('single-selection')\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 this.filterControls[filterIndex].tags[i].input.onclick = () => {\r\n if(this.filterControls[filterIndex].singleSelectionMode) {\r\n // uncheck all other tags in this filter\r\n this.filterControls[filterIndex].tags.forEach((tag, tagIndex) => {\r\n if(tagIndex != i) {\r\n tag.input.checked = false;\r\n tag.input.removeAttribute('checked');\r\n }\r\n });\r\n }\r\n if(this.liveFiltering) this.updateFilter(filterIndex);\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","singleSelectionMode","t","input","label","innerHTML","onclick","tag","tagIndex","checked","removeAttribute","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","submit","activeTagsContent","updateActivetags","d","findData","filterValues","split","f","getIndex","filterSetting","toString","mode","setItem","frag","document","createDocumentFragment","appendChild","dispatchEvent","ariaHidden","newLi","createElement","click","setAttribute","updateURL","url","location","href","replace","oldUrl","hasQuery","indexOf","encodedTag","encodeURIComponent","history","replaceState","hideResult","ff","includes","createFrom","wrappers","node","nodeType"],"sourceRoot":""}