@verdocs/web-sdk 1.11.3 → 1.11.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/dist/cjs/{Templates-16615cb0.js → Templates-7a63d848.js} +1 -1
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/verdocs-build.cjs.entry.js +1 -1
  4. package/dist/cjs/verdocs-button-panel_3.cjs.entry.js +1 -1
  5. package/dist/cjs/verdocs-field-checkbox.cjs.entry.js +2 -1
  6. package/dist/cjs/verdocs-field-date.cjs.entry.js +2 -1
  7. package/dist/cjs/verdocs-field-dropdown.cjs.entry.js +1 -0
  8. package/dist/cjs/verdocs-field-initial.cjs.entry.js +2 -1
  9. package/dist/cjs/verdocs-field-payment.cjs.entry.js +1 -0
  10. package/dist/cjs/verdocs-field-radio-button.cjs.entry.js +2 -1
  11. package/dist/cjs/verdocs-field-signature.cjs.entry.js +2 -1
  12. package/dist/cjs/verdocs-field-textarea.cjs.entry.js +2 -1
  13. package/dist/cjs/verdocs-field-textbox.cjs.entry.js +2 -1
  14. package/dist/cjs/verdocs-field-timestamp.cjs.entry.js +2 -1
  15. package/dist/cjs/verdocs-floating-menu.cjs.entry.js +106 -0
  16. package/dist/cjs/verdocs-preview.cjs.entry.js +1 -1
  17. package/dist/cjs/verdocs-send.cjs.entry.js +1 -1
  18. package/dist/cjs/verdocs-template-attachments.cjs.entry.js +1 -1
  19. package/dist/cjs/verdocs-template-create_2.cjs.entry.js +30 -16
  20. package/dist/cjs/verdocs-template-document-page.cjs.entry.js +103 -0
  21. package/dist/cjs/verdocs-template-name.cjs.entry.js +1 -1
  22. package/dist/cjs/verdocs-template-recipients.cjs.entry.js +1 -1
  23. package/dist/cjs/verdocs-template-reminders.cjs.entry.js +1 -1
  24. package/dist/cjs/verdocs-template-role-properties_2.cjs.entry.js +1 -1
  25. package/dist/cjs/verdocs-template-visibility.cjs.entry.js +1 -1
  26. package/dist/cjs/verdocs-toolbar-icon.cjs.entry.js +51 -0
  27. package/dist/cjs/verdocs-web-sdk.cjs.js +1 -1
  28. package/dist/collection/components/elements/verdocs-template-document-page/verdocs-template-document-page.js +1 -1
  29. package/dist/collection/components/embeds/verdocs-preview/verdocs-preview.stories.js +2 -1
  30. package/dist/collection/components/fields/verdocs-field-checkbox/verdocs-field-checkbox.js +16 -1
  31. package/dist/collection/components/fields/verdocs-field-date/verdocs-field-date.js +16 -1
  32. package/dist/collection/components/fields/verdocs-field-dropdown/verdocs-field-dropdown.js +15 -0
  33. package/dist/collection/components/fields/verdocs-field-initial/verdocs-field-initial.js +16 -1
  34. package/dist/collection/components/fields/verdocs-field-payment/verdocs-field-payment.js +15 -0
  35. package/dist/collection/components/fields/verdocs-field-radio-button-group/verdocs-field-radio-button.js +16 -1
  36. package/dist/collection/components/fields/verdocs-field-signature/verdocs-field-signature.js +16 -1
  37. package/dist/collection/components/fields/verdocs-field-textarea/verdocs-field-textarea.js +16 -1
  38. package/dist/collection/components/fields/verdocs-field-textbox/verdocs-field-textbox.js +16 -1
  39. package/dist/collection/components/fields/verdocs-field-timestamp/verdocs-field-timestamp.js +16 -1
  40. package/dist/collection/components/templates/verdocs-template-fields/verdocs-template-fields.css +16 -2
  41. package/dist/collection/components/templates/verdocs-template-fields/verdocs-template-fields.js +46 -14
  42. package/dist/collection/utils/Templates.js +1 -1
  43. package/dist/components/Templates.js +1 -1
  44. package/dist/components/verdocs-build.js +4 -10
  45. package/dist/components/verdocs-field-checkbox.js +2 -1
  46. package/dist/components/verdocs-field-date.js +2 -1
  47. package/dist/components/verdocs-field-dropdown.js +1 -0
  48. package/dist/components/verdocs-field-initial.js +2 -1
  49. package/dist/components/verdocs-field-payment.js +1 -0
  50. package/dist/components/verdocs-field-radio-button.js +2 -1
  51. package/dist/components/verdocs-field-signature.js +2 -1
  52. package/dist/components/verdocs-field-textarea.js +2 -1
  53. package/dist/components/verdocs-field-textbox.js +2 -1
  54. package/dist/components/verdocs-field-timestamp.js +2 -1
  55. package/dist/components/verdocs-floating-menu.js +123 -1
  56. package/dist/components/verdocs-template-document-page2.js +1 -1
  57. package/dist/components/verdocs-template-fields2.js +32 -23
  58. package/dist/docs.json +120 -20
  59. package/dist/esm/{Templates-2528dad5.js → Templates-e288e682.js} +1 -1
  60. package/dist/esm/loader.js +1 -1
  61. package/dist/esm/verdocs-build.entry.js +1 -1
  62. package/dist/esm/verdocs-button-panel_3.entry.js +1 -1
  63. package/dist/esm/verdocs-field-checkbox.entry.js +2 -1
  64. package/dist/esm/verdocs-field-date.entry.js +2 -1
  65. package/dist/esm/verdocs-field-dropdown.entry.js +1 -0
  66. package/dist/esm/verdocs-field-initial.entry.js +2 -1
  67. package/dist/esm/verdocs-field-payment.entry.js +1 -0
  68. package/dist/esm/verdocs-field-radio-button.entry.js +2 -1
  69. package/dist/esm/verdocs-field-signature.entry.js +2 -1
  70. package/dist/esm/verdocs-field-textarea.entry.js +2 -1
  71. package/dist/esm/verdocs-field-textbox.entry.js +2 -1
  72. package/dist/esm/verdocs-field-timestamp.entry.js +2 -1
  73. package/dist/{components/verdocs-floating-menu2.js → esm/verdocs-floating-menu.entry.js} +8 -31
  74. package/dist/esm/verdocs-preview.entry.js +1 -1
  75. package/dist/esm/verdocs-send.entry.js +1 -1
  76. package/dist/esm/verdocs-template-attachments.entry.js +1 -1
  77. package/dist/esm/verdocs-template-create_2.entry.js +30 -16
  78. package/dist/esm/verdocs-template-document-page.entry.js +99 -0
  79. package/dist/esm/verdocs-template-name.entry.js +1 -1
  80. package/dist/esm/verdocs-template-recipients.entry.js +1 -1
  81. package/dist/esm/verdocs-template-reminders.entry.js +1 -1
  82. package/dist/esm/verdocs-template-role-properties_2.entry.js +1 -1
  83. package/dist/esm/verdocs-template-visibility.entry.js +1 -1
  84. package/dist/esm/verdocs-toolbar-icon.entry.js +47 -0
  85. package/dist/esm/verdocs-web-sdk.js +1 -1
  86. package/dist/esm-es5/{Templates-2528dad5.js → Templates-e288e682.js} +1 -1
  87. package/dist/esm-es5/loader.js +1 -1
  88. package/dist/esm-es5/verdocs-build.entry.js +1 -1
  89. package/dist/esm-es5/verdocs-button-panel_3.entry.js +1 -1
  90. package/dist/esm-es5/verdocs-field-checkbox.entry.js +1 -1
  91. package/dist/esm-es5/verdocs-field-date.entry.js +1 -1
  92. package/dist/esm-es5/verdocs-field-dropdown.entry.js +1 -1
  93. package/dist/esm-es5/verdocs-field-initial.entry.js +1 -1
  94. package/dist/esm-es5/verdocs-field-payment.entry.js +1 -1
  95. package/dist/esm-es5/verdocs-field-radio-button.entry.js +1 -1
  96. package/dist/esm-es5/verdocs-field-signature.entry.js +1 -1
  97. package/dist/esm-es5/verdocs-field-textarea.entry.js +1 -1
  98. package/dist/esm-es5/verdocs-field-textbox.entry.js +1 -1
  99. package/dist/esm-es5/verdocs-field-timestamp.entry.js +1 -1
  100. package/dist/esm-es5/verdocs-floating-menu.entry.js +1 -0
  101. package/dist/esm-es5/verdocs-preview.entry.js +1 -1
  102. package/dist/esm-es5/verdocs-send.entry.js +1 -1
  103. package/dist/esm-es5/verdocs-template-attachments.entry.js +1 -1
  104. package/dist/esm-es5/verdocs-template-create_2.entry.js +1 -1
  105. package/dist/esm-es5/verdocs-template-document-page.entry.js +1 -0
  106. package/dist/esm-es5/verdocs-template-name.entry.js +1 -1
  107. package/dist/esm-es5/verdocs-template-recipients.entry.js +1 -1
  108. package/dist/esm-es5/verdocs-template-reminders.entry.js +1 -1
  109. package/dist/esm-es5/verdocs-template-role-properties_2.entry.js +1 -1
  110. package/dist/esm-es5/verdocs-template-visibility.entry.js +1 -1
  111. package/dist/esm-es5/verdocs-toolbar-icon.entry.js +1 -0
  112. package/dist/esm-es5/verdocs-web-sdk.js +1 -1
  113. package/dist/types/components/fields/verdocs-field-checkbox/verdocs-field-checkbox.d.ts +6 -0
  114. package/dist/types/components/fields/verdocs-field-date/verdocs-field-date.d.ts +6 -0
  115. package/dist/types/components/fields/verdocs-field-dropdown/verdocs-field-dropdown.d.ts +6 -0
  116. package/dist/types/components/fields/verdocs-field-initial/verdocs-field-initial.d.ts +6 -0
  117. package/dist/types/components/fields/verdocs-field-payment/verdocs-field-payment.d.ts +6 -0
  118. package/dist/types/components/fields/verdocs-field-radio-button-group/verdocs-field-radio-button.d.ts +6 -0
  119. package/dist/types/components/fields/verdocs-field-signature/verdocs-field-signature.d.ts +6 -0
  120. package/dist/types/components/fields/verdocs-field-textarea/verdocs-field-textarea.d.ts +6 -0
  121. package/dist/types/components/fields/verdocs-field-textbox/verdocs-field-textbox.d.ts +6 -0
  122. package/dist/types/components/fields/verdocs-field-timestamp/verdocs-field-timestamp.d.ts +6 -0
  123. package/dist/types/components/templates/verdocs-template-fields/verdocs-template-fields.d.ts +6 -0
  124. package/dist/types/components.d.ts +48 -0
  125. package/dist/verdocs-web-sdk/p-07f254ef.system.entry.js +1 -0
  126. package/dist/verdocs-web-sdk/p-0be7122f.entry.js +1 -0
  127. package/dist/verdocs-web-sdk/{p-a4b4ce45.entry.js → p-0c3d9831.entry.js} +1 -1
  128. package/dist/verdocs-web-sdk/p-11161d87.entry.js +1 -0
  129. package/dist/verdocs-web-sdk/p-17d70035.entry.js +1 -0
  130. package/dist/verdocs-web-sdk/{p-3019014e.system.entry.js → p-1872ef41.system.entry.js} +1 -1
  131. package/dist/verdocs-web-sdk/{p-817e6569.system.entry.js → p-190394ec.system.entry.js} +1 -1
  132. package/dist/verdocs-web-sdk/p-1aa26bbb.entry.js +1 -0
  133. package/dist/verdocs-web-sdk/{p-0aaa85ed.system.entry.js → p-23255004.system.entry.js} +1 -1
  134. package/dist/verdocs-web-sdk/p-23842282.entry.js +1 -0
  135. package/dist/verdocs-web-sdk/{p-58dda3d1.system.entry.js → p-2699042e.system.entry.js} +1 -1
  136. package/dist/verdocs-web-sdk/{p-671036fb.js → p-2ae1b96d.js} +1 -1
  137. package/dist/verdocs-web-sdk/{p-9b9ecf94.system.entry.js → p-2d9225e9.system.entry.js} +1 -1
  138. package/dist/verdocs-web-sdk/p-3046d912.entry.js +1 -0
  139. package/dist/verdocs-web-sdk/p-37146bc0.system.entry.js +1 -0
  140. package/dist/verdocs-web-sdk/p-442b0dca.entry.js +1 -0
  141. package/dist/verdocs-web-sdk/p-479d7e1f.entry.js +1 -0
  142. package/dist/verdocs-web-sdk/p-49a1c436.entry.js +1 -0
  143. package/dist/verdocs-web-sdk/p-50a2bf7b.system.entry.js +1 -0
  144. package/dist/verdocs-web-sdk/p-608de9cf.system.entry.js +1 -0
  145. package/dist/verdocs-web-sdk/p-61dbd1ed.system.entry.js +1 -0
  146. package/dist/verdocs-web-sdk/{p-5d6c8737.entry.js → p-623e2beb.entry.js} +1 -1
  147. package/dist/verdocs-web-sdk/{p-760262f3.system.entry.js → p-66384a4c.system.entry.js} +1 -1
  148. package/dist/verdocs-web-sdk/{p-93f0d41c.system.entry.js → p-68c780bd.system.entry.js} +1 -1
  149. package/dist/verdocs-web-sdk/{p-06512901.entry.js → p-71cce0f0.entry.js} +1 -1
  150. package/dist/verdocs-web-sdk/{p-6e3daf5a.system.js → p-7e58e898.system.js} +1 -1
  151. package/dist/verdocs-web-sdk/{p-53261332.entry.js → p-7f0e6545.entry.js} +1 -1
  152. package/dist/verdocs-web-sdk/p-8012b6c0.entry.js +1 -0
  153. package/dist/verdocs-web-sdk/{p-9ccdb9a9.system.entry.js → p-80345c52.system.entry.js} +1 -1
  154. package/dist/verdocs-web-sdk/{p-9b7d218c.system.entry.js → p-8175a794.system.entry.js} +1 -1
  155. package/dist/verdocs-web-sdk/{p-82452c9b.system.entry.js → p-86bd8c38.system.entry.js} +1 -1
  156. package/dist/verdocs-web-sdk/p-8f61a9ee.entry.js +1 -0
  157. package/dist/verdocs-web-sdk/{p-ffdcc57f.system.entry.js → p-939190da.system.entry.js} +1 -1
  158. package/dist/verdocs-web-sdk/{p-05f3c7bb.system.entry.js → p-96f838ea.system.entry.js} +1 -1
  159. package/dist/verdocs-web-sdk/{p-72bc8464.system.entry.js → p-98ce58df.system.entry.js} +1 -1
  160. package/dist/verdocs-web-sdk/{p-84b3f146.entry.js → p-99942818.entry.js} +1 -1
  161. package/dist/verdocs-web-sdk/{p-9f6e7b4a.system.entry.js → p-99c75b7d.system.entry.js} +1 -1
  162. package/dist/verdocs-web-sdk/{p-3379e220.entry.js → p-9ba92e4f.entry.js} +1 -1
  163. package/dist/verdocs-web-sdk/{p-e29f375d.system.entry.js → p-a0d235a3.system.entry.js} +1 -1
  164. package/dist/verdocs-web-sdk/{p-ca0a2a00.entry.js → p-a3a9fcba.entry.js} +1 -1
  165. package/dist/verdocs-web-sdk/{p-bac9ba46.system.entry.js → p-a5237a8c.system.entry.js} +1 -1
  166. package/dist/verdocs-web-sdk/{p-686608f0.entry.js → p-aa7f6376.entry.js} +1 -1
  167. package/dist/verdocs-web-sdk/{p-37e93857.system.entry.js → p-ab500634.system.entry.js} +1 -1
  168. package/dist/verdocs-web-sdk/{p-5a63da92.system.entry.js → p-b6e6f993.system.entry.js} +1 -1
  169. package/dist/verdocs-web-sdk/p-c16b6ca4.system.js +1 -1
  170. package/dist/verdocs-web-sdk/{p-27396fa8.entry.js → p-d0bac2b8.entry.js} +1 -1
  171. package/dist/verdocs-web-sdk/{p-87e67bc6.system.entry.js → p-d2af1be8.system.entry.js} +1 -1
  172. package/dist/verdocs-web-sdk/p-dd4589d9.entry.js +1 -0
  173. package/dist/verdocs-web-sdk/{p-e79aabb3.entry.js → p-e40012b6.entry.js} +1 -1
  174. package/dist/verdocs-web-sdk/p-f12e0150.entry.js +1 -0
  175. package/dist/verdocs-web-sdk/p-fb69732f.entry.js +1 -0
  176. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
  177. package/package.json +1 -1
  178. package/dist/cjs/verdocs-floating-menu_3.cjs.entry.js +0 -248
  179. package/dist/custom-elements.json +0 -1390
  180. package/dist/esm/verdocs-floating-menu_3.entry.js +0 -242
  181. package/dist/esm-es5/verdocs-floating-menu_3.entry.js +0 -1
  182. package/dist/verdocs-web-sdk/p-0049ecc7.entry.js +0 -1
  183. package/dist/verdocs-web-sdk/p-0ef66c28.system.entry.js +0 -1
  184. package/dist/verdocs-web-sdk/p-2c3aecb8.entry.js +0 -1
  185. package/dist/verdocs-web-sdk/p-4a17efd7.entry.js +0 -1
  186. package/dist/verdocs-web-sdk/p-4e9b66b1.system.entry.js +0 -1
  187. package/dist/verdocs-web-sdk/p-4fc181bd.entry.js +0 -1
  188. package/dist/verdocs-web-sdk/p-64a6448f.entry.js +0 -1
  189. package/dist/verdocs-web-sdk/p-66bf5e70.entry.js +0 -1
  190. package/dist/verdocs-web-sdk/p-6a736c6a.entry.js +0 -1
  191. package/dist/verdocs-web-sdk/p-823bf074.entry.js +0 -1
  192. package/dist/verdocs-web-sdk/p-93e8443f.system.entry.js +0 -1
  193. package/dist/verdocs-web-sdk/p-95ed895f.entry.js +0 -1
  194. package/dist/verdocs-web-sdk/p-cb4d8942.entry.js +0 -1
  195. package/dist/verdocs-web-sdk/p-e7b7bd2b.entry.js +0 -1
  196. package/dist/verdocs-web-sdk/p-f5c1ceb0.entry.js +0 -1
