{"version":3,"file":"Src_Scripts_components_footer-newsletter_js.b7e34f6fdbb7def8caf6.js","sources":["webpack://haveselskabet/./Src/Scripts/components/footer-newsletter.js"],"sourcesContent":["export default class FooterNewsletters {\n constructor(elm, args) {\n if (elm.querySelectorAll('form').length === 0) return;\n\n this.elm = elm;\n this.args = args;\n this.form = elm.querySelector('form');\n this.events();\n }\n\n events() {\n this.form.addEventListener('submit', e => {\n e.preventDefault();\n\n if (this.validation()) {\n this.send();\n }\n });\n }\n\n setError(elm, msg) {\n console.log('setError', elm, msg)\n elm.parentNode.querySelector('.invalid-feedback')?.remove();\n\n const invalidElm = document.createElement('div');\n invalidElm.classList.add('invalid-feedback', 'd-block');\n invalidElm.innerText = msg;\n elm.parentNode.appendChild(invalidElm);\n const inputField = elm.parentNode.querySelector('input');\n inputField.classList.add('invalid');\n\n if (window.innerWidth < 992) {\n const label = elm.parentNode.querySelector('label');\n label.style.bottom = '40px';\n }\n }\n\n validation() {\n let valid = true;\n\n const name = this.form.querySelector('[name=name]');\n if (name.value === '') {\n valid = false;\n this.setError(name, this.args.name);\n } else {\n name.parentNode.querySelector('.invalid-feedback')?.remove();\n }\n\n const email = this.form.querySelector('[name=email]');\n if (email.value === '') {\n valid = false;\n this.setError(email, this.args.email);\n } else if (!/^\\s*[_a-z0-9-A-Z-æøåÆØÅ]+(\\.[_a-z0-9-A-Z-æøåÆØÅ]+)*@[a-z0-9-A-Z-]+(\\.[a-z0-9-A-Z-]+)*(\\.[a-z]{2,10})\\s*$/.test(email.value)) {\n valid = false;\n this.setError(email, this.args.emailInvalid);\n } else {\n email.parentNode.querySelector('.invalid-feedback')?.remove();\n email.classList.remove('invalid')\n }\n\n const accept = this.form.querySelector('[name=accept]');\n if (!accept.checked) {\n valid = false;\n this.setError(accept, this.args.accept);\n } else {\n accept.parentNode.querySelector('.invalid-feedback')?.remove();\n accept.classList.remove('invalid')\n }\n\n return valid;\n }\n\n send() {\n const _ = this;\n const data = {};\n for (let i = 0; i < this.form.length; i++) {\n if (this.form[i].name !== '') {\n data[this.form[i].name] = this.form[i].value;\n }\n }\n\n fetch('/Umbraco/api/newsletter/signup', {\n method: 'POST',\n cache: 'no-cache',\n mode: 'cors',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(data),\n })\n .then(response => response.json())\n .then(stream => {\n console.log(stream);\n if (stream.Result) {\n _.elm.querySelector('.newsletter__signup').classList.add('d-none');\n _.elm.querySelector('.newsletter__signedup').classList.remove('d-none');\n } else {\n for (const item in stream.Errors) {\n const elm = _.form.querySelector(`[name=${item}]`);\n if (elm) {\n _.setError(elm, stream.Errors[item]);\n } else {\n console.log(stream.Errors[item]);\n }\n }\n }\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;;A;;A","sourceRoot":""}