(function (combo) { 'use strict'; let componentName = "subscribe"; const subscribeComponentSelector = `.${componentName}-cs`; const forms = document.querySelectorAll(`${subscribeComponentSelector} form`); Array.from(forms).forEach(form => { form.addEventListener('submit', async (event) => { event.preventDefault(); event.stopPropagation(); if (form.checkValidity()) { let url = new URL(form.getAttribute("action")); let formData = new FormData(form); let response = await fetch(url, { body: formData, method: "post", }); /** * Modal */ let idResultModal = combo.Html.createRandomIdWithPrefix(componentName); let modal = combo.Modal.getOrCreate(idResultModal); const button = event.target; let componentElement = button.closest(subscribeComponentSelector); modal.setPlacementBottomToElement(componentElement); let message; try { let data = await response.json(); message = data.message; } catch (e) { // in case of network error } if (response.status !== 200) { modal.setHeader("Error"); if (typeof message === 'undefined') { message = "Sorry. The server seems to be down."; } } else { let header = form.getAttribute("data-success-header"); if (header === null) { header = "Hurray!"; } modal.setHeader(header); message = form.getAttribute("data-success-content"); if (message === null) { message = "A validation email has been send.
Check your mailbox and click on the validation link.
If you don't find our email, check your spambox."; } } modal .addBody(message) .show(); } }, false); }); })(combo);