@@ -36,6 +36,20 @@ verdocs-template-fields .pages div,
36
36
  verdocs-template-fields .pages canvas {
37
37
  box-sizing: border-box;
38
38
  }
39
+ verdocs-template-fields #verdocs-template-fields-toolbar {
40
+ height: 50px;
41
+ display: flex;
42
+ flex: 0 0 50px;
43
+ align-items: center;
44
+ flex-direction: row;
45
+ justify-content: center;
46
+ column-gap: 15px;
47
+ background: #46497d;
48
+ }
49
+ verdocs-template-fields #verdocs-template-fields-toolbar svg {
50
+ width: 24px;
51
+ height: 24px;
52
+ }
39
53
  verdocs-template-fields.placing-attachment {
40
54
  cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='m10.55 16.55 7.275-7.275L16.05 7.5l-5.5 5.45-2.675-2.65L6.1 12.075Zm-5.375 4.925q-1.125 0-1.887-.763-.763-.762-.763-1.887V5.175q0-1.125.763-1.888.762-.762 1.887-.762h13.65q1.125 0 1.888.762.762.763.762 1.888v13.65q0 1.125-.762 1.887-.763.763-1.888.763Zm0-2.65h13.65V5.175H5.175v13.65Zm0-13.65v13.65-13.65Z'/%3E%3C/svg%3E") 16 16, pointer;
41
55
  }
