{"version":3,"sources":["webpack:///./src/feature/search/search.js","webpack:///./src/foundation/utilities/urlParams.js"],"names":["defaultSettings","dev","classes","filterSectionOpen","Search","element","el","initDomCache","settings","Object","assign","parseSettings","params","window","location","href","filterToggle","querySelectorAll","filter","sort","removeFilterButtons","addEventListeners","addEventListener","dom","form","e","preventDefault","query","encodeURIComponent","input","value","page","updatePageWithParams","clearAll","clearAllFilters","mobileFilter","target","getAttribute","title","modalTarget","appendChild","filterContent","initializeFilterModal","forEach","toggle","toggleFilterSection","item","toggleFilter","toggleSort","removeFilter","newParams","modal","checkboxes","slice","call","filterData","reduce","data","isCheckbox","isChecked","filterId","id","replace","filterType","dataset","push","modalTitle","fullscreen","nopadding","closeBtn","instance","publish","onOpen","modalElement","initializeMobileFilters","updateMobileFilterValues","saveFilterButton","querySelector","toggleFilterButtons","event","handleFilterSave","items","i","length","label","htmlFor","filterIDs","split","checkboxID","indexOf","checked","filterItems","index","splice","toString","filterID","emptyFilter","JSON","parse","section","parentNode","height","offsetHeight","wrapper","classList","contains","style","maxHeight","remove","add","type","BaseFeature","getUrlParamsToJson","setUrlParamsFromJson","url","queryString","search","obj","arr","a","paramName","paramValue","toLowerCase","match","key","exec","keys","map","join"],"mappings":"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","file":"39-80bcbc12.pkg.js","sourcesContent":["import { getUrlParamsToJson, setUrlParamsFromJson } from '../../foundation/utilities/urlParams';\r\nimport BaseFeature from '../../foundation/base/base';\r\n\r\nconst defaultSettings = {\r\n\tdev: false\r\n};\r\n\r\nconst classes = {\r\n\tfilterSectionOpen: 'o-search__filter-section--open'\r\n};\r\n\r\nexport default class Search extends BaseFeature {\r\n\tconstructor(element) {\r\n\t\tsuper(element);\r\n\t\tthis.el = element;\r\n\t\tthis.initDomCache();\r\n\t\tthis.settings = Object.assign({}, defaultSettings, this.parseSettings());\r\n\t\t// URL parameter data\r\n\t\tthis.params = getUrlParamsToJson(window.location.href) || {};\r\n\t\t// Toggles\r\n\t\tthis.filterToggle = this.el.querySelectorAll('[data-js=\"filter-toggle\"]');\r\n\t\tthis.filter = this.el.querySelectorAll('[data-js=\"filter\"]');\r\n\t\tthis.sort = this.el.querySelectorAll('[data-js=\"sort\"]');\r\n\t\tthis.removeFilterButtons = this.el.querySelectorAll('[data-js=\"remove-filter\"]');\r\n\r\n\t\tthis.addEventListeners();\r\n\t}\r\n\r\n\taddEventListeners() {\r\n\t\tthis.addEventListener(this.dom.form, 'submit', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.params.query = encodeURIComponent(this.dom.input.value);\r\n\t\t\tthis.params.page = 1;\r\n\t\t\tthis.updatePageWithParams();\r\n\t\t});\r\n\r\n\t\tthis.addEventListener(this.dom.clearAll, 'click', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.clearAllFilters();\r\n\t\t});\r\n\r\n\t\tthis.addEventListener(this.dom.mobileFilter, 'click', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tconst target = this.dom.mobileFilter.getAttribute('data-target');\r\n\t\t\tconst title = this.dom.mobileFilter.getAttribute('data-title');\r\n\t\t\tthis.dom.modalTarget.appendChild(this.dom.filterContent);\r\n\t\t\tthis.initializeFilterModal(target, title);\r\n\t\t});\r\n\r\n\t\tthis.filterToggle.forEach((toggle) => {\r\n\t\t\tthis.addEventListener(toggle, 'click', (e) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tSearch.toggleFilterSection(toggle);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.filter.forEach((item) => {\r\n\t\t\tthis.addEventListener(item, 'click', (e) => {\r\n\t\t\t\tthis.toggleFilter(item);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.sort.forEach((item) => {\r\n\t\t\tthis.addEventListener(item, 'click', (e) => {\r\n\t\t\t\tthis.toggleSort(item);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.removeFilterButtons.forEach((item) => {\r\n\t\t\tthis.addEventListener(item, 'click', (e) => {\r\n\t\t\t\tthis.removeFilter(item);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tupdatePageWithParams(newParams) {\r\n\t\tconst params = newParams || this.params;\r\n\t\twindow.location.href = '?' + setUrlParamsFromJson(params);\r\n\t}\r\n\r\n\thandleFilterSave(modal) {\r\n\t\tconst checkboxes = [].slice.call(modal.element.querySelectorAll('input'));\r\n\t\tconst filterData = [].reduce.call(checkboxes, (data, element) => {\r\n\t\t\t// Only select checked checkboxes in fieldset\r\n\t\t\tif (Search.isCheckbox(element) && Search.isChecked(element)) {\r\n\t\t\t\tconst filterId = element.id.replace('modal-', '');\r\n\t\t\t\tconst filterType = element.dataset.filter;\r\n\t\t\t\tif (data[filterType]) {\r\n\t\t\t\t\tdata[filterType].push(filterId);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdata[filterType] = [];\r\n\t\t\t\t\tdata[filterType].push(filterId);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t}, {});\r\n\t\tif (this.params.query) filterData.query = this.params.query;\r\n\t\tthis.updatePageWithParams(filterData);\r\n\t}\r\n\r\n\tinitializeFilterModal(target, modalTitle) {\r\n\t\tconst fullscreen = false;\r\n\t\tconst nopadding = false;\r\n\t\tconst title = modalTitle;\r\n\t\tconst closeBtn = true;\r\n\t\tconst instance = this;\r\n\t\tthis.publish('/modal/open', {\r\n\t\t\ttarget,\r\n\t\t\ttitle,\r\n\t\t\tfullscreen,\r\n\t\t\tnopadding,\r\n\t\t\tcloseBtn,\r\n\t\t\tonOpen(modalElement) {\r\n\t\t\t\tinstance.initializeMobileFilters(modalElement);\r\n\t\t\t\tinstance.updateMobileFilterValues(modalElement);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tinitializeMobileFilters(modal) {\r\n\t\tconst saveFilterButton = modal.element.querySelector('[data-js=\"save-filter\"]');\r\n\t\tconst toggleFilterButtons = modal.element.querySelectorAll('[data-js=\"filter-toggle\"]');\r\n\r\n\t\t// Update page with selected params\r\n\t\tthis.addEventListener(saveFilterButton, 'click', (event) => {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tthis.handleFilterSave(modal);\r\n\t\t});\r\n\r\n\t\t// Open and close sections\r\n\t\ttoggleFilterButtons.forEach((item) => {\r\n\t\t\tthis.addEventListener(item, 'click', (e) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tSearch.toggleFilterSection(item);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t// Since this is a duplicate of existing items\r\n\t\t// we need to have different id's for inputs and labels\r\n\t\tconst items = modal.element.querySelectorAll('[data-js=\"filter-form-group\"]');\r\n\t\tfor (let i = 0; i < items.length; i++) {\r\n\t\t\tconst input = items[i].querySelector('input[type=\"checkbox\"]');\r\n\t\t\tconst label = items[i].querySelector('label');\r\n\t\t\tinput.id = 'modal-' + input.id;\r\n\t\t\tlabel.htmlFor = input.id;\r\n\t\t}\r\n\t}\r\n\r\n\tupdateMobileFilterValues(modal) {\r\n\t\t// Create array of modal checkboxes\r\n\t\tconst checkboxes = [].slice.call(modal.element.querySelectorAll('input[type=\"checkbox\"]'));\r\n\t\tfor (let i = 0; i < checkboxes.length; i++) {\r\n\t\t\t// Check if filtertype exists, otherwiser continue\r\n\t\t\tconst filterType = checkboxes[i].dataset.filter;\r\n\t\t\tif ((filterType in this.params)) {\r\n\t\t\t\tconst filterIDs = this.params[filterType].split(',').filter(el => el.length !== 0);\r\n\t\t\t\tconst checkboxID = checkboxes[i].id.replace('modal-', ''); // Strip prepended modal- from id\r\n\t\t\t\tif (filterIDs.indexOf(checkboxID) !== -1) {\r\n\t\t\t\t\tcheckboxes[i].checked = true; // Check input if it exists in parameters\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstatic toggleFilterSection(toggle) {\r\n\t\tconst section = toggle.parentNode;\r\n\t\tconst height = section.querySelector('[data-js=\"filter-content\"]').offsetHeight;\r\n\t\tconst wrapper = section.querySelector('[data-js=\"filter-wrapper\"]');\r\n\t\tif (section.classList.contains(classes.filterSectionOpen)) {\r\n\t\t\twrapper.style.maxHeight = '0px';\r\n\t\t\tsection.classList.remove(classes.filterSectionOpen);\r\n\t\t} else {\r\n\t\t\twrapper.style.maxHeight = height + 'px';\r\n\t\t\tsection.classList.add(classes.filterSectionOpen);\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleFilter(item) {\r\n\t\tconst filter = item.getAttribute('data-filter');\r\n\t\tif (!(filter in this.params)) {\r\n\t\t\t// If filter is empty, create it with new value\r\n\t\t\tthis.params[filter] = item.id;\r\n\t\t} else {\r\n\t\t\t// Otherwise create array from existing filter\r\n\t\t\tconst filterItems = this.params[filter].split(',').filter(el => el.length !== 0);\r\n\t\t\tconst index = filterItems.indexOf(item.id);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tfilterItems.splice(index, 1); // Remove item if it already exists\r\n\t\t\t} else {\r\n\t\t\t\tfilterItems.push(item.id); // Add item if it does not exist\r\n\t\t\t}\r\n\t\t\tthis.params[filter] = filterItems.toString();\r\n\t\t}\r\n\t\tthis.params.page = 1;\r\n\t\tthis.updatePageWithParams(); // Reload page with new filters\r\n\t}\r\n\r\n\ttoggleSort(item) {\r\n\t\tconst sort = item.getAttribute('data-sort');\r\n\t\tif (!(sort in this.params)) {\r\n\t\t\tthis.params[sort] = item.checked;\r\n\t\t} else if (this.params[sort] === 'true') {\r\n\t\t\tthis.params[sort] = 'false';\r\n\t\t} else if (this.params[sort] === 'false') {\r\n\t\t\tthis.params[sort] = 'true';\r\n\t\t}\r\n\t\tthis.updatePageWithParams();\r\n\t}\r\n\r\n\tremoveFilter(item) {\r\n\t\tconst filter = item.getAttribute('data-filter');\r\n\t\tconst filterID = item.getAttribute('data-id');\r\n\r\n\t\tconst filterItems = this.params[filter].split(',').filter(el => el.length !== 0);\r\n\t\tconst index = filterItems.indexOf(filterID);\r\n\t\tif (index !== -1) {\r\n\t\t\tfilterItems.splice(index, 1); // Remove item if it already exists\r\n\t\t\tthis.params[filter] = filterItems.toString();\r\n\t\t}\r\n\t\tthis.updatePageWithParams();\r\n\t}\r\n\r\n\tclearAllFilters() {\r\n\t\tconst emptyFilter = {};\r\n\t\tif (this.params.query) emptyFilter.query = this.params.query;\r\n\t\tthis.updatePageWithParams(emptyFilter);\r\n\t}\r\n\r\n\tstatic isCheckbox(element) {\r\n\t\treturn element.type === 'checkbox';\r\n\t}\r\n\r\n\tstatic isChecked(element) {\r\n\t\treturn element.checked;\r\n\t}\r\n\r\n\t// Get settings from data-attributes\r\n\tparseSettings() {\r\n\t\tconst settings = this.el.getAttribute('data-settings') || '{}';\r\n\t\treturn JSON.parse(settings);\r\n\t}\r\n}\r\n","// https://www.sitepoint.com/get-url-parameters-with-javascript/\r\n\r\nexport function getUrlParamsToJson(url) {\r\n\t// get query string from url (optional) or window\r\n\tlet queryString = url ? url.split('?')[1] : window.location.search.slice(1);\r\n\r\n\t// we'll store the parameters here\r\n\tconst obj = {};\r\n\r\n\t// if query string exists\r\n\tif (queryString) {\r\n\t\t// stuff after # is not part of query string, so get rid of it\r\n\t\tqueryString = queryString.split('#')[0];\r\n\r\n\t\t// split our query string into its component parts\r\n\t\tconst arr = queryString.split('&');\r\n\r\n\t\tfor (let i = 0; i < arr.length; i++) {\r\n\t\t\t// separate the keys and the values\r\n\t\t\tconst a = arr[i].split('=');\r\n\r\n\t\t\t// set parameter name and value (use 'true' if empty)\r\n\t\t\tlet paramName = a[0];\r\n\t\t\tlet paramValue = typeof (a[1]) === 'undefined' ? true : a[1];\r\n\r\n\t\t\t// (optional) keep case consistent\r\n\t\t\tparamName = paramName.toLowerCase();\r\n\t\t\tif (typeof paramValue === 'string') paramValue = paramValue.toLowerCase();\r\n\r\n\t\t\t// if the paramName ends with square brackets, e.g. colors[] or colors[2]\r\n\t\t\tif (paramName.match(/\\[(\\d+)?\\]$/)) {\r\n\t\t\t// create key if it doesn't exist\r\n\t\t\t\tconst key = paramName.replace(/\\[(\\d+)?\\]/, '');\r\n\t\t\t\tif (!obj[key]) obj[key] = [];\r\n\r\n\t\t\t\t// if it's an indexed array e.g. colors[2]\r\n\t\t\t\tif (paramName.match(/\\[\\d+\\]$/)) {\r\n\t\t\t\t\t// get the index value and add the entry at the appropriate position\r\n\t\t\t\t\tconst index = /\\[(\\d+)\\]/.exec(paramName)[1];\r\n\t\t\t\t\tobj[key][index] = paramValue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// otherwise add the value to the end of the array\r\n\t\t\t\t\tobj[key].push(paramValue);\r\n\t\t\t\t}\r\n\t\t\t} else if (!obj[paramName]) {\r\n\t\t\t\t// if it doesn't exist, create property\r\n\t\t\t\tobj[paramName] = paramValue;\r\n\t\t\t} else if (obj[paramName] && typeof obj[paramName] === 'string') {\r\n\t\t\t\t// if property does exist and it's a string, convert it to an array\r\n\t\t\t\tobj[paramName] = [obj[paramName]];\r\n\t\t\t\tobj[paramName].push(paramValue);\r\n\t\t\t} else {\r\n\t\t\t\t// otherwise add the property\r\n\t\t\t\tobj[paramName].push(paramValue);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (Object.keys(obj).length === 0) return false;\r\n\treturn obj;\r\n}\r\n\r\nexport function setUrlParamsFromJson(params) {\r\n\treturn Object.keys(params).map(key => key + '=' + params[key]).join('&');\r\n}\r\n"],"sourceRoot":""}