@verdocs/web-sdk 2.3.15 → 2.3.16
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/cjs/TemplateFieldStore-7449e5ff.js +24 -0
- package/dist/cjs/{TemplateStore-17b9fdfe.js → TemplateStore-0074c71d.js} +2 -0
- package/dist/cjs/interact.min-a61b43b3.js +12 -0
- package/dist/cjs/ipc-test.cjs.entry.js +2 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/verdocs-build.cjs.entry.js +2 -1
- package/dist/cjs/verdocs-button-panel_2.cjs.entry.js +60 -43
- package/dist/cjs/verdocs-field-textarea.cjs.entry.js +1 -1
- package/dist/cjs/verdocs-field-textbox.cjs.entry.js +11 -2
- package/dist/cjs/verdocs-preview_8.cjs.entry.js +2 -1
- package/dist/cjs/verdocs-sign.cjs.entry.js +1 -1
- package/dist/cjs/verdocs-template-fields_4.cjs.entry.js +42 -38
- package/dist/cjs/verdocs-web-sdk.cjs.js +1 -1
- package/dist/collection/components/embeds/verdocs-sign/verdocs-sign.js +1 -1
- package/dist/collection/components/fields/verdocs-field-textbox/verdocs-field-textbox.js +27 -1
- package/dist/collection/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.js +61 -44
- package/dist/collection/components/templates/verdocs-template-fields/verdocs-template-fields.js +40 -36
- package/dist/collection/utils/TemplateFieldStore.js +18 -0
- package/dist/collection/utils/TemplateStore.js +2 -0
- package/dist/components/TemplateStore.js +20 -1
- package/dist/components/interact.min.js +2 -2
- package/dist/components/verdocs-field-textbox.js +10 -1
- package/dist/components/verdocs-preview2.js +1 -1
- package/dist/components/verdocs-sign.js +1 -1
- package/dist/components/verdocs-template-field-properties2.js +61 -45
- package/dist/components/verdocs-template-fields2.js +40 -37
- package/dist/docs.json +18 -1
- package/dist/esm/TemplateFieldStore-4f1b6332.js +21 -0
- package/dist/esm/{TemplateStore-ad77a294.js → TemplateStore-a2ebdaca.js} +2 -0
- package/dist/esm/interact.min-6a7b19a1.js +10 -0
- package/dist/esm/ipc-test.entry.js +2 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/verdocs-build.entry.js +2 -1
- package/dist/esm/verdocs-button-panel_2.entry.js +60 -43
- package/dist/esm/verdocs-field-textarea.entry.js +1 -1
- package/dist/esm/verdocs-field-textbox.entry.js +11 -2
- package/dist/esm/verdocs-preview_8.entry.js +2 -1
- package/dist/esm/verdocs-sign.entry.js +1 -1
- package/dist/esm/verdocs-template-fields_4.entry.js +42 -38
- package/dist/esm/verdocs-web-sdk.js +1 -1
- package/dist/esm-es5/TemplateFieldStore-4f1b6332.js +1 -0
- package/dist/esm-es5/TemplateStore-a2ebdaca.js +1 -0
- package/dist/esm-es5/interact.min-6a7b19a1.js +1 -0
- package/dist/esm-es5/ipc-test.entry.js +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/verdocs-build.entry.js +1 -1
- package/dist/esm-es5/verdocs-button-panel_2.entry.js +1 -1
- package/dist/esm-es5/verdocs-field-textarea.entry.js +1 -1
- package/dist/esm-es5/verdocs-field-textbox.entry.js +1 -1
- package/dist/esm-es5/verdocs-preview_8.entry.js +1 -1
- package/dist/esm-es5/verdocs-sign.entry.js +1 -1
- package/dist/esm-es5/verdocs-template-fields_4.entry.js +1 -1
- package/dist/esm-es5/verdocs-web-sdk.js +1 -1
- package/dist/types/components/fields/verdocs-field-textbox/verdocs-field-textbox.d.ts +7 -0
- package/dist/types/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.d.ts +7 -5
- package/dist/types/components/templates/verdocs-template-fields/verdocs-template-fields.d.ts +4 -2
- package/dist/types/components.d.ts +8 -0
- package/dist/types/utils/TemplateFieldStore.d.ts +6 -0
- package/dist/types/utils/TemplateStore.d.ts +1 -1
- package/dist/verdocs-web-sdk/p-084c23e4.system.js +1 -0
- package/dist/verdocs-web-sdk/p-12d00a0f.entry.js +1 -0
- package/dist/verdocs-web-sdk/{p-b5eb8024.entry.js → p-319c00bd.entry.js} +1 -1
- package/dist/verdocs-web-sdk/p-32c40388.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-358aef29.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-3cd0d440.system.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-429cad70.js +1 -0
- package/dist/verdocs-web-sdk/p-4e74bb3c.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-588d6cea.system.entry.js +1 -0
- package/dist/verdocs-web-sdk/{p-b467d981.system.entry.js → p-5aa77f6d.system.entry.js} +1 -1
- package/dist/verdocs-web-sdk/p-5bf12ef8.entry.js +1 -0
- package/dist/verdocs-web-sdk/{p-062ca25f.system.entry.js → p-6685ff29.system.entry.js} +1 -1
- package/dist/verdocs-web-sdk/p-72978ba3.system.entry.js +1 -0
- package/dist/verdocs-web-sdk/{p-0c425f97.system.entry.js → p-736fbb87.system.entry.js} +1 -1
- package/dist/verdocs-web-sdk/p-8dc15d33.js +1 -0
- package/dist/verdocs-web-sdk/p-915883e6.js +1 -0
- package/dist/verdocs-web-sdk/p-a627881e.system.js +1 -0
- package/dist/verdocs-web-sdk/p-aae6b4e0.entry.js +1 -0
- package/dist/verdocs-web-sdk/{p-5645b8cd.entry.js → p-b91de346.entry.js} +1 -1
- package/dist/verdocs-web-sdk/p-bd9ba3b3.system.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-e2ff37fb.system.js +1 -0
- package/dist/verdocs-web-sdk/p-e3ffc00f.system.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-f04bf956.system.js +1 -1
- package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
- package/package.json +4 -4
- package/dist/cjs/interact.min-7c05ff8a.js +0 -12
- package/dist/custom-elements.json +0 -2067
- package/dist/esm/interact.min-ef5402f3.js +0 -10
- package/dist/esm-es5/TemplateStore-ad77a294.js +0 -1
- package/dist/esm-es5/interact.min-ef5402f3.js +0 -1
- package/dist/verdocs-web-sdk/p-746fce21.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-79168c6a.system.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-82b5e475.system.js +0 -1
- package/dist/verdocs-web-sdk/p-82d9fa84.system.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-85df0da6.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-8c0fafde.system.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-999fbe79.js +0 -1
- package/dist/verdocs-web-sdk/p-9a5c0882.system.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-9d2995a9.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-b9443a01.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-e760f894.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-eda5691a.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-f3dde708.js +0 -1
- package/dist/verdocs-web-sdk/p-fcd0a40a.system.js +0 -1
- package/dist/verdocs-web-sdk/p-fe67b620.system.entry.js +0 -1
@@ -5,6 +5,7 @@ import { V as VerdocsEndpoint } from './VerdocsEndpoint.js';
|
|
5
5
|
import { u as updateField } from './Fields.js';
|
6
6
|
import { g as getRGBA } from './Colors.js';
|
7
7
|
import { g as getFieldSettings } from './utils.js';
|
8
|
+
import { a as getTemplateFieldStore } from './TemplateStore.js';
|
8
9
|
import { d as defineCustomElement$9 } from './verdocs-button2.js';
|
9
10
|
import { d as defineCustomElement$8 } from './verdocs-button-panel2.js';
|
10
11
|
import { d as defineCustomElement$7 } from './verdocs-checkbox2.js';
|
@@ -23,9 +24,11 @@ const VerdocsFieldTextbox$1 = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
23
24
|
this.__registerHost();
|
24
25
|
this.settingsChanged = createEvent(this, "settingsChanged", 7);
|
25
26
|
this.deleted = createEvent(this, "deleted", 7);
|
27
|
+
this.fieldStore = null;
|
26
28
|
this.endpoint = VerdocsEndpoint.getDefault();
|
27
29
|
this.templateid = '';
|
28
30
|
this.field = null;
|
31
|
+
this.fieldname = '';
|
29
32
|
this.disabled = false;
|
30
33
|
this.editable = false;
|
31
34
|
this.moveable = false;
|
@@ -50,6 +53,10 @@ const VerdocsFieldTextbox$1 = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
50
53
|
settingsPanel.hidePanel();
|
51
54
|
}
|
52
55
|
}
|
56
|
+
async componentWillLoad() {
|
57
|
+
console.log('Loading field', this.field);
|
58
|
+
this.fieldStore = getTemplateFieldStore(this.templateid);
|
59
|
+
}
|
53
60
|
componentDidRender() {
|
54
61
|
interact_min.dynamicDrop(true);
|
55
62
|
if (this.editable) {
|
@@ -98,6 +105,8 @@ const VerdocsFieldTextbox$1 = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
98
105
|
}
|
99
106
|
render() {
|
100
107
|
var _a, _b, _c, _d;
|
108
|
+
const f = this.fieldStore.get(this.fieldname);
|
109
|
+
console.log('rendering field', f);
|
101
110
|
const settings = getFieldSettings(this.field);
|
102
111
|
let disabled = (_b = (_a = this.disabled) !== null && _a !== void 0 ? _a : settings.disabled) !== null && _b !== void 0 ? _b : false;
|
103
112
|
const backgroundColor = this.field['rgba'] || getRGBA(this.roleindex);
|
@@ -114,7 +123,6 @@ const VerdocsFieldTextbox$1 = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
114
123
|
return this.hideSettingsPanel();
|
115
124
|
}, onSettingsChanged: e => {
|
116
125
|
var _a;
|
117
|
-
console.log('here');
|
118
126
|
(_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit(e.detail);
|
119
127
|
return this.hideSettingsPanel();
|
120
128
|
}, helpText: 'Text boxes may be used to capture simple text input. Participant-entered values will be stored for later retrieval via the "name" field.<br /><br />If marked required, the participant must complete the field before proceeding.' })))));
|
@@ -125,6 +133,7 @@ const VerdocsFieldTextbox$1 = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
125
133
|
"endpoint": [16],
|
126
134
|
"templateid": [1],
|
127
135
|
"field": [16],
|
136
|
+
"fieldname": [1],
|
128
137
|
"disabled": [4],
|
129
138
|
"editable": [4],
|
130
139
|
"moveable": [4],
|
@@ -2,7 +2,7 @@ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/
|
|
2
2
|
import './Types.js';
|
3
3
|
import { V as VerdocsEndpoint } from './VerdocsEndpoint.js';
|
4
4
|
import { r as renderDocumentField, b as getRoleIndex } from './utils.js';
|
5
|
-
import { g as getTemplateStore,
|
5
|
+
import { g as getTemplateStore, b as getRoleNames } from './TemplateStore.js';
|
6
6
|
import { S as SDKError } from './errors.js';
|
7
7
|
import { d as defineCustomElement$2 } from './verdocs-loader2.js';
|
8
8
|
import { d as defineCustomElement$1 } from './verdocs-template-document-page2.js';
|
@@ -416,7 +416,7 @@ const VerdocsSign$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
416
416
|
console.log('[SIGN] onfieldInput', e.detail, e.target.value);
|
417
417
|
// These field types don't emit fieldChange. Should we standardize on that? We don't tap "input" for fields like
|
418
418
|
// text boxes because we'd be updating the field on every keystroke. We do those on blur which fires fieldChange.
|
419
|
-
if (e.target.name.includes('
|
419
|
+
if (e.target.name.includes('checkbox_group') || e.target.name.includes('radio_button_group')) {
|
420
420
|
console.log('CB', e.target);
|
421
421
|
this.handleFieldChange(field, e).finally(() => this.checkRecipientFields());
|
422
422
|
}
|
@@ -3,7 +3,7 @@ import { c as commonjsGlobal } from './_commonjsHelpers.js';
|
|
3
3
|
import './Types.js';
|
4
4
|
import { V as VerdocsEndpoint } from './VerdocsEndpoint.js';
|
5
5
|
import { u as updateField, d as deleteField } from './Fields.js';
|
6
|
-
import { g as getTemplateStore } from './TemplateStore.js';
|
6
|
+
import { g as getTemplateStore, c as createTemplateFieldStore } from './TemplateStore.js';
|
7
7
|
import { S as SDKError } from './errors.js';
|
8
8
|
import { d as defineCustomElement$6 } from './verdocs-button2.js';
|
9
9
|
import { d as defineCustomElement$5 } from './verdocs-checkbox2.js';
|
@@ -214,21 +214,23 @@ const VerdocsTemplateFieldProperties = /*@__PURE__*/ proxyCustomElement(class ex
|
|
214
214
|
this.delete = createEvent(this, "delete", 7);
|
215
215
|
this.settingsChanged = createEvent(this, "settingsChanged", 7);
|
216
216
|
this.sdkError = createEvent(this, "sdkError", 7);
|
217
|
-
this.
|
217
|
+
this.templateStore = null;
|
218
|
+
this.fieldStore = null;
|
219
|
+
this.watcher = null;
|
218
220
|
this.endpoint = VerdocsEndpoint.getDefault();
|
219
221
|
this.templateId = '';
|
220
222
|
this.fieldName = '';
|
221
223
|
this.helpText = '';
|
222
224
|
this.dirty = false;
|
223
225
|
this.loading = true;
|
224
|
-
this.type = 'signature';
|
225
226
|
this.setting = null;
|
226
227
|
this.label = '';
|
228
|
+
this.type = 'textbox';
|
227
229
|
this.name = '';
|
230
|
+
this.required = false;
|
228
231
|
this.roleName = '';
|
229
232
|
this.group = '';
|
230
233
|
this.fieldType = '';
|
231
|
-
this.required = false;
|
232
234
|
this.options = [];
|
233
235
|
this.placeholder = '';
|
234
236
|
this.value = '';
|
@@ -236,7 +238,7 @@ const VerdocsTemplateFieldProperties = /*@__PURE__*/ proxyCustomElement(class ex
|
|
236
238
|
this.showingHelp = false;
|
237
239
|
}
|
238
240
|
async componentWillLoad() {
|
239
|
-
var _a, _b, _c, _d, _e, _f, _g
|
241
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
240
242
|
try {
|
241
243
|
this.endpoint.loadSession();
|
242
244
|
if (!this.templateId) {
|
@@ -251,11 +253,36 @@ const VerdocsTemplateFieldProperties = /*@__PURE__*/ proxyCustomElement(class ex
|
|
251
253
|
console.log('[FIELD PROPERTIES] Unable to start builder session, must be authenticated');
|
252
254
|
return;
|
253
255
|
}
|
254
|
-
this.
|
255
|
-
|
256
|
+
this.templateStore = await getTemplateStore(this.endpoint, this.templateId);
|
257
|
+
this.fieldStore = await createTemplateFieldStore(this.templateStore.state);
|
258
|
+
const field = this.fieldStore.get(this.fieldName);
|
256
259
|
if (!field) {
|
257
|
-
console.log(`[FIELD PROPERTIES] Unable to find field "${this.fieldName}" in
|
260
|
+
console.log(`[FIELD PROPERTIES] Unable to find field "${this.fieldName}" in fields`);
|
261
|
+
}
|
262
|
+
else {
|
263
|
+
console.log('props', field);
|
258
264
|
}
|
265
|
+
createTemplateFieldStore(this.templateStore.state);
|
266
|
+
this.watcher = this.fieldStore.onChange(this.fieldName, field => {
|
267
|
+
var _a, _b, _c, _d;
|
268
|
+
console.log('Field changed', field);
|
269
|
+
this.type = field.type;
|
270
|
+
this.name = field.name;
|
271
|
+
this.label = field.label;
|
272
|
+
this.group = field.name;
|
273
|
+
this.roleName = field.role_name;
|
274
|
+
this.required = field.required;
|
275
|
+
this.fieldType = field.type;
|
276
|
+
// TODO: Talk about how we want to handle labels/placeholders
|
277
|
+
this.placeholder = ((_a = field.setting) === null || _a === void 0 ? void 0 : _a.placeholder) || '';
|
278
|
+
this.value = ((_b = field.setting) === null || _b === void 0 ? void 0 : _b.result) || '';
|
279
|
+
this.leading = ((_c = field.setting) === null || _c === void 0 ? void 0 : _c.leading) || 0;
|
280
|
+
this.setting = field.setting || {};
|
281
|
+
this.options = ((_d = field.setting) === null || _d === void 0 ? void 0 : _d.options) || [];
|
282
|
+
this.dirty = false;
|
283
|
+
this.loading = false;
|
284
|
+
});
|
285
|
+
console.log('watcher', this.watcher);
|
259
286
|
this.type = field.type;
|
260
287
|
this.name = field.name;
|
261
288
|
this.label = field.label;
|
@@ -264,36 +291,37 @@ const VerdocsTemplateFieldProperties = /*@__PURE__*/ proxyCustomElement(class ex
|
|
264
291
|
this.required = field.required;
|
265
292
|
this.fieldType = field.type;
|
266
293
|
// TODO: Talk about how we want to handle labels/placeholders
|
267
|
-
this.placeholder = ((
|
268
|
-
this.value = ((
|
269
|
-
this.leading = ((
|
294
|
+
this.placeholder = ((_a = field.setting) === null || _a === void 0 ? void 0 : _a.placeholder) || '';
|
295
|
+
this.value = ((_b = field.setting) === null || _b === void 0 ? void 0 : _b.result) || '';
|
296
|
+
this.leading = ((_c = field.setting) === null || _c === void 0 ? void 0 : _c.leading) || 0;
|
270
297
|
this.setting = field.setting || {};
|
271
|
-
this.options = ((
|
298
|
+
this.options = ((_d = field.setting) === null || _d === void 0 ? void 0 : _d.options) || [];
|
272
299
|
this.dirty = false;
|
273
300
|
this.loading = false;
|
301
|
+
console.log('Displaying settings for', this.setting);
|
274
302
|
}
|
275
303
|
catch (e) {
|
276
304
|
console.log('[FIELD PROPERTIES] Error loading template', e);
|
277
305
|
this.loading = false;
|
278
|
-
(
|
306
|
+
(_e = this.sdkError) === null || _e === void 0 ? void 0 : _e.emit(new SDKError(e.message, (_f = e.response) === null || _f === void 0 ? void 0 : _f.status, (_g = e.response) === null || _g === void 0 ? void 0 : _g.data));
|
279
307
|
}
|
280
308
|
}
|
281
309
|
handleCancel(e) {
|
282
|
-
var _a, _b, _c, _d
|
310
|
+
var _a, _b, _c, _d;
|
283
311
|
e.stopPropagation();
|
284
|
-
const field =
|
312
|
+
const field = this.fieldStore.get(this.fieldName);
|
285
313
|
if (field) {
|
286
314
|
this.name = field.name;
|
287
315
|
this.label = field.label;
|
288
316
|
this.roleName = field.role_name;
|
289
317
|
this.required = field.required;
|
290
318
|
// TODO: Talk about how we want to handle labels/placeholders
|
291
|
-
this.placeholder = ((
|
292
|
-
this.value = ((
|
293
|
-
this.leading = ((
|
319
|
+
this.placeholder = ((_a = field.setting) === null || _a === void 0 ? void 0 : _a.placeholder) || '';
|
320
|
+
this.value = ((_b = field.setting) === null || _b === void 0 ? void 0 : _b.result) || '';
|
321
|
+
this.leading = ((_c = field.setting) === null || _c === void 0 ? void 0 : _c.leading) || 0;
|
294
322
|
}
|
295
323
|
this.dirty = false;
|
296
|
-
(
|
324
|
+
(_d = this.close) === null || _d === void 0 ? void 0 : _d.emit();
|
297
325
|
}
|
298
326
|
handleSave(e) {
|
299
327
|
e.stopPropagation();
|
@@ -319,6 +347,7 @@ const VerdocsTemplateFieldProperties = /*@__PURE__*/ proxyCustomElement(class ex
|
|
319
347
|
options: this.options,
|
320
348
|
};
|
321
349
|
}
|
350
|
+
console.log('FP: Will update', newProperties);
|
322
351
|
updateField(this.endpoint, this.templateId, this.fieldName, newProperties)
|
323
352
|
.then(field => {
|
324
353
|
var _a, _b;
|
@@ -370,33 +399,19 @@ const VerdocsTemplateFieldProperties = /*@__PURE__*/ proxyCustomElement(class ex
|
|
370
399
|
});
|
371
400
|
}
|
372
401
|
updateField(newField) {
|
373
|
-
const
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
// field.name = this.name;
|
378
|
-
// field.role_name = this.roleName;
|
379
|
-
// field.required = this.required;
|
380
|
-
// field.label = this.placeholder;
|
381
|
-
// field.setting.result = this.defaultValue;
|
382
|
-
// if (field.setting.options) {
|
383
|
-
// field.setting.options = this.options;
|
384
|
-
// }
|
385
|
-
}
|
386
|
-
});
|
387
|
-
this.store.state.fields = newFields;
|
402
|
+
const oldField = this.fieldStore.get(this.fieldName) || {};
|
403
|
+
console.log('Updating field', newField, oldField);
|
404
|
+
Object.assign(oldField, newField);
|
405
|
+
this.fieldStore.set(this.fieldName, newField);
|
388
406
|
}
|
389
407
|
async handleDelete(e) {
|
390
408
|
e.stopPropagation();
|
391
409
|
if (window.confirm('Are you sure you wish to remove this field? This action cannot be undone.')) {
|
392
410
|
deleteField(this.endpoint, this.templateId, this.fieldName)
|
393
411
|
.then(() => {
|
394
|
-
var _a
|
395
|
-
this.
|
396
|
-
(
|
397
|
-
role.fields = [...role.fields.filter(field => field.name !== this.fieldName)];
|
398
|
-
});
|
399
|
-
(_e = this.delete) === null || _e === void 0 ? void 0 : _e.emit({ templateId: this.templateId, roleName: this.roleName });
|
412
|
+
var _a;
|
413
|
+
this.fieldStore.set(this.fieldName, undefined);
|
414
|
+
(_a = this.delete) === null || _a === void 0 ? void 0 : _a.emit({ templateId: this.templateId, roleName: this.roleName });
|
400
415
|
})
|
401
416
|
.catch(e => {
|
402
417
|
console.log('[FIELD PROPERTIES] Deletion error', e);
|
@@ -404,12 +419,13 @@ const VerdocsTemplateFieldProperties = /*@__PURE__*/ proxyCustomElement(class ex
|
|
404
419
|
}
|
405
420
|
}
|
406
421
|
render() {
|
407
|
-
var _a
|
422
|
+
var _a;
|
423
|
+
// console.log('Rendering field properties', this.fieldStore.get(this.fieldName));
|
408
424
|
if (!this.endpoint.session) {
|
409
425
|
return (h(Host, null, h("verdocs-component-error", { message: "You must be authenticated to use this module." })));
|
410
426
|
}
|
411
427
|
// This is meant to be a companion for larger visual experiences so we just go blank on errors for now.
|
412
|
-
if (!this.endpoint.session || !
|
428
|
+
if (!this.endpoint.session || !this.fieldStore.get(this.fieldName)) {
|
413
429
|
return h(Host, { class: "empty" });
|
414
430
|
}
|
415
431
|
if (this.helpText && this.showingHelp) {
|
@@ -425,7 +441,7 @@ const VerdocsTemplateFieldProperties = /*@__PURE__*/ proxyCustomElement(class ex
|
|
425
441
|
placeholder: "Optional Label...", onInput: (e) => {
|
426
442
|
this.label = e.target.value;
|
427
443
|
this.dirty = true;
|
428
|
-
} })), h("div", { class: "row" }, h("div", { class: "input-label" }, "Role:"), h("verdocs-select-input", { value: this.roleName, options: (
|
444
|
+
} })), h("div", { class: "row" }, h("div", { class: "input-label" }, "Role:"), h("verdocs-select-input", { value: this.roleName, options: (_a = this.templateStore.state) === null || _a === void 0 ? void 0 : _a.roles.map(role => ({ label: role.name, value: role.name })), onInput: (e) => {
|
429
445
|
this.roleName = e.target.value;
|
430
446
|
this.dirty = true;
|
431
447
|
} })), ['textbox', 'textarea'].includes(this.type) && (h("div", { class: "row", style: { marginTop: '10px', marginBottom: '10px' } }, h("verdocs-text-input", { id: "verdocs-field-value", label: "Value", value: this.value, autocomplete: "off", placeholder: "Pre-defined value...", onInput: (e) => {
|
@@ -472,14 +488,14 @@ const VerdocsTemplateFieldProperties = /*@__PURE__*/ proxyCustomElement(class ex
|
|
472
488
|
"helpText": [1, "help-text"],
|
473
489
|
"dirty": [32],
|
474
490
|
"loading": [32],
|
475
|
-
"type": [32],
|
476
491
|
"setting": [32],
|
477
492
|
"label": [32],
|
493
|
+
"type": [32],
|
478
494
|
"name": [32],
|
495
|
+
"required": [32],
|
479
496
|
"roleName": [32],
|
480
497
|
"group": [32],
|
481
498
|
"fieldType": [32],
|
482
|
-
"required": [32],
|
483
499
|
"options": [32],
|
484
500
|
"placeholder": [32],
|
485
501
|
"value": [32],
|
@@ -5,7 +5,7 @@ import { V as VerdocsEndpoint } from './VerdocsEndpoint.js';
|
|
5
5
|
import { u as updateField, c as createField } from './Fields.js';
|
6
6
|
import { i as integerSequence } from './Primitives.js';
|
7
7
|
import { b as getRoleIndex, r as renderDocumentField, f as updateCssTransform, h as defaultWidth, i as defaultHeight } from './utils.js';
|
8
|
-
import { g as getTemplateStore,
|
8
|
+
import { g as getTemplateStore, c as createTemplateFieldStore, b as getRoleNames } from './TemplateStore.js';
|
9
9
|
import { S as SDKError } from './errors.js';
|
10
10
|
import { d as defineCustomElement$7 } from './verdocs-button2.js';
|
11
11
|
import { d as defineCustomElement$6 } from './verdocs-component-error2.js';
|
@@ -50,7 +50,8 @@ const VerdocsTemplateFields = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
50
50
|
this.sdkError = createEvent(this, "sdkError", 7);
|
51
51
|
this.templateUpdated = createEvent(this, "templateUpdated", 7);
|
52
52
|
this.pageHeights = {};
|
53
|
-
this.
|
53
|
+
this.templateStore = null;
|
54
|
+
this.fieldStore = null;
|
54
55
|
this.cachedPageInfo = {};
|
55
56
|
this.endpoint = VerdocsEndpoint.getDefault();
|
56
57
|
this.templateId = null;
|
@@ -72,9 +73,10 @@ const VerdocsTemplateFields = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
72
73
|
console.log('[FIELDS] Unable to start builder session, must be authenticated');
|
73
74
|
return;
|
74
75
|
}
|
75
|
-
this.
|
76
|
-
|
77
|
-
|
76
|
+
this.templateStore = await getTemplateStore(this.endpoint, this.templateId, true);
|
77
|
+
this.fieldStore = createTemplateFieldStore(this.templateStore.state);
|
78
|
+
console.log(`[FIELDS] Loaded template ${this.templateId}`, this.templateStore.state, this.fieldStore);
|
79
|
+
this.selectedRoleName = ((_d = (_c = (_b = (_a = this.templateStore) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.roles) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.name) || '';
|
78
80
|
console.log('[FIELDS] Starting with role', this.selectedRoleName);
|
79
81
|
}
|
80
82
|
catch (e) {
|
@@ -95,8 +97,8 @@ const VerdocsTemplateFields = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
95
97
|
componentWillUpdate() {
|
96
98
|
var _a, _b, _c, _d, _e, _f;
|
97
99
|
// If a new role was added and there were none yet so far, or the "selected" role was deleted, reset our selection
|
98
|
-
if (!this.selectedRoleName || !(((_b = (_a = this.
|
99
|
-
this.selectedRoleName = ((_f = (_e = (_d = (_c = this.
|
100
|
+
if (!this.selectedRoleName || !(((_b = (_a = this.templateStore) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.roles) || []).find(role => role.name === this.selectedRoleName)) {
|
101
|
+
this.selectedRoleName = ((_f = (_e = (_d = (_c = this.templateStore) === null || _c === void 0 ? void 0 : _c.state) === null || _d === void 0 ? void 0 : _d.roles) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.name) || '';
|
100
102
|
console.log('[FIELDS] Selected new role', this.selectedRoleName);
|
101
103
|
}
|
102
104
|
}
|
@@ -110,35 +112,39 @@ const VerdocsTemplateFields = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
110
112
|
console.log('[FIELDS] handleFieldChange', field, e, optionId);
|
111
113
|
this.rerender++;
|
112
114
|
}
|
113
|
-
handleFieldSettingsChange(pageInfo, field,
|
114
|
-
var _a, _b
|
115
|
+
handleFieldSettingsChange(pageInfo, field, el, newFieldData) {
|
116
|
+
var _a, _b;
|
117
|
+
// handleFieldSettingsChange(pageInfo: any, field: any, roleIndex: number, el: any, newFieldData: any) {
|
115
118
|
console.log('[FIELDS] Field settings changed', field.name, newFieldData);
|
116
119
|
Object.assign(field, newFieldData);
|
117
120
|
el.field = newFieldData;
|
118
121
|
this.selectedRoleName = field.role_name;
|
119
|
-
el.setAttribute('roleindex', getRoleIndex(getRoleNames(this.
|
120
|
-
el.field =
|
122
|
+
el.setAttribute('roleindex', getRoleIndex(getRoleNames(this.templateStore), field.role_name));
|
123
|
+
el.field = this.fieldStore.get(field.name);
|
121
124
|
this.rerender++;
|
122
125
|
el.setAttribute('rerender', this.rerender);
|
123
|
-
(
|
126
|
+
(_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: (_b = this.templateStore) === null || _b === void 0 ? void 0 : _b.state, event: 'updated-field' });
|
124
127
|
console.log('[FIELDS] Re-rendering field', field.name, pageInfo.pageNumber);
|
125
|
-
this.
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
128
|
+
this.fieldStore.set(field.name, field);
|
129
|
+
// this.reRenderField(field, pageInfo.pageNumber);
|
130
|
+
// const newEl = renderDocumentField(field, pageInfo, roleIndex, {disabled: true, editable: true, draggable: true});
|
131
|
+
// if (!newEl) {
|
132
|
+
// return;
|
133
|
+
// }
|
130
134
|
}
|
131
135
|
attachFieldAttributes(pageInfo, field, roleIndex, el) {
|
132
136
|
el.addEventListener('input', e => this.handleFieldChange(field, e));
|
133
|
-
el.addEventListener('settingsChanged', e => this.handleFieldSettingsChange(pageInfo, field,
|
137
|
+
el.addEventListener('settingsChanged', e => this.handleFieldSettingsChange(pageInfo, field, el, e.detail.field));
|
138
|
+
// el.addEventListener('settingsChanged', e => this.handleFieldSettingsChange(pageInfo, field, roleIndex, el, e.detail.field));
|
134
139
|
el.addEventListener('deleted', () => {
|
135
140
|
var _a, _b;
|
136
141
|
console.log('[FIELDS] Deleted', this, field);
|
137
142
|
el.remove();
|
138
143
|
this.rerender++;
|
139
|
-
(_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: (_b = this.
|
144
|
+
(_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: (_b = this.templateStore) === null || _b === void 0 ? void 0 : _b.state, event: 'updated-field' });
|
140
145
|
});
|
141
146
|
el.setAttribute('templateid', this.templateId);
|
147
|
+
el.setAttribute('fieldname', field.name);
|
142
148
|
el.setAttribute('roleindex', roleIndex);
|
143
149
|
el.setAttribute('pageNumber', pageInfo.pageNumber);
|
144
150
|
el.setAttribute('xScale', pageInfo.xScale);
|
@@ -146,17 +152,16 @@ const VerdocsTemplateFields = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
146
152
|
el.setAttribute('name', field.name);
|
147
153
|
}
|
148
154
|
handlePageRendered(e) {
|
149
|
-
var _a;
|
150
155
|
const pageInfo = e.detail;
|
151
156
|
console.log('[FIELDS] Page rendered', pageInfo.pageNumber, pageInfo);
|
152
157
|
this.cachedPageInfo[pageInfo.pageNumber] = pageInfo;
|
153
158
|
this.pageHeights[pageInfo.pageNumber] = pageInfo.naturalHeight;
|
154
|
-
const fields = (
|
159
|
+
const fields = Object.values(this.fieldStore.state).filter(field => field.page_sequence === pageInfo.pageNumber);
|
155
160
|
fields.forEach(field => this.reRenderField(field, pageInfo.pageNumber));
|
156
161
|
}
|
157
162
|
reRenderField(field, pageNumber) {
|
158
163
|
const pageInfo = this.cachedPageInfo[pageNumber];
|
159
|
-
const roleIndex = getRoleIndex(getRoleNames(this.
|
164
|
+
const roleIndex = getRoleIndex(getRoleNames(this.templateStore), field.role_name);
|
160
165
|
const el = renderDocumentField(field, pageInfo, roleIndex, { disabled: true, editable: true, draggable: true });
|
161
166
|
if (!el) {
|
162
167
|
return;
|
@@ -192,10 +197,9 @@ const VerdocsTemplateFields = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
192
197
|
updateCssTransform(event.target, 'translate', `${newX}px, ${newY}px`);
|
193
198
|
}
|
194
199
|
async handleMoveEnd(event) {
|
195
|
-
var _a;
|
196
200
|
const name = event.target.getAttribute('name');
|
197
201
|
const option = +(event.target.getAttribute('option') || '0');
|
198
|
-
const field =
|
202
|
+
const field = this.fieldStore.get(name);
|
199
203
|
console.log('Dropped field', name, field);
|
200
204
|
if (!field) {
|
201
205
|
console.log('[FIELDS] Unable to find field', name);
|
@@ -242,19 +246,19 @@ const VerdocsTemplateFields = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
242
246
|
console.log('[FIELDS] Will update', name, option, field);
|
243
247
|
const newFieldData = await updateField(this.endpoint, this.templateId, name, field);
|
244
248
|
const pageInfo = this.cachedPageInfo[pageNumber];
|
245
|
-
const roleIndex = getRoleIndex(getRoleNames(this.
|
246
|
-
this.handleFieldSettingsChange(pageInfo, field,
|
249
|
+
// const roleIndex = getRoleIndex(getRoleNames(this.templateStore), field.role_name);
|
250
|
+
this.handleFieldSettingsChange(pageInfo, field, event.target, newFieldData);
|
251
|
+
// this.handleFieldSettingsChange(pageInfo, field, roleIndex, event.target, newFieldData);
|
247
252
|
event.target.removeAttribute('posX');
|
248
253
|
event.target.removeAttribute('posY');
|
249
254
|
}
|
250
255
|
generateFieldName(type, pageNumber) {
|
251
|
-
var _a;
|
252
256
|
let i = 1;
|
253
257
|
let fieldName;
|
254
258
|
do {
|
255
259
|
fieldName = `${type}P${pageNumber}-${i}`;
|
256
260
|
i++;
|
257
|
-
} while ((
|
261
|
+
} while (Object.values(this.fieldStore.state).some(field => field.name === fieldName));
|
258
262
|
return fieldName;
|
259
263
|
}
|
260
264
|
// Scale the X,Y clicks to the virtual page dimensions. Also ensure the field doesn't go off the page.
|
@@ -266,7 +270,7 @@ const VerdocsTemplateFields = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
266
270
|
return { x, y };
|
267
271
|
}
|
268
272
|
async handleClickPage(e, pageNumber) {
|
269
|
-
var _a, _b
|
273
|
+
var _a, _b;
|
270
274
|
if (this.placing) {
|
271
275
|
const clickedX = e.offsetX;
|
272
276
|
const clickedY = e.offsetY;
|
@@ -293,6 +297,7 @@ const VerdocsTemplateFields = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
293
297
|
width,
|
294
298
|
height,
|
295
299
|
};
|
300
|
+
console.log('[FIELDS] Will save new field', field);
|
296
301
|
// TODO: Fix how the server validates all this. It uses a JSON schema and is very particular about shapes for each field type.
|
297
302
|
// That makes it harder for third party developers to create fields via API calls. It would be better to always set X/Y and
|
298
303
|
// let the server normalize the rest, discarding properties that are invalid and back-filling defaults as needed.
|
@@ -359,11 +364,9 @@ const VerdocsTemplateFields = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
359
364
|
}
|
360
365
|
const saved = await createField(this.endpoint, this.templateId, field);
|
361
366
|
console.log('Saved field', saved);
|
362
|
-
|
363
|
-
this.store.state.fields = [...(_a = this.store) === null || _a === void 0 ? void 0 : _a.state.fields, saved];
|
364
|
-
}
|
367
|
+
this.fieldStore.set(saved.name, saved);
|
365
368
|
this.placing = null;
|
366
|
-
(
|
369
|
+
(_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: (_b = this.templateStore) === null || _b === void 0 ? void 0 : _b.state, event: 'added-field' });
|
367
370
|
this.handlePageRendered({ detail: this.cachedPageInfo[pageNumber] });
|
368
371
|
}
|
369
372
|
}
|
@@ -374,10 +377,10 @@ const VerdocsTemplateFields = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
374
377
|
return (h(Host, null, h("verdocs-component-error", { message: "You must be authenticated to use this module." })));
|
375
378
|
}
|
376
379
|
// TODO: Render a better error
|
377
|
-
if (!((_a = this.
|
380
|
+
if (!((_a = this.templateStore) === null || _a === void 0 ? void 0 : _a.state.isLoaded)) {
|
378
381
|
return (h(Host, null, h("verdocs-loader", null)));
|
379
382
|
}
|
380
|
-
const selectableRoles = (_c = (_b = this.
|
383
|
+
const selectableRoles = (_c = (_b = this.templateStore) === null || _b === void 0 ? void 0 : _b.state) === null || _c === void 0 ? void 0 : _c.roles.map(role => ({ value: role.name, label: role.name }));
|
381
384
|
return (h(Host, { class: this.placing ? { [`placing-${this.placing}`]: true } : {}, "data-r": this.rerender, onSubmit: () => {
|
382
385
|
console.log('onSubmit');
|
383
386
|
} }, h("div", { id: "verdocs-template-fields-toolbar" }, h("div", { class: "add-for" }, "Add field:"), h("verdocs-select-input", { value: this.selectedRoleName, options: selectableRoles, onInput: (e) => (this.selectedRoleName = e.target.value) }), menuOptions.map(option => (h("verdocs-toolbar-icon", { text: option.tooltip, icon: option.icon, onClick: () => {
|
@@ -391,13 +394,13 @@ const VerdocsTemplateFields = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
391
394
|
this.showMustSelectRole = true;
|
392
395
|
}
|
393
396
|
}
|
394
|
-
} })))), h("div", { class: "pages" }, (((_e = (_d = this.
|
397
|
+
} })))), h("div", { class: "pages" }, (((_e = (_d = this.templateStore) === null || _d === void 0 ? void 0 : _d.state) === null || _e === void 0 ? void 0 : _e.template_documents) || []).map(document => {
|
395
398
|
const pageNumbers = integerSequence(1, document.page_numbers);
|
396
399
|
return pageNumbers.map(page => (h("verdocs-template-document-page", { templateId: this.templateId, documentId: document.id, pageNumber: page, virtualWidth: 612, virtualHeight: 792, onClick: (e) => this.handleClickPage(e, page), onPageRendered: e => this.handlePageRendered(e), layers: [
|
397
400
|
{ name: 'page', type: 'canvas' },
|
398
401
|
{ name: 'controls', type: 'div' },
|
399
402
|
] })));
|
400
|
-
})), this.showMustSelectRole && (h("verdocs-ok-dialog", { heading: "Unable to add field", message: ((_h = (_g = (_f = this.
|
403
|
+
})), this.showMustSelectRole && (h("verdocs-ok-dialog", { heading: "Unable to add field", message: ((_h = (_g = (_f = this.templateStore) === null || _f === void 0 ? void 0 : _f.state) === null || _g === void 0 ? void 0 : _g.roles) === null || _h === void 0 ? void 0 : _h.length) > 0 ? 'Please select a role before adding fields.' : 'Please add at least one role before adding fields.', onNext: () => (this.showMustSelectRole = false) }))));
|
401
404
|
}
|
402
405
|
static get style() { return verdocsTemplateFieldsCss; }
|
403
406
|
}, [0, "verdocs-template-fields", {
|
package/dist/docs.json
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
{
|
2
|
-
"timestamp": "2024-01-
|
2
|
+
"timestamp": "2024-01-09T18:55:47",
|
3
3
|
"compiler": {
|
4
4
|
"name": "@stencil/core",
|
5
5
|
"version": "2.20.0",
|
@@ -4784,6 +4784,23 @@
|
|
4784
4784
|
"optional": false,
|
4785
4785
|
"required": false
|
4786
4786
|
},
|
4787
|
+
{
|
4788
|
+
"name": "fieldname",
|
4789
|
+
"type": "string",
|
4790
|
+
"mutable": false,
|
4791
|
+
"attr": "fieldname",
|
4792
|
+
"reflectToAttr": false,
|
4793
|
+
"docs": "The name of the field to display.",
|
4794
|
+
"docsTags": [],
|
4795
|
+
"default": "''",
|
4796
|
+
"values": [
|
4797
|
+
{
|
4798
|
+
"type": "string"
|
4799
|
+
}
|
4800
|
+
],
|
4801
|
+
"optional": false,
|
4802
|
+
"required": false
|
4803
|
+
},
|
4787
4804
|
{
|
4788
4805
|
"name": "moveable",
|
4789
4806
|
"type": "boolean",
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { c as createStore } from './index-4439b0d1.js';
|
2
|
+
|
3
|
+
const templateFieldStores = {};
|
4
|
+
const getTemplateFieldStore = (templateId) => templateFieldStores[templateId];
|
5
|
+
const createTemplateFieldStore = (template) => {
|
6
|
+
console.log('Creating template field store for template: ', template);
|
7
|
+
let store = getTemplateFieldStore(template.id);
|
8
|
+
if (!store) {
|
9
|
+
store = createStore({});
|
10
|
+
templateFieldStores[template.id] = store;
|
11
|
+
}
|
12
|
+
else {
|
13
|
+
store.reset();
|
14
|
+
}
|
15
|
+
template.fields.forEach(field => {
|
16
|
+
store.set(field.name, field);
|
17
|
+
});
|
18
|
+
return store;
|
19
|
+
};
|
20
|
+
|
21
|
+
export { createTemplateFieldStore as c, getTemplateFieldStore as g };
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import { c as createStore } from './index-4439b0d1.js';
|
2
2
|
import { g as getTemplate, T as TemplateSenderTypes } from './VerdocsEndpoint-56fa3371.js';
|
3
|
+
import { c as createTemplateFieldStore } from './TemplateFieldStore-4f1b6332.js';
|
3
4
|
|
4
5
|
const createTemplateStore = (templateId) => {
|
5
6
|
const now = new Date().toISOString();
|
@@ -79,6 +80,7 @@ const getTemplateStore = async (endpoint, templateId, forceReload = false) => {
|
|
79
80
|
store.state.isLoading = false;
|
80
81
|
store.state.updateCount++;
|
81
82
|
}
|
83
|
+
createTemplateFieldStore(store.state);
|
82
84
|
return store;
|
83
85
|
};
|
84
86
|
const getRoleNames = (store) => { var _a; return (((_a = store === null || store === void 0 ? void 0 : store.state) === null || _a === void 0 ? void 0 : _a.roles) || []).map(role => role.name); };
|