{"version":3,"file":"house-age-widget.min.js","names":["sInputKeyValidationHelper","sIsValidPostcode","houseBuildDate","endpoint","document","getElementById","apiKey","dataset","apikey","addressLookupURL","address","propertyLookupURL","property","banner","querySelector","progressBar","progressTitle","progressStep","inputPostcodeSection","findPropertyButton","postcode","postcodeSubmit","addressSelect","houseDetailsSection","changePostcode","submitAddress","displayResult","noResults","apiError","backToStart","querySelectorAll","isValid","getPropertyData","async","response","fetch","headers","ok","propertyLookupData","json","actualDate","yearBuilt","value","houseResults","i","length","from","to","dateBuilt","classList","remove","textContent","handleApiErrorStates","submitButtonState","error","forEach","section","add","getAttribute","console","errorMessage","status","Error","getAddresses","addressLookupData","fieldGroup","errorMessageText","fieldset","populateAddress","getAddressData","postcodeData","option","opt","createElement","udprn","preview","appendChild","selectedIndex","reset","step","options","contains","formValidation","elem","type","valTarget","closest","errorMessages","empty","tooShort","tooLong","invalidFormat","alert","button","disabled","innerButtonText","setAttribute","removeAttribute","init","setupKeyListener","addEventListener","event","preventDefault","btn","scrollIntoView","behavior","selectedValue","displayProperty"],"sources":["house-age-widget/house-age-widget.js"],"mappings":"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","ignoreList":[],"sourcesContent":["import { sInputKeyValidationHelper } from '../../shared.min.js';\r\nimport { sIsValidPostcode } from '../../shared.min.js';\r\n\r\nconst houseBuildDate = (() => {\r\n\tconst endpoint = document.getElementById('endpoints');\r\n\tconst apiKey = endpoint.dataset.apikey;\r\n\t//LIVE URLS\r\n\tconst addressLookupURL = endpoint.dataset.address;\r\n\tconst propertyLookupURL = endpoint.dataset.property;\r\n\t//TESTING URLS\r\n\t// const addressLookupURL = 'http://localhost:3000/address-lookup?postcode=';\r\n\t// const propertyLookupURL = 'http://localhost:3000/property-lookup?udprn=';\r\n\tconst banner = document.querySelector('.banner');\r\n\tconst progressBar = banner.querySelector('.banner__progress-bar span');\r\n\tconst progressTitle = banner.querySelector('.banner__title');\r\n\tconst progressStep = banner.querySelector('.banner__progress-step-value');\r\n\tconst inputPostcodeSection = document.getElementById('input-postcode');\r\n\tconst findPropertyButton = inputPostcodeSection.querySelector('#submit-postcode');\r\n\tconst postcode = document.getElementById('hbPostcode');\r\n\tconst postcodeSubmit = document.getElementById('submit-postcode');\r\n\tconst addressSelect = document.getElementById('address-select');\r\n\tconst houseDetailsSection = document.getElementById('house-details');\r\n\tconst changePostcode = document.getElementById('changePostcode');\r\n\tconst submitAddress = document.getElementById('submit-address');\r\n\tconst displayResult = document.getElementById('house-results');\r\n\tconst noResults = document.getElementById('no-results');\r\n\tconst apiError = document.getElementById('api-error');\r\n\tconst backToStart = document.querySelectorAll('.back-to-start');\r\n\tlet isValid;\r\n\r\n\tconst getAddressData = async (addressLookupURL, addressSelect) => {\r\n\t\ttry {\r\n\t\t\tconst response = await fetch(addressLookupURL, {\r\n\t\t\t\theaders: { 'Ocp-Apim-Subscription-Key': apiKey },\r\n\t\t\t});\r\n\r\n\t\t\tif (!response.ok) {\r\n\t\t\t\thandleApiErrorStates(response, inputPostcodeSection);\r\n\t\t\t} else {\r\n\t\t\t\tconst addressLookupData = await response.json();\r\n\r\n\t\t\t\tif (addressLookupData === null || addressLookupData.length === 0) {\r\n\t\t\t\t\tconst fieldGroup = inputPostcodeSection.querySelector('.field-group');\r\n\t\t\t\t\tconst errorMessage = fieldGroup.querySelector('.error-message');\r\n\t\t\t\t\tconst errorMessageText =\r\n\t\t\t\t\t\tfieldset.querySelector('.address-not-found-error').textContent || 'Address could not be found.';\r\n\r\n\t\t\t\t\terrorMessage.textContent = errorMessageText;\r\n\t\t\t\t\tfieldGroup.classList.add('field-group--error');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tpopulateAddress(addressSelect, addressLookupData);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsubmitButtonState(findPropertyButton, false);\r\n\t\t} catch (error) {\r\n\t\t\tapiError.classList.remove('display-none');\r\n\t\t\tinputPostcodeSection.classList.add('display-none');\r\n\t\t\tprogressTitle.textContent = apiError.getAttribute('data-title');\r\n\t\t\tconsole.error(error);\r\n\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getPropertyData = async propertyLookupURL => {\r\n\t\ttry {\r\n\t\t\tconst response = await fetch(propertyLookupURL, {\r\n\t\t\t\theaders: { 'Ocp-Apim-Subscription-Key': apiKey },\r\n\t\t\t});\r\n\r\n\t\t\tif (!response.ok) {\r\n\t\t\t\thandleApiErrorStates(response, displayResult);\r\n\t\t\t} else {\r\n\t\t\t\tconst propertyLookupData = await response.json();\r\n\r\n\t\t\t\tif (propertyLookupData !== null) {\r\n\t\t\t\t\tconst actualDate = propertyLookupData.yearBuilt.value;\r\n\t\t\t\t\tconst houseResults = document.querySelectorAll('.house-result');\r\n\r\n\t\t\t\t\tfor (let i = 0; i < houseResults.length; i++) {\r\n\t\t\t\t\t\tif (actualDate >= houseResults[i].dataset.from && actualDate <= houseResults[i].dataset.to) {\r\n\t\t\t\t\t\t\tconst dateBuilt = houseResults[i].querySelector('.dateBuilt');\r\n\t\t\t\t\t\t\thouseResults[i].classList.remove('display-none');\r\n\t\t\t\t\t\t\tdateBuilt.textContent = `${actualDate}*`;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsubmitButtonState(submitAddress, false);\r\n\t\t} catch (error) {\r\n\t\t\tconst allSections = document.querySelectorAll('#cnfsd-pc-built .house-build-date__section');\r\n\t\t\tallSections.forEach(section => {\r\n\t\t\t\tsection.classList.add('display-none');\r\n\t\t\t});\r\n\t\t\tapiError.classList.remove('display-none');\r\n\t\t\tprogressTitle.textContent = apiError.getAttribute('data-title');\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleApiErrorStates = (response, section) => {\r\n\t\tlet errorMessage = '';\r\n\t\tswitch (response.status) {\r\n\t\t\tcase 400:\r\n\t\t\t\terrorMessage = 'Bad Request: The server could not understand the request due to invalid syntax.';\r\n\t\t\t\tthrow new Error(errorMessage);\r\n\t\t\tcase 401:\r\n\t\t\t\terrorMessage = 'Unauthorized: Access is denied due to invalid credentials.';\r\n\t\t\t\tthrow new Error(errorMessage);\r\n\t\t\tcase 403:\r\n\t\t\t\terrorMessage = 'Forbidden: You do not have the necessary permissions to access this resource.';\r\n\t\t\t\tthrow new Error(errorMessage);\r\n\t\t\tcase 500:\r\n\t\t\t\terrorMessage =\r\n\t\t\t\t\t\"Internal Server Error: The server has encountered a situation it doesn't know how to handle.\";\r\n\t\t\t\tthrow new Error(errorMessage);\r\n\t\t\tcase 404:\r\n\t\t\tdefault:\r\n\t\t\t\tnoResults.classList.remove('display-none');\r\n\t\t\t\tsection.classList.add('display-none');\r\n\t\t\t\tprogressTitle.textContent = noResults.getAttribute('data-title');\r\n\t\t}\r\n\t\treturn errorMessage;\r\n\t};\r\n\r\n\tconst getAddresses = (postcode, addressSelect) => {\r\n\t\tconst addressLookupURLpostcode = `${addressLookupURL}${postcode.value}`;\r\n\t\tgetAddressData(addressLookupURLpostcode, addressSelect);\r\n\t};\r\n\r\n\tconst populateAddress = (addressSelect, postcodeData) => {\r\n\t\tpostcodeData.forEach(option => {\r\n\t\t\tconst opt = document.createElement('option');\r\n\t\t\topt.value = option.udprn;\r\n\t\t\topt.textContent = option.preview;\r\n\t\t\taddressSelect.appendChild(opt);\r\n\t\t\taddressSelect.selectedIndex = 0;\r\n\t\t});\r\n\r\n\t\tprogressStep.textContent = 2;\r\n\t\tprogressBar.classList = '';\r\n\t\tprogressBar.classList.add('progress-2');\r\n\t\tprogressTitle.textContent = houseDetailsSection.getAttribute('data-title');\r\n\r\n\t\tinputPostcodeSection.classList.add('display-none');\r\n\t\thouseDetailsSection.classList.remove('display-none');\r\n\r\n\t\tconst pcResult = document.getElementById('pc-result');\r\n\t\tpcResult.textContent = postcode.value;\r\n\r\n\t\tsubmitButtonState(findPropertyButton, false);\r\n\t};\r\n\r\n\tconst reset = (postcode, displayResult, step, addressSelect) => {\r\n\t\tprogressStep.textContent = 1;\r\n\t\tprogressBar.classList = '';\r\n\t\tprogressBar.classList.add('progress-1');\r\n\t\tprogressTitle.textContent = inputPostcodeSection.getAttribute('data-title');\r\n\t\tnoResults.classList.add('display-none');\r\n\t\tapiError.classList.add('display-none');\r\n\t\tsubmitButtonState(findPropertyButton, false);\r\n\r\n\t\tif (step === '2') {\r\n\t\t\thouseDetailsSection.classList.add('display-none');\r\n\t\t} else if (step === '3') {\r\n\t\t\tdisplayResult.classList.add('display-none');\r\n\t\t}\r\n\r\n\t\twhile (addressSelect.options.length > 1) {\r\n\t\t\taddressSelect.remove(1);\r\n\t\t}\r\n\r\n\t\tconst houseResults = document.querySelectorAll('.house-result');\r\n\r\n\t\tfor (let i = 0; i < houseResults.length; i++) {\r\n\t\t\tif (!houseResults[i].classList.contains('display-none')) {\r\n\t\t\t\thouseResults[i].classList.add('display-none');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinputPostcodeSection.classList.remove('display-none');\r\n\t\tpostcode.value = '';\r\n\t};\r\n\r\n\tconst displayProperty = (displayResult, selectedValue) => {\r\n\t\tconst propertyLookupURLudprn = `${propertyLookupURL}${selectedValue}`;\r\n\r\n\t\tgetPropertyData(propertyLookupURLudprn);\r\n\t\tprogressStep.textContent = 3;\r\n\t\tprogressBar.classList = '';\r\n\t\tprogressBar.classList.add('progress-3');\r\n\t\tprogressTitle.textContent = displayResult.getAttribute('data-title');\r\n\t\tdisplayResult.classList.remove('display-none');\r\n\t\thouseDetailsSection.classList.add('display-none');\r\n\t};\r\n\r\n\tconst formValidation = (elem, type) => {\r\n\t\tconst valTarget = document.querySelector(elem);\r\n\t\tconst fieldset = valTarget.closest('.field-group');\r\n\t\tfieldset.classList.remove('field-group--error');\r\n\r\n\t\tconst errorMessages = {\r\n\t\t\tempty: document.querySelector('.keypress-val-error').textContent,\r\n\t\t\ttooShort: document.querySelector('.keypress-val-error').textContent,\r\n\t\t\ttooLong: document.querySelector('.keypress-val-error').textContent,\r\n\t\t\tinvalidFormat: document.querySelector('.address-not-found-error').textContent,\r\n\t\t};\r\n\r\n\t\tlet errorMessage = '';\r\n\r\n\t\tswitch (type) {\r\n\t\t\tcase 'postcode':\r\n\t\t\t\t({ isValid, errorMessage } = sIsValidPostcode(valTarget.value, errorMessages));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'isSelected':\r\n\t\t\t\tvalTarget.value === '' || valTarget.value === null ? (isValid = false) : (isValid = true);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\talert('Unknown validation type');\r\n\t\t}\r\n\r\n\t\tif (isValid) {\r\n\t\t\tfieldset.classList.remove('field-group--error');\r\n\t\t} else {\r\n\t\t\tif (errorMessage) fieldset.querySelector('.error-message').textContent = errorMessage;\r\n\t\t\tfieldset.classList.add('field-group--error');\r\n\t\t}\r\n\t\treturn isValid;\r\n\t};\r\n\r\n\tconst submitButtonState = (button, disabled) => {\r\n\t\tif (button.getAttribute('data-originaltext') === '' || button.getAttribute('data-originaltext') === null) {\r\n\t\t\tconst innerButtonText = button.textContent;\r\n\t\t\tbutton.setAttribute('data-originaltext', innerButtonText);\r\n\t\t}\r\n\r\n\t\tif (disabled === true) {\r\n\t\t\tbutton.classList.add('btn--loading');\r\n\t\t\tbutton.setAttribute('aria-disabled', true);\r\n\t\t\tbutton.setAttribute('disabled', true);\r\n\t\t\tbutton.textContent = 'loading';\r\n\t\t} else {\r\n\t\t\tbutton.classList.remove('btn--loading');\r\n\t\t\tbutton.removeAttribute('aria-disabled');\r\n\t\t\tbutton.removeAttribute('disabled');\r\n\t\t\tbutton.textContent = button.getAttribute('data-originaltext');\r\n\t\t}\r\n\t};\r\n\r\n\tconst setupKeyListener = () => {\r\n\t\tconst fieldGroup = postcode.closest('.field-group');\r\n\t\tsInputKeyValidationHelper(postcode, 'alphaNumeric', fieldGroup);\r\n\t};\r\n\r\n\tconst init = () => {\r\n\t\tsetupKeyListener();\r\n\r\n\t\tpostcodeSubmit.addEventListener('click', event => {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tsubmitButtonState(findPropertyButton, true);\r\n\r\n\t\t\tformValidation('#hbPostcode', 'postcode');\r\n\r\n\t\t\tif (isValid) {\r\n\t\t\t\tgetAddresses(postcode, addressSelect);\r\n\t\t\t} else {\r\n\t\t\t\tsubmitButtonState(findPropertyButton, false);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tchangePostcode.addEventListener('click', event => {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst step = changePostcode.getAttribute('data-step');\r\n\t\t\treset(postcode, displayResult, step, addressSelect);\r\n\t\t});\r\n\r\n\t\tbackToStart.forEach(btn => {\r\n\t\t\tbtn.addEventListener('click', event => {\r\n\t\t\t\tconst step = btn.getAttribute('data-step');\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\treset(postcode, displayResult, step, addressSelect);\r\n\t\t\t\tbanner.scrollIntoView({ behavior: 'smooth' });\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tsubmitAddress.addEventListener('click', event => {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tformValidation('#address-select', 'isSelected');\r\n\r\n\t\t\tif (isValid) {\r\n\t\t\t\tsubmitButtonState(submitAddress, true);\r\n\t\t\t\tconst selectedValue = addressSelect.value;\r\n\t\t\t\tdisplayProperty(displayResult, selectedValue);\r\n\t\t\t}\r\n\r\n\t\t\tsubmitButtonState(submitAddress, false);\r\n\t\t});\r\n\r\n\t\taddressSelect.addEventListener('change', () => {\r\n\t\t\tformValidation('#address-select', 'isSelected');\r\n\t\t});\r\n\t};\r\n\r\n\treturn {\r\n\t\tinit: init,\r\n\t};\r\n})();\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n\thouseBuildDate.init();\r\n});\r\n"]}