@verdocs/web-sdk 2.3.25 → 2.3.26

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 (166) hide show
  1. package/dist/cjs/{TemplateFieldStore-40e85b9d.js → TemplateFieldStore-ecf695a7.js} +16 -8
  2. package/dist/cjs/{TemplateStore-5620eee7.js → TemplateStore-78b8944b.js} +20 -5
  3. package/dist/cjs/ipc-test.cjs.entry.js +2 -2
  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-field-attachment.cjs.entry.js +2 -2
  7. package/dist/cjs/verdocs-field-checkbox.cjs.entry.js +2 -2
  8. package/dist/cjs/verdocs-field-date.cjs.entry.js +3 -3
  9. package/dist/cjs/verdocs-field-dropdown.cjs.entry.js +2 -2
  10. package/dist/cjs/verdocs-field-initial.cjs.entry.js +2 -2
  11. package/dist/cjs/verdocs-field-payment.cjs.entry.js +2 -51
  12. package/dist/cjs/verdocs-field-radio-button.cjs.entry.js +2 -2
  13. package/dist/cjs/verdocs-field-signature.cjs.entry.js +2 -2
  14. package/dist/cjs/verdocs-field-textarea.cjs.entry.js +3 -3
  15. package/dist/cjs/verdocs-field-textbox.cjs.entry.js +3 -3
  16. package/dist/cjs/verdocs-field-timestamp.cjs.entry.js +2 -2
  17. package/dist/cjs/verdocs-portal_2.cjs.entry.js +21 -37
  18. package/dist/cjs/verdocs-preview_8.cjs.entry.js +2 -2
  19. package/dist/cjs/verdocs-sign.cjs.entry.js +1 -1
  20. package/dist/cjs/verdocs-template-fields_4.cjs.entry.js +38 -66
  21. package/dist/cjs/verdocs-web-sdk.cjs.js +1 -1
  22. package/dist/collection/components/fields/verdocs-field-attachment/verdocs-field-attachment.js +1 -1
  23. package/dist/collection/components/fields/verdocs-field-checkbox/verdocs-field-checkbox.js +1 -1
  24. package/dist/collection/components/fields/verdocs-field-date/verdocs-field-date.js +2 -2
  25. package/dist/collection/components/fields/verdocs-field-dropdown/verdocs-field-dropdown.js +1 -1
  26. package/dist/collection/components/fields/verdocs-field-initial/verdocs-field-initial.js +1 -1
  27. package/dist/collection/components/fields/verdocs-field-payment/verdocs-field-payment.js +1 -50
  28. package/dist/collection/components/fields/verdocs-field-radio-button-group/verdocs-field-radio-button.js +1 -1
  29. package/dist/collection/components/fields/verdocs-field-signature/verdocs-field-signature.js +1 -1
  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.js +2 -2
  32. package/dist/collection/components/fields/verdocs-field-timestamp/verdocs-field-timestamp.js +1 -1
  33. package/dist/collection/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.js +21 -37
  34. package/dist/collection/components/templates/verdocs-template-fields/verdocs-template-fields.js +12 -35
  35. package/dist/collection/components/templates/verdocs-template-role-properties/verdocs-template-role-properties.js +7 -10
  36. package/dist/collection/components/templates/verdocs-template-roles/verdocs-template-roles.js +20 -22
  37. package/dist/collection/utils/TemplateFieldStore.js +19 -8
  38. package/dist/collection/utils/TemplateRoleStore.js +17 -4
  39. package/dist/components/TemplateFieldStore.js +16 -9
  40. package/dist/components/TemplateStore.js +18 -5
  41. package/dist/components/verdocs-field-attachment.js +1 -1
  42. package/dist/components/verdocs-field-checkbox.js +1 -1
  43. package/dist/components/verdocs-field-date.js +2 -2
  44. package/dist/components/verdocs-field-dropdown.js +1 -1
  45. package/dist/components/verdocs-field-initial.js +1 -1
  46. package/dist/components/verdocs-field-payment.js +1 -50
  47. package/dist/components/verdocs-field-radio-button.js +1 -1
  48. package/dist/components/verdocs-field-signature.js +1 -1
  49. package/dist/components/verdocs-field-textarea.js +2 -2
  50. package/dist/components/verdocs-field-textbox.js +2 -2
  51. package/dist/components/verdocs-field-timestamp.js +1 -1
  52. package/dist/components/verdocs-template-field-properties2.js +21 -37
  53. package/dist/components/verdocs-template-fields2.js +12 -35
  54. package/dist/components/verdocs-template-role-properties2.js +7 -10
  55. package/dist/components/verdocs-template-roles2.js +20 -22
  56. package/dist/custom-elements.json +2175 -0
  57. package/dist/docs.json +2 -2
  58. package/dist/esm/{TemplateFieldStore-295f240e.js → TemplateFieldStore-0516a7ec.js} +16 -9
  59. package/dist/esm/{TemplateStore-f188c963.js → TemplateStore-618fb47f.js} +19 -6
  60. package/dist/esm/ipc-test.entry.js +2 -2
  61. package/dist/esm/loader.js +1 -1
  62. package/dist/esm/verdocs-build.entry.js +2 -2
  63. package/dist/esm/verdocs-field-attachment.entry.js +2 -2
  64. package/dist/esm/verdocs-field-checkbox.entry.js +2 -2
  65. package/dist/esm/verdocs-field-date.entry.js +3 -3
  66. package/dist/esm/verdocs-field-dropdown.entry.js +2 -2
  67. package/dist/esm/verdocs-field-initial.entry.js +2 -2
  68. package/dist/esm/verdocs-field-payment.entry.js +2 -51
  69. package/dist/esm/verdocs-field-radio-button.entry.js +2 -2
  70. package/dist/esm/verdocs-field-signature.entry.js +2 -2
  71. package/dist/esm/verdocs-field-textarea.entry.js +3 -3
  72. package/dist/esm/verdocs-field-textbox.entry.js +3 -3
  73. package/dist/esm/verdocs-field-timestamp.entry.js +2 -2
  74. package/dist/esm/verdocs-portal_2.entry.js +21 -37
  75. package/dist/esm/verdocs-preview_8.entry.js +2 -2
  76. package/dist/esm/verdocs-sign.entry.js +1 -1
  77. package/dist/esm/verdocs-template-fields_4.entry.js +38 -66
  78. package/dist/esm/verdocs-web-sdk.js +1 -1
  79. package/dist/esm-es5/TemplateFieldStore-0516a7ec.js +1 -0
  80. package/dist/esm-es5/TemplateStore-618fb47f.js +1 -0
  81. package/dist/esm-es5/ipc-test.entry.js +1 -1
  82. package/dist/esm-es5/loader.js +1 -1
  83. package/dist/esm-es5/verdocs-build.entry.js +1 -1
  84. package/dist/esm-es5/verdocs-field-attachment.entry.js +1 -1
  85. package/dist/esm-es5/verdocs-field-checkbox.entry.js +1 -1
  86. package/dist/esm-es5/verdocs-field-date.entry.js +1 -1
  87. package/dist/esm-es5/verdocs-field-dropdown.entry.js +1 -1
  88. package/dist/esm-es5/verdocs-field-initial.entry.js +1 -1
  89. package/dist/esm-es5/verdocs-field-payment.entry.js +1 -1
  90. package/dist/esm-es5/verdocs-field-radio-button.entry.js +1 -1
  91. package/dist/esm-es5/verdocs-field-signature.entry.js +1 -1
  92. package/dist/esm-es5/verdocs-field-textarea.entry.js +1 -1
  93. package/dist/esm-es5/verdocs-field-textbox.entry.js +1 -1
  94. package/dist/esm-es5/verdocs-field-timestamp.entry.js +1 -1
  95. package/dist/esm-es5/verdocs-portal_2.entry.js +1 -1
  96. package/dist/esm-es5/verdocs-preview_8.entry.js +1 -1
  97. package/dist/esm-es5/verdocs-sign.entry.js +1 -1
  98. package/dist/esm-es5/verdocs-template-fields_4.entry.js +1 -1
  99. package/dist/esm-es5/verdocs-web-sdk.js +1 -1
  100. package/dist/types/components/fields/verdocs-field-payment/verdocs-field-payment.d.ts +0 -21
  101. package/dist/types/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.d.ts +0 -2
  102. package/dist/types/components/templates/verdocs-template-fields/verdocs-template-fields.d.ts +0 -1
  103. package/dist/types/utils/TemplateFieldStore.d.ts +6 -3
  104. package/dist/types/utils/TemplateRoleStore.d.ts +5 -2
  105. package/dist/verdocs-web-sdk/{p-d318d19b.system.entry.js → p-058f0e56.system.entry.js} +1 -1
  106. package/dist/verdocs-web-sdk/{p-0aec8a25.system.entry.js → p-093f593d.system.entry.js} +1 -1
  107. package/dist/verdocs-web-sdk/{p-2458bbc0.system.entry.js → p-09babc77.system.entry.js} +1 -1
  108. package/dist/verdocs-web-sdk/p-0a5b8a89.entry.js +1 -0
  109. package/dist/verdocs-web-sdk/{p-feb78cde.system.entry.js → p-18cb9ef7.system.entry.js} +1 -1
  110. package/dist/verdocs-web-sdk/p-1b661190.entry.js +1 -0
  111. package/dist/verdocs-web-sdk/{p-710d6928.system.entry.js → p-350f1ca4.system.entry.js} +1 -1
  112. package/dist/verdocs-web-sdk/p-35720475.entry.js +1 -0
  113. package/dist/verdocs-web-sdk/{p-a9b53e29.system.entry.js → p-371effb1.system.entry.js} +1 -1
  114. package/dist/verdocs-web-sdk/p-3930ee22.js +1 -0
  115. package/dist/verdocs-web-sdk/p-3989e584.entry.js +1 -0
  116. package/dist/verdocs-web-sdk/{p-a994e40e.entry.js → p-3d9adca7.entry.js} +1 -1
  117. package/dist/verdocs-web-sdk/p-3ec512a6.entry.js +1 -0
  118. package/dist/verdocs-web-sdk/{p-74651412.entry.js → p-413a5b21.entry.js} +1 -1
  119. package/dist/verdocs-web-sdk/p-591b695c.entry.js +1 -0
  120. package/dist/verdocs-web-sdk/p-5cd0b997.entry.js +1 -0
  121. package/dist/verdocs-web-sdk/p-62ec3db9.system.entry.js +1 -0
  122. package/dist/verdocs-web-sdk/p-6be44a1e.js +1 -0
  123. package/dist/verdocs-web-sdk/{p-9fe214d8.entry.js → p-6d42921b.entry.js} +1 -1
  124. package/dist/verdocs-web-sdk/{p-84a111b9.entry.js → p-6d81d774.entry.js} +1 -1
  125. package/dist/verdocs-web-sdk/{p-034c364e.system.entry.js → p-6e45e610.system.entry.js} +1 -1
  126. package/dist/verdocs-web-sdk/p-71faa59f.entry.js +1 -0
  127. package/dist/verdocs-web-sdk/p-73abd3fc.system.entry.js +1 -0
  128. package/dist/verdocs-web-sdk/p-79de397b.entry.js +1 -0
  129. package/dist/verdocs-web-sdk/p-7bdbce2d.system.entry.js +1 -0
  130. package/dist/verdocs-web-sdk/{p-f94e8672.system.entry.js → p-7c8419d7.system.entry.js} +1 -1
  131. package/dist/verdocs-web-sdk/{p-77e66b03.system.entry.js → p-9542e890.system.entry.js} +1 -1
  132. package/dist/verdocs-web-sdk/{p-7c6a9967.system.entry.js → p-a97512f6.system.entry.js} +1 -1
  133. package/dist/verdocs-web-sdk/{p-3f3e3347.system.entry.js → p-aa29c7ec.system.entry.js} +1 -1
  134. package/dist/verdocs-web-sdk/{p-e609b52c.system.entry.js → p-c11c841c.system.entry.js} +1 -1
  135. package/dist/verdocs-web-sdk/{p-6e847f1c.system.entry.js → p-c82a2a4e.system.entry.js} +1 -1
  136. package/dist/verdocs-web-sdk/{p-858f53bd.system.entry.js → p-d32278c8.system.entry.js} +1 -1
  137. package/dist/verdocs-web-sdk/p-df621f8d.system.js +1 -0
  138. package/dist/verdocs-web-sdk/p-ea4db7ae.system.js +1 -0
  139. package/dist/verdocs-web-sdk/p-ea52b891.entry.js +1 -0
  140. package/dist/verdocs-web-sdk/p-f04bf956.system.js +1 -1
  141. package/dist/verdocs-web-sdk/{p-7db381bc.entry.js → p-fda04bb0.entry.js} +1 -1
  142. package/dist/verdocs-web-sdk/p-ff473972.entry.js +1 -0
  143. package/dist/verdocs-web-sdk/p-ffa4091d.entry.js +1 -0
  144. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
  145. package/package.json +1 -1
  146. package/dist/esm-es5/TemplateFieldStore-295f240e.js +0 -1
  147. package/dist/esm-es5/TemplateStore-f188c963.js +0 -1
  148. package/dist/verdocs-web-sdk/p-10d43924.entry.js +0 -1
  149. package/dist/verdocs-web-sdk/p-27b657be.entry.js +0 -1
  150. package/dist/verdocs-web-sdk/p-3819eb68.entry.js +0 -1
  151. package/dist/verdocs-web-sdk/p-3c277355.entry.js +0 -1
  152. package/dist/verdocs-web-sdk/p-48ad75db.entry.js +0 -1
  153. package/dist/verdocs-web-sdk/p-50ee8b2d.entry.js +0 -1
  154. package/dist/verdocs-web-sdk/p-5e1cdb8d.system.entry.js +0 -1
  155. package/dist/verdocs-web-sdk/p-6992b715.system.js +0 -1
  156. package/dist/verdocs-web-sdk/p-8c5de079.entry.js +0 -1
  157. package/dist/verdocs-web-sdk/p-9574a874.entry.js +0 -1
  158. package/dist/verdocs-web-sdk/p-a2965966.system.entry.js +0 -1
  159. package/dist/verdocs-web-sdk/p-a2dacfe7.entry.js +0 -1
  160. package/dist/verdocs-web-sdk/p-abd4e2e2.entry.js +0 -1
  161. package/dist/verdocs-web-sdk/p-af4755e8.entry.js +0 -1
  162. package/dist/verdocs-web-sdk/p-b6ba0812.system.js +0 -1
  163. package/dist/verdocs-web-sdk/p-cc9a62c3.entry.js +0 -1
  164. package/dist/verdocs-web-sdk/p-d4219533.system.entry.js +0 -1
  165. package/dist/verdocs-web-sdk/p-f31a2fba.js +0 -1
  166. package/dist/verdocs-web-sdk/p-ffe39848.js +0 -1
