@verdocs/web-sdk 4.2.47 → 4.2.49

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 (120) hide show
  1. package/dist/cjs/{TemplateRoleStore-9fc8458d.js → TemplateRoleStore-3f9e9f9e.js} +0 -1
  2. package/dist/cjs/{TemplateStore-75369c4d.js → TemplateStore-761197ec.js} +1 -1
  3. package/dist/cjs/index-d2999878.js +2 -6
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/verdocs-build.cjs.entry.js +2 -2
  6. package/dist/cjs/verdocs-checkbox_4.cjs.entry.js +33 -21
  7. package/dist/cjs/{verdocs-field-attachment_12.cjs.entry.js → verdocs-field-attachment_13.cjs.entry.js} +100 -33
  8. package/dist/cjs/verdocs-field-payment.cjs.entry.js +1 -1
  9. package/dist/cjs/verdocs-preview_10.cjs.entry.js +7 -11
  10. package/dist/cjs/verdocs-radio-button_3.cjs.entry.js +2 -2
  11. package/dist/cjs/verdocs-template-document-page_2.cjs.entry.js +1 -1
  12. package/dist/cjs/verdocs-web-sdk.cjs.js +1 -1
  13. package/dist/collection/components/embeds/verdocs-preview/verdocs-preview.js +5 -6
  14. package/dist/collection/components/embeds/verdocs-send/verdocs-send.js +0 -1
  15. package/dist/collection/components/fields/verdocs-field-attachment/verdocs-field-attachment.css +24 -7
  16. package/dist/collection/components/fields/verdocs-field-attachment/verdocs-field-attachment.js +3 -3
  17. package/dist/collection/components/fields/verdocs-field-checkbox/verdocs-field-checkbox.css +17 -4
  18. package/dist/collection/components/fields/verdocs-field-checkbox/verdocs-field-checkbox.js +2 -2
  19. package/dist/collection/components/fields/verdocs-field-date/verdocs-field-date.css +15 -2
  20. package/dist/collection/components/fields/verdocs-field-date/verdocs-field-date.js +2 -2
  21. package/dist/collection/components/fields/verdocs-field-dropdown/verdocs-field-dropdown.css +15 -2
  22. package/dist/collection/components/fields/verdocs-field-dropdown/verdocs-field-dropdown.js +2 -4
  23. package/dist/collection/components/fields/verdocs-field-initial/verdocs-field-initial.css +16 -2
  24. package/dist/collection/components/fields/verdocs-field-initial/verdocs-field-initial.js +2 -2
  25. package/dist/collection/components/fields/verdocs-field-radio/verdocs-field-radio.css +47 -21
  26. package/dist/collection/components/fields/verdocs-field-radio/verdocs-field-radio.js +2 -2
  27. package/dist/collection/components/fields/verdocs-field-signature/verdocs-field-signature.css +15 -2
  28. package/dist/collection/components/fields/verdocs-field-signature/verdocs-field-signature.js +2 -2
  29. package/dist/collection/components/fields/verdocs-field-textarea/verdocs-field-textarea.css +16 -3
  30. package/dist/collection/components/fields/verdocs-field-textarea/verdocs-field-textarea.js +2 -2
  31. package/dist/collection/components/fields/verdocs-field-textbox/verdocs-field-textbox.css +38 -3
  32. package/dist/collection/components/fields/verdocs-field-textbox/verdocs-field-textbox.js +5 -4
  33. package/dist/collection/components/fields/verdocs-field-timestamp/verdocs-field-timestamp.css +14 -1
  34. package/dist/collection/components/fields/verdocs-field-timestamp/verdocs-field-timestamp.js +2 -2
  35. package/dist/collection/components/templates/verdocs-template-document-page/verdocs-template-document-page.js +1 -1
  36. package/dist/collection/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.css +20 -1
  37. package/dist/collection/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.js +32 -20
  38. package/dist/collection/components/templates/verdocs-template-fields/verdocs-template-fields.js +0 -2
  39. package/dist/collection/utils/TemplateRoleStore.js +0 -1
  40. package/dist/components/TemplateRoleStore.js +0 -1
  41. package/dist/components/verdocs-build.js +26 -20
  42. package/dist/components/verdocs-field-attachment2.js +4 -4
  43. package/dist/components/verdocs-field-checkbox2.js +3 -3
  44. package/dist/components/verdocs-field-date2.js +3 -3
  45. package/dist/components/verdocs-field-dropdown2.js +3 -5
  46. package/dist/components/verdocs-field-initial2.js +3 -3
  47. package/dist/components/verdocs-field-radio.js +1 -147
  48. package/dist/components/verdocs-field-radio2.js +149 -0
  49. package/dist/components/verdocs-field-signature2.js +3 -3
  50. package/dist/components/verdocs-field-textarea2.js +3 -3
  51. package/dist/components/verdocs-field-textbox2.js +6 -5
  52. package/dist/components/verdocs-field-timestamp2.js +3 -3
  53. package/dist/components/verdocs-preview2.js +26 -22
  54. package/dist/components/verdocs-send2.js +0 -1
  55. package/dist/components/verdocs-template-document-page2.js +23 -17
  56. package/dist/components/verdocs-template-field-properties2.js +33 -21
  57. package/dist/components/verdocs-template-fields2.js +22 -18
  58. package/dist/esm/{TemplateRoleStore-69e28e18.js → TemplateRoleStore-39555cd8.js} +0 -1
  59. package/dist/esm/{TemplateStore-1c435e14.js → TemplateStore-ebd8f5f6.js} +1 -1
  60. package/dist/esm/index-3476681c.js +2 -6
  61. package/dist/esm/loader.js +1 -1
  62. package/dist/esm/verdocs-build.entry.js +2 -2
  63. package/dist/esm/verdocs-checkbox_4.entry.js +34 -22
  64. package/dist/esm/{verdocs-field-attachment_12.entry.js → verdocs-field-attachment_13.entry.js} +100 -34
  65. package/dist/esm/verdocs-field-payment.entry.js +1 -1
  66. package/dist/esm/verdocs-preview_10.entry.js +7 -11
  67. package/dist/esm/verdocs-radio-button_3.entry.js +2 -2
  68. package/dist/esm/verdocs-template-document-page_2.entry.js +1 -1
  69. package/dist/esm/verdocs-web-sdk.js +1 -1
  70. package/dist/esm-es5/TemplateRoleStore-39555cd8.js +1 -0
  71. package/dist/esm-es5/{TemplateStore-1c435e14.js → TemplateStore-ebd8f5f6.js} +1 -1
  72. package/dist/esm-es5/index-3476681c.js +1 -1
  73. package/dist/esm-es5/loader.js +1 -1
  74. package/dist/esm-es5/verdocs-build.entry.js +1 -1
  75. package/dist/esm-es5/verdocs-checkbox_4.entry.js +1 -1
  76. package/dist/esm-es5/verdocs-field-attachment_13.entry.js +1 -0
  77. package/dist/esm-es5/verdocs-field-payment.entry.js +1 -1
  78. package/dist/esm-es5/verdocs-preview_10.entry.js +1 -1
  79. package/dist/esm-es5/verdocs-radio-button_3.entry.js +1 -1
  80. package/dist/esm-es5/verdocs-template-document-page_2.entry.js +1 -1
  81. package/dist/esm-es5/verdocs-web-sdk.js +1 -1
  82. package/dist/types/components/embeds/verdocs-preview/verdocs-preview.d.ts +1 -1
  83. package/dist/types/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.d.ts +2 -1
  84. package/dist/verdocs-web-sdk/{p-c43eb082.system.entry.js → p-00798e23.system.entry.js} +1 -1
  85. package/dist/verdocs-web-sdk/p-03a228e4.system.js +1 -1
  86. package/dist/verdocs-web-sdk/p-13aef6d0.system.entry.js +1 -0
  87. package/dist/verdocs-web-sdk/{p-1b2b9121.system.js → p-15b6097f.system.js} +1 -1
  88. package/dist/verdocs-web-sdk/p-1f23cc70.system.entry.js +1 -0
  89. package/dist/verdocs-web-sdk/{p-d6613428.system.entry.js → p-24a9f119.system.entry.js} +1 -1
  90. package/dist/verdocs-web-sdk/{p-560280a0.entry.js → p-33901ebd.entry.js} +1 -1
  91. package/dist/verdocs-web-sdk/{p-b7fd317f.system.entry.js → p-49899f3c.system.entry.js} +1 -1
  92. package/dist/verdocs-web-sdk/p-530f073d.entry.js +1 -0
  93. package/dist/verdocs-web-sdk/{p-4aeb4efe.entry.js → p-5d223ab3.entry.js} +1 -1
  94. package/dist/verdocs-web-sdk/p-65901ac2.entry.js +1 -0
  95. package/dist/verdocs-web-sdk/{p-a4d5a21f.entry.js → p-8937cdbe.entry.js} +1 -1
  96. package/dist/verdocs-web-sdk/p-8bfdaa86.system.entry.js +1 -0
  97. package/dist/verdocs-web-sdk/p-98c36099.system.js +1 -0
  98. package/dist/verdocs-web-sdk/{p-7c3247cf.js → p-b42f9eb2.js} +1 -1
  99. package/dist/verdocs-web-sdk/p-c78aeff3.entry.js +1 -0
  100. package/dist/verdocs-web-sdk/{p-3bbc745e.system.entry.js → p-c8c48ba0.system.entry.js} +1 -1
  101. package/dist/verdocs-web-sdk/p-cd3bde24.entry.js +1 -0
  102. package/dist/verdocs-web-sdk/p-d7112c9f.js +1 -0
  103. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
  104. package/package.json +1 -1
  105. package/dist/cjs/verdocs-field-radio.cjs.entry.js +0 -79
  106. package/dist/esm/verdocs-field-radio.entry.js +0 -75
  107. package/dist/esm-es5/TemplateRoleStore-69e28e18.js +0 -1
  108. package/dist/esm-es5/verdocs-field-attachment_12.entry.js +0 -1
  109. package/dist/esm-es5/verdocs-field-radio.entry.js +0 -1
  110. package/dist/verdocs-web-sdk/p-00dba603.system.entry.js +0 -1
  111. package/dist/verdocs-web-sdk/p-037f1e3c.entry.js +0 -1
  112. package/dist/verdocs-web-sdk/p-16919f37.entry.js +0 -1
  113. package/dist/verdocs-web-sdk/p-253d0f68.system.entry.js +0 -1
  114. package/dist/verdocs-web-sdk/p-377c3586.js +0 -1
  115. package/dist/verdocs-web-sdk/p-5de9e1e8.system.entry.js +0 -1
  116. package/dist/verdocs-web-sdk/p-6697b4ac.entry.js +0 -1
  117. package/dist/verdocs-web-sdk/p-c0e736e4.system.entry.js +0 -1
  118. package/dist/verdocs-web-sdk/p-f06da0c0.system.js +0 -1
  119. package/dist/verdocs-web-sdk/p-f2adcc8d.entry.js +0 -1
  120. package/dist/verdocs-web-sdk/p-f49a9d74.entry.js +0 -1
