From 42fa8304ddb811b0f725f245130f70c0f5e86a6c Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Tue, 04 Nov 2025 06:12:02 +0000
Subject: [PATCH] =Refactored LoginManager to be more extensible and configurable, as well as an AjaxRateLimiter

---
 assets/js/concise/FormController.js |   16 +++++++++++++---
 1 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/assets/js/concise/FormController.js b/assets/js/concise/FormController.js
index cdae988..9a3b075 100644
--- a/assets/js/concise/FormController.js
+++ b/assets/js/concise/FormController.js
@@ -197,9 +197,9 @@
 			element: formElement,
 			id: formId,
 			options: {
-				autoSave: true,
+				autoSave: 'autosave' in formElement.dataset,
 				saveDelay: this.autoSaveDefaults.delay,
-				endpoint: formElement.dataset.save,
+				endpoint: formElement.dataset.save??'',
 				cache: true,
 				...options
 			},
@@ -255,7 +255,7 @@
 
 		// Scan for existing selector fields
 		if (window.jvbSelector) {
-			window.jvbSelector.scanExistingFields();
+			window.jvbSelector.scanExistingFields(form);
 		}
 	}
 
@@ -746,6 +746,9 @@
 	}
 
 	handleChange(event) {
+		if (event.target.closest('[data-ignore]')) {
+			return;
+		}
 		if (this.subscribers.size > 0) {
 			const target = event.target;
 			const form = target.form || target.closest('form');
@@ -780,6 +783,9 @@
 	}
 
 	handleBlur(e) {
+		if (e.target.closest('[data-ignore]')) {
+			return;
+		}
 		const target = e.target;
 		const form = target.form || target.closest('form');
 
@@ -813,6 +819,9 @@
 	}
 
 	handleInput(e) {
+		if (e.target.closest('[data-ignore]') || ! e.target.closest('form')) {
+			return;
+		}
 		const input = e.target.closest('input, textarea, select');
 		if (!input) return;
 
@@ -2109,4 +2118,5 @@
 
 document.addEventListener('DOMContentLoaded', () => {
 	window.jvbForm = FormController;
+	console.log('FormController in window');
 });

--
Gitblit v1.10.0