{"version":3,"file":"nudge.js","names":[],"sources":["../resources/javascript/nudge.js"],"sourcesContent":["document.addEventListener('DOMContentLoaded', () => {\n    const nudgeForms = document.querySelectorAll('.nudge-form');\n\n    nudgeForms.forEach(form => {\n        form.addEventListener('submit', async e => {\n            e.preventDefault();\n\n            const form = e.currentTarget;\n            const formData = new FormData(form);\n            const action = form.getAttribute('action');\n            const response = await fetch(action, {\n                method: 'POST',\n                body: formData,\n                headers: {\n                    'X-Requested-With': 'XMLHttpRequest',\n                },\n            });\n\n            form.querySelectorAll('p.error').forEach(el => el.remove());\n\n            const data = await response.json();\n\n            if (data?.result) {\n                handleSuccess(form);\n                return;\n            }\n\n            if (data?.result === false && data.hasOwnProperty('payload')) {\n                handleErrors(data.payload, form);\n                return;\n            }\n        });\n    });\n});\n\nconst handleSuccess = form => {\n    const formIntro = form.parentElement.parentElement;\n    const formContainer = formIntro.parentElement;\n    const formIntroHeight = formIntro.scrollHeight;\n\n    formIntro.classList.add('block__nudge-intro--hidden');\n    formContainer.style.height = `${formIntroHeight}px`;\n\n    const tracking = JSON.parse(form.dataset.tracking);\n\n    if (tracking) {\n        dataLayer.push(tracking);\n    }\n\n    formIntro.addEventListener('transitionend', () => {\n        const thanksContainer = formIntro.nextElementSibling;\n        if (thanksContainer.scrollHeight > formIntroHeight) {\n            formContainer.style.height = `${thanksContainer.scrollHeight}px`;\n        }\n\n        thanksContainer.classList.add('block__nudge-thanks--show');\n    });\n};\n\nconst handleErrors = (errors, form) => {\n    for (const [key, value] of Object.entries(errors)) {\n        const relatedInputEl = form.querySelector(`#${key}`);\n        const relatedInputWrap = relatedInputEl.parentElement;\n        const errorP = document.createElement('p');\n\n        errorP.textContent = value;\n        errorP.classList.add('error');\n        relatedInputWrap.classList.add('field-error');\n        relatedInputEl.parentElement.appendChild(errorP);\n        relatedInputEl.style.borderColor = '#d43354';\n    }\n};\n"],"mappings":"AAAA,SAAS,iBAAiB,uBAA0B,CAGhD,SAF4B,iBAAiB,aAEpC,CAAC,CAAC,QAAQ,GAAQ,CACvB,EAAK,iBAAiB,SAAU,KAAM,IAAK,CACvC,EAAE,eAAe,EAEjB,IAAM,EAAO,EAAE,cACT,EAAW,IAAI,SAAS,CAAI,EAC5B,EAAS,EAAK,aAAa,QAAQ,EACnC,EAAW,MAAM,MAAM,EAAQ,CACjC,OAAQ,OACR,KAAM,EACN,QAAS,CACL,mBAAoB,gBACxB,CACJ,CAAC,EAED,EAAK,iBAAiB,SAAS,CAAC,CAAC,QAAQ,GAAM,EAAG,OAAO,CAAC,EAE1D,IAAM,EAAO,MAAM,EAAS,KAAK,EAEjC,GAAI,GAAA,MAAA,EAAM,OAAQ,CACd,EAAc,CAAI,EAClB,MACJ,CAEA,GAAI,GAAM,SAAW,IAAS,EAAK,eAAe,SAAS,EAAG,CAC1D,EAAa,EAAK,QAAS,CAAI,EAC/B,MACJ,CACJ,CAAC,CACL,CAAC,CACL,CAAC,EAED,MAAM,EAAgB,GAAQ,CAC1B,IAAM,EAAY,EAAK,cAAc,cAC/B,EAAgB,EAAU,cAC1B,EAAkB,EAAU,aAElC,EAAU,UAAU,IAAI,4BAA4B,EACpD,EAAc,MAAM,OAAS,GAAG,EAAA,IAEhC,IAAM,EAAW,KAAK,MAAM,EAAK,QAAQ,QAAQ,EAE7C,GACA,UAAU,KAAK,CAAQ,EAG3B,EAAU,iBAAiB,oBAAuB,CAC9C,IAAM,EAAkB,EAAU,mBAC9B,EAAgB,aAAe,IAC/B,EAAc,MAAM,OAAS,GAAG,EAAgB,aAAA,KAGpD,EAAgB,UAAU,IAAI,2BAA2B,CAC7D,CAAC,CACL,EAEM,GAAgB,EAAQ,IAAS,CACnC,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,CAAM,EAAG,CAC/C,IAAM,EAAiB,EAAK,cAAc,IAAI,GAAK,EAC7C,EAAmB,EAAe,cAClC,EAAS,SAAS,cAAc,GAAG,EAEzC,EAAO,YAAc,EACrB,EAAO,UAAU,IAAI,OAAO,EAC5B,EAAiB,UAAU,IAAI,aAAa,EAC5C,EAAe,cAAc,YAAY,CAAM,EAC/C,EAAe,MAAM,YAAc,SACvC,CACJ"}