@verdocs/web-sdk 1.10.1 → 1.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/dist/cjs/Roles-927719de.js +28 -0
  2. package/dist/cjs/{VerdocsEndpoint-38feb32a.js → VerdocsEndpoint-25056c73.js} +42 -0
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/verdocs-auth.cjs.entry.js +1 -2
  5. package/dist/cjs/verdocs-build.cjs.entry.js +1 -2
  6. package/dist/cjs/verdocs-button-panel_2.cjs.entry.js +1 -1
  7. package/dist/cjs/verdocs-contact-picker.cjs.entry.js +1 -2
  8. package/dist/cjs/verdocs-envelope-sidebar.cjs.entry.js +1 -2
  9. package/dist/cjs/verdocs-help-icon_2.cjs.entry.js +11 -8
  10. package/dist/cjs/verdocs-preview.cjs.entry.js +1 -2
  11. package/dist/cjs/verdocs-quick-functions_3.cjs.entry.js +1 -2
  12. package/dist/cjs/verdocs-radio-button.cjs.entry.js +23 -0
  13. package/dist/cjs/verdocs-search.cjs.entry.js +1 -2
  14. package/dist/cjs/verdocs-send.cjs.entry.js +1 -2
  15. package/dist/cjs/verdocs-sign.cjs.entry.js +1 -2
  16. package/dist/cjs/verdocs-template-attachments.cjs.entry.js +53 -0
  17. package/dist/cjs/verdocs-template-create_2.cjs.entry.js +1 -2
  18. package/dist/cjs/verdocs-template-name.cjs.entry.js +2 -3
  19. package/dist/cjs/verdocs-template-properties.cjs.entry.js +1 -2
  20. package/dist/cjs/verdocs-template-recipients.cjs.entry.js +159 -136
  21. package/dist/cjs/verdocs-template-reminders.cjs.entry.js +3 -4
  22. package/dist/cjs/verdocs-template-role-properties_2.cjs.entry.js +228 -0
  23. package/dist/cjs/verdocs-template-visibility.cjs.entry.js +3 -4
  24. package/dist/cjs/verdocs-view.cjs.entry.js +1 -2
  25. package/dist/cjs/verdocs-web-sdk.cjs.js +1 -1
  26. package/dist/collection/collection-manifest.json +3 -1
  27. package/dist/collection/components/controls/verdocs-help-icon/verdocs-help-icon.css +5 -0
  28. package/dist/collection/components/controls/verdocs-select-input/verdocs-select-input.css +1 -1
  29. package/dist/collection/components/controls/verdocs-text-input/verdocs-text-input.js +20 -1
  30. package/dist/collection/components/elements/verdocs-contact-picker/verdocs-contact-picker.stories.js +1 -1
  31. package/dist/collection/components/elements/verdocs-envelope-sidebar/verdocs-envelope-sidebar.stories.js +1 -1
  32. package/dist/collection/components/templates/verdocs-template-attachments/verdocs-template-attachments.css +23 -0
  33. package/dist/collection/components/templates/verdocs-template-attachments/verdocs-template-attachments.js +137 -0
  34. package/dist/collection/components/templates/verdocs-template-attachments/verdocs-template-attachments.stories.js +19 -0
  35. package/dist/collection/components/templates/verdocs-template-create/verdocs-template-create.stories.js +2 -2
  36. package/dist/collection/components/templates/verdocs-template-fields/verdocs-template-fields.stories.js +2 -3
  37. package/dist/collection/components/templates/verdocs-template-name/verdocs-template-name.css +3 -2
  38. package/dist/collection/components/templates/verdocs-template-name/verdocs-template-name.stories.js +4 -4
  39. package/dist/collection/components/templates/verdocs-template-properties/verdocs-template-properties.stories.js +2 -2
  40. package/dist/collection/components/templates/verdocs-template-recipients/verdocs-template-recipients.css +89 -30
  41. package/dist/collection/components/templates/verdocs-template-recipients/verdocs-template-recipients.js +154 -133
  42. package/dist/collection/components/templates/verdocs-template-recipients/verdocs-template-recipients.stories.js +5 -4
  43. package/dist/collection/components/templates/verdocs-template-reminders/verdocs-template-reminders.css +7 -0
  44. package/dist/collection/components/templates/verdocs-template-reminders/verdocs-template-reminders.js +2 -2
  45. package/dist/collection/components/templates/verdocs-template-reminders/verdocs-template-reminders.stories.js +2 -2
  46. package/dist/collection/components/templates/verdocs-template-role-properties/verdocs-template-role-properties.css +105 -0
  47. package/dist/collection/components/templates/verdocs-template-role-properties/verdocs-template-role-properties.js +303 -0
  48. package/dist/collection/components/templates/verdocs-template-role-properties/verdocs-template-role-properties.stories.js +13 -0
  49. package/dist/collection/components/{dialogs/verdocs-template-sender-dialog/verdocs-template-sender-dialog.css → templates/verdocs-template-sender/verdocs-template-sender.css} +11 -11
  50. package/dist/collection/components/templates/verdocs-template-sender/verdocs-template-sender.js +193 -0
  51. package/dist/collection/components/templates/verdocs-template-sender/verdocs-template-sender.stories.js +13 -0
  52. package/dist/collection/components/templates/verdocs-template-visibillity/verdocs-template-visibility.css +14 -6
  53. package/dist/collection/components/templates/verdocs-template-visibillity/verdocs-template-visibility.js +2 -2
  54. package/dist/collection/components/templates/verdocs-template-visibillity/verdocs-template-visibility.stories.js +2 -2
  55. package/dist/components/VerdocsEndpoint.js +43 -1
  56. package/dist/components/index.d.ts +3 -1
  57. package/dist/components/index.js +3 -1
  58. package/dist/components/verdocs-auth.js +8 -3
  59. package/dist/components/verdocs-build.js +0 -1
  60. package/dist/components/verdocs-contact-picker2.js +0 -1
  61. package/dist/components/verdocs-envelope-sidebar.js +0 -1
  62. package/dist/components/verdocs-field-date.js +8 -2
  63. package/dist/components/verdocs-field-initial.js +10 -4
  64. package/dist/components/verdocs-field-signature.js +10 -4
  65. package/dist/components/verdocs-field-textarea.js +8 -2
  66. package/dist/components/verdocs-field-textbox.js +8 -2
  67. package/dist/components/verdocs-field-timestamp.js +8 -2
  68. package/dist/components/verdocs-help-icon2.js +1 -1
  69. package/dist/components/verdocs-initial-dialog2.js +8 -2
  70. package/dist/components/verdocs-preview.js +0 -1
  71. package/dist/components/verdocs-quick-functions2.js +0 -1
  72. package/dist/components/verdocs-search-activity2.js +0 -1
  73. package/dist/components/verdocs-search-box2.js +0 -1
  74. package/dist/components/verdocs-search.js +0 -1
  75. package/dist/components/verdocs-select-input2.js +1 -1
  76. package/dist/components/verdocs-send.js +1 -2
  77. package/dist/components/verdocs-sign.js +1 -2
  78. package/dist/components/verdocs-signature-dialog2.js +8 -2
  79. package/dist/components/verdocs-template-attachments.d.ts +11 -0
  80. package/dist/components/verdocs-template-attachments.js +73 -0
  81. package/dist/components/verdocs-template-create2.js +0 -1
  82. package/dist/components/verdocs-template-fields2.js +0 -1
  83. package/dist/components/verdocs-template-name.js +9 -4
  84. package/dist/components/verdocs-template-properties.js +12 -7
  85. package/dist/components/verdocs-template-recipients.js +186 -137
  86. package/dist/components/verdocs-template-reminders.js +14 -9
  87. package/dist/components/verdocs-template-role-properties.d.ts +11 -0
  88. package/dist/components/verdocs-template-role-properties.js +6 -0
  89. package/dist/components/verdocs-template-role-properties2.js +229 -0
  90. package/dist/components/verdocs-template-sender.d.ts +11 -0
  91. package/dist/components/verdocs-template-sender.js +6 -0
  92. package/dist/components/verdocs-template-sender2.js +116 -0
  93. package/dist/components/verdocs-template-visibility.js +2 -3
  94. package/dist/components/verdocs-text-input2.js +10 -2
  95. package/dist/components/verdocs-view2.js +0 -1
  96. package/dist/custom-elements.json +82 -6
  97. package/dist/docs.json +399 -33
  98. package/dist/esm/Roles-2488d047.js +24 -0
  99. package/dist/esm/{VerdocsEndpoint-6df32d3a.js → VerdocsEndpoint-7f17b088.js} +43 -1
  100. package/dist/esm/loader.js +1 -1
  101. package/dist/esm/verdocs-auth.entry.js +1 -2
  102. package/dist/esm/verdocs-build.entry.js +1 -2
  103. package/dist/esm/verdocs-button-panel_2.entry.js +1 -1
  104. package/dist/esm/verdocs-contact-picker.entry.js +1 -2
  105. package/dist/esm/verdocs-envelope-sidebar.entry.js +1 -2
  106. package/dist/esm/verdocs-help-icon_2.entry.js +11 -8
  107. package/dist/esm/verdocs-preview.entry.js +1 -2
  108. package/dist/esm/verdocs-quick-functions_3.entry.js +1 -2
  109. package/dist/esm/verdocs-radio-button.entry.js +19 -0
  110. package/dist/esm/verdocs-search.entry.js +1 -2
  111. package/dist/esm/verdocs-send.entry.js +1 -2
  112. package/dist/esm/verdocs-sign.entry.js +1 -2
  113. package/dist/esm/verdocs-template-attachments.entry.js +49 -0
  114. package/dist/esm/verdocs-template-create_2.entry.js +1 -2
  115. package/dist/esm/verdocs-template-name.entry.js +2 -3
  116. package/dist/esm/verdocs-template-properties.entry.js +1 -2
  117. package/dist/esm/verdocs-template-recipients.entry.js +155 -132
  118. package/dist/esm/verdocs-template-reminders.entry.js +3 -4
  119. package/dist/esm/verdocs-template-role-properties_2.entry.js +223 -0
  120. package/dist/esm/verdocs-template-visibility.entry.js +3 -4
  121. package/dist/esm/verdocs-view.entry.js +1 -2
  122. package/dist/esm/verdocs-web-sdk.js +1 -1
  123. package/dist/esm-es5/Roles-2488d047.js +1 -0
  124. package/dist/esm-es5/VerdocsEndpoint-7f17b088.js +1 -0
  125. package/dist/esm-es5/loader.js +1 -1
  126. package/dist/esm-es5/verdocs-auth.entry.js +1 -1
  127. package/dist/esm-es5/verdocs-build.entry.js +1 -1
  128. package/dist/esm-es5/verdocs-button-panel_2.entry.js +1 -1
  129. package/dist/esm-es5/verdocs-contact-picker.entry.js +1 -1
  130. package/dist/esm-es5/verdocs-envelope-sidebar.entry.js +1 -1
  131. package/dist/esm-es5/verdocs-help-icon_2.entry.js +1 -1
  132. package/dist/esm-es5/verdocs-preview.entry.js +1 -1
  133. package/dist/esm-es5/verdocs-quick-functions_3.entry.js +1 -1
  134. package/dist/esm-es5/verdocs-radio-button.entry.js +1 -0
  135. package/dist/esm-es5/verdocs-search.entry.js +1 -1
  136. package/dist/esm-es5/verdocs-send.entry.js +1 -1
  137. package/dist/esm-es5/verdocs-sign.entry.js +1 -1
  138. package/dist/esm-es5/verdocs-template-attachments.entry.js +1 -0
  139. package/dist/esm-es5/verdocs-template-create_2.entry.js +1 -1
  140. package/dist/esm-es5/verdocs-template-name.entry.js +1 -1
  141. package/dist/esm-es5/verdocs-template-properties.entry.js +1 -1
  142. package/dist/esm-es5/verdocs-template-recipients.entry.js +1 -1
  143. package/dist/esm-es5/verdocs-template-reminders.entry.js +1 -1
  144. package/dist/esm-es5/verdocs-template-role-properties_2.entry.js +1 -0
  145. package/dist/esm-es5/verdocs-template-visibility.entry.js +1 -1
  146. package/dist/esm-es5/verdocs-view.entry.js +1 -1
  147. package/dist/esm-es5/verdocs-web-sdk.js +1 -1
  148. package/dist/types/components/controls/verdocs-text-input/verdocs-text-input.d.ts +4 -0
  149. package/dist/types/components/templates/verdocs-template-attachments/verdocs-template-attachments.d.ts +29 -0
  150. package/dist/types/components/templates/verdocs-template-attachments/verdocs-template-attachments.stories.d.ts +7 -0
  151. package/dist/types/components/templates/verdocs-template-create/verdocs-template-create.stories.d.ts +1 -1
  152. package/dist/types/components/templates/verdocs-template-fields/verdocs-template-fields.stories.d.ts +1 -1
  153. package/dist/types/components/templates/verdocs-template-name/verdocs-template-name.stories.d.ts +1 -1
  154. package/dist/types/components/templates/verdocs-template-properties/verdocs-template-properties.stories.d.ts +1 -1
  155. package/dist/types/components/templates/verdocs-template-recipients/verdocs-template-recipients.d.ts +8 -15
  156. package/dist/types/components/templates/verdocs-template-recipients/verdocs-template-recipients.stories.d.ts +1 -1
  157. package/dist/types/components/templates/verdocs-template-reminders/verdocs-template-reminders.d.ts +1 -1
  158. package/dist/types/components/templates/verdocs-template-reminders/verdocs-template-reminders.stories.d.ts +1 -1
  159. package/dist/types/components/templates/verdocs-template-role-properties/verdocs-template-role-properties.d.ts +56 -0
  160. package/dist/types/components/{dialogs/verdocs-template-sender-dialog/verdocs-template-sender-dialog.stories.d.ts → templates/verdocs-template-role-properties/verdocs-template-role-properties.stories.d.ts} +2 -3
  161. package/dist/types/components/templates/verdocs-template-sender/verdocs-template-sender.d.ts +36 -0
  162. package/dist/types/components/templates/verdocs-template-sender/verdocs-template-sender.stories.d.ts +7 -0
  163. package/dist/types/components/templates/verdocs-template-visibillity/verdocs-template-visibility.d.ts +1 -1
  164. package/dist/types/components/templates/verdocs-template-visibillity/verdocs-template-visibility.stories.d.ts +1 -1
  165. package/dist/types/components.d.ts +144 -18
  166. package/dist/verdocs-web-sdk/p-0ee57bd9.entry.js +1 -0
  167. package/dist/verdocs-web-sdk/p-12c732a7.entry.js +1 -0
  168. package/dist/verdocs-web-sdk/p-130fe919.system.entry.js +1 -0
  169. package/dist/verdocs-web-sdk/p-15aef735.entry.js +1 -0
  170. package/dist/verdocs-web-sdk/p-19849b9e.entry.js +1 -0
  171. package/dist/verdocs-web-sdk/p-205027db.entry.js +1 -0
  172. package/dist/verdocs-web-sdk/p-2144b8be.entry.js +1 -0
  173. package/dist/verdocs-web-sdk/p-261dcea1.system.js +1 -0
  174. package/dist/verdocs-web-sdk/p-26b4ae0d.system.entry.js +1 -0
  175. package/dist/verdocs-web-sdk/p-285eaf3c.system.entry.js +1 -0
  176. package/dist/verdocs-web-sdk/p-2d4712ea.js +1 -0
  177. package/dist/verdocs-web-sdk/p-34db97b7.entry.js +1 -0
  178. package/dist/verdocs-web-sdk/p-37a493a6.entry.js +1 -0
  179. package/dist/verdocs-web-sdk/p-3da4b4cb.entry.js +1 -0
  180. package/dist/verdocs-web-sdk/p-3fbe602a.system.entry.js +1 -0
  181. package/dist/verdocs-web-sdk/p-4352529d.entry.js +1 -0
  182. package/dist/verdocs-web-sdk/p-464adbad.system.entry.js +1 -0
  183. package/dist/verdocs-web-sdk/p-4a1c9aa1.system.entry.js +1 -0
  184. package/dist/verdocs-web-sdk/p-50d7e990.system.entry.js +1 -0
  185. package/dist/verdocs-web-sdk/p-5ee985be.system.entry.js +1 -0
  186. package/dist/verdocs-web-sdk/p-6121f103.system.entry.js +1 -0
  187. package/dist/verdocs-web-sdk/{p-45ac2230.system.entry.js → p-61b824ca.system.entry.js} +1 -1
  188. package/dist/verdocs-web-sdk/p-74e1ae92.entry.js +1 -0
  189. package/dist/verdocs-web-sdk/p-7b111f2b.system.entry.js +1 -0
  190. package/dist/verdocs-web-sdk/p-7d909ce4.entry.js +1 -0
  191. package/dist/verdocs-web-sdk/p-8c53e0ff.system.entry.js +1 -0
  192. package/dist/verdocs-web-sdk/p-91539130.entry.js +1 -0
  193. package/dist/verdocs-web-sdk/p-9717a531.system.entry.js +1 -0
  194. package/dist/verdocs-web-sdk/p-98aa17a8.system.entry.js +1 -0
  195. package/dist/verdocs-web-sdk/p-9b854a18.system.entry.js +1 -0
  196. package/dist/verdocs-web-sdk/p-9f17b920.entry.js +1 -0
  197. package/dist/verdocs-web-sdk/p-a17a81a3.entry.js +1 -0
  198. package/dist/verdocs-web-sdk/p-a6872a88.system.entry.js +1 -0
  199. package/dist/verdocs-web-sdk/p-b4fee0ae.system.entry.js +1 -0
  200. package/dist/verdocs-web-sdk/p-bda7353b.entry.js +1 -0
  201. package/dist/verdocs-web-sdk/p-c16b6ca4.system.js +1 -1
  202. package/dist/verdocs-web-sdk/p-cd70bb21.system.entry.js +1 -0
  203. package/dist/verdocs-web-sdk/p-d08fca9c.entry.js +1 -0
  204. package/dist/verdocs-web-sdk/p-d5a95369.entry.js +1 -0
  205. package/dist/verdocs-web-sdk/p-daedc6c2.system.entry.js +1 -0
  206. package/dist/verdocs-web-sdk/p-de5c37cd.system.entry.js +1 -0
  207. package/dist/verdocs-web-sdk/p-df4f1a5e.entry.js +1 -0
  208. package/dist/verdocs-web-sdk/p-e223553c.system.entry.js +1 -0
  209. package/dist/verdocs-web-sdk/{p-6b205bb5.entry.js → p-ead5322f.entry.js} +1 -1
  210. package/dist/verdocs-web-sdk/p-f3e9be57.entry.js +1 -0
  211. package/dist/verdocs-web-sdk/p-fbc81799.system.js +1 -0
  212. package/dist/verdocs-web-sdk/p-ffe60abd.js +1 -0
  213. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
  214. package/package.json +5 -4
  215. package/dist/cjs/Types-da57ce69.js +0 -43
  216. package/dist/cjs/verdocs-template-sender-dialog.cjs.entry.js +0 -43
  217. package/dist/cjs/verdocs-text-input.cjs.entry.js +0 -25
  218. package/dist/collection/components/dialogs/verdocs-template-sender-dialog/verdocs-template-sender-dialog.js +0 -114
  219. package/dist/collection/components/dialogs/verdocs-template-sender-dialog/verdocs-template-sender-dialog.stories.js +0 -46
  220. package/dist/components/Types.js +0 -43
  221. package/dist/components/verdocs-template-sender-dialog.d.ts +0 -11
  222. package/dist/components/verdocs-template-sender-dialog.js +0 -6
  223. package/dist/components/verdocs-template-sender-dialog2.js +0 -75
  224. package/dist/esm/Types-ab9f6af8.js +0 -43
  225. package/dist/esm/verdocs-template-sender-dialog.entry.js +0 -39
  226. package/dist/esm/verdocs-text-input.entry.js +0 -21
  227. package/dist/esm-es5/Types-ab9f6af8.js +0 -1
  228. package/dist/esm-es5/VerdocsEndpoint-6df32d3a.js +0 -1
  229. package/dist/esm-es5/verdocs-template-sender-dialog.entry.js +0 -1
  230. package/dist/esm-es5/verdocs-text-input.entry.js +0 -1
  231. package/dist/types/components/dialogs/verdocs-template-sender-dialog/verdocs-template-sender-dialog.d.ts +0 -26
  232. package/dist/verdocs-web-sdk/p-069fcbbe.system.entry.js +0 -1
  233. package/dist/verdocs-web-sdk/p-09cd92b4.system.entry.js +0 -1
  234. package/dist/verdocs-web-sdk/p-0e06dc54.entry.js +0 -1
  235. package/dist/verdocs-web-sdk/p-11c26f99.system.entry.js +0 -1
  236. package/dist/verdocs-web-sdk/p-17fd7860.entry.js +0 -1
  237. package/dist/verdocs-web-sdk/p-1dc5393d.entry.js +0 -1
  238. package/dist/verdocs-web-sdk/p-1f06f0d0.entry.js +0 -1
  239. package/dist/verdocs-web-sdk/p-266e163c.entry.js +0 -1
  240. package/dist/verdocs-web-sdk/p-26f16c4a.system.entry.js +0 -1
  241. package/dist/verdocs-web-sdk/p-2e4dfdc6.js +0 -1
  242. package/dist/verdocs-web-sdk/p-34a2538f.system.entry.js +0 -1
  243. package/dist/verdocs-web-sdk/p-453218bc.system.entry.js +0 -1
  244. package/dist/verdocs-web-sdk/p-46bb5543.system.entry.js +0 -1
  245. package/dist/verdocs-web-sdk/p-4a09c8df.entry.js +0 -1
  246. package/dist/verdocs-web-sdk/p-4edc67af.system.entry.js +0 -1
  247. package/dist/verdocs-web-sdk/p-5231a690.system.entry.js +0 -1
  248. package/dist/verdocs-web-sdk/p-52be34b3.system.entry.js +0 -1
  249. package/dist/verdocs-web-sdk/p-54102f3d.entry.js +0 -1
  250. package/dist/verdocs-web-sdk/p-5f09d34b.system.entry.js +0 -1
  251. package/dist/verdocs-web-sdk/p-619098f5.entry.js +0 -1
  252. package/dist/verdocs-web-sdk/p-6f742462.entry.js +0 -1
  253. package/dist/verdocs-web-sdk/p-7abcf805.entry.js +0 -1
  254. package/dist/verdocs-web-sdk/p-7d855960.entry.js +0 -1
  255. package/dist/verdocs-web-sdk/p-86a8b6ad.system.entry.js +0 -1
  256. package/dist/verdocs-web-sdk/p-898b46ce.entry.js +0 -1
  257. package/dist/verdocs-web-sdk/p-8a2dbb48.entry.js +0 -1
  258. package/dist/verdocs-web-sdk/p-8cf35e23.entry.js +0 -1
  259. package/dist/verdocs-web-sdk/p-8d36c969.system.entry.js +0 -1
  260. package/dist/verdocs-web-sdk/p-8efc9749.js +0 -1
  261. package/dist/verdocs-web-sdk/p-952b9288.system.entry.js +0 -1
  262. package/dist/verdocs-web-sdk/p-a0b23dbe.system.entry.js +0 -1
  263. package/dist/verdocs-web-sdk/p-a39b334f.entry.js +0 -1
  264. package/dist/verdocs-web-sdk/p-a4dc6a79.system.js +0 -1
  265. package/dist/verdocs-web-sdk/p-a7433630.system.js +0 -1
  266. package/dist/verdocs-web-sdk/p-acfa887e.entry.js +0 -1
  267. package/dist/verdocs-web-sdk/p-b505db92.system.entry.js +0 -1
  268. package/dist/verdocs-web-sdk/p-bdce7b62.system.entry.js +0 -1
  269. package/dist/verdocs-web-sdk/p-cf8f8562.entry.js +0 -1
  270. package/dist/verdocs-web-sdk/p-d876f216.system.entry.js +0 -1
  271. package/dist/verdocs-web-sdk/p-e1da9867.entry.js +0 -1
  272. package/dist/verdocs-web-sdk/p-e5ed6342.entry.js +0 -1
  273. package/dist/verdocs-web-sdk/p-e9e83cbb.system.entry.js +0 -1
