{"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":""}