@verdocs/web-sdk 1.14.8 → 1.14.10

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 (223) hide show
  1. package/dist/cjs/EnvelopeStore-a4231cf7.js +83 -0
  2. package/dist/cjs/{Recipients-2b21fdea.js → Recipients-f3d6cf10.js} +9 -0
  3. package/dist/cjs/{index-6528b430.js → index-7c19ba1d.js} +63 -219
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/{utils-f4efefe3.js → utils-618c13f1.js} +1 -1
  6. package/dist/cjs/verdocs-auth.cjs.entry.js +5 -10
  7. package/dist/cjs/verdocs-checkbox_4.cjs.entry.js +1 -1
  8. package/dist/cjs/verdocs-dropdown_2.cjs.entry.js +2 -2
  9. package/dist/cjs/verdocs-envelope-recipient-summary.cjs.entry.js +15 -91
  10. package/dist/cjs/verdocs-envelope-sidebar.cjs.entry.js +101 -45
  11. package/dist/cjs/verdocs-field-checkbox.cjs.entry.js +2 -2
  12. package/dist/cjs/verdocs-field-date.cjs.entry.js +2 -2
  13. package/dist/cjs/verdocs-field-dropdown.cjs.entry.js +2 -2
  14. package/dist/cjs/verdocs-field-initial.cjs.entry.js +2 -2
  15. package/dist/cjs/verdocs-field-payment.cjs.entry.js +2 -2
  16. package/dist/cjs/verdocs-field-radio-button.cjs.entry.js +2 -2
  17. package/dist/cjs/verdocs-field-signature.cjs.entry.js +2 -2
  18. package/dist/cjs/verdocs-field-textarea.cjs.entry.js +58 -6
  19. package/dist/cjs/verdocs-field-textbox.cjs.entry.js +28 -21
  20. package/dist/cjs/verdocs-field-timestamp.cjs.entry.js +2 -2
  21. package/dist/cjs/verdocs-organization-card.cjs.entry.js +1 -1
  22. package/dist/cjs/verdocs-preview.cjs.entry.js +2 -2
  23. package/dist/cjs/verdocs-send.cjs.entry.js +2 -2
  24. package/dist/cjs/verdocs-sign.cjs.entry.js +3 -3
  25. package/dist/cjs/verdocs-status-indicator.cjs.entry.js +1 -1
  26. package/dist/cjs/verdocs-template-document-page_2.cjs.entry.js +2 -2
  27. package/dist/cjs/verdocs-template-fields_4.cjs.entry.js +2 -2
  28. package/dist/cjs/verdocs-template-reminders.cjs.entry.js +47 -17
  29. package/dist/cjs/verdocs-view.cjs.entry.js +2 -2
  30. package/dist/cjs/verdocs-web-sdk.cjs.js +1 -1
  31. package/dist/collection/collection-manifest.json +0 -1
  32. package/dist/collection/components/controls/verdocs-checkbox/verdocs-checkbox.css +3 -4
  33. package/dist/collection/components/embeds/verdocs-auth/verdocs-auth.js +6 -12
  34. package/dist/collection/components/envelopes/verdocs-envelope-sidebar/verdocs-envelope-sidebar.css +8 -0
  35. package/dist/collection/components/envelopes/verdocs-envelope-sidebar/verdocs-envelope-sidebar.js +101 -48
  36. package/dist/collection/components/envelopes/verdocs-envelope-sidebar/verdocs-envelope-sidebar.stories.js +1 -1
  37. package/dist/collection/components/envelopes/verdocs-status-indicator/verdocs-status-indicator.css +2 -3
  38. package/dist/collection/components/fields/verdocs-field-textarea/verdocs-field-textarea.css +13 -8
  39. package/dist/collection/components/fields/verdocs-field-textarea/verdocs-field-textarea.js +111 -2
  40. package/dist/collection/components/fields/verdocs-field-textbox/verdocs-field-textbox.js +62 -19
  41. package/dist/collection/components/templates/verdocs-template-fields/verdocs-template-fields.stories.js +1 -1
  42. package/dist/collection/components/templates/verdocs-template-reminders/verdocs-template-reminders.js +37 -17
  43. package/dist/collection/components/templates/verdocs-template-reminders/verdocs-template-reminders.stories.js +1 -1
  44. package/dist/components/Envelopes.js +1 -1
  45. package/dist/{esm/Recipients-198b2531.js → components/Recipients.js} +9 -1
  46. package/dist/components/Toast.js +1 -74
  47. package/dist/components/index.d.ts +0 -1
  48. package/dist/components/index.js +0 -1
  49. package/dist/components/index2.js +63 -219
  50. package/dist/components/verdocs-auth.js +10 -22
  51. package/dist/components/verdocs-checkbox2.js +1 -1
  52. package/dist/components/verdocs-envelope-document-page2.js +1 -1
  53. package/dist/components/verdocs-envelope-recipient-summary2.js +4 -3
  54. package/dist/components/verdocs-envelope-sidebar.js +112 -54
  55. package/dist/components/verdocs-field-textarea.js +59 -3
  56. package/dist/components/verdocs-field-textbox.js +29 -20
  57. package/dist/components/verdocs-sign.js +2 -1
  58. package/dist/components/verdocs-status-indicator.js +1 -1
  59. package/dist/components/verdocs-template-reminders.js +47 -17
  60. package/dist/components/verdocs-view2.js +1 -1
  61. package/dist/custom-elements.json +16 -13
  62. package/dist/docs.json +96 -129
  63. package/dist/esm/EnvelopeStore-28f5d8f5.js +81 -0
  64. package/dist/esm/{Envelopes-c3d471e5.js → Envelopes-105a4a8f.js} +1 -1
  65. package/dist/esm/Recipients-4ec2138c.js +82 -0
  66. package/dist/esm/{index-d264c496.js → index-914ed6f7.js} +63 -219
  67. package/dist/esm/loader.js +1 -1
  68. package/dist/esm/{utils-9da23ba1.js → utils-60683446.js} +2 -2
  69. package/dist/esm/verdocs-auth.entry.js +5 -10
  70. package/dist/esm/verdocs-checkbox_4.entry.js +1 -1
  71. package/dist/esm/verdocs-dropdown_2.entry.js +3 -3
  72. package/dist/esm/verdocs-envelope-recipient-summary.entry.js +4 -80
  73. package/dist/esm/verdocs-envelope-sidebar.entry.js +102 -46
  74. package/dist/esm/verdocs-field-checkbox.entry.js +3 -3
  75. package/dist/esm/verdocs-field-date.entry.js +3 -3
  76. package/dist/esm/verdocs-field-dropdown.entry.js +3 -3
  77. package/dist/esm/verdocs-field-initial.entry.js +3 -3
  78. package/dist/esm/verdocs-field-payment.entry.js +3 -3
  79. package/dist/esm/verdocs-field-radio-button.entry.js +3 -3
  80. package/dist/esm/verdocs-field-signature.entry.js +3 -3
  81. package/dist/esm/verdocs-field-textarea.entry.js +60 -8
  82. package/dist/esm/verdocs-field-textbox.entry.js +29 -22
  83. package/dist/esm/verdocs-field-timestamp.entry.js +3 -3
  84. package/dist/esm/verdocs-organization-card.entry.js +1 -1
  85. package/dist/esm/verdocs-preview.entry.js +3 -3
  86. package/dist/esm/verdocs-send.entry.js +3 -3
  87. package/dist/esm/verdocs-sign.entry.js +4 -4
  88. package/dist/esm/verdocs-status-indicator.entry.js +1 -1
  89. package/dist/esm/verdocs-template-document-page_2.entry.js +3 -3
  90. package/dist/esm/verdocs-template-fields_4.entry.js +3 -3
  91. package/dist/esm/verdocs-template-reminders.entry.js +47 -17
  92. package/dist/esm/verdocs-view.entry.js +3 -3
  93. package/dist/esm/verdocs-web-sdk.js +1 -1
  94. package/dist/esm-es5/EnvelopeStore-28f5d8f5.js +1 -0
  95. package/dist/esm-es5/{Envelopes-c3d471e5.js → Envelopes-105a4a8f.js} +1 -1
  96. package/dist/esm-es5/Recipients-4ec2138c.js +1 -0
  97. package/dist/esm-es5/index-914ed6f7.js +1 -0
  98. package/dist/esm-es5/loader.js +1 -1
  99. package/dist/esm-es5/{utils-9da23ba1.js → utils-60683446.js} +1 -1
  100. package/dist/esm-es5/verdocs-auth.entry.js +1 -1
  101. package/dist/esm-es5/verdocs-checkbox_4.entry.js +1 -1
  102. package/dist/esm-es5/verdocs-dropdown_2.entry.js +1 -1
  103. package/dist/esm-es5/verdocs-envelope-recipient-summary.entry.js +1 -1
  104. package/dist/esm-es5/verdocs-envelope-sidebar.entry.js +1 -1
  105. package/dist/esm-es5/verdocs-field-checkbox.entry.js +1 -1
  106. package/dist/esm-es5/verdocs-field-date.entry.js +1 -1
  107. package/dist/esm-es5/verdocs-field-dropdown.entry.js +1 -1
  108. package/dist/esm-es5/verdocs-field-initial.entry.js +1 -1
  109. package/dist/esm-es5/verdocs-field-payment.entry.js +1 -1
  110. package/dist/esm-es5/verdocs-field-radio-button.entry.js +1 -1
  111. package/dist/esm-es5/verdocs-field-signature.entry.js +1 -1
  112. package/dist/esm-es5/verdocs-field-textarea.entry.js +1 -1
  113. package/dist/esm-es5/verdocs-field-textbox.entry.js +1 -1
  114. package/dist/esm-es5/verdocs-field-timestamp.entry.js +1 -1
  115. package/dist/esm-es5/verdocs-organization-card.entry.js +1 -1
  116. package/dist/esm-es5/verdocs-preview.entry.js +1 -1
  117. package/dist/esm-es5/verdocs-send.entry.js +1 -1
  118. package/dist/esm-es5/verdocs-sign.entry.js +1 -1
  119. package/dist/esm-es5/verdocs-status-indicator.entry.js +1 -1
  120. package/dist/esm-es5/verdocs-template-document-page_2.entry.js +1 -1
  121. package/dist/esm-es5/verdocs-template-fields_4.entry.js +1 -1
  122. package/dist/esm-es5/verdocs-template-reminders.entry.js +1 -1
  123. package/dist/esm-es5/verdocs-view.entry.js +1 -1
  124. package/dist/esm-es5/verdocs-web-sdk.js +1 -1
  125. package/dist/types/components/embeds/verdocs-auth/verdocs-auth.d.ts +0 -2
  126. package/dist/types/components/envelopes/verdocs-envelope-sidebar/verdocs-envelope-sidebar.d.ts +7 -5
  127. package/dist/types/components/fields/verdocs-field-textarea/verdocs-field-textarea.d.ts +23 -3
  128. package/dist/types/components/fields/verdocs-field-textbox/verdocs-field-textbox.d.ts +10 -2
  129. package/dist/types/components.d.ts +40 -45
  130. package/dist/verdocs-web-sdk/{p-4a39c1a4.system.entry.js → p-02a70b8e.system.entry.js} +1 -1
  131. package/dist/verdocs-web-sdk/{p-eb3beb29.system.entry.js → p-095a3eba.system.entry.js} +1 -1
  132. package/dist/verdocs-web-sdk/{p-592e9e12.entry.js → p-0aee25b9.entry.js} +1 -1
  133. package/dist/verdocs-web-sdk/p-0e381c36.entry.js +1 -0
  134. package/dist/verdocs-web-sdk/p-13959c36.system.entry.js +1 -0
  135. package/dist/verdocs-web-sdk/p-18ee4fd5.js +1 -0
  136. package/dist/verdocs-web-sdk/{p-886461cd.system.entry.js → p-1a0cccea.system.entry.js} +1 -1
  137. package/dist/verdocs-web-sdk/p-1cf38cea.system.js +1 -1
  138. package/dist/verdocs-web-sdk/{p-2cf70fcd.entry.js → p-1f561c42.entry.js} +1 -1
  139. package/dist/verdocs-web-sdk/{p-be729608.system.entry.js → p-2a5b951c.system.entry.js} +1 -1
  140. package/dist/verdocs-web-sdk/{p-afe91637.system.entry.js → p-2c0d7838.system.entry.js} +1 -1
  141. package/dist/verdocs-web-sdk/{p-74dd0569.entry.js → p-33640d84.entry.js} +1 -1
  142. package/dist/verdocs-web-sdk/{p-7b215f9d.system.entry.js → p-380efff2.system.entry.js} +1 -1
  143. package/dist/verdocs-web-sdk/p-3cd894ff.js +1 -0
  144. package/dist/verdocs-web-sdk/{p-aebd2d02.system.entry.js → p-3fe24d0c.system.entry.js} +1 -1
  145. package/dist/verdocs-web-sdk/p-44ec0583.entry.js +1 -0
  146. package/dist/verdocs-web-sdk/{p-2631bdd9.entry.js → p-49b3ac56.entry.js} +1 -1
  147. package/dist/verdocs-web-sdk/p-4a3b037b.system.entry.js +1 -0
  148. package/dist/verdocs-web-sdk/{p-3601cc11.entry.js → p-59243dec.entry.js} +1 -1
  149. package/dist/verdocs-web-sdk/p-5cff98bd.entry.js +1 -0
  150. package/dist/verdocs-web-sdk/{p-1402ff01.system.entry.js → p-6a44fb56.system.entry.js} +1 -1
  151. package/dist/verdocs-web-sdk/{p-cfec9914.entry.js → p-717c9fe1.entry.js} +1 -1
  152. package/dist/verdocs-web-sdk/{p-e7da2f5c.entry.js → p-73ea1ea3.entry.js} +1 -1
  153. package/dist/verdocs-web-sdk/{p-b898c99b.system.entry.js → p-7850f739.system.entry.js} +1 -1
  154. package/dist/verdocs-web-sdk/p-7a23c2c8.system.js +1 -0
  155. package/dist/verdocs-web-sdk/{p-7baf2c02.system.entry.js → p-813c2fae.system.entry.js} +1 -1
  156. package/dist/verdocs-web-sdk/p-8aba7c0a.entry.js +1 -0
  157. package/dist/verdocs-web-sdk/{p-8e181e8c.entry.js → p-8b85f402.entry.js} +1 -1
  158. package/dist/verdocs-web-sdk/{p-00f8400e.system.entry.js → p-8c5ffa7b.system.entry.js} +1 -1
  159. package/dist/verdocs-web-sdk/{p-38ac3807.entry.js → p-8e386265.entry.js} +1 -1
  160. package/dist/verdocs-web-sdk/{p-973ebb54.system.js → p-8fd812f4.system.js} +1 -1
  161. package/dist/verdocs-web-sdk/p-94365585.entry.js +1 -0
  162. package/dist/verdocs-web-sdk/{p-b8d94f4c.system.entry.js → p-9c87f6f8.system.entry.js} +1 -1
  163. package/dist/verdocs-web-sdk/p-9d7fa51d.system.entry.js +1 -0
  164. package/dist/verdocs-web-sdk/p-a3c06b62.entry.js +1 -0
  165. package/dist/verdocs-web-sdk/{p-10fe89ab.entry.js → p-a4cbba4a.entry.js} +1 -1
  166. package/dist/verdocs-web-sdk/{p-ee53ee29.system.entry.js → p-afa1f20b.system.entry.js} +1 -1
  167. package/dist/verdocs-web-sdk/p-b18c293a.system.entry.js +1 -0
  168. package/dist/verdocs-web-sdk/p-b772cdb5.entry.js +1 -0
  169. package/dist/verdocs-web-sdk/{p-b00a49aa.entry.js → p-be6d3848.entry.js} +1 -1
  170. package/dist/verdocs-web-sdk/p-c220af42.js +1 -0
  171. package/dist/verdocs-web-sdk/{p-c0b1ace5.entry.js → p-c3ef7b4f.entry.js} +1 -1
  172. package/dist/verdocs-web-sdk/{p-10444734.system.entry.js → p-c59f1a0a.system.entry.js} +1 -1
  173. package/dist/verdocs-web-sdk/p-c841a530.system.entry.js +1 -0
  174. package/dist/verdocs-web-sdk/{p-9b73909f.js → p-cf790f4f.js} +1 -1
  175. package/dist/verdocs-web-sdk/{p-7dda316b.entry.js → p-d4c8f358.entry.js} +1 -1
  176. package/dist/verdocs-web-sdk/p-dc9c4361.system.js +1 -0
  177. package/dist/verdocs-web-sdk/{p-64897a63.entry.js → p-decf6a56.entry.js} +1 -1
  178. package/dist/verdocs-web-sdk/p-e2635788.system.entry.js +1 -0
  179. package/dist/verdocs-web-sdk/{p-f1940c85.system.entry.js → p-e727af9c.system.entry.js} +1 -1
  180. package/dist/verdocs-web-sdk/{p-d146b48e.entry.js → p-e72c075e.entry.js} +1 -1
  181. package/dist/verdocs-web-sdk/p-eaf0b189.system.js +1 -0
  182. package/dist/verdocs-web-sdk/p-ebca6188.entry.js +1 -0
  183. package/dist/verdocs-web-sdk/{p-ca2ed07e.system.entry.js → p-f0db17e6.system.entry.js} +1 -1
  184. package/dist/verdocs-web-sdk/p-f37f1ebc.system.entry.js +1 -0
  185. package/dist/verdocs-web-sdk/{p-73155c52.js → p-f9bea98a.js} +1 -1
  186. package/dist/verdocs-web-sdk/{p-da31f940.system.js → p-fa6b1145.system.js} +1 -1
  187. package/dist/verdocs-web-sdk/{p-05fc6555.system.entry.js → p-fcfd3193.system.entry.js} +1 -1
  188. package/dist/verdocs-web-sdk/{p-4dec0879.entry.js → p-fdda1309.entry.js} +1 -1
  189. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
  190. package/package.json +5 -5
  191. package/dist/cjs/verdocs-template-properties.cjs.entry.js +0 -75
  192. package/dist/collection/components/templates/verdocs-template-properties/verdocs-template-properties.css +0 -102
  193. package/dist/collection/components/templates/verdocs-template-properties/verdocs-template-properties.js +0 -177
  194. package/dist/collection/components/templates/verdocs-template-properties/verdocs-template-properties.stories.js +0 -13
  195. package/dist/components/verdocs-template-properties.d.ts +0 -11
  196. package/dist/components/verdocs-template-properties.js +0 -131
  197. package/dist/esm/verdocs-template-properties.entry.js +0 -71
  198. package/dist/esm-es5/Recipients-198b2531.js +0 -1
  199. package/dist/esm-es5/index-d264c496.js +0 -1
  200. package/dist/esm-es5/verdocs-template-properties.entry.js +0 -1
  201. package/dist/types/components/templates/verdocs-template-properties/verdocs-template-properties.d.ts +0 -45
  202. package/dist/types/components/templates/verdocs-template-properties/verdocs-template-properties.stories.d.ts +0 -8
  203. package/dist/verdocs-web-sdk/p-0e4fe8f9.entry.js +0 -1
  204. package/dist/verdocs-web-sdk/p-10ec9a96.entry.js +0 -1
  205. package/dist/verdocs-web-sdk/p-12e54f39.js +0 -1
  206. package/dist/verdocs-web-sdk/p-1d14ae9c.entry.js +0 -1
  207. package/dist/verdocs-web-sdk/p-23292d40.system.entry.js +0 -1
  208. package/dist/verdocs-web-sdk/p-381f2a5f.entry.js +0 -1
  209. package/dist/verdocs-web-sdk/p-4157aa74.entry.js +0 -1
  210. package/dist/verdocs-web-sdk/p-494d4276.system.js +0 -1
  211. package/dist/verdocs-web-sdk/p-4a9a3134.system.entry.js +0 -1
  212. package/dist/verdocs-web-sdk/p-4d1f3ddb.entry.js +0 -1
  213. package/dist/verdocs-web-sdk/p-51a3ea62.system.js +0 -1
  214. package/dist/verdocs-web-sdk/p-71976828.entry.js +0 -1
  215. package/dist/verdocs-web-sdk/p-73717726.system.entry.js +0 -1
  216. package/dist/verdocs-web-sdk/p-77cd3ac5.system.entry.js +0 -1
  217. package/dist/verdocs-web-sdk/p-7bd5422e.system.entry.js +0 -1
  218. package/dist/verdocs-web-sdk/p-9c87a748.system.entry.js +0 -1
  219. package/dist/verdocs-web-sdk/p-ab01f71e.js +0 -1
  220. package/dist/verdocs-web-sdk/p-b3a8928b.entry.js +0 -1
  221. package/dist/verdocs-web-sdk/p-b6016e12.entry.js +0 -1
  222. package/dist/verdocs-web-sdk/p-d2bcbce0.system.entry.js +0 -1
  223. package/dist/verdocs-web-sdk/p-e7058963.system.entry.js +0 -1
