@verdocs/web-sdk 6.8.3 → 6.8.4
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/{Icons-GgNiIFTt.js → Icons-TVvtZ5iL.js} +2 -6
- package/dist/cjs/{Icons-GgNiIFTt.js.map → Icons-TVvtZ5iL.js.map} +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/verdocs-adopt-signature-dialog.verdocs-delegate-dialog.verdocs-disclosure-dialog.verdocs-kba-dialog.verdocs-otp-dialog.verdocs-passcode-dialog.verdocs-view.entry.cjs.js.map +1 -1
- package/dist/cjs/verdocs-adopt-signature-dialog_7.cjs.entry.js +2 -2
- package/dist/cjs/verdocs-field-attachment_11.cjs.entry.js +111 -17
- package/dist/cjs/verdocs-field-payment.cjs.entry.js +1 -1
- package/dist/cjs/verdocs-file-chooser_2.cjs.entry.js +1 -1
- package/dist/cjs/verdocs-preview_7.cjs.entry.js +1 -1
- package/dist/cjs/verdocs-sign.cjs.entry.js +50 -22
- package/dist/cjs/verdocs-sign.entry.cjs.js.map +1 -1
- package/dist/cjs/verdocs-web-sdk.cjs.js +1 -1
- package/dist/collection/components/dialogs/verdocs-adopt-signature-dialog/verdocs-adopt-signature-dialog.css +6 -5
- package/dist/collection/components/embeds/verdocs-sign/verdocs-sign.css +54 -4
- package/dist/collection/components/embeds/verdocs-sign/verdocs-sign.js +48 -20
- package/dist/collection/components/embeds/verdocs-sign/verdocs-sign.js.map +1 -1
- package/dist/collection/components/fields/verdocs-field-initial/verdocs-field-initial.css +33 -37
- package/dist/collection/components/fields/verdocs-field-initial/verdocs-field-initial.js +56 -9
- package/dist/collection/components/fields/verdocs-field-initial/verdocs-field-initial.js.map +1 -1
- package/dist/collection/components/fields/verdocs-field-signature/verdocs-field-signature.css +33 -37
- package/dist/collection/components/fields/verdocs-field-signature/verdocs-field-signature.js +56 -9
- package/dist/collection/components/fields/verdocs-field-signature/verdocs-field-signature.js.map +1 -1
- package/dist/components/{p-B91pFl_v.js → p-5-YwGwyn.js} +13 -13
- package/dist/components/{p-B91pFl_v.js.map → p-5-YwGwyn.js.map} +1 -1
- package/dist/components/{p-4iMdAi-F.js → p-BDv5kBUR.js} +3 -5
- package/dist/components/p-BDv5kBUR.js.map +1 -0
- package/dist/components/{p-BYz85yxG.js → p-BZRJWqKI.js} +3 -3
- package/dist/components/{p-BYz85yxG.js.map → p-BZRJWqKI.js.map} +1 -1
- package/dist/components/{p-Bys760t8.js → p-Bafj7hI1.js} +3 -3
- package/dist/components/{p-Bys760t8.js.map → p-Bafj7hI1.js.map} +1 -1
- package/dist/components/{p-B4HqZ5yO.js → p-By2QlfRC.js} +3 -3
- package/dist/components/{p-B4HqZ5yO.js.map → p-By2QlfRC.js.map} +1 -1
- package/dist/components/{p-CdoA0Vhp.js → p-C3E0_BBd.js} +12 -12
- package/dist/components/{p-CdoA0Vhp.js.map → p-C3E0_BBd.js.map} +1 -1
- package/dist/components/{p-C8STy7JQ.js → p-C5fwD53I.js} +4 -4
- package/dist/components/{p-C8STy7JQ.js.map → p-C5fwD53I.js.map} +1 -1
- package/dist/components/{p-b0kPOapT.js → p-CDbm89Va.js} +14 -14
- package/dist/components/{p-b0kPOapT.js.map → p-CDbm89Va.js.map} +1 -1
- package/dist/components/{p-CNwYj4cS.js → p-CFi6VKgU.js} +3 -3
- package/dist/components/{p-CNwYj4cS.js.map → p-CFi6VKgU.js.map} +1 -1
- package/dist/components/{p-yvuxqHqW.js → p-CWGxLuye.js} +3 -3
- package/dist/components/{p-yvuxqHqW.js.map → p-CWGxLuye.js.map} +1 -1
- package/dist/components/{p-D5iqEzJy.js → p-CjDMm6od.js} +3 -3
- package/dist/components/{p-D5iqEzJy.js.map → p-CjDMm6od.js.map} +1 -1
- package/dist/components/{p-CcCp1gLW.js → p-CxyvrlVc.js} +59 -12
- package/dist/components/p-CxyvrlVc.js.map +1 -0
- package/dist/components/{p-D0JcxROc.js → p-DCaxeiL7.js} +59 -12
- package/dist/components/p-DCaxeiL7.js.map +1 -0
- package/dist/components/{p-Bw4ea7Kw.js → p-DzM2oGUr.js} +3 -3
- package/dist/components/{p-Bw4ea7Kw.js.map → p-DzM2oGUr.js.map} +1 -1
- package/dist/components/{p-CwA1DkPT.js → p-PGFRj24l.js} +4 -4
- package/dist/components/p-PGFRj24l.js.map +1 -0
- package/dist/components/{p-8aKU2veY.js → p-mFB74--W.js} +3 -3
- package/dist/components/{p-8aKU2veY.js.map → p-mFB74--W.js.map} +1 -1
- package/dist/components/{p-wSGGYtAF.js → p-tyY7kKNB.js} +3 -3
- package/dist/components/{p-wSGGYtAF.js.map → p-tyY7kKNB.js.map} +1 -1
- package/dist/components/verdocs-adopt-signature-dialog.js +1 -1
- package/dist/components/verdocs-build.js +15 -15
- package/dist/components/verdocs-field-attachment.js +1 -1
- package/dist/components/verdocs-field-checkbox.js +1 -1
- package/dist/components/verdocs-field-date.js +1 -1
- package/dist/components/verdocs-field-dropdown.js +1 -1
- package/dist/components/verdocs-field-initial.js +1 -1
- package/dist/components/verdocs-field-payment.js +1 -1
- package/dist/components/verdocs-field-radio.js +1 -1
- package/dist/components/verdocs-field-signature.js +1 -1
- package/dist/components/verdocs-field-textarea.js +1 -1
- package/dist/components/verdocs-field-textbox.js +1 -1
- package/dist/components/verdocs-field-timestamp.js +1 -1
- package/dist/components/verdocs-file-chooser.js +1 -1
- package/dist/components/verdocs-preview.js +1 -1
- package/dist/components/verdocs-sign.js +51 -23
- package/dist/components/verdocs-sign.js.map +1 -1
- package/dist/components/verdocs-template-attachments.js +1 -1
- package/dist/components/verdocs-template-document-page.js +1 -1
- package/dist/components/verdocs-template-fields.js +1 -1
- package/dist/esm/{Icons-uiSvPcsq.js → Icons-BU5rnXp2.js} +3 -5
- package/dist/esm/{Icons-uiSvPcsq.js.map → Icons-BU5rnXp2.js.map} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/verdocs-adopt-signature-dialog.verdocs-delegate-dialog.verdocs-disclosure-dialog.verdocs-kba-dialog.verdocs-otp-dialog.verdocs-passcode-dialog.verdocs-view.entry.js.map +1 -1
- package/dist/esm/verdocs-adopt-signature-dialog_7.entry.js +2 -2
- package/dist/esm/verdocs-field-attachment_11.entry.js +111 -17
- package/dist/esm/verdocs-field-payment.entry.js +1 -1
- package/dist/esm/verdocs-file-chooser_2.entry.js +1 -1
- package/dist/esm/verdocs-preview_7.entry.js +1 -1
- package/dist/esm/verdocs-sign.entry.js +50 -22
- package/dist/esm/verdocs-sign.entry.js.map +1 -1
- package/dist/esm/verdocs-web-sdk.js +1 -1
- package/dist/esm-es5/{Icons-uiSvPcsq.js → Icons-BU5rnXp2.js} +2 -2
- package/dist/esm-es5/{Icons-uiSvPcsq.js.map → Icons-BU5rnXp2.js.map} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/verdocs-adopt-signature-dialog.verdocs-delegate-dialog.verdocs-disclosure-dialog.verdocs-kba-dialog.verdocs-otp-dialog.verdocs-passcode-dialog.verdocs-view.entry.js.map +1 -1
- package/dist/esm-es5/verdocs-adopt-signature-dialog_7.entry.js +1 -1
- package/dist/esm-es5/verdocs-adopt-signature-dialog_7.entry.js.map +1 -1
- package/dist/esm-es5/verdocs-field-attachment_11.entry.js +1 -1
- package/dist/esm-es5/verdocs-field-attachment_11.entry.js.map +1 -1
- package/dist/esm-es5/verdocs-field-payment.entry.js +1 -1
- package/dist/esm-es5/verdocs-file-chooser_2.entry.js +1 -1
- package/dist/esm-es5/verdocs-preview_7.entry.js +1 -1
- package/dist/esm-es5/verdocs-sign.entry.js +1 -1
- package/dist/esm-es5/verdocs-sign.entry.js.map +1 -1
- package/dist/esm-es5/verdocs-web-sdk.js +1 -1
- package/dist/types/components/embeds/verdocs-sign/verdocs-sign.d.ts +2 -0
- package/dist/types/components/fields/verdocs-field-initial/verdocs-field-initial.d.ts +8 -1
- package/dist/types/components/fields/verdocs-field-signature/verdocs-field-signature.d.ts +8 -1
- package/dist/verdocs-web-sdk/p-081b245d.system.entry.js +2 -0
- package/dist/verdocs-web-sdk/p-081b245d.system.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/p-0faa3e84.entry.js +2 -0
- package/dist/verdocs-web-sdk/{p-bf7fb952.entry.js.map → p-0faa3e84.entry.js.map} +1 -1
- package/dist/verdocs-web-sdk/p-35JuQlcA.system.js.map +1 -0
- package/dist/verdocs-web-sdk/{p-1c2f170a.system.entry.js → p-43d3ef1d.system.entry.js} +2 -2
- package/dist/verdocs-web-sdk/p-4b67e923.system.entry.js +2 -0
- package/dist/verdocs-web-sdk/p-4b67e923.system.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/{p-72ff97d7.entry.js → p-5bc00fc6.entry.js} +3 -3
- package/dist/verdocs-web-sdk/{p-d026af3f.system.entry.js → p-6bbe3f73.system.entry.js} +2 -2
- package/dist/verdocs-web-sdk/p-6c5ecf49.entry.js +2 -0
- package/dist/verdocs-web-sdk/p-6c5ecf49.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/p-8e8c0110.entry.js +2 -0
- package/dist/verdocs-web-sdk/p-8e8c0110.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/p-93e9df57.system.entry.js +2 -0
- package/dist/verdocs-web-sdk/p-93e9df57.system.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/p-B8zpaHu-.system.js +1 -1
- package/dist/verdocs-web-sdk/{p-uiSvPcsq.js → p-BU5rnXp2.js} +2 -2
- package/dist/verdocs-web-sdk/{p-uiSvPcsq.js.map → p-BU5rnXp2.js.map} +1 -1
- package/dist/verdocs-web-sdk/p-C5U_96FD.system.js.map +1 -0
- package/dist/verdocs-web-sdk/p-COM7km0I.system.js.map +1 -0
- package/dist/verdocs-web-sdk/{p-B-lvFg2a.system.js.map → p-CaEXyfjG.system.js.map} +1 -1
- package/dist/verdocs-web-sdk/{p-C0HruX7m.system.js.map → p-CvwnnOmD.system.js.map} +1 -1
- package/dist/verdocs-web-sdk/{p-BnNnWnOr.system.js.map → p-DEv3ZZhp.system.js.map} +1 -1
- package/dist/verdocs-web-sdk/{p-DejNzlEq.system.js → p-GqS1qR-V.system.js} +2 -2
- package/dist/verdocs-web-sdk/{p-DejNzlEq.system.js.map → p-GqS1qR-V.system.js.map} +1 -1
- package/dist/verdocs-web-sdk/{p-59243cd3.system.entry.js → p-acf58947.system.entry.js} +3 -3
- package/dist/verdocs-web-sdk/{p-4d0a53c0.entry.js → p-e06f9319.entry.js} +2 -2
- package/dist/verdocs-web-sdk/{p-cec41aeb.entry.js → p-edc49225.entry.js} +2 -2
- package/dist/verdocs-web-sdk/verdocs-adopt-signature-dialog.verdocs-delegate-dialog.verdocs-disclosure-dialog.verdocs-kba-dialog.verdocs-otp-dialog.verdocs-passcode-dialog.verdocs-view.entry.esm.js.map +1 -1
- package/dist/verdocs-web-sdk/verdocs-sign.entry.esm.js.map +1 -1
- package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
- package/package.json +1 -1
- package/dist/components/p-4iMdAi-F.js.map +0 -1
- package/dist/components/p-CcCp1gLW.js.map +0 -1
- package/dist/components/p-CwA1DkPT.js.map +0 -1
- package/dist/components/p-D0JcxROc.js.map +0 -1
- package/dist/verdocs-web-sdk/p-066b9068.entry.js +0 -2
- package/dist/verdocs-web-sdk/p-066b9068.entry.js.map +0 -1
- package/dist/verdocs-web-sdk/p-4d2642f5.system.entry.js +0 -2
- package/dist/verdocs-web-sdk/p-4d2642f5.system.entry.js.map +0 -1
- package/dist/verdocs-web-sdk/p-BREkr6mU.system.js.map +0 -1
- package/dist/verdocs-web-sdk/p-BjX323yE.system.js.map +0 -1
- package/dist/verdocs-web-sdk/p-CVkABARN.system.js.map +0 -1
- package/dist/verdocs-web-sdk/p-b2108c5c.system.entry.js +0 -2
- package/dist/verdocs-web-sdk/p-b2108c5c.system.entry.js.map +0 -1
- package/dist/verdocs-web-sdk/p-b5db2ed4.entry.js +0 -2
- package/dist/verdocs-web-sdk/p-b5db2ed4.entry.js.map +0 -1
- package/dist/verdocs-web-sdk/p-bf7fb952.entry.js +0 -2
- package/dist/verdocs-web-sdk/p-d4cfa91a.system.entry.js +0 -2
- package/dist/verdocs-web-sdk/p-d4cfa91a.system.entry.js.map +0 -1
- /package/dist/verdocs-web-sdk/{p-1c2f170a.system.entry.js.map → p-43d3ef1d.system.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-72ff97d7.entry.js.map → p-5bc00fc6.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-d026af3f.system.entry.js.map → p-6bbe3f73.system.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-59243cd3.system.entry.js.map → p-acf58947.system.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-4d0a53c0.entry.js.map → p-e06f9319.entry.js.map} +0 -0
- /package/dist/verdocs-web-sdk/{p-cec41aeb.entry.js.map → p-edc49225.entry.js.map} +0 -0
|
@@ -11,6 +11,8 @@ verdocs-field-initial {
|
|
|
11
11
|
border-radius: var(--verdocs-field-radius);
|
|
12
12
|
background-color: var(--verdocs-field-background, transparent);
|
|
13
13
|
border: var(--verdocs-field-border, 1px solid rgba(0, 0, 0, 0.2));
|
|
14
|
+
cursor: pointer;
|
|
15
|
+
caret-color: transparent;
|
|
14
16
|
}
|
|
15
17
|
verdocs-field-initial label {
|
|
16
18
|
top: -14px;
|
|
@@ -29,6 +31,9 @@ verdocs-field-initial.done {
|
|
|
29
31
|
border: none;
|
|
30
32
|
opacity: 1;
|
|
31
33
|
}
|
|
34
|
+
verdocs-field-initial.menu-open {
|
|
35
|
+
z-index: 50;
|
|
36
|
+
}
|
|
32
37
|
verdocs-field-initial .initial-container {
|
|
33
38
|
width: 100%;
|
|
34
39
|
height: 100%;
|
|
@@ -43,50 +48,41 @@ verdocs-field-initial .initial-container img {
|
|
|
43
48
|
max-height: 100%;
|
|
44
49
|
object-fit: contain;
|
|
45
50
|
}
|
|
46
|
-
verdocs-field-initial .initial-container .
|
|
51
|
+
verdocs-field-initial .initial-container .action-menu {
|
|
47
52
|
position: absolute;
|
|
48
|
-
top:
|
|
53
|
+
top: calc(100% + 4px);
|
|
49
54
|
left: 0;
|
|
50
|
-
width:
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
display: none;
|
|
54
|
-
align-items: center;
|
|
55
|
-
justify-content: center;
|
|
56
|
-
gap: 8px;
|
|
57
|
-
border-radius: var(--verdocs-field-radius);
|
|
58
|
-
backdrop-filter: blur(1px);
|
|
59
|
-
}
|
|
60
|
-
verdocs-field-initial .initial-container .overlay .icon-button {
|
|
61
|
-
background: white;
|
|
62
|
-
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
63
|
-
cursor: pointer;
|
|
64
|
-
padding: 4px;
|
|
55
|
+
min-width: 90px;
|
|
56
|
+
background: #ffffff;
|
|
57
|
+
border: 1px solid rgba(0, 0, 0, 0.15);
|
|
65
58
|
border-radius: 6px;
|
|
66
|
-
|
|
59
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
60
|
+
z-index: 1000;
|
|
67
61
|
display: flex;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
width: auto;
|
|
73
|
-
height: auto;
|
|
74
|
-
}
|
|
75
|
-
verdocs-field-initial .initial-container .overlay .icon-button:hover {
|
|
76
|
-
background-color: #fafafa;
|
|
77
|
-
transform: translateY(-1px);
|
|
78
|
-
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
|
79
|
-
color: #000;
|
|
62
|
+
flex-direction: column;
|
|
63
|
+
overflow: hidden;
|
|
64
|
+
font-size: 12px;
|
|
65
|
+
font-family: var(--verdocs-primary-font, "Inter", "Barlow", sans-serif);
|
|
80
66
|
}
|
|
81
|
-
verdocs-field-initial .initial-container .
|
|
82
|
-
|
|
83
|
-
|
|
67
|
+
verdocs-field-initial .initial-container .action-menu .menu-item {
|
|
68
|
+
background: #ffffff;
|
|
69
|
+
border: none;
|
|
70
|
+
padding: 8px 12px;
|
|
71
|
+
color: #333333;
|
|
72
|
+
cursor: pointer;
|
|
73
|
+
text-align: left;
|
|
74
|
+
width: 100%;
|
|
75
|
+
font-size: 12px;
|
|
76
|
+
line-height: 1.2;
|
|
77
|
+
height: auto;
|
|
78
|
+
font-family: inherit;
|
|
84
79
|
}
|
|
85
|
-
verdocs-field-initial .initial-container:hover
|
|
86
|
-
|
|
80
|
+
verdocs-field-initial .initial-container .action-menu .menu-item:hover {
|
|
81
|
+
background-color: #f0f0f0;
|
|
82
|
+
color: #000000;
|
|
87
83
|
}
|
|
88
|
-
verdocs-field-initial .initial-container.
|
|
89
|
-
|
|
84
|
+
verdocs-field-initial .initial-container .action-menu .menu-item:not(:last-child) {
|
|
85
|
+
border-bottom: 1px solid rgba(0, 0, 0, 0.08);
|
|
90
86
|
}
|
|
91
87
|
verdocs-field-initial.disabled .initial-container {
|
|
92
88
|
opacity: 0.5;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import interact from "interactjs";
|
|
2
2
|
import { VerdocsEndpoint, updateField } from "@verdocs/js-sdk";
|
|
3
3
|
import { h, Host, Fragment } from "@stencil/core";
|
|
4
|
-
import { SettingsIcon
|
|
4
|
+
import { SettingsIcon } from "../../../utils/Icons";
|
|
5
5
|
import { Store } from "../../../utils/Datastore";
|
|
6
6
|
/**
|
|
7
7
|
* Displays an initial field. If an initial already exists, it will be displayed and the field
|
|
@@ -66,13 +66,56 @@ export class VerdocsFieldInitial {
|
|
|
66
66
|
this.pagenumber = 1;
|
|
67
67
|
this.showingProperties = false;
|
|
68
68
|
this.focused = false;
|
|
69
|
-
this.
|
|
69
|
+
this.menuOpen = false;
|
|
70
|
+
this.closeMenuTimer = null;
|
|
71
|
+
this.outsideMenuHandler = null;
|
|
70
72
|
this.tempInitials = '';
|
|
73
|
+
this.openMenu = () => {
|
|
74
|
+
if (this.closeMenuTimer) {
|
|
75
|
+
clearTimeout(this.closeMenuTimer);
|
|
76
|
+
this.closeMenuTimer = null;
|
|
77
|
+
}
|
|
78
|
+
this.menuOpen = true;
|
|
79
|
+
};
|
|
80
|
+
this.scheduleCloseMenu = () => {
|
|
81
|
+
if (this.closeMenuTimer) {
|
|
82
|
+
clearTimeout(this.closeMenuTimer);
|
|
83
|
+
}
|
|
84
|
+
this.closeMenuTimer = setTimeout(() => {
|
|
85
|
+
this.menuOpen = false;
|
|
86
|
+
this.closeMenuTimer = null;
|
|
87
|
+
}, 150);
|
|
88
|
+
};
|
|
89
|
+
this.closeMenu = () => {
|
|
90
|
+
if (this.closeMenuTimer) {
|
|
91
|
+
clearTimeout(this.closeMenuTimer);
|
|
92
|
+
this.closeMenuTimer = null;
|
|
93
|
+
}
|
|
94
|
+
this.menuOpen = false;
|
|
95
|
+
};
|
|
71
96
|
}
|
|
72
97
|
async focusField() {
|
|
73
98
|
this.el.focus();
|
|
74
99
|
this.focused = true;
|
|
75
100
|
}
|
|
101
|
+
componentDidLoad() {
|
|
102
|
+
this.outsideMenuHandler = (e) => {
|
|
103
|
+
if (this.menuOpen && !this.el.contains(e.target)) {
|
|
104
|
+
this.closeMenu();
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
document.addEventListener('pointerdown', this.outsideMenuHandler);
|
|
108
|
+
}
|
|
109
|
+
disconnectedCallback() {
|
|
110
|
+
if (this.closeMenuTimer) {
|
|
111
|
+
clearTimeout(this.closeMenuTimer);
|
|
112
|
+
this.closeMenuTimer = null;
|
|
113
|
+
}
|
|
114
|
+
if (this.outsideMenuHandler) {
|
|
115
|
+
document.removeEventListener('pointerdown', this.outsideMenuHandler);
|
|
116
|
+
this.outsideMenuHandler = null;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
76
119
|
componentDidUpdate() {
|
|
77
120
|
if (this.isPreview) {
|
|
78
121
|
interact(this.el).unset();
|
|
@@ -173,29 +216,33 @@ export class VerdocsFieldInitial {
|
|
|
173
216
|
if (done) {
|
|
174
217
|
return h(Host, { class: { done } }, value && h("img", { src: value, alt: "Initial" }));
|
|
175
218
|
}
|
|
176
|
-
return (h(Host, { class: { required, disabled, done, focused, filled: !!base64, [signerClass]: true } }, editable && h("div", { class: "edge-right" }), editable && h("div", { class: "edge-left" }), editable && h("div", { class: "edge-top" }), editable && h("div", { class: "edge-bottom" }), label && h("label", null, label), base64 ? (h("div", { class: { 'initial-container': true, '
|
|
219
|
+
return (h(Host, { class: { required, disabled, done, focused, filled: !!base64, 'menu-open': this.menuOpen, [signerClass]: true } }, editable && h("div", { class: "edge-right" }), editable && h("div", { class: "edge-left" }), editable && h("div", { class: "edge-top" }), editable && h("div", { class: "edge-bottom" }), label && h("label", null, label), base64 ? (h("div", { class: { 'initial-container': true, 'menu-open': this.menuOpen }, onMouseEnter: () => !disabled && this.openMenu(), onMouseLeave: () => this.scheduleCloseMenu(), onClick: e => {
|
|
220
|
+
e.stopPropagation();
|
|
221
|
+
if (disabled)
|
|
222
|
+
return;
|
|
223
|
+
this.menuOpen ? this.closeMenu() : this.openMenu();
|
|
224
|
+
} }, h("img", { src: base64, alt: "Initial" }), this.menuOpen && (h("div", { class: "action-menu", onMouseEnter: () => this.openMenu(), onMouseLeave: () => this.scheduleCloseMenu() }, h("button", { type: "button", class: "menu-item", onClick: e => {
|
|
177
225
|
e.stopPropagation();
|
|
178
226
|
if (disabled)
|
|
179
227
|
return;
|
|
180
|
-
// EDIT action: always open dialog
|
|
181
228
|
console.log('[INITIAL] Editing initials');
|
|
229
|
+
this.closeMenu();
|
|
182
230
|
this.adopt.emit();
|
|
183
|
-
} }), h("button", {
|
|
231
|
+
} }, "Edit"), h("button", { type: "button", class: "menu-item", onClick: e => {
|
|
184
232
|
var _a;
|
|
185
233
|
e.stopPropagation();
|
|
186
234
|
if (disabled)
|
|
187
235
|
return;
|
|
188
|
-
// CLEAR action
|
|
189
236
|
console.log('[INITIAL] Clearing initials');
|
|
237
|
+
this.closeMenu();
|
|
190
238
|
(_a = this.fieldChange) === null || _a === void 0 ? void 0 : _a.emit(null);
|
|
191
|
-
} })))) : (h("button", { onClick: () => {
|
|
239
|
+
} }, "Clear"))))) : (h("button", { onClick: () => {
|
|
192
240
|
var _a;
|
|
193
241
|
if (disabled)
|
|
194
242
|
return;
|
|
195
243
|
// If we already have an initial ID, use it immediately
|
|
196
244
|
if (this.initialid) {
|
|
197
245
|
console.log('[INITIAL] Reusing existing initials', this.initialid);
|
|
198
|
-
this.suppressOverlay = true;
|
|
199
246
|
(_a = this.fieldChange) === null || _a === void 0 ? void 0 : _a.emit(this.initialid);
|
|
200
247
|
}
|
|
201
248
|
else {
|
|
@@ -515,7 +562,7 @@ export class VerdocsFieldInitial {
|
|
|
515
562
|
return {
|
|
516
563
|
"showingProperties": {},
|
|
517
564
|
"focused": {},
|
|
518
|
-
"
|
|
565
|
+
"menuOpen": {},
|
|
519
566
|
"tempInitials": {}
|
|
520
567
|
};
|
|
521
568
|
}
|
package/dist/collection/components/fields/verdocs-field-initial/verdocs-field-initial.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verdocs-field-initial.js","sourceRoot":"","sources":["../../../../src/components/fields/verdocs-field-initial/verdocs-field-initial.tsx"],"names":[],"mappings":"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","sourcesContent":["import interact from 'interactjs';\nimport {ResizeEvent} from '@interactjs/actions/resize/plugin';\nimport {ITemplateField, IEnvelopeField, VerdocsEndpoint, updateField, ITemplate} from '@verdocs/js-sdk';\nimport {Component, Event, EventEmitter, h, Host, Method, Prop, Fragment, State, Element, Listen} from '@stencil/core';\nimport {SettingsIcon, PencilIcon, EraserIcon} from '../../../utils/Icons';\nimport {Store} from '../../../utils/Datastore';\n\n/**\n * Displays an initial field. If an initial already exists, it will be displayed and the field\n * will be disabled. Otherwise, a placeholder button will be shown. Clicking the button will\n * show a dialog to adopt an initial.\n *\n * NOTE: When initial fields are completed they will be filled with an initial \"stamp\".\n * This requires operation against a live, valid envelope. If you are testing this component\n * in Storybook, it will not be visible here.\n */\n@Component({\n tag: 'verdocs-field-initial',\n styleUrl: 'verdocs-field-initial.scss',\n shadow: false,\n})\nexport class VerdocsFieldInitial {\n @Element() el: HTMLElement;\n\n /**\n * Fields may be attached to templates or envelopes, but only template fields may be edited.\n */\n @Prop({reflect: true}) source: 'template' | 'envelope' = 'template';\n\n /**\n * The source template or envelope ID the field is found in.\n */\n @Prop({reflect: true}) sourceid: string = '';\n\n /**\n * The name of the field to display.\n */\n @Prop({reflect: true}) fieldname: string = '';\n\n /**\n * Override the field's settings. This is intended to be used during signing when fields are being\n * mutated.\n */\n @Prop() field: IEnvelopeField | null | undefined = null;\n\n /**\n * If set, overrides the field's settings object. Primarily used to support \"preview\" modes where all fields are disabled.\n */\n @Prop({reflect: true}) disabled?: boolean = false;\n\n /**\n * The document or template field to display.\n */\n @Prop({reflect: true}) initials: string = '';\n\n /**\n * If set, a settings icon will be displayed on hover. The settings shown allow the field's recipient and other settings to be\n * changed, so it should typically only be enabled in the Builder.\n */\n @Prop({reflect: true}) editable?: boolean = false;\n\n /**\n * If set, the field may be dragged to a new location. This should only be enabled in the Builder, or for self-placed fields.\n */\n @Prop({reflect: true}) moveable?: boolean = false;\n\n /**\n * If set, the field is considered \"done\" and is drawn in a display-final-value state.\n */\n @Prop({reflect: true}) done?: boolean = false;\n\n /**\n * If set, the field will be be scaled horizontally by this factor.\n */\n @Prop({reflect: true}) xscale?: number = 1;\n\n /**\n * If set, the field will be be scaled vertically by this factor.\n */\n @Prop({reflect: true}) yscale?: number = 1;\n\n /**\n * The page the field is on\n */\n @Prop({reflect: true}) pagenumber?: number = 1;\n\n /**\n * If set, provides the ID of already-adopted initials. If present, clicking the field (when empty)\n * will immediately use these initials instead of showing the adoption dialog.\n */\n @Prop({reflect: true}) initialid?: string;\n\n /**\n * If set to true, it will force interact to unset the el, resulting in no dragging the field.\n */\n @Prop({reflect: true}) isPreview?: boolean;\n\n /**\n * Event emitted when an initial block is adopted by the user. The event detail will contain the base64 string of the initial image.\n */\n @Event({composed: true}) adopt: EventEmitter<string>;\n\n /**\n * Event fired when the step is cancelled. This is called exit to avoid conflicts with the JS-reserved \"cancel\" event name.\n */\n @Event({composed: true}) exit: EventEmitter;\n\n /**\n * Event fired when the input field value changes. Note that this will only be fired on blur, tab-out, ENTER key press, etc.\n * It is generally the best event to subscribe to than `input` for most cases EXCEPT autocomplete fields that need to see every\n * keypress.\n */\n @Event({composed: true}) fieldChange: EventEmitter<string>;\n\n /**\n * Event fired when the field's settings are changed.\n */\n @Event({composed: true}) settingsChanged: EventEmitter<{fieldName: string; field: ITemplateField}>;\n\n /**\n * Event fired on every character entered into / deleted from the field.\n */\n @Event({composed: true}) settingsPress: EventEmitter;\n\n /**\n * Event fired when the field is deleted.\n */\n @Event({composed: true}) deleted: EventEmitter<{fieldName: string}>;\n\n @State() showingProperties?: boolean = false;\n @State() focused?: boolean = false;\n @State() suppressOverlay = false;\n\n @Method() async focusField() {\n this.el.focus();\n this.focused = true;\n }\n\n @State()\n tempInitials: string = '';\n\n componentDidUpdate() {\n if (this.isPreview) {\n interact(this.el).unset();\n return;\n }\n }\n\n componentDidRender() {\n interact.dynamicDrop(true);\n\n if (this.editable) {\n interact(this.el).resizable({\n edges: {\n top: '.edge-top',\n left: '.edge-left',\n bottom: '.edge-bottom',\n right: '.edge-right',\n },\n modifiers: [\n interact.modifiers.restrictSize({\n min: {width: 71, height: 36},\n }),\n ],\n listeners: {\n start: this.handleResizeStart.bind(this),\n move: this.handleResize.bind(this),\n end: this.handleResizeEnd.bind(this),\n },\n });\n }\n }\n\n @Listen('blur')\n handleBlur() {\n this.focused = false;\n }\n\n handleResizeStart(e: ResizeEvent) {\n e.preventDefault();\n e.stopPropagation();\n e.target.dataset.originalBottom = e.target.style.bottom;\n }\n\n handleResize(e: any) {\n let {width, height} = e.rect;\n\n const dX = e.deltaRect.left;\n const dY = e.deltaRect.bottom;\n const currentLeft = parseFloat(e.target.style.left);\n const currentBottom = parseFloat(e.target.style.bottom);\n\n width /= this.xscale;\n height /= this.yscale;\n\n Object.assign(e.target.style, {\n width: `${width}px`,\n height: `${height}px`,\n left: `${currentLeft + dX}px`,\n bottom: `${currentBottom - dY}px`,\n });\n }\n\n async handleResizeEnd(e: any) {\n const {sourceid, fieldname} = this;\n\n const width = Math.round(parseFloat(e.target.style.width));\n let height = Math.round(parseFloat(e.target.style.height));\n if (height < 20) {\n height = 15;\n }\n\n const newBottom = parseFloat(e.target.style.bottom);\n const originalBottom = parseFloat(e.target.dataset.originalBottom);\n const template = await Store.getTemplate(VerdocsEndpoint.getDefault(), this.sourceid);\n const oldField = template.fields.find(f => f.name === fieldname);\n const y = newBottom !== originalBottom ? newBottom / this.yscale : oldField?.y;\n\n updateField(VerdocsEndpoint.getDefault(), sourceid, fieldname, {width, height, y})\n .then(async updatedField => {\n const template = await Store.getTemplate(VerdocsEndpoint.getDefault(), this.sourceid);\n const newTemplate = JSON.parse(JSON.stringify(template)) as ITemplate;\n const fieldIndex = newTemplate.fields.findIndex(field => field.name === fieldname);\n if (fieldIndex > -1) {\n newTemplate.fields[fieldIndex] = updatedField;\n }\n Store.updateTemplate(this.sourceid, newTemplate);\n\n this.settingsChanged?.emit({fieldName: fieldname, field: updatedField});\n Object.assign(e.target.dataset, {x: 0, y: 0, h: 0});\n })\n .catch(e => console.log('Field update failed', e));\n }\n\n @Method()\n async showSettingsPanel() {\n const settingsPanel = document.getElementById(`verdocs-settings-panel-${this.fieldname}`) as any;\n if (settingsPanel && settingsPanel.showPanel) {\n settingsPanel.showPanel();\n }\n }\n\n @Method()\n async hideSettingsPanel() {\n const settingsPanel = document.getElementById(`verdocs-settings-panel-${this.fieldname}`) as any;\n if (settingsPanel && settingsPanel.hidePanel) {\n settingsPanel.hidePanel();\n }\n }\n\n render() {\n const {source, sourceid, fieldname, editable = false, done = false, disabled = false, focused, xscale = 1, yscale = 1} = this;\n\n const {index, field} = Store.getField(source, sourceid, fieldname, this.field);\n const {required = false, value = '', label = '', settings = {}} = field || {};\n const signerClass = `signer-${(index % 10) + 1}`;\n const {base64} = settings;\n\n if (done) {\n return <Host class={{done}}>{value && <img src={value} alt=\"Initial\" />}</Host>;\n }\n\n return (\n <Host class={{required, disabled, done, focused, filled: !!base64, [signerClass]: true}}>\n {editable && <div class=\"edge-right\" />}\n {editable && <div class=\"edge-left\" />}\n {editable && <div class=\"edge-top\" />}\n {editable && <div class=\"edge-bottom\" />}\n\n {label && <label>{label}</label>}\n\n {base64 ? (\n <div class={{'initial-container': true, 'suppress-overlay': this.suppressOverlay}} onMouseLeave={() => (this.suppressOverlay = false)}>\n <img src={base64} alt=\"Initial\" />\n <div class=\"overlay\">\n <button\n class=\"icon-button\"\n innerHTML={PencilIcon}\n onClick={e => {\n e.stopPropagation();\n if (disabled) return;\n // EDIT action: always open dialog\n console.log('[INITIAL] Editing initials');\n this.adopt.emit();\n }}\n />\n <button\n class=\"icon-button\"\n innerHTML={EraserIcon}\n onClick={e => {\n e.stopPropagation();\n if (disabled) return;\n // CLEAR action\n console.log('[INITIAL] Clearing initials');\n this.fieldChange?.emit(null);\n }}\n />\n </div>\n </div>\n ) : (\n <button\n onClick={() => {\n if (disabled) return;\n // If we already have an initial ID, use it immediately\n if (this.initialid) {\n console.log('[INITIAL] Reusing existing initials', this.initialid);\n this.suppressOverlay = true;\n this.fieldChange?.emit(this.initialid);\n } else {\n this.adopt.emit();\n }\n }}\n >\n Initial\n </button>\n )}\n\n {editable && (\n <Fragment>\n <div\n id={`verdocs-settings-panel-trigger-${fieldname}`}\n style={{transform: `scale(${Math.floor((1 / xscale) * 1000) / 1000}, ${Math.floor((1 / yscale) * 1000) / 1000})`}}\n class=\"settings-icon\"\n innerHTML={SettingsIcon}\n onClick={(e: any) => {\n e.stopPropagation();\n this.showingProperties = !this.showingProperties;\n }}\n />\n\n {this.showingProperties && (\n <verdocs-portal anchor={`verdocs-settings-panel-trigger-${fieldname}`} onClickAway={() => (this.showingProperties = false)}>\n <verdocs-template-field-properties\n templateId={sourceid}\n fieldName={fieldname}\n onClose={() => (this.showingProperties = false)}\n onDelete={() => {\n this.deleted?.emit({fieldName: field.name});\n return this.hideSettingsPanel();\n }}\n onSettingsChanged={e => {\n this.settingsChanged?.emit(e.detail);\n return this.hideSettingsPanel();\n }}\n helpText={\"initial fields capture the recipient's initials on a clause or page.\"}\n />\n </verdocs-portal>\n )}\n </Fragment>\n )}\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"verdocs-field-initial.js","sourceRoot":"","sources":["../../../../src/components/fields/verdocs-field-initial/verdocs-field-initial.tsx"],"names":[],"mappings":"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","sourcesContent":["import interact from 'interactjs';\nimport {ResizeEvent} from '@interactjs/actions/resize/plugin';\nimport {ITemplateField, IEnvelopeField, VerdocsEndpoint, updateField, ITemplate} from '@verdocs/js-sdk';\nimport {Component, Event, EventEmitter, h, Host, Method, Prop, Fragment, State, Element, Listen} from '@stencil/core';\nimport {SettingsIcon} from '../../../utils/Icons';\nimport {Store} from '../../../utils/Datastore';\n\n/**\n * Displays an initial field. If an initial already exists, it will be displayed and the field\n * will be disabled. Otherwise, a placeholder button will be shown. Clicking the button will\n * show a dialog to adopt an initial.\n *\n * NOTE: When initial fields are completed they will be filled with an initial \"stamp\".\n * This requires operation against a live, valid envelope. If you are testing this component\n * in Storybook, it will not be visible here.\n */\n@Component({\n tag: 'verdocs-field-initial',\n styleUrl: 'verdocs-field-initial.scss',\n shadow: false,\n})\nexport class VerdocsFieldInitial {\n @Element() el: HTMLElement;\n\n /**\n * Fields may be attached to templates or envelopes, but only template fields may be edited.\n */\n @Prop({reflect: true}) source: 'template' | 'envelope' = 'template';\n\n /**\n * The source template or envelope ID the field is found in.\n */\n @Prop({reflect: true}) sourceid: string = '';\n\n /**\n * The name of the field to display.\n */\n @Prop({reflect: true}) fieldname: string = '';\n\n /**\n * Override the field's settings. This is intended to be used during signing when fields are being\n * mutated.\n */\n @Prop() field: IEnvelopeField | null | undefined = null;\n\n /**\n * If set, overrides the field's settings object. Primarily used to support \"preview\" modes where all fields are disabled.\n */\n @Prop({reflect: true}) disabled?: boolean = false;\n\n /**\n * The document or template field to display.\n */\n @Prop({reflect: true}) initials: string = '';\n\n /**\n * If set, a settings icon will be displayed on hover. The settings shown allow the field's recipient and other settings to be\n * changed, so it should typically only be enabled in the Builder.\n */\n @Prop({reflect: true}) editable?: boolean = false;\n\n /**\n * If set, the field may be dragged to a new location. This should only be enabled in the Builder, or for self-placed fields.\n */\n @Prop({reflect: true}) moveable?: boolean = false;\n\n /**\n * If set, the field is considered \"done\" and is drawn in a display-final-value state.\n */\n @Prop({reflect: true}) done?: boolean = false;\n\n /**\n * If set, the field will be be scaled horizontally by this factor.\n */\n @Prop({reflect: true}) xscale?: number = 1;\n\n /**\n * If set, the field will be be scaled vertically by this factor.\n */\n @Prop({reflect: true}) yscale?: number = 1;\n\n /**\n * The page the field is on\n */\n @Prop({reflect: true}) pagenumber?: number = 1;\n\n /**\n * If set, provides the ID of already-adopted initials. If present, clicking the field (when empty)\n * will immediately use these initials instead of showing the adoption dialog.\n */\n @Prop({reflect: true}) initialid?: string;\n\n /**\n * If set to true, it will force interact to unset the el, resulting in no dragging the field.\n */\n @Prop({reflect: true}) isPreview?: boolean;\n\n /**\n * Event emitted when an initial block is adopted by the user. The event detail will contain the base64 string of the initial image.\n */\n @Event({composed: true}) adopt: EventEmitter<string>;\n\n /**\n * Event fired when the step is cancelled. This is called exit to avoid conflicts with the JS-reserved \"cancel\" event name.\n */\n @Event({composed: true}) exit: EventEmitter;\n\n /**\n * Event fired when the input field value changes. Note that this will only be fired on blur, tab-out, ENTER key press, etc.\n * It is generally the best event to subscribe to than `input` for most cases EXCEPT autocomplete fields that need to see every\n * keypress.\n */\n @Event({composed: true}) fieldChange: EventEmitter<string>;\n\n /**\n * Event fired when the field's settings are changed.\n */\n @Event({composed: true}) settingsChanged: EventEmitter<{fieldName: string; field: ITemplateField}>;\n\n /**\n * Event fired on every character entered into / deleted from the field.\n */\n @Event({composed: true}) settingsPress: EventEmitter;\n\n /**\n * Event fired when the field is deleted.\n */\n @Event({composed: true}) deleted: EventEmitter<{fieldName: string}>;\n\n @State() showingProperties?: boolean = false;\n @State() focused?: boolean = false;\n @State() menuOpen = false;\n\n private closeMenuTimer: any = null;\n private outsideMenuHandler: ((e: Event) => void) | null = null;\n\n @Method() async focusField() {\n this.el.focus();\n this.focused = true;\n }\n\n @State()\n tempInitials: string = '';\n\n componentDidLoad() {\n this.outsideMenuHandler = (e: Event) => {\n if (this.menuOpen && !this.el.contains(e.target as Node)) {\n this.closeMenu();\n }\n };\n document.addEventListener('pointerdown', this.outsideMenuHandler);\n }\n\n disconnectedCallback() {\n if (this.closeMenuTimer) {\n clearTimeout(this.closeMenuTimer);\n this.closeMenuTimer = null;\n }\n if (this.outsideMenuHandler) {\n document.removeEventListener('pointerdown', this.outsideMenuHandler);\n this.outsideMenuHandler = null;\n }\n }\n\n private openMenu = () => {\n if (this.closeMenuTimer) {\n clearTimeout(this.closeMenuTimer);\n this.closeMenuTimer = null;\n }\n this.menuOpen = true;\n };\n\n private scheduleCloseMenu = () => {\n if (this.closeMenuTimer) {\n clearTimeout(this.closeMenuTimer);\n }\n this.closeMenuTimer = setTimeout(() => {\n this.menuOpen = false;\n this.closeMenuTimer = null;\n }, 150);\n };\n\n private closeMenu = () => {\n if (this.closeMenuTimer) {\n clearTimeout(this.closeMenuTimer);\n this.closeMenuTimer = null;\n }\n this.menuOpen = false;\n };\n\n componentDidUpdate() {\n if (this.isPreview) {\n interact(this.el).unset();\n return;\n }\n }\n\n componentDidRender() {\n interact.dynamicDrop(true);\n\n if (this.editable) {\n interact(this.el).resizable({\n edges: {\n top: '.edge-top',\n left: '.edge-left',\n bottom: '.edge-bottom',\n right: '.edge-right',\n },\n modifiers: [\n interact.modifiers.restrictSize({\n min: {width: 71, height: 36},\n }),\n ],\n listeners: {\n start: this.handleResizeStart.bind(this),\n move: this.handleResize.bind(this),\n end: this.handleResizeEnd.bind(this),\n },\n });\n }\n }\n\n @Listen('blur')\n handleBlur() {\n this.focused = false;\n }\n\n handleResizeStart(e: ResizeEvent) {\n e.preventDefault();\n e.stopPropagation();\n e.target.dataset.originalBottom = e.target.style.bottom;\n }\n\n handleResize(e: any) {\n let {width, height} = e.rect;\n\n const dX = e.deltaRect.left;\n const dY = e.deltaRect.bottom;\n const currentLeft = parseFloat(e.target.style.left);\n const currentBottom = parseFloat(e.target.style.bottom);\n\n width /= this.xscale;\n height /= this.yscale;\n\n Object.assign(e.target.style, {\n width: `${width}px`,\n height: `${height}px`,\n left: `${currentLeft + dX}px`,\n bottom: `${currentBottom - dY}px`,\n });\n }\n\n async handleResizeEnd(e: any) {\n const {sourceid, fieldname} = this;\n\n const width = Math.round(parseFloat(e.target.style.width));\n let height = Math.round(parseFloat(e.target.style.height));\n if (height < 20) {\n height = 15;\n }\n\n const newBottom = parseFloat(e.target.style.bottom);\n const originalBottom = parseFloat(e.target.dataset.originalBottom);\n const template = await Store.getTemplate(VerdocsEndpoint.getDefault(), this.sourceid);\n const oldField = template.fields.find(f => f.name === fieldname);\n const y = newBottom !== originalBottom ? newBottom / this.yscale : oldField?.y;\n\n updateField(VerdocsEndpoint.getDefault(), sourceid, fieldname, {width, height, y})\n .then(async updatedField => {\n const template = await Store.getTemplate(VerdocsEndpoint.getDefault(), this.sourceid);\n const newTemplate = JSON.parse(JSON.stringify(template)) as ITemplate;\n const fieldIndex = newTemplate.fields.findIndex(field => field.name === fieldname);\n if (fieldIndex > -1) {\n newTemplate.fields[fieldIndex] = updatedField;\n }\n Store.updateTemplate(this.sourceid, newTemplate);\n\n this.settingsChanged?.emit({fieldName: fieldname, field: updatedField});\n Object.assign(e.target.dataset, {x: 0, y: 0, h: 0});\n })\n .catch(e => console.log('Field update failed', e));\n }\n\n @Method()\n async showSettingsPanel() {\n const settingsPanel = document.getElementById(`verdocs-settings-panel-${this.fieldname}`) as any;\n if (settingsPanel && settingsPanel.showPanel) {\n settingsPanel.showPanel();\n }\n }\n\n @Method()\n async hideSettingsPanel() {\n const settingsPanel = document.getElementById(`verdocs-settings-panel-${this.fieldname}`) as any;\n if (settingsPanel && settingsPanel.hidePanel) {\n settingsPanel.hidePanel();\n }\n }\n\n render() {\n const {source, sourceid, fieldname, editable = false, done = false, disabled = false, focused, xscale = 1, yscale = 1} = this;\n\n const {index, field} = Store.getField(source, sourceid, fieldname, this.field);\n const {required = false, value = '', label = '', settings = {}} = field || {};\n const signerClass = `signer-${(index % 10) + 1}`;\n const {base64} = settings;\n\n if (done) {\n return <Host class={{done}}>{value && <img src={value} alt=\"Initial\" />}</Host>;\n }\n\n return (\n <Host class={{required, disabled, done, focused, filled: !!base64, 'menu-open': this.menuOpen, [signerClass]: true}}>\n {editable && <div class=\"edge-right\" />}\n {editable && <div class=\"edge-left\" />}\n {editable && <div class=\"edge-top\" />}\n {editable && <div class=\"edge-bottom\" />}\n\n {label && <label>{label}</label>}\n\n {base64 ? (\n <div\n class={{'initial-container': true, 'menu-open': this.menuOpen}}\n onMouseEnter={() => !disabled && this.openMenu()}\n onMouseLeave={() => this.scheduleCloseMenu()}\n onClick={e => {\n e.stopPropagation();\n if (disabled) return;\n this.menuOpen ? this.closeMenu() : this.openMenu();\n }}\n >\n <img src={base64} alt=\"Initial\" />\n {this.menuOpen && (\n <div class=\"action-menu\" onMouseEnter={() => this.openMenu()} onMouseLeave={() => this.scheduleCloseMenu()}>\n <button\n type=\"button\"\n class=\"menu-item\"\n onClick={e => {\n e.stopPropagation();\n if (disabled) return;\n console.log('[INITIAL] Editing initials');\n this.closeMenu();\n this.adopt.emit();\n }}\n >\n Edit\n </button>\n <button\n type=\"button\"\n class=\"menu-item\"\n onClick={e => {\n e.stopPropagation();\n if (disabled) return;\n console.log('[INITIAL] Clearing initials');\n this.closeMenu();\n this.fieldChange?.emit(null);\n }}\n >\n Clear\n </button>\n </div>\n )}\n </div>\n ) : (\n <button\n onClick={() => {\n if (disabled) return;\n // If we already have an initial ID, use it immediately\n if (this.initialid) {\n console.log('[INITIAL] Reusing existing initials', this.initialid);\n this.fieldChange?.emit(this.initialid);\n } else {\n this.adopt.emit();\n }\n }}\n >\n Initial\n </button>\n )}\n\n {editable && (\n <Fragment>\n <div\n id={`verdocs-settings-panel-trigger-${fieldname}`}\n style={{transform: `scale(${Math.floor((1 / xscale) * 1000) / 1000}, ${Math.floor((1 / yscale) * 1000) / 1000})`}}\n class=\"settings-icon\"\n innerHTML={SettingsIcon}\n onClick={(e: any) => {\n e.stopPropagation();\n this.showingProperties = !this.showingProperties;\n }}\n />\n\n {this.showingProperties && (\n <verdocs-portal anchor={`verdocs-settings-panel-trigger-${fieldname}`} onClickAway={() => (this.showingProperties = false)}>\n <verdocs-template-field-properties\n templateId={sourceid}\n fieldName={fieldname}\n onClose={() => (this.showingProperties = false)}\n onDelete={() => {\n this.deleted?.emit({fieldName: field.name});\n return this.hideSettingsPanel();\n }}\n onSettingsChanged={e => {\n this.settingsChanged?.emit(e.detail);\n return this.hideSettingsPanel();\n }}\n helpText={\"initial fields capture the recipient's initials on a clause or page.\"}\n />\n </verdocs-portal>\n )}\n </Fragment>\n )}\n </Host>\n );\n }\n}\n"]}
|
package/dist/collection/components/fields/verdocs-field-signature/verdocs-field-signature.css
CHANGED
|
@@ -11,6 +11,8 @@ verdocs-field-signature {
|
|
|
11
11
|
transform-origin: bottom left;
|
|
12
12
|
border: var(--verdocs-field-border, 1px solid rgba(0, 0, 0, 0.2));
|
|
13
13
|
border-radius: var(--verdocs-field-radius);
|
|
14
|
+
cursor: pointer;
|
|
15
|
+
caret-color: transparent;
|
|
14
16
|
}
|
|
15
17
|
verdocs-field-signature label {
|
|
16
18
|
top: -14px;
|
|
@@ -29,6 +31,9 @@ verdocs-field-signature.done {
|
|
|
29
31
|
border: none;
|
|
30
32
|
opacity: 1;
|
|
31
33
|
}
|
|
34
|
+
verdocs-field-signature.menu-open {
|
|
35
|
+
z-index: 50;
|
|
36
|
+
}
|
|
32
37
|
verdocs-field-signature .signature-container {
|
|
33
38
|
width: 100%;
|
|
34
39
|
height: 100%;
|
|
@@ -43,50 +48,41 @@ verdocs-field-signature .signature-container img {
|
|
|
43
48
|
max-height: 100%;
|
|
44
49
|
object-fit: contain;
|
|
45
50
|
}
|
|
46
|
-
verdocs-field-signature .signature-container .
|
|
51
|
+
verdocs-field-signature .signature-container .action-menu {
|
|
47
52
|
position: absolute;
|
|
48
|
-
top:
|
|
53
|
+
top: calc(100% + 4px);
|
|
49
54
|
left: 0;
|
|
50
|
-
width:
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
display: none;
|
|
54
|
-
align-items: center;
|
|
55
|
-
justify-content: center;
|
|
56
|
-
gap: 8px;
|
|
57
|
-
border-radius: var(--verdocs-field-radius);
|
|
58
|
-
backdrop-filter: blur(1px);
|
|
59
|
-
}
|
|
60
|
-
verdocs-field-signature .signature-container .overlay .icon-button {
|
|
61
|
-
background: white;
|
|
62
|
-
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
63
|
-
cursor: pointer;
|
|
64
|
-
padding: 4px;
|
|
55
|
+
min-width: 90px;
|
|
56
|
+
background: #ffffff;
|
|
57
|
+
border: 1px solid rgba(0, 0, 0, 0.15);
|
|
65
58
|
border-radius: 6px;
|
|
66
|
-
|
|
59
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
60
|
+
z-index: 1000;
|
|
67
61
|
display: flex;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
width: auto;
|
|
73
|
-
height: auto;
|
|
74
|
-
}
|
|
75
|
-
verdocs-field-signature .signature-container .overlay .icon-button:hover {
|
|
76
|
-
background-color: #fafafa;
|
|
77
|
-
transform: translateY(-1px);
|
|
78
|
-
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
|
79
|
-
color: #000;
|
|
62
|
+
flex-direction: column;
|
|
63
|
+
overflow: hidden;
|
|
64
|
+
font-size: 12px;
|
|
65
|
+
font-family: var(--verdocs-primary-font, "Inter", "Barlow", sans-serif);
|
|
80
66
|
}
|
|
81
|
-
verdocs-field-signature .signature-container .
|
|
82
|
-
|
|
83
|
-
|
|
67
|
+
verdocs-field-signature .signature-container .action-menu .menu-item {
|
|
68
|
+
background: #ffffff;
|
|
69
|
+
border: none;
|
|
70
|
+
padding: 8px 12px;
|
|
71
|
+
color: #333333;
|
|
72
|
+
cursor: pointer;
|
|
73
|
+
text-align: left;
|
|
74
|
+
width: 100%;
|
|
75
|
+
font-size: 12px;
|
|
76
|
+
line-height: 1.2;
|
|
77
|
+
height: auto;
|
|
78
|
+
font-family: inherit;
|
|
84
79
|
}
|
|
85
|
-
verdocs-field-signature .signature-container:hover
|
|
86
|
-
|
|
80
|
+
verdocs-field-signature .signature-container .action-menu .menu-item:hover {
|
|
81
|
+
background-color: #f0f0f0;
|
|
82
|
+
color: #000000;
|
|
87
83
|
}
|
|
88
|
-
verdocs-field-signature .signature-container.
|
|
89
|
-
|
|
84
|
+
verdocs-field-signature .signature-container .action-menu .menu-item:not(:last-child) {
|
|
85
|
+
border-bottom: 1px solid rgba(0, 0, 0, 0.08);
|
|
90
86
|
}
|
|
91
87
|
verdocs-field-signature.disabled .signature-container {
|
|
92
88
|
opacity: 0.5;
|
package/dist/collection/components/fields/verdocs-field-signature/verdocs-field-signature.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import interact from "interactjs";
|
|
2
2
|
import { VerdocsEndpoint, updateField } from "@verdocs/js-sdk";
|
|
3
3
|
import { h, Host, Fragment } from "@stencil/core";
|
|
4
|
-
import { SettingsIcon
|
|
4
|
+
import { SettingsIcon } from "../../../utils/Icons";
|
|
5
5
|
import { Store } from "../../../utils/Datastore";
|
|
6
6
|
/**
|
|
7
7
|
* Displays a signature field. If a signature already exists, it will be displayed and the field
|
|
@@ -66,8 +66,33 @@ export class VerdocsFieldSignature {
|
|
|
66
66
|
this.pagenumber = 1;
|
|
67
67
|
this.showingProperties = false;
|
|
68
68
|
this.focused = false;
|
|
69
|
-
this.
|
|
69
|
+
this.menuOpen = false;
|
|
70
|
+
this.closeMenuTimer = null;
|
|
71
|
+
this.outsideMenuHandler = null;
|
|
70
72
|
this.tempSignature = '';
|
|
73
|
+
this.openMenu = () => {
|
|
74
|
+
if (this.closeMenuTimer) {
|
|
75
|
+
clearTimeout(this.closeMenuTimer);
|
|
76
|
+
this.closeMenuTimer = null;
|
|
77
|
+
}
|
|
78
|
+
this.menuOpen = true;
|
|
79
|
+
};
|
|
80
|
+
this.scheduleCloseMenu = () => {
|
|
81
|
+
if (this.closeMenuTimer) {
|
|
82
|
+
clearTimeout(this.closeMenuTimer);
|
|
83
|
+
}
|
|
84
|
+
this.closeMenuTimer = setTimeout(() => {
|
|
85
|
+
this.menuOpen = false;
|
|
86
|
+
this.closeMenuTimer = null;
|
|
87
|
+
}, 150);
|
|
88
|
+
};
|
|
89
|
+
this.closeMenu = () => {
|
|
90
|
+
if (this.closeMenuTimer) {
|
|
91
|
+
clearTimeout(this.closeMenuTimer);
|
|
92
|
+
this.closeMenuTimer = null;
|
|
93
|
+
}
|
|
94
|
+
this.menuOpen = false;
|
|
95
|
+
};
|
|
71
96
|
}
|
|
72
97
|
handleBlur() {
|
|
73
98
|
this.focused = false;
|
|
@@ -76,6 +101,24 @@ export class VerdocsFieldSignature {
|
|
|
76
101
|
this.el.focus();
|
|
77
102
|
this.focused = true;
|
|
78
103
|
}
|
|
104
|
+
componentDidLoad() {
|
|
105
|
+
this.outsideMenuHandler = (e) => {
|
|
106
|
+
if (this.menuOpen && !this.el.contains(e.target)) {
|
|
107
|
+
this.closeMenu();
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
document.addEventListener('pointerdown', this.outsideMenuHandler);
|
|
111
|
+
}
|
|
112
|
+
disconnectedCallback() {
|
|
113
|
+
if (this.closeMenuTimer) {
|
|
114
|
+
clearTimeout(this.closeMenuTimer);
|
|
115
|
+
this.closeMenuTimer = null;
|
|
116
|
+
}
|
|
117
|
+
if (this.outsideMenuHandler) {
|
|
118
|
+
document.removeEventListener('pointerdown', this.outsideMenuHandler);
|
|
119
|
+
this.outsideMenuHandler = null;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
79
122
|
componentDidUpdate() {
|
|
80
123
|
if (this.isPreview) {
|
|
81
124
|
interact(this.el).unset();
|
|
@@ -177,29 +220,33 @@ export class VerdocsFieldSignature {
|
|
|
177
220
|
if (done) {
|
|
178
221
|
return h(Host, { class: { done } }, value && h("img", { src: base64, alt: "" }));
|
|
179
222
|
}
|
|
180
|
-
return (h(Host, { class: { required, disabled, done, focused, filled: !!base64, [signerClass]: true } }, editable && h("div", { class: "edge-right" }), editable && h("div", { class: "edge-left" }), editable && h("div", { class: "edge-top" }), editable && h("div", { class: "edge-bottom" }), label && h("label", null, label), base64 ? (h("div", { class: { 'signature-container': true, '
|
|
223
|
+
return (h(Host, { class: { required, disabled, done, focused, filled: !!base64, 'menu-open': this.menuOpen, [signerClass]: true } }, editable && h("div", { class: "edge-right" }), editable && h("div", { class: "edge-left" }), editable && h("div", { class: "edge-top" }), editable && h("div", { class: "edge-bottom" }), label && h("label", null, label), base64 ? (h("div", { class: { 'signature-container': true, 'menu-open': this.menuOpen }, onMouseEnter: () => !disabled && this.openMenu(), onMouseLeave: () => this.scheduleCloseMenu(), onClick: e => {
|
|
224
|
+
e.stopPropagation();
|
|
225
|
+
if (disabled)
|
|
226
|
+
return;
|
|
227
|
+
this.menuOpen ? this.closeMenu() : this.openMenu();
|
|
228
|
+
} }, h("img", { src: base64, alt: "Signature" }), this.menuOpen && (h("div", { class: "action-menu", onMouseEnter: () => this.openMenu(), onMouseLeave: () => this.scheduleCloseMenu() }, h("button", { type: "button", class: "menu-item", onClick: e => {
|
|
181
229
|
e.stopPropagation();
|
|
182
230
|
if (disabled)
|
|
183
231
|
return;
|
|
184
|
-
// EDIT action: always open dialog
|
|
185
232
|
console.log('[SIGNATURE] Editing signature');
|
|
233
|
+
this.closeMenu();
|
|
186
234
|
this.adopt.emit();
|
|
187
|
-
} }), h("button", {
|
|
235
|
+
} }, "Edit"), h("button", { type: "button", class: "menu-item", onClick: e => {
|
|
188
236
|
var _a;
|
|
189
237
|
e.stopPropagation();
|
|
190
238
|
if (disabled)
|
|
191
239
|
return;
|
|
192
|
-
// CLEAR action
|
|
193
240
|
console.log('[SIGNATURE] Clearing signature');
|
|
241
|
+
this.closeMenu();
|
|
194
242
|
(_a = this.fieldChange) === null || _a === void 0 ? void 0 : _a.emit(null);
|
|
195
|
-
} })))) : (h("button", { onClick: () => {
|
|
243
|
+
} }, "Clear"))))) : (h("button", { onClick: () => {
|
|
196
244
|
var _a;
|
|
197
245
|
if (disabled)
|
|
198
246
|
return;
|
|
199
247
|
// If we already have a signature ID, use it immediately
|
|
200
248
|
if (this.signatureid) {
|
|
201
249
|
console.log('[SIGNATURE] Reusing existing signature', this.signatureid);
|
|
202
|
-
this.suppressOverlay = true;
|
|
203
250
|
(_a = this.fieldChange) === null || _a === void 0 ? void 0 : _a.emit(this.signatureid);
|
|
204
251
|
}
|
|
205
252
|
else {
|
|
@@ -519,7 +566,7 @@ export class VerdocsFieldSignature {
|
|
|
519
566
|
return {
|
|
520
567
|
"showingProperties": {},
|
|
521
568
|
"focused": {},
|
|
522
|
-
"
|
|
569
|
+
"menuOpen": {},
|
|
523
570
|
"tempSignature": {}
|
|
524
571
|
};
|
|
525
572
|
}
|