@verdocs/web-sdk 1.10.10 → 1.11.1

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.
Files changed (239) hide show
  1. package/dist/cjs/{Envelopes-68058bbe.js → Envelopes-7381bd9a.js} +11 -0
  2. package/dist/cjs/{Envelopes-4cc18551.js → Envelopes-9886af0f.js} +4 -1
  3. package/dist/cjs/{interact.min-3e3c03a5.js → interact.min-d223d04b.js} +3 -19
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/utils-f4cfa1fb.js +349 -0
  6. package/dist/cjs/verdocs-checkbox_4.cjs.entry.js +1 -1
  7. package/dist/cjs/verdocs-document-page_2.cjs.entry.js +3 -2
  8. package/dist/cjs/verdocs-dropdown.cjs.entry.js +2 -2
  9. package/dist/cjs/verdocs-envelope-sidebar.cjs.entry.js +6 -3
  10. package/dist/cjs/verdocs-field-checkbox.cjs.entry.js +8 -3
  11. package/dist/cjs/verdocs-field-date.cjs.entry.js +7 -3
  12. package/dist/cjs/verdocs-field-dropdown.cjs.entry.js +3 -2
  13. package/dist/cjs/verdocs-field-initial.cjs.entry.js +8 -3
  14. package/dist/cjs/verdocs-field-payment.cjs.entry.js +3 -2
  15. package/dist/cjs/verdocs-field-radio-button.cjs.entry.js +8 -3
  16. package/dist/cjs/verdocs-field-signature.cjs.entry.js +8 -3
  17. package/dist/cjs/verdocs-field-textarea.cjs.entry.js +8 -3
  18. package/dist/cjs/verdocs-field-textbox.cjs.entry.js +8 -3
  19. package/dist/cjs/verdocs-field-timestamp.cjs.entry.js +7 -3
  20. package/dist/cjs/verdocs-preview.cjs.entry.js +3 -2
  21. package/dist/cjs/verdocs-send.cjs.entry.js +3 -2
  22. package/dist/cjs/verdocs-sign.cjs.entry.js +12 -5
  23. package/dist/cjs/verdocs-template-attachments.cjs.entry.js +3 -0
  24. package/dist/cjs/verdocs-template-create_2.cjs.entry.js +16 -7
  25. package/dist/cjs/verdocs-template-name.cjs.entry.js +3 -4
  26. package/dist/cjs/verdocs-template-recipients.cjs.entry.js +47 -11
  27. package/dist/cjs/verdocs-view.cjs.entry.js +51 -11
  28. package/dist/cjs/verdocs-web-sdk.cjs.js +1 -1
  29. package/dist/collection/components/controls/verdocs-dropdown/verdocs-dropdown.css +6 -0
  30. package/dist/collection/components/controls/verdocs-dropdown/verdocs-dropdown.js +4 -2
  31. package/dist/collection/components/controls/verdocs-dropdown/verdocs-dropdown.stories.js +1 -1
  32. package/dist/collection/components/elements/verdocs-component-error/verdocs-component-error.css +2 -0
  33. package/dist/collection/components/elements/verdocs-envelope-sidebar/verdocs-envelope-sidebar.js +27 -1
  34. package/dist/collection/components/embeds/verdocs-sign/verdocs-sign.js +10 -4
  35. package/dist/collection/components/embeds/verdocs-view/verdocs-view.js +70 -8
  36. package/dist/collection/components/fields/verdocs-field-checkbox/verdocs-field-checkbox.js +5 -1
  37. package/dist/collection/components/fields/verdocs-field-date/verdocs-field-date.js +5 -1
  38. package/dist/collection/components/fields/verdocs-field-initial/verdocs-field-initial.js +5 -1
  39. package/dist/collection/components/fields/verdocs-field-radio-button-group/verdocs-field-radio-button.js +5 -1
  40. package/dist/collection/components/fields/verdocs-field-signature/verdocs-field-signature.js +5 -1
  41. package/dist/collection/components/fields/verdocs-field-textarea/verdocs-field-textarea.js +5 -1
  42. package/dist/collection/components/fields/verdocs-field-textbox/verdocs-field-textbox.js +5 -1
  43. package/dist/collection/components/fields/verdocs-field-timestamp/verdocs-field-timestamp.js +5 -1
  44. package/dist/collection/components/templates/verdocs-template-attachments/verdocs-template-attachments.js +3 -0
  45. package/dist/collection/components/templates/verdocs-template-fields/verdocs-template-fields.js +37 -5
  46. package/dist/collection/components/templates/verdocs-template-name/verdocs-template-name.js +3 -4
  47. package/dist/collection/components/templates/verdocs-template-recipients/verdocs-template-recipients.css +16 -0
  48. package/dist/collection/components/templates/verdocs-template-recipients/verdocs-template-recipients.js +65 -7
  49. package/dist/collection/utils/envelopeStore.js +3 -0
  50. package/dist/collection/utils/utils.js +44 -3
  51. package/dist/components/Envelopes.js +4 -1
  52. package/dist/components/Envelopes2.js +11 -1
  53. package/dist/components/interact.min.js +1 -17
  54. package/dist/components/utils.js +80 -4
  55. package/dist/components/verdocs-component-error2.js +1 -1
  56. package/dist/components/verdocs-dropdown2.js +2 -2
  57. package/dist/components/verdocs-envelope-sidebar.js +4 -1
  58. package/dist/components/verdocs-field-checkbox.js +5 -1
  59. package/dist/components/verdocs-field-date.js +5 -1
  60. package/dist/components/verdocs-field-initial.js +5 -1
  61. package/dist/components/verdocs-field-radio-button.js +5 -1
  62. package/dist/components/verdocs-field-signature.js +5 -1
  63. package/dist/components/verdocs-field-textarea.js +5 -1
  64. package/dist/components/verdocs-field-textbox.js +5 -1
  65. package/dist/components/verdocs-field-timestamp.js +5 -1
  66. package/dist/components/verdocs-sign.js +9 -3
  67. package/dist/components/verdocs-template-attachments.js +10 -1
  68. package/dist/components/verdocs-template-fields2.js +14 -5
  69. package/dist/components/verdocs-template-name.js +11 -6
  70. package/dist/components/verdocs-template-recipients.js +53 -12
  71. package/dist/components/verdocs-view2.js +47 -8
  72. package/dist/docs.json +57 -3
  73. package/dist/esm/{Envelopes-91d7e139.js → Envelopes-b8945309.js} +4 -1
  74. package/dist/esm/{Envelopes-130fd6ea.js → Envelopes-eb3eef02.js} +11 -1
  75. package/dist/esm/{interact.min-32c1c1e4.js → interact.min-e472871a.js} +1 -17
  76. package/dist/esm/loader.js +1 -1
  77. package/dist/esm/utils-8065a62d.js +334 -0
  78. package/dist/esm/verdocs-checkbox_4.entry.js +1 -1
  79. package/dist/esm/verdocs-document-page_2.entry.js +3 -2
  80. package/dist/esm/verdocs-dropdown.entry.js +2 -2
  81. package/dist/esm/verdocs-envelope-sidebar.entry.js +6 -3
  82. package/dist/esm/verdocs-field-checkbox.entry.js +8 -3
  83. package/dist/esm/verdocs-field-date.entry.js +7 -3
  84. package/dist/esm/verdocs-field-dropdown.entry.js +3 -2
  85. package/dist/esm/verdocs-field-initial.entry.js +8 -3
  86. package/dist/esm/verdocs-field-payment.entry.js +3 -2
  87. package/dist/esm/verdocs-field-radio-button.entry.js +8 -3
  88. package/dist/esm/verdocs-field-signature.entry.js +8 -3
  89. package/dist/esm/verdocs-field-textarea.entry.js +8 -3
  90. package/dist/esm/verdocs-field-textbox.entry.js +8 -3
  91. package/dist/esm/verdocs-field-timestamp.entry.js +7 -3
  92. package/dist/esm/verdocs-preview.entry.js +3 -2
  93. package/dist/esm/verdocs-send.entry.js +3 -2
  94. package/dist/esm/verdocs-sign.entry.js +12 -5
  95. package/dist/esm/verdocs-template-attachments.entry.js +3 -0
  96. package/dist/esm/verdocs-template-create_2.entry.js +16 -7
  97. package/dist/esm/verdocs-template-name.entry.js +3 -4
  98. package/dist/esm/verdocs-template-recipients.entry.js +48 -12
  99. package/dist/esm/verdocs-view.entry.js +51 -11
  100. package/dist/esm/verdocs-web-sdk.js +1 -1
  101. package/dist/esm-es5/Envelopes-b8945309.js +1 -0
  102. package/dist/esm-es5/{Envelopes-130fd6ea.js → Envelopes-eb3eef02.js} +1 -1
  103. package/dist/esm-es5/interact.min-e472871a.js +1 -0
  104. package/dist/esm-es5/loader.js +1 -1
  105. package/dist/esm-es5/utils-8065a62d.js +13 -0
  106. package/dist/esm-es5/verdocs-checkbox_4.entry.js +1 -1
  107. package/dist/esm-es5/verdocs-document-page_2.entry.js +1 -1
  108. package/dist/esm-es5/verdocs-dropdown.entry.js +1 -1
  109. package/dist/esm-es5/verdocs-envelope-sidebar.entry.js +1 -1
  110. package/dist/esm-es5/verdocs-field-checkbox.entry.js +1 -1
  111. package/dist/esm-es5/verdocs-field-date.entry.js +1 -1
  112. package/dist/esm-es5/verdocs-field-dropdown.entry.js +1 -1
  113. package/dist/esm-es5/verdocs-field-initial.entry.js +1 -1
  114. package/dist/esm-es5/verdocs-field-payment.entry.js +1 -1
  115. package/dist/esm-es5/verdocs-field-radio-button.entry.js +1 -1
  116. package/dist/esm-es5/verdocs-field-signature.entry.js +1 -1
  117. package/dist/esm-es5/verdocs-field-textarea.entry.js +1 -1
  118. package/dist/esm-es5/verdocs-field-textbox.entry.js +1 -1
  119. package/dist/esm-es5/verdocs-field-timestamp.entry.js +1 -1
  120. package/dist/esm-es5/verdocs-preview.entry.js +1 -1
  121. package/dist/esm-es5/verdocs-send.entry.js +1 -1
  122. package/dist/esm-es5/verdocs-sign.entry.js +1 -1
  123. package/dist/esm-es5/verdocs-template-attachments.entry.js +1 -1
  124. package/dist/esm-es5/verdocs-template-create_2.entry.js +1 -1
  125. package/dist/esm-es5/verdocs-template-name.entry.js +1 -1
  126. package/dist/esm-es5/verdocs-template-recipients.entry.js +1 -1
  127. package/dist/esm-es5/verdocs-view.entry.js +1 -1
  128. package/dist/esm-es5/verdocs-web-sdk.js +1 -1
  129. package/dist/types/components/controls/verdocs-dropdown/verdocs-dropdown.d.ts +3 -1
  130. package/dist/types/components/elements/verdocs-envelope-sidebar/verdocs-envelope-sidebar.d.ts +9 -1
  131. package/dist/types/components/embeds/verdocs-sign/verdocs-sign.d.ts +1 -1
  132. package/dist/types/components/embeds/verdocs-view/verdocs-view.d.ts +9 -0
  133. package/dist/types/components/templates/verdocs-template-fields/verdocs-template-fields.d.ts +10 -1
  134. package/dist/types/components/templates/verdocs-template-recipients/verdocs-template-recipients.d.ts +12 -1
  135. package/dist/types/components.d.ts +17 -1
  136. package/dist/types/utils/envelopeStore.d.ts +1 -0
  137. package/dist/types/utils/utils.d.ts +4 -1
  138. package/dist/verdocs-web-sdk/p-085d66a2.entry.js +1 -0
  139. package/dist/verdocs-web-sdk/{p-b39df234.system.entry.js → p-0c393c2b.system.entry.js} +1 -1
  140. package/dist/verdocs-web-sdk/p-0d7db907.system.entry.js +1 -0
  141. package/dist/verdocs-web-sdk/p-113a45d3.entry.js +1 -0
  142. package/dist/verdocs-web-sdk/p-127a569c.system.entry.js +1 -0
  143. package/dist/verdocs-web-sdk/p-19d13aca.system.entry.js +1 -0
  144. package/dist/verdocs-web-sdk/p-1fe9560f.system.entry.js +1 -0
  145. package/dist/verdocs-web-sdk/p-25fa36d7.js +13 -0
  146. package/dist/verdocs-web-sdk/p-28620067.system.entry.js +1 -0
  147. package/dist/verdocs-web-sdk/p-388b771c.js +1 -0
  148. package/dist/verdocs-web-sdk/p-38d00c38.system.js +13 -0
  149. package/dist/verdocs-web-sdk/p-4086a15a.entry.js +1 -0
  150. package/dist/verdocs-web-sdk/{p-b40a50a8.system.entry.js → p-41122f38.system.entry.js} +1 -1
  151. package/dist/verdocs-web-sdk/p-42a82518.entry.js +1 -0
  152. package/dist/verdocs-web-sdk/p-433a7bb3.entry.js +1 -0
  153. package/dist/verdocs-web-sdk/p-56196fad.entry.js +1 -0
  154. package/dist/verdocs-web-sdk/p-5dc58d34.entry.js +1 -0
  155. package/dist/verdocs-web-sdk/p-5fda1fe8.system.entry.js +1 -0
  156. package/dist/verdocs-web-sdk/p-63c55bc3.entry.js +1 -0
  157. package/dist/verdocs-web-sdk/p-6619bc62.js +1 -0
  158. package/dist/verdocs-web-sdk/p-68eb0ad8.entry.js +1 -0
  159. package/dist/verdocs-web-sdk/p-6c231fe6.system.entry.js +1 -0
  160. package/dist/verdocs-web-sdk/p-6c4d28a2.entry.js +1 -0
  161. package/dist/verdocs-web-sdk/p-6e15a51e.system.entry.js +1 -0
  162. package/dist/verdocs-web-sdk/{p-7ac87084.system.js → p-6f53c098.system.js} +1 -1
  163. package/dist/verdocs-web-sdk/p-76bdb162.entry.js +1 -0
  164. package/dist/verdocs-web-sdk/p-79514d21.system.entry.js +1 -0
  165. package/dist/verdocs-web-sdk/p-7d8de5d6.system.entry.js +1 -0
  166. package/dist/verdocs-web-sdk/p-80fe8ac3.system.js +1 -0
  167. package/dist/verdocs-web-sdk/p-8a430554.entry.js +1 -0
  168. package/dist/verdocs-web-sdk/p-8b20b903.system.entry.js +1 -0
  169. package/dist/verdocs-web-sdk/p-8e5065af.entry.js +1 -0
  170. package/dist/verdocs-web-sdk/p-8ff15619.entry.js +1 -0
  171. package/dist/verdocs-web-sdk/p-93b857b6.system.entry.js +1 -0
  172. package/dist/verdocs-web-sdk/p-a892d5b4.js +1 -0
  173. package/dist/verdocs-web-sdk/p-b225dcfb.entry.js +1 -0
  174. package/dist/verdocs-web-sdk/{p-cdff8cba.system.entry.js → p-b430f3d0.system.entry.js} +1 -1
  175. package/dist/verdocs-web-sdk/p-b7740fe7.system.entry.js +1 -0
  176. package/dist/verdocs-web-sdk/{p-d06946ca.entry.js → p-bc24fcdc.entry.js} +1 -1
  177. package/dist/verdocs-web-sdk/p-bde3d383.system.entry.js +1 -0
  178. package/dist/verdocs-web-sdk/p-c08b737c.system.entry.js +1 -0
  179. package/dist/verdocs-web-sdk/p-c16b6ca4.system.js +1 -1
  180. package/dist/verdocs-web-sdk/{p-8c53e0ff.system.entry.js → p-c317702e.system.entry.js} +1 -1
  181. package/dist/verdocs-web-sdk/p-c6406e1d.system.entry.js +1 -0
  182. package/dist/verdocs-web-sdk/p-cf27d3ce.system.entry.js +1 -0
  183. package/dist/verdocs-web-sdk/{p-0eb992eb.entry.js → p-d3e25ad3.entry.js} +1 -1
  184. package/dist/verdocs-web-sdk/p-d5836d39.entry.js +1 -0
  185. package/dist/verdocs-web-sdk/p-d78594bb.entry.js +1 -0
  186. package/dist/verdocs-web-sdk/{p-9345346d.entry.js → p-e079768b.entry.js} +1 -1
  187. package/dist/verdocs-web-sdk/p-e53a7969.entry.js +1 -0
  188. package/dist/verdocs-web-sdk/p-e65ec569.system.entry.js +1 -0
  189. package/dist/verdocs-web-sdk/{p-e0cfad01.system.js → p-e764098e.system.js} +1 -1
  190. package/dist/verdocs-web-sdk/{p-abffbbaf.entry.js → p-ec913a97.entry.js} +1 -1
  191. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
  192. package/package.json +3 -2
  193. package/dist/cjs/utils-865fd657.js +0 -269
  194. package/dist/esm/utils-274e2e93.js +0 -258
  195. package/dist/esm-es5/Envelopes-91d7e139.js +0 -1
  196. package/dist/esm-es5/interact.min-32c1c1e4.js +0 -1
  197. package/dist/esm-es5/utils-274e2e93.js +0 -1
  198. package/dist/verdocs-web-sdk/p-00307be5.system.entry.js +0 -1
  199. package/dist/verdocs-web-sdk/p-0214eab8.entry.js +0 -1
  200. package/dist/verdocs-web-sdk/p-07dfda29.entry.js +0 -1
  201. package/dist/verdocs-web-sdk/p-19f6e8c8.system.entry.js +0 -1
  202. package/dist/verdocs-web-sdk/p-1b58f506.entry.js +0 -1
  203. package/dist/verdocs-web-sdk/p-1c92741b.system.entry.js +0 -1
  204. package/dist/verdocs-web-sdk/p-2037252b.entry.js +0 -1
  205. package/dist/verdocs-web-sdk/p-242647c0.system.entry.js +0 -1
  206. package/dist/verdocs-web-sdk/p-25256749.entry.js +0 -1
  207. package/dist/verdocs-web-sdk/p-29df733a.system.entry.js +0 -1
  208. package/dist/verdocs-web-sdk/p-36fd1c28.system.entry.js +0 -1
  209. package/dist/verdocs-web-sdk/p-46cfb904.system.entry.js +0 -1
  210. package/dist/verdocs-web-sdk/p-47dfcf69.system.entry.js +0 -1
  211. package/dist/verdocs-web-sdk/p-4f12a8a7.js +0 -1
  212. package/dist/verdocs-web-sdk/p-50c9771e.js +0 -1
  213. package/dist/verdocs-web-sdk/p-587f4405.entry.js +0 -1
  214. package/dist/verdocs-web-sdk/p-628aef1d.system.entry.js +0 -1
  215. package/dist/verdocs-web-sdk/p-6790f267.system.entry.js +0 -1
  216. package/dist/verdocs-web-sdk/p-72f4b40b.entry.js +0 -1
  217. package/dist/verdocs-web-sdk/p-7a05d4ac.system.entry.js +0 -1
  218. package/dist/verdocs-web-sdk/p-875f9455.system.entry.js +0 -1
  219. package/dist/verdocs-web-sdk/p-880b619d.js +0 -1
  220. package/dist/verdocs-web-sdk/p-996008f6.system.entry.js +0 -1
  221. package/dist/verdocs-web-sdk/p-af65650c.entry.js +0 -1
  222. package/dist/verdocs-web-sdk/p-b22a2c9a.system.entry.js +0 -1
  223. package/dist/verdocs-web-sdk/p-b981d415.entry.js +0 -1
  224. package/dist/verdocs-web-sdk/p-bda7353b.entry.js +0 -1
  225. package/dist/verdocs-web-sdk/p-c11a7c7e.entry.js +0 -1
  226. package/dist/verdocs-web-sdk/p-c73998d3.system.entry.js +0 -1
  227. package/dist/verdocs-web-sdk/p-c86a40a3.system.entry.js +0 -1
  228. package/dist/verdocs-web-sdk/p-c9eb3771.entry.js +0 -1
  229. package/dist/verdocs-web-sdk/p-cd4270a9.system.entry.js +0 -1
  230. package/dist/verdocs-web-sdk/p-d122cadd.system.js +0 -1
  231. package/dist/verdocs-web-sdk/p-d6e07c20.js +0 -1
  232. package/dist/verdocs-web-sdk/p-d88f7d5e.system.entry.js +0 -1
  233. package/dist/verdocs-web-sdk/p-e090d5e1.system.js +0 -1
  234. package/dist/verdocs-web-sdk/p-e1754b47.entry.js +0 -1
  235. package/dist/verdocs-web-sdk/p-e6f3735e.entry.js +0 -1
  236. package/dist/verdocs-web-sdk/p-e845dc2c.entry.js +0 -1
  237. package/dist/verdocs-web-sdk/p-ef4603fd.entry.js +0 -1
  238. package/dist/verdocs-web-sdk/p-f81a559c.entry.js +0 -1
  239. package/dist/verdocs-web-sdk/p-ff2816cf.entry.js +0 -1
