wp/wp-includes/js/dist/script-modules/block-library/form/view.js
changeset 22 8c2e4d02f4ef
equal deleted inserted replaced
21:48c4eec2b7e6 22:8c2e4d02f4ef
       
     1 var __webpack_exports__ = {};
       
     2 /* wp:polyfill */
       
     3 let formSettings;
       
     4 try {
       
     5   formSettings = JSON.parse(document.getElementById('wp-script-module-data-@wordpress/block-library/form/view')?.textContent);
       
     6 } catch {}
       
     7 
       
     8 // eslint-disable-next-line eslint-comments/disable-enable-pair
       
     9 /* eslint-disable no-undef */
       
    10 document.querySelectorAll('form.wp-block-form').forEach(function (form) {
       
    11   // Bail If the form settings not provided or the form is not using the mailto: action.
       
    12   if (!formSettings || !form.action || !form.action.startsWith('mailto:')) {
       
    13     return;
       
    14   }
       
    15   const redirectNotification = status => {
       
    16     const urlParams = new URLSearchParams(window.location.search);
       
    17     urlParams.append('wp-form-result', status);
       
    18     window.location.search = urlParams.toString();
       
    19   };
       
    20 
       
    21   // Add an event listener for the form submission.
       
    22   form.addEventListener('submit', async function (event) {
       
    23     event.preventDefault();
       
    24     // Get the form data and merge it with the form action and nonce.
       
    25     const formData = Object.fromEntries(new FormData(form).entries());
       
    26     formData.formAction = form.action;
       
    27     formData._ajax_nonce = formSettings.nonce;
       
    28     formData.action = formSettings.action;
       
    29     formData._wp_http_referer = window.location.href;
       
    30     formData.formAction = form.action;
       
    31     try {
       
    32       const response = await fetch(formSettings.ajaxUrl, {
       
    33         method: 'POST',
       
    34         headers: {
       
    35           'Content-Type': 'application/x-www-form-urlencoded'
       
    36         },
       
    37         body: new URLSearchParams(formData).toString()
       
    38       });
       
    39       if (response.ok) {
       
    40         redirectNotification('success');
       
    41       } else {
       
    42         redirectNotification('error');
       
    43       }
       
    44     } catch (error) {
       
    45       redirectNotification('error');
       
    46     }
       
    47   });
       
    48 });
       
    49