@@ -64,8 +78,8 @@ verdocs-template-fields.placing-textarea {
64
78
  cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='M3.225 20.725v-3.15h11.55v3.15Zm0-4.775V12.8h17.55v3.15Zm0-4.75V8.05h17.55v3.15Zm0-4.775v-3.15h17.55v3.15Z'/%3E%3C/svg%3E") 16 16, pointer;
65
79
  }
66
80
  verdocs-template-fields.placing-textbox {
67
- cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='M3.425 16.15V13h11.15v3.15Zm0-5.15V7.85h17.15V11Z'/%3E%3C/svg%3E") 16 16, pointer;
81
+ cursor: url("data:image/svg+xml,%3Csvg width='32' height='15' viewBox='0 0 32 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cmask id='path-1-inside-1_1401_24' fill='white'%3E%3Cpath d='M0 0H32V15H0V0Z'/%3E%3C/mask%3E%3Cpath d='M0 0H32V15H0V0Z' fill='%234C56CB' fill-opacity='0.1'/%3E%3Cpath d='M0 0V-1H-1V0H0ZM0 15H-1V16H0V15ZM0 1H32V-1H0V1ZM32 14H0V16H32V14ZM1 15V0H-1V15H1Z' fill='%234C56CB' mask='url(%23path-1-inside-1_1401_24)'/%3E%3Cpath d='M3 11.8V8.65H14.15V11.8H3ZM3 6.65V3.5H20.15V6.65H3Z' fill='%234C56CB'/%3E%3Cline x1='31.5' y1='1' x2='31.5' y2='14' stroke='%234C56CB' stroke-opacity='0.32' stroke-dasharray='1 1'/%3E%3C/svg%3E%0A") 0 14, pointer;
68
82
  }