@@ -38,7 +38,11 @@ export class VerdocsFieldCheckbox {
38
38
  if (this.done) {
39
39
  return h(Host, { class: { done: this.done } }, option.checked ? '✓' : '☐');
40
40
  }
41
- return (h(Host, { class: { required: settings.required, disabled }, style: { backgroundColor } }, h("label", null, h("input", { type: "checkbox", tabIndex: settings.order, checked: option.checked, disabled: disabled, required: settings.required, value: option.id }), h("span", null), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: TemplateStore.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onSettingsChanged: e => {
41
+ return (h(Host, { class: { required: settings.required, disabled }, style: { backgroundColor } }, h("label", null, h("input", { type: "checkbox", tabIndex: settings.order, checked: option.checked, disabled: disabled, required: settings.required, value: option.id }), h("span", null), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: TemplateStore.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
42
+ var _a;
43
+ (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
44
+ return this.hideSettingsPanel();
45
+ }, onSettingsChanged: e => {
42
46
  var _a;
43
47
  (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit(e.detail);
44
48
  return this.hideSettingsPanel();
@@ -61,7 +61,11 @@ export class VerdocsFieldDate {
61
61
  const formatted = (settings === null || settings === void 0 ? void 0 : settings.result) ? format(new Date(settings === null || settings === void 0 ? void 0 : settings.result), 'MMM d, y') : '';
62
62
  return h(Host, { class: { done: this.done } }, formatted);
63
63
  }
64
- return (h(Host, { class: { required: settings.required, disabled }, style: { backgroundColor } }, h("input", { type: "text", value: "", id: this.containerId, disabled: disabled, placeholder: settings.placeholder, required: settings.required, ref: el => (this.el = el) }), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: TemplateStore.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onSettingsChanged: e => {
64
+ return (h(Host, { class: { required: settings.required, disabled }, style: { backgroundColor } }, h("input", { type: "text", value: "", id: this.containerId, disabled: disabled, placeholder: settings.placeholder, required: settings.required, ref: el => (this.el = el) }), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: TemplateStore.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
65
+ var _a;
66
+ (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
67
+ return this.hideSettingsPanel();
68
+ }, onSettingsChanged: e => {
65
69
  var _a;
66
70
  (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit(e.detail);
67
71
  return this.hideSettingsPanel();
@@ -63,7 +63,11 @@ export class VerdocsFieldInitial {
63
63
  if (this.done) {
64
64
  return h(Host, { class: { done: this.done } }, value && h("img", { src: value, alt: "Initials" }));
65
65
  }
66
- return (h(Host, { class: { required: settings.required, disabled }, style: { backgroundColor } }, value ? (h("img", { src: value, alt: "Initials" })) : (h("button", { class: {}, onClick: () => !disabled && this.handleShow() }, "Initials")), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: TemplateStore.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onSettingsChanged: e => {
66
+ return (h(Host, { class: { required: settings.required, disabled }, style: { backgroundColor } }, value ? (h("img", { src: value, alt: "Initials" })) : (h("button", { class: {}, onClick: () => !disabled && this.handleShow() }, "Initials")), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: TemplateStore.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
67
+ var _a;
68
+ (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
69
+ return this.hideSettingsPanel();
70
+ }, onSettingsChanged: e => {
67
71
  var _a;
68
72
  (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit(e.detail);
69
73
  return this.hideSettingsPanel();
@@ -42,7 +42,11 @@ export class VerdocsFieldRadioButton {
42
42
  if (this.done) {
43
43
  return (h(Host, { class: { done: this.done }, style: { maxWidth: '10px' } }, h("span", { innerHTML: !!option.selected ? RadioIconSelected : RadioIconUnselected })));
44
44
  }
45
- return (h(Host, { class: { required, disabled }, style: { backgroundColor } }, h("input", { id: id, type: "radio", value: option.id, tabIndex: settings.order, name: this.field.name, checked: !!option.selected, disabled: disabled, required: settings.required }), h("label", { htmlFor: id }), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: TemplateStore.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onSettingsChanged: e => {
45
+ return (h(Host, { class: { required, disabled }, style: { backgroundColor } }, h("input", { id: id, type: "radio", value: option.id, tabIndex: settings.order, name: this.field.name, checked: !!option.selected, disabled: disabled, required: settings.required }), h("label", { htmlFor: id }), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: TemplateStore.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
46
+ var _a;
47
+ (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
48
+ return this.hideSettingsPanel();
49
+ }, onSettingsChanged: e => {
46
50
  var _a;
47
51
  (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit(e.detail);
48
52
  return this.hideSettingsPanel();
@@ -64,7 +64,11 @@ export class VerdocsFieldSignature {
64
64
  if (this.done) {
65
65
  return h(Host, { class: { done: this.done } }, value && h("img", { src: value, alt: "Signature" }));
66
66
  }
67
- return (h(Host, { class: { required: (_c = this.field) === null || _c === void 0 ? void 0 : _c.required, disabled }, style: { backgroundColor } }, value ? h("img", { src: value, alt: "Signature" }) : h("button", { onClick: () => !disabled && this.handleShow() }, "Signature"), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: TemplateStore.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onSettingsChanged: e => {
67
+ return (h(Host, { class: { required: (_c = this.field) === null || _c === void 0 ? void 0 : _c.required, disabled }, style: { backgroundColor } }, value ? h("img", { src: value, alt: "Signature" }) : h("button", { onClick: () => !disabled && this.handleShow() }, "Signature"), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: TemplateStore.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
68
+ var _a;
69
+ (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
70
+ return this.hideSettingsPanel();
71
+ }, onSettingsChanged: e => {
68
72
  var _a;
69
73
  (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit(e.detail);
70
74
  return this.hideSettingsPanel();
@@ -39,7 +39,11 @@ export class VerdocsFieldTextarea {
39
39
  if (this.done) {
40
40
  return h(Host, { class: { done: this.done } }, settings.value);
41
41
  }
42
- return (h(Host, { class: { required: settings.required, disabled }, style: { backgroundColor } }, h("textarea", { placeholder: settings.placeholder || '', tabIndex: settings.order, value: settings.value, disabled: disabled, required: settings.required, ref: el => (this.el = el) }), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: TemplateStore.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onSettingsChanged: e => {
42
+ return (h(Host, { class: { required: settings.required, disabled }, style: { backgroundColor } }, h("textarea", { placeholder: settings.placeholder || '', tabIndex: settings.order, value: settings.value, disabled: disabled, required: settings.required, ref: el => (this.el = el) }), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: TemplateStore.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
43
+ var _a;
44
+ (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
45
+ return this.hideSettingsPanel();
46
+ }, onSettingsChanged: e => {
43
47
  var _a;
44
48
  (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit(e.detail);
45
49
  return this.hideSettingsPanel();
@@ -40,7 +40,11 @@ export class VerdocsFieldTextbox {
40
40
  if (this.done) {
41
41
  return h(Host, { class: { done: this.done } }, value);
42
42
  }
43
- return (h(Host, { class: { required: (_c = this.field) === null || _c === void 0 ? void 0 : _c.required, disabled, done: this.done }, style: { backgroundColor } }, h("input", { type: "text", placeholder: settings === null || settings === void 0 ? void 0 : settings.placeholder, tabIndex: settings === null || settings === void 0 ? void 0 : settings.order, value: value, disabled: disabled, required: (_d = this.field) === null || _d === void 0 ? void 0 : _d.required, ref: el => (this.el = el) }), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: TemplateStore.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onSettingsChanged: e => {
43
+ return (h(Host, { class: { required: (_c = this.field) === null || _c === void 0 ? void 0 : _c.required, disabled, done: this.done }, style: { backgroundColor } }, h("input", { type: "text", placeholder: settings === null || settings === void 0 ? void 0 : settings.placeholder, tabIndex: settings === null || settings === void 0 ? void 0 : settings.order, value: value, disabled: disabled, required: (_d = this.field) === null || _d === void 0 ? void 0 : _d.required, ref: el => (this.el = el) }), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: TemplateStore.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
44
+ var _a;
45
+ (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
46
+ return this.hideSettingsPanel();
47
+ }, onSettingsChanged: e => {
44
48
  var _a;
45
49
  (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit(e.detail);
46
50
  return this.hideSettingsPanel();
@@ -46,7 +46,11 @@ export class VerdocsFieldTimestamp {
46
46
  return (h(Host, { class: { required: (_c = this.field) === null || _c === void 0 ? void 0 : _c.required, disabled }, style: { backgroundColor } }, h("input", { type: "text", placeholder: settings === null || settings === void 0 ? void 0 : settings.placeholder, tabIndex: settings === null || settings === void 0 ? void 0 : settings.order,
47
47
  // TODO: It would really make more sense to show the date and time but the default width of 64px for this field
48
48
  // is encoded in a ton of existing entries in the database and is hard to change.
49
- value: formatted, disabled: true, ref: el => (this.el = el) }), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: TemplateStore.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onSettingsChanged: e => {
49
+ value: formatted, disabled: true, ref: el => (this.el = el) }), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: TemplateStore.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
50
+ var _a;
51
+ (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
52
+ return this.hideSettingsPanel();
53
+ }, onSettingsChanged: e => {
50
54
  var _a;
51
55
  (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit(e.detail);
52
56
  return this.hideSettingsPanel();
@@ -28,6 +28,9 @@ export class VerdocsTemplateAttachments {
28
28
  }
29
29
  }
30
30
  render() {
31
+ if (!this.endpoint.session) {
32
+ return (h(Host, null, h("verdocs-component-error", { message: "You must be authenticated to use this module." })));
33
+ }
31
34
  if (this.loading) {
32
35
  return (h(Host, { class: "loading" }, h("verdocs-loader", null)));
33
36
  }
@@ -14,12 +14,12 @@ const iconDatepicker = '<svg xmlns="http://www.w3.org/2000/svg" height="24" widt
14
14
  const iconSignature = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path d="m9.225 21.225 4.65-4.65h8.45v4.65Zm-5.35-2.2H5.05l8.5-8.5-1.175-1.175-8.5 8.5Zm14.25-9.95L13.8 4.8l1.325-1.325q.625-.65 1.525-.663.9-.012 1.6.663l1.225 1.175q.675.675.663 1.562-.013.888-.663 1.513ZM16.7 10.55 6 21.225H1.675V16.9L12.35 6.225Zm-3.725-.625-.6-.575 1.175 1.175Z"/></svg>';
15
15
  const iconInitial = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path d="M6.225 20.775V7h-5V3.225H15V7h-5v13.775Zm9.775 0v-8h-3V9h9.775v3.775h-3v8Z"/></svg>';
16
16
  const menuOptions = [
17
- { id: 'attachment', tooltip: 'Attachment', icon: 'A' },
17
+ // {id: 'attachment', tooltip: 'Attachment', icon: 'A'},
18
18
  { id: 'checkbox', tooltip: 'Check Box', icon: iconCheck },
19
19
  { id: 'date', tooltip: 'Date', icon: iconDatepicker },
20
20
  { id: 'dropdown', tooltip: 'Dropdown', icon: 'O' },
21
21
  { id: 'initial', tooltip: 'Initials', icon: iconInitial },
22
- { id: 'payment', tooltip: 'Payment', icon: 'P' },
22
+ // {id: 'payment', tooltip: 'Payment', icon: 'P'},
23
23
  { id: 'radio', tooltip: 'Radio Button', icon: iconRadio },
24
24
  { id: 'signature', tooltip: 'Signature', icon: iconSignature },
25
25
  { id: 'textarea', tooltip: 'Text Area', icon: iconMultiline },
@@ -38,6 +38,7 @@ export class VerdocsTemplateFields {
38
38
  this.templateId = null;
39
39
  this.placing = null;
40
40
  this.selectedRoleName = '';
41
+ this.rerender = 1;
41
42
  }
42
43
  async componentWillLoad() {
43
44
  var _a, _b, _c, _d, _e, _f;
@@ -72,11 +73,16 @@ export class VerdocsTemplateFields {
72
73
  }
73
74
  async handleFieldChange(field, e, optionId) {
74
75
  console.log('[FIELDS] handleFieldChange', field, e, optionId);
76
+ this.rerender++;
75
77
  }
76
78
  attachFieldAttributes(pageInfo, field, roleIndex, el) {
77
79
  el.addEventListener('input', e => this.handleFieldChange(field, e));
78
80
  el.addEventListener('settingsChanged', () => {
81
+ var _a;
82
+ console.log('settings changed', this, field);
79
83
  el.setAttribute('roleindex', getRoleIndex(TemplateStore.roleNames, field.role_name));
84
+ this.rerender++;
85
+ (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: TemplateStore.template, event: 'updated-field' });
80
86
  });
81
87
  el.setAttribute('roleindex', roleIndex);
82
88
  el.setAttribute('pageNumber', pageInfo.pageNumber);
@@ -160,6 +166,7 @@ export class VerdocsTemplateFields {
160
166
  return { x, y };
161
167
  }
162
168
  async handleClickPage(e, page) {
169
+ var _a;
163
170
  if (this.placing) {
164
171
  const pageNumber = page.sequence;
165
172
  const clickedX = e.offsetX;
@@ -218,11 +225,11 @@ export class VerdocsTemplateFields {
218
225
  console.log('Saved field', saved);
219
226
  TemplateStore.fields.push(saved);
220
227
  this.placing = null;
228
+ (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: TemplateStore.template, event: 'added-field' });
221
229
  this.handlePageRendered({ detail: this.cachedPageInfo[pageNumber] });
222
230
  }
223
231
  }
224
232
  render() {
225
- console.log('rendering', TemplateStore.updateCount);
226
233
  if (!this.endpoint.session) {
227
234
  return (h(Host, null, h("verdocs-component-error", { message: "You must be authenticated to use this module." })));
228
235
  }
@@ -232,7 +239,7 @@ export class VerdocsTemplateFields {
232
239
  }
233
240
  const pages = [...TemplateStore.template.pages];
234
241
  pages.sort((a, b) => a.sequence - b.sequence);
235
- return (h(Host, { class: this.placing ? { [`placing-${this.placing}`]: true } : {}, "data-updated": TemplateStore.updateCount, onSubmit: () => {
242
+ return (h(Host, { class: this.placing ? { [`placing-${this.placing}`]: true } : {}, "data-r": this.rerender, onSubmit: () => {
236
243
  console.log('onSubmit');
237
244
  } }, h("div", { class: "pages" }, pages.map(page => {
238
245
  // console.log('rendering page', page);
@@ -301,7 +308,8 @@ export class VerdocsTemplateFields {
301
308
  static get states() {
302
309
  return {
303
310
  "placing": {},
304
- "selectedRoleName": {}
311
+ "selectedRoleName": {},
312
+ "rerender": {}
305
313
  };
306
314
  }
307
315
  static get events() {
@@ -360,6 +368,30 @@ export class VerdocsTemplateFields {
360
368
  }
361
369
  }
362
370
  }
371
+ }, {
372
+ "method": "templateUpdated",
373
+ "name": "templateUpdated",
374
+ "bubbles": true,
375
+ "cancelable": true,
376
+ "composed": true,
377
+ "docs": {
378
+ "tags": [],
379
+ "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."
380
+ },
381
+ "complexType": {
382
+ "original": "{endpoint: VerdocsEndpoint; template: ITemplate; event: string}",
383
+ "resolved": "{ endpoint: VerdocsEndpoint; template: ITemplate; event: string; }",
384
+ "references": {
385
+ "VerdocsEndpoint": {
386
+ "location": "import",
387
+ "path": "@verdocs/js-sdk"
388
+ },
389
+ "ITemplate": {
390
+ "location": "import",
391
+ "path": "@verdocs/js-sdk/Templates/Types"
392
+ }
393
+ }
394
+ }
363
395
  }];
364
396
  }
365
397
  }
@@ -46,13 +46,12 @@ export class VerdocsTemplateName {
46
46
  (_a = this.close) === null || _a === void 0 ? void 0 : _a.emit();
47
47
  }
48
48
  render() {
49
+ if (!this.endpoint.session) {
50
+ return (h(Host, null, h("verdocs-component-error", { message: "You must be authenticated to use this module." })));
51
+ }
49
52
  if (this.loading) {
50
53
  return (h(Host, { class: "loading" }, h("verdocs-loader", null)));
51
54
  }
52
- // This is meant to be a companion for larger visual experiences so we just go blank on errors for now.
53
- if (!this.endpoint.session || !TemplateStore.template) {
54
- return h(Host, { class: "empty" });
55
- }
56
55
  return (h(Host, null, h("form", { onSubmit: e => e.preventDefault(), onClick: e => e.stopPropagation(), autocomplete: "off" }, h("label", { htmlFor: "verdocs-template-name" }, "Template Name"), h("verdocs-text-input", { id: "verdocs-template-name", value: this.name, autocomplete: "off", placeholder: "Template Name...", onInput: (e) => {
57
56
  this.name = e.target.value;
58
57
  this.dirty = this.name !== TemplateStore.template.name;
@@ -31,6 +31,7 @@ verdocs-template-recipients > form .left-line {
31
31
  verdocs-template-recipients > form .row {
32
32
  display: flex;
33
33
  column-gap: 0;
34
+ min-height: 35px;
34
35
  margin-left: 40px;
35
36
  position: relative;
36
37
  flex-direction: row;
@@ -160,6 +161,21 @@ verdocs-template-recipients .add-role svg {
160
161
  width: 32px;
161
162
  height: 32px;
162
163
  }
164
+ verdocs-template-recipients .add-step {
165
+ margin: 0;
166
+ padding: 0;
167
+ border: none;
168
+ opacity: 0.5;
169
+ cursor: pointer;
170
+ background: none;
171
+ }
172
+ verdocs-template-recipients .add-step:hover {
173
+ opacity: 1;
174
+ }
175
+ verdocs-template-recipients .add-step svg {
176
+ width: 32px;
177
+ height: 32px;
178
+ }
163
179
  verdocs-template-recipients.dragging .add-role {
164
180
  display: none;
165
181
  }
@@ -185,17 +185,47 @@ export class VerdocsTemplateRecipients {
185
185
  // Now re-extract them to get our final result e.g. [1, 2, 3]
186
186
  this.extractSequenceNumbers();
187
187
  }
188
- handleAddRole(e, sequence) {
189
- e.stopPropagation();
190
- // We don't need to look for a unique order number because we're already working with a sorted/renumbered set by now.
191
- const order = TemplateStore.template.roles.filter(role => role.sequence === sequence).length + 1;
192
- // We do need to look for name conflicts because they're UGC and can be anything, regardless of order.
188
+ // Look for name conflicts, because they're UGC and can be anything, regardless of order.
189
+ getNextRecipientName() {
193
190
  let name = '';
194
191
  let nextNumber = TemplateStore.template.roles.length;
195
192
  do {
196
193
  nextNumber++;
197
194
  name = `Recipient ${nextNumber}`;
198
195
  } while (!name || TemplateStore.template.roles.some(role => role.name === name));
196
+ return name;
197
+ }
198
+ handleAddRole(e, sequence) {
199
+ e.stopPropagation();
200
+ // We don't need to look for a unique order number because we're already working with a sorted/renumbered set by now.
201
+ const order = TemplateStore.template.roles.filter(role => role.sequence === sequence).length + 1;
202
+ const name = this.getNextRecipientName();
203
+ console.log('Will create', name, sequence, order);
204
+ createRole(this.endpoint, this.templateId, {
205
+ template_id: this.templateId,
206
+ name,
207
+ full_name: '',
208
+ email: '',
209
+ phone: '',
210
+ sequence,
211
+ order,
212
+ type: 'signer',
213
+ delegator: false,
214
+ })
215
+ .then(r => {
216
+ console.log('Created role', r);
217
+ TemplateStore.template.roles.push(r);
218
+ this.renumberTemplateRoles();
219
+ this.forceRerender++;
220
+ })
221
+ .catch(e => {
222
+ console.log('Error creating role', e);
223
+ });
224
+ }
225
+ handleAddStep(e, sequence) {
226
+ e.stopPropagation();
227
+ const order = 1;
228
+ const name = this.getNextRecipientName();
199
229
  console.log('Will create', name, sequence, order);
200
230
  createRole(this.endpoint, this.templateId, {
201
231
  template_id: this.templateId,
@@ -219,12 +249,16 @@ export class VerdocsTemplateRecipients {
219
249
  });
220
250
  }
221
251
  render() {
222
- const roleNames = TemplateStore.template.roles.map(role => role.name);
252
+ var _a;
253
+ if (!this.endpoint.session) {
254
+ return (h(Host, null, h("verdocs-component-error", { message: "You must be authenticated to use this module." })));
255
+ }
256
+ const roleNames = (((_a = TemplateStore.template) === null || _a === void 0 ? void 0 : _a.roles) || []).map(role => role.name);
223
257
  return (h(Host, null, h("form", { onSubmit: e => e.preventDefault(), onClick: e => e.stopPropagation(), autocomplete: "off", "data-r": this.forceRerender }, h("h5", null, "Roles"), h("div", { class: "participants" }, h("div", { class: "left-line" }), h("div", { class: "row" }, h("div", { class: "icon", innerHTML: startIcon }), h("div", { class: "row-recipients" }, h("div", { class: "sender" }, h("span", { class: "label" }, "Sender:"), " ", senderLabels[TemplateStore.template.sender], ' ', h("div", { class: "settings-button", innerHTML: settingsIcon, onClick: () => (this.showingSenderDialog = true), "aria-role": "button" })))), h("div", { class: "row add-sequence", "data-sequence": 0 }, h("div", { class: "icon", innerHTML: plusIcon }), h("div", { class: "row-recipients" }, h("div", { class: "dropzone", "data-sequence": 0, "data-order": 1 }, "Add Step"))), this.sequences.map(sequence => (h(Fragment, null, h("div", { class: "row" }, h("div", { class: "icon", innerHTML: stepIcon }), h("div", { class: "row-recipients" }, h("div", { class: "dropzone", "data-order": 0.5, "data-sequence": sequence }), TemplateStore.template.roles
224
258
  .filter(role => role.sequence === sequence)
225
259
  .map(role => {
226
260
  return (h(Fragment, null, h("div", { class: "recipient", style: { backgroundColor: getRGBA(getRoleIndex(roleNames, role.name)) }, "data-rolename": role.name }, h("span", { class: "type-icon", innerHTML: role.type === 'signer' ? iconSigner : role.type === 'cc' ? iconCC : iconApprover }), role.name, " ", h("div", { class: "settings-button", innerHTML: settingsIcon, onClick: () => (this.showingRoleDialog = role.name), "aria-role": "button" })), h("div", { class: "dropzone", "data-order": role.order + 0.5, "data-sequence": sequence })));
227
- }), h("button", { class: "add-role", innerHTML: plusIcon, onClick: e => this.handleAddRole(e, sequence) }))), h("div", { class: "row add-sequence", "data-sequence": sequence }, h("div", { class: "row-recipients" }, h("div", { class: "icon", innerHTML: plusIcon }), h("div", { class: "dropzone", "data-sequence": sequence + 1, "data-order": 1 }, "Add Step")))))), this.sequences.length < 1 && (h(Fragment, null, h("div", { class: "row" }, h("div", { class: "icon", innerHTML: stepIcon }), h("div", { class: "row-recipients" }, h("button", { class: "add-role", innerHTML: plusIcon, onClick: e => this.handleAddRole(e, 1) }))))), h("div", { class: "row" }, h("div", { class: "icon", innerHTML: doneIcon }), h("div", { class: "row-recipients" }, h("div", { class: "complete" }, "Document Complete")))), roleNames.length < 1 && (h("div", { class: "empty" }, "You must add at least one Role before proceeding.", h("br", null), " Click the ", h("span", { innerHTML: plusIcon }), " Add button above to get started.")), h("div", { class: "buttons" }, h("div", { class: "flex-fill" }), h("verdocs-button", { variant: "outline", label: "Cancel", size: "small", onClick: e => this.handleCancel(e) }), h("verdocs-button", { label: "OK", size: "small", onClick: e => this.handleSubmit(e), disabled: roleNames.length < 1 }))), this.showingRoleDialog && (h("verdocs-template-role-properties", { endpoint: this.endpoint, templateId: this.templateId, roleName: this.showingRoleDialog, onClose: () => {
261
+ }), h("button", { class: "add-role", innerHTML: plusIcon, onClick: e => this.handleAddRole(e, sequence) }))), h("div", { class: "row add-sequence", "data-sequence": sequence }, h("div", { class: "row-recipients" }, h("div", { class: "icon", innerHTML: plusIcon }), h("div", { class: "dropzone", "data-sequence": sequence + 1, "data-order": 1 }, "Add Step")))))), h("div", { class: "row", "data-sequence": this.sequences.length + 1 }, h("div", { class: "row-recipients" }, h("div", { class: "icon", innerHTML: plusIcon }), h("button", { class: "add-step", innerHTML: plusIcon, onClick: e => this.handleAddStep(e, this.sequences.length + 1) }))), this.sequences.length < 1 && (h(Fragment, null, h("div", { class: "row" }, h("div", { class: "icon", innerHTML: stepIcon }), h("div", { class: "row-recipients" }, h("button", { class: "add-role", innerHTML: plusIcon, onClick: e => this.handleAddRole(e, 1) }))))), h("div", { class: "row" }, h("div", { class: "icon", innerHTML: doneIcon }), h("div", { class: "row-recipients" }, h("div", { class: "complete" }, "Document Complete")))), roleNames.length < 1 && (h("div", { class: "empty" }, "You must add at least one Role before proceeding.", h("br", null), " Click the ", h("span", { innerHTML: plusIcon }), " Add button above to get started.")), h("div", { class: "buttons" }, h("div", { class: "flex-fill" }), h("verdocs-button", { variant: "outline", label: "Cancel", size: "small", onClick: e => this.handleCancel(e) }), h("verdocs-button", { label: "OK", size: "small", onClick: e => this.handleSubmit(e), disabled: roleNames.length < 1 }))), this.showingRoleDialog && (h("verdocs-template-role-properties", { endpoint: this.endpoint, templateId: this.templateId, roleName: this.showingRoleDialog, onClose: () => {
228
262
  this.showingRoleDialog = null;
229
263
  this.forceRerender++;
230
264
  }, onDelete: e => {
@@ -347,6 +381,30 @@ export class VerdocsTemplateRecipients {
347
381
  }
348
382
  }
349
383
  }
384
+ }, {
385
+ "method": "templateUpdated",
386
+ "name": "templateUpdated",
387
+ "bubbles": true,
388
+ "cancelable": true,
389
+ "composed": true,
390
+ "docs": {
391
+ "tags": [],
392
+ "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."
393
+ },
394
+ "complexType": {
395
+ "original": "{endpoint: VerdocsEndpoint; template: ITemplate; event: string}",
396
+ "resolved": "{ endpoint: VerdocsEndpoint; template: ITemplate; event: string; }",
397
+ "references": {
398
+ "VerdocsEndpoint": {
399
+ "location": "import",
400
+ "path": "@verdocs/js-sdk"
401
+ },
402
+ "ITemplate": {
403
+ "location": "import",
404
+ "path": "@verdocs/js-sdk/Templates/Types"
405
+ }
406
+ }
407
+ }
350
408
  }];
351
409
  }
352
410
  static get elementRef() { return "el"; }
@@ -7,6 +7,9 @@ const { state, onChange } = createStore({
7
7
  loadProgress: 0,
8
8
  loading: true,
9
9
  error: '',
10
+ // This can be used as a data field on components that need to force re-rendering when the underlying data has changed. Stencil stores
11
+ // are handy but not very sophisticated. They don't re-render on "deep" changes.
12
+ updateCount: 1,
10
13
  roleNames: [],
11
14
  dirty: false,
12
15
  });
@@ -1,5 +1,7 @@
1
- import { rescale } from '@verdocs/js-sdk/Utils/Fields';
1
+ import jszip from 'jszip';
2
+ import { format } from 'date-fns';
2
3
  import { Envelopes } from '@verdocs/js-sdk/Envelopes';
4
+ import { rescale } from '@verdocs/js-sdk/Utils/Fields';
3
5
  import { downloadBlob } from '@verdocs/js-sdk/Utils/Files';
4
6
  export const defaultWidth = (type) => {
5
7
  // checkbox was a legacy field type
@@ -235,11 +237,50 @@ export const updateCssTransform = (el, key, value) => {
235
237
  `${key}(${value})`,
236
238
  ].join(' ');
237
239
  };
238
- export const savePDF = async (endpoint, envelope, documentId) => {
239
- const fileName = `${envelope.name} - ${envelope.updated_at.split('T')[0]}.pdf`;
240
+ export const formatLocalDate = (date) => format(date, 'P').replace(/\//g, '-');
241
+ const formatEnvelopeDate = (envelope) => formatLocalDate(new Date(envelope.updated_at));
242
+ export const saveAttachment = async (endpoint, envelope, documentId) => {
243
+ // e.g. "Colorado-Motor-Vehicle-Bill-of-Sale.pdf"
244
+ const fileName = `${envelope.name} - ${formatEnvelopeDate(envelope)}.pdf`;
240
245
  const data = await Envelopes.getEnvelopeFile(endpoint, envelope.id, documentId);
241
246
  downloadBlob(data, fileName);
242
247
  };
248
+ export const saveCertificate = async (endpoint, envelope, documentId) => {
249
+ // e.g "Colorado Motor Vehicle Bill of Sale_certificate.pdf"
250
+ const fileName = `${envelope.name} - ${formatEnvelopeDate(envelope)}_certificate.pdf`;
251
+ const data = await Envelopes.getEnvelopeFile(endpoint, envelope.id, documentId);
252
+ downloadBlob(data, fileName);
253
+ };
254
+ export const saveEnvelopesAsZip = async (endpoint, envelopes) => {
255
+ const zip = new jszip();
256
+ for await (let envelope of envelopes) {
257
+ // e.g. "98a13bc0-8861-4408-86fc-8f9af51e867a-TheSwanBrothers Phase 1 Agreement - 11-02-22"
258
+ const subFolder = envelopes.length > 0 ? zip.folder(`${envelope.id} - ${envelope.name} - ${formatEnvelopeDate(envelope)}`) : null;
259
+ for await (let document of envelope.documents) {
260
+ // TODO: When attachments are added to envelopes, add a field that reflects the full, original filename (including extension)
261
+ const documentFileName = document.type === 'certificate' ? `${envelope.name}_certificate.pdf` : `${document.name}.pdf`;
262
+ const data = await Envelopes.getEnvelopeFile(endpoint, envelope.id, document.id);
263
+ if (subFolder) {
264
+ subFolder.file(documentFileName, data, { compression: 'DEFLATE' });
265
+ }
266
+ else {
267
+ zip.file(documentFileName, data, { compression: 'DEFLATE' });
268
+ }
269
+ const attachFields = envelope.fields.filter(field => field.type === 'attachment' && field.settings['name']);
270
+ if (attachFields.length > 0) {
271
+ const attachmentsFolder = subFolder ? subFolder.folder('attachments') : zip.folder('attachments');
272
+ for await (let attachField of attachFields) {
273
+ const attachData = await Envelopes.getFieldAttachment(endpoint, envelope.id, attachField.name);
274
+ attachmentsFolder.file(attachField.settings.name, attachData, { compression: 'DEFLATE' });
275
+ }
276
+ }
277
+ }
278
+ }
279
+ // e.g. "Colorado Motor Vehicle Bill of Sale - 01-18-23.zip" or "Verdocs-Envelopes-02-13-23.zip"
280
+ const zipFileName = envelopes.length === 1 ? `${envelopes[0].name} - ${formatEnvelopeDate(envelopes[0])}.zip` : `Verdocs-Envelopes-${formatLocalDate(new Date())}`;
281
+ const zipped = await zip.generateAsync({ type: 'blob', compression: 'DEFLATE' });
282
+ downloadBlob(zipped, zipFileName);
283
+ };
243
284
  /**
244
285
  * Throttle a given function by a delay value. Useful for things like resizeObserver.
245
286
  */
@@ -1,4 +1,4 @@
1
- import { d as getEnvelope } from './Envelopes2.js';
1
+ import { e as getEnvelope } from './Envelopes2.js';
2
2
  import { c as createStore } from './index3.js';
3
3
  import { g as getTemplate } from './Templates2.js';
4
4
 
@@ -9,6 +9,9 @@ const { state, onChange } = createStore({
9
9
  loadProgress: 0,
10
10
  loading: true,
11
11
  error: '',
12
+ // This can be used as a data field on components that need to force re-rendering when the underlying data has changed. Stencil stores
13
+ // are handy but not very sophisticated. They don't re-render on "deep" changes.
14
+ updateCount: 1,
12
15
  roleNames: [],
13
16
  dirty: false,
14
17
  });
@@ -107,5 +107,15 @@ var updateEnvelopeFieldInitials = function (endpoint, envelopeId, fieldName, ini
107
107
  .then(function (r) { return r.data; })];
108
108
  });
109
109
  }); };
110
+ /**
111
+ * Get the attached file for an attachment field (if any)
112
+ */
113
+ var getFieldAttachment = function (endpoint, envelopeId, fieldName) { return __awaiter(void 0, void 0, void 0, function () {
114
+ return __generator(this, function (_a) {
115
+ return [2 /*return*/, endpoint.api //
116
+ .get("/envelopes/".concat(envelopeId, "/fields/").concat(fieldName, "/document"), { responseType: 'blob' })
117
+ .then(function (r) { return r.data; })];
118
+ });
119
+ }); };
110
120
 
111
- export { updateEnvelopeFieldSignature as a, updateEnvelopeFieldInitials as b, getEnvelopeFile as c, getEnvelope as d, getSigningSession as g, updateEnvelopeField as u };
121
+ export { updateEnvelopeFieldSignature as a, updateEnvelopeFieldInitials as b, getEnvelopeFile as c, getFieldAttachment as d, getEnvelope as e, getSigningSession as g, updateEnvelopeField as u };
@@ -1,20 +1,4 @@
1
- function getDefaultExportFromCjs (x) {
2
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
3
- }
4
-
5
- function createCommonjsModule(fn, basedir, module) {
6
- return module = {
7
- path: basedir,
8
- exports: {},
9
- require: function (path, base) {
10
- return commonjsRequire();
11
- }
12
- }, fn(module, module.exports), module.exports;
13
- }
14
-
15
- function commonjsRequire () {
16
- throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');
17
- }
1
+ import { i as getDefaultExportFromCjs, j as createCommonjsModule } from './utils.js';
18
2
 
19
3
  var interact_min = createCommonjsModule(function (module, exports) {
20
4
  /* interact.js 1.10.17 | https://interactjs.io/license */