@verdocs/web-sdk 5.0.32 → 5.0.34
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/index-ccac8641.js +8 -4
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/verdocs-build.cjs.entry.js +1 -1
- package/dist/cjs/verdocs-build.cjs.entry.js.map +1 -1
- package/dist/cjs/verdocs-contact-picker_2.cjs.entry.js +8 -7
- package/dist/cjs/verdocs-contact-picker_2.cjs.entry.js.map +1 -1
- package/dist/cjs/{verdocs-envelope-recipient-link_2.cjs.entry.js → verdocs-envelope-recipient-link.cjs.entry.js} +1 -25
- package/dist/cjs/verdocs-envelope-recipient-link.cjs.entry.js.map +1 -0
- package/dist/cjs/{verdocs-preview_6.cjs.entry.js → verdocs-preview_7.cjs.entry.js} +146 -15
- package/dist/cjs/verdocs-preview_7.cjs.entry.js.map +1 -0
- package/dist/cjs/verdocs-switch.cjs.entry.js +32 -0
- package/dist/cjs/verdocs-switch.cjs.entry.js.map +1 -0
- package/dist/cjs/verdocs-web-sdk.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/controls/verdocs-switch/verdocs-switch.css +2 -2
- package/dist/collection/components/controls/verdocs-switch/verdocs-switch.js +3 -3
- package/dist/collection/components/controls/verdocs-switch/verdocs-switch.js.map +1 -1
- package/dist/collection/components/embeds/verdocs-build/verdocs-build.js +1 -1
- package/dist/collection/components/embeds/verdocs-build/verdocs-build.js.map +1 -1
- package/dist/collection/components/embeds/verdocs-send/verdocs-send.js +16 -16
- package/dist/collection/components/embeds/verdocs-send/verdocs-send.js.map +1 -1
- package/dist/collection/components/envelopes/verdocs-contact-picker/verdocs-contact-picker.css +3 -3
- package/dist/collection/components/envelopes/verdocs-contact-picker/verdocs-contact-picker.js +7 -6
- package/dist/collection/components/envelopes/verdocs-contact-picker/verdocs-contact-picker.js.map +1 -1
- package/dist/collection/components/templates/verdocs-template-settings/verdocs-template-settings.css +57 -0
- package/dist/collection/components/templates/verdocs-template-settings/verdocs-template-settings.js +282 -0
- package/dist/collection/components/templates/verdocs-template-settings/verdocs-template-settings.js.map +1 -0
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/{p-f4e068a9.js → p-38e1fed8.js} +4 -4
- package/dist/components/{p-f4e068a9.js.map → p-38e1fed8.js.map} +1 -1
- package/dist/components/p-7ad22da6.js +212 -0
- package/dist/components/p-7ad22da6.js.map +1 -0
- package/dist/components/{p-449f2b47.js → p-a1ba64de.js} +11 -16
- package/dist/components/p-a1ba64de.js.map +1 -0
- package/dist/components/{p-27548ebd.js → p-a443bd3a.js} +9 -8
- package/dist/components/{p-27548ebd.js.map → p-a443bd3a.js.map} +1 -1
- package/dist/components/verdocs-build.js +85 -73
- package/dist/components/verdocs-build.js.map +1 -1
- package/dist/components/verdocs-contact-picker.js +1 -1
- package/dist/components/verdocs-envelope-sidebar.js +1 -1
- package/dist/components/verdocs-send.js +1 -1
- package/dist/components/verdocs-switch.js +1 -1
- package/dist/components/verdocs-template-settings.d.ts +11 -0
- package/dist/components/verdocs-template-settings.js +8 -0
- package/dist/components/verdocs-template-settings.js.map +1 -0
- package/dist/custom-elements.json +14 -1
- package/dist/esm/index-272d51a4.js +8 -4
- package/dist/esm/loader.js +1 -1
- package/dist/esm/verdocs-build.entry.js +1 -1
- package/dist/esm/verdocs-build.entry.js.map +1 -1
- package/dist/esm/verdocs-contact-picker_2.entry.js +8 -7
- package/dist/esm/verdocs-contact-picker_2.entry.js.map +1 -1
- package/dist/esm/{verdocs-envelope-recipient-link_2.entry.js → verdocs-envelope-recipient-link.entry.js} +2 -25
- package/dist/esm/verdocs-envelope-recipient-link.entry.js.map +1 -0
- package/dist/esm/{verdocs-preview_6.entry.js → verdocs-preview_7.entry.js} +147 -17
- package/dist/esm/verdocs-preview_7.entry.js.map +1 -0
- package/dist/esm/verdocs-switch.entry.js +28 -0
- package/dist/esm/verdocs-switch.entry.js.map +1 -0
- package/dist/esm/verdocs-web-sdk.js +1 -1
- package/dist/esm-es5/index-272d51a4.js +1 -1
- package/dist/esm-es5/index-272d51a4.js.map +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/loader.js.map +1 -1
- package/dist/esm-es5/verdocs-build.entry.js +1 -1
- package/dist/esm-es5/verdocs-build.entry.js.map +1 -1
- package/dist/esm-es5/verdocs-contact-picker_2.entry.js +1 -1
- package/dist/esm-es5/verdocs-contact-picker_2.entry.js.map +1 -1
- package/dist/esm-es5/{verdocs-envelope-recipient-link_2.entry.js → verdocs-envelope-recipient-link.entry.js} +2 -2
- package/dist/esm-es5/verdocs-envelope-recipient-link.entry.js.map +1 -0
- package/dist/esm-es5/verdocs-preview_7.entry.js +8 -0
- package/dist/esm-es5/verdocs-preview_7.entry.js.map +1 -0
- package/dist/esm-es5/verdocs-switch.entry.js +2 -0
- package/dist/esm-es5/verdocs-switch.entry.js.map +1 -0
- package/dist/esm-es5/verdocs-web-sdk.js +1 -1
- package/dist/esm-es5/verdocs-web-sdk.js.map +1 -1
- package/dist/types/components/controls/verdocs-switch/verdocs-switch.d.ts +1 -1
- package/dist/types/components/embeds/verdocs-send/verdocs-send.d.ts +3 -2
- package/dist/types/components/templates/verdocs-template-settings/verdocs-template-settings.d.ts +55 -0
- package/dist/types/components.d.ts +81 -6
- package/dist/verdocs-web-sdk/p-09460960.entry.js +8 -0
- package/dist/verdocs-web-sdk/p-09460960.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/p-17457a7a.entry.js +2 -0
- package/dist/verdocs-web-sdk/p-17457a7a.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/p-21e9abff.system.entry.js +2 -0
- package/dist/verdocs-web-sdk/p-21e9abff.system.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/p-27ddc017.system.entry.js +2 -0
- package/dist/verdocs-web-sdk/p-27ddc017.system.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/p-5df005a9.system.entry.js +8 -0
- package/dist/verdocs-web-sdk/p-5df005a9.system.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/p-69527aaf.system.entry.js +2 -0
- package/dist/verdocs-web-sdk/p-69527aaf.system.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/{p-6f1e2f2f.entry.js → p-8e699235.entry.js} +2 -2
- package/dist/verdocs-web-sdk/p-8e699235.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/p-a1aefbfc.entry.js +2 -0
- package/dist/verdocs-web-sdk/p-a1aefbfc.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/{p-cabfdb9d.system.entry.js → p-a63b359e.system.entry.js} +2 -2
- package/dist/verdocs-web-sdk/p-a63b359e.system.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/p-dddd328d.entry.js +2 -0
- package/dist/verdocs-web-sdk/p-dddd328d.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/p-e2b70dfb.system.js +1 -1
- package/dist/verdocs-web-sdk/p-e2b70dfb.system.js.map +1 -1
- package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
- package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/verdocs-envelope-recipient-link_2.cjs.entry.js.map +0 -1
- package/dist/cjs/verdocs-preview_6.cjs.entry.js.map +0 -1
- package/dist/components/p-449f2b47.js.map +0 -1
- package/dist/esm/verdocs-envelope-recipient-link_2.entry.js.map +0 -1
- package/dist/esm/verdocs-preview_6.entry.js.map +0 -1
- package/dist/esm-es5/verdocs-envelope-recipient-link_2.entry.js.map +0 -1
- package/dist/esm-es5/verdocs-preview_6.entry.js +0 -8
- package/dist/esm-es5/verdocs-preview_6.entry.js.map +0 -1
- package/dist/verdocs-web-sdk/p-0666fb5d.system.entry.js +0 -8
- package/dist/verdocs-web-sdk/p-0666fb5d.system.entry.js.map +0 -1
- package/dist/verdocs-web-sdk/p-6f1e2f2f.entry.js.map +0 -1
- package/dist/verdocs-web-sdk/p-8d7d61ee.system.entry.js +0 -2
- package/dist/verdocs-web-sdk/p-8d7d61ee.system.entry.js.map +0 -1
- package/dist/verdocs-web-sdk/p-b9fee1a7.entry.js +0 -2
- package/dist/verdocs-web-sdk/p-b9fee1a7.entry.js.map +0 -1
- package/dist/verdocs-web-sdk/p-cabfdb9d.system.entry.js.map +0 -1
- package/dist/verdocs-web-sdk/p-d58010a4.entry.js +0 -2
- package/dist/verdocs-web-sdk/p-d58010a4.entry.js.map +0 -1
- package/dist/verdocs-web-sdk/p-e3efeb57.system.entry.js +0 -2
- package/dist/verdocs-web-sdk/p-e3efeb57.system.entry.js.map +0 -1
- package/dist/verdocs-web-sdk/p-f81f766c.entry.js +0 -8
- package/dist/verdocs-web-sdk/p-f81f766c.entry.js.map +0 -1
package/dist/collection/components/envelopes/verdocs-contact-picker/verdocs-contact-picker.css
CHANGED
@@ -42,7 +42,7 @@ verdocs-contact-picker form .names-row {
|
|
42
42
|
}
|
43
43
|
verdocs-contact-picker form .names-row > input {
|
44
44
|
font-size: 14px;
|
45
|
-
width:
|
45
|
+
width: 83px;
|
46
46
|
}
|
47
47
|
verdocs-contact-picker form .kba-row {
|
48
48
|
gap: 8px;
|
@@ -89,8 +89,8 @@ verdocs-contact-picker form .zip-code > input {
|
|
89
89
|
}
|
90
90
|
verdocs-contact-picker form label {
|
91
91
|
display: flex;
|
92
|
-
flex: 0 0
|
93
|
-
font-size:
|
92
|
+
flex: 0 0 80px;
|
93
|
+
font-size: 13px;
|
94
94
|
font-weight: 500;
|
95
95
|
color: #5c6575;
|
96
96
|
}
|
package/dist/collection/components/envelopes/verdocs-contact-picker/verdocs-contact-picker.js
CHANGED
@@ -126,16 +126,17 @@ export class VerdocsContactPicker {
|
|
126
126
|
return (h("div", { key: (_a = suggestion.id) !== null && _a !== void 0 ? _a : suggestion.email, class: "suggestion", onClick: e => this.handleSelectSuggestion(e, suggestion) }, suggestion.picture ? h("img", { alt: "Avatar", class: "avatar", src: suggestion.picture }) : h("div", { class: "avatar", innerHTML: addrBookIcon }), h("div", { class: "details" }, h("div", { class: "name" }, formatFullName(suggestion)), suggestion.email && h("div", { class: "destination" }, suggestion.email), suggestion.phone && h("div", { class: "destination" }, suggestion.phone))));
|
127
127
|
})))), h("div", { key: 'f18fd6d889ea70f8a5e51bd1780007b3ff061b56', class: "row" }, h("label", { key: '5cda3922bb705ed0d3af00644df9ef8d42042021', htmlFor: this.emailFieldId }, "Email:"), h("input", { key: '34474c4c8bbbde2802b3c2f58ea3abed4b3e27f6', id: this.emailFieldId, name: this.emailFieldId, type: "text", "data-lpignore": "true", autoComplete: "blocked", value: this.email, placeholder: "Email address...", onFocus: () => (this.showSuggestions = false), onInput: (e) => (this.email = e.target.value) })), h("div", { key: 'c757b186ca60272855ed5701c59857856dcd863f', class: "row" }, h("label", { key: '1d971705ab36609db6a4e9cb7d24281d98441cd5', htmlFor: this.phoneFieldId }, "Phone:"), h("input", { key: '2a516e28498a6727409ef51e61ca3fe912c65789', id: this.phoneFieldId, name: this.phoneFieldId, type: "text", "data-lpignore": "true", autoComplete: "blocked", value: this.phone, placeholder: "Phone (SMS)...", onFocus: () => (this.showSuggestions = false), onInput: (e) => {
|
128
128
|
this.phone = convertToE164(e.target.value);
|
129
|
-
} })), this.showKba && (h(Fragment, { key: '05cdb2c78abc3156d04a012c40a52f2c6ab24a86' }, h("div", { key: '56d53a04ba6ab45ecc30f11e44669ad503400a49', class: "kba-row" }, h("label", { key: '8af91071db065071bb40e931ea92231f31e9c0c9' }, "
|
129
|
+
} })), this.showKba && (h(Fragment, { key: '05cdb2c78abc3156d04a012c40a52f2c6ab24a86' }, h("div", { key: '56d53a04ba6ab45ecc30f11e44669ad503400a49', class: "kba-row" }, h("label", { key: '8af91071db065071bb40e931ea92231f31e9c0c9' }, "Recipient Verification:"), h("verdocs-select-input", { key: 'b4696c06eec6b05ba81031fd66c9d30048035b2f', value: this.kba_method, onInput: (e) => {
|
130
130
|
this.kba_method = e.target.value;
|
131
131
|
this.zip = '';
|
132
132
|
this.address = '';
|
133
133
|
this.kba_pin = '';
|
134
134
|
}, options: [
|
135
135
|
{ label: 'None', value: '' },
|
136
|
-
{ label: '
|
137
|
-
|
138
|
-
|
136
|
+
{ label: 'Passcode', value: 'pin' },
|
137
|
+
// TODO: SMS feature flag and entitlement
|
138
|
+
{ label: 'Knowledge-Based (KBA)', value: 'identity' },
|
139
|
+
] }), h("div", { key: '9768c8b0be7676a41be3def114f8fe0f7f13abea', style: { flex: '1' } }), h("verdocs-help-icon", { key: '167d1eb5a977d35fa1ff374d6168e433d578828f', text: "Knowledge-Based Authentication adds additional authentication for this user either via a simple PIN code or full address validation. NOTE: There may be a fee for using this feature." })), this.kba_method === 'pin' && (h("div", { key: '6265713bb6e4a50d698364f59469f26162384924', class: "row pin-code" }, h("input", { key: '4001196fbcfb1c6c030c5b7b9f72890910d49eab', id: "verdocs-pin-code", name: "verdocs-pin-code", type: "text", "data-lpignore": "true", autocomplete: "blocked", value: this.kba_pin, placeholder: "PIN Code...", onFocus: () => (this.showSuggestions = false), onInput: (e) => (this.kba_pin = e.target.value) }))), this.kba_method === 'identity' && (h("div", { key: 'f8537cc8443a9e1ba81f9f39bf7f1f9dd82b8a15', class: "row address" }, h("input", { key: '755fb29d955c2a1af1f12f0cd81256c10ff79df6', id: "verdocs-address", name: "verdocs-address", type: "text", "data-lpignore": "true", autocomplete: "blocked", value: this.address, placeholder: "Address...", onFocus: () => (this.showSuggestions = false), onInput: (e) => (this.address = e.target.value) }), h("verdocs-help-icon", { key: 'd44e44ba39b4d426c760964aa7b263a758dbef06', text: "Pre-fill the recipient's current street address. They will still be asked ID challenge questions." }))), this.kba_method === 'identity' && (h("div", { key: '18a896e1ae09c39f0a0a5de13103516fb0d313c7', class: "row zip-code" }, h("input", { key: '94c2fb31ff9961ae07d64c0203d1b5c3756bb08e', id: "verdocs-zip-code", name: "verdocs-zip-code", type: "text", "data-lpignore": "true", autocomplete: "blocked", value: this.zip, placeholder: "Zip Code...", onFocus: () => (this.showSuggestions = false), onInput: (e) => (this.zip = e.target.value) }), h("verdocs-help-icon", { key: 'd01467b25467b1d3d718fcfca46ffe28efa995b7', text: "Pre-fill the recipient's current zip code. They will still be asked ID challenge questions." }))))), this.showMessage && (h("div", { key: '35146d6bd7df23248b811305fd6c542d435783ca', class: "row message" }, h("label", { key: 'efa29b9faf09edd9847f23d2b14232510acc5c45', htmlFor: "verdocs-contact-picker-message" }, "Message:"), h("input", { key: '887a58dfde10154191eb8ed447d7aec106fefb32', id: "verdocs-contact-picker-message", name: "verdocs-contact-picker-message", type: "text", "data-lpignore": "true", autocomplete: "blocked", value: this.message, placeholder: "Message shown in invitation...", onFocus: () => (this.showSuggestions = false), onInput: (e) => (this.message = e.target.value) }))), h("div", { key: '7093463a1fa71c4d700b40cf59314179ed14e56b', class: "buttons" }, h("verdocs-toggle-button", { key: '4b36b0fc7605b5d53019850053953aa37174e52e', icon: kbaIcon, size: "small", active: this.showKba, onToggle: e => {
|
139
140
|
this.showKba = e.detail.active;
|
140
141
|
if (!e.detail.active) {
|
141
142
|
this.kba_pin = '';
|
@@ -143,10 +144,10 @@ export class VerdocsContactPicker {
|
|
143
144
|
this.zip = '';
|
144
145
|
}
|
145
146
|
this.showSuggestions = false;
|
146
|
-
} }), h("verdocs-toggle-button", { key: '
|
147
|
+
} }), h("verdocs-toggle-button", { key: '74af3cf9142f697481deda60e0ce455150abdb7e', icon: messageIcon, size: "small", active: this.showMessage, onToggle: e => {
|
147
148
|
this.showMessage = e.detail.active;
|
148
149
|
this.showSuggestions = false;
|
149
|
-
} }), h("div", { key: '
|
150
|
+
} }), h("div", { key: 'ed898d7e08aba69b9ecb7288c3e30ab29c301428', class: "flex-fill" }), h("verdocs-button", { key: 'cdcb81c831b8a9f714d658d85a37ddb0eebf57cc', variant: "outline", label: "Cancel", size: "small", onClick: e => this.handleCancel(e) }), h("verdocs-button", { key: 'b0fbf03a89a02320d123666b8b5e91ee2fa0f482', label: "OK", size: "small", disabled: !canSubmit, onClick: !canSubmit ? () => { } : e => this.handleSubmit(e) }))));
|
150
151
|
}
|
151
152
|
static get is() { return "verdocs-contact-picker"; }
|
152
153
|
static get originalStyleUrls() {
|
package/dist/collection/components/envelopes/verdocs-contact-picker/verdocs-contact-picker.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"verdocs-contact-picker.js","sourceRoot":"","sources":["../../../../src/components/envelopes/verdocs-contact-picker/verdocs-contact-picker.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Component, h, Event, EventEmitter, Fragment, Prop, State} from '@stencil/core';\nimport {formatFullName, IProfile, IRecipient, isValidEmail, VerdocsEndpoint} from '@verdocs/js-sdk';\nimport {convertToE164} from '../../../utils/utils';\n\nconst messageIcon =\n '<svg focusable=\"false\" viewBox=\"0 0 24 24\"><path d=\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z\"></path></svg>';\n\n// const delegateIcon =\n// '<svg focusable=\"false\" viewBox=\"0 0 24 24\"><path d=\"M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 4c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm6 12H6v-1.4c0-2 4-3.1 6-3.1s6 1.1 6 3.1V19z\"></path></svg>';\n\nconst kbaIcon =\n '<svg focusable=\"false\" viewBox=\"0 0 24 24\"><path fill-rule=\"evenodd\" d=\"M4.5 3.75a3 3 0 0 0-3 3v10.5a3 3 0 0 0 3 3h15a3 3 0 0 0 3-3V6.75a3 3 0 0 0-3-3h-15Zm4.125 3a2.25 2.25 0 1 0 0 4.5 2.25 2.25 0 0 0 0-4.5Zm-3.873 8.703a4.126 4.126 0 0 1 7.746 0 .75.75 0 0 1-.351.92 7.47 7.47 0 0 1-3.522.877 7.47 7.47 0 0 1-3.522-.877.75.75 0 0 1-.351-.92ZM15 8.25a.75.75 0 0 0 0 1.5h3.75a.75.75 0 0 0 0-1.5H15ZM14.25 12a.75.75 0 0 1 .75-.75h3.75a.75.75 0 0 1 0 1.5H15a.75.75 0 0 1-.75-.75Zm.75 2.25a.75.75 0 0 0 0 1.5h3.75a.75.75 0 0 0 0-1.5H15Z\" clip-rule=\"evenodd\" /></svg>';\n\nconst addrBookIcon = `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-book-user\"><path d=\"M15 13a3 3 0 1 0-6 0\"/><path d=\"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20\"/><circle cx=\"12\" cy=\"8\" r=\"2\"/></svg>`;\n\nexport interface IContactSearchEvent {\n query: string;\n}\n\nexport interface IContactSelectEvent {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n message: string;\n delegator: boolean;\n kba_method: string;\n kba_pin: string;\n address: string;\n zip: string;\n}\n\nexport type TPickerContact = Partial<IProfile>;\n\n/**\n * Display a contact picker suitable for filling out Recipient objects when sending Envelopes.\n *\n * This picker can also be integrated with a backend to provide contact list / suggestion / address-book style behavior. As the\n * user interacts with the component, the text entered in the name fields is sent back to the parent via the `searchContacts` event.\n * The parent can use that text as a query string to call a backend to obtain appropriate contacts to show. This list may also be\n * hard-coded ahead of time to provide the user with smart suggestions on initial display, such as \"Recently Used\" contacts, or\n * to always display the user's own contact record.\n *\n * ```ts\n * <verdocs-contact-picker\n * templateRole={role}\n * contactSuggestions={[]}\n * onNext={e => console.log('Contact completed', e.detail)}\n * />\n * ```\n */\n@Component({\n tag: 'verdocs-contact-picker',\n styleUrl: 'verdocs-contact-picker.scss',\n shadow: false,\n})\nexport class VerdocsContactPicker {\n /**\n * The endpoint to use to communicate with Verdocs. If not set, the default endpoint will be used.\n */\n @Prop() endpoint: VerdocsEndpoint = VerdocsEndpoint.getDefault();\n\n /**\n * The role that this contact will be assigned to.\n */\n @Prop() templateRole: Partial<IRecipient> | null = null;\n\n /**\n * If set, suggestions will be displayed in a drop-down list to the user. It is recommended that the number\n * of suggestions be limited to the 5 best matching records.\n */\n @Prop() contactSuggestions: TPickerContact[] = [];\n\n /**\n * Event fired when the user enters text in the search field. The calling application may use this to update\n * the `contactSuggestions` property.\n */\n @Event({composed: true}) searchContacts: EventEmitter<IContactSearchEvent>;\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 user changes the type.\n */\n @Event({composed: true}) next: EventEmitter<IContactSelectEvent>;\n\n @State() first_name: string;\n @State() last_name: string;\n @State() email: string;\n @State() phone: string;\n @State() zip: string;\n @State() address: string;\n @State() message: string;\n @State() showSuggestions: boolean = false;\n @State() showMessage: boolean = false;\n @State() delegator: boolean = false;\n @State() showKba: boolean = false;\n @State() kba_method: '' | 'pin' | 'identity' = '';\n @State() kba_pin: string = '';\n\n @State() nameFieldId = `verdocs-contact-picker-name-${Math.random().toString(36).substring(2, 11)}`;\n @State() firstNameFieldId = `verdocs-contact-picker-firstname-${Math.random().toString(36).substring(2, 11)}`;\n @State() lastNameFieldId = `verdocs-contact-picker-lastname-${Math.random().toString(36).substring(2, 11)}`;\n @State() emailFieldId = `verdocs-contact-picker-email-${Math.random().toString(36).substring(2, 11)}`;\n @State() phoneFieldId = `verdocs-contact-picker-phone-${Math.random().toString(36).substring(2, 11)}`;\n\n componentWillLoad() {\n if (this.templateRole) {\n const fullName = formatFullName(this.templateRole);\n const nameComponents = fullName.split(' ');\n const firstName = this.templateRole.first_name || nameComponents.shift() || '';\n const lastName = this.templateRole.last_name || nameComponents.join(' ') || '';\n this.first_name = firstName;\n this.last_name = lastName;\n\n this.email = this.templateRole.email || '';\n this.phone = this.templateRole.phone || '';\n this.delegator = this.templateRole.delegator || false;\n this.message = this.templateRole.message || '';\n this.showMessage = this.message !== '';\n this.kba_method = this.templateRole.kba_method || '';\n this.kba_pin = this.templateRole.kba_pin || '';\n this.showKba = !!this.kba_method;\n // TODO: Allow template roles to have zip codes predefined?\n }\n }\n\n handleFirstNameChange(e: any) {\n this.first_name = e.target.value;\n this.searchContacts?.emit({query: this.first_name});\n }\n\n handleLastNameChange(e: any) {\n this.last_name = e.target.value;\n this.searchContacts?.emit({query: this.last_name});\n }\n\n handleCancel(e: any) {\n e.stopPropagation();\n this.showSuggestions = false;\n this.exit?.emit();\n }\n\n handleSubmit(e: any) {\n e.stopPropagation();\n\n this.showSuggestions = false;\n this.next?.emit({\n first_name: this.first_name,\n last_name: this.last_name,\n email: this.email,\n phone: this.phone,\n message: this.message,\n delegator: this.delegator,\n kba_method: this.kba_method,\n kba_pin: this.kba_pin,\n address: this.address,\n zip: this.zip,\n });\n }\n\n handleSelectSuggestion(e: any, suggestion: TPickerContact) {\n e.stopPropagation();\n\n this.first_name = suggestion.first_name;\n this.last_name = suggestion.last_name;\n this.email = suggestion.email;\n this.phone = suggestion.phone;\n this.showSuggestions = false;\n }\n\n // The reason for the random names/IDs is to disable browser autocomplete. We set the autocomplete tags but many browsers ignore them\n // and show a duplicate autocomplete picker on top of our own.\n render() {\n // TODO: Re-activate this one SMS is re-enabled\n // const hasBasics = this.first_name && this.last_name && (isValidEmail(this.email) || isValidPhone(this.phone));\n const hasBasics = this.first_name && this.last_name && isValidEmail(this.email);\n const hasKbaRequirements =\n !this.kba_method ||\n (this.kba_method === 'pin' && this.kba_pin) ||\n this.kba_method === 'identity';\n // TODO: For discussion\n // (this.kba_method === 'identity' && this.address && this.zip)\n const canSubmit = hasBasics && hasKbaRequirements;\n\n return (\n <form onSubmit={e => e.preventDefault()} onClick={e => e.stopPropagation()} autocomplete=\"off\">\n <div class=\"row\">\n <label htmlFor={this.nameFieldId}>Name:</label>\n <div class=\"names-row\">\n <input\n id={this.firstNameFieldId}\n name={this.firstNameFieldId}\n type=\"text\"\n data-lpignore=\"true\"\n autocomplete=\"blocked\"\n value={this.first_name}\n placeholder=\"First...\"\n onFocus={() => (this.showSuggestions = this.contactSuggestions?.length > 0)}\n onInput={e => this.handleFirstNameChange(e)}\n />\n <input\n id={this.lastNameFieldId}\n name={this.lastNameFieldId}\n type=\"text\"\n data-lpignore=\"true\"\n autocomplete=\"blocked\"\n value={this.last_name}\n placeholder=\"Last...\"\n onFocus={() => (this.showSuggestions = false)}\n onInput={e => this.handleLastNameChange(e)}\n />\n </div>\n\n {this.showSuggestions && (\n <div class=\"dropdown\">\n {this.contactSuggestions\n .filter(suggestion => !this.first_name || suggestion.first_name.toLowerCase().includes(this.first_name.toLowerCase()))\n .map(suggestion => (\n <div key={suggestion.id ?? suggestion.email} class=\"suggestion\" onClick={e => this.handleSelectSuggestion(e, suggestion)}>\n {suggestion.picture ? <img alt=\"Avatar\" class=\"avatar\" src={suggestion.picture} /> : <div class=\"avatar\" innerHTML={addrBookIcon} />}\n <div class=\"details\">\n <div class=\"name\">{formatFullName(suggestion)}</div>\n {suggestion.email && <div class=\"destination\">{suggestion.email}</div>}\n {suggestion.phone && <div class=\"destination\">{suggestion.phone}</div>}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n\n <div class=\"row\">\n <label htmlFor={this.emailFieldId}>Email:</label>\n <input\n id={this.emailFieldId}\n name={this.emailFieldId}\n type=\"text\"\n data-lpignore=\"true\"\n autoComplete=\"blocked\"\n value={this.email}\n placeholder=\"Email address...\"\n onFocus={() => (this.showSuggestions = false)}\n onInput={(e: any) => (this.email = e.target.value)}\n />\n </div>\n\n <div class=\"row\">\n <label htmlFor={this.phoneFieldId}>Phone:</label>\n <input\n id={this.phoneFieldId}\n name={this.phoneFieldId}\n type=\"text\"\n data-lpignore=\"true\"\n autoComplete=\"blocked\"\n value={this.phone}\n placeholder=\"Phone (SMS)...\"\n onFocus={() => (this.showSuggestions = false)}\n onInput={(e: any) => {\n this.phone = convertToE164(e.target.value);\n }}\n />\n </div>\n\n {this.showKba && (\n <Fragment>\n <div class=\"kba-row\">\n <label>KBA:</label>\n <verdocs-select-input\n value={this.kba_method}\n onInput={(e: any) => {\n this.kba_method = e.target.value;\n this.zip = '';\n this.address = '';\n this.kba_pin = '';\n }}\n options={[\n {label: 'None', value: ''},\n {label: 'PIN Code', value: 'pin'},\n {label: 'Full Verification', value: 'identity'},\n ]}\n />\n <div style={{flex: '1'}}></div>\n <verdocs-help-icon text=\"Knowledge-Based Authentication adds additional authentication for this user either via a simple PIN code or full address validation. NOTE: There may be a fee for using this feature.\" />\n </div>\n\n {this.kba_method === 'pin' && (\n <div class=\"row pin-code\">\n <input\n id=\"verdocs-pin-code\"\n name=\"verdocs-pin-code\"\n type=\"text\"\n data-lpignore=\"true\"\n autocomplete=\"blocked\"\n value={this.kba_pin}\n placeholder=\"PIN Code...\"\n onFocus={() => (this.showSuggestions = false)}\n onInput={(e: any) => (this.kba_pin = e.target.value)}\n />\n </div>\n )}\n\n {this.kba_method === 'identity' && (\n <div class=\"row address\">\n <input\n id=\"verdocs-address\"\n name=\"verdocs-address\"\n type=\"text\"\n data-lpignore=\"true\"\n autocomplete=\"blocked\"\n value={this.address}\n placeholder=\"Address...\"\n onFocus={() => (this.showSuggestions = false)}\n onInput={(e: any) => (this.address = e.target.value)}\n />\n <verdocs-help-icon text=\"Pre-fill the recipient's current street address. They will still be asked ID challenge questions.\" />\n </div>\n )}\n\n {this.kba_method === 'identity' && (\n <div class=\"row zip-code\">\n <input\n id=\"verdocs-zip-code\"\n name=\"verdocs-zip-code\"\n type=\"text\"\n data-lpignore=\"true\"\n autocomplete=\"blocked\"\n value={this.zip}\n placeholder=\"Zip Code...\"\n onFocus={() => (this.showSuggestions = false)}\n onInput={(e: any) => (this.zip = e.target.value)}\n />\n <verdocs-help-icon text=\"Pre-fill the recipient's current zip code. They will still be asked ID challenge questions.\" />\n </div>\n )}\n </Fragment>\n )}\n\n {this.showMessage && (\n <div class=\"row message\">\n <label htmlFor=\"verdocs-contact-picker-message\">Message:</label>\n <input\n id=\"verdocs-contact-picker-message\"\n name=\"verdocs-contact-picker-message\"\n type=\"text\"\n data-lpignore=\"true\"\n autocomplete=\"blocked\"\n value={this.message}\n placeholder=\"Message shown in invitation...\"\n onFocus={() => (this.showSuggestions = false)}\n onInput={(e: any) => (this.message = e.target.value)}\n />\n </div>\n )}\n\n <div class=\"buttons\">\n <verdocs-toggle-button\n icon={kbaIcon}\n size=\"small\"\n active={this.showKba}\n onToggle={e => {\n this.showKba = e.detail.active;\n if (!e.detail.active) {\n this.kba_pin = '';\n this.kba_method = '';\n this.zip = '';\n }\n this.showSuggestions = false;\n }}\n />\n <verdocs-toggle-button\n icon={messageIcon}\n size=\"small\"\n active={this.showMessage}\n onToggle={e => {\n this.showMessage = e.detail.active;\n this.showSuggestions = false;\n }}\n />\n\n <div class=\"flex-fill\" />\n\n <verdocs-button variant=\"outline\" label=\"Cancel\" size=\"small\" onClick={e => this.handleCancel(e)} />\n <verdocs-button label=\"OK\" size=\"small\" disabled={!canSubmit} onClick={!canSubmit ? () => {} : e => this.handleSubmit(e)} />\n </div>\n </form>\n );\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"verdocs-contact-picker.js","sourceRoot":"","sources":["../../../../src/components/envelopes/verdocs-contact-picker/verdocs-contact-picker.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Component, h, Event, EventEmitter, Fragment, Prop, State} from '@stencil/core';\nimport {formatFullName, IProfile, IRecipient, isValidEmail, VerdocsEndpoint} from '@verdocs/js-sdk';\nimport {convertToE164} from '../../../utils/utils';\n\nconst messageIcon =\n '<svg focusable=\"false\" viewBox=\"0 0 24 24\"><path d=\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z\"></path></svg>';\n\n// const delegateIcon =\n// '<svg focusable=\"false\" viewBox=\"0 0 24 24\"><path d=\"M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 4c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm6 12H6v-1.4c0-2 4-3.1 6-3.1s6 1.1 6 3.1V19z\"></path></svg>';\n\nconst kbaIcon =\n '<svg focusable=\"false\" viewBox=\"0 0 24 24\"><path fill-rule=\"evenodd\" d=\"M4.5 3.75a3 3 0 0 0-3 3v10.5a3 3 0 0 0 3 3h15a3 3 0 0 0 3-3V6.75a3 3 0 0 0-3-3h-15Zm4.125 3a2.25 2.25 0 1 0 0 4.5 2.25 2.25 0 0 0 0-4.5Zm-3.873 8.703a4.126 4.126 0 0 1 7.746 0 .75.75 0 0 1-.351.92 7.47 7.47 0 0 1-3.522.877 7.47 7.47 0 0 1-3.522-.877.75.75 0 0 1-.351-.92ZM15 8.25a.75.75 0 0 0 0 1.5h3.75a.75.75 0 0 0 0-1.5H15ZM14.25 12a.75.75 0 0 1 .75-.75h3.75a.75.75 0 0 1 0 1.5H15a.75.75 0 0 1-.75-.75Zm.75 2.25a.75.75 0 0 0 0 1.5h3.75a.75.75 0 0 0 0-1.5H15Z\" clip-rule=\"evenodd\" /></svg>';\n\nconst addrBookIcon = `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-book-user\"><path d=\"M15 13a3 3 0 1 0-6 0\"/><path d=\"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20\"/><circle cx=\"12\" cy=\"8\" r=\"2\"/></svg>`;\n\nexport interface IContactSearchEvent {\n query: string;\n}\n\nexport interface IContactSelectEvent {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n message: string;\n delegator: boolean;\n kba_method: string;\n kba_pin: string;\n address: string;\n zip: string;\n}\n\nexport type TPickerContact = Partial<IProfile>;\n\n/**\n * Display a contact picker suitable for filling out Recipient objects when sending Envelopes.\n *\n * This picker can also be integrated with a backend to provide contact list / suggestion / address-book style behavior. As the\n * user interacts with the component, the text entered in the name fields is sent back to the parent via the `searchContacts` event.\n * The parent can use that text as a query string to call a backend to obtain appropriate contacts to show. This list may also be\n * hard-coded ahead of time to provide the user with smart suggestions on initial display, such as \"Recently Used\" contacts, or\n * to always display the user's own contact record.\n *\n * ```ts\n * <verdocs-contact-picker\n * templateRole={role}\n * contactSuggestions={[]}\n * onNext={e => console.log('Contact completed', e.detail)}\n * />\n * ```\n */\n@Component({\n tag: 'verdocs-contact-picker',\n styleUrl: 'verdocs-contact-picker.scss',\n shadow: false,\n})\nexport class VerdocsContactPicker {\n /**\n * The endpoint to use to communicate with Verdocs. If not set, the default endpoint will be used.\n */\n @Prop() endpoint: VerdocsEndpoint = VerdocsEndpoint.getDefault();\n\n /**\n * The role that this contact will be assigned to.\n */\n @Prop() templateRole: Partial<IRecipient> | null = null;\n\n /**\n * If set, suggestions will be displayed in a drop-down list to the user. It is recommended that the number\n * of suggestions be limited to the 5 best matching records.\n */\n @Prop() contactSuggestions: TPickerContact[] = [];\n\n /**\n * Event fired when the user enters text in the search field. The calling application may use this to update\n * the `contactSuggestions` property.\n */\n @Event({composed: true}) searchContacts: EventEmitter<IContactSearchEvent>;\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 user changes the type.\n */\n @Event({composed: true}) next: EventEmitter<IContactSelectEvent>;\n\n @State() first_name: string;\n @State() last_name: string;\n @State() email: string;\n @State() phone: string;\n @State() zip: string;\n @State() address: string;\n @State() message: string;\n @State() showSuggestions: boolean = false;\n @State() showMessage: boolean = false;\n @State() delegator: boolean = false;\n @State() showKba: boolean = false;\n @State() kba_method: '' | 'pin' | 'identity' = '';\n @State() kba_pin: string = '';\n\n @State() nameFieldId = `verdocs-contact-picker-name-${Math.random().toString(36).substring(2, 11)}`;\n @State() firstNameFieldId = `verdocs-contact-picker-firstname-${Math.random().toString(36).substring(2, 11)}`;\n @State() lastNameFieldId = `verdocs-contact-picker-lastname-${Math.random().toString(36).substring(2, 11)}`;\n @State() emailFieldId = `verdocs-contact-picker-email-${Math.random().toString(36).substring(2, 11)}`;\n @State() phoneFieldId = `verdocs-contact-picker-phone-${Math.random().toString(36).substring(2, 11)}`;\n\n componentWillLoad() {\n if (this.templateRole) {\n const fullName = formatFullName(this.templateRole);\n const nameComponents = fullName.split(' ');\n const firstName = this.templateRole.first_name || nameComponents.shift() || '';\n const lastName = this.templateRole.last_name || nameComponents.join(' ') || '';\n this.first_name = firstName;\n this.last_name = lastName;\n\n this.email = this.templateRole.email || '';\n this.phone = this.templateRole.phone || '';\n this.delegator = this.templateRole.delegator || false;\n this.message = this.templateRole.message || '';\n this.showMessage = this.message !== '';\n this.kba_method = this.templateRole.kba_method || '';\n this.kba_pin = this.templateRole.kba_pin || '';\n this.showKba = !!this.kba_method;\n // TODO: Allow template roles to have zip codes predefined?\n }\n }\n\n handleFirstNameChange(e: any) {\n this.first_name = e.target.value;\n this.searchContacts?.emit({query: this.first_name});\n }\n\n handleLastNameChange(e: any) {\n this.last_name = e.target.value;\n this.searchContacts?.emit({query: this.last_name});\n }\n\n handleCancel(e: any) {\n e.stopPropagation();\n this.showSuggestions = false;\n this.exit?.emit();\n }\n\n handleSubmit(e: any) {\n e.stopPropagation();\n\n this.showSuggestions = false;\n this.next?.emit({\n first_name: this.first_name,\n last_name: this.last_name,\n email: this.email,\n phone: this.phone,\n message: this.message,\n delegator: this.delegator,\n kba_method: this.kba_method,\n kba_pin: this.kba_pin,\n address: this.address,\n zip: this.zip,\n });\n }\n\n handleSelectSuggestion(e: any, suggestion: TPickerContact) {\n e.stopPropagation();\n\n this.first_name = suggestion.first_name;\n this.last_name = suggestion.last_name;\n this.email = suggestion.email;\n this.phone = suggestion.phone;\n this.showSuggestions = false;\n }\n\n // The reason for the random names/IDs is to disable browser autocomplete. We set the autocomplete tags but many browsers ignore them\n // and show a duplicate autocomplete picker on top of our own.\n render() {\n // TODO: Re-activate this one SMS is re-enabled\n // const hasBasics = this.first_name && this.last_name && (isValidEmail(this.email) || isValidPhone(this.phone));\n const hasBasics = this.first_name && this.last_name && isValidEmail(this.email);\n const hasKbaRequirements =\n !this.kba_method ||\n (this.kba_method === 'pin' && this.kba_pin) ||\n this.kba_method === 'identity';\n // TODO: For discussion\n // (this.kba_method === 'identity' && this.address && this.zip)\n const canSubmit = hasBasics && hasKbaRequirements;\n\n return (\n <form onSubmit={e => e.preventDefault()} onClick={e => e.stopPropagation()} autocomplete=\"off\">\n <div class=\"row\">\n <label htmlFor={this.nameFieldId}>Name:</label>\n <div class=\"names-row\">\n <input\n id={this.firstNameFieldId}\n name={this.firstNameFieldId}\n type=\"text\"\n data-lpignore=\"true\"\n autocomplete=\"blocked\"\n value={this.first_name}\n placeholder=\"First...\"\n onFocus={() => (this.showSuggestions = this.contactSuggestions?.length > 0)}\n onInput={e => this.handleFirstNameChange(e)}\n />\n <input\n id={this.lastNameFieldId}\n name={this.lastNameFieldId}\n type=\"text\"\n data-lpignore=\"true\"\n autocomplete=\"blocked\"\n value={this.last_name}\n placeholder=\"Last...\"\n onFocus={() => (this.showSuggestions = false)}\n onInput={e => this.handleLastNameChange(e)}\n />\n </div>\n\n {this.showSuggestions && (\n <div class=\"dropdown\">\n {this.contactSuggestions\n .filter(suggestion => !this.first_name || suggestion.first_name.toLowerCase().includes(this.first_name.toLowerCase()))\n .map(suggestion => (\n <div key={suggestion.id ?? suggestion.email} class=\"suggestion\" onClick={e => this.handleSelectSuggestion(e, suggestion)}>\n {suggestion.picture ? <img alt=\"Avatar\" class=\"avatar\" src={suggestion.picture} /> : <div class=\"avatar\" innerHTML={addrBookIcon} />}\n <div class=\"details\">\n <div class=\"name\">{formatFullName(suggestion)}</div>\n {suggestion.email && <div class=\"destination\">{suggestion.email}</div>}\n {suggestion.phone && <div class=\"destination\">{suggestion.phone}</div>}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n\n <div class=\"row\">\n <label htmlFor={this.emailFieldId}>Email:</label>\n <input\n id={this.emailFieldId}\n name={this.emailFieldId}\n type=\"text\"\n data-lpignore=\"true\"\n autoComplete=\"blocked\"\n value={this.email}\n placeholder=\"Email address...\"\n onFocus={() => (this.showSuggestions = false)}\n onInput={(e: any) => (this.email = e.target.value)}\n />\n </div>\n\n <div class=\"row\">\n <label htmlFor={this.phoneFieldId}>Phone:</label>\n <input\n id={this.phoneFieldId}\n name={this.phoneFieldId}\n type=\"text\"\n data-lpignore=\"true\"\n autoComplete=\"blocked\"\n value={this.phone}\n placeholder=\"Phone (SMS)...\"\n onFocus={() => (this.showSuggestions = false)}\n onInput={(e: any) => {\n this.phone = convertToE164(e.target.value);\n }}\n />\n </div>\n\n {this.showKba && (\n <Fragment>\n <div class=\"kba-row\">\n <label>Recipient Verification:</label>\n <verdocs-select-input\n value={this.kba_method}\n onInput={(e: any) => {\n this.kba_method = e.target.value;\n this.zip = '';\n this.address = '';\n this.kba_pin = '';\n }}\n options={[\n {label: 'None', value: ''},\n {label: 'Passcode', value: 'pin'},\n // TODO: SMS feature flag and entitlement\n {label: 'Knowledge-Based (KBA)', value: 'identity'},\n ]}\n />\n <div style={{flex: '1'}}></div>\n <verdocs-help-icon text=\"Knowledge-Based Authentication adds additional authentication for this user either via a simple PIN code or full address validation. NOTE: There may be a fee for using this feature.\" />\n </div>\n\n {this.kba_method === 'pin' && (\n <div class=\"row pin-code\">\n <input\n id=\"verdocs-pin-code\"\n name=\"verdocs-pin-code\"\n type=\"text\"\n data-lpignore=\"true\"\n autocomplete=\"blocked\"\n value={this.kba_pin}\n placeholder=\"PIN Code...\"\n onFocus={() => (this.showSuggestions = false)}\n onInput={(e: any) => (this.kba_pin = e.target.value)}\n />\n </div>\n )}\n\n {this.kba_method === 'identity' && (\n <div class=\"row address\">\n <input\n id=\"verdocs-address\"\n name=\"verdocs-address\"\n type=\"text\"\n data-lpignore=\"true\"\n autocomplete=\"blocked\"\n value={this.address}\n placeholder=\"Address...\"\n onFocus={() => (this.showSuggestions = false)}\n onInput={(e: any) => (this.address = e.target.value)}\n />\n <verdocs-help-icon text=\"Pre-fill the recipient's current street address. They will still be asked ID challenge questions.\" />\n </div>\n )}\n\n {this.kba_method === 'identity' && (\n <div class=\"row zip-code\">\n <input\n id=\"verdocs-zip-code\"\n name=\"verdocs-zip-code\"\n type=\"text\"\n data-lpignore=\"true\"\n autocomplete=\"blocked\"\n value={this.zip}\n placeholder=\"Zip Code...\"\n onFocus={() => (this.showSuggestions = false)}\n onInput={(e: any) => (this.zip = e.target.value)}\n />\n <verdocs-help-icon text=\"Pre-fill the recipient's current zip code. They will still be asked ID challenge questions.\" />\n </div>\n )}\n </Fragment>\n )}\n\n {this.showMessage && (\n <div class=\"row message\">\n <label htmlFor=\"verdocs-contact-picker-message\">Message:</label>\n <input\n id=\"verdocs-contact-picker-message\"\n name=\"verdocs-contact-picker-message\"\n type=\"text\"\n data-lpignore=\"true\"\n autocomplete=\"blocked\"\n value={this.message}\n placeholder=\"Message shown in invitation...\"\n onFocus={() => (this.showSuggestions = false)}\n onInput={(e: any) => (this.message = e.target.value)}\n />\n </div>\n )}\n\n <div class=\"buttons\">\n <verdocs-toggle-button\n icon={kbaIcon}\n size=\"small\"\n active={this.showKba}\n onToggle={e => {\n this.showKba = e.detail.active;\n if (!e.detail.active) {\n this.kba_pin = '';\n this.kba_method = '';\n this.zip = '';\n }\n this.showSuggestions = false;\n }}\n />\n <verdocs-toggle-button\n icon={messageIcon}\n size=\"small\"\n active={this.showMessage}\n onToggle={e => {\n this.showMessage = e.detail.active;\n this.showSuggestions = false;\n }}\n />\n\n <div class=\"flex-fill\" />\n\n <verdocs-button variant=\"outline\" label=\"Cancel\" size=\"small\" onClick={e => this.handleCancel(e)} />\n <verdocs-button label=\"OK\" size=\"small\" disabled={!canSubmit} onClick={!canSubmit ? () => {} : e => this.handleSubmit(e)} />\n </div>\n </form>\n );\n }\n}\n"]}
|
package/dist/collection/components/templates/verdocs-template-settings/verdocs-template-settings.css
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
@keyframes verdocs-field-pulse {
|
2
|
+
0% {
|
3
|
+
background-color: rgba(0, 0, 0, 0.35);
|
4
|
+
}
|
5
|
+
50% {
|
6
|
+
background-color: rgba(0, 0, 0, 0);
|
7
|
+
}
|
8
|
+
100% {
|
9
|
+
background-color: rgba(0, 0, 0, 0.35);
|
10
|
+
}
|
11
|
+
}
|
12
|
+
verdocs-template-settings {
|
13
|
+
display: block;
|
14
|
+
max-width: 600px;
|
15
|
+
font-family: "Inter", -apple-system, "Segoe UI", "Roboto", "Helvetica Neue", sans-serif;
|
16
|
+
}
|
17
|
+
verdocs-template-settings > form {
|
18
|
+
display: flex;
|
19
|
+
flex-direction: column;
|
20
|
+
background-color: #ffffff;
|
21
|
+
padding: 12px;
|
22
|
+
}
|
23
|
+
verdocs-template-settings > form h5 {
|
24
|
+
font-size: 16px;
|
25
|
+
font-weight: bold;
|
26
|
+
color: #46497d;
|
27
|
+
margin: 0 0 10px 0;
|
28
|
+
}
|
29
|
+
verdocs-template-settings > form label {
|
30
|
+
display: block;
|
31
|
+
font-size: 14px;
|
32
|
+
font-weight: 500;
|
33
|
+
margin: 0 0 4px 0;
|
34
|
+
color: #5c6575;
|
35
|
+
}
|
36
|
+
verdocs-template-settings > form input {
|
37
|
+
border: none;
|
38
|
+
font-size: 18px;
|
39
|
+
padding: 3px 6px 3px 0;
|
40
|
+
background: transparent;
|
41
|
+
border-bottom: 1px solid #33364b;
|
42
|
+
}
|
43
|
+
verdocs-template-settings > form input:focus {
|
44
|
+
outline: none;
|
45
|
+
}
|
46
|
+
verdocs-template-settings > form .row {
|
47
|
+
margin: 20px 0 0 0;
|
48
|
+
}
|
49
|
+
verdocs-template-settings .buttons {
|
50
|
+
display: flex;
|
51
|
+
column-gap: 8px;
|
52
|
+
margin-top: 16px;
|
53
|
+
flex-direction: row;
|
54
|
+
}
|
55
|
+
verdocs-template-settings ::placeholder {
|
56
|
+
color: #aaaaaa;
|
57
|
+
}
|
package/dist/collection/components/templates/verdocs-template-settings/verdocs-template-settings.js
ADDED
@@ -0,0 +1,282 @@
|
|
1
|
+
import { h, Host } from "@stencil/core";
|
2
|
+
import { getTemplate, updateTemplate, VerdocsEndpoint } from "@verdocs/js-sdk";
|
3
|
+
import { VerdocsToast } from "../../../utils/Toast";
|
4
|
+
import { SDKError } from "../../../utils/errors";
|
5
|
+
import { Store } from "../../../utils/Datastore";
|
6
|
+
const MS_PER_DAY = 24 * 60 * 60 * 1000;
|
7
|
+
/**
|
8
|
+
* Display an edit form that allows the user to adjust a template's roles and workflow.
|
9
|
+
*/
|
10
|
+
export class VerdocsTemplateSettings {
|
11
|
+
constructor() {
|
12
|
+
this.templateListenerId = null;
|
13
|
+
this.endpoint = VerdocsEndpoint.getDefault();
|
14
|
+
this.templateId = '';
|
15
|
+
this.name = null;
|
16
|
+
this.visibility = 'private';
|
17
|
+
this.sender = 'envelope_creator';
|
18
|
+
this.sendReminders = false;
|
19
|
+
this.initialReminder = 0;
|
20
|
+
this.followupReminders = 0;
|
21
|
+
this.dirty = false;
|
22
|
+
this.loading = true;
|
23
|
+
this.template = null;
|
24
|
+
}
|
25
|
+
disconnectedCallback() {
|
26
|
+
this.unlistenToTemplate();
|
27
|
+
}
|
28
|
+
async listenToTemplate() {
|
29
|
+
console.log('[SETTINGS] Loading template', this.templateId);
|
30
|
+
this.unlistenToTemplate();
|
31
|
+
Store.subscribe('templates', this.templateId, () => getTemplate(this.endpoint, this.templateId), false, (template) => {
|
32
|
+
console.log('[SETTINGS] Template Updated', template);
|
33
|
+
this.template = template;
|
34
|
+
this.name = template.name;
|
35
|
+
this.visibility = template.visibility;
|
36
|
+
this.sender = template.sender;
|
37
|
+
this.sendReminders = template.initial_reminder !== null;
|
38
|
+
this.initialReminder = template.initial_reminder ? Math.floor(template.initial_reminder / MS_PER_DAY) : null;
|
39
|
+
this.followupReminders = template.followup_reminders ? Math.floor(template.followup_reminders / MS_PER_DAY) : null;
|
40
|
+
this.dirty = false;
|
41
|
+
this.loading = false;
|
42
|
+
});
|
43
|
+
}
|
44
|
+
unlistenToTemplate() {
|
45
|
+
if (this.templateListenerId) {
|
46
|
+
Store.store.delListener(this.templateListenerId);
|
47
|
+
this.templateListenerId = null;
|
48
|
+
}
|
49
|
+
}
|
50
|
+
async componentWillLoad() {
|
51
|
+
var _a, _b, _c;
|
52
|
+
try {
|
53
|
+
this.endpoint.loadSession();
|
54
|
+
if (!this.templateId) {
|
55
|
+
console.log(`[SETTINGS] Missing required template ID ${this.templateId}`);
|
56
|
+
return;
|
57
|
+
}
|
58
|
+
if (!this.endpoint.session) {
|
59
|
+
console.log('[SETTINGS] Unable to start builder session, must be authenticated');
|
60
|
+
return;
|
61
|
+
}
|
62
|
+
this.listenToTemplate();
|
63
|
+
}
|
64
|
+
catch (e) {
|
65
|
+
console.log('[SETTINGS] Error with preview session', e);
|
66
|
+
(_a = this.sdkError) === null || _a === void 0 ? void 0 : _a.emit(new SDKError(e.message, (_b = e.response) === null || _b === void 0 ? void 0 : _b.status, (_c = e.response) === null || _c === void 0 ? void 0 : _c.data));
|
67
|
+
}
|
68
|
+
}
|
69
|
+
handleCancel() {
|
70
|
+
var _a;
|
71
|
+
(_a = this.exit) === null || _a === void 0 ? void 0 : _a.emit();
|
72
|
+
}
|
73
|
+
handleSubmit() {
|
74
|
+
updateTemplate(this.endpoint, this.templateId, {
|
75
|
+
name: this.name,
|
76
|
+
visibility: this.visibility,
|
77
|
+
sender: this.sender,
|
78
|
+
initial_reminder: this.sendReminders ? this.initialReminder * MS_PER_DAY : null,
|
79
|
+
followup_reminders: this.sendReminders ? this.followupReminders * MS_PER_DAY : null,
|
80
|
+
})
|
81
|
+
.then(template => {
|
82
|
+
var _a, _b;
|
83
|
+
console.log('[SETTINGS] Template Updated', template);
|
84
|
+
this.dirty = false;
|
85
|
+
this.name = template.name;
|
86
|
+
this.visibility = template.visibility;
|
87
|
+
this.sender = template.sender;
|
88
|
+
this.sendReminders = template.initial_reminder !== null;
|
89
|
+
this.initialReminder = template.initial_reminder ? Math.floor(template.initial_reminder / MS_PER_DAY) : null;
|
90
|
+
this.followupReminders = template.followup_reminders ? Math.floor(template.followup_reminders / MS_PER_DAY) : null;
|
91
|
+
(_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template, event: 'update' });
|
92
|
+
(_b = this.next) === null || _b === void 0 ? void 0 : _b.emit();
|
93
|
+
})
|
94
|
+
.catch(e => {
|
95
|
+
var _a, _b, _c, _d, _e;
|
96
|
+
console.log('[SETTINGS] Error updating template', e);
|
97
|
+
(_a = this.sdkError) === null || _a === void 0 ? void 0 : _a.emit(new SDKError(e.message, (_b = e.response) === null || _b === void 0 ? void 0 : _b.status, (_c = e.response) === null || _c === void 0 ? void 0 : _c.data));
|
98
|
+
VerdocsToast(((_e = (_d = e.response) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.error) || 'Error updating template, please try again later.');
|
99
|
+
});
|
100
|
+
}
|
101
|
+
render() {
|
102
|
+
if (!this.endpoint.session) {
|
103
|
+
return (h(Host, null, h("verdocs-component-error", { message: "You must be authenticated to use this module." })));
|
104
|
+
}
|
105
|
+
if (this.loading || !this.template) {
|
106
|
+
return (h(Host, { class: "loading" }, h("verdocs-loader", null)));
|
107
|
+
}
|
108
|
+
return (h(Host, null, h("form", { onSubmit: e => e.preventDefault(), onClick: e => e.stopPropagation(), autocomplete: "off" }, h("h5", null, "Settings"), h("div", { class: "row" }, h("verdocs-text-input", { id: "verdocs-field-name", label: "Template Name", value: this.name, autocomplete: "off", placeholder: "Template Name...", onInput: (e) => {
|
109
|
+
this.name = e.target.value;
|
110
|
+
this.dirty = true;
|
111
|
+
} })), h("div", { class: "row" }, h("verdocs-select-input", { label: "Visibility", value: this.visibility, onInput: (e) => {
|
112
|
+
this.visibility = e.target.value;
|
113
|
+
this.dirty = true;
|
114
|
+
}, options: [
|
115
|
+
{ value: 'private', label: 'Private' },
|
116
|
+
{ value: 'shared', label: 'Shared' },
|
117
|
+
{ value: 'public', label: 'Public' },
|
118
|
+
] })), h("div", { class: "row" }, h("verdocs-select-input", { label: "Owner for envelopes created from this template", value: this.sender, onInput: (e) => {
|
119
|
+
this.sender = e.target.value;
|
120
|
+
this.dirty = true;
|
121
|
+
}, options: [
|
122
|
+
{ value: 'envelope_creator', label: 'Envelope Creator' },
|
123
|
+
{ value: 'template_owner', label: 'Template Owner' },
|
124
|
+
] })), h("div", { class: "row" }, h("label", null, "Send Reminders"), h("verdocs-switch", { checked: this.sendReminders, onCheckedChange: e => (this.sendReminders = e.detail) })), this.sendReminders && (h("div", { class: "row" }, h("verdocs-text-input", { id: "verdocs-field-name", label: "First Reminder (days)", value: String(this.initialReminder || 0), autocomplete: "off", placeholder: "Delay in days...", onInput: (e) => {
|
125
|
+
this.initialReminder = +e.target.value;
|
126
|
+
this.dirty = true;
|
127
|
+
} }))), this.sendReminders && (h("div", { class: "row" }, h("verdocs-text-input", { id: "verdocs-field-name", label: "Follow-up Reminders (days)", value: String(this.followupReminders || 0), autocomplete: "off", placeholder: "Delay in days...", onInput: (e) => {
|
128
|
+
this.followupReminders = +e.target.value;
|
129
|
+
this.dirty = true;
|
130
|
+
} }))), h("div", { class: "buttons" }, h("verdocs-button", { variant: "outline", label: "Cancel", size: "small", onClick: () => this.handleCancel() }), h("verdocs-button", { label: "Save", size: "small", onClick: () => this.handleSubmit(), disabled: !this.dirty })))));
|
131
|
+
}
|
132
|
+
static get is() { return "verdocs-template-settings"; }
|
133
|
+
static get originalStyleUrls() {
|
134
|
+
return {
|
135
|
+
"$": ["verdocs-template-settings.scss"]
|
136
|
+
};
|
137
|
+
}
|
138
|
+
static get styleUrls() {
|
139
|
+
return {
|
140
|
+
"$": ["verdocs-template-settings.css"]
|
141
|
+
};
|
142
|
+
}
|
143
|
+
static get properties() {
|
144
|
+
return {
|
145
|
+
"endpoint": {
|
146
|
+
"type": "unknown",
|
147
|
+
"mutable": false,
|
148
|
+
"complexType": {
|
149
|
+
"original": "VerdocsEndpoint",
|
150
|
+
"resolved": "VerdocsEndpoint",
|
151
|
+
"references": {
|
152
|
+
"VerdocsEndpoint": {
|
153
|
+
"location": "import",
|
154
|
+
"path": "@verdocs/js-sdk",
|
155
|
+
"id": "node_modules::VerdocsEndpoint"
|
156
|
+
}
|
157
|
+
}
|
158
|
+
},
|
159
|
+
"required": false,
|
160
|
+
"optional": false,
|
161
|
+
"docs": {
|
162
|
+
"tags": [],
|
163
|
+
"text": "The endpoint to use to communicate with Verdocs. If not set, the default endpoint will be used."
|
164
|
+
},
|
165
|
+
"defaultValue": "VerdocsEndpoint.getDefault()"
|
166
|
+
},
|
167
|
+
"templateId": {
|
168
|
+
"type": "string",
|
169
|
+
"mutable": false,
|
170
|
+
"complexType": {
|
171
|
+
"original": "string",
|
172
|
+
"resolved": "string",
|
173
|
+
"references": {}
|
174
|
+
},
|
175
|
+
"required": false,
|
176
|
+
"optional": false,
|
177
|
+
"docs": {
|
178
|
+
"tags": [],
|
179
|
+
"text": "The template ID to edit."
|
180
|
+
},
|
181
|
+
"attribute": "template-id",
|
182
|
+
"reflect": false,
|
183
|
+
"defaultValue": "''"
|
184
|
+
}
|
185
|
+
};
|
186
|
+
}
|
187
|
+
static get states() {
|
188
|
+
return {
|
189
|
+
"name": {},
|
190
|
+
"visibility": {},
|
191
|
+
"sender": {},
|
192
|
+
"sendReminders": {},
|
193
|
+
"initialReminder": {},
|
194
|
+
"followupReminders": {},
|
195
|
+
"dirty": {},
|
196
|
+
"loading": {},
|
197
|
+
"template": {}
|
198
|
+
};
|
199
|
+
}
|
200
|
+
static get events() {
|
201
|
+
return [{
|
202
|
+
"method": "next",
|
203
|
+
"name": "next",
|
204
|
+
"bubbles": true,
|
205
|
+
"cancelable": true,
|
206
|
+
"composed": true,
|
207
|
+
"docs": {
|
208
|
+
"tags": [],
|
209
|
+
"text": "Event fired when the user clicks to proceed."
|
210
|
+
},
|
211
|
+
"complexType": {
|
212
|
+
"original": "any",
|
213
|
+
"resolved": "any",
|
214
|
+
"references": {}
|
215
|
+
}
|
216
|
+
}, {
|
217
|
+
"method": "exit",
|
218
|
+
"name": "exit",
|
219
|
+
"bubbles": true,
|
220
|
+
"cancelable": true,
|
221
|
+
"composed": true,
|
222
|
+
"docs": {
|
223
|
+
"tags": [],
|
224
|
+
"text": "Event fired when the step is cancelled. This is called exit to avoid conflicts with the JS-reserved \"cancel\" event name."
|
225
|
+
},
|
226
|
+
"complexType": {
|
227
|
+
"original": "any",
|
228
|
+
"resolved": "any",
|
229
|
+
"references": {}
|
230
|
+
}
|
231
|
+
}, {
|
232
|
+
"method": "sdkError",
|
233
|
+
"name": "sdkError",
|
234
|
+
"bubbles": true,
|
235
|
+
"cancelable": true,
|
236
|
+
"composed": true,
|
237
|
+
"docs": {
|
238
|
+
"tags": [],
|
239
|
+
"text": "Event fired if an error occurs. The event details will contain information about the error. Most errors will\nterminate the process, and the calling application should correct the condition and re-render the component."
|
240
|
+
},
|
241
|
+
"complexType": {
|
242
|
+
"original": "SDKError",
|
243
|
+
"resolved": "SDKError",
|
244
|
+
"references": {
|
245
|
+
"SDKError": {
|
246
|
+
"location": "import",
|
247
|
+
"path": "../../../utils/errors",
|
248
|
+
"id": "src/utils/errors.ts::SDKError"
|
249
|
+
}
|
250
|
+
}
|
251
|
+
}
|
252
|
+
}, {
|
253
|
+
"method": "templateUpdated",
|
254
|
+
"name": "templateUpdated",
|
255
|
+
"bubbles": true,
|
256
|
+
"cancelable": true,
|
257
|
+
"composed": true,
|
258
|
+
"docs": {
|
259
|
+
"tags": [],
|
260
|
+
"text": "Event fired when the template is updated in any way. May be used for tasks such as cache invalidation or reporting to other systems."
|
261
|
+
},
|
262
|
+
"complexType": {
|
263
|
+
"original": "{endpoint: VerdocsEndpoint; template: ITemplate; event: string}",
|
264
|
+
"resolved": "{ endpoint: VerdocsEndpoint; template: ITemplate; event: string; }",
|
265
|
+
"references": {
|
266
|
+
"VerdocsEndpoint": {
|
267
|
+
"location": "import",
|
268
|
+
"path": "@verdocs/js-sdk",
|
269
|
+
"id": "node_modules::VerdocsEndpoint"
|
270
|
+
},
|
271
|
+
"ITemplate": {
|
272
|
+
"location": "import",
|
273
|
+
"path": "@verdocs/js-sdk",
|
274
|
+
"id": "node_modules::ITemplate"
|
275
|
+
}
|
276
|
+
}
|
277
|
+
}
|
278
|
+
}];
|
279
|
+
}
|
280
|
+
static get elementRef() { return "el"; }
|
281
|
+
}
|
282
|
+
//# sourceMappingURL=verdocs-template-settings.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"verdocs-template-settings.js","sourceRoot":"","sources":["../../../../src/components/templates/verdocs-template-settings/verdocs-template-settings.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Component, h, Element, Event, EventEmitter, Host, Prop, State} from '@stencil/core';\nimport {getTemplate, ITemplate, TTemplateSender, TTemplateVisibility, updateTemplate, VerdocsEndpoint} from '@verdocs/js-sdk';\nimport {VerdocsToast} from '../../../utils/Toast';\nimport {SDKError} from '../../../utils/errors';\nimport {Store} from '../../../utils/Datastore';\n\nconst MS_PER_DAY = 24 * 60 * 60 * 1000;\n\n/**\n * Display an edit form that allows the user to adjust a template's roles and workflow.\n */\n@Component({\n tag: 'verdocs-template-settings',\n styleUrl: 'verdocs-template-settings.scss',\n shadow: false,\n})\nexport class VerdocsTemplateSettings {\n private templateListenerId = null;\n\n @Element()\n el: HTMLElement;\n\n /**\n * The endpoint to use to communicate with Verdocs. If not set, the default endpoint will be used.\n */\n @Prop() endpoint: VerdocsEndpoint = VerdocsEndpoint.getDefault();\n\n /**\n * The template ID to edit.\n */\n @Prop() templateId: string = '';\n\n /**\n * Event fired when the user clicks to proceed.\n */\n @Event({composed: true}) next: EventEmitter;\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 if an error occurs. The event details will contain information about the error. Most errors will\n * terminate the process, and the calling application should correct the condition and re-render the component.\n */\n @Event({composed: true}) sdkError: EventEmitter<SDKError>;\n\n /**\n * Event fired when the template is updated in any way. May be used for tasks such as cache invalidation or reporting to other systems.\n */\n @Event({composed: true}) templateUpdated: EventEmitter<{endpoint: VerdocsEndpoint; template: ITemplate; event: string}>;\n\n @State() name: string | null = null;\n @State() visibility: TTemplateVisibility = 'private';\n @State() sender: TTemplateSender = 'envelope_creator';\n @State() sendReminders = false;\n @State() initialReminder = 0;\n @State() followupReminders = 0;\n @State() dirty = false;\n\n @State() loading = true;\n @State() template: ITemplate | null = null;\n\n disconnectedCallback() {\n this.unlistenToTemplate();\n }\n\n async listenToTemplate() {\n console.log('[SETTINGS] Loading template', this.templateId);\n this.unlistenToTemplate();\n Store.subscribe(\n 'templates',\n this.templateId,\n () => getTemplate(this.endpoint, this.templateId),\n false,\n (template: ITemplate) => {\n console.log('[SETTINGS] Template Updated', template);\n this.template = template;\n this.name = template.name;\n this.visibility = template.visibility;\n this.sender = template.sender;\n this.sendReminders = template.initial_reminder !== null;\n this.initialReminder = template.initial_reminder ? Math.floor(template.initial_reminder / MS_PER_DAY) : null;\n this.followupReminders = template.followup_reminders ? Math.floor(template.followup_reminders / MS_PER_DAY) : null;\n this.dirty = false;\n this.loading = false;\n },\n );\n }\n\n unlistenToTemplate() {\n if (this.templateListenerId) {\n Store.store.delListener(this.templateListenerId);\n this.templateListenerId = null;\n }\n }\n\n async componentWillLoad() {\n try {\n this.endpoint.loadSession();\n\n if (!this.templateId) {\n console.log(`[SETTINGS] Missing required template ID ${this.templateId}`);\n return;\n }\n\n if (!this.endpoint.session) {\n console.log('[SETTINGS] Unable to start builder session, must be authenticated');\n return;\n }\n\n this.listenToTemplate();\n } catch (e) {\n console.log('[SETTINGS] Error with preview session', e);\n this.sdkError?.emit(new SDKError(e.message, e.response?.status, e.response?.data));\n }\n }\n\n handleCancel() {\n this.exit?.emit();\n }\n\n handleSubmit() {\n updateTemplate(this.endpoint, this.templateId, {\n name: this.name,\n visibility: this.visibility,\n sender: this.sender,\n initial_reminder: this.sendReminders ? this.initialReminder * MS_PER_DAY : null,\n followup_reminders: this.sendReminders ? this.followupReminders * MS_PER_DAY : null,\n })\n .then(template => {\n console.log('[SETTINGS] Template Updated', template);\n this.dirty = false;\n this.name = template.name;\n this.visibility = template.visibility;\n this.sender = template.sender;\n this.sendReminders = template.initial_reminder !== null;\n this.initialReminder = template.initial_reminder ? Math.floor(template.initial_reminder / MS_PER_DAY) : null;\n this.followupReminders = template.followup_reminders ? Math.floor(template.followup_reminders / MS_PER_DAY) : null;\n this.templateUpdated?.emit({endpoint: this.endpoint, template, event: 'update'});\n this.next?.emit();\n })\n .catch(e => {\n console.log('[SETTINGS] Error updating template', e);\n this.sdkError?.emit(new SDKError(e.message, e.response?.status, e.response?.data));\n VerdocsToast(e.response?.data?.error || 'Error updating template, please try again later.');\n });\n }\n\n render() {\n if (!this.endpoint.session) {\n return (\n <Host>\n <verdocs-component-error message=\"You must be authenticated to use this module.\" />\n </Host>\n );\n }\n\n if (this.loading || !this.template) {\n return (\n <Host class=\"loading\">\n <verdocs-loader />\n </Host>\n );\n }\n\n return (\n <Host>\n <form onSubmit={e => e.preventDefault()} onClick={e => e.stopPropagation()} autocomplete=\"off\">\n <h5>Settings</h5>\n\n <div class=\"row\">\n <verdocs-text-input\n id=\"verdocs-field-name\"\n label=\"Template Name\"\n value={this.name}\n autocomplete=\"off\"\n placeholder=\"Template Name...\"\n onInput={(e: any) => {\n this.name = e.target.value;\n this.dirty = true;\n }}\n />\n </div>\n\n <div class=\"row\">\n <verdocs-select-input\n label=\"Visibility\"\n value={this.visibility}\n onInput={(e: any) => {\n this.visibility = e.target.value;\n this.dirty = true;\n }}\n options={[\n {value: 'private', label: 'Private'},\n {value: 'shared', label: 'Shared'},\n {value: 'public', label: 'Public'},\n ]}\n />\n </div>\n\n <div class=\"row\">\n <verdocs-select-input\n label=\"Owner for envelopes created from this template\"\n value={this.sender}\n onInput={(e: any) => {\n this.sender = e.target.value;\n this.dirty = true;\n }}\n options={[\n {value: 'envelope_creator', label: 'Envelope Creator'},\n {value: 'template_owner', label: 'Template Owner'},\n ]}\n />\n </div>\n\n <div class=\"row\">\n <label>Send Reminders</label>\n <verdocs-switch checked={this.sendReminders} onCheckedChange={e => (this.sendReminders = e.detail)} />\n </div>\n\n {this.sendReminders && (\n <div class=\"row\">\n <verdocs-text-input\n id=\"verdocs-field-name\"\n label=\"First Reminder (days)\"\n value={String(this.initialReminder || 0)}\n autocomplete=\"off\"\n placeholder=\"Delay in days...\"\n onInput={(e: any) => {\n this.initialReminder = +e.target.value;\n this.dirty = true;\n }}\n />\n </div>\n )}\n\n {this.sendReminders && (\n <div class=\"row\">\n <verdocs-text-input\n id=\"verdocs-field-name\"\n label=\"Follow-up Reminders (days)\"\n value={String(this.followupReminders || 0)}\n autocomplete=\"off\"\n placeholder=\"Delay in days...\"\n onInput={(e: any) => {\n this.followupReminders = +e.target.value;\n this.dirty = true;\n }}\n />\n </div>\n )}\n\n <div class=\"buttons\">\n <verdocs-button variant=\"outline\" label=\"Cancel\" size=\"small\" onClick={() => this.handleCancel()} />\n <verdocs-button label=\"Save\" size=\"small\" onClick={() => this.handleSubmit()} disabled={!this.dirty} />\n </div>\n </form>\n </Host>\n );\n }\n}\n"]}
|
package/dist/components/index.js
CHANGED
@@ -58,6 +58,7 @@ import { VerdocsTemplateFieldProperties } from './verdocs-template-field-propert
|
|
58
58
|
import { VerdocsTemplateFields } from './verdocs-template-fields.js';
|
59
59
|
import { VerdocsTemplateRoleProperties } from './verdocs-template-role-properties.js';
|
60
60
|
import { VerdocsTemplateRoles } from './verdocs-template-roles.js';
|
61
|
+
import { VerdocsTemplateSettings } from './verdocs-template-settings.js';
|
61
62
|
import { VerdocsTemplateStar } from './verdocs-template-star.js';
|
62
63
|
import { VerdocsTemplateTags } from './verdocs-template-tags.js';
|
63
64
|
import { VerdocsTemplatesList } from './verdocs-templates-list.js';
|
@@ -132,6 +133,7 @@ const defineCustomElements = (opts) => {
|
|
132
133
|
VerdocsTemplateFields,
|
133
134
|
VerdocsTemplateRoleProperties,
|
134
135
|
VerdocsTemplateRoles,
|
136
|
+
VerdocsTemplateSettings,
|
135
137
|
VerdocsTemplateStar,
|
136
138
|
VerdocsTemplateTags,
|
137
139
|
VerdocsTemplatesList,
|
@@ -1 +1 @@
|
|
1
|
-
{"file":"index.js","mappings":"
|
1
|
+
{"file":"index.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|