69
83
  verdocs-template-fields.placing-timestamp {
70
- cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='m10.55 16.55 7.275-7.275L16.05 7.5l-5.5 5.45-2.675-2.65L6.1 12.075Zm-5.375 4.925q-1.125 0-1.887-.763-.763-.762-.763-1.887V5.175q0-1.125.763-1.888.762-.762 1.887-.762h13.65q1.125 0 1.888.762.762.763.762 1.888v13.65q0 1.125-.762 1.887-.763.763-1.888.763Zm0-2.65h13.65V5.175H5.175v13.65Zm0-13.65v13.65-13.65Z'/%3E%3C/svg%3E") 16 16, pointer;
84
+ cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24'%3E%3Cpath d='m10.55 16.55 7.275-7.275L16.05 7.5l-5.5 5.45-2.675-2.65L6.1 12.075Zm-5.375 4.925q-1.125 0-1.887-.763-.763-.762-.763-1.887V5.175q0-1.125.763-1.888.762-.762 1.887-.762h13.65q1.125 0 1.888.762.762.763.762 1.888v13.65q0 1.125-.762 1.887-.763.763-1.888.763Zm0-2.65h13.65V5.175H5.175v13.65Zm0-13.65v13.65-13.65Z'/%3E%3C/svg%3E") 0 14, pointer;
71
85
  }
