From 97e7c319d656a5f05489ca996e249e7359303d4d Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 31 May 2026 22:42:33 +0000
Subject: [PATCH] =Jakevan edits done?
---
build/forms/view.js | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 116 insertions(+), 1 deletions(-)
diff --git a/build/forms/view.js b/build/forms/view.js
index 428e09c..f9dfe92 100644
--- a/build/forms/view.js
+++ b/build/forms/view.js
@@ -1 +1,116 @@
-(()=>{class o{constructor(){this.controller=new window.jvbForm,document.querySelectorAll(".jvb-form-block form").forEach((o=>{this.controller.registerForm(o,{autosave:!0})})),this.controller.subscribe(((o,t)=>{"form-submit"===o&&this.handleFormSubmission(t)}))}async handleFormSubmission(o){let t=o.formId,e=o.config,r=o.fullData,s=e.element,n={"X-WP-Nonce":jvbSettings.nonce,"Content-Type":"application/json"};s.closest(".jvb-form-block"),this.controller.showFormStatus(t,"uploading");try{const o=await fetch(`${jvbSettings.api}forms`,{method:"POST",headers:n,body:JSON.stringify(r)});if(!o.ok){this.controller.showFormStatus(t,"error");const e=await o.json().catch((()=>({})));throw new Error(e.message||`Request failed with status ${o.status}`)}this.controller.showFormStatus(t,"submitted"),this.controller.showSummary(t,".jvb-form-block")}catch(o){throw o}finally{this.controller.store.delete(t)}}}document.addEventListener("DOMContentLoaded",(function(){new o}))})();
\ No newline at end of file
+/******/ (() => { // webpackBootstrap
+/*!***************************!*\
+ !*** ./src/forms/view.js ***!
+ \***************************/
+/**
+ * view.js
+ * Frontend JavaScript for the Form Block
+ * Handles form validation and submission
+ */
+/**
+ * view.js
+ * Frontend JavaScript for the Form Block
+ */
+class FormBlock {
+ constructor() {
+ this.controller = window.jvbForm;
+ document.querySelectorAll('.jvb-form-block form').forEach(form => {
+ this.controller.registerForm(form, {
+ cache: true,
+ autoUpload: false,
+ imageMeta: false
+ });
+ });
+ this.controller.subscribe((event, data) => {
+ if (event === 'form-submit') {
+ this.handleFormSubmission(data).then(() => {});
+ }
+ });
+ }
+ async handleFormSubmission(eventData) {
+ const {
+ config,
+ data
+ } = eventData;
+ const form = config.element;
+ const submitData = new FormData();
+
+ // Add regular form fields
+ for (const [key, value] of Object.entries(data)) {
+ if (Array.isArray(value)) {
+ value.forEach(v => submitData.append(`${key}[]`, v));
+ } else if (typeof value === 'object' && value !== null) {
+ submitData.append(key, JSON.stringify(value));
+ } else {
+ submitData.append(key, value);
+ }
+ }
+ config.element.querySelectorAll('[name="form_id"],[name="form_type"],[name="timestamp"],[name="cf-turnstile-response"]').forEach(input => {
+ submitData.append(input.name, input.value);
+ });
+
+ // Add uploaded files
+ if (window.jvbUploads) {
+ try {
+ const files = await window.jvbUploads.getFilesForForm(form);
+ files.forEach(({
+ file,
+ fieldName
+ }) => {
+ submitData.append(`${fieldName}[]`, file);
+ });
+ } catch (error) {
+ console.error('Error getting files:', error);
+ }
+ }
+ this.controller.showFormStatus(config.id, 'uploading');
+ try {
+ const response = await fetch(`${jvbSettings.api}forms`, {
+ method: 'POST',
+ credentials: 'same-origin',
+ body: submitData
+ });
+ const result = await response.json();
+ if (!response.ok) {
+ this.controller.showFormStatus(config.id, 'error');
+ this.controller.handleFormError(form, result);
+ return;
+ }
+ this.controller.showFormStatus(config.id, 'submitted');
+ // this.controller.handleFormSuccess(form, result);
+ this.controller.showSummary({
+ changes: data,
+ config: config
+ });
+ window.jvbA11y.announce('Form successfully submitted!');
+
+ // Clean up uploaded files
+ if (window.jvbUploads) {
+ const uploadFields = form.querySelectorAll('[data-upload-field]');
+ for (const field of uploadFields) {
+ const fieldId = window.jvbUploads.determineFieldId(field);
+ await window.jvbUploads.clearFieldFromStores(fieldId);
+ }
+ }
+ } catch (error) {
+ console.error('Form submission error:', error);
+ this.controller.showFormStatus(config.id, 'error');
+ this.controller.handleFormError(form, {
+ message: 'Network error. Please check your connection and try again.',
+ code: 'network_error'
+ });
+ } finally {
+ await this.controller.store.delete(config.id);
+ }
+ }
+}
+document.addEventListener('DOMContentLoaded', async function () {
+ window.auth.subscribe(event => {
+ if (event === 'auth-loaded') {
+ new FormBlock();
+ }
+ });
+});
+/******/ })()
+;
+//# sourceMappingURL=view.js.map
\ No newline at end of file
--
Gitblit v1.10.0