1(function (combo) {
2    'use strict';
3
4    let componentName = "subscribe";
5    const subscribeComponentSelector = `.${componentName}-cs`;
6    const forms = document.querySelectorAll(`${subscribeComponentSelector} form`);
7    Array.from(forms).forEach(form => {
8        form.addEventListener('submit', async (event) => {
9            event.preventDefault();
10            event.stopPropagation();
11            if (form.checkValidity()) {
12                let url = new URL(form.getAttribute("action"));
13                let formData = new FormData(form);
14                let response = await fetch(url, {
15                    body: formData,
16                    method: "post",
17                });
18                /**
19                 * Modal
20                 */
21                let idResultModal = combo.Html.createRandomIdWithPrefix(componentName);
22                let modal = combo.Modal.getOrCreate(idResultModal);
23                const button = event.target;
24                let componentElement = button.closest(subscribeComponentSelector);
25                modal.setPlacementBottomToElement(componentElement);
26                let message;
27                try {
28                    let data = await response.json();
29                    message = data.message;
30                }
31                catch (e) {
32                    // in case of network error
33                }
34                if (response.status !== 200) {
35                    modal.setHeader("Error");
36                    if (typeof message === 'undefined') {
37                        message = "Sorry. The server seems to be down.";
38                    }
39                }
40                else {
41                    let header = form.getAttribute("data-success-header");
42                    if (header === null) {
43                        header = "Hurray!";
44                    }
45                    modal.setHeader(header);
46                    message = form.getAttribute("data-success-content");
47                    if (message === null) {
48                        message = "A validation email has been send. <br>Check your mailbox and click on the validation link.<br>If you don't find our email, check your spambox.";
49                    }
50                }
51                modal
52                    .addBody(message)
53                    .show();
54            }
55        }, false);
56    });
57
58})(combo);
59