wp/wp-includes/js/dist/script-modules/block-library/form/view.js
changeset 22 8c2e4d02f4ef
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wp/wp-includes/js/dist/script-modules/block-library/form/view.js	Fri Sep 05 18:52:52 2025 +0200
@@ -0,0 +1,49 @@
+var __webpack_exports__ = {};
+/* wp:polyfill */
+let formSettings;
+try {
+  formSettings = JSON.parse(document.getElementById('wp-script-module-data-@wordpress/block-library/form/view')?.textContent);
+} catch {}
+
+// eslint-disable-next-line eslint-comments/disable-enable-pair
+/* eslint-disable no-undef */
+document.querySelectorAll('form.wp-block-form').forEach(function (form) {
+  // Bail If the form settings not provided or the form is not using the mailto: action.
+  if (!formSettings || !form.action || !form.action.startsWith('mailto:')) {
+    return;
+  }
+  const redirectNotification = status => {
+    const urlParams = new URLSearchParams(window.location.search);
+    urlParams.append('wp-form-result', status);
+    window.location.search = urlParams.toString();
+  };
+
+  // Add an event listener for the form submission.
+  form.addEventListener('submit', async function (event) {
+    event.preventDefault();
+    // Get the form data and merge it with the form action and nonce.
+    const formData = Object.fromEntries(new FormData(form).entries());
+    formData.formAction = form.action;
+    formData._ajax_nonce = formSettings.nonce;
+    formData.action = formSettings.action;
+    formData._wp_http_referer = window.location.href;
+    formData.formAction = form.action;
+    try {
+      const response = await fetch(formSettings.ajaxUrl, {
+        method: 'POST',
+        headers: {
+          'Content-Type': 'application/x-www-form-urlencoded'
+        },
+        body: new URLSearchParams(formData).toString()
+      });
+      if (response.ok) {
+        redirectNotification('success');
+      } else {
+        redirectNotification('error');
+      }
+    } catch (error) {
+      redirectNotification('error');
+    }
+  });
+});
+