@@ -1,11 +1,13 @@
1
1
  import { format } from 'date-fns';
2
2
  import { VerdocsEndpoint } from '@verdocs/js-sdk';
3
- import { throttledGetEnvelope } from '@verdocs/js-sdk/Envelopes/Envelopes';
4
- import { h, Host } from '@stencil/core';
5
3
  import { userIsEnvelopeOwner } from '@verdocs/js-sdk/Envelopes/Permissions';
4
+ import { h, Host } from '@stencil/core';
5
+ import { getInPersonLink, resendInvitation } from '@verdocs/js-sdk/Envelopes/Recipients';
6
+ import { getEnvelopeStore } from '../../../utils/EnvelopeStore';
6
7
  import { FORMAT_TIMESTAMP } from '../../../utils/Types';
7
8
  import { VerdocsToast } from '../../../utils/Toast';
8
9
  import { SDKError } from '../../../utils/errors';
10
+ import { cancelEnvelope } from '@verdocs/js-sdk/Envelopes/Envelopes';
9
11
  const InformationCircle = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="#ffffff"><path stroke-linecap="round" stroke-linejoin="round" d="M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z" /></svg>`;
10
12
  const Users = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="#ffffff"><path stroke-linecap="round" stroke-linejoin="round" d="M15 19.128a9.38 9.38 0 002.625.372 9.337 9.337 0 004.121-.952 4.125 4.125 0 00-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 018.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0111.964-3.07M12 6.375a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zm8.25 2.25a2.625 2.625 0 11-5.25 0 2.625 2.625 0 015.25 0z" /></svg>`;
