web-mojo 2.2.46 → 2.2.48
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.cjs.js.map +1 -1
- package/dist/admin.es.js +18 -13
- package/dist/admin.es.js.map +1 -1
- package/dist/auth.cjs.js +1 -1
- package/dist/auth.es.js +1 -1
- package/dist/charts.cjs.js +1 -1
- package/dist/charts.es.js +4 -4
- package/dist/chunks/{ChatView-BpDAh51X.js → ChatView-D9ZaC_gN.js} +28 -7
- package/dist/chunks/ChatView-D9ZaC_gN.js.map +1 -0
- package/dist/chunks/ChatView-Ds4cJWJI.js +2 -0
- package/dist/chunks/ChatView-Ds4cJWJI.js.map +1 -0
- package/dist/chunks/{Collection-C5uDBFur.js → Collection-B8r3o6bK.js} +2 -2
- package/dist/chunks/{Collection-C5uDBFur.js.map → Collection-B8r3o6bK.js.map} +1 -1
- package/dist/chunks/{Collection-C_Ssejpi.js → Collection-Wr1qdfrB.js} +2 -2
- package/dist/chunks/{Collection-C_Ssejpi.js.map → Collection-Wr1qdfrB.js.map} +1 -1
- package/dist/chunks/{ContextMenu-4yi1YZwj.js → ContextMenu-Bu4Sw_GS.js} +3 -3
- package/dist/chunks/{ContextMenu-4yi1YZwj.js.map → ContextMenu-Bu4Sw_GS.js.map} +1 -1
- package/dist/chunks/{ContextMenu-leHTa126.js → ContextMenu-DXtMvkaN.js} +2 -2
- package/dist/chunks/{ContextMenu-leHTa126.js.map → ContextMenu-DXtMvkaN.js.map} +1 -1
- package/dist/chunks/{DataView-DNhn9WNt.js → DataView-DhG_EmV-.js} +2 -2
- package/dist/chunks/{DataView-DNhn9WNt.js.map → DataView-DhG_EmV-.js.map} +1 -1
- package/dist/chunks/{DataView-34YwqbHX.js → DataView-GAorw2F1.js} +2 -2
- package/dist/chunks/{DataView-34YwqbHX.js.map → DataView-GAorw2F1.js.map} +1 -1
- package/dist/chunks/{Dialog-BEhVfg3C.js → Dialog-fb2ecL0p.js} +5 -5
- package/dist/chunks/{Dialog-BEhVfg3C.js.map → Dialog-fb2ecL0p.js.map} +1 -1
- package/dist/chunks/{Dialog-DokUDeCN.js → Dialog-rbzUvwyM.js} +2 -2
- package/dist/chunks/{Dialog-DokUDeCN.js.map → Dialog-rbzUvwyM.js.map} +1 -1
- package/dist/chunks/FormView-CI-mS8ei.js +3 -0
- package/dist/chunks/FormView-CI-mS8ei.js.map +1 -0
- package/dist/chunks/{FormView-CijEouSb.js → FormView-nAFrSOID.js} +100 -30
- package/dist/chunks/FormView-nAFrSOID.js.map +1 -0
- package/dist/chunks/{ListView-CCa2A8AN.js → ListView-CVdyqY9B.js} +2 -2
- package/dist/chunks/{ListView-CCa2A8AN.js.map → ListView-CVdyqY9B.js.map} +1 -1
- package/dist/chunks/{ListView-fAR_2dr2.js → ListView-Dh9FHFip.js} +3 -3
- package/dist/chunks/{ListView-fAR_2dr2.js.map → ListView-Dh9FHFip.js.map} +1 -1
- package/dist/chunks/{MetricsCountryMapView-B-f2p9Sa.js → MetricsCountryMapView-CvvZhGXI.js} +2 -2
- package/dist/chunks/{MetricsCountryMapView-B-f2p9Sa.js.map → MetricsCountryMapView-CvvZhGXI.js.map} +1 -1
- package/dist/chunks/{MetricsCountryMapView-CUOaeRfl.js → MetricsCountryMapView-qU41DcSP.js} +2 -2
- package/dist/chunks/{MetricsCountryMapView-CUOaeRfl.js.map → MetricsCountryMapView-qU41DcSP.js.map} +1 -1
- package/dist/chunks/{MetricsMiniChartWidget-CeTyhPWQ.js → MetricsMiniChartWidget-C7AhQWjP.js} +2 -2
- package/dist/chunks/{MetricsMiniChartWidget-CeTyhPWQ.js.map → MetricsMiniChartWidget-C7AhQWjP.js.map} +1 -1
- package/dist/chunks/{MetricsMiniChartWidget-DqUGRcVX.js → MetricsMiniChartWidget-mKq4dgZs.js} +4 -4
- package/dist/chunks/{MetricsMiniChartWidget-DqUGRcVX.js.map → MetricsMiniChartWidget-mKq4dgZs.js.map} +1 -1
- package/dist/chunks/{PDFViewer-D3kQ_uEY.js → PDFViewer-B7nrzZli.js} +3 -3
- package/dist/chunks/{PDFViewer-D3kQ_uEY.js.map → PDFViewer-B7nrzZli.js.map} +1 -1
- package/dist/chunks/{PDFViewer-DRmN6S3U.js → PDFViewer-Be9x6dIX.js} +2 -2
- package/dist/chunks/{PDFViewer-DRmN6S3U.js.map → PDFViewer-Be9x6dIX.js.map} +1 -1
- package/dist/chunks/{Rest-CtdC4cD9.js → Rest-Bq0Qmce8.js} +32 -15
- package/dist/chunks/Rest-Bq0Qmce8.js.map +1 -0
- package/dist/chunks/Rest-CpEc4pkD.js +2 -0
- package/dist/chunks/Rest-CpEc4pkD.js.map +1 -0
- package/dist/chunks/{TokenManager-gswMG3jv.js → TokenManager-BJ92Oaf0.js} +2 -2
- package/dist/chunks/{TokenManager-gswMG3jv.js.map → TokenManager-BJ92Oaf0.js.map} +1 -1
- package/dist/chunks/{TokenManager-BGM43GBT.js → TokenManager-DHm_MUpV.js} +5 -5
- package/dist/chunks/{TokenManager-BGM43GBT.js.map → TokenManager-DHm_MUpV.js.map} +1 -1
- package/dist/chunks/{WebApp-DZ2-sucS.js → WebApp-BgKy6_WI.js} +2 -2
- package/dist/chunks/{WebApp-DZ2-sucS.js.map → WebApp-BgKy6_WI.js.map} +1 -1
- package/dist/chunks/{WebApp-CKquDcKr.js → WebApp-YAw6Prrk.js} +12 -12
- package/dist/chunks/{WebApp-CKquDcKr.js.map → WebApp-YAw6Prrk.js.map} +1 -1
- package/dist/chunks/{WebSocketClient-iJiqRgNy.js → WebSocketClient-D4xOzuC5.js} +2 -2
- package/dist/chunks/{WebSocketClient-iJiqRgNy.js.map → WebSocketClient-D4xOzuC5.js.map} +1 -1
- package/dist/chunks/{WebSocketClient-BGnzEIjP.js → WebSocketClient-eCM6D3qg.js} +2 -2
- package/dist/chunks/{WebSocketClient-BGnzEIjP.js.map → WebSocketClient-eCM6D3qg.js.map} +1 -1
- package/dist/chunks/{version-QJ6dbqtW.js → version-BiGS3nz0.js} +2 -2
- package/dist/chunks/{version-QJ6dbqtW.js.map → version-BiGS3nz0.js.map} +1 -1
- package/dist/chunks/{version-CbSGnPBZ.js → version-D9rXuJAi.js} +4 -4
- package/dist/chunks/{version-CbSGnPBZ.js.map → version-D9rXuJAi.js.map} +1 -1
- package/dist/docit.cjs.js +1 -1
- package/dist/docit.es.js +6 -6
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +16 -16
- package/dist/lightbox.cjs.js +1 -1
- package/dist/lightbox.es.js +5 -5
- package/dist/map.cjs.js +1 -1
- package/dist/map.es.js +5 -5
- package/dist/timeline.cjs.js +1 -1
- package/dist/timeline.es.js +4 -4
- package/package.json +1 -1
- package/dist/chunks/ChatView-BpDAh51X.js.map +0 -1
- package/dist/chunks/ChatView-oLnrxCFC.js +0 -2
- package/dist/chunks/ChatView-oLnrxCFC.js.map +0 -1
- package/dist/chunks/FormView-CijEouSb.js.map +0 -1
- package/dist/chunks/FormView-ZeKC0Wz7.js +0 -3
- package/dist/chunks/FormView-ZeKC0Wz7.js.map +0 -1
- package/dist/chunks/Rest-Bd1ABsfh.js +0 -2
- package/dist/chunks/Rest-Bd1ABsfh.js.map +0 -1
- package/dist/chunks/Rest-CtdC4cD9.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { M as Mustache, a as MOJOUtils, V as View } from "./Rest-
|
|
1
|
+
import { M as Mustache, a as MOJOUtils, V as View } from "./Rest-Bq0Qmce8.js";
|
|
2
2
|
import { F as FormPlugins } from "./FormPlugins-DY6e88YT.js";
|
|
3
3
|
class FormBuilder {
|
|
4
4
|
constructor(config = {}) {
|
|
@@ -54,11 +54,25 @@ class FormBuilder {
|
|
|
54
54
|
{{label}}{{#required}}<span class="text-danger">*</span>{{/required}}
|
|
55
55
|
</label>
|
|
56
56
|
{{/label}}
|
|
57
|
+
{{#showCopy}}
|
|
58
|
+
<div class="input-group">
|
|
59
|
+
<input type="{{type}}" id="{{fieldId}}" name="{{name}}"
|
|
60
|
+
class="{{inputClass}}{{#error}} is-invalid{{/error}}"
|
|
61
|
+
value="{{fieldValue}}" {{#placeholder}}placeholder="{{placeholder}}"{{/placeholder}}
|
|
62
|
+
{{#required}}required{{/required}} {{#disabled}}disabled{{/disabled}}
|
|
63
|
+
{{#readonly}}readonly{{/readonly}} {{{attrs}}}>
|
|
64
|
+
<button class="btn btn-outline-secondary" type="button" data-action="copy-to-clipboard" data-target="{{fieldId}}" title="Copy to clipboard">
|
|
65
|
+
<i class="bi bi-clipboard"></i>
|
|
66
|
+
</button>
|
|
67
|
+
</div>
|
|
68
|
+
{{/showCopy}}
|
|
69
|
+
{{^showCopy}}
|
|
57
70
|
<input type="{{type}}" id="{{fieldId}}" name="{{name}}"
|
|
58
71
|
class="{{inputClass}}{{#error}} is-invalid{{/error}}"
|
|
59
72
|
value="{{fieldValue}}" {{#placeholder}}placeholder="{{placeholder}}"{{/placeholder}}
|
|
60
73
|
{{#required}}required{{/required}} {{#disabled}}disabled{{/disabled}}
|
|
61
74
|
{{#readonly}}readonly{{/readonly}} {{{attrs}}}>
|
|
75
|
+
{{/showCopy}}
|
|
62
76
|
{{#help}}<div class="{{helpClass}}">{{help}}</div>{{/help}}
|
|
63
77
|
{{#error}}<div class="{{errorClass}}">{{error}}</div>{{/error}}
|
|
64
78
|
</div>
|
|
@@ -112,10 +126,23 @@ class FormBuilder {
|
|
|
112
126
|
{{label}}{{#required}}<span class="text-danger">*</span>{{/required}}
|
|
113
127
|
</label>
|
|
114
128
|
{{/label}}
|
|
129
|
+
{{#showCopy}}
|
|
130
|
+
<div class="position-relative">
|
|
131
|
+
<textarea id="{{fieldId}}" name="{{name}}" class="{{inputClass}}{{#error}} is-invalid{{/error}}"
|
|
132
|
+
rows="{{rows}}" {{#placeholder}}placeholder="{{placeholder}}"{{/placeholder}}
|
|
133
|
+
{{#required}}required{{/required}} {{#disabled}}disabled{{/disabled}}
|
|
134
|
+
{{#readonly}}readonly{{/readonly}} {{{attrs}}}>{{fieldValue}}</textarea>
|
|
135
|
+
<button class="btn btn-sm btn-outline-secondary position-absolute top-0 end-0 m-2" type="button" data-action="copy-to-clipboard" data-target="{{fieldId}}" title="Copy to clipboard">
|
|
136
|
+
<i class="bi bi-clipboard"></i>
|
|
137
|
+
</button>
|
|
138
|
+
</div>
|
|
139
|
+
{{/showCopy}}
|
|
140
|
+
{{^showCopy}}
|
|
115
141
|
<textarea id="{{fieldId}}" name="{{name}}" class="{{inputClass}}{{#error}} is-invalid{{/error}}"
|
|
116
142
|
rows="{{rows}}" {{#placeholder}}placeholder="{{placeholder}}"{{/placeholder}}
|
|
117
143
|
{{#required}}required{{/required}} {{#disabled}}disabled{{/disabled}}
|
|
118
144
|
{{#readonly}}readonly{{/readonly}} {{{attrs}}}>{{fieldValue}}</textarea>
|
|
145
|
+
{{/showCopy}}
|
|
119
146
|
{{#help}}<div class="{{helpClass}}">{{help}}</div>{{/help}}
|
|
120
147
|
{{#error}}<div class="{{errorClass}}">{{error}}</div>{{/error}}
|
|
121
148
|
</div>
|
|
@@ -133,14 +160,24 @@ class FormBuilder {
|
|
|
133
160
|
{{#required}}required{{/required}} {{#disabled}}disabled{{/disabled}}
|
|
134
161
|
{{#readonly}}readonly{{/readonly}}
|
|
135
162
|
data-field-type="htmlpreview" {{{attrs}}}>{{fieldValue}}</textarea>
|
|
136
|
-
<
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
163
|
+
<div class="position-absolute d-flex gap-1" style="top: 8px; right: 8px; z-index: 10;">
|
|
164
|
+
{{#showCopy}}
|
|
165
|
+
<button type="button" class="btn btn-sm btn-outline-secondary"
|
|
166
|
+
data-action="copy-to-clipboard"
|
|
167
|
+
data-target="{{fieldId}}"
|
|
168
|
+
title="Copy to clipboard"
|
|
169
|
+
aria-label="Copy to clipboard">
|
|
170
|
+
<i class="bi bi-clipboard"></i>
|
|
171
|
+
</button>
|
|
172
|
+
{{/showCopy}}
|
|
173
|
+
<button type="button" class="btn btn-sm btn-outline-secondary"
|
|
174
|
+
data-action="preview-html"
|
|
175
|
+
data-target="{{fieldId}}"
|
|
176
|
+
title="Preview HTML"
|
|
177
|
+
aria-label="Preview HTML">
|
|
178
|
+
<i class="bi bi-eye"></i>
|
|
179
|
+
</button>
|
|
180
|
+
</div>
|
|
144
181
|
</div>
|
|
145
182
|
{{#help}}<div class="{{helpClass}}">{{help}}</div>{{/help}}
|
|
146
183
|
{{#error}}<div class="{{errorClass}}">{{error}}</div>{{/error}}
|
|
@@ -898,7 +935,8 @@ class FormBuilder {
|
|
|
898
935
|
required,
|
|
899
936
|
disabled,
|
|
900
937
|
readonly,
|
|
901
|
-
attrs
|
|
938
|
+
attrs,
|
|
939
|
+
showCopy: !!field.showCopy
|
|
902
940
|
};
|
|
903
941
|
if (type === "password" && (field.showToggle || field.strengthMeter || field.capsLockWarning)) {
|
|
904
942
|
const enhancedContext = {
|
|
@@ -962,6 +1000,7 @@ class FormBuilder {
|
|
|
962
1000
|
required,
|
|
963
1001
|
disabled,
|
|
964
1002
|
readonly,
|
|
1003
|
+
showCopy: !!field.showCopy,
|
|
965
1004
|
attrs
|
|
966
1005
|
};
|
|
967
1006
|
return Mustache.render(this.templates.textarea, context);
|
|
@@ -1007,7 +1046,8 @@ class FormBuilder {
|
|
|
1007
1046
|
required,
|
|
1008
1047
|
disabled,
|
|
1009
1048
|
readonly,
|
|
1010
|
-
attrs
|
|
1049
|
+
attrs,
|
|
1050
|
+
showCopy: !!field.showCopy
|
|
1011
1051
|
};
|
|
1012
1052
|
return Mustache.render(this.templates.htmlpreview, context);
|
|
1013
1053
|
}
|
|
@@ -1167,12 +1207,10 @@ class FormBuilder {
|
|
|
1167
1207
|
const error = this.errors[name];
|
|
1168
1208
|
const fieldValue = field.value ?? this.getFieldValue(name) ?? value;
|
|
1169
1209
|
return `
|
|
1170
|
-
<div class="
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
data-field-type="multiselect"
|
|
1175
|
-
data-field-config='${JSON.stringify({
|
|
1210
|
+
<div class="multiselect-placeholder"
|
|
1211
|
+
data-field-name="${name}"
|
|
1212
|
+
data-field-type="multiselect"
|
|
1213
|
+
data-field-config='${JSON.stringify({
|
|
1176
1214
|
name,
|
|
1177
1215
|
value: fieldValue,
|
|
1178
1216
|
placeholder,
|
|
@@ -1180,22 +1218,19 @@ class FormBuilder {
|
|
|
1180
1218
|
disabled,
|
|
1181
1219
|
required
|
|
1182
1220
|
})}'>
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1221
|
+
<input type="hidden" name="${name}" value="${this.escapeHtml(JSON.stringify(fieldValue))}">
|
|
1222
|
+
<select class="form-select${error ? " is-invalid" : ""}"
|
|
1223
|
+
multiple
|
|
1224
|
+
${disabled ? "disabled" : ""}
|
|
1225
|
+
${required ? "required" : ""}>
|
|
1226
|
+
${options.map((opt) => {
|
|
1189
1227
|
const optValue = typeof opt === "string" ? opt : opt.value;
|
|
1190
1228
|
const optLabel = typeof opt === "string" ? opt : opt.label || opt.value;
|
|
1191
1229
|
const selected = Array.isArray(fieldValue) && fieldValue.includes(optValue) ? "selected" : "";
|
|
1192
1230
|
return `<option value="${this.escapeHtml(optValue)}" ${selected}>${this.escapeHtml(optLabel)}</option>`;
|
|
1193
1231
|
}).join("")}
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
</div>
|
|
1197
|
-
${help ? `<div class="${this.options.helpClass}">${this.escapeHtml(help)}</div>` : ""}
|
|
1198
|
-
${error ? `<div class="${this.options.errorClass}">${this.escapeHtml(error)}</div>` : ""}
|
|
1232
|
+
</select>
|
|
1233
|
+
<small class="form-text text-muted">This will be enhanced with MultiSelectDropdown component</small>
|
|
1199
1234
|
</div>
|
|
1200
1235
|
`;
|
|
1201
1236
|
}
|
|
@@ -7157,7 +7192,7 @@ class FormView extends View {
|
|
|
7157
7192
|
const textarea = this.element.querySelector(`#${targetId}`);
|
|
7158
7193
|
if (!textarea) return;
|
|
7159
7194
|
const htmlContent = textarea.value || "";
|
|
7160
|
-
const Dialog = (await import("./Dialog-
|
|
7195
|
+
const Dialog = (await import("./Dialog-fb2ecL0p.js")).default;
|
|
7161
7196
|
Dialog.showHtmlPreview({
|
|
7162
7197
|
html: htmlContent,
|
|
7163
7198
|
title: "HTML Preview"
|
|
@@ -8243,6 +8278,41 @@ class FormView extends View {
|
|
|
8243
8278
|
} catch (_e) {
|
|
8244
8279
|
}
|
|
8245
8280
|
}
|
|
8281
|
+
/**
|
|
8282
|
+
* Copy field value to clipboard
|
|
8283
|
+
* @param {Event} event - Click event
|
|
8284
|
+
* @param {HTMLElement} element - Button element with data-target
|
|
8285
|
+
*/
|
|
8286
|
+
async onActionCopyToClipboard(event, element) {
|
|
8287
|
+
event.preventDefault();
|
|
8288
|
+
const targetId = element.getAttribute("data-target");
|
|
8289
|
+
if (!targetId) return;
|
|
8290
|
+
const input = this.element.querySelector("#" + targetId);
|
|
8291
|
+
if (!input) return;
|
|
8292
|
+
try {
|
|
8293
|
+
await navigator.clipboard.writeText(input.value);
|
|
8294
|
+
const icon = element.querySelector("i");
|
|
8295
|
+
if (icon) {
|
|
8296
|
+
const originalClass = icon.className;
|
|
8297
|
+
icon.className = "bi bi-check2";
|
|
8298
|
+
element.classList.add("btn-success");
|
|
8299
|
+
element.classList.remove("btn-outline-secondary");
|
|
8300
|
+
setTimeout(() => {
|
|
8301
|
+
icon.className = originalClass;
|
|
8302
|
+
element.classList.remove("btn-success");
|
|
8303
|
+
element.classList.add("btn-outline-secondary");
|
|
8304
|
+
}, 1500);
|
|
8305
|
+
}
|
|
8306
|
+
if (this.app && this.app.toast) {
|
|
8307
|
+
this.app.toast.success("Copied to clipboard!");
|
|
8308
|
+
}
|
|
8309
|
+
} catch (err) {
|
|
8310
|
+
console.error("Failed to copy to clipboard:", err);
|
|
8311
|
+
if (this.app && this.app.toast) {
|
|
8312
|
+
this.app.toast.error("Failed to copy to clipboard");
|
|
8313
|
+
}
|
|
8314
|
+
}
|
|
8315
|
+
}
|
|
8246
8316
|
/**
|
|
8247
8317
|
* Compute a simple password strength score and associated UI metadata
|
|
8248
8318
|
*/
|
|
@@ -8563,4 +8633,4 @@ export {
|
|
|
8563
8633
|
applyFileDropMixin as a,
|
|
8564
8634
|
FormView$1 as b
|
|
8565
8635
|
};
|
|
8566
|
-
//# sourceMappingURL=FormView-
|
|
8636
|
+
//# sourceMappingURL=FormView-nAFrSOID.js.map
|