@@ -6,25 +6,27 @@ import { defaultHeight, defaultWidth, getRoleIndex, renderDocumentField, updateC
6
6
  import TemplateStore from '../../../utils/templateStore';
7
7
  import { loadTemplate } from '../../../utils/Templates';
8
8
  import { SDKError } from '../../../utils/errors';
9
- const iconSingleline = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path d="M3.425 16.15V13h11.15v3.15Zm0-5.15V7.85h17.15V11Z"/></svg>';
10
- const iconMultiline = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path d="M3.225 20.725v-3.15h11.55v3.15Zm0-4.775V12.8h17.55v3.15Zm0-4.75V8.05h17.55v3.15Zm0-4.775v-3.15h17.55v3.15Z"/></svg>';
11
- const iconCheck = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path d="m10.55 16.55 7.275-7.275L16.05 7.5l-5.5 5.45-2.675-2.65L6.1 12.075Zm-5.375 4.925q-1.125 0-1.887-.763-.763-.762-.763-1.887V5.175q0-1.125.763-1.888.762-.762 1.887-.762h13.65q1.125 0 1.888.762.762.763.762 1.888v13.65q0 1.125-.762 1.887-.763.763-1.888.763Zm0-2.65h13.65V5.175H5.175v13.65Zm0-13.65v13.65-13.65Z"/></svg>';
12
- const iconRadio = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path d="M12 17q2.075 0 3.538-1.463Q17 14.075 17 12t-1.462-3.538Q14.075 7 12 7 9.925 7 8.463 8.462 7 9.925 7 12q0 2.075 1.463 3.537Q9.925 17 12 17Zm0 5.85q-2.275 0-4.25-.85t-3.438-2.312Q2.85 18.225 2 16.25q-.85-1.975-.85-4.25T2 7.75q.85-1.975 2.312-3.438Q5.775 2.85 7.75 2q1.975-.85 4.25-.85t4.25.85q1.975.85 3.438 2.312Q21.15 5.775 22 7.75q.85 1.975.85 4.25T22 16.25q-.85 1.975-2.312 3.438Q18.225 21.15 16.25 22q-1.975.85-4.25.85Zm0-3.15q3.25 0 5.475-2.225Q19.7 15.25 19.7 12q0-3.25-2.225-5.475Q15.25 4.3 12 4.3q-3.25 0-5.475 2.225Q4.3 8.75 4.3 12q0 3.25 2.225 5.475Q8.75 19.7 12 19.7Zm0-7.7Z"/></svg>';
13
- const iconDatepicker = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path d="M7.6 13.925q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375Zm4.4 0q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375Zm4.4 0q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375ZM5.3 22.85q-1.325 0-2.238-.912-.912-.913-.912-2.238V6.3q0-1.325.912-2.238.913-.912 2.238-.912H6v-2h2.575v2h6.85v-2H18v2h.7q1.325 0 2.238.912.912.913.912 2.238v13.4q0 1.325-.912 2.238-.913.912-2.238.912Zm0-3.15h13.4V10H5.3v9.7ZM5.3 8h13.4V6.3H5.3Zm0 0V6.3 8Z"/></svg>';
14
- const iconSignature = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path d="m9.225 21.225 4.65-4.65h8.45v4.65Zm-5.35-2.2H5.05l8.5-8.5-1.175-1.175-8.5 8.5Zm14.25-9.95L13.8 4.8l1.325-1.325q.625-.65 1.525-.663.9-.012 1.6.663l1.225 1.175q.675.675.663 1.562-.013.888-.663 1.513ZM16.7 10.55 6 21.225H1.675V16.9L12.35 6.225Zm-3.725-.625-.6-.575 1.175 1.175Z"/></svg>';
15
- const iconInitial = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path d="M6.225 20.775V7h-5V3.225H15V7h-5v13.775Zm9.775 0v-8h-3V9h9.775v3.775h-3v8Z"/></svg>';
9
+ const iconSingleline = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path fill="#ffffff" d="M3.425 16.15V13h11.15v3.15Zm0-5.15V7.85h17.15V11Z"/></svg>';
10
+ const iconMultiline = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path fill="#ffffff" d="M3.225 20.725v-3.15h11.55v3.15Zm0-4.775V12.8h17.55v3.15Zm0-4.75V8.05h17.55v3.15Zm0-4.775v-3.15h17.55v3.15Z"/></svg>';
11
+ const iconCheck = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path fill="#ffffff" d="m10.55 16.55 7.275-7.275L16.05 7.5l-5.5 5.45-2.675-2.65L6.1 12.075Zm-5.375 4.925q-1.125 0-1.887-.763-.763-.762-.763-1.887V5.175q0-1.125.763-1.888.762-.762 1.887-.762h13.65q1.125 0 1.888.762.762.763.762 1.888v13.65q0 1.125-.762 1.887-.763.763-1.888.763Zm0-2.65h13.65V5.175H5.175v13.65Zm0-13.65v13.65-13.65Z"/></svg>';
12
+ const iconRadio = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path fill="#ffffff" d="M12 17q2.075 0 3.538-1.463Q17 14.075 17 12t-1.462-3.538Q14.075 7 12 7 9.925 7 8.463 8.462 7 9.925 7 12q0 2.075 1.463 3.537Q9.925 17 12 17Zm0 5.85q-2.275 0-4.25-.85t-3.438-2.312Q2.85 18.225 2 16.25q-.85-1.975-.85-4.25T2 7.75q.85-1.975 2.312-3.438Q5.775 2.85 7.75 2q1.975-.85 4.25-.85t4.25.85q1.975.85 3.438 2.312Q21.15 5.775 22 7.75q.85 1.975.85 4.25T22 16.25q-.85 1.975-2.312 3.438Q18.225 21.15 16.25 22q-1.975.85-4.25.85Zm0-3.15q3.25 0 5.475-2.225Q19.7 15.25 19.7 12q0-3.25-2.225-5.475Q15.25 4.3 12 4.3q-3.25 0-5.475 2.225Q4.3 8.75 4.3 12q0 3.25 2.225 5.475Q8.75 19.7 12 19.7Zm0-7.7Z"/></svg>';
13
+ const iconDatepicker = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path fill="#ffffff" d="M7.6 13.925q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375Zm4.4 0q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375Zm4.4 0q-.55 0-.925-.375t-.375-.925q0-.55.375-.937.375-.388.925-.388t.925.388q.375.387.375.937t-.375.925q-.375.375-.925.375ZM5.3 22.85q-1.325 0-2.238-.912-.912-.913-.912-2.238V6.3q0-1.325.912-2.238.913-.912 2.238-.912H6v-2h2.575v2h6.85v-2H18v2h.7q1.325 0 2.238.912.912.913.912 2.238v13.4q0 1.325-.912 2.238-.913.912-2.238.912Zm0-3.15h13.4V10H5.3v9.7ZM5.3 8h13.4V6.3H5.3Zm0 0V6.3 8Z"/></svg>';
14
+ const iconSignature = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path fill="#ffffff" d="m9.225 21.225 4.65-4.65h8.45v4.65Zm-5.35-2.2H5.05l8.5-8.5-1.175-1.175-8.5 8.5Zm14.25-9.95L13.8 4.8l1.325-1.325q.625-.65 1.525-.663.9-.012 1.6.663l1.225 1.175q.675.675.663 1.562-.013.888-.663 1.513ZM16.7 10.55 6 21.225H1.675V16.9L12.35 6.225Zm-3.725-.625-.6-.575 1.175 1.175Z"/></svg>';
15
+ const iconInitial = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path fill="#ffffff" d="M6.225 20.775V7h-5V3.225H15V7h-5v13.775Zm9.775 0v-8h-3V9h9.775v3.775h-3v8Z"/></svg>';
16
+ const iconClock = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path fill="#ffffff" stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 11-18 0 9 9 0 0118 0z" /></svg>';
17
+ const iconBarsDown = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" d="M3 4.5h14.25M3 9h9.75M3 13.5h9.75m4.5-4.5v12m0 0l-3.75-3.75M17.25 21L21 17.25" /></svg>';
16
18
  const menuOptions = [
17
19
  // {id: 'attachment', tooltip: 'Attachment', icon: 'A'},
18
20
  { id: 'checkbox', tooltip: 'Check Box', icon: iconCheck },
19
21
  { id: 'date', tooltip: 'Date', icon: iconDatepicker },
20
- { id: 'dropdown', tooltip: 'Dropdown', icon: 'O' },
22
+ { id: 'dropdown', tooltip: 'Dropdown', icon: iconBarsDown },
21
23
  { id: 'initial', tooltip: 'Initials', icon: iconInitial },
22
24
  // {id: 'payment', tooltip: 'Payment', icon: 'P'},
23
25
  { id: 'radio', tooltip: 'Radio Button', icon: iconRadio },
24
26
  { id: 'signature', tooltip: 'Signature', icon: iconSignature },
25
27
  { id: 'textarea', tooltip: 'Text Area', icon: iconMultiline },
26
28
  { id: 'textbox', tooltip: 'Text Box', icon: iconSingleline },
27
- { id: 'timestamp', tooltip: 'Timestamp', icon: 'X' },
29
+ { id: 'timestamp', tooltip: 'Timestamp', icon: iconClock },
28
30
  ];
29
31
  /**
30
32
  * Displays a builder experience for laying out fields in a template. Note that this experience requires a large display area to
@@ -36,6 +38,7 @@ export class VerdocsTemplateFields {
36
38
  this.cachedPageInfo = {};
37
39
  this.endpoint = VerdocsEndpoint.getDefault();
38
40
  this.templateId = null;
41
+ this.toolbarTargetId = null;
39
42
  this.placing = null;
40
43
  this.selectedRoleName = '';
41
44
  this.rerender = 1;
@@ -70,6 +73,13 @@ export class VerdocsTemplateFields {
70
73
  }
71
74
  componentDidRender() {
72
75
  interact.dynamicDrop(true);
76
+ const toolbarTarget = this.toolbarTargetId ? document.getElementById(this.toolbarTargetId) : null;
77
+ const toolbarEl = document.getElementById('verdocs-template-fields-toolbar');
78
+ if (toolbarTarget && toolbarEl) {
79
+ console.log('[FIELDS] Moving toolbar');
80
+ toolbarEl.remove();
81
+ toolbarTarget.append(toolbarEl);
82
+ }
73
83
  }
74
84
  async handleFieldChange(field, e, optionId) {
75
85
  console.log('[FIELDS] handleFieldChange', field, e, optionId);
@@ -84,6 +94,13 @@ export class VerdocsTemplateFields {
84
94
  this.rerender++;
85
95
  (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: TemplateStore.template, event: 'updated-field' });
86
96
  });
97
+ el.addEventListener('deleted', () => {
98
+ var _a;
99
+ console.log('deleted', this, field);
100
+ el.remove();
101
+ this.rerender++;
102
+ (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: TemplateStore.template, event: 'updated-field' });
103
+ });
87
104
  el.setAttribute('roleindex', roleIndex);
88
105
  el.setAttribute('pageNumber', pageInfo.pageNumber);
89
106
  el.setAttribute('xScale', pageInfo.xScale);
@@ -241,15 +258,12 @@ export class VerdocsTemplateFields {
241
258
  pages.sort((a, b) => a.sequence - b.sequence);
242
259
  return (h(Host, { class: this.placing ? { [`placing-${this.placing}`]: true } : {}, "data-r": this.rerender, onSubmit: () => {
243
260
  console.log('onSubmit');
244
- } }, h("div", { class: "pages" }, pages.map(page => {
245
- // console.log('rendering page', page);
261
+ } }, h("div", { id: "verdocs-template-fields-toolbar" }, menuOptions.map(option => (h("verdocs-toolbar-icon", { text: option.tooltip, icon: option.icon, onClick: () => (this.placing = option.id) })))), h("div", { class: "pages" }, pages.map(page => {
246
262
  return (h("verdocs-template-document-page", { templateId: page.template_id, documentId: page.document_id, pageNumber: page.sequence, virtualWidth: 612, virtualHeight: 792, onClick: (e) => this.handleClickPage(e, page), onPageRendered: e => this.handlePageRendered(e), layers: [
247
263
  { name: 'page', type: 'canvas' },
248
264
  { name: 'controls', type: 'div' },
249
265
  ] }));
250
- })), h("verdocs-floating-menu", { options: menuOptions, onOptionSelected: e => {
251
- this.placing = e.detail.id;
252
- } })));
266
+ }))));
253
267
  }
254
268
  static get is() { return "verdocs-template-fields"; }
255
269
  static get originalStyleUrls() {
@@ -302,6 +316,24 @@ export class VerdocsTemplateFields {
302
316
  "attribute": "template-id",
303
317
  "reflect": false,
304
318
  "defaultValue": "null"
319
+ },
320
+ "toolbarTargetId": {
321
+ "type": "string",
322
+ "mutable": false,
323
+ "complexType": {
324
+ "original": "string | null",
325
+ "resolved": "string",
326
+ "references": {}
327
+ },
328
+ "required": false,
329
+ "optional": false,
330
+ "docs": {
331
+ "tags": [],
332
+ "text": "If set, (recommended), the host application should create a <DIV> element with a unique ID. When this\ncomponent renders, the toolbar will be removed from its default location and placed in the target element.\nThis allows the parent application to more easily control its placement and scroll effects."
333
+ },
334
+ "attribute": "toolbar-target-id",
335
+ "reflect": false,
336
+ "defaultValue": "null"
305
337
  }
306
338
  };
307
339
  }
@@ -22,7 +22,7 @@ export const loadTemplate = async (endpoint, templateId, forceReload = false) =>
22
22
  TemplateStore.template = null;
23
23
  try {
24
24
  console.log(`[TEMPLATES] Loading template ${templateId}`);
25
- const template = await getTemplate(endpoint, templateId, true);
25
+ const template = await getTemplate(endpoint, templateId);
26
26
  if (!template) {
27
27
  console.log('[TEMPLATES] Unable to load template');
28
28
  return;
@@ -23,7 +23,7 @@ const loadTemplate = async (endpoint, templateId, forceReload = false) => {
23
23
  state.template = null;
24
24
  try {
25
25
  console.log(`[TEMPLATES] Loading template ${templateId}`);
26
- const template = await getTemplate(endpoint, templateId, true);
26
+ const template = await getTemplate(endpoint, templateId);
27
27
  if (!template) {
28
28
  console.log('[TEMPLATES] Unable to load template');
29
29
  return;
@@ -2,9 +2,8 @@ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/
2
2
  import { V as VerdocsEndpoint } from './VerdocsEndpoint.js';
3
3
  import { l as loadTemplate } from './Templates.js';
4
4
  import { S as SDKError } from './errors.js';
5
- import { d as defineCustomElement$9 } from './verdocs-button2.js';
6
- import { d as defineCustomElement$8 } from './verdocs-component-error2.js';
7
- import { d as defineCustomElement$7 } from './verdocs-floating-menu2.js';
5
+ import { d as defineCustomElement$8 } from './verdocs-button2.js';
6
+ import { d as defineCustomElement$7 } from './verdocs-component-error2.js';
8
7
  import { d as defineCustomElement$6 } from './verdocs-loader2.js';
9
8
  import { d as defineCustomElement$5 } from './verdocs-template-create2.js';
10
9
  import { d as defineCustomElement$4 } from './verdocs-template-document-page2.js';
@@ -82,7 +81,7 @@ function defineCustomElement$1() {
82
81
  if (typeof customElements === "undefined") {
83
82
  return;
84
83
  }
85
- const components = ["verdocs-build", "verdocs-button", "verdocs-component-error", "verdocs-floating-menu", "verdocs-loader", "verdocs-template-create", "verdocs-template-document-page", "verdocs-template-fields", "verdocs-toolbar-icon"];
84
+ const components = ["verdocs-build", "verdocs-button", "verdocs-component-error", "verdocs-loader", "verdocs-template-create", "verdocs-template-document-page", "verdocs-template-fields", "verdocs-toolbar-icon"];
86
85
  components.forEach(tagName => { switch (tagName) {
87
86
  case "verdocs-build":
88
87
  if (!customElements.get(tagName)) {
@@ -90,16 +89,11 @@ function defineCustomElement$1() {
90
89
  }
91
90
  break;
92
91
  case "verdocs-button":
93
- if (!customElements.get(tagName)) {
94
- defineCustomElement$9();
95
- }
96
- break;
97
- case "verdocs-component-error":
98
92
  if (!customElements.get(tagName)) {
99
93
  defineCustomElement$8();
100
94
  }
101
95
  break;
102
- case "verdocs-floating-menu":
96
+ case "verdocs-component-error":
103
97
  if (!customElements.get(tagName)) {
104
98
  defineCustomElement$7();
105
99
  }
@@ -19,6 +19,7 @@ const VerdocsFieldCheckbox$1 = /*@__PURE__*/ proxyCustomElement(class extends HT
19
19
  super();
20
20
  this.__registerHost();
21
21
  this.settingsChanged = createEvent(this, "settingsChanged", 7);
22
+ this.deleted = createEvent(this, "deleted", 7);
22
23
  this.field = null;
23
24
  this.option = 0;
24
25
  this.disabled = false;
@@ -51,7 +52,7 @@ const VerdocsFieldCheckbox$1 = /*@__PURE__*/ proxyCustomElement(class extends HT
51
52
  }
52
53
  return (h(Host, { class: { required: settings.required, disabled }, style: { backgroundColor } }, h("label", null, h("input", { type: "checkbox", tabIndex: settings.order, checked: option.checked, disabled: disabled, required: settings.required, value: option.id }), h("span", null), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: state.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
53
54
  var _a;
54
- (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
55
+ (_a = this.deleted) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
55
56
  return this.hideSettingsPanel();
56
57
  }, onSettingsChanged: e => {
57
58
  var _a;
@@ -2570,6 +2570,7 @@ const VerdocsFieldDate$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLEl
2570
2570
  this.__registerHost();
2571
2571
  this.settingsPress = createEvent(this, "settingsPress", 7);
2572
2572
  this.settingsChanged = createEvent(this, "settingsChanged", 7);
2573
+ this.deleted = createEvent(this, "deleted", 7);
2573
2574
  this.field = null;
2574
2575
  this.disabled = false;
2575
2576
  this.editable = false;
@@ -2623,7 +2624,7 @@ const VerdocsFieldDate$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLEl
2623
2624
  }
2624
2625
  return (h(Host, { class: { required: settings.required, disabled }, style: { backgroundColor } }, h("input", { type: "text", value: "", id: this.containerId, disabled: disabled, placeholder: settings.placeholder, required: settings.required, ref: el => (this.el = el) }), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: state.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
2625
2626
  var _a;
2626
- (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
2627
+ (_a = this.deleted) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
2627
2628
  return this.hideSettingsPanel();
2628
2629
  }, onSettingsChanged: e => {
2629
2630
  var _a;
@@ -11,6 +11,7 @@ const VerdocsFieldDropdown$1 = /*@__PURE__*/ proxyCustomElement(class extends HT
11
11
  this.__registerHost();
12
12
  this.fieldChange = createEvent(this, "fieldChange", 7);
13
13
  this.settingsChanged = createEvent(this, "settingsChanged", 7);
14
+ this.deleted = createEvent(this, "deleted", 7);
14
15
  this.field = null;
15
16
  this.disabled = false;
16
17
  this.roleindex = 0;
@@ -24,6 +24,7 @@ const VerdocsFieldInitial$1 = /*@__PURE__*/ proxyCustomElement(class extends HTM
24
24
  this.fieldChange = createEvent(this, "fieldChange", 7);
25
25
  this.settingsChanged = createEvent(this, "settingsChanged", 7);
26
26
  this.settingsPress = createEvent(this, "settingsPress", 7);
27
+ this.deleted = createEvent(this, "deleted", 7);
27
28
  this.field = null;
28
29
  this.disabled = false;
29
30
  this.initials = '';
@@ -80,7 +81,7 @@ const VerdocsFieldInitial$1 = /*@__PURE__*/ proxyCustomElement(class extends HTM
80
81
  }
81
82
  return (h(Host, { class: { required: settings.required, disabled }, style: { backgroundColor } }, value ? (h("img", { src: value, alt: "Initials" })) : (h("button", { class: {}, onClick: () => !disabled && this.handleShow() }, "Initials")), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: state.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
82
83
  var _a;
83
- (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
84
+ (_a = this.deleted) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
84
85
  return this.hideSettingsPanel();
85
86
  }, onSettingsChanged: e => {
86
87
  var _a;
@@ -12,6 +12,7 @@ const VerdocsFieldPayment$1 = /*@__PURE__*/ proxyCustomElement(class extends HTM
12
12
  this.signatureComplete = createEvent(this, "signatureComplete", 7);
13
13
  this.initialComplete = createEvent(this, "initialComplete", 7);
14
14
  this.settingsChanged = createEvent(this, "settingsChanged", 7);
15
+ this.deleted = createEvent(this, "deleted", 7);
15
16
  this._fields = [];
16
17
  // envelopeFieldsFormGroup: FormGroup;
17
18
  this.signatureFile = null;
@@ -21,6 +21,7 @@ const VerdocsFieldRadioButton$1 = /*@__PURE__*/ proxyCustomElement(class extends
21
21
  super();
22
22
  this.__registerHost();
23
23
  this.settingsChanged = createEvent(this, "settingsChanged", 7);
24
+ this.deleted = createEvent(this, "deleted", 7);
24
25
  this.field = null;
25
26
  this.option = 0;
26
27
  this.disabled = false;
@@ -55,7 +56,7 @@ const VerdocsFieldRadioButton$1 = /*@__PURE__*/ proxyCustomElement(class extends
55
56
  }
56
57
  return (h(Host, { class: { required, disabled }, style: { backgroundColor } }, h("input", { id: id, type: "radio", value: option.id, tabIndex: settings.order, name: this.field.name, checked: !!option.selected, disabled: disabled, required: settings.required }), h("label", { htmlFor: id }), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: state.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
57
58
  var _a;
58
- (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
59
+ (_a = this.deleted) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
59
60
  return this.hideSettingsPanel();
60
61
  }, onSettingsChanged: e => {
61
62
  var _a;
@@ -22,6 +22,7 @@ const VerdocsFieldSignature$1 = /*@__PURE__*/ proxyCustomElement(class extends H
22
22
  this.fieldChange = createEvent(this, "fieldChange", 7);
23
23
  this.settingsPress = createEvent(this, "settingsPress", 7);
24
24
  this.settingsChanged = createEvent(this, "settingsChanged", 7);
25
+ this.deleted = createEvent(this, "deleted", 7);
25
26
  this.field = null;
26
27
  this.name = '';
27
28
  this.disabled = false;
@@ -79,7 +80,7 @@ const VerdocsFieldSignature$1 = /*@__PURE__*/ proxyCustomElement(class extends H
79
80
  }
80
81
  return (h(Host, { class: { required: (_c = this.field) === null || _c === void 0 ? void 0 : _c.required, disabled }, style: { backgroundColor } }, value ? h("img", { src: value, alt: "Signature" }) : h("button", { onClick: () => !disabled && this.handleShow() }, "Signature"), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: state.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
81
82
  var _a;
82
- (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
83
+ (_a = this.deleted) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
83
84
  return this.hideSettingsPanel();
84
85
  }, onSettingsChanged: e => {
85
86
  var _a;
@@ -19,6 +19,7 @@ const VerdocsFieldTextarea$1 = /*@__PURE__*/ proxyCustomElement(class extends HT
19
19
  super();
20
20
  this.__registerHost();
21
21
  this.settingsChanged = createEvent(this, "settingsChanged", 7);
22
+ this.deleted = createEvent(this, "deleted", 7);
22
23
  this.field = null;
23
24
  this.disabled = false;
24
25
  this.editable = false;
@@ -52,7 +53,7 @@ const VerdocsFieldTextarea$1 = /*@__PURE__*/ proxyCustomElement(class extends HT
52
53
  }
53
54
  return (h(Host, { class: { required: settings.required, disabled }, style: { backgroundColor } }, h("textarea", { placeholder: settings.placeholder || '', tabIndex: settings.order, value: settings.value, disabled: disabled, required: settings.required, ref: el => (this.el = el) }), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: state.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
54
55
  var _a;
55
- (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
56
+ (_a = this.deleted) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
56
57
  return this.hideSettingsPanel();
57
58
  }, onSettingsChanged: e => {
58
59
  var _a;
@@ -19,6 +19,7 @@ const VerdocsFieldTextbox$1 = /*@__PURE__*/ proxyCustomElement(class extends HTM
19
19
  super();
20
20
  this.__registerHost();
21
21
  this.settingsChanged = createEvent(this, "settingsChanged", 7);
22
+ this.deleted = createEvent(this, "deleted", 7);
22
23
  this.field = null;
23
24
  this.disabled = false;
24
25
  this.editable = false;
@@ -53,7 +54,7 @@ const VerdocsFieldTextbox$1 = /*@__PURE__*/ proxyCustomElement(class extends HTM
53
54
  }
54
55
  return (h(Host, { class: { required: (_c = this.field) === null || _c === void 0 ? void 0 : _c.required, disabled, done: this.done }, style: { backgroundColor } }, h("input", { type: "text", placeholder: settings === null || settings === void 0 ? void 0 : settings.placeholder, tabIndex: settings === null || settings === void 0 ? void 0 : settings.order, value: value, disabled: disabled, required: (_d = this.field) === null || _d === void 0 ? void 0 : _d.required, ref: el => (this.el = el) }), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: state.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
55
56
  var _a;
56
- (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
57
+ (_a = this.deleted) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
57
58
  return this.hideSettingsPanel();
58
59
  }, onSettingsChanged: e => {
59
60
  var _a;
@@ -20,6 +20,7 @@ const VerdocsFieldTimestamp$1 = /*@__PURE__*/ proxyCustomElement(class extends H
20
20
  super();
21
21
  this.__registerHost();
22
22
  this.settingsChanged = createEvent(this, "settingsChanged", 7);
23
+ this.deleted = createEvent(this, "deleted", 7);
23
24
  this.field = null;
24
25
  this.disabled = false;
25
26
  this.editable = false;
@@ -59,7 +60,7 @@ const VerdocsFieldTimestamp$1 = /*@__PURE__*/ proxyCustomElement(class extends H
59
60
  // is encoded in a ton of existing entries in the database and is hard to change.
60
61
  value: formatted, disabled: true, ref: el => (this.el = el) }), this.editable && (h("verdocs-button-panel", { icon: settingsIcon, id: `verdocs-settings-panel-${this.field.name}` }, h("h6", null, "Field Settings"), h("verdocs-template-field-properties", { templateId: state.templateId, fieldName: this.field.name, onClose: () => this.hideSettingsPanel(), onDelete: () => {
61
62
  var _a;
62
- (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
63
+ (_a = this.deleted) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.field.name });
63
64
  return this.hideSettingsPanel();
64
65
  }, onSettingsChanged: e => {
65
66
  var _a;
@@ -1,4 +1,126 @@
1
- import { V as VerdocsFloatingMenu$1, d as defineCustomElement$1 } from './verdocs-floating-menu2.js';
1
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
+ import { d as defineCustomElement$2 } from './verdocs-toolbar-icon2.js';
3
+
4
+ const verdocsFloatingMenuCss = "verdocs-floating-menu{display:none}#verdocs-floating-menu{position:absolute;width:56px;height:56px;display:-ms-flexbox;display:flex;-ms-flex:0 0 fit-content;flex:0 0 fit-content}#verdocs-floating-menu:not(.force-closed):hover{height:500px}#verdocs-floating-menu:not(.force-closed):hover .trigger{-webkit-box-shadow:0 10px 25px #4c56cb;box-shadow:0 10px 25px #4c56cb;-webkit-transform:translatey(2px);transform:translatey(2px);-webkit-transition:all 0.3s;transition:all 0.3s}#verdocs-floating-menu:not(.force-closed):hover .options{display:-ms-flexbox;display:flex}#verdocs-floating-menu:not(.force-closed):hover .options .option{-webkit-animation:vfm-appear 0.1s forwards 0.2s;animation:vfm-appear 0.1s forwards 0.2s}#verdocs-floating-menu .trigger{position:absolute;width:56px;height:56px;background:#654dcb;bottom:0;border-radius:50%;left:0;right:0;margin:auto;color:white;line-height:52px;text-align:center;font-size:44px;z-index:100;-webkit-box-shadow:0 10px 25px -5px #4c56cb;box-shadow:0 10px 25px -5px #4c56cb;cursor:pointer;-webkit-transition:all 0.3s;transition:all 0.3s}#verdocs-floating-menu .options{width:56px;-ms-flex-direction:column;flex-direction:column;-ms-flex:0 0 fit-content;flex:0 0 fit-content;position:absolute;bottom:70px;display:none}#verdocs-floating-menu .option{background:#654dcb;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;width:36px;height:36px;margin:5px auto;color:white;font-weight:500;text-align:center;line-height:36px;opacity:0}#verdocs-floating-menu verdocs-toolbar-icon .icon{display:-ms-flexbox;display:flex}#verdocs-floating-menu verdocs-toolbar-icon .icon svg{fill:#ffffff}@-webkit-keyframes vfm-appear{0%{opacity:0}30%{-webkit-transform:scale(0.4);transform:scale(0.4);opacity:0.3}70%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:0.6}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes vfm-appear{0%{opacity:0}30%{-webkit-transform:scale(0.4);transform:scale(0.4);opacity:0.3}70%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:0.6}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}";
5
+
6
+ // @see https://stackoverflow.com/a/49186677/1812436
7
+ const getScrollParent = node => {
8
+ const regex = /(auto|scroll)/;
9
+ const parents = (_node, ps) => {
10
+ if (_node.parentNode === null) {
11
+ return ps;
12
+ }
13
+ return parents(_node.parentNode, ps.concat([_node]));
14
+ };
15
+ const style = (_node, prop) => getComputedStyle(_node, null).getPropertyValue(prop);
16
+ const overflow = _node => style(_node, 'overflow') + style(_node, 'overflow-y') + style(_node, 'overflow-x');
17
+ const scroll = _node => regex.test(overflow(_node));
18
+ const scrollParent = _node => {
19
+ if (!(_node instanceof HTMLElement || _node instanceof SVGElement)) {
20
+ return;
21
+ }
22
+ const ps = parents(_node.parentNode, []);
23
+ for (let i = 0; i < ps.length; i += 1) {
24
+ if (scroll(ps[i])) {
25
+ return ps[i];
26
+ }
27
+ }
28
+ return document.scrollingElement || document.documentElement;
29
+ };
30
+ return scrollParent(node);
31
+ };
32
+ const VerdocsFloatingMenu$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
33
+ constructor() {
34
+ super();
35
+ this.__registerHost();
36
+ this.optionSelected = createEvent(this, "optionSelected", 7);
37
+ this.menuContainer = null;
38
+ this.scrollParent = null;
39
+ this.scrollParentParent = null;
40
+ this.options = [];
41
+ }
42
+ componentDidLoad() {
43
+ this.menuContainer = document.createElement('div');
44
+ this.menuContainer.id = 'verdocs-floating-menu';
45
+ let el = document.createElement('div');
46
+ el.className = 'trigger';
47
+ el.innerText = '+';
48
+ this.menuContainer.append(el);
49
+ el = document.createElement('div');
50
+ el.className = 'options';
51
+ this.menuContainer.append(el);
52
+ const localhandleSelect = this.handleSelect.bind(this);
53
+ this.options.forEach(option => {
54
+ const childEl = document.createElement('div');
55
+ childEl.className = 'option';
56
+ childEl.addEventListener('click', () => localhandleSelect(option));
57
+ el.append(childEl);
58
+ const iconEl = document.createElement('verdocs-toolbar-icon');
59
+ iconEl.setAttribute('icon', option.icon);
60
+ iconEl.setAttribute('text', option.tooltip);
61
+ iconEl.setAttribute('placement', 'left');
62
+ childEl.append(iconEl);
63
+ });
64
+ document.body.append(this.menuContainer);
65
+ this.scrollParent = getScrollParent(this.el);
66
+ if (this.scrollParent) {
67
+ this.scrollParentParent = this.scrollParent.parentElement;
68
+ this.repositionTrigger(this.scrollParent);
69
+ }
70
+ }
71
+ disconnectedCallback() {
72
+ var _a;
73
+ (_a = this.menuContainer) === null || _a === void 0 ? void 0 : _a.remove();
74
+ }
75
+ handleSelect(option) {
76
+ var _a;
77
+ (_a = this.optionSelected) === null || _a === void 0 ? void 0 : _a.emit(option);
78
+ const el = document.getElementById('verdocs-floating-menu');
79
+ if (el) {
80
+ el.className = 'force-closed';
81
+ setTimeout(() => {
82
+ el.className = '';
83
+ }, 100);
84
+ }
85
+ }
86
+ repositionTrigger(scrollParent) {
87
+ const scrollParentParent = scrollParent.parentElement;
88
+ if (scrollParentParent) {
89
+ const bounds = scrollParentParent.getBoundingClientRect();
90
+ const menu = document.getElementById('verdocs-floating-menu');
91
+ if (menu) {
92
+ menu.style.bottom = `${document.documentElement.clientHeight - (document.documentElement.scrollTop + bounds.bottom) + 10}px`;
93
+ menu.style.left = `${bounds.right - 80}px`;
94
+ }
95
+ }
96
+ }
97
+ render() {
98
+ return h(Host, null);
99
+ }
100
+ get el() { return this; }
101
+ static get style() { return verdocsFloatingMenuCss; }
102
+ }, [0, "verdocs-floating-menu", {
103
+ "options": [16]
104
+ }]);
105
+ function defineCustomElement$1() {
106
+ if (typeof customElements === "undefined") {
107
+ return;
108
+ }
109
+ const components = ["verdocs-floating-menu", "verdocs-toolbar-icon"];
110
+ components.forEach(tagName => { switch (tagName) {
111
+ case "verdocs-floating-menu":
112
+ if (!customElements.get(tagName)) {
113
+ customElements.define(tagName, VerdocsFloatingMenu$1);
114
+ }
115
+ break;
116
+ case "verdocs-toolbar-icon":
117
+ if (!customElements.get(tagName)) {
118
+ defineCustomElement$2();
119
+ }
120
+ break;
121
+ } });
122
+ }
123
+ defineCustomElement$1();
2
124
 
3
125
  const VerdocsFloatingMenu = VerdocsFloatingMenu$1;
4
126
  const defineCustomElement = defineCustomElement$1;
@@ -75,7 +75,7 @@ const VerdocsTemplateDocumentPage = /*@__PURE__*/ proxyCustomElement(class exten
75
75
  }
76
76
  render() {
77
77
  const height = `${this.renderedHeight}px`;
78
- return (h(Host, { id: `${this.containerId}`, style: { height } }, this.layers.map(layer => layer.type === 'div' ? (h("div", { class: "verdocs-template-document-page-layer", id: `${this.containerId}-${layer.name}`, style: { height } })) : this.pageDisplayUri ? (h("img", { class: "verdocs-template-document-page-layer img", id: `${this.containerId}-${layer.name}`, src: this.pageDisplayUri, alt: `Page ${this.pageNumber}`, "aria-hidden": true, onLoad: (e) => {
78
+ return (h(Host, { id: `${this.containerId}`, style: { height } }, this.layers.map(layer => layer.type === 'div' ? (h("div", { class: "verdocs-template-document-page-layer", id: `${this.containerId}-${layer.name}`, style: { height } })) : this.pageDisplayUri ? (h("img", { class: "verdocs-template-document-page-layer img", id: `${this.containerId}-${layer.name}`, src: this.pageDisplayUri, alt: `Page ${this.pageNumber}`, "aria-hidden": true, loading: "lazy", onLoad: (e) => {
79
79
  // Note that all we really care about is the aspect ratio. We track the natural Width and Height but they aren't really that
80
80
  // useful as individual values. The image will already have been scaled down to fit a DIV for display (100%, auto height).
81
81
  // Builder places fields offset into the rendered display area, not the original document's dimensions. So its X/Y values