11
13
  const ClipboardDocuments = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="#ffffff"><path stroke-linecap="round" stroke-linejoin="round" d="M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 002.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 00-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75 2.25 2.25 0 00-.1-.664m-5.8 0A2.251 2.251 0 0113.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25zM6.75 12h.008v.008H6.75V12zm0 3h.008v.008H6.75V15zm0 3h.008v.008H6.75V18z" /></svg>`;
@@ -36,40 +38,42 @@ const ActivityIcons = {
36
38
  */
37
39
  export class VerdocsEnvelopeSidebar {
38
40
  constructor() {
41
+ this.store = null;
39
42
  this.endpoint = VerdocsEndpoint.getDefault();
40
43
  this.envelopeId = '';
41
- this.envelope = null;
42
- this.sortedRecipients = [];
43
- this.roleNames = [];
44
44
  this.activeTab = 1;
45
45
  this.panelOpen = false;
46
46
  this.showManageDialog = false;
47
+ this.showCancelDialog = false;
47
48
  this.loading = true;
48
49
  }
49
- componentWillLoad() {
50
- this.endpoint.loadSession();
51
- }
52
- // TODO: Handling signing vs preview-as-user cases
53
- // TODO: Handle anonymous case and failure to load due to not being logged in
54
- async componentWillRender() {
50
+ async componentWillLoad() {
55
51
  var _a, _b, _c;
56
- if (!this.envelopeId) {
57
- console.error(`[SIDEBAR] Missing required envelopeId`);
58
- return;
59
- }
60
52
  try {
61
- this.envelope = await throttledGetEnvelope(this.endpoint, this.envelopeId);
62
- this.sortedRecipients = [...this.envelope.recipients];
63
- this.sortedRecipients.sort((a, b) => {
64
- return a.sequence === b.sequence ? a.order - b.order : a.sequence - b.sequence;
65
- });
66
- this.roleNames = this.sortedRecipients.map(r => r.role_name);
53
+ this.endpoint.loadSession();
54
+ if (!this.envelopeId) {
55
+ console.log(`[SIDEBAR] Missing required envelope ID ${this.envelopeId}`);
56
+ return;
57
+ }
58
+ if (!this.endpoint.session) {
59
+ console.log('[SIDEBAR] Unable to start session, must be authenticated');
60
+ return;
61
+ }
62
+ this.store = await getEnvelopeStore(this.endpoint, this.envelopeId, true);
63
+ this.sortEnvelopeRecipients();
67
64
  this.loading = false;
68
65
  }
69
66
  catch (e) {
67
+ console.log('[SIDEBAR] Error loading envelope', e);
70
68
  (_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));
71
69
  }
72
70
  }
71
+ sortEnvelopeRecipients() {
72
+ var _a, _b;
73
+ (_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.recipients.sort((a, b) => {
74
+ return a.sequence === b.sequence ? a.order - b.order : a.sequence - b.sequence;
75
+ });
76
+ }
73
77
  setTab(tab) {
74
78
  var _a;
75
79
  this.panelOpen = tab !== this.activeTab || !this.panelOpen;
@@ -78,20 +82,38 @@ export class VerdocsEnvelopeSidebar {
78
82
  }
79
83
  // TODO: Refactor to a common library?
80
84
  canResendRecipient(recipient) {
85
+ var _a, _b;
81
86
  return (!['pending', 'declined', 'submitted', 'canceled'].includes(recipient.status) && //
82
- !['complete', 'declined', 'canceled'].includes(this.envelope.status));
87
+ !['complete', 'declined', 'canceled'].includes((_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.status));
83
88
  }
84
89
  canModifyRecipient(recipient) {
90
+ var _a, _b;
85
91
  return (!recipient.claimed && //
86
92
  !['declined', 'signed', 'submitted', 'canceled'].includes(recipient.status) &&
87
- !['complete', 'declined', 'canceled'].includes(this.envelope.status));
93
+ !['complete', 'declined', 'canceled'].includes((_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.status));
88
94
  }
89
95
  handleRecipientAction(recipient, id) {
90
- var _a;
96
+ var _a, _b;
91
97
  console.log('[SIDEBAR] Recipient action', id, recipient);
92
98
  switch (id) {
93
99
  case 'reminder':
94
- VerdocsToast('This feature will be enabled in a future release. Please try again later.', { style: 'info' });
100
+ resendInvitation(this.endpoint, this.envelopeId, recipient.role_name)
101
+ .then(() => {
102
+ VerdocsToast('Reminder Sent', { style: 'success' });
103
+ })
104
+ .catch(e => {
105
+ console.log('[SIDEBAR] Error resending invitation', e);
106
+ VerdocsToast('Error resending invitation: ' + e.message, { style: 'error' });
107
+ });
108
+ break;
109
+ case 'inperson':
110
+ getInPersonLink(this.endpoint, recipient.envelope_id, recipient.role_name)
111
+ .then(({ link }) => navigator.clipboard.writeText(link))
112
+ .then(() => VerdocsToast('Link copied to clipboard.', { style: 'success', duration: 2000 }))
113
+ .catch(e => {
114
+ console.log('[RECIPIENTS] Error getting link', e);
115
+ VerdocsToast('Unable to get link: ' + e.message, { style: 'error' });
116
+ });
95
117
  break;
96
118
  case 'modify':
97
119
  VerdocsToast('This feature will be enabled in a future release. Please try again later.', { style: 'info' });
@@ -100,21 +122,38 @@ export class VerdocsEnvelopeSidebar {
100
122
  VerdocsToast('This feature will be enabled in a future release. Please try again later.', { style: 'info' });
101
123
  break;
102
124
  }
103
- (_a = this.envelopeUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, envelope: this.envelope, event: id });
125
+ (_a = this.envelopeUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, envelope: (_b = this.store) === null || _b === void 0 ? void 0 : _b.state, event: id });
126
+ }
127
+ cancelEnvelope() {
128
+ cancelEnvelope(this.endpoint, this.envelopeId)
129
+ .then(async (r) => {
130
+ var _a, _b;
131
+ console.log('[SIDEBAR] Envelope canceled', r);
132
+ VerdocsToast('Envelope canceled', { style: 'success' });
133
+ this.store = await getEnvelopeStore(this.endpoint, this.envelopeId, true);
134
+ this.sortEnvelopeRecipients();
135
+ (_a = this.envelopeUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, envelope: (_b = this.store) === null || _b === void 0 ? void 0 : _b.state, event: 'canceled' });
136
+ })
137
+ .catch(e => {
138
+ console.log('[SIDEBAR] Error canceling envelope', e);
139
+ VerdocsToast('Error canceling envelope: ' + e.message, { style: 'error' });
140
+ });
104
141
  }
105
142
  prepareHistoryEntries() {
143
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
106
144
  const entries = [];
107
- const histories = this.envelope.histories || [];
108
- entries.push({ icon: 'pencil', message: 'Envelope created.', date: new Date(this.envelope.created_at) });
109
- if (this.envelope.status === 'complete') {
110
- entries.push({ icon: 'pencil', message: 'Envelope completed.', date: new Date(this.envelope.updated_at) });
145
+ const histories = ((_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.histories) || [];
146
+ entries.push({ icon: 'pencil', message: 'Envelope created.', date: new Date((_d = (_c = this.store) === null || _c === void 0 ? void 0 : _c.state) === null || _d === void 0 ? void 0 : _d.created_at) });
147
+ if (((_f = (_e = this.store) === null || _e === void 0 ? void 0 : _e.state) === null || _f === void 0 ? void 0 : _f.status) === 'complete') {
148
+ entries.push({ icon: 'pencil', message: 'Envelope completed.', date: new Date((_h = (_g = this.store) === null || _g === void 0 ? void 0 : _g.state) === null || _h === void 0 ? void 0 : _h.updated_at) });
111
149
  }
112
150
  const ownerCanceled = histories.some(history => history.event === 'owner:canceled');
113
- if (this.envelope.status === 'canceled' && !ownerCanceled) {
114
- entries.push({ icon: 'pencil', message: 'Envelope Cancelled.', date: new Date(this.envelope.canceled_at) });
151
+ if (((_k = (_j = this.store) === null || _j === void 0 ? void 0 : _j.state) === null || _k === void 0 ? void 0 : _k.status) === 'canceled' && !ownerCanceled) {
152
+ entries.push({ icon: 'pencil', message: 'Envelope Cancelled.', date: new Date((_m = (_l = this.store) === null || _l === void 0 ? void 0 : _l.state) === null || _m === void 0 ? void 0 : _m.canceled_at) });
115
153
  }
116
154
  histories.forEach(history => {
117
- const user = this.sortedRecipients.find(recipient => recipient.role_name === history.role_name);
155
+ var _a;
156
+ const user = (_a = this.store.state) === null || _a === void 0 ? void 0 : _a.recipients.find(recipient => recipient.role_name === history.role_name);
118
157
  const name = (user === null || user === void 0 ? void 0 : user.full_name) || '';
119
158
  switch (history.event.toLowerCase()) {
120
159
  case 'recipient:signed':
@@ -216,27 +255,43 @@ export class VerdocsEnvelopeSidebar {
216
255
  entries.sort((a, b) => b.date.getTime() - a.date.getTime());
217
256
  return entries;
218
257
  }
258
+ canModify(recipient) {
259
+ var _a, _b;
260
+ const invalidRecipientStatus = ['declined', 'signed', 'submitted', 'canceled'];
261
+ const invalidEnvelopeStatus = ['complete', 'declined', 'canceled'];
262
+ return recipient.claimed !== true && invalidRecipientStatus.indexOf(recipient.status) === -1 && invalidEnvelopeStatus.indexOf((_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.status) === -1;
263
+ }
219
264
  render() {
220
- var _a, _b, _c;
221
- if (!this.envelope || this.loading) {
265
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
266
+ if (!this.store.state) {
222
267
  return h(Host, null);
223
268
  }
224
269
  const session = this.endpoint.getSession();
225
- const isEnvelopeOwner = userIsEnvelopeOwner(session, this.envelope);
270
+ const isEnvelopeOwner = userIsEnvelopeOwner(session, this.store.state);
226
271
  const historyEntries = this.prepareHistoryEntries();
227
- return (h(Host, { class: this.panelOpen ? 'open' : '' }, h("div", { class: "side-buttons" }, h("button", { class: this.activeTab === 1 ? 'active' : '', onClick: () => this.setTab(1), innerHTML: InformationCircle }), h("button", { class: this.activeTab === 2 ? 'active' : '', onClick: () => this.setTab(2), innerHTML: Users }), h("button", { class: this.activeTab === 3 ? 'active' : '', onClick: () => this.setTab(3), innerHTML: ClipboardDocuments })), this.activeTab === 1 && (h("div", { class: "content" }, h("div", { class: "title" }, "Details"), h("div", { class: "label" }, "Envelope ID"), h("div", { class: "value" }, this.envelope.id), h("div", { class: "label" }, "Date Created"), h("div", { class: "value" }, format(new Date(this.envelope.created_at), FORMAT_TIMESTAMP)), h("div", { class: "label" }, "Last Modified"), h("div", { class: "value" }, format(new Date(this.envelope.updated_at), FORMAT_TIMESTAMP)), h("div", { class: "label" }, "Status"), h("div", { class: "value" }, this.envelope.status), h("div", { class: "label" }, "Verdoc Owner ID"), h("div", { class: "value" }, this.envelope.profile_id), h("div", { class: "label" }, "Verdoc Owner Name"), h("div", { class: "value" }, (_a = this.envelope.profile) === null || _a === void 0 ? void 0 :
228
- _a.first_name, " ", (_b = this.envelope.profile) === null || _b === void 0 ? void 0 :
229
- _b.last_name), h("div", { class: "label" }, "Verdoc Owner Email"), h("div", { class: "value" }, (_c = this.envelope.profile) === null || _c === void 0 ? void 0 : _c.email))), this.activeTab === 2 && (h("div", { class: "content" }, h("div", { class: "title" }, "Recipients"), this.sortedRecipients.map((recipient, index) => (h("div", { class: "recipient-detail" }, h("div", { class: "recipient-header" }, h("div", { class: "recipient-number" }, index + 1), h("div", { class: "recipient-type" }, recipient.role_name), h("div", { class: { 'recipient-status': true, [recipient.status]: true } }, recipient.status), isEnvelopeOwner && (h("verdocs-dropdown", { onOptionSelected: item => this.handleRecipientAction(recipient, item.detail.id), options: [
230
- { id: 'reminder', label: 'Send Reminder', disabled: !this.canResendRecipient(recipient) },
231
- { id: 'modify', label: 'Modify Recipient', disabled: !this.canModifyRecipient(recipient) },
232
- // TODO: Details dialog
233
- // {id:'details',label: 'View Details'},
234
- ] }))), h("dic", { class: "recipient-content" }, h("div", { class: "recipient-name" }, recipient.full_name), h("div", { class: "recipient-name" }, recipient.email), h("div", { class: "recipient-name" }, recipient.phone))))), isEnvelopeOwner && h("verdocs-button", { class: "manage-recipients-button", variant: "standard", label: "Manage Recipients", onClick: () => (this.showManageDialog = true) }))), this.activeTab === 3 && (h("div", { class: "content" }, h("div", { class: "title" }, "History"), historyEntries.map(entry => (h("div", { class: "history-entry" }, h("div", { class: "activity-icon", innerHTML: ActivityIcons[entry.icon] || entry.icon }), h("div", { class: "activity-details" }, h("div", { class: "activity-text" }, entry.message), h("div", { class: "activity-date" }, format(entry.date, FORMAT_TIMESTAMP)))))))), this.showManageDialog && (h("verdocs-envelope-recipient-summary", { envelopeId: this.envelopeId, canView: false, onAnother: () => {
272
+ const functionsDisabled = ((_b = (_a = this.store) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.status) !== 'pending' && ((_d = (_c = this.store) === null || _c === void 0 ? void 0 : _c.state) === null || _d === void 0 ? void 0 : _d.status) !== 'in progress';
273
+ return (h(Host, { class: this.panelOpen ? 'open' : '' }, h("div", { class: "side-buttons" }, h("button", { class: this.activeTab === 1 ? 'active' : '', onClick: () => this.setTab(1), innerHTML: InformationCircle }), h("button", { class: this.activeTab === 2 ? 'active' : '', onClick: () => this.setTab(2), innerHTML: Users }), h("button", { class: this.activeTab === 3 ? 'active' : '', onClick: () => this.setTab(3), innerHTML: ClipboardDocuments })), this.activeTab === 1 && (h("div", { class: "content" }, h("div", { class: "title" }, "Details"), h("div", { class: "label" }, "Envelope ID"), h("div", { class: "value" }, (_f = (_e = this.store) === null || _e === void 0 ? void 0 : _e.state) === null || _f === void 0 ? void 0 : _f.id), h("div", { class: "label" }, "Date Created"), h("div", { class: "value" }, format(new Date((_h = (_g = this.store) === null || _g === void 0 ? void 0 : _g.state) === null || _h === void 0 ? void 0 : _h.created_at), FORMAT_TIMESTAMP)), h("div", { class: "label" }, "Last Modified"), h("div", { class: "value" }, format(new Date((_k = (_j = this.store) === null || _j === void 0 ? void 0 : _j.state) === null || _k === void 0 ? void 0 : _k.updated_at), FORMAT_TIMESTAMP)), h("div", { class: "label" }, "Status"), h("div", { class: "value" }, (_m = (_l = this.store) === null || _l === void 0 ? void 0 : _l.state) === null || _m === void 0 ? void 0 : _m.status), h("div", { class: "label" }, "Verdoc Owner ID"), h("div", { class: "value" }, (_p = (_o = this.store) === null || _o === void 0 ? void 0 : _o.state) === null || _p === void 0 ? void 0 : _p.profile_id), h("div", { class: "label" }, "Verdoc Owner Name"), h("div", { class: "value" }, (_s = (_r = (_q = this.store) === null || _q === void 0 ? void 0 : _q.state) === null || _r === void 0 ? void 0 : _r.profile) === null || _s === void 0 ? void 0 :
274
+ _s.first_name, " ", (_v = (_u = (_t = this.store) === null || _t === void 0 ? void 0 : _t.state) === null || _u === void 0 ? void 0 : _u.profile) === null || _v === void 0 ? void 0 :
275
+ _v.last_name), h("div", { class: "label" }, "Verdoc Owner Email"), h("div", { class: "value" }, (_y = (_x = (_w = this.store) === null || _w === void 0 ? void 0 : _w.state) === null || _x === void 0 ? void 0 : _x.profile) === null || _y === void 0 ? void 0 : _y.email))), this.activeTab === 2 && (h("div", { class: "content" }, h("div", { class: "title" }, "Recipients"), (_0 = (_z = this.store) === null || _z === void 0 ? void 0 : _z.state) === null || _0 === void 0 ? void 0 :
276
+ _0.recipients.map((recipient, index) => {
277
+ const canGetInPersonLink = !this.canModify(recipient) || (recipient.status !== 'invited' && recipient.status !== 'opened');
278
+ const canSendReminder = this.canResendRecipient(recipient);
279
+ return (h("div", { class: "recipient-detail" }, h("div", { class: "recipient-header" }, h("div", { class: "recipient-number" }, index + 1), h("div", { class: "recipient-type" }, recipient.role_name), h("div", { class: { 'recipient-status': true, [recipient.status]: true } }, recipient.status), isEnvelopeOwner && !functionsDisabled && (h("verdocs-dropdown", { onOptionSelected: item => this.handleRecipientAction(recipient, item.detail.id), options: [
280
+ { id: 'reminder', label: 'Send Reminder', disabled: !canSendReminder },
281
+ { id: 'inperson', label: 'Get In-Person Link', disabled: !canGetInPersonLink },
282
+ // {id: 'modify', label: 'Modify Recipient', disabled: !this.canModifyRecipient(recipient)},
283
+ // TODO: Details dialog
284
+ // {id:'details',label: 'View Details'},
285
+ ] }))), h("dic", { class: "recipient-content" }, h("div", { class: "recipient-name" }, recipient.full_name), h("div", { class: "recipient-name" }, recipient.email), h("div", { class: "recipient-name" }, recipient.phone))));
286
+ }), isEnvelopeOwner && (h("verdocs-button", { class: "manage-recipients-button", variant: "standard", label: "Turn On Reminders", onClick: () => (this.showManageDialog = !functionsDisabled), disabled: functionsDisabled })), isEnvelopeOwner && (h("verdocs-button", { class: "manage-recipients-button", variant: "standard", label: "Cancel Verdoc", onClick: () => (this.showCancelDialog = !functionsDisabled), disabled: functionsDisabled })))), this.activeTab === 3 && (h("div", { class: "content" }, h("div", { class: "title" }, "History"), historyEntries.map(entry => (h("div", { class: "history-entry" }, h("div", { class: "activity-icon", innerHTML: ActivityIcons[entry.icon] || entry.icon }), h("div", { class: "activity-details" }, h("div", { class: "activity-text" }, entry.message), h("div", { class: "activity-date" }, format(entry.date, FORMAT_TIMESTAMP)))))))), this.showManageDialog && (h("verdocs-envelope-recipient-summary", { envelopeId: this.envelopeId, canView: false, onAnother: () => {
235
287
  var _a;
236
288
  this.showManageDialog = false;
237
- (_a = this.another) === null || _a === void 0 ? void 0 : _a.emit({ envelope: this.envelope });
289
+ (_a = this.another) === null || _a === void 0 ? void 0 : _a.emit({ envelope: this.store.state });
238
290
  }, onNext: () => {
239
291
  this.showManageDialog = false;
292
+ } })), this.showCancelDialog && (h("verdocs-ok-dialog", { heading: "Cancel Envelope?", message: 'Are you sure you want to cancel this Envelope? This action cannot be undone.', onNext: () => {
293
+ this.showCancelDialog = false;
294
+ this.cancelEnvelope();
240
295
  } }))));
241
296
  }
242
297
  static get is() { return "verdocs-envelope-sidebar"; }
@@ -295,12 +350,10 @@ export class VerdocsEnvelopeSidebar {
295
350
  }
296
351
  static get states() {
297
352
  return {
298
- "envelope": {},
299
- "sortedRecipients": {},
300
- "roleNames": {},
301
353
  "activeTab": {},
302
354
  "panelOpen": {},
303
355
  "showManageDialog": {},
356
+ "showCancelDialog": {},
304
357
  "loading": {}
305
358
  };
306
359
  }
@@ -3,7 +3,7 @@ export default {
3
3
  title: 'Envelopes/Envelope Sidebar',
4
4
  component: 'verdocs-envelope-sidebar',
5
5
  args: {
6
- envelopeId: 'af083350-0202-4c00-ac90-5346914fa6ff',
6
+ envelopeId: '98126d3a-b6b0-4041-93a7-5cbd9daf5afa',
7
7
  },
8
8
  argTypes: {
9
9
  envelopeId: { name: 'envelopeId' },
@@ -2,7 +2,6 @@ verdocs-status-indicator {
2
2
  display: flex;
3
3
  font-size: 18px;
4
4
  flex-wrap: nowrap;
5
- padding: 4px 12px;
6
5
  border-radius: 6px;
7
6
  color: #33364b;
8
7
  align-items: center;
@@ -16,7 +15,7 @@ verdocs-status-indicator.has-document:hover {
16
15
  verdocs-status-indicator .icon {
17
16
  width: 25px;
18
17
  height: 25px;
19
- margin: 0 10px -4px 0;
18
+ margin: 0 10px 0 0;
20
19
  }
21
20
  verdocs-status-indicator.dark {
22
21
  color: #ffffff;
@@ -27,7 +26,7 @@ verdocs-status-indicator.small {
27
26
  verdocs-status-indicator.small .icon {
28
27
  width: 20px;
29
28
  height: 20px;
30
- margin: 0 8px -4px 0;
29
+ margin: 0 8px 0 0;
31
30
  }
32
31
  verdocs-status-indicator .detail-panel {
33
32
  display: none;
@@ -1,26 +1,31 @@
1
1
  verdocs-field-textarea {
2
- font-family: "Inter", -apple-system, "Segoe UI", "Roboto", "Helvetica Neue", sans-serif;
3
2
  width: 150px;
4
3
  height: 15px;
5
4
  display: block;
6
5
  font-size: 11px;
7
6
  position: relative;
7
+ box-sizing: border-box;
8
8
  background-color: transparent;
9
9
  transform-origin: bottom left;
10
+ font-family: "Inter", -apple-system, "Segoe UI", "Roboto", "Helvetica Neue", sans-serif;
11
+ border: 1px solid rgba(0, 0, 0, 0.2);
10
12
  }
11
13
  verdocs-field-textarea.disabled {
12
14
  opacity: 0.5;
13
15
  }
14
16
  verdocs-field-textarea textarea {
15
- box-sizing: border-box;
16
- color: rgba(0, 0, 0, 0.87);
17
- font-weight: 500;
18
- transform-origin: 0 0;
19
- height: 100%;
20
17
  width: 100%;
21
- background: none;
18
+ height: 100%;
19
+ resize: none;
20
+ border: none;
21
+ outline: none;
22
+ padding: 0 3px;
22
23
  font-size: 11px;
23
- border: 1px solid rgba(0, 0, 0, 0.2);
24
+ background: none;
25
+ font-weight: 500;
26
+ transform-origin: 0 0;
27
+ box-sizing: border-box;
28
+ color: rgba(0, 0, 0, 0.87);
24
29
  }
25
30
  verdocs-field-textarea textarea.hide {
26
31
  display: none;
@@ -1,4 +1,7 @@
1
+ import interact from 'interactjs';
2
+ import { VerdocsEndpoint } from '@verdocs/js-sdk';
1
3
  import { getRGBA } from '@verdocs/js-sdk/Utils/Colors';
4
+ import { updateField } from '@verdocs/js-sdk/Templates/Fields';
2
5
  import { h, Host } from '@stencil/core';
3
6
  import { getFieldSettings } from '../../../utils/utils';
4
7
  const settingsIcon = '<svg xmlns="http://www.w3.org/2000/svg" height="20" width="20"><path d="m7.5 18.5-.312-2.667q-.188-.125-.396-.25-.209-.125-.396-.229l-2.479 1.063-2.521-4.334 2.125-1.625q.021-.104.021-.229v-.458q0-.125-.021-.229L1.396 7.917l2.521-4.313 2.5 1.042q.166-.104.375-.229.208-.125.396-.229L7.5 1.5h5l.312 2.688q.188.104.396.229.209.125.396.229l2.479-1.042 2.521 4.313-2.125 1.625v.916l2.125 1.625-2.521 4.334-2.5-1.063q-.166.104-.375.229-.208.125-.396.25L12.5 18.5Zm2.479-5.521q1.229 0 2.104-.875T12.958 10q0-1.229-.875-2.104t-2.104-.875q-1.208 0-2.094.875Q7 8.771 7 10t.885 2.104q.886.875 2.094.875Zm0-1.75q-.5 0-.864-.364Q8.75 10.5 8.75 10t.365-.865q.364-.364.864-.364t.865.364q.364.365.364.865t-.364.865q-.365.364-.865.364ZM10.021 10Zm-.792 6.521h1.542l.25-2.146q.625-.167 1.198-.51.573-.344 1.031-.823l2.021.854.771-1.271-1.771-1.354q.104-.292.156-.615.052-.323.052-.656 0-.292-.052-.604-.052-.313-.135-.646l1.77-1.375-.77-1.271-2.021.875q-.479-.5-1.042-.833-.562-.334-1.187-.5l-.271-2.167H9.208l-.25 2.167q-.625.166-1.187.5-.563.333-1.042.812l-2-.854-.771 1.271 1.73 1.354q-.084.333-.136.656Q5.5 9.708 5.5 10t.052.604q.052.313.136.667l-1.73 1.354.771 1.271 2-.834q.479.459 1.042.792.562.334 1.187.5Z"/></svg>';
@@ -7,6 +10,7 @@ const settingsIcon = '<svg xmlns="http://www.w3.org/2000/svg" height="20" width=
7
10
  */
8
11
  export class VerdocsFieldTextarea {
9
12
  constructor() {
13
+ this.endpoint = VerdocsEndpoint.getDefault();
10
14
  this.templateid = '';
11
15
  this.field = null;
12
16
  this.disabled = false;
@@ -14,10 +18,12 @@ export class VerdocsFieldTextarea {
14
18
  this.moveable = false;
15
19
  this.done = false;
16
20
  this.roleindex = 0;
21
+ this.xscale = 1;
22
+ this.yscale = 1;
17
23
  this.rerender = 0;
18
24
  }
19
25
  async focusField() {
20
- this.el.focus();
26
+ this.inputEl.focus();
21
27
  }
22
28
  async showSettingsPanel() {
23
29
  const settingsPanel = document.getElementById(`verdocs-settings-panel-${this.field.name}`);
@@ -32,6 +38,51 @@ export class VerdocsFieldTextarea {
32
38
  }
33
39
  // TemplateStore.updateCount++;
34
40
  }
41
+ componentDidRender() {
42
+ interact.dynamicDrop(true);
43
+ if (this.editable) {
44
+ interact(this.el).resizable({
45
+ edges: { top: true, bottom: true, left: true, right: true },
46
+ listeners: {
47
+ start: this.handleResizeStart.bind(this),
48
+ move: this.handleResize.bind(this),
49
+ end: this.handleResizeEnd.bind(this),
50
+ },
51
+ });
52
+ }
53
+ }
54
+ handleResizeStart(e) {
55
+ e.preventDefault();
56
+ e.stopPropagation();
57
+ }
58
+ handleResize(e) {
59
+ let { x = 0, y = 0, h = 0 } = e.target.dataset;
60
+ let { width, height } = e.rect;
61
+ x = (parseFloat(x) || 0) + e.deltaRect.left;
62
+ y = (parseFloat(y) || 0) + e.deltaRect.top;
63
+ h = (parseFloat(h) || 0) + e.deltaRect.height;
64
+ Object.assign(e.target.style, {
65
+ width: `${width}px`,
66
+ height: `${height}px`,
67
+ transform: `translate(${x}px, ${y + h}px)`,
68
+ });
69
+ Object.assign(e.target.dataset, { x, y, h });
70
+ }
71
+ handleResizeEnd(e) {
72
+ const newSettings = { ...getFieldSettings(this.field) };
73
+ const [translateX, translateY] = e.target.style.transform.split('(')[1].split(')')[0].split(',').map(parseFloat);
74
+ newSettings.width = Math.round(parseFloat(e.target.style.width) / this.xscale);
75
+ newSettings.height = Math.round(parseFloat(e.target.style.height) / this.yscale);
76
+ newSettings.x = Math.round(newSettings.x + translateX / this.xscale);
77
+ newSettings.y = Math.round(newSettings.y - translateY / this.yscale);
78
+ updateField(this.endpoint, this.templateid, this.field.name, { setting: newSettings })
79
+ .then(() => {
80
+ var _a;
81
+ (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name, settings: newSettings });
82
+ Object.assign(e.target.dataset, { x: 0, y: 0, h: 0 });
83
+ })
84
+ .catch(e => console.log('Field update failed', e));
85
+ }
35
86
  render() {
36
87
  var _a, _b;
37
88
  const settings = getFieldSettings(this.field);
@@ -40,7 +91,7 @@ export class VerdocsFieldTextarea {
40
91
  if (this.done) {
41
92
  return h(Host, { class: { done: this.done } }, settings.value);
42
93
  }
43
- return (h(Host, { class: { required: settings.required, disabled }, style: { backgroundColor } }, h("textarea", { placeholder: settings.placeholder || '', tabIndex: settings.order, value: settings.value, disabled: disabled, name: this.field.name, required: settings.required, ref: el => (this.el = el) }), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("verdocs-template-field-properties", { templateId: this.templateid, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
94
+ return (h(Host, { class: { required: settings.required, disabled }, style: { backgroundColor } }, h("textarea", { placeholder: settings.placeholder || '', tabIndex: settings.order, value: settings.value, disabled: disabled, name: this.field.name, required: settings.required, ref: el => (this.inputEl = el) }), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("verdocs-template-field-properties", { templateId: this.templateid, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
44
95
  var _a;
45
96
  (_a = this.deleted) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
46
97
  return this.hideSettingsPanel();
@@ -63,6 +114,27 @@ export class VerdocsFieldTextarea {
63
114
  }
64
115
  static get properties() {
65
116
  return {
117
+ "endpoint": {
118
+ "type": "unknown",
119
+ "mutable": false,
120
+ "complexType": {
121
+ "original": "VerdocsEndpoint",
122
+ "resolved": "VerdocsEndpoint",
123
+ "references": {
124
+ "VerdocsEndpoint": {
125
+ "location": "import",
126
+ "path": "@verdocs/js-sdk"
127
+ }
128
+ }
129
+ },
130
+ "required": false,
131
+ "optional": false,
132
+ "docs": {
133
+ "tags": [],
134
+ "text": "The endpoint to use to communicate with Verdocs. If not set, the default endpoint will be used.\nThis component self-manages its resize (width) behavior when in edit-template mode, and uses\nthis endpoint to save changes."
135
+ },
136
+ "defaultValue": "VerdocsEndpoint.getDefault()"
137
+ },
66
138
  "templateid": {
67
139
  "type": "string",
68
140
  "mutable": false,
@@ -196,6 +268,42 @@ export class VerdocsFieldTextarea {
196
268
  "reflect": false,
197
269
  "defaultValue": "0"
198
270
  },
271
+ "xscale": {
272
+ "type": "number",
273
+ "mutable": false,
274
+ "complexType": {
275
+ "original": "number",
276
+ "resolved": "number",
277
+ "references": {}
278
+ },
279
+ "required": false,
280
+ "optional": true,
281
+ "docs": {
282
+ "tags": [],
283
+ "text": "If set, the field will be be scaled horizontally by this factor."
284
+ },
285
+ "attribute": "xscale",
286
+ "reflect": false,
287
+ "defaultValue": "1"
288
+ },
289
+ "yscale": {
290
+ "type": "number",
291
+ "mutable": false,
292
+ "complexType": {
293
+ "original": "number",
294
+ "resolved": "number",
295
+ "references": {}
296
+ },
297
+ "required": false,
298
+ "optional": true,
299
+ "docs": {
300
+ "tags": [],
301
+ "text": "If set, the field will be be scaled vertically by this factor."
302
+ },
303
+ "attribute": "yscale",
304
+ "reflect": false,
305
+ "defaultValue": "1"
306
+ },
199
307
  "rerender": {
200
308
  "type": "number",
201
309
  "mutable": false,
@@ -306,4 +414,5 @@ export class VerdocsFieldTextarea {
306
414
  }
307
415
  };
308
416
  }
417
+ static get elementRef() { return "el"; }
309
418
  }
@@ -1,9 +1,9 @@
1
1
  import interact from 'interactjs';
2
+ import { VerdocsEndpoint } from '@verdocs/js-sdk';
2
3
  import { getRGBA } from '@verdocs/js-sdk/Utils/Colors';
4
+ import { updateField } from '@verdocs/js-sdk/Templates/Fields';
3
5
  import { h, Host } from '@stencil/core';
4
6
  import { getFieldSettings } from '../../../utils/utils';
5
- import { updateField } from '@verdocs/js-sdk/Templates/Fields';
6
- import { VerdocsEndpoint } from '@verdocs/js-sdk';
7
7
  const settingsIcon = '<svg xmlns="http://www.w3.org/2000/svg" height="20" width="20"><path d="m7.5 18.5-.312-2.667q-.188-.125-.396-.25-.209-.125-.396-.229l-2.479 1.063-2.521-4.334 2.125-1.625q.021-.104.021-.229v-.458q0-.125-.021-.229L1.396 7.917l2.521-4.313 2.5 1.042q.166-.104.375-.229.208-.125.396-.229L7.5 1.5h5l.312 2.688q.188.104.396.229.209.125.396.229l2.479-1.042 2.521 4.313-2.125 1.625v.916l2.125 1.625-2.521 4.334-2.5-1.063q-.166.104-.375.229-.208.125-.396.25L12.5 18.5Zm2.479-5.521q1.229 0 2.104-.875T12.958 10q0-1.229-.875-2.104t-2.104-.875q-1.208 0-2.094.875Q7 8.771 7 10t.885 2.104q.886.875 2.094.875Zm0-1.75q-.5 0-.864-.364Q8.75 10.5 8.75 10t.365-.865q.364-.364.864-.364t.865.364q.364.365.364.865t-.364.865q-.365.364-.865.364ZM10.021 10Zm-.792 6.521h1.542l.25-2.146q.625-.167 1.198-.51.573-.344 1.031-.823l2.021.854.771-1.271-1.771-1.354q.104-.292.156-.615.052-.323.052-.656 0-.292-.052-.604-.052-.313-.135-.646l1.77-1.375-.77-1.271-2.021.875q-.479-.5-1.042-.833-.562-.334-1.187-.5l-.271-2.167H9.208l-.25 2.167q-.625.166-1.187.5-.563.333-1.042.812l-2-.854-.771 1.271 1.73 1.354q-.084.333-.136.656Q5.5 9.708 5.5 10t.052.604q.052.313.136.667l-1.73 1.354.771 1.271 2-.834q.479.459 1.042.792.562.334 1.187.5Z"/></svg>';
8
8
  /**
9
9
  * Display a text input field.
@@ -18,6 +18,8 @@ export class VerdocsFieldTextbox {
18
18
  this.moveable = false;
19
19
  this.done = false;
20
20
  this.roleindex = 0;
21
+ this.xscale = 1;
22
+ this.yscale = 1;
21
23
  this.rerender = 0;
22
24
  }
23
25
  async focusField() {
@@ -54,26 +56,31 @@ export class VerdocsFieldTextbox {
54
56
  e.stopPropagation();
55
57
  }
56
58
  handleResize(e) {
57
- console.log('resize', e);
58
- const oldX = +(e.target.getAttribute('resizeX') || 0);
59
- const oldY = +(e.target.getAttribute('resizeY') || 0);
60
- const newX = e.dx + oldX;
61
- const newY = e.dy + oldY;
62
- this.el.style.width = `${parseFloat(this.el.style.width || '0') + e.dx}px`;
63
- // Single line text fields are not resizeable in height
64
- // this.el.style.height = `${parseFloat(this.el.style.height || '0') + event.dy}px`;
65
- e.target.setAttribute('resizeX', newX);
66
- e.target.setAttribute('resizeY', newY);
59
+ let { x = 0, y = 0, h = 0 } = e.target.dataset;
60
+ let { width, height } = e.rect;
61
+ x = (parseFloat(x) || 0) + e.deltaRect.left;
62
+ y = (parseFloat(y) || 0) + e.deltaRect.top;
63
+ h = (parseFloat(h) || 0) + e.deltaRect.height;
64
+ Object.assign(e.target.style, {
65
+ width: `${width}px`,
66
+ height: `${height}px`,
67
+ transform: `translate(${x}px, ${y + h}px)`,
68
+ });
69
+ Object.assign(e.target.dataset, { x, y, h });
67
70
  }
68
71
  handleResizeEnd(e) {
69
- console.log('resizeEnd', e);
70
- const resizeWidth = +(e.target.getAttribute('resizeX') || 0);
71
- const settings = getFieldSettings(this.field);
72
- const newWidth = (settings.width || 150) + resizeWidth;
73
- const newSettings = { ...getFieldSettings(this.field), width: Math.round(newWidth) };
74
- delete newSettings['result'];
72
+ const newSettings = { ...getFieldSettings(this.field) };
73
+ const [translateX, translateY] = e.target.style.transform.split('(')[1].split(')')[0].split(',').map(parseFloat);
74
+ newSettings.width = Math.round(parseFloat(e.target.style.width) / this.xscale);
75
+ newSettings.height = Math.round(parseFloat(e.target.style.height) / this.yscale);
76
+ newSettings.x = Math.round(newSettings.x + translateX / this.xscale);
77
+ newSettings.y = Math.round(newSettings.y - translateY / this.yscale);
75
78
  updateField(this.endpoint, this.templateid, this.field.name, { setting: newSettings })
76
- .then(() => { var _a; return (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name, settings: newSettings }); })
79
+ .then(() => {
80
+ var _a;
81
+ (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name, settings: newSettings });
82
+ Object.assign(e.target.dataset, { x: 0, y: 0, h: 0 });
83
+ })
77
84
  .catch(e => console.log('Field update failed', e));
78
85
  }
79
86
  render() {
@@ -265,6 +272,42 @@ export class VerdocsFieldTextbox {
265
272
  "reflect": false,
266
273
  "defaultValue": "0"
267
274
  },
275
+ "xscale": {
276
+ "type": "number",
277
+ "mutable": false,
278
+ "complexType": {
279
+ "original": "number",
280
+ "resolved": "number",
281
+ "references": {}
282
+ },
283
+ "required": false,
284
+ "optional": true,
285
+ "docs": {
286
+ "tags": [],
287
+ "text": "If set, the field will be be scaled horizontally by this factor."
288
+ },
289
+ "attribute": "xscale",
290
+ "reflect": false,
291
+ "defaultValue": "1"
292
+ },
293
+ "yscale": {
294
+ "type": "number",
295
+ "mutable": false,
296
+ "complexType": {
297
+ "original": "number",
298
+ "resolved": "number",
299
+ "references": {}
300
+ },
301
+ "required": false,
302
+ "optional": true,
303
+ "docs": {
304
+ "tags": [],
305
+ "text": "If set, the field will be be scaled vertically by this factor."
306
+ },
307
+ "attribute": "yscale",
308
+ "reflect": false,
309
+ "defaultValue": "1"
310
+ },
268
311
  "rerender": {
269
312
  "type": "number",
270
313
  "mutable": false,
@@ -3,7 +3,7 @@ export default {
3
3
  title: 'Templates/Fields',
4
4
  component: 'verdocs-template-fields',
5
5
  args: {
6
- templateId: '90c2e63d-6b61-4dd2-a2e2-e137778f5ab5',
6
+ templateId: '',
7
7
  },
8
8
  argTypes: {},
9
9
  parameters: {