@verdocs/web-sdk 1.12.33 → 1.12.35
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/loader.cjs.js +1 -1
- package/dist/cjs/verdocs-build.cjs.entry.js +13 -3
- package/dist/cjs/verdocs-button-panel_3.cjs.entry.js +6 -1
- package/dist/cjs/verdocs-progress-bar.cjs.entry.js +23 -0
- package/dist/cjs/verdocs-send.cjs.entry.js +5 -3
- package/dist/cjs/verdocs-template-create_3.cjs.entry.js +755 -0
- package/dist/cjs/verdocs-web-sdk.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/controls/verdocs-progress-bar/verdocs-progress-bar.css +31 -0
- package/dist/collection/components/controls/verdocs-progress-bar/verdocs-progress-bar.js +84 -0
- package/dist/collection/components/controls/verdocs-progress-bar/verdocs-progress-bar.stories.js +12 -0
- package/dist/collection/components/embeds/verdocs-build/verdocs-build.js +27 -3
- package/dist/collection/components/embeds/verdocs-send/verdocs-send.css +1 -0
- package/dist/collection/components/embeds/verdocs-send/verdocs-send.js +4 -2
- package/dist/collection/components/templates/verdocs-template-create/verdocs-template-create.css +3 -1
- package/dist/collection/components/templates/verdocs-template-create/verdocs-template-create.js +20 -24
- package/dist/collection/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.js +7 -1
- package/dist/collection/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.stories.js +2 -1
- package/dist/collection/components/templates/verdocs-template-fields/verdocs-template-fields.css +2 -0
- package/dist/collection/components/templates/verdocs-template-fields/verdocs-template-fields.stories.js +1 -2
- package/dist/collection/components/templates/verdocs-template-roles/verdocs-template-roles.js +2 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +1 -0
- package/dist/components/verdocs-build.js +79 -15
- package/dist/components/verdocs-progress-bar.d.ts +11 -0
- package/dist/components/verdocs-progress-bar.js +6 -0
- package/dist/components/verdocs-progress-bar2.js +38 -0
- package/dist/components/verdocs-send.js +5 -3
- package/dist/components/verdocs-template-create2.js +33 -31
- package/dist/components/verdocs-template-field-properties2.js +7 -1
- package/dist/components/verdocs-template-fields2.js +1 -1
- package/dist/components/verdocs-template-roles.js +1 -374
- package/dist/{esm/verdocs-template-roles.entry.js → components/verdocs-template-roles2.js} +100 -22
- package/dist/docs.json +119 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/verdocs-build.entry.js +13 -3
- package/dist/esm/verdocs-button-panel_3.entry.js +6 -1
- package/dist/esm/verdocs-progress-bar.entry.js +19 -0
- package/dist/esm/verdocs-send.entry.js +5 -3
- package/dist/esm/verdocs-template-create_3.entry.js +749 -0
- package/dist/esm/verdocs-web-sdk.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_3.entry.js +1 -1
- package/dist/esm-es5/verdocs-progress-bar.entry.js +1 -0
- package/dist/esm-es5/verdocs-send.entry.js +1 -1
- package/dist/esm-es5/verdocs-template-create_3.entry.js +1 -0
- package/dist/esm-es5/verdocs-web-sdk.js +1 -1
- package/dist/types/components/controls/verdocs-progress-bar/verdocs-progress-bar.d.ts +18 -0
- package/dist/types/components/controls/verdocs-progress-bar/verdocs-progress-bar.stories.d.ts +8 -0
- package/dist/types/components/embeds/verdocs-build/verdocs-build.d.ts +6 -0
- package/dist/types/components/templates/verdocs-template-create/verdocs-template-create.d.ts +2 -0
- package/dist/types/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.d.ts +1 -0
- package/dist/types/components.d.ts +41 -0
- package/dist/verdocs-web-sdk/p-2413519c.system.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-423b6ddf.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-5cf14e4c.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-6caf1137.system.js +1 -1
- package/dist/verdocs-web-sdk/p-6e1e787a.system.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-a2cd33fd.system.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-bcc9c2d8.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-c4229602.system.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-e4b18c52.entry.js +1 -0
- package/dist/verdocs-web-sdk/{p-0ba7360f.system.entry.js → p-fdbafc1f.system.entry.js} +1 -1
- package/dist/verdocs-web-sdk/p-fe2ab7b9.entry.js +1 -0
- package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
- package/package.json +1 -1
- package/dist/cjs/verdocs-template-create_2.cjs.entry.js +0 -473
- package/dist/cjs/verdocs-template-roles.cjs.entry.js +0 -304
- package/dist/esm/verdocs-template-create_2.entry.js +0 -468
- package/dist/esm-es5/verdocs-template-create_2.entry.js +0 -1
- package/dist/esm-es5/verdocs-template-roles.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-0c5c9ebf.system.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-13b8ec6f.system.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-1da14840.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-4ddd2113.system.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-6f828ccb.system.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-a2438331.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-baf138a0.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-cd0bdac3.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-e890fc53.entry.js +0 -1
@@ -1,473 +0,0 @@
|
|
1
|
-
'use strict';
|
2
|
-
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
4
|
-
|
5
|
-
const index = require('./index-67233b76.js');
|
6
|
-
require('./Types-35abf4e8.js');
|
7
|
-
const Templates = require('./Templates-ed812768.js');
|
8
|
-
const TemplateDocuments = require('./TemplateDocuments-1c6620b0.js');
|
9
|
-
const VerdocsEndpoint = require('./VerdocsEndpoint-e0d39762.js');
|
10
|
-
const errors = require('./errors-0396da3d.js');
|
11
|
-
const interact_min = require('./interact.min-29d23a9c.js');
|
12
|
-
const Fields = require('./Fields-705a2168.js');
|
13
|
-
const utils = require('./utils-aa7160e9.js');
|
14
|
-
const templateStore = require('./templateStore-1862f03c.js');
|
15
|
-
const Templates$1 = require('./Templates-6705a1ce.js');
|
16
|
-
require('./Envelopes-f81d02b1.js');
|
17
|
-
require('./Files-4bdc0c0f.js');
|
18
|
-
require('./index-6528b430.js');
|
19
|
-
require('./Primitives-be5088cb.js');
|
20
|
-
|
21
|
-
const verdocsTemplateCreateCss = "verdocs-template-create{font-family:\"Inter\", -apple-system, \"Segoe UI\", \"Roboto\", \"Helvetica Neue\", sans-serif}verdocs-template-create form{background-color:#ffffff;padding:12px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}verdocs-template-create form .upload-box{-webkit-box-sizing:border-box;box-sizing:border-box;width:320px;text-align:center;padding:44px 18px 66px;border:2px dashed #979797;color:rgba(0, 0, 0, 0.54)}verdocs-template-create form .upload-box svg{width:64px;fill:#5c6575}verdocs-template-create .loader-wrapper{background-color:#ffffff;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;width:320px;height:320px;text-align:center;border:2px dashed #979797;-ms-flex-pack:end;justify-content:flex-end;padding:0 0 30px 0}verdocs-template-create .buttons{display:-ms-flexbox;display:flex;-webkit-column-gap:8px;-moz-column-gap:8px;column-gap:8px;margin-top:16px;-ms-flex-align:center;align-items:center;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:end;justify-content:flex-end}verdocs-template-create .buttons .flex-fill{-ms-flex:1;flex:1}verdocs-template-create ::-webkit-input-placeholder{color:#aaaaaa}verdocs-template-create ::-moz-placeholder{color:#aaaaaa}verdocs-template-create :-ms-input-placeholder{color:#aaaaaa}verdocs-template-create ::-ms-input-placeholder{color:#aaaaaa}verdocs-template-create ::placeholder{color:#aaaaaa}";
|
22
|
-
|
23
|
-
const unicodeNBSP = ' ';
|
24
|
-
const FileIcon = '<svg focusable="false" aria-hidden="true" viewBox="0 0 24 24"><path d="M6 2c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6H6zm7 7V3.5L18.5 9H13z"></path></svg>';
|
25
|
-
const VerdocsTemplateCreate = class {
|
26
|
-
constructor(hostRef) {
|
27
|
-
index.registerInstance(this, hostRef);
|
28
|
-
this.exit = index.createEvent(this, "exit", 7);
|
29
|
-
this.next = index.createEvent(this, "next", 7);
|
30
|
-
this.sdkError = index.createEvent(this, "sdkError", 7);
|
31
|
-
this.endpoint = VerdocsEndpoint.VerdocsEndpoint.getDefault();
|
32
|
-
this.file = undefined;
|
33
|
-
this.creating = false;
|
34
|
-
}
|
35
|
-
componentWillLoad() {
|
36
|
-
this.endpoint.setTimeout(30000);
|
37
|
-
this.endpoint.loadSession();
|
38
|
-
}
|
39
|
-
handleFileChanged(e) {
|
40
|
-
var _a;
|
41
|
-
this.file = ((_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0]) || null;
|
42
|
-
console.log('[CREATE] Selected file', this.file);
|
43
|
-
// this.filePath = e.target.files?.[0]?.name;
|
44
|
-
}
|
45
|
-
handleUpload(e) {
|
46
|
-
e.stopPropagation();
|
47
|
-
const fileElem = document.getElementById('verdocs-template-create-file');
|
48
|
-
fileElem.click();
|
49
|
-
}
|
50
|
-
handleCancel(e) {
|
51
|
-
e.stopPropagation();
|
52
|
-
this.exit.emit();
|
53
|
-
}
|
54
|
-
async handleSubmit(e) {
|
55
|
-
var _a, _b, _c;
|
56
|
-
e.stopPropagation();
|
57
|
-
console.log('Submitting');
|
58
|
-
// Should be true if we're here because onClick is only enabled then. We're just guarding this for Typescript.
|
59
|
-
if (!this.file) {
|
60
|
-
return;
|
61
|
-
}
|
62
|
-
this.creating = true;
|
63
|
-
try {
|
64
|
-
const template = await Templates.createTemplate(this.endpoint, { name: this.file.name });
|
65
|
-
console.log('[CREATE] Created template', template);
|
66
|
-
const template_document = await TemplateDocuments.createTemplateDocument(this.endpoint, template.id, this.file);
|
67
|
-
console.log('[CREATE] Created document', template_document);
|
68
|
-
let finalTemplate = null;
|
69
|
-
const processingWait = setInterval(async () => {
|
70
|
-
var _a;
|
71
|
-
console.log('[CREATE] Waiting for template to be processed...', template_document);
|
72
|
-
finalTemplate = await Templates.getTemplate(this.endpoint, template.id);
|
73
|
-
if (finalTemplate === null || finalTemplate === void 0 ? void 0 : finalTemplate.processed) {
|
74
|
-
console.log('[CREATE] Retrieved new template', finalTemplate);
|
75
|
-
// for await (let pageNumber of Array.from(Array(template_document.page_numbers).keys(), n => n + 1)) {
|
76
|
-
// console.log('Updating page', pageNumber);
|
77
|
-
// const page = await createPage(this.endpoint, template.id, {sequence: pageNumber, page_number: pageNumber, document_id: template_document.id});
|
78
|
-
// console.log('Created page', page);
|
79
|
-
// }
|
80
|
-
if (processingWait) {
|
81
|
-
clearInterval(processingWait);
|
82
|
-
}
|
83
|
-
(_a = this.next) === null || _a === void 0 ? void 0 : _a.emit(finalTemplate);
|
84
|
-
this.creating = false;
|
85
|
-
}
|
86
|
-
}, 3000);
|
87
|
-
}
|
88
|
-
catch (e) {
|
89
|
-
console.log('[CREATE] Error creating template', e);
|
90
|
-
(_a = this.sdkError) === null || _a === void 0 ? void 0 : _a.emit(new errors.SDKError(e.message, (_b = e.response) === null || _b === void 0 ? void 0 : _b.status, (_c = e.response) === null || _c === void 0 ? void 0 : _c.data));
|
91
|
-
this.creating = false;
|
92
|
-
}
|
93
|
-
}
|
94
|
-
render() {
|
95
|
-
if (!this.endpoint.session) {
|
96
|
-
return (index.h(index.Host, null, index.h("verdocs-component-error", { message: "You must be authenticated to use this module." })));
|
97
|
-
}
|
98
|
-
return (index.h("form", { onSubmit: e => e.preventDefault(), onClick: e => e.stopPropagation(), autocomplete: "off" }, index.h("input", { type: "file", id: "verdocs-template-create-file", multiple: true, accept: "application/pdf", style: { display: 'none' }, onChange: e => this.handleFileChanged(e) }), this.creating ? (index.h("div", { class: "loader-wrapper" }, index.h("verdocs-loader", null), index.h("div", { class: "loading-text" }, "Processing, please wait..."))) : (index.h("div", { class: "upload-box" }, index.h("div", null, index.h("span", { innerHTML: FileIcon })), index.h("div", { style: { marginTop: '20px', fontSize: '20px', fontWeight: 'bold', overflowWrap: 'anywhere' } }, this.file ? this.file.name : 'Drag a file here'), index.h("div", { style: {
|
99
|
-
marginTop: '20px',
|
100
|
-
marginBottom: '20px',
|
101
|
-
fontSize: '16px',
|
102
|
-
height: '20px',
|
103
|
-
} }, this.file ? unicodeNBSP : 'Or, if you prefer...'), index.h("verdocs-button", { label: this.file ? 'Select a different file' : 'Select a file from your computer', size: "small", onClick: e => this.handleUpload(e) }))), index.h("div", { class: "buttons" }, index.h("verdocs-button", { variant: "outline", label: "Cancel", size: "small", onClick: e => this.handleCancel(e), disabled: this.creating }), index.h("verdocs-button", { label: "Next", size: "small", onClick: e => this.handleSubmit(e), disabled: !this.file || this.creating }))));
|
104
|
-
}
|
105
|
-
};
|
106
|
-
VerdocsTemplateCreate.style = verdocsTemplateCreateCss;
|
107
|
-
|
108
|
-
const verdocsTemplateFieldsCss = "verdocs-template-fields{font-family:\"Inter\", -apple-system, \"Segoe UI\", \"Roboto\", \"Helvetica Neue\", sans-serif;position:relative}verdocs-template-fields .page-0{padding:65px 15px 0 15px;-webkit-box-sizing:border-box;box-sizing:border-box}verdocs-template-fields .page-0 .user-placed-fields{height:100px;position:relative;background:#ffffff;-webkit-box-shadow:0 0 10px 5px #0000000f;box-shadow:0 0 10px 5px #0000000f}verdocs-template-fields .page-0 .user-placed-fields .title{top:0;left:0;color:#ffffff;font-size:12px;padding:3px 6px;font-weight:bold;position:absolute;background:#46497d}verdocs-template-fields .pages{display:-ms-flexbox;display:flex;padding:15px;row-gap:15px;min-height:200px;position:relative;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-direction:column;flex-direction:column}verdocs-template-fields .pages div,verdocs-template-fields .pages canvas{-webkit-box-sizing:border-box;box-sizing:border-box}verdocs-template-fields #verdocs-template-fields-toolbar{height:50px;display:-ms-flexbox;display:flex;-ms-flex:0 0 50px;flex:0 0 50px;-ms-flex-align:center;align-items:center;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:center;justify-content:center;-webkit-column-gap:15px;-moz-column-gap:15px;column-gap:15px;background:#46497d}verdocs-template-fields #verdocs-template-fields-toolbar svg{width:24px;height:24px}verdocs-template-fields.placing-attachment{cursor:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='m10.55 16.55 7.275-7.275L16.05 7.5l-5.5 5.45-2.675-2.65L6.1 12.075Zm-5.375 4.925q-1.125 0-1.887-.763-.763-.762-.763-1.887V5.175q0-1.125.763-1.888.762-.762 1.887-.762h13.65q1.125 0 1.888.762.762.763.762 1.888v13.65q0 1.125-.762 1.887-.763.763-1.888.763Zm0-2.65h13.65V5.175H5.175v13.65Zm0-13.65v13.65-13.65Z'/%3E%3C/svg%3E\") 16 16, pointer}verdocs-template-fields.placing-checkbox_group{cursor:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='m10.55 16.55 7.275-7.275L16.05 7.5l-5.5 5.45-2.675-2.65L6.1 12.075Zm-5.375 4.925q-1.125 0-1.887-.763-.763-.762-.763-1.887V5.175q0-1.125.763-1.888.762-.762 1.887-.762h13.65q1.125 0 1.888.762.762.763.762 1.888v13.65q0 1.125-.762 1.887-.763.763-1.888.763Zm0-2.65h13.65V5.175H5.175v13.65Zm0-13.65v13.65-13.65Z'/%3E%3C/svg%3E\") 16 16, pointer}verdocs-template-fields.placing-date{cursor:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath fill='%23000000' d='M7.6 13.925q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375Zm4.4 0q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375Zm4.4 0q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375ZM5.3 22.85q-1.325 0-2.238-.912-.912-.913-.912-2.238V6.3q0-1.325.912-2.238.913-.912 2.238-.912H6v-2h2.575v2h6.85v-2H18v2h.7q1.325 0 2.238.912.912.913.912 2.238v13.4q0 1.325-.912 2.238-.913.912-2.238.912Zm0-3.15h13.4V10H5.3v9.7ZM5.3 8h13.4V6.3H5.3Zm0 0V6.3 8Z'/%3E%3C/svg%3E\") 16 16, pointer}verdocs-template-fields.placing-dropdown{cursor:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24' stroke-width='1.5' stroke='currentColor'%3E%3Cpath stroke='%23000000' stroke-linecap='round' stroke-linejoin='round' d='M3 4.5h14.25M3 9h9.75M3 13.5h9.75m4.5-4.5v12m0 0l-3.75-3.75M17.25 21L21 17.25' /%3E%3C/svg%3E\") 16 16, pointer}verdocs-template-fields.placing-initial{cursor:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='M6.225 20.775V7h-5V3.225H15V7h-5v13.775Zm9.775 0v-8h-3V9h9.775v3.775h-3v8Z'/%3E%3C/svg%3E\") 16 16, pointer}verdocs-template-fields.placing-payment{cursor:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='m10.55 16.55 7.275-7.275L16.05 7.5l-5.5 5.45-2.675-2.65L6.1 12.075Zm-5.375 4.925q-1.125 0-1.887-.763-.763-.762-.763-1.887V5.175q0-1.125.763-1.888.762-.762 1.887-.762h13.65q1.125 0 1.888.762.762.763.762 1.888v13.65q0 1.125-.762 1.887-.763.763-1.888.763Zm0-2.65h13.65V5.175H5.175v13.65Zm0-13.65v13.65-13.65Z'/%3E%3C/svg%3E\") 16 16, pointer}verdocs-template-fields.placing-radio_button_group{cursor:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='M12 17q2.075 0 3.538-1.463Q17 14.075 17 12t-1.462-3.538Q14.075 7 12 7 9.925 7 8.463 8.462 7 9.925 7 12q0 2.075 1.463 3.537Q9.925 17 12 17Zm0 5.85q-2.275 0-4.25-.85t-3.438-2.312Q2.85 18.225 2 16.25q-.85-1.975-.85-4.25T2 7.75q.85-1.975 2.312-3.438Q5.775 2.85 7.75 2q1.975-.85 4.25-.85t4.25.85q1.975.85 3.438 2.312Q21.15 5.775 22 7.75q.85 1.975.85 4.25T22 16.25q-.85 1.975-2.312 3.438Q18.225 21.15 16.25 22q-1.975.85-4.25.85Zm0-3.15q3.25 0 5.475-2.225Q19.7 15.25 19.7 12q0-3.25-2.225-5.475Q15.25 4.3 12 4.3q-3.25 0-5.475 2.225Q4.3 8.75 4.3 12q0 3.25 2.225 5.475Q8.75 19.7 12 19.7Zm0-7.7Z'/%3E%3C/svg%3E\") 16 16, pointer}verdocs-template-fields.placing-signature{cursor:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='m9.225 21.225 4.65-4.65h8.45v4.65Zm-5.35-2.2H5.05l8.5-8.5-1.175-1.175-8.5 8.5Zm14.25-9.95L13.8 4.8l1.325-1.325q.625-.65 1.525-.663.9-.012 1.6.663l1.225 1.175q.675.675.663 1.562-.013.888-.663 1.513ZM16.7 10.55 6 21.225H1.675V16.9L12.35 6.225Zm-3.725-.625-.6-.575 1.175 1.175Z'/%3E%3C/svg%3E\") 16 16, pointer}verdocs-template-fields.placing-textarea{cursor:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='M3.225 20.725v-3.15h11.55v3.15Zm0-4.775V12.8h17.55v3.15Zm0-4.75V8.05h17.55v3.15Zm0-4.775v-3.15h17.55v3.15Z'/%3E%3C/svg%3E\") 16 16, pointer}verdocs-template-fields.placing-textbox{cursor:url(\"data:image/svg+xml,%3Csvg width='32' height='15' viewBox='0 0 32 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cmask id='path-1-inside-1_1401_24' fill='white'%3E%3Cpath d='M0 0H32V15H0V0Z'/%3E%3C/mask%3E%3Cpath d='M0 0H32V15H0V0Z' fill='%234C56CB' fill-opacity='0.1'/%3E%3Cpath d='M0 0V-1H-1V0H0ZM0 15H-1V16H0V15ZM0 1H32V-1H0V1ZM32 14H0V16H32V14ZM1 15V0H-1V15H1Z' fill='%234C56CB' mask='url(%23path-1-inside-1_1401_24)'/%3E%3Cpath d='M3 11.8V8.65H14.15V11.8H3ZM3 6.65V3.5H20.15V6.65H3Z' fill='%234C56CB'/%3E%3Cline x1='31.5' y1='1' x2='31.5' y2='14' stroke='%234C56CB' stroke-opacity='0.32' stroke-dasharray='1 1'/%3E%3C/svg%3E%0A\") 0 14, pointer}verdocs-template-fields.placing-timestamp{cursor:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath fill='%23000000' d='M9 1h6v2H9zm10.03 6.39 1.42-1.42c-.43-.51-.9-.99-1.41-1.41l-1.42 1.42C16.07 4.74 14.12 4 12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9 9-4.03 9-9c0-2.12-.74-4.07-1.97-5.61zM13 14h-2V8h2v6z'%3E%3C/path%3E%3C/svg%3E\") 16 16, pointer}";
|
109
|
-
|
110
|
-
const iconTextbox = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path fill="#ffffff" d="M3.425 16.15V13h11.15v3.15Zm0-5.15V7.85h17.15V11Z"/></svg>';
|
111
|
-
const iconTextarea = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path fill="#ffffff" d="M3.225 20.725v-3.15h11.55v3.15Zm0-4.775V12.8h17.55v3.15Zm0-4.75V8.05h17.55v3.15Zm0-4.775v-3.15h17.55v3.15Z"/></svg>';
|
112
|
-
const iconCheck = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path fill="#ffffff" d="m10.55 16.55 7.275-7.275L16.05 7.5l-5.5 5.45-2.675-2.65L6.1 12.075Zm-5.375 4.925q-1.125 0-1.887-.763-.763-.762-.763-1.887V5.175q0-1.125.763-1.888.762-.762 1.887-.762h13.65q1.125 0 1.888.762.762.763.762 1.888v13.65q0 1.125-.762 1.887-.763.763-1.888.763Zm0-2.65h13.65V5.175H5.175v13.65Zm0-13.65v13.65-13.65Z"/></svg>';
|
113
|
-
const iconRadio = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path fill="#ffffff" d="M12 17q2.075 0 3.538-1.463Q17 14.075 17 12t-1.462-3.538Q14.075 7 12 7 9.925 7 8.463 8.462 7 9.925 7 12q0 2.075 1.463 3.537Q9.925 17 12 17Zm0 5.85q-2.275 0-4.25-.85t-3.438-2.312Q2.85 18.225 2 16.25q-.85-1.975-.85-4.25T2 7.75q.85-1.975 2.312-3.438Q5.775 2.85 7.75 2q1.975-.85 4.25-.85t4.25.85q1.975.85 3.438 2.312Q21.15 5.775 22 7.75q.85 1.975.85 4.25T22 16.25q-.85 1.975-2.312 3.438Q18.225 21.15 16.25 22q-1.975.85-4.25.85Zm0-3.15q3.25 0 5.475-2.225Q19.7 15.25 19.7 12q0-3.25-2.225-5.475Q15.25 4.3 12 4.3q-3.25 0-5.475 2.225Q4.3 8.75 4.3 12q0 3.25 2.225 5.475Q8.75 19.7 12 19.7Zm0-7.7Z"/></svg>';
|
114
|
-
const iconDatepicker = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path fill="#ffffff" d="M7.6 13.925q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375Zm4.4 0q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375Zm4.4 0q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375ZM5.3 22.85q-1.325 0-2.238-.912-.912-.913-.912-2.238V6.3q0-1.325.912-2.238.913-.912 2.238-.912H6v-2h2.575v2h6.85v-2H18v2h.7q1.325 0 2.238.912.912.913.912 2.238v13.4q0 1.325-.912 2.238-.913.912-2.238.912Zm0-3.15h13.4V10H5.3v9.7ZM5.3 8h13.4V6.3H5.3Zm0 0V6.3 8Z"/></svg>';
|
115
|
-
const iconSignature = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path fill="#ffffff" d="m9.225 21.225 4.65-4.65h8.45v4.65Zm-5.35-2.2H5.05l8.5-8.5-1.175-1.175-8.5 8.5Zm14.25-9.95L13.8 4.8l1.325-1.325q.625-.65 1.525-.663.9-.012 1.6.663l1.225 1.175q.675.675.663 1.562-.013.888-.663 1.513ZM16.7 10.55 6 21.225H1.675V16.9L12.35 6.225Zm-3.725-.625-.6-.575 1.175 1.175Z"/></svg>';
|
116
|
-
const iconInitial = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path fill="#ffffff" d="M6.225 20.775V7h-5V3.225H15V7h-5v13.775Zm9.775 0v-8h-3V9h9.775v3.775h-3v8Z"/></svg>';
|
117
|
-
const iconTimestamp = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path fill="#ffffff" d="M9 1h6v2H9zm10.03 6.39 1.42-1.42c-.43-.51-.9-.99-1.41-1.41l-1.42 1.42C16.07 4.74 14.12 4 12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9 9-4.03 9-9c0-2.12-.74-4.07-1.97-5.61zM13 14h-2V8h2v6z"></path></svg>';
|
118
|
-
const iconDropdown = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" stroke-width="1.5" stroke="currentColor"><path stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" d="M3 4.5h14.25M3 9h9.75M3 13.5h9.75m4.5-4.5v12m0 0l-3.75-3.75M17.25 21L21 17.25" /></svg>';
|
119
|
-
const separator = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14.707 14.707"><g><rect x="6.275" y="0" fill="#ffffff7f" width="1" height="15"/></g></svg>';
|
120
|
-
const menuOptions = [
|
121
|
-
{ id: 'signature', tooltip: 'Signature', icon: iconSignature },
|
122
|
-
{ id: 'initial', tooltip: 'Initials', icon: iconInitial },
|
123
|
-
{ id: 'sep1', tooltip: '', icon: separator },
|
124
|
-
{ id: 'textbox', tooltip: 'Text Box', icon: iconTextbox },
|
125
|
-
{ id: 'textarea', tooltip: 'Text Area', icon: iconTextarea },
|
126
|
-
{ id: 'checkbox_group', tooltip: 'Check Box', icon: iconCheck },
|
127
|
-
{ id: 'radio_button_group', tooltip: 'Radio Button', icon: iconRadio },
|
128
|
-
{ id: 'dropdown', tooltip: 'Dropdown', icon: iconDropdown },
|
129
|
-
{ id: 'sep2', tooltip: '', icon: separator },
|
130
|
-
{ id: 'date', tooltip: 'Date', icon: iconDatepicker },
|
131
|
-
{ id: 'timestamp', tooltip: 'Timestamp', icon: iconTimestamp },
|
132
|
-
// {id: 'sep3', tooltip: '', icon: separator},
|
133
|
-
// {id: 'attachment', tooltip: 'Attachment', icon: 'A'},
|
134
|
-
// {id: 'payment', tooltip: 'Payment', icon: 'P'},
|
135
|
-
];
|
136
|
-
const VerdocsTemplateFields = class {
|
137
|
-
constructor(hostRef) {
|
138
|
-
index.registerInstance(this, hostRef);
|
139
|
-
this.sdkError = index.createEvent(this, "sdkError", 7);
|
140
|
-
this.templateUpdated = index.createEvent(this, "templateUpdated", 7);
|
141
|
-
this.pageHeights = {};
|
142
|
-
this.cachedPageInfo = {};
|
143
|
-
this.endpoint = VerdocsEndpoint.VerdocsEndpoint.getDefault();
|
144
|
-
this.templateId = null;
|
145
|
-
this.toolbarTargetId = null;
|
146
|
-
this.placing = null;
|
147
|
-
this.selectedRoleName = '';
|
148
|
-
this.rerender = 1;
|
149
|
-
}
|
150
|
-
async componentWillLoad() {
|
151
|
-
var _a, _b, _c, _d, _e, _f;
|
152
|
-
try {
|
153
|
-
this.endpoint.loadSession();
|
154
|
-
if (!this.templateId) {
|
155
|
-
console.log(`[FIELDS] Missing required template ID ${this.templateId}`);
|
156
|
-
return;
|
157
|
-
}
|
158
|
-
if (!this.endpoint.session) {
|
159
|
-
console.log('[BUILD] Unable to start builder session, must be authenticated');
|
160
|
-
return;
|
161
|
-
}
|
162
|
-
try {
|
163
|
-
console.log(`[FIELDS] Loading template ${this.templateId}`, this.endpoint.session);
|
164
|
-
await Templates$1.loadTemplate(this.endpoint, this.templateId, true);
|
165
|
-
this.selectedRoleName = templateStore.state.roleNames[0];
|
166
|
-
console.log('Starting with role', this.selectedRoleName);
|
167
|
-
}
|
168
|
-
catch (e) {
|
169
|
-
console.log('[FIELDS] Error loading template', e);
|
170
|
-
(_a = this.sdkError) === null || _a === void 0 ? void 0 : _a.emit(new errors.SDKError(e.message, (_b = e.response) === null || _b === void 0 ? void 0 : _b.status, (_c = e.response) === null || _c === void 0 ? void 0 : _c.data));
|
171
|
-
}
|
172
|
-
}
|
173
|
-
catch (e) {
|
174
|
-
console.log('[FIELDS] Error with preview session', e);
|
175
|
-
(_d = this.sdkError) === null || _d === void 0 ? void 0 : _d.emit(new errors.SDKError(e.message, (_e = e.response) === null || _e === void 0 ? void 0 : _e.status, (_f = e.response) === null || _f === void 0 ? void 0 : _f.data));
|
176
|
-
}
|
177
|
-
}
|
178
|
-
componentDidRender() {
|
179
|
-
interact_min.interact.dynamicDrop(true);
|
180
|
-
const toolbarTarget = this.toolbarTargetId ? document.getElementById(this.toolbarTargetId) : null;
|
181
|
-
const toolbarEl = document.getElementById('verdocs-template-fields-toolbar');
|
182
|
-
if (toolbarTarget && toolbarEl) {
|
183
|
-
console.log('[FIELDS] Moving toolbar');
|
184
|
-
toolbarEl.remove();
|
185
|
-
toolbarTarget.append(toolbarEl);
|
186
|
-
}
|
187
|
-
}
|
188
|
-
// Stop field-placement mode if ESC is pressed
|
189
|
-
handleKeyDown(ev) {
|
190
|
-
if (ev.key === 'Escape') {
|
191
|
-
this.placing = null;
|
192
|
-
}
|
193
|
-
}
|
194
|
-
async handleFieldChange(field, e, optionId) {
|
195
|
-
console.log('[FIELDS] handleFieldChange', field, e, optionId);
|
196
|
-
this.rerender++;
|
197
|
-
}
|
198
|
-
attachFieldAttributes(pageInfo, field, roleIndex, el) {
|
199
|
-
el.addEventListener('input', e => this.handleFieldChange(field, e));
|
200
|
-
el.addEventListener('settingsChanged', () => {
|
201
|
-
var _a;
|
202
|
-
console.log('Settings', templateStore.state.fields);
|
203
|
-
this.selectedRoleName = field.role_name;
|
204
|
-
console.log('settings changed', this.selectedRoleName, field);
|
205
|
-
el.setAttribute('roleindex', utils.getRoleIndex(templateStore.state.roleNames, field.role_name));
|
206
|
-
this.rerender++;
|
207
|
-
el.setAttribute('rerender', this.rerender);
|
208
|
-
(_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: templateStore.state.template, event: 'updated-field' });
|
209
|
-
});
|
210
|
-
el.addEventListener('deleted', () => {
|
211
|
-
var _a;
|
212
|
-
console.log('deleted', this, field);
|
213
|
-
el.remove();
|
214
|
-
this.rerender++;
|
215
|
-
(_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: templateStore.state.template, event: 'updated-field' });
|
216
|
-
});
|
217
|
-
el.setAttribute('roleindex', roleIndex);
|
218
|
-
el.setAttribute('pageNumber', pageInfo.pageNumber);
|
219
|
-
el.setAttribute('xScale', pageInfo.xScale);
|
220
|
-
el.setAttribute('yScale', pageInfo.yScale);
|
221
|
-
el.setAttribute('name', field.name);
|
222
|
-
}
|
223
|
-
handlePageRendered(e) {
|
224
|
-
const pageInfo = e.detail;
|
225
|
-
console.log('[FIELDS] Page rendered', pageInfo.pageNumber, pageInfo);
|
226
|
-
this.cachedPageInfo[pageInfo.pageNumber] = pageInfo;
|
227
|
-
this.pageHeights[pageInfo.pageNumber] = pageInfo.naturalHeight;
|
228
|
-
const fields = templateStore.state.fields.filter(field => field.page_sequence === pageInfo.pageNumber);
|
229
|
-
// const fields = this.fields.filter(field => field.page_sequence === pageInfo.renderedPage.pageNumber);
|
230
|
-
// console.log('[FIELDS] Fields on page', fields);
|
231
|
-
fields.forEach(field => {
|
232
|
-
const roleIndex = utils.getRoleIndex(templateStore.state.roleNames, field.role_name);
|
233
|
-
const el = utils.renderDocumentField(field, pageInfo, roleIndex, { disabled: true, editable: true, draggable: true });
|
234
|
-
if (!el) {
|
235
|
-
return;
|
236
|
-
}
|
237
|
-
if (Array.isArray(el)) {
|
238
|
-
el.forEach(e => {
|
239
|
-
this.attachFieldAttributes(pageInfo, field, roleIndex, e);
|
240
|
-
interact_min.interact(e).draggable({
|
241
|
-
listeners: {
|
242
|
-
start(event) {
|
243
|
-
console.log('[FIELDS] Drag started', event.type, event.target);
|
244
|
-
},
|
245
|
-
move(event) {
|
246
|
-
const oldX = +(event.target.getAttribute('posX') || 0);
|
247
|
-
const oldY = +(event.target.getAttribute('posY') || 0);
|
248
|
-
const xScale = +(event.target.getAttribute('xScale') || 1);
|
249
|
-
const yScale = +(event.target.getAttribute('yScale') || 1);
|
250
|
-
const newX = event.dx / xScale + oldX;
|
251
|
-
const newY = event.dy / yScale + oldY;
|
252
|
-
event.target.setAttribute('posX', newX);
|
253
|
-
event.target.setAttribute('posy', newY);
|
254
|
-
utils.updateCssTransform(event.target, 'translate', `${newX}px, ${newY}px`);
|
255
|
-
},
|
256
|
-
end: this.handleMoveField.bind(this),
|
257
|
-
},
|
258
|
-
});
|
259
|
-
});
|
260
|
-
}
|
261
|
-
else {
|
262
|
-
this.attachFieldAttributes(pageInfo, field, roleIndex, el);
|
263
|
-
interact_min.interact(el).draggable({
|
264
|
-
listeners: {
|
265
|
-
start(event) {
|
266
|
-
console.log('[FIELDS] Drag started', event.type, event.target);
|
267
|
-
},
|
268
|
-
move(event) {
|
269
|
-
const oldX = +(event.target.getAttribute('posX') || 0);
|
270
|
-
const oldY = +(event.target.getAttribute('posY') || 0);
|
271
|
-
const xScale = +(event.target.getAttribute('xScale') || 1);
|
272
|
-
const yScale = +(event.target.getAttribute('yScale') || 1);
|
273
|
-
const newX = event.dx / xScale + oldX;
|
274
|
-
const newY = event.dy / yScale + oldY;
|
275
|
-
event.target.setAttribute('posX', newX);
|
276
|
-
event.target.setAttribute('posy', newY);
|
277
|
-
utils.updateCssTransform(event.target, 'translate', `${newX}px, ${newY}px`);
|
278
|
-
},
|
279
|
-
end: this.handleMoveField.bind(this),
|
280
|
-
},
|
281
|
-
});
|
282
|
-
}
|
283
|
-
});
|
284
|
-
}
|
285
|
-
async handleMoveField(e) {
|
286
|
-
const pageNumber = e.target.getAttribute('pageNumber');
|
287
|
-
const { naturalWidth = 612, naturalHeight = 792, renderedHeight = 792 } = this.cachedPageInfo[pageNumber];
|
288
|
-
console.log('[FIELDS] Drag ended', pageNumber, e.target);
|
289
|
-
const clientRect = e.target.getBoundingClientRect();
|
290
|
-
const parent = e.target.parentElement;
|
291
|
-
const parentRect = parent.getBoundingClientRect();
|
292
|
-
// These two being backwards is not a mistake. Left measures "over" from the left (positive displacement) while bottom measures
|
293
|
-
// "up" from the bottom (negative displacement).
|
294
|
-
const newX = Math.max(clientRect.left - parentRect.left, 0);
|
295
|
-
const newY = Math.max(renderedHeight - (parentRect.bottom - clientRect.bottom), 0);
|
296
|
-
const { x, y } = this.viewCoordinatesToPageCoordinates(newX, newY, pageNumber, naturalWidth - e.rect.width, naturalHeight - e.rect.height);
|
297
|
-
const name = e.target.getAttribute('name');
|
298
|
-
const option = +(e.target.getAttribute('option') || '0');
|
299
|
-
const field = templateStore.state.fields.find(field => field.name === name);
|
300
|
-
console.log('Will update', name, option, field);
|
301
|
-
if (field) {
|
302
|
-
switch (field.type) {
|
303
|
-
case 'attachment':
|
304
|
-
case 'payment':
|
305
|
-
case 'initial':
|
306
|
-
case 'signature':
|
307
|
-
case 'date':
|
308
|
-
case 'dropdown':
|
309
|
-
case 'textarea':
|
310
|
-
case 'textbox':
|
311
|
-
case 'timestamp':
|
312
|
-
field.setting.x = x;
|
313
|
-
field.setting.y = y;
|
314
|
-
break;
|
315
|
-
case 'checkbox_group':
|
316
|
-
case 'radio_button_group':
|
317
|
-
{
|
318
|
-
const opt = field.setting.options[option];
|
319
|
-
if (opt) {
|
320
|
-
opt.x = x;
|
321
|
-
opt.y = y;
|
322
|
-
}
|
323
|
-
}
|
324
|
-
break;
|
325
|
-
}
|
326
|
-
await Fields.updateField(this.endpoint, this.templateId, name, field);
|
327
|
-
this.handlePageRendered({ detail: this.cachedPageInfo[pageNumber] });
|
328
|
-
}
|
329
|
-
}
|
330
|
-
generateFieldName(type, pageNumber) {
|
331
|
-
let i = 1;
|
332
|
-
let fieldName;
|
333
|
-
do {
|
334
|
-
fieldName = `${type}P${pageNumber}-${i}`;
|
335
|
-
console.log('testing field', fieldName);
|
336
|
-
i++;
|
337
|
-
} while (templateStore.state.fields.some(field => field.name === fieldName));
|
338
|
-
console.log('Will use field name', fieldName, templateStore.state.fields);
|
339
|
-
return fieldName;
|
340
|
-
}
|
341
|
-
// Scale the X,Y clicks to the virtual page dimensions. Also ensure the field doesn't go off the page.
|
342
|
-
viewCoordinatesToPageCoordinates(viewX, viewY, pageNumber, xMax, yMax) {
|
343
|
-
const { xScale = 1, yScale = 1, renderedHeight = 792 } = this.cachedPageInfo[pageNumber];
|
344
|
-
const x = Math.floor(Math.min(viewX / xScale, xMax));
|
345
|
-
const y = Math.floor(Math.min(Math.max(renderedHeight - viewY, 0) / yScale, yMax));
|
346
|
-
return { x, y };
|
347
|
-
}
|
348
|
-
async handleClickPage(e, page) {
|
349
|
-
var _a;
|
350
|
-
if (this.placing) {
|
351
|
-
console.log('Placing field', this.placing, page.sequence, e.offsetX, e.offsetY);
|
352
|
-
const pageNumber = page.sequence;
|
353
|
-
const clickedX = e.offsetX;
|
354
|
-
const clickedY = e.offsetY;
|
355
|
-
const width = utils.defaultWidth(this.placing);
|
356
|
-
const height = utils.defaultHeight(this.placing);
|
357
|
-
const cachedPage = this.cachedPageInfo[pageNumber];
|
358
|
-
console.log('Cached page', cachedPage);
|
359
|
-
const { naturalWidth = 612, naturalHeight = 792 } = cachedPage;
|
360
|
-
const coords = this.viewCoordinatesToPageCoordinates(clickedX, clickedY, pageNumber, naturalWidth - width, naturalHeight - height);
|
361
|
-
const x = Math.floor(coords.x);
|
362
|
-
const y = Math.floor(coords.y);
|
363
|
-
const field = {
|
364
|
-
name: this.generateFieldName(this.placing, pageNumber),
|
365
|
-
role_name: this.selectedRoleName,
|
366
|
-
template_id: this.templateId,
|
367
|
-
type: this.placing,
|
368
|
-
required: true,
|
369
|
-
page_sequence: pageNumber,
|
370
|
-
validator: null,
|
371
|
-
setting: { x, y }, // In the future, this is all we should send, see below
|
372
|
-
};
|
373
|
-
// TODO: Fix how the server validates all this. It uses a JSON schema and is very particular about shapes for each field type.
|
374
|
-
// That makes it harder for third party developers to create fields via API calls. It would be better to always set X/Y and
|
375
|
-
// let the server normalize the rest, discarding properties that are invalid and back-filling defaults as needed.
|
376
|
-
switch (field.type) {
|
377
|
-
case 'attachment':
|
378
|
-
case 'payment':
|
379
|
-
field.setting = { x, y };
|
380
|
-
break;
|
381
|
-
case 'initial':
|
382
|
-
case 'signature':
|
383
|
-
field.setting = { x, y, result: '' };
|
384
|
-
break;
|
385
|
-
case 'checkbox_group':
|
386
|
-
// @ts-ignore
|
387
|
-
field.setting = {
|
388
|
-
minimum_checked: 0,
|
389
|
-
maximum_checked: 1000,
|
390
|
-
options: [
|
391
|
-
{
|
392
|
-
id: `${field.name}-1`,
|
393
|
-
value: 'Option 1',
|
394
|
-
checked: false,
|
395
|
-
x,
|
396
|
-
y,
|
397
|
-
},
|
398
|
-
],
|
399
|
-
};
|
400
|
-
break;
|
401
|
-
case 'date':
|
402
|
-
field.setting = { x, y, width, height, result: '' };
|
403
|
-
break;
|
404
|
-
// TODO: What is this?
|
405
|
-
// case 'placeholder':break;
|
406
|
-
case 'dropdown':
|
407
|
-
field.required = false;
|
408
|
-
field.setting = { x, y, width, height, value: null, placeholder: 'Choose', options: [{ id: 'option-1', value: 'Option 1' }] };
|
409
|
-
break;
|
410
|
-
case 'radio_button_group':
|
411
|
-
// @ts-ignore
|
412
|
-
field.setting = {
|
413
|
-
options: [
|
414
|
-
{
|
415
|
-
id: `${field.name}-1`,
|
416
|
-
value: 'Option 1',
|
417
|
-
selected: false,
|
418
|
-
x,
|
419
|
-
y,
|
420
|
-
},
|
421
|
-
],
|
422
|
-
};
|
423
|
-
break;
|
424
|
-
// TODO: What about textareas?
|
425
|
-
case 'textarea':
|
426
|
-
case 'textbox':
|
427
|
-
field.setting = { x, y, width, height, result: '', leading: 0, alignment: 0, upperCase: false };
|
428
|
-
break;
|
429
|
-
case 'timestamp':
|
430
|
-
field.setting = { x, y, width, height };
|
431
|
-
break;
|
432
|
-
}
|
433
|
-
// ??? We don't actually have a unique field type for multi-line text?
|
434
|
-
if (field.type === 'textarea') {
|
435
|
-
field.type = 'textbox';
|
436
|
-
}
|
437
|
-
const saved = await Fields.createField(this.endpoint, this.templateId, field);
|
438
|
-
console.log('Saved field', saved);
|
439
|
-
templateStore.state.fields.push(saved);
|
440
|
-
this.placing = null;
|
441
|
-
(_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: templateStore.state.template, event: 'added-field' });
|
442
|
-
this.handlePageRendered({ detail: this.cachedPageInfo[pageNumber] });
|
443
|
-
}
|
444
|
-
}
|
445
|
-
render() {
|
446
|
-
if (!this.endpoint.session) {
|
447
|
-
return (index.h(index.Host, null, index.h("verdocs-component-error", { message: "You must be authenticated to use this module." })));
|
448
|
-
}
|
449
|
-
// TODO: Render a better error
|
450
|
-
if (templateStore.state.loading || !templateStore.state.template) {
|
451
|
-
return (index.h(index.Host, null, index.h("verdocs-loader", null)));
|
452
|
-
}
|
453
|
-
const pages = [...templateStore.state.template.pages];
|
454
|
-
pages.sort((a, b) => a.sequence - b.sequence);
|
455
|
-
return (index.h(index.Host, { class: this.placing ? { [`placing-${this.placing}`]: true } : {}, "data-r": this.rerender, onSubmit: () => {
|
456
|
-
console.log('onSubmit');
|
457
|
-
} }, index.h("div", { id: "verdocs-template-fields-toolbar" }, menuOptions.map(option => (index.h("verdocs-toolbar-icon", { text: option.tooltip, icon: option.icon, onClick: () => {
|
458
|
-
if (option.tooltip) {
|
459
|
-
// We have empty tooltips on the separators, quick hack...
|
460
|
-
this.placing = option.id;
|
461
|
-
}
|
462
|
-
} })))), index.h("div", { class: "pages" }, pages.map(page => {
|
463
|
-
return (index.h("verdocs-template-document-page", { templateId: page.template_id, documentId: page.document_id, pageNumber: page.sequence, virtualWidth: 612, virtualHeight: 792, onClick: (e) => this.handleClickPage(e, page), onPageRendered: e => this.handlePageRendered(e), layers: [
|
464
|
-
{ name: 'page', type: 'canvas' },
|
465
|
-
{ name: 'controls', type: 'div' },
|
466
|
-
] }));
|
467
|
-
}))));
|
468
|
-
}
|
469
|
-
};
|
470
|
-
VerdocsTemplateFields.style = verdocsTemplateFieldsCss;
|
471
|
-
|
472
|
-
exports.verdocs_template_create = VerdocsTemplateCreate;
|
473
|
-
exports.verdocs_template_fields = VerdocsTemplateFields;
|