@@ -1,16 +1,13 @@
1
1
  import interact from 'interactjs';
2
2
  import { VerdocsEndpoint } from '@verdocs/js-sdk';
3
3
  import { getRGBA } from '@verdocs/js-sdk/Utils/Colors';
4
+ import { createRole, updateRole } from '@verdocs/js-sdk/Templates/Roles';
4
5
  import { TemplateSenderTypes } from '@verdocs/js-sdk/Templates/Types';
5
- import { h, Fragment } from '@stencil/core';
6
- import { getRoleIndex } from '../../../utils/utils';
6
+ import { h, Fragment, Host } from '@stencil/core';
7
+ import TemplateStore from '../../../utils/templateStore';
7
8
  import { loadTemplate } from '../../../utils/Templates';
9
+ import { getRoleIndex } from '../../../utils/utils';
8
10
  import { SDKError } from '../../../utils/errors';
9
- const arrayMove = (arr, fromIndex, toIndex) => {
10
- const newArr = [...arr];
11
- newArr.splice(toIndex, 0, newArr.splice(fromIndex, 1)[0]);
12
- return newArr;
13
- };
14
11
  const senderLabels = {
15
12
  [TemplateSenderTypes.EVERYONE]: 'Everyone',
16
13
  [TemplateSenderTypes.EVERYONE_AS_CREATOR]: 'Everyone as Me',
@@ -18,28 +15,26 @@ const senderLabels = {
18
15
  [TemplateSenderTypes.ORGANIZATION_MEMBER_AS_CREATOR]: 'Organization Member as Me',
19
16
  [TemplateSenderTypes.CREATOR]: 'Me',
20
17
  };
21
- const settingsIcon = '<svg xmlns="http://www.w3.org/2000/svg" height="20" width="20"><path d="m8.021 17.917-.313-2.5q-.27-.125-.625-.334-.354-.208-.625-.395l-2.312.979-1.979-3.438 1.979-1.5q-.021-.167-.031-.364-.011-.198-.011-.365 0-.146.011-.344.01-.198.031-.385l-1.979-1.5 1.979-3.417 2.312.958q.271-.187.615-.385t.635-.344l.313-2.5h3.958l.313 2.5q.312.167.625.344.312.177.604.385l2.333-.958 1.979 3.417-1.979 1.521q.021.187.021.364V10q0 .146-.01.333-.011.188-.011.396l1.958 1.5-1.979 3.438-2.312-.979q-.292.208-.615.395-.323.188-.614.334l-.313 2.5Zm1.937-5.355q1.063 0 1.813-.75t.75-1.812q0-1.062-.75-1.812t-1.813-.75q-1.041 0-1.802.75-.76.75-.76 1.812t.76 1.812q.761.75 1.802.75Zm0-1.333q-.5 0-.864-.364-.365-.365-.365-.865t.365-.865q.364-.364.864-.364t.865.364q.365.365.365.865t-.365.865q-.365.364-.865.364ZM10.021 10Zm-.854 6.583h1.666l.25-2.187q.605-.167 1.136-.49.531-.323 1.031-.802l2.021.875.854-1.375-1.792-1.354q.105-.333.136-.635.031-.303.031-.615 0-.292-.031-.573-.031-.281-.115-.635l1.792-1.396-.834-1.375-2.062.875q-.438-.438-1.021-.781-.583-.344-1.125-.49l-.271-2.208H9.167l-.271 2.208q-.584.146-1.125.458-.542.313-1.042.792l-2.021-.854-.833 1.375 1.75 1.354q-.083.333-.125.646-.042.312-.042.604t.042.594q.042.302.125.635l-1.75 1.375.833 1.375 2.021-.854q.479.458 1.021.771.542.312 1.146.479Z"/></svg>';
22
- const startIcon = '<svg focusable="false" aria-hidden="true" viewBox="0 0 24 24" tabindex="-1"><path d="M2 12C2 6.48 6.48 2 12 2s10 4.48 10 10-4.48 10-10 10S2 17.52 2 12zm10 6c3.31 0 6-2.69 6-6s-2.69-6-6-6-6 2.69-6 6 2.69 6 6 6z"></path></svg>';
23
- const stepIcon = '<svg focusable="false" aria-hidden="true" viewBox="0 0 24 24" tabindex="-1"><path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"></path></svg>';
24
- const doneIcon = '<svg focusable="false" aria-hidden="true" viewBox="0 0 24 24" tabindex="-1"><path d="m18 7-1.41-1.41-6.34 6.34 1.41 1.41L18 7zm4.24-1.41L11.66 16.17 7.48 12l-1.41 1.41L11.66 19l12-12-1.42-1.41zM.41 13.41 6 19l1.41-1.41L1.83 12 .41 13.41z"></path></svg>';
18
+ const settingsIcon = '<svg xmlns="http://www.w3.org/2000/svg" height="20" width="20" fill="#00000089"><path d="m8.021 17.917-.313-2.5q-.27-.125-.625-.334-.354-.208-.625-.395l-2.312.979-1.979-3.438 1.979-1.5q-.021-.167-.031-.364-.011-.198-.011-.365 0-.146.011-.344.01-.198.031-.385l-1.979-1.5 1.979-3.417 2.312.958q.271-.187.615-.385t.635-.344l.313-2.5h3.958l.313 2.5q.312.167.625.344.312.177.604.385l2.333-.958 1.979 3.417-1.979 1.521q.021.187.021.364V10q0 .146-.01.333-.011.188-.011.396l1.958 1.5-1.979 3.438-2.312-.979q-.292.208-.615.395-.323.188-.614.334l-.313 2.5Zm1.937-5.355q1.063 0 1.813-.75t.75-1.812q0-1.062-.75-1.812t-1.813-.75q-1.041 0-1.802.75-.76.75-.76 1.812t.76 1.812q.761.75 1.802.75Zm0-1.333q-.5 0-.864-.364-.365-.365-.365-.865t.365-.865q.364-.364.864-.364t.865.364q.365.365.365.865t-.365.865q-.365.364-.865.364ZM10.021 10Zm-.854 6.583h1.666l.25-2.187q.605-.167 1.136-.49.531-.323 1.031-.802l2.021.875.854-1.375-1.792-1.354q.105-.333.136-.635.031-.303.031-.615 0-.292-.031-.573-.031-.281-.115-.635l1.792-1.396-.834-1.375-2.062.875q-.438-.438-1.021-.781-.583-.344-1.125-.49l-.271-2.208H9.167l-.271 2.208q-.584.146-1.125.458-.542.313-1.042.792l-2.021-.854-.833 1.375 1.75 1.354q-.083.333-.125.646-.042.312-.042.604t.042.594q.042.302.125.635l-1.75 1.375.833 1.375 2.021-.854q.479.458 1.021.771.542.312 1.146.479Z"/></svg>';
19
+ const startIcon = '<svg focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="#00000089"><path d="M2 12C2 6.48 6.48 2 12 2s10 4.48 10 10-4.48 10-10 10S2 17.52 2 12zm10 6c3.31 0 6-2.69 6-6s-2.69-6-6-6-6 2.69-6 6 2.69 6 6 6z"></path></svg>';
20
+ const stepIcon = '<svg focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="#00000089"><path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"></path></svg>';
21
+ const doneIcon = '<svg focusable="false" aria-hidden="true" viewBox="0 0 24 24" fill="#00000089"><path d="m18 7-1.41-1.41-6.34 6.34 1.41 1.41L18 7zm4.24-1.41L11.66 16.17 7.48 12l-1.41 1.41L11.66 19l12-12-1.42-1.41zM.41 13.41 6 19l1.41-1.41L1.83 12 .41 13.41z"></path></svg>';
22
+ const plusIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="#ffffff" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor"><path strokeLinecap="round" strokeLinejoin="round" d="M12 9v6m3-3H9m12 0a9 9 0 11-18 0 9 9 0 0118 0z" /></svg>`;
23
+ const iconSigner = '<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>';
24
+ const iconApprover = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm13.36-1.814a.75.75 0 10-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 00-1.06 1.06l2.25 2.25a.75.75 0 001.14-.094l3.75-5.25z" clip-rule="evenodd" /></svg>`;
25
+ const iconCC = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z" /><path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z" /></svg>`;
25
26
  /**
26
- * Displays a contact picker suitable for filling out Recipient objects when sending Documents.
27
- *
28
- * This picker can also be integrated with a backend to provide contact list / suggestion / address-book style behavior. As the
29
- * user interacts with the component, the text entered in the name field is sent back to the parent via the `searchContacts` event.
30
- * The parent can use that text as a query string to call a backend to obtain appropriate contacts to show. This list may also be
31
- * hard-coded ahead of time to provide the user with smart suggestions on initial display, such as "Recently Used" contacts, or
32
- * to always display the user's own contact record.
27
+ * Displays an edit form that allows the user to adjust a template's recipients and workflow.
33
28
  */
34
29
  export class VerdocsTemplateRecipients {
35
30
  constructor() {
36
31
  this.sequences = [];
37
- this.rolesAtSequence = {};
38
- this.orderedRoles = [];
39
32
  this.endpoint = VerdocsEndpoint.getDefault();
40
33
  this.templateId = '';
34
+ this.showingRoleDialog = null;
41
35
  this.showingSenderDialog = false;
42
36
  this.sender = null;
37
+ this.forceRerender = 1;
43
38
  }
44
39
  async componentWillLoad() {
45
40
  var _a, _b, _c, _d, _e, _f;
@@ -61,140 +56,91 @@ export class VerdocsTemplateRecipients {
61
56
  console.log('[RECIPIENTS] Error loading template', e);
62
57
  (_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));
63
58
  }
59
+ this.sortTemplateRoles();
60
+ this.renumberTemplateRoles();
64
61
  }
65
62
  catch (e) {
66
63
  console.log('[FIELDS] Error with preview session', e);
67
64
  (_d = this.sdkError) === null || _d === void 0 ? void 0 : _d.emit(new SDKError(e.message, (_e = e.response) === null || _e === void 0 ? void 0 : _e.status, (_f = e.response) === null || _f === void 0 ? void 0 : _f.data));
68
65
  }
69
66
  }
70
- // this.orderedRoles = [
71
- // {
72
- // order: 0,
73
- // template_id: '951016b0-c5ef-450d-b628-9a0c5b84b163',
74
- // name: 'Seller 1',
75
- // full_name: '',
76
- // email: '',
77
- // type: 'signer',
78
- // sequence: 1,
79
- // fields: [],
80
- // delegator: false,
81
- // phone: '',
82
- // },
83
- // {
84
- // order: 1,
85
- // template_id: '951016b0-c5ef-450d-b628-9a0c5b84b163',
86
- // name: 'Seller 2',
87
- // full_name: '',
88
- // email: '',
89
- // type: 'signer',
90
- // sequence: 1,
91
- // fields: [],
92
- // delegator: false,
93
- // phone: '',
94
- // },
95
- // {
96
- // order: 2,
97
- // template_id: '951016b0-c5ef-450d-b628-9a0c5b84b163',
98
- // name: 'Buyer 1',
99
- // full_name: '',
100
- // email: '',
101
- // type: 'signer',
102
- // sequence: 2,
103
- // fields: [],
104
- // delegator: false,
105
- // phone: '',
106
- // },
107
- // {
108
- // order: 3,
109
- // template_id: '951016b0-c5ef-450d-b628-9a0c5b84b163',
110
- // name: 'Buyer 2',
111
- // full_name: '',
112
- // email: '',
113
- // type: 'signer',
114
- // sequence: 2,
115
- // fields: [],
116
- // delegator: false,
117
- // phone: '',
118
- // },
119
- // ];
120
- //
121
- // this.computeRolesBySequence();
122
67
  componentDidRender() {
123
68
  interact.dynamicDrop(true);
124
69
  interact('.recipient').draggable({
125
70
  listeners: {
126
- start(event) {
127
- console.log('drag start', event.type, event.target);
128
- },
129
- move(event) {
130
- const oldX = +(event.target.getAttribute('posX') || 0);
131
- const oldY = +(event.target.getAttribute('posY') || 0);
132
- const newX = event.dx + oldX;
133
- const newY = event.dy + oldY;
134
- event.target.setAttribute('posX', newX);
135
- event.target.setAttribute('posy', newY);
136
- event.target.style.transform = `translate(${newX}px, ${newY}px)`;
137
- },
138
- end(event) {
139
- console.log('end', event);
140
- event.target.setAttribute('posX', 0);
141
- event.target.setAttribute('posy', 0);
142
- event.target.style.transform = `translate(0px, 0px)`;
143
- },
71
+ start: function handleStart(e) {
72
+ e.target.classList.add('dragging');
73
+ this.el.classList.add('dragging');
74
+ }.bind(this),
75
+ move: function handleMove(e) {
76
+ const oldX = +(e.target.getAttribute('posX') || 0);
77
+ const oldY = +(e.target.getAttribute('posY') || 0);
78
+ const newX = e.dx + oldX;
79
+ const newY = e.dy + oldY;
80
+ e.target.setAttribute('posX', newX);
81
+ e.target.setAttribute('posy', newY);
82
+ e.target.style.transform = `translate(${newX + 100}px, ${newY - 40}px)`;
83
+ }.bind(this),
84
+ end: function handleEnd(e) {
85
+ e.target.classList.remove('dragging');
86
+ this.el.classList.remove('dragging');
87
+ // console.log('end', event);
88
+ e.target.setAttribute('posX', 0);
89
+ e.target.setAttribute('posy', 0);
90
+ e.target.style.transform = `translate(0px, 0px)`;
91
+ }.bind(this),
144
92
  },
145
93
  });
146
94
  interact('.dropzone').dropzone({
147
95
  overlap: 0.05,
148
- ondrop: event => {
96
+ ondrop: function handleDrop(event) {
149
97
  event.target.classList.remove('active');
150
- console.log(event.relatedTarget.id + ' was dropped into ' + event.target.id);
98
+ // target will be the recipient e.g. <div class="recipient" data-rolename="Buyer" />
99
+ // relatedTarget will be the drop zone, e.g. <div class="dropzone" data-order="2" data-sequence="1" />
100
+ // console.log(event.relatedTarget, ' was dropped into ', event.target);
101
+ // We don't use the role's own order, we rely on the fact that we sorted earlier on the order field. Many legacy
102
+ // records don't have order fields yet - they're all 1. That doesn't hurt the sort but it would hurt us here if it
103
+ // went 1..1..1 instead of 1..2..3. By using half values here it's easier to handle the drop event later. We don't
104
+ // need to do a fancy find/arraymove dance. We just set the dropped element to the half value, sort the result,
105
+ // then do a final renumber. It's not expensive to do because most flows are typically a small handful (e.g. 1-4)
106
+ // recipients. They never have hundreds.
151
107
  const roleName = event.relatedTarget.dataset.rolename;
152
- const targetOrder = +event.target.dataset.order;
153
108
  const targetSequence = +event.target.dataset.sequence;
154
- // const roleIndex = this.orderedRoles.findIndex(role => role.name === roleToMove);
155
- const roleIndex = this.orderedRoles.findIndex(role => role.name === roleName);
156
- if (roleIndex !== -1) {
157
- console.log('Will move', { roleName, targetOrder, targetSequence, roleIndex });
158
- const role = this.orderedRoles[roleIndex];
159
- role.sequence = targetSequence;
160
- console.log('before', JSON.parse(JSON.stringify(this.orderedRoles)));
161
- this.orderedRoles = arrayMove(this.orderedRoles, roleIndex, targetOrder);
162
- this.orderedRoles.forEach((role, index) => {
163
- role.order = index;
164
- });
165
- console.log('after', JSON.parse(JSON.stringify(this.orderedRoles)));
166
- this.computeRolesBySequence();
109
+ const targetOrder = +event.target.dataset.order;
110
+ const changingRole = TemplateStore.template.roles.find(role => role.name === roleName);
111
+ if (changingRole) {
112
+ // To handle the renumbering, we update the role being moved to the new values, which will be some half-interval e.g.
113
+ // sequence 1.5 order 1. Then we
114
+ changingRole.sequence = targetSequence;
115
+ changingRole.order = targetOrder;
116
+ this.sortTemplateRoles();
117
+ this.renumberTemplateRoles();
118
+ this.forceRerender++;
119
+ // We have to update ALL the roles to be sure each gets new proper sequence/order numbers assigned.
120
+ // TODO: We could optimize this by tracking "dirty" states and only update the roles that have changed. But it's a LOT more
121
+ // code to do right, and since most workflows will typically only have 2-4 recipients max, it may not be worth it.
122
+ Promise.all(TemplateStore.template.roles.map(role => updateRole(this.endpoint, this.templateId, role.name, {
123
+ sequence: role.sequence,
124
+ order: role.order,
125
+ })))
126
+ .then(() => console.log('[RECIPIENTS] Updated roles'))
127
+ .catch(e => console.log('[RECIPIENTS] Role updates failed', e));
167
128
  }
168
- },
129
+ }.bind(this),
169
130
  ondropactivate: e => {
170
- // console.log('drop activated');
171
131
  e.target.classList.add('visible');
172
132
  },
173
133
  ondropdeactivate: e => {
174
134
  e.target.classList.remove('visible');
175
135
  },
176
136
  ondragenter: e => {
177
- // console.log('drag enter', e);
178
137
  e.target.classList.add('active');
179
138
  },
180
139
  ondragleave: e => {
181
- // console.log('drag leave', e);
182
140
  e.target.classList.remove('active');
183
141
  },
184
142
  });
185
143
  }
186
- computeRolesBySequence() {
187
- const rolesAtSequence = {};
188
- this.orderedRoles.forEach(role => {
189
- var _a;
190
- rolesAtSequence[_a = role.sequence] || (rolesAtSequence[_a] = []);
191
- rolesAtSequence[role.sequence].push(role);
192
- });
193
- this.rolesAtSequence = rolesAtSequence;
194
- console.log('ras', this.rolesAtSequence);
195
- this.sequences = Object.keys(rolesAtSequence).map(levelStr => +levelStr);
196
- this.sequences.sort((a, b) => a - b);
197
- }
198
144
  handleCancel(e) {
199
145
  var _a;
200
146
  e.stopPropagation();
@@ -203,17 +149,89 @@ export class VerdocsTemplateRecipients {
203
149
  handleSubmit(e) {
204
150
  e.stopPropagation();
205
151
  }
152
+ sortTemplateRoles() {
153
+ TemplateStore.template.roles.sort((a, b) => {
154
+ return a.sequence === b.sequence ? a.order - b.order : a.sequence - b.sequence;
155
+ });
156
+ }
157
+ extractSequenceNumbers() {
158
+ this.sequences = [];
159
+ TemplateStore.template.roles.forEach(role => {
160
+ if (!this.sequences.includes(role.sequence)) {
161
+ this.sequences.push(role.sequence);
162
+ }
163
+ });
164
+ }
165
+ renumberTemplateRoles() {
166
+ // Extract the sequence numbers because they may now be something like [2.5, 1, 2]
167
+ this.extractSequenceNumbers();
168
+ // We need to renumber each role only ONE TIME
169
+ const renumbered = [];
170
+ // If the user dragged an entry from below a row to above it, we end up here like [1,0]. Make sure it's [0,1] for the next operation.
171
+ this.sequences.sort((a, b) => a - b);
172
+ this.sequences.forEach((originalSequence, newSequenceIndex) => {
173
+ TemplateStore.template.roles
174
+ .filter(role => role.sequence === originalSequence)
175
+ .forEach((role, newOrderIndex) => {
176
+ if (!renumbered.includes(role.name)) {
177
+ role.sequence = newSequenceIndex + 1;
178
+ role.order = newOrderIndex + 1;
179
+ renumbered.push(role.name);
180
+ }
181
+ });
182
+ });
183
+ // Now re-extract them to get our final result e.g. [1, 2, 3]
184
+ this.extractSequenceNumbers();
185
+ }
186
+ handleAddRole(e, sequence) {
187
+ e.stopPropagation();
188
+ // We don't need to look for a unique order number because we're already working with a sorted/renumbered set by now.
189
+ const order = TemplateStore.template.roles.filter(role => role.sequence === sequence).length + 1;
190
+ // We do need to look for name conflicts because they're UGC and can be anything, regardless of order.
191
+ let name = '';
192
+ let nextNumber = TemplateStore.template.roles.length;
193
+ do {
194
+ nextNumber++;
195
+ name = `Recipient ${nextNumber}`;
196
+ } while (!name || TemplateStore.template.roles.some(role => role.name === name));
197
+ console.log('Will create', name, sequence, order);
198
+ createRole(this.endpoint, this.templateId, {
199
+ template_id: this.templateId,
200
+ name,
201
+ full_name: '',
202
+ email: '',
203
+ phone: '',
204
+ sequence,
205
+ order,
206
+ type: 'signer',
207
+ delegator: false,
208
+ })
209
+ .then(r => {
210
+ console.log('Created role', r);
211
+ TemplateStore.template.roles.push(r);
212
+ this.renumberTemplateRoles();
213
+ this.forceRerender++;
214
+ })
215
+ .catch(e => {
216
+ console.log('Error creating role', e);
217
+ });
218
+ }
206
219
  render() {
207
- console.log('ordered roles', JSON.parse(JSON.stringify(this.orderedRoles)));
208
- const roleNames = this.orderedRoles.map(role => role.name) || [];
209
- let beforeOrder = 0;
210
- return (h("form", { onSubmit: e => e.preventDefault(), onClick: e => e.stopPropagation(), autocomplete: "off" }, h("h5", null, "Participant Order"), h("div", { class: "participants" }, h("div", { class: "left-line" }), h("div", { class: "row" }, h("div", { class: "icon", innerHTML: startIcon }), h("div", { class: "sender" }, h("span", { class: "label" }, "Sender:"), " ", senderLabels[this.sender], ' ', h("div", { class: "settings-button", innerHTML: settingsIcon, onClick: () => (this.showingSenderDialog = true), "aria-role": "button" }))), this.sequences.map(sequence => (h("div", { class: "row" }, h("div", { class: "icon", innerHTML: stepIcon }), h("div", { class: "dropzone", "data-order": beforeOrder, "data-sequence": sequence }), this.rolesAtSequence[sequence].map(role => {
211
- beforeOrder = role.order;
212
- return (h(Fragment, null, h("div", { class: "recipient", style: { backgroundColor: getRGBA(getRoleIndex(roleNames, role.name)) }, "data-rolename": role.name }, role.name, " ", h("div", { class: "settings-button", innerHTML: settingsIcon, onClick: () => (this.showingSenderDialog = true), "aria-role": "button" })), h("div", { class: "dropzone", "data-order": beforeOrder, "data-sequence": sequence })));
213
- })))), h("div", { class: "row" }, h("div", { class: "icon", innerHTML: doneIcon }), h("div", { class: "complete" }, "Document Complete"))), 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) })), this.showingSenderDialog && (h("verdocs-template-sender-dialog", { value: this.sender, onCancel: () => (this.showingSenderDialog = false), onNext: e => {
214
- this.showingSenderDialog = false;
215
- this.sender = e.detail;
216
- } }))));
220
+ // console.log('Roles', JSON.parse(JSON.stringify(TemplateStore.template.roles)));
221
+ const roleNames = TemplateStore.template.roles.map(role => role.name);
222
+ return (h(Host, null, h("form", { onSubmit: e => e.preventDefault(), onClick: e => e.stopPropagation(), autocomplete: "off", "data-r": this.forceRerender }, h("h5", null, "Recipients"), 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
223
+ .filter(role => role.sequence === sequence)
224
+ .map(role => {
225
+ 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 })));
226
+ }), 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" }, h("div", { class: "icon", innerHTML: doneIcon }), h("div", { class: "row-recipients" }, h("div", { class: "complete" }, "Document Complete")))), 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) }))), this.showingRoleDialog && (h("verdocs-template-role-properties", { endpoint: this.endpoint, templateId: this.templateId, roleName: this.showingRoleDialog, onClose: () => {
227
+ this.showingRoleDialog = null;
228
+ this.forceRerender++;
229
+ }, onDelete: e => {
230
+ console.log('deleted', e.detail);
231
+ this.renumberTemplateRoles();
232
+ this.showingRoleDialog = null;
233
+ this.forceRerender++;
234
+ } })), this.showingSenderDialog && h("verdocs-template-sender", { endpoint: this.endpoint, templateId: this.templateId, onClose: () => (this.showingSenderDialog = false) })));
217
235
  }
218
236
  static get is() { return "verdocs-template-recipients"; }
219
237
  static get originalStyleUrls() {
@@ -271,8 +289,10 @@ export class VerdocsTemplateRecipients {
271
289
  }
272
290
  static get states() {
273
291
  return {
292
+ "showingRoleDialog": {},
274
293
  "showingSenderDialog": {},
275
- "sender": {}
294
+ "sender": {},
295
+ "forceRerender": {}
276
296
  };
277
297
  }
278
298
  static get events() {
@@ -313,4 +333,5 @@ export class VerdocsTemplateRecipients {
313
333
  }
314
334
  }];
315
335
  }
336
+ static get elementRef() { return "el"; }
316
337
  }
@@ -1,12 +1,13 @@
1
1
  import { html } from 'lit-html';
2
2
  export default {
3
- title: 'Templates/Template Recipients',
3
+ title: 'Templates/Recipients',
4
4
  component: 'verdocs-template-recipients',
5
5
  args: {
6
- templateId: '951016b0-c5ef-450d-b628-9a0c5b84b163',
6
+ templateId: '056b837f-b183-4039-b50a-d68acbf81b67',
7
+ // templateId: 'd2338742-f3a1-465b-8592-806587413cc1',
7
8
  },
8
9
  argTypes: {
9
- cancel: { action: 'cancel' },
10
+ close: { action: 'cancel' },
10
11
  },
11
12
  };
12
- export const TemplateRecipients = ({ templateId, cancel }) => html `<verdocs-template-recipients .templateId=${templateId} @cancel=${cancel} />`;
13
+ export const Recipients = ({ templateId, cancel }) => html `<verdocs-template-recipients .templateId=${templateId} @cancel=${cancel} />`;
@@ -13,10 +13,17 @@ verdocs-template-reminders form {
13
13
  display: flex;
14
14
  flex-direction: column;
15
15
  }
16
+ verdocs-template-reminders form h5 {
17
+ font-size: 16px;
18
+ font-weight: bold;
19
+ color: #4c56cb;
20
+ margin: 0 0 20px 0;
21
+ }
16
22
  verdocs-template-reminders form label {
17
23
  font-size: 16px;
18
24
  font-weight: 500;
19
25
  margin: 0 0 6px 0;
26
+ color: #33364b;
20
27
  }
21
28
  verdocs-template-reminders form input {
22
29
  border: none;
@@ -5,7 +5,7 @@ import TemplateStore from '../../../utils/templateStore';
5
5
  import { loadTemplate } from '../../../utils/Templates';
6
6
  import { SDKError } from '../../../utils/errors';
7
7
  /**
8
- * Displays a collection of settings boxes that allow a user to configure a template's behavior.
8
+ * Displays an edit form that allows the user to adjust a template's reminders.
9
9
  */
10
10
  export class VerdocsTemplateReminders {
11
11
  constructor() {
@@ -69,7 +69,7 @@ export class VerdocsTemplateReminders {
69
69
  if (!this.endpoint.session || !TemplateStore.template) {
70
70
  return h(Host, { class: "empty" });
71
71
  }
72
- return (h(Host, null, h("form", { onSubmit: e => e.preventDefault(), onClick: e => e.stopPropagation(), autocomplete: "off" }, h("div", { class: "input-row" }, h("label", { htmlFor: "verdocs-send-reminders" }, "Send Automatic Reminders"), h("verdocs-checkbox", { id: "verdocs-send-reminders", name: "automatic-reminders", checked: this.sendReminders, value: "on", onInput: (e) => {
72
+ return (h(Host, null, h("form", { onSubmit: e => e.preventDefault(), onClick: e => e.stopPropagation(), autocomplete: "off" }, h("h5", null, "Reminders"), h("div", { class: "input-row" }, h("label", { htmlFor: "verdocs-send-reminders" }, "Send Automatic Reminders"), h("verdocs-checkbox", { id: "verdocs-send-reminders", name: "automatic-reminders", checked: this.sendReminders, value: "on", onInput: (e) => {
73
73
  this.showPlanBlocker = true;
74
74
  e.target.checked = false;
75
75
  // this.sendReminders = e.target.checked;
@@ -1,6 +1,6 @@
1
1
  import { html } from 'lit-html';
2
2
  export default {
3
- title: 'Templates/Template Reminders',
3
+ title: 'Templates/Reminders',
4
4
  component: 'verdocs-template-reminders',
5
5
  args: {
6
6
  // templateId: '',
@@ -10,7 +10,7 @@ export default {
10
10
  onClose: { action: 'close' },
11
11
  },
12
12
  };
13
- export const TemplateReminders = ({ onClose, templateId }) => templateId
13
+ export const Reminders = ({ onClose, templateId }) => templateId
14
14
  ? html `
15
15
  <div style="width: 360px; background: #ffffff; padding: 20px; box-sizing: border-box">
16
16
  <verdocs-template-reminders .templateId=${templateId} @close=${onClose} />
@@ -0,0 +1,105 @@
1
+ verdocs-template-role-properties {
2
+ font-family: "Barlow", sans-serif;
3
+ box-sizing: border-box;
4
+ }
5
+ verdocs-template-role-properties div {
6
+ box-sizing: border-box;
7
+ }
8
+ verdocs-template-role-properties .background-overlay {
9
+ position: absolute;
10
+ z-index: 10000;
11
+ top: 0;
12
+ left: 0;
13
+ right: 0;
14
+ bottom: 0;
15
+ display: flex;
16
+ align-items: center;
17
+ justify-content: center;
18
+ background: #0000007f;
19
+ }
20
+ verdocs-template-role-properties .dialog {
21
+ width: 340px;
22
+ display: flex;
23
+ flex-direction: column;
24
+ border-radius: 4px;
25
+ overflow: hidden;
26
+ background: #ffffff;
27
+ padding: 16px;
28
+ box-shadow: 3px 3px 5px 1px rgba(40, 40, 40, 0.4);
29
+ }
30
+ verdocs-template-role-properties .heading {
31
+ display: flex;
32
+ font-size: 20px;
33
+ font-weight: 500;
34
+ flex-direction: row;
35
+ }
36
+ verdocs-template-role-properties .buttons {
37
+ display: flex;
38
+ margin-top: 10px;
39
+ align-items: center;
40
+ flex-direction: row;
41
+ justify-content: flex-end;
42
+ }
43
+ verdocs-template-role-properties .buttons verdocs-button {
44
+ margin-left: 16px;
45
+ }
46
+ verdocs-template-role-properties form .row {
47
+ display: flex;
48
+ column-gap: 15px;
49
+ margin: 0 0 10px 0;
50
+ align-items: center;
51
+ flex-direction: row;
52
+ }
53
+ verdocs-template-role-properties form .row .input-label {
54
+ display: block;
55
+ color: #555570;
56
+ font-weight: 700;
57
+ font-size: 14px;
58
+ margin: 0 0 4px 0;
59
+ flex: 0 0 100px;
60
+ }
61
+ verdocs-template-role-properties verdocs-select-input {
62
+ flex: 1;
63
+ margin: 0;
64
+ }
65
+ verdocs-template-role-properties verdocs-text-input {
66
+ margin: 0 0 10px 0;
67
+ }
68
+ verdocs-template-role-properties verdocs-text-input label {
69
+ margin: 0;
70
+ display: flex;
71
+ column-gap: 15px;
72
+ align-items: center;
73
+ flex-direction: row;
74
+ }
75
+ verdocs-template-role-properties verdocs-text-input .input-label {
76
+ flex: 0 0 100px;
77
+ }
78
+ verdocs-template-role-properties verdocs-text-input input {
79
+ flex: 1;
80
+ display: flex;
81
+ }
82
+ verdocs-template-role-properties verdocs-text-input verdocs-text-input {
83
+ margin: 0;
84
+ }
85
+ verdocs-template-role-properties .checkbox-wrapper {
86
+ flex: 1;
87
+ display: flex;
88
+ }
89
+ verdocs-template-role-properties .delete-button {
90
+ height: 34px;
91
+ display: flex;
92
+ cursor: pointer;
93
+ background: none;
94
+ border-radius: 4px;
95
+ align-items: center;
96
+ border: 1px solid #999;
97
+ justify-content: center;
98
+ }
99
+ verdocs-template-role-properties .delete-button:active {
100
+ background: #f3f3f3;
101
+ }
102
+ verdocs-template-role-properties .delete-button svg {
103
+ width: 24px;
104
+ height: 24px;
105
+ }