@@ -9,7 +9,7 @@
9
9
  background-color: rgba(0, 0, 0, 0.35);
10
10
  }
11
11
  }
12
- verdocs-field-radio-button {
12
+ verdocs-field-radio {
13
13
  font-family: "Inter", -apple-system, "Segoe UI", "Roboto", "Helvetica Neue", sans-serif;
14
14
  width: 12px;
15
15
  height: 12px;
@@ -20,29 +20,55 @@ verdocs-field-radio-button {
20
20
  transform-origin: bottom left;
21
21
  border-radius: 100%;
22
22
  }
23
- verdocs-field-radio-button svg {
23
+ verdocs-field-radio svg {
24
24
  margin-top: 4px;
25
25
  }
26
- verdocs-field-radio-button.disabled {
27
- opacity: 0.5;
28
- }
29
- verdocs-field-radio-button.disabled.done {
26
+ verdocs-field-radio.disabled.done {
30
27
  opacity: 1;
31
28
  }
32
- verdocs-field-radio-button input {
29
+ verdocs-field-radio div.label {
30
+ top: -14px;
31
+ left: -1px;
32
+ height: 14px;
33
+ color: white;
34
+ padding: 0 4px;
35
+ font-size: 9px;
36
+ line-height: 13px;
37
+ position: absolute;
38
+ background: #4a4a99;
39
+ border-top-left-radius: 2px;
40
+ border-top-right-radius: 2px;
41
+ }
42
+ verdocs-field-radio div.group {
43
+ top: 14px;
44
+ left: -1px;
45
+ height: 14px;
46
+ color: white;
47
+ padding: 0 4px;
48
+ font-size: 9px;
49
+ line-height: 13px;
50
+ position: absolute;
51
+ background: #bb0589;
52
+ border-bottom-left-radius: 2px;
53
+ border-bottom-right-radius: 2px;
54
+ }
55
+ verdocs-field-radio input {
33
56
  cursor: inherit;
34
57
  }
35
- verdocs-field-radio-button.done input[type=radio] {
58
+ verdocs-field-radio.disabled input {
59
+ opacity: 0.5;
60
+ }
61
+ verdocs-field-radio.done input[type=radio] {
36
62
  margin: 0;
37
63
  padding: 0;
38
64
  width: 10px;
39
65
  height: 10px;
40
66
  }
41
- verdocs-field-radio-button:not(.done) input[type=radio] {
67
+ verdocs-field-radio:not(.done) input[type=radio] {
42
68
  position: absolute;
43
69
  opacity: 0;
44
70
  }
45
- verdocs-field-radio-button:not(.done) input[type=radio] + label:before {
71
+ verdocs-field-radio:not(.done) input[type=radio] + label:before {
46
72
  content: "";
47
73
  border-radius: 100%;
48
74
  border: 1px solid rgba(0, 0, 0, 0.6);
@@ -56,37 +82,37 @@ verdocs-field-radio-button:not(.done) input[type=radio] + label:before {
56
82
  text-align: center;
57
83
  transition: all 250ms ease;
58
84
  }
59
- verdocs-field-radio-button:not(.done) input[type=radio]:checked + label:before {
85
+ verdocs-field-radio:not(.done) input[type=radio]:checked + label:before {
60
86
  background-color: #55bc81;
61
87
  box-shadow: inset 0 0 0 2px #f5f5fa;
62
88
  }
63
- verdocs-field-radio-button:not(.done) input[type=radio]:focus + label:before {
89
+ verdocs-field-radio:not(.done) input[type=radio]:focus + label:before {
64
90
  outline: none;
65
91
  border-color: #55bc81;
66
92
  }
67
- verdocs-field-radio-button:not(.done) input[type=radio]:disabled + label:before {
93
+ verdocs-field-radio:not(.done) input[type=radio]:disabled + label:before {
68
94
  box-shadow: inset 0 0 0 4px #f5f5fa;
69
95
  border-color: #a0a0d0;
70
96
  background: #a0a0d0;
71
97
  }
72
- verdocs-field-radio-button:not(.done) input[type=radio] + label:empty:before {
98
+ verdocs-field-radio:not(.done) input[type=radio] + label:empty:before {
73
99
  margin-right: 0;
74
100
  }
75
- verdocs-field-radio-button.required {
101
+ verdocs-field-radio.required {
76
102
  border: 1px solid #cc0000;
77
103
  }
78
- verdocs-field-radio-button.hide {
104
+ verdocs-field-radio.hide {
79
105
  display: none;
80
106
  }
81
- verdocs-field-radio-button.focused {
107
+ verdocs-field-radio.focused {
82
108
  animation: verdocs-field-pulse 0.4s 1;
83
109
  }
84
- verdocs-field-radio-button verdocs-button-panel {
110
+ verdocs-field-radio verdocs-button-panel {
85
111
  margin-left: -20px;
86
112
  margin-top: -7px;
87
113
  transform: scale(0.7);
88
114
  }
89
- verdocs-field-radio-button .settings-icon {
115
+ verdocs-field-radio .settings-icon {
90
116
  position: absolute;
91
117
  top: -6px;
92
118
  left: -20px;
@@ -94,9 +120,9 @@ verdocs-field-radio-button .settings-icon {
94
120
  cursor: pointer;
95
121
  opacity: 0.3;
96
122
  }
97
- verdocs-field-radio-button .settings-icon svg {
123
+ verdocs-field-radio .settings-icon svg {
98
124
  fill: #707ae5;
99
125
  }
100
- verdocs-field-radio-button .settings-icon:hover {
126
+ verdocs-field-radio .settings-icon:hover {
101
127
  opacity: 1;
102
128
  }
@@ -42,7 +42,7 @@ export class VerdocsFieldRadio {
42
42
  render() {
43
43
  const { templateid, fieldname = '', editable = false, done = false, disabled = false, xscale = 1, yscale = 1 } = this;
44
44
  const field = this.fieldStore.get('fields').find(field => field.name === fieldname);
45
- const { required = false, role_name = '' } = field || {};
45
+ const { required = false, role_name = '', label = '', group = '' } = field || {};
46
46
  const backgroundColor = getRGBA(getRoleIndex(this.roleStore, role_name));
47
47
  // TODO
48
48
  const { id = 'option1', selected = false } = {};
@@ -51,7 +51,7 @@ export class VerdocsFieldRadio {
51
51
  if (done) {
52
52
  return (h(Host, { class: { done }, style: { maxWidth: '10px' } }, h("span", { innerHTML: selected ? RadioIconSelected : RadioIconUnselected })));
53
53
  }
54
- return (h(Host, { class: { required, disabled, done }, style: { backgroundColor } }, h("input", { id: fieldId, type: "radio", name: fieldname, value: id, checked: !!selected, disabled: disabled, required: required }), h("label", { htmlFor: fieldId }), editable && (h(Fragment, null, h("div", { id: `verdocs-settings-panel-trigger-${fieldname}`, style: { transform: `scale(${Math.floor((1 / xscale) * 1000) / 1000}, ${Math.floor((1 / yscale) * 1000) / 1000})` }, class: "settings-icon", innerHTML: SettingsIcon, onClick: (e) => {
54
+ return (h(Host, { class: { required, disabled, done }, style: { backgroundColor } }, label && h("div", { class: "label" }, label), editable && group && h("div", { class: "group" }, group), h("input", { id: fieldId, type: "radio", name: fieldname, value: id, checked: !!selected, disabled: disabled, required: required }), h("label", { htmlFor: fieldId }), editable && (h(Fragment, null, h("div", { id: `verdocs-settings-panel-trigger-${fieldname}`, style: { transform: `scale(${Math.floor((1 / xscale) * 1000) / 1000}, ${Math.floor((1 / yscale) * 1000) / 1000})` }, class: "settings-icon", innerHTML: SettingsIcon, onClick: (e) => {
55
55
  e.stopPropagation();
56
56
  this.showingProperties = !this.showingProperties;
57
57
  } }), this.showingProperties && (h("verdocs-portal", { anchor: `verdocs-settings-panel-trigger-${fieldname}`, onClickAway: () => (this.showingProperties = false) }, h("verdocs-template-field-properties", { templateId: templateid, fieldName: fieldname, onClose: () => (this.showingProperties = false), onDelete: () => {
@@ -21,8 +21,18 @@ verdocs-field-signature {
21
21
  transform-origin: bottom left;
22
22
  border: 1px solid rgba(0, 0, 0, 0.2);
23
23
  }
24
- verdocs-field-signature.disabled {
25
- opacity: 0.5;
24
+ verdocs-field-signature label {
25
+ top: -14px;
26
+ left: -1px;
27
+ height: 14px;
28
+ color: white;
29
+ padding: 0 4px;
30
+ font-size: 9px;
31
+ line-height: 13px;
32
+ position: absolute;
33
+ background: #4a4a99;
34
+ border-top-left-radius: 2px;
35
+ border-top-right-radius: 2px;
26
36
  }
27
37
  verdocs-field-signature.done {
28
38
  border: none;
@@ -33,6 +43,9 @@ verdocs-field-signature img {
33
43
  max-width: 100%;
34
44
  max-height: 100%;
35
45
  }
46
+ verdocs-field-signature.disabled img {
47
+ opacity: 0.5;
48
+ }
36
49
  verdocs-field-signature button {
37
50
  cursor: inherit;
38
51
  box-sizing: border-box;
@@ -74,12 +74,12 @@ export class VerdocsFieldSignature {
74
74
  render() {
75
75
  const { templateid, fieldname = '', editable = false, focused, done = false, disabled = false, xscale = 1, yscale = 1 } = this;
76
76
  const field = this.fieldStore.get('fields').find(field => field.name === fieldname);
77
- const { required = false, role_name = '', value = '' } = field || {};
77
+ const { required = false, role_name = '', value = '', label = '' } = field || {};
78
78
  const backgroundColor = getRGBA(getRoleIndex(this.roleStore, role_name));
79
79
  if (done) {
80
80
  return h(Host, { class: { done } }, value && h("img", { src: value, alt: "Signature" }));
81
81
  }
82
- return (h(Host, { class: { required, disabled, done, focused }, style: { backgroundColor } }, value ? h("img", { src: value, alt: "Signature" }) : h("button", { onClick: () => !disabled && this.handleShow() }, "Signature"), editable && (h(Fragment, null, h("div", { id: `verdocs-settings-panel-trigger-${fieldname}`, style: { transform: `scale(${Math.floor((1 / xscale) * 1000) / 1000}, ${Math.floor((1 / yscale) * 1000) / 1000})` }, class: "settings-icon", innerHTML: SettingsIcon, onClick: (e) => {
82
+ return (h(Host, { class: { required, disabled, done, focused }, style: { backgroundColor } }, label && h("label", null, label), value ? h("img", { src: value, alt: "Signature" }) : h("button", { onClick: () => !disabled && this.handleShow() }, "Signature"), editable && (h(Fragment, null, h("div", { id: `verdocs-settings-panel-trigger-${fieldname}`, style: { transform: `scale(${Math.floor((1 / xscale) * 1000) / 1000}, ${Math.floor((1 / yscale) * 1000) / 1000})` }, class: "settings-icon", innerHTML: SettingsIcon, onClick: (e) => {
83
83
  e.stopPropagation();
84
84
  this.showingProperties = !this.showingProperties;
85
85
  } }), this.showingProperties && (h("verdocs-portal", { anchor: `verdocs-settings-panel-trigger-${fieldname}`, onClickAway: () => (this.showingProperties = false) }, h("verdocs-template-field-properties", { templateId: templateid, fieldName: fieldname, onClose: () => (this.showingProperties = false), onDelete: () => {
@@ -21,9 +21,6 @@ verdocs-field-textarea {
21
21
  font-family: "Inter", -apple-system, "Segoe UI", "Roboto", "Helvetica Neue", sans-serif;
22
22
  border: 1px solid rgba(0, 0, 0, 0.2);
23
23
  }
24
- verdocs-field-textarea.disabled {
25
- opacity: 0.5;
26
- }
27
24
  verdocs-field-textarea textarea {
28
25
  cursor: inherit;
29
26
  width: 100%;
@@ -42,6 +39,22 @@ verdocs-field-textarea textarea {
42
39
  verdocs-field-textarea textarea.hide {
43
40
  display: none;
44
41
  }
42
+ verdocs-field-textarea.disabled textarea {
43
+ opacity: 0.5;
44
+ }
45
+ verdocs-field-textarea label {
46
+ top: -14px;
47
+ left: -1px;
48
+ height: 14px;
49
+ color: white;
50
+ padding: 0 4px;
51
+ font-size: 9px;
52
+ line-height: 13px;
53
+ position: absolute;
54
+ background: #4a4a99;
55
+ border-top-left-radius: 2px;
56
+ border-top-right-radius: 2px;
57
+ }
45
58
  verdocs-field-textarea.required {
46
59
  border: 1px solid rgb(204, 0, 0);
47
60
  }
@@ -96,12 +96,12 @@ export class VerdocsFieldTextarea {
96
96
  render() {
97
97
  const { templateid, fieldname = '', editable = false, focused, done = false, disabled = false, xscale = 1, yscale = 1 } = this;
98
98
  const field = this.fieldStore.get('fields').find(field => field.name === fieldname);
99
- const { required = false, role_name = '', placeholder = '', value = '' } = field || {};
99
+ const { required = false, role_name = '', placeholder = '', value = '', label = '' } = field || {};
100
100
  const backgroundColor = getRGBA(getRoleIndex(this.roleStore, role_name));
101
101
  if (done) {
102
102
  return h(Host, { class: { done } }, value);
103
103
  }
104
- return (h(Host, { class: { required, disabled, done, focused }, style: { backgroundColor } }, h("textarea", { name: fieldname, disabled: disabled, required: required, placeholder: placeholder, ref: el => (this.inputEl = el), onFocus: () => (this.focused = true), onBlur: () => (this.focused = false) }, value), editable && (h(Fragment, null, h("div", { id: `verdocs-settings-panel-trigger-${fieldname}`, style: { transform: `scale(${Math.floor((1 / xscale) * 1000) / 1000}, ${Math.floor((1 / yscale) * 1000) / 1000})` }, class: "settings-icon", innerHTML: SettingsIcon, onClick: (e) => {
104
+ return (h(Host, { class: { required, disabled, done, focused }, style: { backgroundColor } }, label && h("label", null, label), h("textarea", { name: fieldname, disabled: disabled, required: required, placeholder: placeholder, ref: el => (this.inputEl = el), onFocus: () => (this.focused = true), onBlur: () => (this.focused = false) }, value), editable && (h(Fragment, null, h("div", { id: `verdocs-settings-panel-trigger-${fieldname}`, style: { transform: `scale(${Math.floor((1 / xscale) * 1000) / 1000}, ${Math.floor((1 / yscale) * 1000) / 1000})` }, class: "settings-icon", innerHTML: SettingsIcon, onClick: (e) => {
105
105
  e.stopPropagation();
106
106
  this.showingProperties = !this.showingProperties;
107
107
  } }), this.showingProperties && (h("verdocs-portal", { anchor: `verdocs-settings-panel-trigger-${fieldname}`, onClickAway: () => (this.showingProperties = false) }, h("verdocs-template-field-properties", { templateId: templateid, fieldName: fieldname, onClose: () => (this.showingProperties = false), onDelete: () => {
@@ -16,14 +16,12 @@ verdocs-field-textbox {
16
16
  height: 15px;
17
17
  display: block;
18
18
  font-size: 11px;
19
+ position: relative;
19
20
  letter-spacing: -0.2px;
20
21
  background-color: transparent;
21
22
  transform-origin: bottom left;
22
23
  border: 1px solid rgba(0, 0, 0, 0.2);
23
24
  }
24
- verdocs-field-textbox.disabled {
25
- opacity: 0.5;
26
- }
27
25
  verdocs-field-textbox input {
28
26
  cursor: inherit;
29
27
  width: 100%;
@@ -42,6 +40,43 @@ verdocs-field-textbox input {
42
40
  verdocs-field-textbox input.hide {
43
41
  display: none;
44
42
  }
43
+ verdocs-field-textbox.disabled input {
44
+ opacity: 0.5;
45
+ }
46
+ verdocs-field-textbox textarea {
47
+ cursor: inherit;
48
+ width: 100%;
49
+ height: 100%;
50
+ resize: none;
51
+ border: none;
52
+ outline: none;
53
+ padding: 0 3px;
54
+ font-size: 11px;
55
+ background: none;
56
+ font-weight: 500;
57
+ transform-origin: 0 0;
58
+ box-sizing: border-box;
59
+ color: rgba(0, 0, 0, 0.87);
60
+ }
61
+ verdocs-field-textbox textarea.hide {
62
+ display: none;
63
+ }
64
+ verdocs-field-textbox.disabled textarea {
65
+ opacity: 0.5;
66
+ }
67
+ verdocs-field-textbox label {
68
+ top: -14px;
69
+ left: -1px;
70
+ height: 14px;
71
+ color: white;
72
+ padding: 0 4px;
73
+ font-size: 9px;
74
+ line-height: 13px;
75
+ position: absolute;
76
+ background: #4a4a99;
77
+ border-top-left-radius: 2px;
78
+ border-top-right-radius: 2px;
79
+ }
45
80
  verdocs-field-textbox.required {
46
81
  border: 1px solid rgb(204, 0, 0);
47
82
  }
@@ -46,9 +46,11 @@ export class VerdocsFieldTextbox {
46
46
  }
47
47
  componentDidRender() {
48
48
  interact.dynamicDrop(true);
49
+ const field = this.fieldStore.get('fields').find(field => field.name === this.fieldname);
50
+ let { multiline = false } = field || {};
49
51
  if (this.editable) {
50
52
  interact(this.el).resizable({
51
- edges: { top: false, bottom: false, left: true, right: true },
53
+ edges: { top: multiline, bottom: multiline, left: true, right: true },
52
54
  listeners: {
53
55
  start: this.handleResizeStart.bind(this),
54
56
  move: this.handleResize.bind(this),
@@ -92,7 +94,7 @@ export class VerdocsFieldTextbox {
92
94
  render() {
93
95
  const { templateid, fieldname = '', editable = false, focused, done = false, disabled = false, xscale = 1, yscale = 1 } = this;
94
96
  const field = this.fieldStore.get('fields').find(field => field.name === fieldname);
95
- let { required = false, role_name = '', placeholder = '', width = 150, height = 15, default: value = '' } = field || {};
97
+ let { required = false, role_name = '', placeholder = '', label = '', width = 150, default: value = '', multiline = false } = field || {};
96
98
  // TODO: Consolidate value/defaultValue handling between template and envelope fields
97
99
  if (field.value) {
98
100
  value = field.value;
@@ -103,8 +105,7 @@ export class VerdocsFieldTextbox {
103
105
  if (done) {
104
106
  return h(Host, { class: { done } }, value);
105
107
  }
106
- console.log('text field', { multiline: this.multiline, value, placeholder, maxlength, width, height });
107
- return (h(Host, { class: { required, disabled, done, focused }, style: { backgroundColor } }, h("input", { type: "text", name: fieldname, value: value, disabled: disabled, required: required, placeholder: placeholder, maxlength: maxlength, ref: el => (this.inputEl = el), onFocus: () => (this.focused = true), onBlur: () => (this.focused = false) }), editable && (h(Fragment, null, h("div", { id: `verdocs-settings-panel-trigger-${fieldname}`, style: { transform: `scale(${Math.floor((1 / xscale) * 1000) / 1000}, ${Math.floor((1 / yscale) * 1000) / 1000})` }, class: "settings-icon", innerHTML: SettingsIcon, onClick: (e) => {
108
+ return (h(Host, { class: { required, disabled, done, focused }, style: { backgroundColor } }, label && h("label", null, label), multiline ? (h("textarea", { name: fieldname, disabled: disabled, required: required, placeholder: placeholder, ref: el => (this.inputEl = el), onFocus: () => (this.focused = true), onBlur: () => (this.focused = false) }, value)) : (h("input", { type: "text", name: fieldname, value: value, disabled: disabled, required: required, placeholder: placeholder, maxlength: maxlength, ref: el => (this.inputEl = el), onFocus: () => (this.focused = true), onBlur: () => (this.focused = false) })), editable && (h(Fragment, null, h("div", { id: `verdocs-settings-panel-trigger-${fieldname}`, style: { transform: `scale(${Math.floor((1 / xscale) * 1000) / 1000}, ${Math.floor((1 / yscale) * 1000) / 1000})` }, class: "settings-icon", innerHTML: SettingsIcon, onClick: (e) => {
108
109
  e.stopPropagation();
109
110
  this.showingProperties = !this.showingProperties;
110
111
  } }), this.showingProperties && (h("verdocs-portal", { anchor: `verdocs-settings-panel-trigger-${fieldname}`, onClickAway: () => (this.showingProperties = false) }, h("verdocs-template-field-properties", { templateId: templateid, fieldName: fieldname, onClose: () => (this.showingProperties = false), onDelete: () => {
@@ -12,7 +12,6 @@
12
12
  verdocs-field-timestamp {
13
13
  width: 160px;
14
14
  height: 15px;
15
- opacity: 0.5;
16
15
  display: block;
17
16
  font-size: 9px;
18
17
  position: relative;
@@ -26,6 +25,7 @@ verdocs-field-timestamp.done {
26
25
  verdocs-field-timestamp input {
27
26
  position: absolute;
28
27
  cursor: inherit;
28
+ opacity: 0.5;
29
29
  width: 100%;
30
30
  height: 100%;
31
31
  font-size: 9px;
@@ -39,6 +39,19 @@ verdocs-field-timestamp input {
39
39
  verdocs-field-timestamp input.hide {
40
40
  display: none;
41
41
  }
42
+ verdocs-field-timestamp label {
43
+ top: -14px;
44
+ left: -1px;
45
+ height: 14px;
46
+ color: white;
47
+ padding: 0 4px;
48
+ font-size: 9px;
49
+ line-height: 13px;
50
+ position: absolute;
51
+ background: #4a4a99;
52
+ border-top-left-radius: 2px;
53
+ border-top-right-radius: 2px;
54
+ }
42
55
  verdocs-field-timestamp.required {
43
56
  border: 1px solid rgb(204, 0, 0);
44
57
  }
@@ -46,13 +46,13 @@ export class VerdocsFieldTimestamp {
46
46
  render() {
47
47
  const { templateid, fieldname = '', editable = false, done = false, disabled = false, xscale = 1, yscale = 1 } = this;
48
48
  const field = this.fieldStore.get('fields').find(field => field.name === fieldname);
49
- const { required = false, role_name = '', placeholder = '', value = '' } = field || {};
49
+ const { required = false, role_name = '', placeholder = '', value = '', label = '' } = field || {};
50
50
  const backgroundColor = getRGBA(getRoleIndex(this.roleStore, role_name));
51
51
  const formatted = format(new Date(value || new Date().toISOString()), FORMAT_TIMESTAMP);
52
52
  if (done) {
53
53
  return h(Host, { class: { done } }, formatted);
54
54
  }
55
- return (h(Host, { class: { required, disabled, done }, style: { backgroundColor } }, h("input", { type: "text", placeholder: placeholder, value: formatted, disabled: true, ref: el => (this.el = el) }), editable && (h(Fragment, null, h("div", { id: `verdocs-settings-panel-trigger-${fieldname}`, style: { transform: `scale(${Math.floor((1 / xscale) * 1000) / 1000}, ${Math.floor((1 / yscale) * 1000) / 1000})` }, class: "settings-icon", innerHTML: SettingsIcon, onClick: (e) => {
55
+ return (h(Host, { class: { required, disabled, done }, style: { backgroundColor } }, label && h("label", null, label), h("input", { type: "text", placeholder: placeholder, value: formatted, disabled: true, ref: el => (this.el = el) }), editable && (h(Fragment, null, h("div", { id: `verdocs-settings-panel-trigger-${fieldname}`, style: { transform: `scale(${Math.floor((1 / xscale) * 1000) / 1000}, ${Math.floor((1 / yscale) * 1000) / 1000})` }, class: "settings-icon", innerHTML: SettingsIcon, onClick: (e) => {
56
56
  e.stopPropagation();
57
57
  this.showingProperties = !this.showingProperties;
58
58
  } }), this.showingProperties && (h("verdocs-portal", { anchor: `verdocs-settings-panel-trigger-${fieldname}`, onClickAway: () => (this.showingProperties = false) }, h("verdocs-template-field-properties", { templateId: templateid, fieldName: fieldname, onClose: () => (this.showingProperties = false), onDelete: () => {
@@ -127,7 +127,7 @@ export class VerdocsTemplateDocumentPage {
127
127
  case 'checkbox':
128
128
  return (h("verdocs-field-checkbox", { id: id, fieldname: name, templateid: templateId, editable: editable, disabled: disabled, done: done, xscale: xScale, yscale: yScale, pagenumber: pageNumber, style: getControlStyles(field, xScale, yScale) }));
129
129
  case 'radio':
130
- return (h("verdocs-field-radio-button", { id: id, fieldname: name, templateid: templateId, editable: editable, disabled: disabled, done: done, xscale: xScale, yscale: yScale, pagenumber: pageNumber, style: getControlStyles(field, xScale, yScale) }));
130
+ return (h("verdocs-field-radio", { id: id, fieldname: name, templateid: templateId, editable: editable, disabled: disabled, done: done, xscale: xScale, yscale: yScale, pagenumber: pageNumber, style: getControlStyles(field, xScale, yScale) }));
131
131
  default:
132
132
  return h(Fragment, null, name);
133
133
  }
@@ -137,6 +137,25 @@ verdocs-template-field-properties .row-header .add-button svg {
137
137
  width: 32px;
138
138
  height: 32px;
139
139
  }
140
+ verdocs-template-field-properties .options-header {
141
+ gap: 10px;
142
+ margin: 0 0 5px 0;
143
+ display: flex;
144
+ color: #ffffff;
145
+ font-size: 14px;
146
+ padding: 5px 8px;
147
+ font-weight: 700;
148
+ text-align: center;
149
+ flex-direction: row;
150
+ justify-content: center;
151
+ background-color: #333333;
152
+ }
153
+ verdocs-template-field-properties .options-header-label {
154
+ display: flex;
155
+ flex: 1;
156
+ font-weight: 700;
157
+ font-size: 14px;
158
+ }
140
159
  verdocs-template-field-properties .option-row {
141
160
  margin: 15px 0;
142
161
  }
@@ -163,7 +182,7 @@ verdocs-template-field-properties .option-row .remove-button svg {
163
182
  }
164
183
  verdocs-template-field-properties .options {
165
184
  background: #f3f3f3;
166
- padding: 0 0 10px 0;
185
+ padding: 0 0 1px 0;
167
186
  }
168
187
  verdocs-template-field-properties .options .row-header,
169
188
  verdocs-template-field-properties .options .option-row {
@@ -1,5 +1,5 @@
1
1
  import { h, Host } from "@stencil/core";
2
- import { deleteField, updateField, VerdocsEndpoint } from "@verdocs/js-sdk";
2
+ import { DEFAULT_FIELD_HEIGHTS, DEFAULT_FIELD_WIDTHS, deleteField, updateField, VerdocsEndpoint } from "@verdocs/js-sdk";
3
3
  import { getTemplateFieldStore, updateStoreField } from "../../../utils/TemplateFieldStore";
4
4
  import { getTemplateRoleStore } from "../../../utils/TemplateRoleStore";
5
5
  import { getTemplateStore } from "../../../utils/TemplateStore";
@@ -25,12 +25,12 @@ export class VerdocsTemplateFieldProperties {
25
25
  this.type = 'textbox';
26
26
  this.name = '';
27
27
  this.required = false;
28
+ this.multiline = false;
28
29
  this.roleName = '';
29
30
  this.group = '';
30
31
  this.fieldType = '';
31
32
  this.options = [];
32
33
  this.placeholder = '';
33
- this.multiline = false;
34
34
  this.defaultValue = '';
35
35
  this.showingHelp = false;
36
36
  }
@@ -72,16 +72,17 @@ export class VerdocsTemplateFieldProperties {
72
72
  this.type = field.type;
73
73
  this.name = field.name;
74
74
  this.label = field.label;
75
- this.group = field.name;
75
+ this.group = field.group;
76
76
  this.roleName = field.role_name;
77
77
  this.required = field.required;
78
78
  this.fieldType = field.type;
79
- this.options = field.options;
79
+ this.options = field.options || [];
80
80
  this.placeholder = field.placeholder || '';
81
81
  this.defaultValue = field.default || '';
82
82
  this.multiline = field.multiline || false;
83
83
  this.dirty = false;
84
84
  this.loading = false;
85
+ this.cleanupOptions();
85
86
  }
86
87
  handleCancel(e) {
87
88
  var _a, _b;
@@ -103,6 +104,12 @@ export class VerdocsTemplateFieldProperties {
103
104
  default: this.defaultValue,
104
105
  options: this.options,
105
106
  };
107
+ const field = this.fieldStore.get('fields').find(field => field.name === this.fieldName);
108
+ if (!newProperties.multiline && field.multiline) {
109
+ console.log('Switching off multiline');
110
+ newProperties.width = DEFAULT_FIELD_WIDTHS.textbox;
111
+ newProperties.height = DEFAULT_FIELD_HEIGHTS.textbox;
112
+ }
106
113
  console.log('[FIELD PROPERTIES] Will update', this.fieldName, newProperties);
107
114
  updateField(this.endpoint, this.templateId, this.fieldName, newProperties)
108
115
  .then(updated => {
@@ -130,6 +137,12 @@ export class VerdocsTemplateFieldProperties {
130
137
  console.log('[FIELD PROPERTIES] Deletion error', e);
131
138
  });
132
139
  }
140
+ cleanupOptions() {
141
+ this.options = [...this.options.filter(opt => (opt.id || '').trim() !== '' || (opt.value || '').trim() !== '')];
142
+ if (!this.options.find(opt => !opt.id && !opt.value)) {
143
+ this.options = [...this.options, { id: '', value: '' }];
144
+ }
145
+ }
133
146
  render() {
134
147
  var _a;
135
148
  // console.log('Rendering field properties', this.fieldStore.get(this.fieldName));
@@ -159,6 +172,12 @@ export class VerdocsTemplateFieldProperties {
159
172
  } })), ['textbox', 'textarea'].includes(this.type) && (h("div", { class: "row", style: { marginTop: '10px', marginBottom: '10px' } }, h("verdocs-text-input", { id: "verdocs-field-value", label: "Default Value", value: this.defaultValue, autocomplete: "off", placeholder: "Pre-filled value...", onInput: (e) => {
160
173
  this.defaultValue = e.target.value;
161
174
  this.dirty = true;
175
+ } }))), this.type === 'radio' && (h("div", { class: "row" }, h("verdocs-text-input", { id: "verdocs-field-label", label: "Group", value: this.group, autocomplete: "off", helpText: "Enable exclusive selections. Only one option within the same group may be selected at a time.", placeholder: "Group...", onInput: (e) => {
176
+ this.group = (e.target.value || '')
177
+ .trim()
178
+ .toLowerCase()
179
+ .replace(/[^a-z0-9]/g, '');
180
+ this.dirty = true;
162
181
  } }))), ['textbox', 'textarea'].includes(this.type) && (h("div", { class: "row", style: { marginTop: '10px', marginBottom: '10px' } }, h("verdocs-text-input", { id: "verdocs-field-placeholder", label: "Placeholder", value: this.placeholder, autocomplete: "off",
163
182
  // helpText="Placeholder to display if the field is empty."
164
183
  placeholder: "Placeholder...", onInput: (e) => {
@@ -167,29 +186,22 @@ export class VerdocsTemplateFieldProperties {
167
186
  } }))), h("div", { class: "row", style: { marginTop: '15px', marginBottom: '15px' } }, h("label", { htmlFor: "verdocs-is-required", class: "input-label" }, "Required"), h("verdocs-checkbox", { id: "verdocs-is-required", name: "is-required", checked: this.required, value: "on", onInput: (e) => {
168
187
  this.required = e.target.checked;
169
188
  this.dirty = true;
170
- } })), ['dropdown'].includes(this.type) && (h("div", { class: "options" }, h("div", { class: "row", style: {
171
- marginTop: '15px',
172
- marginBottom: '15px',
173
- textAlign: 'center',
174
- fontWeight: '700',
175
- fontSize: '14px',
176
- justifyContent: 'center',
177
- backgroundColor: '#333333',
178
- padding: '5px 8px',
179
- color: '#ffffff',
180
- } }, "Options"), h("div", { class: "row-header" }, h("h6", null, "ID"), h("h6", null, "Label"), h("div", { style: { width: '34px' } })), this.options.map((option, index) => (h("div", { class: "row option-row", key: index }, h("verdocs-text-input", { id: `verdocs-option-id-${option.id}`, value: option.id, placeholder: "Unique ID", onInput: (e) => {
189
+ } })), this.type === 'textbox' && (h("div", { class: "row", style: { marginTop: '15px', marginBottom: '15px' } }, h("label", { htmlFor: "verdocs-is-multline", class: "input-label" }, "Multi-Line"), h("verdocs-checkbox", { id: "verdocs-is-multiline", name: "is-multiline", checked: this.multiline, value: "on", onInput: (e) => {
190
+ this.multiline = e.target.checked;
191
+ this.dirty = true;
192
+ } }))), this.type === 'dropdown' && (h("div", { class: "row", style: { marginTop: '15px', marginBottom: '15px' } }, h("label", { htmlFor: "verdocs-is-required", class: "input-label" }, "Options"))), this.type === 'dropdown' && (h("div", { class: "options" }, h("div", { class: "options-header" }, h("div", { class: "options-header-label" }, "ID"), h("dev", { class: "options-header-label" }, "Label")), this.options.map((option, index) => (h("div", { class: "row option-row", key: index }, h("verdocs-text-input", { id: `verdocs-option-id-${option.id}`, value: option.id, placeholder: "Unique ID", onInput: (e) => {
181
193
  this.options[index].id = e.target.value;
182
194
  this.dirty = true;
195
+ this.cleanupOptions();
183
196
  } }), h("verdocs-text-input", { id: `verdocs-option-value-${option.id}`, value: option.value, placeholder: "Display value", onInput: (e) => {
184
197
  this.options[index].value = e.target.value;
185
198
  this.dirty = true;
199
+ this.cleanupOptions();
186
200
  } }), h("button", { innerHTML: TrashIcon, class: "remove-button", onClick: () => {
187
201
  this.options = this.options.filter(opt => opt.id !== option.id);
188
202
  this.dirty = true;
189
- } })))), h("div", { class: "row-header" }, h("button", { class: "add-option-button", onClick: () => {
190
- this.options = [...this.options, { id: `option-${this.options.length + 1}`, value: `Option ${this.options.length + 1}` }];
191
- this.dirty = true;
192
- } }, "Add Option")))), h("div", { class: "buttons" }, h("button", { class: "delete-button", disabled: this.dirty, onClick: e => this.handleDelete(e), innerHTML: TrashIcon }), h("div", { style: { flex: '1' } }), h("verdocs-button", { size: "small", variant: "outline", label: "Cancel", disabled: !this.dirty, onClick: e => this.handleCancel(e) }), h("verdocs-button", { size: "small", label: "Save", disabled: !this.dirty, onClick: e => this.handleSave(e) })))));
203
+ this.cleanupOptions();
204
+ } })))))), h("div", { class: "buttons" }, h("button", { class: "delete-button", disabled: this.dirty, onClick: e => this.handleDelete(e), innerHTML: TrashIcon }), h("div", { style: { flex: '1' } }), h("verdocs-button", { size: "small", variant: "outline", label: "Cancel", disabled: !this.dirty, onClick: e => this.handleCancel(e) }), h("verdocs-button", { size: "small", label: "Save", disabled: !this.dirty, onClick: e => this.handleSave(e) })))));
193
205
  }
194
206
  static get is() { return "verdocs-template-field-properties"; }
195
207
  static get originalStyleUrls() {
@@ -290,12 +302,12 @@ export class VerdocsTemplateFieldProperties {
290
302
  "type": {},
291
303
  "name": {},
292
304
  "required": {},
305
+ "multiline": {},
293
306
  "roleName": {},
294
307
  "group": {},
295
308
  "fieldType": {},
296
309
  "options": {},
297
310
  "placeholder": {},
298
- "multiline": {},
299
311
  "defaultValue": {},
300
312
  "showingHelp": {}
301
313
  };
@@ -8,7 +8,6 @@ import { getTemplateStore } from "../../../utils/TemplateStore";
8
8
  import { VerdocsToast } from "../../../utils/Toast";
9
9
  import { SDKError } from "../../../utils/errors";
10
10
  const iconTextbox = '<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>';
11
- const iconTextarea = '<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>';
12
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>';
13
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>';
14
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>';
@@ -23,7 +22,6 @@ const menuOptions = [
23
22
  { id: 'initial', tooltip: 'Initials', icon: iconInitial, class: 'initial' },
24
23
  { id: 'sep1', tooltip: '', icon: separator, class: 'separator' },
25
24
  { id: 'textbox', tooltip: 'Text Box', icon: iconTextbox, class: 'textbox' },
26
- { id: 'textarea', tooltip: 'Text Area', icon: iconTextarea, class: 'textarea' },
27
25
  { id: 'checkbox', tooltip: 'Check Box', icon: iconCheck, class: 'checkbox' },
28
26
  { id: 'radio', tooltip: 'Radio Button', icon: iconRadio, class: 'radio' },
29
27
  { id: 'dropdown', tooltip: 'Dropdown', icon: iconDropdown, class: 'dropdown' },
@@ -7,7 +7,6 @@ export const getTemplateRoleStore = (templateId) => {
7
7
  return templateRoleStores[templateId];
8
8
  };
9
9
  export const createTemplateRoleStore = (template) => {
10
- console.log('creating role store', template);
11
10
  let store = getTemplateRoleStore(template.id);
12
11
  const roles = [...(template.roles || [])];
13
12
  roles.sort((a, b) => {
@@ -8,7 +8,6 @@ const getTemplateRoleStore = (templateId) => {
8
8
  return templateRoleStores[templateId];
9
9
  };
10
10
  const createTemplateRoleStore = (template) => {
11
- console.log('creating role store', template);
12
11
  let store = getTemplateRoleStore(template.id);
13
12
  const roles = [...(template.roles || [])];
14
13
  roles.sort((a, b) => {