@@ -8,25 +8,6 @@ import { getFieldSettings } from '../../../utils/utils';
8
8
  */
9
9
  export class VerdocsFieldPayment {
10
10
  constructor() {
11
- this._fields = [];
12
- // envelopeFieldsFormGroup: FormGroup;
13
- this.signatureFile = null;
14
- this.initialFile = null;
15
- this.focusOrderNumber = -1;
16
- this.focusFieldName = '';
17
- this.activeElement = null;
18
- this.showError = {
19
- pageNum: -1,
20
- fieldIndex: -1,
21
- type: null,
22
- };
23
- this.dialogOpened = false;
24
- this.closeAllErrors = false;
25
- this.fieldsMap = {};
26
- this.fieldsForCurrentSigner = [];
27
- this.fontSize = 11;
28
- this.averageFontWidth = 5;
29
- this.requiredFields = [];
30
11
  this.fieldStore = null;
31
12
  this.templateid = '';
32
13
  this.fieldname = '';
@@ -65,36 +46,6 @@ export class VerdocsFieldPayment {
65
46
  }
66
47
  }
67
48
  }
68
- // [tabIndex]="field.role !== roleName ? -1 : 1"
69
- // [ngStyle]="field.element_style"
70
- // [value]="field.value"
71
- // (click)="initiateSign(field)"
72
- // (blur)="validateChanges(field)"
73
- // [disabled]="field.role!==roleName"
74
- // [id]="field.key"
75
- // <button _ngcontent-app-root-c342="" class="envelope__field" tabindex="1" ng-reflect-ng-style="[object Object]"
76
- // ng-reflect-ng-class="[object Object]" value="" id="signatureP5-1"
77
- // style="height: 100%; width: 100%; background: none; font-size: 11px; border: 1px solid rgb(204, 0, 0);"> Signature </button>
78
- // bottom: 229.333
79
- // px
80
- // ;
81
- // left: 169.333
82
- // px
83
- // ;
84
- // height: 41
85
- // px
86
- // ;
87
- // width: 82
88
- // px
89
- // ;
90
- // background-color: rgba(156, 39, 176, 0.4);
91
- // transform: scale(1.33333, 1.33333);
92
- // }
93
- // <style>
94
- // .envelope__item[_ngcontent-app-root-c342] {
95
- // position: absolute;
96
- // transform-origin: bottom left;
97
- // opacity: 1;
98
49
  async showSettingsPanel() {
99
50
  const settingsPanel = document.getElementById(`verdocs-settings-panel-${this.fieldname}`);
100
51
  if (settingsPanel && settingsPanel.showPanel) {
@@ -109,7 +60,7 @@ export class VerdocsFieldPayment {
109
60
  }
110
61
  render() {
111
62
  var _a, _b;
112
- const field = this.fieldStore.get(this.fieldname);
63
+ const field = this.fieldStore.get('fields').find(field => field.name === this.fieldname);
113
64
  if (!field) {
114
65
  return h(Fragment, null);
115
66
  }
@@ -41,7 +41,7 @@ export class VerdocsFieldRadioButton {
41
41
  }
42
42
  render() {
43
43
  var _a, _b;
44
- const field = this.fieldStore.get(this.fieldname);
44
+ const field = this.fieldStore.get('fields').find(field => field.name === this.fieldname);
45
45
  if (!field) {
46
46
  return h(Fragment, null);
47
47
  }
@@ -65,7 +65,7 @@ export class VerdocsFieldSignature {
65
65
  }
66
66
  render() {
67
67
  var _a, _b;
68
- const field = this.fieldStore.get(this.fieldname);
68
+ const field = this.fieldStore.get('fields').find(field => field.name === this.fieldname);
69
69
  if (!field) {
70
70
  return h(Fragment, null);
71
71
  }
@@ -74,7 +74,7 @@ export class VerdocsFieldTextarea {
74
74
  Object.assign(e.target.dataset, { x, y, h });
75
75
  }
76
76
  handleResizeEnd(e) {
77
- const field = this.fieldStore.get(this.fieldname);
77
+ const field = this.fieldStore.get('fields').find(field => field.name === this.fieldname);
78
78
  const newSettings = { ...getFieldSettings(field) };
79
79
  const [translateX, translateY] = e.target.style.transform.split('(')[1].split(')')[0].split(',').map(parseFloat);
80
80
  newSettings.width = Math.round(parseFloat(e.target.style.width) / this.xscale);
@@ -91,7 +91,7 @@ export class VerdocsFieldTextarea {
91
91
  }
92
92
  render() {
93
93
  var _a, _b;
94
- const field = this.fieldStore.get(this.fieldname);
94
+ const field = this.fieldStore.get('fields').find(field => field.name === this.fieldname);
95
95
  if (!field) {
96
96
  return h(Fragment, null);
97
97
  }
@@ -74,7 +74,7 @@ export class VerdocsFieldTextbox {
74
74
  Object.assign(e.target.dataset, { x, y, h });
75
75
  }
76
76
  handleResizeEnd(e) {
77
- const field = this.fieldStore.get(this.fieldname);
77
+ const field = this.fieldStore.get('fields').find(field => field.name === this.fieldname);
78
78
  const newSettings = { ...getFieldSettings(field) };
79
79
  const [translateX, translateY] = e.target.style.transform.split('(')[1].split(')')[0].split(',').map(parseFloat);
80
80
  newSettings.width = Math.round(parseFloat(e.target.style.width) / this.xscale);
@@ -92,7 +92,7 @@ export class VerdocsFieldTextbox {
92
92
  }
93
93
  render() {
94
94
  var _a, _b;
95
- const field = this.fieldStore.get(this.fieldname);
95
+ const field = this.fieldStore.get('fields').find(field => field.name === this.fieldname);
96
96
  if (!field) {
97
97
  return h(Fragment, null);
98
98
  }
@@ -43,7 +43,7 @@ export class VerdocsFieldTimestamp {
43
43
  }
44
44
  render() {
45
45
  var _a, _b;
46
- const field = this.fieldStore.get(this.fieldname);
46
+ const field = this.fieldStore.get('fields').find(field => field.name === this.fieldname);
47
47
  if (!field) {
48
48
  return h(Fragment, null);
49
49
  }
@@ -2,7 +2,7 @@ import uuidv4 from 'uuid-browser';
2
2
  import { VerdocsEndpoint } from '@verdocs/js-sdk';
3
3
  import { deleteField, updateField } from '@verdocs/js-sdk/Templates/Fields';
4
4
  import { h, Host } from '@stencil/core';
5
- import { createTemplateFieldStore } from '../../../utils/TemplateFieldStore';
5
+ import { createTemplateFieldStore, updateStoreField } from '../../../utils/TemplateFieldStore';
6
6
  import { getTemplateStore } from '../../../utils/TemplateStore';
7
7
  import { SDKError } from '../../../utils/errors';
8
8
  const capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1);
@@ -15,7 +15,6 @@ export class VerdocsTemplateFieldProperties {
15
15
  constructor() {
16
16
  this.templateStore = null;
17
17
  this.fieldStore = null;
18
- this.watcher = null;
19
18
  this.endpoint = VerdocsEndpoint.getDefault();
20
19
  this.templateId = '';
21
20
  this.fieldName = '';
@@ -56,7 +55,7 @@ export class VerdocsTemplateFieldProperties {
56
55
  createTemplateFieldStore(this.templateStore.state);
57
56
  this.fieldStore = await createTemplateFieldStore(this.templateStore.state);
58
57
  // console.log('tfs', this.fieldStore?.state);
59
- const field = this.fieldStore.get(this.fieldName);
58
+ const field = this.fieldStore.get('fields').find(field => field.name === this.fieldName);
60
59
  // console.log('gf', field);
61
60
  if (!field) {
62
61
  console.log(`[FIELD PROPERTIES] Unable to find field "${this.fieldName}" in fields`);
@@ -64,25 +63,6 @@ export class VerdocsTemplateFieldProperties {
64
63
  else {
65
64
  console.log('props', field);
66
65
  }
67
- this.watcher = this.fieldStore.onChange(this.fieldName, (field) => {
68
- console.log('Field changed', field);
69
- // this.type = field.type;
70
- // this.name = field.name;
71
- // this.label = field.label;
72
- // this.group = field.name;
73
- // this.roleName = field.role_name;
74
- // this.required = field.required;
75
- // this.fieldType = field.type;
76
- // // TODO: Talk about how we want to handle labels/placeholders
77
- // this.placeholder = field.setting?.placeholder || '';
78
- // this.value = field.setting?.result || '';
79
- // this.leading = field.setting?.leading || 0;
80
- // this.setting = field.setting || {};
81
- // this.options = field.setting?.options || [];
82
- // this.dirty = false;
83
- // this.loading = false;
84
- });
85
- console.log('watcher', this.watcher);
86
66
  this.type = field.type;
87
67
  this.name = field.name;
88
68
  this.label = field.label;
@@ -109,7 +89,7 @@ export class VerdocsTemplateFieldProperties {
109
89
  handleCancel(e) {
110
90
  var _a, _b, _c, _d;
111
91
  e.stopPropagation();
112
- const field = this.fieldStore.get(this.fieldName);
92
+ const field = this.fieldStore.get('fields').find(field => field.name === this.fieldName);
113
93
  if (field) {
114
94
  this.name = field.name;
115
95
  this.label = field.label;
@@ -149,11 +129,19 @@ export class VerdocsTemplateFieldProperties {
149
129
  }
150
130
  console.log('FP: Will update', this.fieldName, newProperties);
151
131
  updateField(this.endpoint, this.templateId, this.fieldName, newProperties)
152
- .then(field => {
132
+ .then(updated => {
153
133
  var _a, _b;
154
134
  this.dirty = false;
155
- this.updateField(field);
156
- (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.fieldName, settings: newProperties, field });
135
+ const newFields = [
136
+ ...this.fieldStore.get('fields').map(field => {
137
+ if (field.name !== this.fieldName) {
138
+ return field;
139
+ }
140
+ return { ...field, ...updated };
141
+ }),
142
+ ];
143
+ this.fieldStore.set('fields', newFields);
144
+ (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.fieldName, settings: newProperties, field: updated });
157
145
  (_b = this.close) === null || _b === void 0 ? void 0 : _b.emit();
158
146
  })
159
147
  .catch(() => {
@@ -187,29 +175,25 @@ export class VerdocsTemplateFieldProperties {
187
175
  delete newProperties.setting.result;
188
176
  newProperties.setting.options = [...this.options];
189
177
  updateField(this.endpoint, this.templateId, this.fieldName, newProperties)
190
- .then(field => {
178
+ .then(updated => {
191
179
  var _a, _b;
192
180
  this.dirty = false;
193
- this.updateField(field);
194
- (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.fieldName, settings: newProperties, field });
181
+ updateStoreField(this.fieldStore, this.fieldName, updated);
182
+ this.fieldName = updated.name;
183
+ (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.fieldName, settings: newProperties, field: updated });
195
184
  (_b = this.close) === null || _b === void 0 ? void 0 : _b.emit();
196
185
  })
197
186
  .catch(() => {
198
187
  console.log('Field update failed', e);
199
188
  });
200
189
  }
201
- updateField(newField) {
202
- const oldField = this.fieldStore.get(this.fieldName) || {};
203
- console.log('Updating field', this.fieldName, newField);
204
- Object.assign(oldField, newField);
205
- }
206
190
  async handleDelete(e) {
207
191
  e.stopPropagation();
208
192
  if (window.confirm('Are you sure you wish to remove this field? This action cannot be undone.')) {
209
193
  deleteField(this.endpoint, this.templateId, this.fieldName)
210
194
  .then(() => {
211
195
  var _a;
212
- this.fieldStore.set(this.fieldName, undefined);
196
+ this.fieldStore.set('fields', this.fieldStore.get('fields').filter(field => field.name !== this.fieldName));
213
197
  (_a = this.delete) === null || _a === void 0 ? void 0 : _a.emit({ templateId: this.templateId, roleName: this.roleName });
214
198
  })
215
199
  .catch(e => {
@@ -224,7 +208,7 @@ export class VerdocsTemplateFieldProperties {
224
208
  return (h(Host, null, h("verdocs-component-error", { message: "You must be authenticated to use this module." })));
225
209
  }
226
210
  // This is meant to be a companion for larger visual experiences so we just go blank on errors for now.
227
- if (!this.endpoint.session || !this.fieldStore.get(this.fieldName)) {
211
+ if (!this.endpoint.session || !this.fieldStore.get('fields').some(field => field.name === this.fieldName)) {
228
212
  return h(Host, { class: "empty" });
229
213
  }
230
214
  if (this.helpText && this.showingHelp) {
@@ -333,7 +317,7 @@ export class VerdocsTemplateFieldProperties {
333
317
  },
334
318
  "fieldName": {
335
319
  "type": "string",
336
- "mutable": false,
320
+ "mutable": true,
337
321
  "complexType": {
338
322
  "original": "string",
339
323
  "resolved": "string",
@@ -5,7 +5,7 @@ import { createField, updateField } from '@verdocs/js-sdk/Templates/Fields';
5
5
  import { h, Host } from '@stencil/core';
6
6
  import { defaultHeight, defaultWidth, getRoleIndex, renderDocumentField, updateCssTransform } from '../../../utils/utils';
7
7
  import { getRoleNames, getTemplateStore } from '../../../utils/TemplateStore';
8
- import { getTemplateFieldStore } from '../../../utils/TemplateFieldStore';
8
+ import { getTemplateFieldStore, updateStoreField } from '../../../utils/TemplateFieldStore';
9
9
  import { getTemplateRoleStore } from '../../../utils/TemplateRoleStore';
10
10
  import { SDKError } from '../../../utils/errors';
11
11
  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>';
@@ -101,33 +101,12 @@ export class VerdocsTemplateFields {
101
101
  async handleFieldChange(field, e, optionId) {
102
102
  console.log('[FIELDS] handleFieldChange', field, e, optionId);
103
103
  }
104
- handleFieldSettingsChange(pageInfo, field, el, newFieldData, oldName) {
105
- var _a, _b;
106
- // handleFieldSettingsChange(pageInfo: any, field: any, roleIndex: number, el: any, newFieldData: any) {
107
- console.log('[FIELDS] Field settings changed', oldName, field.name, newFieldData);
108
- Object.assign(field, newFieldData);
109
- el.field = newFieldData;
110
- this.selectedRoleName = field.role_name;
111
- el.setAttribute('roleindex', getRoleIndex(getRoleNames(this.templateStore), field.role_name));
112
- el.field = this.fieldStore.get(field.name);
113
- (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: (_b = this.templateStore) === null || _b === void 0 ? void 0 : _b.state, event: 'updated-field' });
114
- // We do this to avoid dupes if the field gets renamed.
115
- if (field.name !== oldName) {
116
- console.log('[FIELDS] Renaming field', oldName, field.name);
117
- el.remove();
118
- delete this.fieldStore.state[oldName];
119
- }
120
- else {
121
- console.log('[FIELDS] Updating existing field', field.name);
122
- }
123
- // REMINDER: Do not access el past this point! It may have been removed from the DOM.
124
- console.log('[FIELDS] Re-rendering field', field.name, pageInfo.pageNumber, field);
125
- this.fieldStore.set(field.name, field);
126
- this.reRenderField(field, pageInfo.pageNumber);
127
- }
128
104
  attachFieldAttributes(pageInfo, field, roleIndex, el) {
129
105
  el.addEventListener('input', e => this.handleFieldChange(field, e));
130
- el.addEventListener('settingsChanged', e => this.handleFieldSettingsChange(pageInfo, field, el, e.detail.field, e.detail.fieldName));
106
+ el.addEventListener('settingsChanged', () => {
107
+ var _a, _b;
108
+ (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: (_b = this.templateStore) === null || _b === void 0 ? void 0 : _b.state, event: 'added-field' });
109
+ });
131
110
  el.addEventListener('deleted', () => {
132
111
  var _a, _b;
133
112
  console.log('[FIELDS] Deleted', this, field);
@@ -147,9 +126,7 @@ export class VerdocsTemplateFields {
147
126
  // console.log('[FIELDS] Page rendered', pageInfo.pageNumber, pageInfo);
148
127
  this.cachedPageInfo[pageInfo.pageNumber] = pageInfo;
149
128
  this.pageHeights[pageInfo.pageNumber] = pageInfo.naturalHeight;
150
- // Entries can be undefined when deleted because Stencil has no remove() operator yet for stores.
151
- // See https://github.com/ionic-team/stencil-store/issues/23
152
- const fields = Object.values(this.fieldStore.state).filter((field) => field && field.page_sequence === pageInfo.pageNumber);
129
+ const fields = this.fieldStore.get('fields').filter(field => field && field.page_sequence === pageInfo.pageNumber);
153
130
  console.log('[FIELDS] Page rendered', pageInfo, fields);
154
131
  fields.forEach((field) => this.reRenderField(field, pageInfo.pageNumber));
155
132
  }
@@ -191,9 +168,10 @@ export class VerdocsTemplateFields {
191
168
  updateCssTransform(event.target, 'translate', `${newX}px, ${newY}px`);
192
169
  }
193
170
  async handleMoveEnd(event) {
171
+ var _a, _b;
194
172
  const name = event.target.getAttribute('name');
195
173
  const option = +(event.target.getAttribute('option') || '0');
196
- const field = this.fieldStore.get(name);
174
+ const field = this.fieldStore.get('fields').find(field => field.name === name);
197
175
  if (!field) {
198
176
  console.log('[FIELDS] Unable to find field', name);
199
177
  return;
@@ -236,10 +214,10 @@ export class VerdocsTemplateFields {
236
214
  }
237
215
  console.log('[FIELDS] Will update', name, y, option, field);
238
216
  const newFieldData = await updateField(this.endpoint, this.templateId, name, field);
239
- const pageInfo = this.cachedPageInfo[pageNumber];
240
- this.handleFieldSettingsChange(pageInfo, field, event.target, newFieldData, name);
217
+ updateStoreField(this.fieldStore, name, newFieldData);
241
218
  event.target.removeAttribute('posX');
242
219
  event.target.removeAttribute('posY');
220
+ (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: (_b = this.templateStore) === null || _b === void 0 ? void 0 : _b.state, event: 'updated-field' });
243
221
  }
244
222
  generateFieldName(type, pageNumber) {
245
223
  let i = 1;
@@ -247,7 +225,7 @@ export class VerdocsTemplateFields {
247
225
  do {
248
226
  fieldName = `${type}P${pageNumber}-${i}`;
249
227
  i++;
250
- } while (Object.values(this.fieldStore.state).some(field => field && field.name === fieldName));
228
+ } while (this.fieldStore.get('fields').some(field => field && field.name === fieldName));
251
229
  return fieldName;
252
230
  }
253
231
  // Scale the X,Y clicks to the virtual page dimensions. Also ensure the field doesn't go off the page.
@@ -352,10 +330,9 @@ export class VerdocsTemplateFields {
352
330
  }
353
331
  const saved = await createField(this.endpoint, this.templateId, field);
354
332
  console.log('[FIELDS] Saved field', saved);
355
- this.fieldStore.set(saved.name, saved);
333
+ this.fieldStore.set('fields', [...this.fieldStore.state.fields, saved]);
356
334
  this.placing = null;
357
335
  (_a = this.templateUpdated) === null || _a === void 0 ? void 0 : _a.emit({ endpoint: this.endpoint, template: (_b = this.templateStore) === null || _b === void 0 ? void 0 : _b.state, event: 'added-field' });
358
- this.reRenderField(saved, pageNumber);
359
336
  }
360
337
  }
361
338
  render() {
@@ -2,7 +2,7 @@ import { VerdocsEndpoint } from '@verdocs/js-sdk';
2
2
  import { deleteRole, updateRole } from '@verdocs/js-sdk/Templates/Roles';
3
3
  import { h, Host } from '@stencil/core';
4
4
  import { TemplateSenderTypes } from '@verdocs/js-sdk/Templates/Types';
5
- import { createTemplateRoleStore } from '../../../utils/TemplateRoleStore';
5
+ import { createTemplateRoleStore, deleteStoreRole, updateStoreRole } from '../../../utils/TemplateRoleStore';
6
6
  import { getTemplateFieldStore } from '../../../utils/TemplateFieldStore';
7
7
  import { getTemplateStore } from '../../../utils/TemplateStore';
8
8
  import { SDKError } from '../../../utils/errors';
@@ -43,7 +43,7 @@ export class VerdocsTemplateRoleProperties {
43
43
  this.templateStore = await getTemplateStore(this.endpoint, this.templateId, false);
44
44
  this.fieldStore = getTemplateFieldStore(this.templateId);
45
45
  this.roleStore = createTemplateRoleStore(this.templateStore.state);
46
- const editingRole = this.roleStore.get(this.roleName);
46
+ const editingRole = this.roleStore.state.roles.find(role => role.name === this.roleName);
47
47
  if (editingRole) {
48
48
  this.name = editingRole.name;
49
49
  this.type = editingRole.type;
@@ -62,7 +62,7 @@ export class VerdocsTemplateRoleProperties {
62
62
  handleCancel(e) {
63
63
  var _a;
64
64
  e.stopPropagation();
65
- const editingRole = this.roleStore.get(this.roleName);
65
+ const editingRole = this.roleStore.state.roles.find(role => role.name === this.roleName);
66
66
  if (editingRole) {
67
67
  this.name = editingRole.name;
68
68
  this.type = editingRole.type;
@@ -90,10 +90,7 @@ export class VerdocsTemplateRoleProperties {
90
90
  console.log('[ROLE_PROPERTIES] Update result', r);
91
91
  this.saving = false;
92
92
  this.dirty = false;
93
- this.roleStore.set(r.name, r);
94
- if (this.roleName !== r.name) {
95
- this.roleStore.set(this.roleName, undefined);
96
- }
93
+ updateStoreRole(this.roleStore, this.roleName, r);
97
94
  (_a = this.close) === null || _a === void 0 ? void 0 : _a.emit();
98
95
  })
99
96
  .catch(e => {
@@ -105,9 +102,9 @@ export class VerdocsTemplateRoleProperties {
105
102
  e.stopPropagation();
106
103
  if (window.confirm('Are you sure you wish to remove this role? All associated fields will be removed as well. This action cannot be undone.')) {
107
104
  deleteRole(this.endpoint, this.templateId, this.roleName)
108
- .then(r => {
105
+ .then(() => {
109
106
  var _a;
110
- delete this.roleStore.state[r.name];
107
+ deleteStoreRole(this.roleStore, this.roleName);
111
108
  (_a = this.delete) === null || _a === void 0 ? void 0 : _a.emit({ templateId: this.templateId, roleName: this.roleName });
112
109
  })
113
110
  .catch(e => {
@@ -116,7 +113,7 @@ export class VerdocsTemplateRoleProperties {
116
113
  }
117
114
  }
118
115
  render() {
119
- const hasFields = Object.values(this.fieldStore).findIndex(field => field.role_name === this.roleName) !== -1;
116
+ const hasFields = this.fieldStore.get('fields').some(field => field.role_name === this.roleName);
120
117
  return (h(Host, null, h("div", { class: "background-overlay", onClick: e => this.handleCancel(e) }, h("div", { class: "dialog" }, h("form", { onSubmit: e => e.preventDefault(), onClick: e => e.stopPropagation(), autocomplete: "off" }, h("verdocs-text-input", { id: "verdocs-role-name", label: "Role Name", value: this.name, autocomplete: "off", disabled: hasFields, helpText: hasFields
121
118
  ? 'This role has fields assigned and can no longer be renamed.'
122
119
  : 'A unique name to identify the role in the workflow. Submitted data will also be tagged with this value.', placeholder: "Role Name...", onInput: (e) => {
@@ -4,7 +4,7 @@ import { getRGBA } from '@verdocs/js-sdk/Utils/Colors';
4
4
  import { createRole, updateRole } from '@verdocs/js-sdk/Templates/Roles';
5
5
  import { TemplateSenderTypes } from '@verdocs/js-sdk/Templates/Types';
6
6
  import { h, Fragment, Host } from '@stencil/core';
7
- import { getTemplateRoleStore } from '../../../utils/TemplateRoleStore';
7
+ import { getTemplateRoleStore, updateStoreRole } from '../../../utils/TemplateRoleStore';
8
8
  import { getTemplateStore } from '../../../utils/TemplateStore';
9
9
  import { getRoleIndex } from '../../../utils/utils';
10
10
  import { SDKError } from '../../../utils/errors';
@@ -68,6 +68,7 @@ export class VerdocsTemplateRoles {
68
68
  const oldX = +(e.target.getAttribute('dX') || 0);
69
69
  const oldY = +(e.target.getAttribute('dY') || 0);
70
70
  const sequence = +(e.target.dataset['sequence'] || 0);
71
+ const order = +(e.target.dataset['order'] || 0);
71
72
  const newX = e.dx + oldX;
72
73
  const newY = e.dy + oldY;
73
74
  e.target.setAttribute('dX', newX);
@@ -75,7 +76,8 @@ export class VerdocsTemplateRoles {
75
76
  const rect = e.target.getBoundingClientRect();
76
77
  // Note: I never did figure out exactly why this is, but if we don't offset the transform
77
78
  // the dragged item is offset from the mouse cursor quite a bit.
78
- e.target.style.transform = `translate(${newX + 80}px, ${newY - rect.height * sequence}px)`;
79
+ console.log('w', rect.width);
80
+ e.target.style.transform = `translate(${newX + rect.width - (order + 1)}px, ${newY - rect.height * sequence}px)`;
79
81
  }.bind(this),
80
82
  end: function handleEnd(e) {
81
83
  e.target.classList.remove('dragging');
@@ -89,22 +91,17 @@ export class VerdocsTemplateRoles {
89
91
  });
90
92
  interact('.dropzone').dropzone({
91
93
  overlap: 0.05,
92
- ondrop: async function handleDrop(event) {
94
+ ondrop: async function onDrop(event) {
93
95
  var _a;
96
+ console.log('dropped', event.target.classList);
94
97
  event.target.classList.remove('active');
95
98
  const roleName = event.relatedTarget.dataset.rolename;
96
99
  const targetSequence = +event.target.dataset.sequence;
97
100
  const targetOrder = +event.target.dataset.order;
98
- const changingRole = this.roleStore.get(roleName);
99
- if (changingRole) {
100
- // To handle the renumbering, we update the role being moved to the new values, which will be some half-interval e.g.
101
- // sequence 1.5 order 1. Then we sort/renumber the roles at each level to determine their final ordering values.
102
- const newRole = { ...changingRole, sequence: targetSequence, order: targetOrder };
103
- this.roleStore.set(changingRole.name, newRole);
104
- await this.renumberTemplateRoles();
105
- (_a = this.rolesUpdated) === null || _a === void 0 ? void 0 : _a.emit({ event: 'updated', endpoint: this.endpoint, templateId: this.templateId, roles: this.getSortedRoles() });
106
- console.log('[ROLES] Updated roles', this.getSortedRoles());
107
- }
101
+ updateStoreRole(this.roleStore, roleName, { sequence: targetSequence, order: targetOrder });
102
+ await this.renumberTemplateRoles();
103
+ console.log('[ROLES] Updated roles', this.getSortedRoles());
104
+ (_a = this.rolesUpdated) === null || _a === void 0 ? void 0 : _a.emit({ event: 'updated', endpoint: this.endpoint, templateId: this.templateId, roles: this.getSortedRoles() });
108
105
  }.bind(this),
109
106
  ondropactivate: e => {
110
107
  e.target.classList.add('visible');
@@ -129,9 +126,7 @@ export class VerdocsTemplateRoles {
129
126
  (_a = this.next) === null || _a === void 0 ? void 0 : _a.emit();
130
127
  }
131
128
  getSortedRoles() {
132
- return Object.values(this.roleStore.state)
133
- .filter(role => role !== undefined)
134
- .sort((a, b) => {
129
+ return this.roleStore.state.roles.sort((a, b) => {
135
130
  return a.sequence === b.sequence ? a.order - b.order : a.sequence - b.sequence;
136
131
  });
137
132
  }
@@ -151,12 +146,13 @@ export class VerdocsTemplateRoles {
151
146
  getRolesAtSequence(sequence) {
152
147
  // Entries can be undefined when deleted because Stencil has no remove() operator yet for stores.
153
148
  // See https://github.com/ionic-team/stencil-store/issues/23
154
- return Object.values(this.roleStore.state).filter(role => role && role.sequence === sequence);
149
+ return this.roleStore.state.roles.filter(role => role && role.sequence === sequence);
155
150
  }
156
151
  // When the user drags a role around, we handle placement "between" items by assigning it a half-order number
157
152
  // e.g. 1.5 to place it between items 1 and 2, 0.5 to place it at the beginning, or last+0.5 to place it at the end.
158
153
  // Then we re-sort the list of roles and renumber them.
159
154
  renumberTemplateRoles() {
155
+ console.log('Renumbering roles', this.getSequenceNumbers(), JSON.stringify(this.roleStore.state));
160
156
  // Avoid dupe renumber attempts
161
157
  const renumbered = [];
162
158
  // If the user dragged an entry from below a row to above it, we end up here like [1,0]. Make sure it's [0,1] for the next operation.
@@ -175,13 +171,13 @@ export class VerdocsTemplateRoles {
175
171
  }
176
172
  // Look for name conflicts, because they're UGC and can be anything, regardless of order.
177
173
  getNextRoleName() {
178
- var _a;
174
+ console.log('Getting next role name', JSON.stringify(this.roleStore.state));
179
175
  let name = '';
180
- let nextNumber = Object.keys(this.roleStore).length;
176
+ let nextNumber = Object.keys(this.roleStore.state).length - 1;
181
177
  do {
182
178
  nextNumber++;
183
179
  name = `Recipient ${nextNumber}`;
184
- } while (!name || Object.values((_a = this.roleStore) === null || _a === void 0 ? void 0 : _a.state).some(role => role && role.name === name));
180
+ } while (!name || this.roleStore.state.roles.some(role => role && role.name === name));
185
181
  return name;
186
182
  }
187
183
  callCreateRole(name, sequence, order) {
@@ -200,7 +196,7 @@ export class VerdocsTemplateRoles {
200
196
  .then(async (r) => {
201
197
  var _a;
202
198
  console.log('[ROLES] Created role', r);
203
- this.roleStore.set(r.name, r);
199
+ this.roleStore.set('roles', [...this.roleStore.state.roles, r]);
204
200
  await this.renumberTemplateRoles();
205
201
  (_a = this.rolesUpdated) === null || _a === void 0 ? void 0 : _a.emit({ event: 'added', endpoint: this.endpoint, templateId: this.templateId, roles: this.getSortedRoles() });
206
202
  })
@@ -228,11 +224,13 @@ export class VerdocsTemplateRoles {
228
224
  if (!((_a = this.templateStore) === null || _a === void 0 ? void 0 : _a.state.isLoaded)) {
229
225
  return (h(Host, { class: "loading" }, h("verdocs-loader", null)));
230
226
  }
227
+ console.log('Rendering roles', this.roleStore.get('roles'));
231
228
  const roleNames = this.getRoleNames();
232
229
  const sequences = this.getSequenceNumbers();
230
+ console.log('Rendering', roleNames, sequences);
233
231
  return (h(Host, null, h("form", { onSubmit: e => e.preventDefault(), onClick: e => e.stopPropagation(), autocomplete: "off" }, h("h5", null, "Roles and Workflow"), h("div", { class: "participants" }, h("div", { class: "left-line" }), h("div", { class: "row" }, h("div", { class: "icon", innerHTML: startIcon }), h("div", { class: "row-roles" }, h("div", { class: "sender" }, h("span", { class: "label" }, "Sender:"), " ", senderLabels[(_c = (_b = this.templateStore) === null || _b === void 0 ? void 0 : _b.state) === null || _c === void 0 ? void 0 : _c.sender], ' ', h("div", { class: "settings-button", innerHTML: settingsIcon, onClick: () => (this.showingSenderDialog = true), "aria-role": "button" })))), h("div", { class: "row add-sequence", "data-sequence": 0 }, h("div", { class: "icon", innerHTML: plusIcon }), h("div", { class: "row-roles" }, h("div", { class: "dropzone", "data-sequence": 0, "data-order": 1 }, "Add Step"))), sequences.map(sequence => (h(Fragment, null, h("div", { class: "row" }, h("div", { class: "icon", innerHTML: stepIcon }), h("div", { class: "row-roles" }, h("div", { class: "dropzone", "data-order": 0.5, "data-sequence": sequence }), this.getRolesAtSequence(sequence).map(role => {
234
232
  const unknown = !role.email;
235
- return unknown ? (h(Fragment, null, h("div", { class: "recipient", style: { backgroundColor: getRGBA(getRoleIndex(roleNames, role.name)) }, "data-rolename": role.name, "data-sequence": sequence }, h("span", { class: "type-icon", innerHTML: role.type === 'signer' ? iconSigner : role.type === 'cc' ? iconCC : iconApprover }), role.name, " ", h("div", { class: "settings-button", innerHTML: settingsIcon, onClick: () => (this.showingRoleDialog = role.name), "aria-role": "button" })), h("div", { class: "dropzone", "data-order": role.order + 0.5, "data-sequence": sequence }))) : (h(Fragment, null, h("div", { class: "recipient", style: { borderColor: getRGBA(getRoleIndex(roleNames, role.name)) }, "data-rolename": role.name, "data-sequence": sequence }, h("span", { class: "type-icon", innerHTML: role.type === 'signer' ? iconSigner : role.type === 'cc' ? iconCC : iconApprover }), role.full_name, " ", h("div", { class: "settings-button", innerHTML: settingsIcon, onClick: () => (this.showingRoleDialog = role.name), "aria-role": "button" })), h("div", { class: "dropzone", "data-order": role.order + 0.5, "data-sequence": sequence })));
233
+ return unknown ? (h(Fragment, null, h("div", { class: "recipient", style: { backgroundColor: getRGBA(getRoleIndex(roleNames, role.name)) }, "data-rolename": role.name, "data-sequence": sequence, "data-order": role.order }, h("span", { class: "type-icon", innerHTML: role.type === 'signer' ? iconSigner : role.type === 'cc' ? iconCC : iconApprover }), role.name, " ", h("div", { class: "settings-button", innerHTML: settingsIcon, onClick: () => (this.showingRoleDialog = role.name), "aria-role": "button" })), h("div", { class: "dropzone", "data-order": role.order + 0.5, "data-sequence": sequence }))) : (h(Fragment, null, h("div", { class: "recipient", style: { borderColor: getRGBA(getRoleIndex(roleNames, role.name)) }, "data-rolename": role.name, "data-sequence": sequence, "data-order": role.order }, h("span", { class: "type-icon", innerHTML: role.type === 'signer' ? iconSigner : role.type === 'cc' ? iconCC : iconApprover }), role.full_name, " ", h("div", { class: "settings-button", innerHTML: settingsIcon, onClick: () => (this.showingRoleDialog = role.name), "aria-role": "button" })), h("div", { class: "dropzone", "data-order": role.order + 0.5, "data-sequence": sequence })));
236
234
  }), h("button", { class: "add-role", innerHTML: plusIcon, onClick: e => this.handleAddRole(e, sequence) }))), sequences.length > 0 && (h("div", { class: "row add-sequence", "data-sequence": sequence }, h("div", { class: "row-roles" }, h("div", { class: "icon", innerHTML: plusIcon }), h("div", { class: "dropzone", "data-sequence": sequence + 1, "data-order": 1 }, "Add Step"))))))), h("div", { class: "row", "data-sequence": sequences.length + 1 }, h("div", { class: "row-roles" }, h("div", { class: "icon", innerHTML: plusIcon }), h("button", { class: "add-step", innerHTML: plusIcon, onClick: e => this.handleAddStep(e, sequences.length + 1) }))), h("div", { class: "row" }, h("div", { class: "icon", innerHTML: doneIcon }), h("div", { class: "row-roles" }, h("div", { class: "complete" }, "Document Complete")))), roleNames.length < 1 && (h("div", { class: "empty" }, "You must add at least one Role before proceeding.", h("br", null), " Click the ", h("span", { innerHTML: plusIcon }), " Add button above to get started.")), h("div", { class: "buttons" }, h("div", { class: "flex-fill" }), h("verdocs-button", { variant: "outline", label: "Cancel", size: "small", onClick: () => this.handleCancel() }), h("verdocs-button", { label: "OK", size: "small", onClick: () => this.handleSubmit(), disabled: roleNames.length < 1 }))), this.showingRoleDialog && (h("verdocs-template-role-properties", { endpoint: this.endpoint, templateId: this.templateId, roleName: this.showingRoleDialog, onClose: () => {
237
235
  this.showingRoleDialog = null;
238
236
  }, onDelete: async () => {
@@ -5,31 +5,42 @@ export const createTemplateFieldStore = (template) => {
5
5
  let store = getTemplateFieldStore(template.id);
6
6
  if (!store) {
7
7
  console.log('Creating template field store for template', template.id);
8
- store = createStore({});
8
+ store = createStore({ fields: [] });
9
9
  templateFieldStores[template.id] = store;
10
10
  }
11
11
  else {
12
12
  console.log('Resetting template field store for template', template.id);
13
13
  store.reset();
14
14
  }
15
- template.fields.forEach(field => {
16
- store.set(field.name, field);
17
- });
15
+ store.set('fields', [...template.fields]);
18
16
  return store;
19
17
  };
20
18
  export const createTemplateFieldStoreFromEnvelope = (envelope) => {
21
19
  let store = getTemplateFieldStore(envelope.template_id);
22
20
  if (!store) {
23
21
  console.log('Creating field store for envelope', envelope.id, envelope.template_id);
24
- store = createStore({});
22
+ store = createStore({ fields: [] });
25
23
  templateFieldStores[envelope.template_id] = store;
26
24
  }
27
25
  else {
28
26
  console.log('Resetting field store for envelope', envelope.id, envelope.template_id);
29
27
  store.reset();
30
28
  }
31
- envelope.fields.forEach(field => {
32
- store.set(field.name, field);
33
- });
29
+ store.set('fields', [...envelope.fields]);
34
30
  return store;
35
31
  };
32
+ export const updateStoreField = (store, name, newFieldData) => {
33
+ const newFields = [
34
+ ...store.get('fields').map(field => {
35
+ if (field.name !== name) {
36
+ return field;
37
+ }
38
+ return { ...field, ...newFieldData };
39
+ }),
40
+ ];
41
+ store.set('fields', newFields);
42
+ };
43
+ export const deleteStoreField = (store, name) => {
44
+ const newFields = [...store.get('fields').filter(field => field.name !== name)];
45
+ store.set('fields', newFields);
46
+ };