@verdocs/web-sdk 2.0.1 → 2.0.3
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-envelope-recipient-summary.cjs.entry.js → verdocs-envelope-recipient-link_2.cjs.entry.js} +85 -3
- package/dist/cjs/verdocs-envelope-sidebar.cjs.entry.js +10 -24
- package/dist/cjs/verdocs-field-textarea.cjs.entry.js +2 -2
- package/dist/cjs/verdocs-field-textbox.cjs.entry.js +4 -2
- package/dist/cjs/verdocs-template-fields_4.cjs.entry.js +56 -76
- package/dist/cjs/verdocs-web-sdk.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/envelopes/verdocs-envelope-recipient-link/verdocs-envelope-recipient-link.css +107 -0
- package/dist/collection/components/envelopes/verdocs-envelope-recipient-link/verdocs-envelope-recipient-link.js +208 -0
- package/dist/collection/components/envelopes/verdocs-envelope-recipient-link/verdocs-envelope-recipient-link.stories.js +13 -0
- package/dist/collection/components/envelopes/verdocs-envelope-recipient-summary/verdocs-envelope-recipient-summary.js +1 -28
- package/dist/collection/components/envelopes/verdocs-envelope-sidebar/verdocs-envelope-sidebar.js +13 -26
- package/dist/collection/components/envelopes/verdocs-envelope-sidebar/verdocs-envelope-sidebar.stories.js +1 -1
- package/dist/collection/components/fields/verdocs-field-attachment/verdocs-field-attachment.js +6 -2
- package/dist/collection/components/fields/verdocs-field-checkbox/verdocs-field-checkbox.js +6 -2
- package/dist/collection/components/fields/verdocs-field-date/verdocs-field-date.js +6 -2
- package/dist/collection/components/fields/verdocs-field-dropdown/verdocs-field-dropdown.js +6 -2
- package/dist/collection/components/fields/verdocs-field-initial/verdocs-field-initial.js +6 -2
- package/dist/collection/components/fields/verdocs-field-payment/verdocs-field-payment.js +13 -4
- package/dist/collection/components/fields/verdocs-field-radio-button-group/verdocs-field-radio-button.js +6 -2
- package/dist/collection/components/fields/verdocs-field-signature/verdocs-field-signature.js +6 -2
- package/dist/collection/components/fields/verdocs-field-textarea/verdocs-field-textarea.js +8 -4
- package/dist/collection/components/fields/verdocs-field-textbox/verdocs-field-textbox.js +10 -4
- package/dist/collection/components/fields/verdocs-field-timestamp/verdocs-field-timestamp.js +6 -2
- package/dist/collection/components/templates/verdocs-template-fields/verdocs-template-fields.js +56 -76
- package/dist/collection/components/templates/verdocs-template-fields/verdocs-template-fields.stories.js +1 -1
- package/dist/collection/components/templates/verdocs-templates-list/verdocs-templates-list.stories.js +5 -1
- package/dist/components/EnvelopeStore.js +81 -0
- package/dist/components/Envelopes.js +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +1 -0
- package/dist/components/utils.js +1 -1
- package/dist/components/verdocs-envelope-recipient-link.d.ts +11 -0
- package/dist/components/verdocs-envelope-recipient-link.js +6 -0
- package/dist/components/verdocs-envelope-recipient-link2.js +120 -0
- package/dist/components/verdocs-envelope-recipient-summary2.js +2 -82
- package/dist/components/verdocs-envelope-sidebar.js +24 -30
- package/dist/components/verdocs-field-textarea.js +2 -2
- package/dist/components/verdocs-field-textbox.js +4 -2
- package/dist/components/verdocs-template-fields2.js +56 -76
- package/dist/docs.json +122 -29
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{verdocs-envelope-recipient-summary.entry.js → verdocs-envelope-recipient-link_2.entry.js} +85 -4
- package/dist/esm/verdocs-envelope-sidebar.entry.js +11 -25
- package/dist/esm/verdocs-field-textarea.entry.js +2 -2
- package/dist/esm/verdocs-field-textbox.entry.js +4 -2
- package/dist/esm/verdocs-template-fields_4.entry.js +56 -76
- package/dist/esm/verdocs-web-sdk.js +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/verdocs-envelope-recipient-link_2.entry.js +1 -0
- package/dist/esm-es5/verdocs-envelope-sidebar.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-template-fields_4.entry.js +1 -1
- package/dist/esm-es5/verdocs-web-sdk.js +1 -1
- package/dist/types/components/envelopes/verdocs-envelope-recipient-link/verdocs-envelope-recipient-link.d.ts +46 -0
- package/dist/types/components/envelopes/verdocs-envelope-recipient-link/verdocs-envelope-recipient-link.stories.d.ts +8 -0
- package/dist/types/components/envelopes/verdocs-envelope-recipient-summary/verdocs-envelope-recipient-summary.d.ts +1 -11
- package/dist/types/components/envelopes/verdocs-envelope-sidebar/verdocs-envelope-sidebar.d.ts +1 -2
- package/dist/types/components/fields/verdocs-field-attachment/verdocs-field-attachment.d.ts +1 -0
- package/dist/types/components/fields/verdocs-field-checkbox/verdocs-field-checkbox.d.ts +1 -0
- package/dist/types/components/fields/verdocs-field-date/verdocs-field-date.d.ts +1 -0
- package/dist/types/components/fields/verdocs-field-dropdown/verdocs-field-dropdown.d.ts +1 -0
- package/dist/types/components/fields/verdocs-field-initial/verdocs-field-initial.d.ts +1 -0
- package/dist/types/components/fields/verdocs-field-payment/verdocs-field-payment.d.ts +6 -7
- package/dist/types/components/fields/verdocs-field-radio-button-group/verdocs-field-radio-button.d.ts +1 -0
- package/dist/types/components/fields/verdocs-field-signature/verdocs-field-signature.d.ts +1 -0
- package/dist/types/components/fields/verdocs-field-textarea/verdocs-field-textarea.d.ts +1 -0
- package/dist/types/components/fields/verdocs-field-textbox/verdocs-field-textbox.d.ts +1 -0
- package/dist/types/components/fields/verdocs-field-timestamp/verdocs-field-timestamp.d.ts +1 -0
- package/dist/types/components/templates/verdocs-template-fields/verdocs-template-fields.d.ts +4 -1
- package/dist/types/components/templates/verdocs-templates-list/verdocs-templates-list.stories.d.ts +3 -1
- package/dist/types/components.d.ts +60 -22
- package/dist/verdocs-web-sdk/p-3872cedf.system.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-3a4d619d.system.entry.js +1 -0
- package/dist/verdocs-web-sdk/{p-5fd70b07.system.entry.js → p-3cff566d.system.entry.js} +1 -1
- package/dist/verdocs-web-sdk/p-51f09ff0.system.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-57aae7f1.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-647cdb84.system.js +1 -1
- package/dist/verdocs-web-sdk/p-a7b2bda6.entry.js +1 -0
- package/dist/verdocs-web-sdk/{p-b49887e6.system.entry.js → p-bc4cda62.system.entry.js} +1 -1
- package/dist/verdocs-web-sdk/p-c0b4cda6.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-c339ff0f.entry.js +1 -0
- package/dist/verdocs-web-sdk/p-e0379271.entry.js +1 -0
- package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
- package/package.json +1 -1
- package/dist/esm-es5/verdocs-envelope-recipient-summary.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-0df85bd4.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-3e9c4c8a.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-434dd9d9.system.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-b8036fd4.system.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-be8ff081.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-d278b481.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-e9c00342.system.entry.js +0 -1
- package/dist/verdocs-web-sdk/p-ea5cec2d.entry.js +0 -1
@@ -0,0 +1,120 @@
|
|
1
|
+
import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
|
2
|
+
import './Types.js';
|
3
|
+
import { g as getInPersonLink } from './Recipients.js';
|
4
|
+
import { V as VerdocsEndpoint } from './VerdocsEndpoint.js';
|
5
|
+
import { g as getEnvelopeStore } from './EnvelopeStore.js';
|
6
|
+
import { V as VerdocsToast } from './Toast.js';
|
7
|
+
import { S as SDKError } from './errors.js';
|
8
|
+
import { d as defineCustomElement$1 } from './verdocs-button2.js';
|
9
|
+
|
10
|
+
const verdocsEnvelopeRecipientLinkCss = "verdocs-envelope-recipient-link{top:0;left:0;right:0;bottom:0;display:-ms-flexbox;display:flex;z-index:100000;position:fixed;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;font-family:\"Inter\", \"Barlow\", sans-serif;background-color:#0000007f}verdocs-envelope-recipient-link .summary-content{width:600px;display:-ms-flexbox;display:flex;max-width:90%;font-size:18px;-ms-flex:0 0 600px;flex:0 0 600px;border-radius:6px;background:#ffffff;-ms-flex-direction:column;flex-direction:column;padding:30px 20px 20px}verdocs-envelope-recipient-link .summary-content .summary-title{font-size:20px;font-weight:700;margin:0 0 10px 0;color:#33364b}verdocs-envelope-recipient-link .summary-recipient{display:-ms-flexbox;display:flex;color:#33364b;margin:8px 0 24px 0;-ms-flex-direction:column;flex-direction:column}verdocs-envelope-recipient-link .summary-recipient .role-name{-ms-flex:1;flex:1;display:-ms-flexbox;display:flex;font-size:14px;font-weight:600;margin:0 0 8px 0;color:#092c4c}verdocs-envelope-recipient-link .summary-recipient .role-info{gap:5px;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:end;align-items:flex-end}verdocs-envelope-recipient-link .summary-recipient .role-full-name{-ms-flex:1;flex:1;height:34px;display:-ms-flexbox;display:flex;font-size:16px;padding:0 12px;border-radius:4px;-ms-flex-align:center;align-items:center;border:1px solid #cccccc;background:#f9fafb}verdocs-envelope-recipient-link .summary-recipient .recipient-link{width:120px;padding:0 16px;font-weight:500;margin:0 0 0 8px;text-align:center;font-size:0.875rem;border-radius:100%;color:#374151;line-height:1.25rem;background-color:#d8d8d8;border:2px solid #9ca3af}verdocs-envelope-recipient-link .summary-recipient .link-wrapper{gap:5px;display:-ms-flexbox;display:flex;margin:4px 0 0 0;-ms-flex-direction:row;flex-direction:row}verdocs-envelope-recipient-link .summary-recipient .link-wrapper .link{-ms-flex:1;flex:1;height:34px;display:-ms-flexbox;display:flex;font-size:16px;padding:0 12px;border-radius:4px;-ms-flex-align:center;align-items:center;border:1px solid #cccccc;background:#f9fafb}verdocs-envelope-recipient-link .buttons{display:-ms-flexbox;display:flex;-webkit-column-gap:15px;-moz-column-gap:15px;column-gap:15px;margin:10px 0 0 0;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}verdocs-envelope-recipient-link .buttons verdocs-button{-ms-flex:0 0 120px;flex:0 0 120px;margin-left:10px;white-space:nowrap}verdocs-envelope-recipient-link .buttons verdocs-button button{width:100%}";
|
11
|
+
|
12
|
+
const VerdocsEnvelopeRecipientLink = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
13
|
+
constructor() {
|
14
|
+
super();
|
15
|
+
this.__registerHost();
|
16
|
+
this.next = createEvent(this, "next", 7);
|
17
|
+
this.sdkError = createEvent(this, "sdkError", 7);
|
18
|
+
this.store = null;
|
19
|
+
this.recipient = null;
|
20
|
+
this.endpoint = VerdocsEndpoint.getDefault();
|
21
|
+
this.envelopeId = '';
|
22
|
+
this.roleName = '';
|
23
|
+
this.isOpen = undefined;
|
24
|
+
this.loading = true;
|
25
|
+
this.gettingLink = true;
|
26
|
+
this.link = '';
|
27
|
+
}
|
28
|
+
async componentWillLoad() {
|
29
|
+
var _a, _b, _c, _d, _e, _f;
|
30
|
+
try {
|
31
|
+
this.endpoint.loadSession();
|
32
|
+
if (!this.envelopeId) {
|
33
|
+
console.log(`[RECIPIENT_LINK] Missing required envelope ID ${this.envelopeId}`);
|
34
|
+
return;
|
35
|
+
}
|
36
|
+
if (!this.endpoint.session) {
|
37
|
+
console.log('[RECIPIENT_LINK] Unable to start session, must be authenticated');
|
38
|
+
return;
|
39
|
+
}
|
40
|
+
this.store = await getEnvelopeStore(this.endpoint, this.envelopeId, true);
|
41
|
+
this.loading = false;
|
42
|
+
this.gettingLink = true;
|
43
|
+
this.recipient = (_c = (_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.recipients) === null || _c === void 0 ? void 0 : _c.find(r => r.role_name === this.roleName);
|
44
|
+
this.getLink(this.recipient);
|
45
|
+
}
|
46
|
+
catch (e) {
|
47
|
+
console.log('[RECIPIENT_LINK] Error loading envelope', e);
|
48
|
+
(_d = this.sdkError) === null || _d === void 0 ? void 0 : _d.emit(new 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));
|
49
|
+
}
|
50
|
+
}
|
51
|
+
handleDone(e) {
|
52
|
+
var _a;
|
53
|
+
e.preventDefault();
|
54
|
+
(_a = this.next) === null || _a === void 0 ? void 0 : _a.emit({ envelope: this.store.state });
|
55
|
+
}
|
56
|
+
copyLink(link) {
|
57
|
+
navigator.clipboard
|
58
|
+
.writeText(link)
|
59
|
+
.then(() => VerdocsToast('Link copied to clipboard!', { style: 'success', duration: 3000 }))
|
60
|
+
.catch(e => {
|
61
|
+
console.warn('[RECIPIENT_LINK] Error copying to clipboard', e);
|
62
|
+
VerdocsToast(`Unable to copy to clipboard: ${e.message}`, { style: 'error' });
|
63
|
+
});
|
64
|
+
}
|
65
|
+
getLink(recipient) {
|
66
|
+
this.gettingLink = true;
|
67
|
+
getInPersonLink(this.endpoint, recipient.envelope_id, recipient.role_name)
|
68
|
+
.then(response => {
|
69
|
+
this.gettingLink = false;
|
70
|
+
this.link = response.link;
|
71
|
+
// NOTE: Left here for documentation purposes. We don't auto-copy the link because many browsers now
|
72
|
+
// error on that because we aren't the focus/gesture-initiator since we're a new component just being
|
73
|
+
// drawn in the DOM. So we let the user click to trigger that.
|
74
|
+
// this.copyLink(response.link);
|
75
|
+
})
|
76
|
+
.catch(e => {
|
77
|
+
this.gettingLink = false;
|
78
|
+
console.log('[RECIPIENT_LINK] Error getting link', e);
|
79
|
+
VerdocsToast('Unable to get link: ' + e.message, { style: 'error' });
|
80
|
+
});
|
81
|
+
}
|
82
|
+
render() {
|
83
|
+
if (this.loading || !this.recipient) {
|
84
|
+
return h(Host, null);
|
85
|
+
}
|
86
|
+
// const recipientsWithActions = getRecipientsWithActions(this.store.state); const showLinkButton = recipientCanAct(recipient, recipientsWithActions); const link =
|
87
|
+
// this.links[recipient.role_name]; const gettingLink = this.gettingLinks[recipient.role_name]; return (
|
88
|
+
return (h(Host, null, h("div", { class: "summary-content" }, h("h1", { class: "summary-title" }, "In-Person Signing Link"), h("div", { class: "summary-rows" }, h("div", { class: "summary-recipient" }, h("div", { class: "role-name" }, this.recipient.role_name), h("div", { class: "role-details" }, h("div", { class: "role-info" }, h("div", { class: "role-full-name" }, this.recipient.full_name, " (", this.recipient.email || this.recipient.phone, ")"), !this.link && (h("verdocs-button", { size: "small", variant: "outline", label: this.gettingLink ? 'Loading...' : 'Get Link', disabled: this.gettingLink, onClick: () => this.getLink(this.recipient) }))), this.link && (h("div", { class: "link-wrapper" }, h("div", { class: "link" }, this.link), h("verdocs-button", { size: "small", variant: "outline", label: "Copy", onClick: () => this.copyLink(this.link) })))))), h("div", { class: "buttons" }, h("verdocs-button", { size: "small", label: "Done", onClick: e => this.handleDone(e) })))));
|
89
|
+
}
|
90
|
+
static get style() { return verdocsEnvelopeRecipientLinkCss; }
|
91
|
+
}, [0, "verdocs-envelope-recipient-link", {
|
92
|
+
"endpoint": [16],
|
93
|
+
"envelopeId": [1, "envelope-id"],
|
94
|
+
"roleName": [1, "role-name"],
|
95
|
+
"isOpen": [32],
|
96
|
+
"loading": [32],
|
97
|
+
"gettingLink": [32],
|
98
|
+
"link": [32]
|
99
|
+
}]);
|
100
|
+
function defineCustomElement() {
|
101
|
+
if (typeof customElements === "undefined") {
|
102
|
+
return;
|
103
|
+
}
|
104
|
+
const components = ["verdocs-envelope-recipient-link", "verdocs-button"];
|
105
|
+
components.forEach(tagName => { switch (tagName) {
|
106
|
+
case "verdocs-envelope-recipient-link":
|
107
|
+
if (!customElements.get(tagName)) {
|
108
|
+
customElements.define(tagName, VerdocsEnvelopeRecipientLink);
|
109
|
+
}
|
110
|
+
break;
|
111
|
+
case "verdocs-button":
|
112
|
+
if (!customElements.get(tagName)) {
|
113
|
+
defineCustomElement$1();
|
114
|
+
}
|
115
|
+
break;
|
116
|
+
} });
|
117
|
+
}
|
118
|
+
defineCustomElement();
|
119
|
+
|
120
|
+
export { VerdocsEnvelopeRecipientLink as V, defineCustomElement as d };
|
@@ -3,89 +3,11 @@ import { g as getRecipientsWithActions, r as recipientCanAct } from './Permissio
|
|
3
3
|
import { g as getInPersonLink } from './Recipients.js';
|
4
4
|
import './Types.js';
|
5
5
|
import { V as VerdocsEndpoint } from './VerdocsEndpoint.js';
|
6
|
-
import {
|
7
|
-
import { f as getEnvelope } from './Envelopes.js';
|
6
|
+
import { g as getEnvelopeStore } from './EnvelopeStore.js';
|
8
7
|
import { V as VerdocsToast } from './Toast.js';
|
9
8
|
import { S as SDKError } from './errors.js';
|
10
9
|
import { d as defineCustomElement$1 } from './verdocs-button2.js';
|
11
10
|
|
12
|
-
const createEnvelopeStore = (envelopeId) => {
|
13
|
-
const now = new Date().toISOString();
|
14
|
-
return createStore({
|
15
|
-
isLoading: true,
|
16
|
-
isLoaded: false,
|
17
|
-
isError: false,
|
18
|
-
error: null,
|
19
|
-
updateCount: 0,
|
20
|
-
roleNames: [],
|
21
|
-
id: envelopeId,
|
22
|
-
template_id: '',
|
23
|
-
name: '',
|
24
|
-
status: 'pending',
|
25
|
-
profile_id: '',
|
26
|
-
organization_id: '',
|
27
|
-
no_contact: false,
|
28
|
-
created_at: now,
|
29
|
-
updated_at: now,
|
30
|
-
canceled_at: null,
|
31
|
-
reminder_id: null,
|
32
|
-
envelope_document_id: '',
|
33
|
-
certificate_document_id: null,
|
34
|
-
visibility: 'private',
|
35
|
-
histories: [],
|
36
|
-
recipients: [],
|
37
|
-
profile: undefined,
|
38
|
-
certificate: undefined,
|
39
|
-
document: undefined,
|
40
|
-
documents: undefined,
|
41
|
-
fields: undefined,
|
42
|
-
});
|
43
|
-
};
|
44
|
-
const envelopeStores = {};
|
45
|
-
const getEnvelopeStore = async (endpoint, envelopeId, forceReload = false) => {
|
46
|
-
let created = false;
|
47
|
-
if (!envelopeStores[envelopeId]) {
|
48
|
-
console.debug('[ENVELOPES] No envelope store found for ID, creating', envelopeId);
|
49
|
-
envelopeStores[envelopeId] = createEnvelopeStore(envelopeId);
|
50
|
-
created = true;
|
51
|
-
}
|
52
|
-
const store = envelopeStores[envelopeId];
|
53
|
-
// NOTE: If we need it, store.use() returns an unsubcribe function
|
54
|
-
// See https://github.com/ionic-team/stencil-store#storeusesubscriptions
|
55
|
-
store.use({
|
56
|
-
reset: () => console.debug('[ENVELOPES] Store got reset'),
|
57
|
-
dispose: () => console.debug('[ENVELOPES] Store got disposed'),
|
58
|
-
});
|
59
|
-
// TODO: This can create a race condition if two components call this at the same time.
|
60
|
-
// For now we can probably defer doing something smart here because it's only a
|
61
|
-
// double-load issue.
|
62
|
-
if (created || forceReload) {
|
63
|
-
console.debug('[ENVELOPES] Reloading envelope', { envelopeId, created, forceReload });
|
64
|
-
store.state.isLoading = true;
|
65
|
-
store.state.isLoaded = false;
|
66
|
-
store.state.isError = false;
|
67
|
-
store.state.error = undefined;
|
68
|
-
try {
|
69
|
-
const envelope = await getEnvelope(endpoint, envelopeId);
|
70
|
-
console.debug('[ENVELOPES] Got envelope', envelope);
|
71
|
-
Object.assign(store.state, envelope);
|
72
|
-
store.state.isLoaded = true;
|
73
|
-
store.state.isError = false;
|
74
|
-
store.state.error = undefined;
|
75
|
-
}
|
76
|
-
catch (e) {
|
77
|
-
console.error('[ENVELOPES] Error loading envelope', e);
|
78
|
-
store.state.isLoaded = false;
|
79
|
-
store.state.isError = true;
|
80
|
-
store.state.error = e;
|
81
|
-
throw e;
|
82
|
-
}
|
83
|
-
store.state.isLoading = false;
|
84
|
-
store.state.updateCount++;
|
85
|
-
}
|
86
|
-
return store;
|
87
|
-
};
|
88
|
-
|
89
11
|
const verdocsEnvelopeRecipientSummaryCss = "verdocs-envelope-recipient-summary{top:0;left:0;right:0;bottom:0;display:-ms-flexbox;display:flex;z-index:100000;position:fixed;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;font-family:\"Inter\", \"Barlow\", sans-serif;background-color:#0000007f}verdocs-envelope-recipient-summary .summary-content{width:600px;display:-ms-flexbox;display:flex;max-width:90%;font-size:18px;-ms-flex:0 0 600px;flex:0 0 600px;border-radius:6px;background:#ffffff;-ms-flex-direction:column;flex-direction:column;padding:30px 20px 20px}verdocs-envelope-recipient-summary .summary-content .summary-title{font-size:20px;font-weight:700;margin:0 0 10px 0;color:#33364b}verdocs-envelope-recipient-summary .summary-recipient{display:-ms-flexbox;display:flex;color:#33364b;margin:8px 0 24px 0;-ms-flex-direction:column;flex-direction:column}verdocs-envelope-recipient-summary .summary-recipient .role-name{-ms-flex:1;flex:1;display:-ms-flexbox;display:flex;font-size:14px;font-weight:600;margin:0 0 8px 0;color:#092c4c}verdocs-envelope-recipient-summary .summary-recipient .role-info{gap:5px;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:end;align-items:flex-end}verdocs-envelope-recipient-summary .summary-recipient .role-full-name{-ms-flex:1;flex:1;height:34px;display:-ms-flexbox;display:flex;font-size:16px;padding:0 12px;border-radius:4px;-ms-flex-align:center;align-items:center;border:1px solid #cccccc;background:#f9fafb}verdocs-envelope-recipient-summary .summary-recipient .recipient-link{width:120px;padding:0 16px;font-weight:500;margin:0 0 0 8px;text-align:center;font-size:0.875rem;border-radius:100%;color:#374151;line-height:1.25rem;background-color:#d8d8d8;border:2px solid #9ca3af}verdocs-envelope-recipient-summary .summary-recipient .link-wrapper{gap:5px;display:-ms-flexbox;display:flex;margin:4px 0 0 0;-ms-flex-direction:row;flex-direction:row}verdocs-envelope-recipient-summary .summary-recipient .link-wrapper .link{-ms-flex:1;flex:1;height:34px;display:-ms-flexbox;display:flex;font-size:16px;padding:0 12px;border-radius:4px;-ms-flex-align:center;align-items:center;border:1px solid #cccccc;background:#f9fafb}verdocs-envelope-recipient-summary .buttons{display:-ms-flexbox;display:flex;-webkit-column-gap:15px;-moz-column-gap:15px;column-gap:15px;margin:10px 0 0 0;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}verdocs-envelope-recipient-summary .buttons verdocs-button{-ms-flex:0 0 120px;flex:0 0 120px;margin-left:10px;white-space:nowrap}verdocs-envelope-recipient-summary .buttons verdocs-button button{width:100%}";
|
90
12
|
|
91
13
|
const VerdocsEnvelopeRecipientSummary = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
@@ -102,7 +24,6 @@ const VerdocsEnvelopeRecipientSummary = /*@__PURE__*/ proxyCustomElement(class e
|
|
102
24
|
this.canSendAnother = true;
|
103
25
|
this.canView = true;
|
104
26
|
this.canDone = true;
|
105
|
-
this.envelope = undefined;
|
106
27
|
this.isOpen = undefined;
|
107
28
|
this.loading = true;
|
108
29
|
this.recipientStatusIcons = [];
|
@@ -195,7 +116,6 @@ const VerdocsEnvelopeRecipientSummary = /*@__PURE__*/ proxyCustomElement(class e
|
|
195
116
|
"canSendAnother": [4, "can-send-another"],
|
196
117
|
"canView": [4, "can-view"],
|
197
118
|
"canDone": [4, "can-done"],
|
198
|
-
"envelope": [16],
|
199
119
|
"isOpen": [32],
|
200
120
|
"loading": [32],
|
201
121
|
"recipientStatusIcons": [32],
|
@@ -223,4 +143,4 @@ function defineCustomElement() {
|
|
223
143
|
}
|
224
144
|
defineCustomElement();
|
225
145
|
|
226
|
-
export { VerdocsEnvelopeRecipientSummary as V, defineCustomElement as d
|
146
|
+
export { VerdocsEnvelopeRecipientSummary as V, defineCustomElement as d };
|
@@ -1,15 +1,17 @@
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
|
2
2
|
import { c as cancelEnvelope } from './Envelopes.js';
|
3
3
|
import { u as userIsEnvelopeOwner } from './Permissions.js';
|
4
|
-
import {
|
4
|
+
import { r as resendInvitation } from './Recipients.js';
|
5
5
|
import './Types.js';
|
6
6
|
import { V as VerdocsEndpoint } from './VerdocsEndpoint.js';
|
7
|
-
import { g as getEnvelopeStore
|
7
|
+
import { g as getEnvelopeStore } from './EnvelopeStore.js';
|
8
8
|
import { F as FORMAT_TIMESTAMP } from './Types2.js';
|
9
9
|
import { V as VerdocsToast } from './Toast.js';
|
10
10
|
import { S as SDKError } from './errors.js';
|
11
|
-
import { d as defineCustomElement$
|
12
|
-
import { d as defineCustomElement$
|
11
|
+
import { d as defineCustomElement$6 } from './verdocs-button2.js';
|
12
|
+
import { d as defineCustomElement$5 } from './verdocs-dropdown2.js';
|
13
|
+
import { d as defineCustomElement$4 } from './verdocs-envelope-recipient-link2.js';
|
14
|
+
import { d as defineCustomElement$3 } from './verdocs-envelope-recipient-summary2.js';
|
13
15
|
import { d as defineCustomElement$2 } from './verdocs-ok-dialog2.js';
|
14
16
|
import { f as format } from './index2.js';
|
15
17
|
|
@@ -53,6 +55,7 @@ const VerdocsEnvelopeSidebar$1 = /*@__PURE__*/ proxyCustomElement(class extends
|
|
53
55
|
this.activeTab = 1;
|
54
56
|
this.panelOpen = false;
|
55
57
|
this.showManageDialog = false;
|
58
|
+
this.showRecipientDialog = '';
|
56
59
|
this.showCancelDialog = false;
|
57
60
|
this.loading = true;
|
58
61
|
}
|
@@ -95,12 +98,6 @@ const VerdocsEnvelopeSidebar$1 = /*@__PURE__*/ proxyCustomElement(class extends
|
|
95
98
|
return (!['pending', 'declined', 'submitted', 'canceled'].includes(recipient.status) && //
|
96
99
|
!['complete', 'declined', 'canceled'].includes((_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.status));
|
97
100
|
}
|
98
|
-
canModifyRecipient(recipient) {
|
99
|
-
var _a, _b;
|
100
|
-
return (!recipient.claimed && //
|
101
|
-
!['declined', 'signed', 'submitted', 'canceled'].includes(recipient.status) &&
|
102
|
-
!['complete', 'declined', 'canceled'].includes((_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.status));
|
103
|
-
}
|
104
101
|
handleRecipientAction(recipient, id) {
|
105
102
|
var _a, _b;
|
106
103
|
console.log('[SIDEBAR] Recipient action', id, recipient);
|
@@ -116,13 +113,7 @@ const VerdocsEnvelopeSidebar$1 = /*@__PURE__*/ proxyCustomElement(class extends
|
|
116
113
|
});
|
117
114
|
break;
|
118
115
|
case 'inperson':
|
119
|
-
|
120
|
-
.then(({ link }) => navigator.clipboard.writeText(link))
|
121
|
-
.then(() => VerdocsToast('Link copied to clipboard.', { style: 'success', duration: 2000 }))
|
122
|
-
.catch(e => {
|
123
|
-
console.log('[RECIPIENTS] Error getting link', e);
|
124
|
-
VerdocsToast('Unable to get link: ' + e.message, { style: 'error' });
|
125
|
-
});
|
116
|
+
this.showRecipientDialog = recipient.role_name;
|
126
117
|
break;
|
127
118
|
case 'modify':
|
128
119
|
VerdocsToast('This feature will be enabled in a future release. Please try again later.', { style: 'info' });
|
@@ -264,12 +255,11 @@ const VerdocsEnvelopeSidebar$1 = /*@__PURE__*/ proxyCustomElement(class extends
|
|
264
255
|
entries.sort((a, b) => b.date.getTime() - a.date.getTime());
|
265
256
|
return entries;
|
266
257
|
}
|
267
|
-
canModify(recipient) {
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
}
|
258
|
+
// canModify(recipient: IRecipient) {
|
259
|
+
// const invalidRecipientStatus = ['declined', 'signed', 'submitted', 'canceled'];
|
260
|
+
// const invalidEnvelopeStatus = ['complete', 'declined', 'canceled'];
|
261
|
+
// return recipient.claimed !== true && invalidRecipientStatus.indexOf(recipient.status) === -1 && invalidEnvelopeStatus.indexOf(this.store?.state?.status) === -1;
|
262
|
+
// }
|
273
263
|
render() {
|
274
264
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
|
275
265
|
if (!this.store.state) {
|
@@ -283,7 +273,7 @@ const VerdocsEnvelopeSidebar$1 = /*@__PURE__*/ proxyCustomElement(class extends
|
|
283
273
|
_s.first_name, " ", (_v = (_u = (_t = this.store) === null || _t === void 0 ? void 0 : _t.state) === null || _u === void 0 ? void 0 : _u.profile) === null || _v === void 0 ? void 0 :
|
284
274
|
_v.last_name), h("div", { class: "label" }, "Verdoc Owner Email"), h("div", { class: "value" }, (_y = (_x = (_w = this.store) === null || _w === void 0 ? void 0 : _w.state) === null || _x === void 0 ? void 0 : _x.profile) === null || _y === void 0 ? void 0 : _y.email))), this.activeTab === 2 && (h("div", { class: "content" }, h("div", { class: "title" }, "Recipients"), (_0 = (_z = this.store) === null || _z === void 0 ? void 0 : _z.state) === null || _0 === void 0 ? void 0 :
|
285
275
|
_0.recipients.map((recipient, index) => {
|
286
|
-
const canGetInPersonLink =
|
276
|
+
const canGetInPersonLink = recipient.status !== 'signed' && recipient.status !== 'submitted' && recipient.status !== 'canceled' && recipient.status !== 'declined';
|
287
277
|
const canSendReminder = this.canResendRecipient(recipient);
|
288
278
|
return (h("div", { class: "recipient-detail" }, h("div", { class: "recipient-header" }, h("div", { class: "recipient-number" }, index + 1), h("div", { class: "recipient-type" }, recipient.role_name), h("div", { class: { 'recipient-status': true, [recipient.status]: true } }, recipient.status), isEnvelopeOwner && !functionsDisabled && (h("verdocs-dropdown", { onOptionSelected: item => this.handleRecipientAction(recipient, item.detail.id), options: [
|
289
279
|
{ id: 'reminder', label: 'Send Reminder', disabled: !canSendReminder },
|
@@ -292,13 +282,11 @@ const VerdocsEnvelopeSidebar$1 = /*@__PURE__*/ proxyCustomElement(class extends
|
|
292
282
|
// TODO: Details dialog
|
293
283
|
// {id:'details',label: 'View Details'},
|
294
284
|
] }))), h("dic", { class: "recipient-content" }, h("div", { class: "recipient-name" }, recipient.full_name), h("div", { class: "recipient-name" }, recipient.email), h("div", { class: "recipient-name" }, recipient.phone))));
|
295
|
-
}), isEnvelopeOwner && (h("verdocs-button", { class: "manage-recipients-button", variant: "standard", label: "Turn On Reminders", onClick: () => (this.showManageDialog = !functionsDisabled), disabled: functionsDisabled })), isEnvelopeOwner && (h("verdocs-button", { class: "manage-recipients-button", variant: "standard", label: "Cancel Verdoc", onClick: () => (this.showCancelDialog = !functionsDisabled), disabled: functionsDisabled })))), this.activeTab === 3 && (h("div", { class: "content" }, h("div", { class: "title" }, "History"), historyEntries.map(entry => (h("div", { class: "history-entry" }, h("div", { class: "activity-icon", innerHTML: ActivityIcons[entry.icon] || entry.icon }), h("div", { class: "activity-details" }, h("div", { class: "activity-text" }, entry.message), h("div", { class: "activity-date" }, format(entry.date, FORMAT_TIMESTAMP)))))))), this.showManageDialog && (h("verdocs-envelope-recipient-summary", { envelopeId: this.envelopeId, canView: false, onAnother: () => {
|
285
|
+
}), isEnvelopeOwner && (h("verdocs-button", { class: "manage-recipients-button", variant: "standard", label: "Turn On Reminders", onClick: () => (this.showManageDialog = !functionsDisabled), disabled: functionsDisabled })), isEnvelopeOwner && (h("verdocs-button", { class: "manage-recipients-button", variant: "standard", label: "Cancel Verdoc", onClick: () => (this.showCancelDialog = !functionsDisabled), disabled: functionsDisabled })))), this.activeTab === 3 && (h("div", { class: "content" }, h("div", { class: "title" }, "History"), historyEntries.map(entry => (h("div", { class: "history-entry" }, h("div", { class: "activity-icon", innerHTML: ActivityIcons[entry.icon] || entry.icon }), h("div", { class: "activity-details" }, h("div", { class: "activity-text" }, entry.message), h("div", { class: "activity-date" }, format(entry.date, FORMAT_TIMESTAMP)))))))), this.showRecipientDialog && (h("verdocs-envelope-recipient-link", { envelopeId: this.envelopeId, roleName: this.showRecipientDialog, onNext: () => (this.showRecipientDialog = '') })), this.showManageDialog && (h("verdocs-envelope-recipient-summary", { envelopeId: this.envelopeId, canView: false, onAnother: () => {
|
296
286
|
var _a;
|
297
287
|
this.showManageDialog = false;
|
298
288
|
(_a = this.another) === null || _a === void 0 ? void 0 : _a.emit({ envelope: this.store.state });
|
299
|
-
}, onNext: () => {
|
300
|
-
this.showManageDialog = false;
|
301
|
-
} })), this.showCancelDialog && (h("verdocs-ok-dialog", { heading: "Cancel Envelope?", message: 'Are you sure you want to cancel this Envelope? This action cannot be undone.', onNext: () => {
|
289
|
+
}, onNext: () => (this.showManageDialog = false) })), this.showCancelDialog && (h("verdocs-ok-dialog", { heading: "Cancel Envelope?", message: 'Are you sure you want to cancel this Envelope? This action cannot be undone.', onNext: () => {
|
302
290
|
this.showCancelDialog = false;
|
303
291
|
this.cancelEnvelope();
|
304
292
|
} }))));
|
@@ -310,6 +298,7 @@ const VerdocsEnvelopeSidebar$1 = /*@__PURE__*/ proxyCustomElement(class extends
|
|
310
298
|
"activeTab": [32],
|
311
299
|
"panelOpen": [32],
|
312
300
|
"showManageDialog": [32],
|
301
|
+
"showRecipientDialog": [32],
|
313
302
|
"showCancelDialog": [32],
|
314
303
|
"loading": [32]
|
315
304
|
}]);
|
@@ -317,7 +306,7 @@ function defineCustomElement$1() {
|
|
317
306
|
if (typeof customElements === "undefined") {
|
318
307
|
return;
|
319
308
|
}
|
320
|
-
const components = ["verdocs-envelope-sidebar", "verdocs-button", "verdocs-dropdown", "verdocs-envelope-recipient-summary", "verdocs-ok-dialog"];
|
309
|
+
const components = ["verdocs-envelope-sidebar", "verdocs-button", "verdocs-dropdown", "verdocs-envelope-recipient-link", "verdocs-envelope-recipient-summary", "verdocs-ok-dialog"];
|
321
310
|
components.forEach(tagName => { switch (tagName) {
|
322
311
|
case "verdocs-envelope-sidebar":
|
323
312
|
if (!customElements.get(tagName)) {
|
@@ -326,10 +315,15 @@ function defineCustomElement$1() {
|
|
326
315
|
break;
|
327
316
|
case "verdocs-button":
|
328
317
|
if (!customElements.get(tagName)) {
|
329
|
-
defineCustomElement$
|
318
|
+
defineCustomElement$6();
|
330
319
|
}
|
331
320
|
break;
|
332
321
|
case "verdocs-dropdown":
|
322
|
+
if (!customElements.get(tagName)) {
|
323
|
+
defineCustomElement$5();
|
324
|
+
}
|
325
|
+
break;
|
326
|
+
case "verdocs-envelope-recipient-link":
|
333
327
|
if (!customElements.get(tagName)) {
|
334
328
|
defineCustomElement$4();
|
335
329
|
}
|
@@ -89,9 +89,9 @@ const VerdocsFieldTextarea$1 = /*@__PURE__*/ proxyCustomElement(class extends HT
|
|
89
89
|
newSettings.x = Math.round(newSettings.x + translateX / this.xscale);
|
90
90
|
newSettings.y = Math.round(newSettings.y - translateY / this.yscale);
|
91
91
|
updateField(this.endpoint, this.templateid, this.field.name, { setting: newSettings })
|
92
|
-
.then(
|
92
|
+
.then(field => {
|
93
93
|
var _a;
|
94
|
-
(_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name, settings: newSettings });
|
94
|
+
(_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name, settings: newSettings, field });
|
95
95
|
Object.assign(e.target.dataset, { x: 0, y: 0, h: 0 });
|
96
96
|
})
|
97
97
|
.catch(e => console.log('Field update failed', e));
|
@@ -89,9 +89,10 @@ const VerdocsFieldTextbox$1 = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
89
89
|
newSettings.x = Math.round(newSettings.x + translateX / this.xscale);
|
90
90
|
newSettings.y = Math.round(newSettings.y - translateY / this.yscale);
|
91
91
|
updateField(this.endpoint, this.templateid, this.field.name, { setting: newSettings })
|
92
|
-
.then(
|
92
|
+
.then(field => {
|
93
93
|
var _a;
|
94
|
-
|
94
|
+
console.log('update result', field);
|
95
|
+
(_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name, settings: newSettings, field });
|
95
96
|
Object.assign(e.target.dataset, { x: 0, y: 0, h: 0 });
|
96
97
|
})
|
97
98
|
.catch(e => console.log('Field update failed', e));
|
@@ -114,6 +115,7 @@ const VerdocsFieldTextbox$1 = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
114
115
|
return this.hideSettingsPanel();
|
115
116
|
}, onSettingsChanged: e => {
|
116
117
|
var _a;
|
118
|
+
console.log('here');
|
117
119
|
(_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit(e.detail);
|
118
120
|
return this.hideSettingsPanel();
|
119
121
|
}, 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.' })))));
|
@@ -110,26 +110,27 @@ const VerdocsTemplateFields = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
110
110
|
console.log('[FIELDS] handleFieldChange', field, e, optionId);
|
111
111
|
this.rerender++;
|
112
112
|
}
|
113
|
+
handleFieldSettingsChange(pageInfo, field, roleIndex, el, newFieldData) {
|
114
|
+
var _a, _b, _c, _d;
|
115
|
+
console.log('[FIELDS] Field settings changed', field.name, newFieldData);
|
116
|
+
Object.assign(field, newFieldData);
|
117
|
+
el.field = newFieldData;
|
118
|
+
this.selectedRoleName = field.role_name;
|
119
|
+
el.setAttribute('roleindex', getRoleIndex(getRoleNames(this.store), field.role_name));
|
120
|
+
el.field = (_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.fields.find(f => f.name === field.name);
|
121
|
+
this.rerender++;
|
122
|
+
el.setAttribute('rerender', this.rerender);
|
123
|
+
(_c = this.templateUpdated) === null || _c === void 0 ? void 0 : _c.emit({ endpoint: this.endpoint, template: (_d = this.store) === null || _d === void 0 ? void 0 : _d.state, event: 'updated-field' });
|
124
|
+
console.log('[FIELDS] Re-rendering field', field.name, pageInfo.pageNumber);
|
125
|
+
this.reRenderField(field, pageInfo.pageNumber);
|
126
|
+
const newEl = renderDocumentField(field, pageInfo, roleIndex, { disabled: true, editable: true, draggable: true });
|
127
|
+
if (!newEl) {
|
128
|
+
return;
|
129
|
+
}
|
130
|
+
}
|
113
131
|
attachFieldAttributes(pageInfo, field, roleIndex, el) {
|
114
132
|
el.addEventListener('input', e => this.handleFieldChange(field, e));
|
115
|
-
el.addEventListener('settingsChanged', e =>
|
116
|
-
var _a, _b, _c, _d;
|
117
|
-
console.log('[FIELDS] settingsChanged', e.detail);
|
118
|
-
Object.assign(field, e.detail.field);
|
119
|
-
this.selectedRoleName = field.role_name;
|
120
|
-
el.field = e.detail.field;
|
121
|
-
el.setAttribute('roleindex', getRoleIndex(getRoleNames(this.store), field.role_name));
|
122
|
-
el.field = (_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.fields.find(f => f.name === field.name);
|
123
|
-
this.rerender++;
|
124
|
-
el.setAttribute('rerender', this.rerender);
|
125
|
-
(_c = this.templateUpdated) === null || _c === void 0 ? void 0 : _c.emit({ endpoint: this.endpoint, template: (_d = this.store) === null || _d === void 0 ? void 0 : _d.state, event: 'updated-field' });
|
126
|
-
console.log('[FIELDS] Re-rendering field', field.name, pageInfo.pageNumber);
|
127
|
-
this.reRenderField(field, pageInfo.pageNumber);
|
128
|
-
const newEl = renderDocumentField(field, pageInfo, roleIndex, { disabled: true, editable: true, draggable: true });
|
129
|
-
if (!newEl) {
|
130
|
-
return;
|
131
|
-
}
|
132
|
-
});
|
133
|
+
el.addEventListener('settingsChanged', e => this.handleFieldSettingsChange(pageInfo, field, roleIndex, el, e.detail.field));
|
133
134
|
el.addEventListener('deleted', () => {
|
134
135
|
var _a, _b;
|
135
136
|
console.log('[FIELDS] Deleted', this, field);
|
@@ -161,69 +162,52 @@ const VerdocsTemplateFields = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
161
162
|
return;
|
162
163
|
}
|
163
164
|
if (Array.isArray(el)) {
|
164
|
-
el.forEach(
|
165
|
-
this.attachFieldAttributes(pageInfo, field, roleIndex,
|
166
|
-
|
167
|
-
listeners: {
|
168
|
-
start(event) {
|
169
|
-
console.log('[FIELDS] Drag started', event.type, event.target);
|
170
|
-
},
|
171
|
-
move(event) {
|
172
|
-
const oldX = +(event.target.getAttribute('posX') || 0);
|
173
|
-
const oldY = +(event.target.getAttribute('posY') || 0);
|
174
|
-
const xScale = +(event.target.getAttribute('xScale') || 1);
|
175
|
-
const yScale = +(event.target.getAttribute('yScale') || 1);
|
176
|
-
const newX = event.dx / xScale + oldX;
|
177
|
-
const newY = event.dy / yScale + oldY;
|
178
|
-
event.target.setAttribute('posX', newX);
|
179
|
-
event.target.setAttribute('posy', newY);
|
180
|
-
updateCssTransform(event.target, 'translate', `${newX}px, ${newY}px`);
|
181
|
-
},
|
182
|
-
end: this.handleMoveField.bind(this),
|
183
|
-
},
|
184
|
-
});
|
165
|
+
el.forEach(childEl => {
|
166
|
+
this.attachFieldAttributes(pageInfo, field, roleIndex, childEl);
|
167
|
+
this.makeDraggable(childEl);
|
185
168
|
});
|
186
169
|
}
|
187
170
|
else {
|
188
171
|
this.attachFieldAttributes(pageInfo, field, roleIndex, el);
|
189
|
-
|
190
|
-
listeners: {
|
191
|
-
start(event) {
|
192
|
-
console.log('[FIELDS] Drag started', event.type, event.target);
|
193
|
-
},
|
194
|
-
move(event) {
|
195
|
-
const oldX = +(event.target.getAttribute('posX') || 0);
|
196
|
-
const oldY = +(event.target.getAttribute('posY') || 0);
|
197
|
-
const xScale = +(event.target.getAttribute('xScale') || 1);
|
198
|
-
const yScale = +(event.target.getAttribute('yScale') || 1);
|
199
|
-
const newX = event.dx / xScale + oldX;
|
200
|
-
const newY = event.dy / yScale + oldY;
|
201
|
-
event.target.setAttribute('posX', newX);
|
202
|
-
event.target.setAttribute('posy', newY);
|
203
|
-
updateCssTransform(event.target, 'translate', `${newX}px, ${newY}px`);
|
204
|
-
},
|
205
|
-
end: this.handleMoveField.bind(this),
|
206
|
-
},
|
207
|
-
});
|
172
|
+
this.makeDraggable(el);
|
208
173
|
}
|
209
174
|
}
|
210
|
-
|
175
|
+
makeDraggable(el) {
|
176
|
+
interact(el).draggable({
|
177
|
+
listeners: {
|
178
|
+
move: this.handleMoveField.bind(this),
|
179
|
+
end: this.handleMoveEnd.bind(this),
|
180
|
+
},
|
181
|
+
});
|
182
|
+
}
|
183
|
+
async handleMoveField(event) {
|
184
|
+
const oldX = +(event.target.getAttribute('posX') || 0);
|
185
|
+
const oldY = +(event.target.getAttribute('posY') || 0);
|
186
|
+
const xScale = +(event.target.getAttribute('xScale') || 1);
|
187
|
+
const yScale = +(event.target.getAttribute('yScale') || 1);
|
188
|
+
const newX = event.dx / xScale + oldX;
|
189
|
+
const newY = event.dy / yScale + oldY;
|
190
|
+
event.target.setAttribute('posX', newX);
|
191
|
+
event.target.setAttribute('posy', newY);
|
192
|
+
updateCssTransform(event.target, 'translate', `${newX}px, ${newY}px`);
|
193
|
+
}
|
194
|
+
async handleMoveEnd(event) {
|
211
195
|
var _a;
|
212
|
-
const pageNumber =
|
196
|
+
const pageNumber = event.target.getAttribute('pageNumber');
|
213
197
|
const { naturalWidth = 612, naturalHeight = 792, renderedHeight = 792 } = this.cachedPageInfo[pageNumber];
|
214
|
-
console.log('[FIELDS] Drag ended', pageNumber,
|
215
|
-
const clientRect =
|
216
|
-
const parent =
|
198
|
+
console.log('[FIELDS] Drag ended', pageNumber, event.target);
|
199
|
+
const clientRect = event.target.getBoundingClientRect();
|
200
|
+
const parent = event.target.parentElement;
|
217
201
|
const parentRect = parent.getBoundingClientRect();
|
218
202
|
// These two being backwards is not a mistake. Left measures "over" from the left (positive displacement) while bottom measures
|
219
203
|
// "up" from the bottom (negative displacement).
|
220
204
|
const newX = Math.max(clientRect.left - parentRect.left, 0);
|
221
205
|
const newY = Math.max(renderedHeight - (parentRect.bottom - clientRect.bottom), 0);
|
222
|
-
const { x, y } = this.viewCoordinatesToPageCoordinates(newX, newY, pageNumber, naturalWidth -
|
223
|
-
const name =
|
224
|
-
const option = +(
|
206
|
+
const { x, y } = this.viewCoordinatesToPageCoordinates(newX, newY, pageNumber, naturalWidth - event.rect.width, naturalHeight - event.rect.height);
|
207
|
+
const name = event.target.getAttribute('name');
|
208
|
+
const option = +(event.target.getAttribute('option') || '0');
|
225
209
|
const field = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state.fields.find(field => field.name === name);
|
226
|
-
console.log('Will update', name, option, field);
|
210
|
+
console.log('[FIELDS] Will update', name, option, field);
|
227
211
|
if (field) {
|
228
212
|
switch (field.type) {
|
229
213
|
case 'attachment':
|
@@ -249,20 +233,20 @@ const VerdocsTemplateFields = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
249
233
|
}
|
250
234
|
break;
|
251
235
|
}
|
252
|
-
await updateField(this.endpoint, this.templateId, name, field);
|
253
|
-
|
236
|
+
const newFieldData = await updateField(this.endpoint, this.templateId, name, field);
|
237
|
+
const pageInfo = this.cachedPageInfo[pageNumber];
|
238
|
+
const roleIndex = getRoleIndex(getRoleNames(this.store), field.role_name);
|
239
|
+
this.handleFieldSettingsChange(pageInfo, field, roleIndex, event.target, newFieldData);
|
254
240
|
}
|
255
241
|
}
|
256
242
|
generateFieldName(type, pageNumber) {
|
257
|
-
var _a
|
243
|
+
var _a;
|
258
244
|
let i = 1;
|
259
245
|
let fieldName;
|
260
246
|
do {
|
261
247
|
fieldName = `${type}P${pageNumber}-${i}`;
|
262
|
-
console.log('testing field', fieldName);
|
263
248
|
i++;
|
264
249
|
} while ((_a = this.store) === null || _a === void 0 ? void 0 : _a.state.fields.some(field => field.name === fieldName));
|
265
|
-
console.log('Will use field name', this, fieldName, (_b = this.store) === null || _b === void 0 ? void 0 : _b.state.fields);
|
266
250
|
return fieldName;
|
267
251
|
}
|
268
252
|
// Scale the X,Y clicks to the virtual page dimensions. Also ensure the field doesn't go off the page.
|
@@ -275,15 +259,11 @@ const VerdocsTemplateFields = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
275
259
|
async handleClickPage(e, pageNumber) {
|
276
260
|
var _a, _b, _c;
|
277
261
|
if (this.placing) {
|
278
|
-
console.log('Placing field', this, this.selectedRoleName, this.placing, pageNumber, e.offsetX, e.offsetY);
|
279
|
-
// console.log('Placing field', this.placing, page.sequence, e.offsetX, e.offsetY);
|
280
|
-
// const pageNumber = page.sequence;
|
281
262
|
const clickedX = e.offsetX;
|
282
263
|
const clickedY = e.offsetY;
|
283
264
|
const width = defaultWidth(this.placing);
|
284
265
|
const height = defaultHeight(this.placing);
|
285
266
|
const cachedPage = this.cachedPageInfo[pageNumber];
|
286
|
-
// console.log('Cached page', cachedPage);
|
287
267
|
const { naturalWidth = 612, naturalHeight = 792 } = cachedPage;
|
288
268
|
const coords = this.viewCoordinatesToPageCoordinates(clickedX, clickedY, pageNumber, naturalWidth - width, naturalHeight - height);
|
289
269
|
const x = Math.floor(coords.x);
|