web-mojo 2.1.374 → 2.1.377
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin.cjs.js +1 -1
- package/dist/admin.es.js +10 -10
- package/dist/auth.cjs.js +1 -1
- package/dist/auth.cjs.js.map +1 -1
- package/dist/auth.es.js +3 -3
- package/dist/auth.es.js.map +1 -1
- package/dist/charts.cjs.js +1 -1
- package/dist/charts.es.js +2 -2
- package/dist/chunks/{ContextMenu-Bj0vnzNa.js → ContextMenu-BWnqzYVd.js} +2 -2
- package/dist/chunks/{ContextMenu-Bj0vnzNa.js.map → ContextMenu-BWnqzYVd.js.map} +1 -1
- package/dist/chunks/{ContextMenu-C7v0VIY_.js → ContextMenu-D2tBgZ0e.js} +2 -2
- package/dist/chunks/{ContextMenu-C7v0VIY_.js.map → ContextMenu-D2tBgZ0e.js.map} +1 -1
- package/dist/chunks/{DataView-DJmDpOGX.js → DataView-CW3BsyCC.js} +2 -2
- package/dist/chunks/{DataView-DJmDpOGX.js.map → DataView-CW3BsyCC.js.map} +1 -1
- package/dist/chunks/{DataView-B4G04Dmp.js → DataView-CzkzVfVN.js} +2 -2
- package/dist/chunks/{DataView-B4G04Dmp.js.map → DataView-CzkzVfVN.js.map} +1 -1
- package/dist/chunks/{Dialog-BCY5-1_K.js → Dialog-CJnRsIRI.js} +2 -2
- package/dist/chunks/{Dialog-BCY5-1_K.js.map → Dialog-CJnRsIRI.js.map} +1 -1
- package/dist/chunks/{Dialog-BVmpi0NI.js → Dialog-LGRqcq9L.js} +5 -5
- package/dist/chunks/{Dialog-BVmpi0NI.js.map → Dialog-LGRqcq9L.js.map} +1 -1
- package/dist/chunks/{FilePreviewView-D9bsPjLJ.js → FilePreviewView-D566wPDs.js} +2 -2
- package/dist/chunks/{FilePreviewView-D9bsPjLJ.js.map → FilePreviewView-D566wPDs.js.map} +1 -1
- package/dist/chunks/{FilePreviewView-BW4q9CWy.js → FilePreviewView-D_Vxhbgh.js} +6 -6
- package/dist/chunks/{FilePreviewView-BW4q9CWy.js.map → FilePreviewView-D_Vxhbgh.js.map} +1 -1
- package/dist/chunks/{FormView-CtNmBv4F.js → FormView-DJqs63UC.js} +2 -2
- package/dist/chunks/FormView-DJqs63UC.js.map +1 -0
- package/dist/chunks/{FormView-DOVHdh_a.js → FormView-m5tw5nNB.js} +29 -16
- package/dist/chunks/FormView-m5tw5nNB.js.map +1 -0
- package/dist/chunks/{MetricsChart-Cs2FzC_Q.js → MetricsChart-DAsnnfJU.js} +3 -3
- package/dist/chunks/{MetricsChart-Cs2FzC_Q.js.map → MetricsChart-DAsnnfJU.js.map} +1 -1
- package/dist/chunks/{MetricsChart-B8ZVKD9S.js → MetricsChart-Dv1FjVHY.js} +2 -2
- package/dist/chunks/{MetricsChart-B8ZVKD9S.js.map → MetricsChart-Dv1FjVHY.js.map} +1 -1
- package/dist/chunks/{PDFViewer-Ke5LjPjK.js → PDFViewer-mJGc4Jhu.js} +3 -3
- package/dist/chunks/{PDFViewer-Ke5LjPjK.js.map → PDFViewer-mJGc4Jhu.js.map} +1 -1
- package/dist/chunks/{PDFViewer-BwjHxhaW.js → PDFViewer-t0RM_1eX.js} +2 -2
- package/dist/chunks/{PDFViewer-BwjHxhaW.js.map → PDFViewer-t0RM_1eX.js.map} +1 -1
- package/dist/chunks/{Page-Bel8oJt_.js → Page-Bs2o-GSU.js} +2 -2
- package/dist/chunks/{Page-Bel8oJt_.js.map → Page-Bs2o-GSU.js.map} +1 -1
- package/dist/chunks/{Page-BA2qmbk-.js → Page-Ds6akb5s.js} +2 -2
- package/dist/chunks/{Page-BA2qmbk-.js.map → Page-Ds6akb5s.js.map} +1 -1
- package/dist/chunks/{TopNav-B7LbpdYy.js → TopNav-COdpl44u.js} +2 -2
- package/dist/chunks/{TopNav-B7LbpdYy.js.map → TopNav-COdpl44u.js.map} +1 -1
- package/dist/chunks/{TopNav-D8bye4a-.js → TopNav-Ck5XOp7S.js} +2 -2
- package/dist/chunks/{TopNav-D8bye4a-.js.map → TopNav-Ck5XOp7S.js.map} +1 -1
- package/dist/chunks/{WebApp-BkXGQTaY.js → WebApp-B3IFukwD.js} +2 -2
- package/dist/chunks/{WebApp-BkXGQTaY.js.map → WebApp-B3IFukwD.js.map} +1 -1
- package/dist/chunks/{WebApp-DdnnC4q6.js → WebApp-BHqYQKaY.js} +12 -12
- package/dist/chunks/{WebApp-DdnnC4q6.js.map → WebApp-BHqYQKaY.js.map} +1 -1
- package/dist/docit.cjs.js +1 -1
- package/dist/docit.es.js +5 -5
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +11 -11
- package/dist/lightbox.cjs.js +1 -1
- package/dist/lightbox.es.js +4 -4
- package/package.json +1 -1
- package/dist/chunks/FormView-CtNmBv4F.js.map +0 -1
- package/dist/chunks/FormView-DOVHdh_a.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { M as Mustache, h as MOJOUtils, V as View } from "./WebApp-
|
|
1
|
+
import { M as Mustache, h as MOJOUtils, V as View } from "./WebApp-BHqYQKaY.js";
|
|
2
2
|
class FormBuilder {
|
|
3
3
|
constructor(config = {}) {
|
|
4
4
|
this.fields = config.fields || [];
|
|
@@ -4194,6 +4194,8 @@ class FormView extends View {
|
|
|
4194
4194
|
this.autosaveModelField = autosaveModelField;
|
|
4195
4195
|
this.customComponents = /* @__PURE__ */ new Map();
|
|
4196
4196
|
this.fieldStatusManagers = /* @__PURE__ */ new Map();
|
|
4197
|
+
this.saveTimeouts = /* @__PURE__ */ new Map();
|
|
4198
|
+
this.isSaving = false;
|
|
4197
4199
|
this.data = this.prepareFormData();
|
|
4198
4200
|
this.formConfig = formConfig || { fields: fields || [] };
|
|
4199
4201
|
this.formBuilder = new FormBuilder({
|
|
@@ -4436,26 +4438,36 @@ class FormView extends View {
|
|
|
4436
4438
|
this.emit("field:change", { field: fieldName, value });
|
|
4437
4439
|
}
|
|
4438
4440
|
/**
|
|
4439
|
-
* Handle saving individual field changes to the model
|
|
4441
|
+
* Handle saving individual field changes to the model with debouncing
|
|
4440
4442
|
* @param {string} fieldName - Name of the field being saved
|
|
4441
4443
|
* @param {*} value - New value to save
|
|
4442
4444
|
*/
|
|
4443
4445
|
async handleFieldSave(fieldName, value) {
|
|
4444
|
-
if (!this.model) return;
|
|
4446
|
+
if (!this.model || this.isSaving) return;
|
|
4447
|
+
if (this.saveTimeouts.has(fieldName)) {
|
|
4448
|
+
clearTimeout(this.saveTimeouts.get(fieldName));
|
|
4449
|
+
}
|
|
4445
4450
|
const statusManager = this.getFieldStatusManager(fieldName);
|
|
4446
|
-
|
|
4447
|
-
|
|
4448
|
-
|
|
4449
|
-
|
|
4450
|
-
|
|
4451
|
-
|
|
4452
|
-
this.model.
|
|
4451
|
+
statusManager.showStatus("saving");
|
|
4452
|
+
const timeoutId = setTimeout(async () => {
|
|
4453
|
+
try {
|
|
4454
|
+
this.isSaving = true;
|
|
4455
|
+
this.saveTimeouts.delete(fieldName);
|
|
4456
|
+
this._isFormDrivenChange = true;
|
|
4457
|
+
if (typeof this.model.save === "function") {
|
|
4458
|
+
await this.model.save({ [fieldName]: value });
|
|
4459
|
+
} else {
|
|
4460
|
+
this.model.set(fieldName, value);
|
|
4461
|
+
}
|
|
4462
|
+
statusManager.showStatus("saved");
|
|
4463
|
+
} catch (error) {
|
|
4464
|
+
console.error("Field save error:", error);
|
|
4465
|
+
statusManager.showStatus("error", { message: error.message });
|
|
4466
|
+
} finally {
|
|
4467
|
+
this.isSaving = false;
|
|
4453
4468
|
}
|
|
4454
|
-
|
|
4455
|
-
|
|
4456
|
-
console.error("Field save error:", error);
|
|
4457
|
-
statusManager.showStatus("error", { message: error.message });
|
|
4458
|
-
}
|
|
4469
|
+
}, 300);
|
|
4470
|
+
this.saveTimeouts.set(fieldName, timeoutId);
|
|
4459
4471
|
}
|
|
4460
4472
|
/**
|
|
4461
4473
|
* Get or create a field status manager for a specific field
|
|
@@ -4966,6 +4978,7 @@ class FormView extends View {
|
|
|
4966
4978
|
}
|
|
4967
4979
|
}
|
|
4968
4980
|
_onModelChange() {
|
|
4981
|
+
if (this.isSaving) return;
|
|
4969
4982
|
this.data = this.prepareFormData();
|
|
4970
4983
|
if (this.isMounted()) {
|
|
4971
4984
|
if (!this._isFormDrivenChange) {
|
|
@@ -5918,4 +5931,4 @@ export {
|
|
|
5918
5931
|
applyFileDropMixin as a,
|
|
5919
5932
|
FormView$1 as b
|
|
5920
5933
|
};
|
|
5921
|
-
//# sourceMappingURL=FormView-
|
|
5934
|
+
//# sourceMappingURL=FormView-m5tw5nNB.js.map
|