@verdocs/web-sdk 2.3.25 → 2.3.27

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 (165) 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 +25 -40
  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 +26 -40
  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 +26 -41
  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/docs.json +2 -2
  57. package/dist/esm/{TemplateFieldStore-295f240e.js → TemplateFieldStore-0516a7ec.js} +16 -9
  58. package/dist/esm/{TemplateStore-f188c963.js → TemplateStore-618fb47f.js} +19 -6
  59. package/dist/esm/ipc-test.entry.js +2 -2
  60. package/dist/esm/loader.js +1 -1
  61. package/dist/esm/verdocs-build.entry.js +2 -2
  62. package/dist/esm/verdocs-field-attachment.entry.js +2 -2
  63. package/dist/esm/verdocs-field-checkbox.entry.js +2 -2
  64. package/dist/esm/verdocs-field-date.entry.js +3 -3
  65. package/dist/esm/verdocs-field-dropdown.entry.js +2 -2
  66. package/dist/esm/verdocs-field-initial.entry.js +2 -2
  67. package/dist/esm/verdocs-field-payment.entry.js +2 -51
  68. package/dist/esm/verdocs-field-radio-button.entry.js +2 -2
  69. package/dist/esm/verdocs-field-signature.entry.js +2 -2
  70. package/dist/esm/verdocs-field-textarea.entry.js +3 -3
  71. package/dist/esm/verdocs-field-textbox.entry.js +3 -3
  72. package/dist/esm/verdocs-field-timestamp.entry.js +2 -2
  73. package/dist/esm/verdocs-portal_2.entry.js +25 -40
  74. package/dist/esm/verdocs-preview_8.entry.js +2 -2
  75. package/dist/esm/verdocs-sign.entry.js +1 -1
  76. package/dist/esm/verdocs-template-fields_4.entry.js +38 -66
  77. package/dist/esm/verdocs-web-sdk.js +1 -1
  78. package/dist/esm-es5/TemplateFieldStore-0516a7ec.js +1 -0
  79. package/dist/esm-es5/TemplateStore-618fb47f.js +1 -0
  80. package/dist/esm-es5/ipc-test.entry.js +1 -1
  81. package/dist/esm-es5/loader.js +1 -1
  82. package/dist/esm-es5/verdocs-build.entry.js +1 -1
  83. package/dist/esm-es5/verdocs-field-attachment.entry.js +1 -1
  84. package/dist/esm-es5/verdocs-field-checkbox.entry.js +1 -1
  85. package/dist/esm-es5/verdocs-field-date.entry.js +1 -1
  86. package/dist/esm-es5/verdocs-field-dropdown.entry.js +1 -1
  87. package/dist/esm-es5/verdocs-field-initial.entry.js +1 -1
  88. package/dist/esm-es5/verdocs-field-payment.entry.js +1 -1
  89. package/dist/esm-es5/verdocs-field-radio-button.entry.js +1 -1
  90. package/dist/esm-es5/verdocs-field-signature.entry.js +1 -1
  91. package/dist/esm-es5/verdocs-field-textarea.entry.js +1 -1
  92. package/dist/esm-es5/verdocs-field-textbox.entry.js +1 -1
  93. package/dist/esm-es5/verdocs-field-timestamp.entry.js +1 -1
  94. package/dist/esm-es5/verdocs-portal_2.entry.js +1 -1
  95. package/dist/esm-es5/verdocs-preview_8.entry.js +1 -1
  96. package/dist/esm-es5/verdocs-sign.entry.js +1 -1
  97. package/dist/esm-es5/verdocs-template-fields_4.entry.js +1 -1
  98. package/dist/esm-es5/verdocs-web-sdk.js +1 -1
  99. package/dist/types/components/fields/verdocs-field-payment/verdocs-field-payment.d.ts +0 -21
  100. package/dist/types/components/templates/verdocs-template-field-properties/verdocs-template-field-properties.d.ts +2 -2
  101. package/dist/types/components/templates/verdocs-template-fields/verdocs-template-fields.d.ts +0 -1
  102. package/dist/types/utils/TemplateFieldStore.d.ts +6 -3
  103. package/dist/types/utils/TemplateRoleStore.d.ts +5 -2
  104. package/dist/verdocs-web-sdk/{p-d318d19b.system.entry.js → p-058f0e56.system.entry.js} +1 -1
  105. package/dist/verdocs-web-sdk/{p-0aec8a25.system.entry.js → p-093f593d.system.entry.js} +1 -1
  106. package/dist/verdocs-web-sdk/{p-2458bbc0.system.entry.js → p-09babc77.system.entry.js} +1 -1
  107. package/dist/verdocs-web-sdk/p-0a5b8a89.entry.js +1 -0
  108. package/dist/verdocs-web-sdk/{p-feb78cde.system.entry.js → p-18cb9ef7.system.entry.js} +1 -1
  109. package/dist/verdocs-web-sdk/p-1b661190.entry.js +1 -0
  110. package/dist/verdocs-web-sdk/{p-710d6928.system.entry.js → p-350f1ca4.system.entry.js} +1 -1
  111. package/dist/verdocs-web-sdk/p-35720475.entry.js +1 -0
  112. package/dist/verdocs-web-sdk/{p-a9b53e29.system.entry.js → p-371effb1.system.entry.js} +1 -1
  113. package/dist/verdocs-web-sdk/p-3930ee22.js +1 -0
  114. package/dist/verdocs-web-sdk/p-3989e584.entry.js +1 -0
  115. package/dist/verdocs-web-sdk/{p-a994e40e.entry.js → p-3d9adca7.entry.js} +1 -1
  116. package/dist/verdocs-web-sdk/{p-74651412.entry.js → p-413a5b21.entry.js} +1 -1
  117. package/dist/verdocs-web-sdk/p-591b695c.entry.js +1 -0
  118. package/dist/verdocs-web-sdk/p-5cd0b997.entry.js +1 -0
  119. package/dist/verdocs-web-sdk/p-62ec3db9.system.entry.js +1 -0
  120. package/dist/verdocs-web-sdk/p-6be44a1e.js +1 -0
  121. package/dist/verdocs-web-sdk/{p-9fe214d8.entry.js → p-6d42921b.entry.js} +1 -1
  122. package/dist/verdocs-web-sdk/{p-84a111b9.entry.js → p-6d81d774.entry.js} +1 -1
  123. package/dist/verdocs-web-sdk/{p-034c364e.system.entry.js → p-6e45e610.system.entry.js} +1 -1
  124. package/dist/verdocs-web-sdk/p-71faa59f.entry.js +1 -0
  125. package/dist/verdocs-web-sdk/p-73abd3fc.system.entry.js +1 -0
  126. package/dist/verdocs-web-sdk/p-79de397b.entry.js +1 -0
  127. package/dist/verdocs-web-sdk/{p-f94e8672.system.entry.js → p-7c8419d7.system.entry.js} +1 -1
  128. package/dist/verdocs-web-sdk/{p-77e66b03.system.entry.js → p-9542e890.system.entry.js} +1 -1
  129. package/dist/verdocs-web-sdk/p-961ee618.system.entry.js +1 -0
  130. package/dist/verdocs-web-sdk/{p-7c6a9967.system.entry.js → p-a97512f6.system.entry.js} +1 -1
  131. package/dist/verdocs-web-sdk/{p-3f3e3347.system.entry.js → p-aa29c7ec.system.entry.js} +1 -1
  132. package/dist/verdocs-web-sdk/{p-e609b52c.system.entry.js → p-c11c841c.system.entry.js} +1 -1
  133. package/dist/verdocs-web-sdk/{p-6e847f1c.system.entry.js → p-c82a2a4e.system.entry.js} +1 -1
  134. package/dist/verdocs-web-sdk/{p-858f53bd.system.entry.js → p-d32278c8.system.entry.js} +1 -1
  135. package/dist/verdocs-web-sdk/p-df621f8d.system.js +1 -0
  136. package/dist/verdocs-web-sdk/p-ea4db7ae.system.js +1 -0
  137. package/dist/verdocs-web-sdk/p-ea52b891.entry.js +1 -0
  138. package/dist/verdocs-web-sdk/p-ebc1c670.entry.js +1 -0
  139. package/dist/verdocs-web-sdk/p-f04bf956.system.js +1 -1
  140. package/dist/verdocs-web-sdk/{p-7db381bc.entry.js → p-fda04bb0.entry.js} +1 -1
  141. package/dist/verdocs-web-sdk/p-ff473972.entry.js +1 -0
  142. package/dist/verdocs-web-sdk/p-ffa4091d.entry.js +1 -0
  143. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
  144. package/package.json +1 -1
  145. package/dist/esm-es5/TemplateFieldStore-295f240e.js +0 -1
  146. package/dist/esm-es5/TemplateStore-f188c963.js +0 -1
  147. package/dist/verdocs-web-sdk/p-10d43924.entry.js +0 -1
  148. package/dist/verdocs-web-sdk/p-27b657be.entry.js +0 -1
  149. package/dist/verdocs-web-sdk/p-3819eb68.entry.js +0 -1
  150. package/dist/verdocs-web-sdk/p-3c277355.entry.js +0 -1
  151. package/dist/verdocs-web-sdk/p-48ad75db.entry.js +0 -1
  152. package/dist/verdocs-web-sdk/p-50ee8b2d.entry.js +0 -1
  153. package/dist/verdocs-web-sdk/p-5e1cdb8d.system.entry.js +0 -1
  154. package/dist/verdocs-web-sdk/p-6992b715.system.js +0 -1
  155. package/dist/verdocs-web-sdk/p-8c5de079.entry.js +0 -1
  156. package/dist/verdocs-web-sdk/p-9574a874.entry.js +0 -1
  157. package/dist/verdocs-web-sdk/p-a2965966.system.entry.js +0 -1
  158. package/dist/verdocs-web-sdk/p-a2dacfe7.entry.js +0 -1
  159. package/dist/verdocs-web-sdk/p-abd4e2e2.entry.js +0 -1
  160. package/dist/verdocs-web-sdk/p-af4755e8.entry.js +0 -1
  161. package/dist/verdocs-web-sdk/p-b6ba0812.system.js +0 -1
  162. package/dist/verdocs-web-sdk/p-cc9a62c3.entry.js +0 -1
  163. package/dist/verdocs-web-sdk/p-d4219533.system.entry.js +0 -1
  164. package/dist/verdocs-web-sdk/p-f31a2fba.js +0 -1
  165. 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,8 @@ 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 { getTemplateFieldStore, updateStoreField } from '../../../utils/TemplateFieldStore';
6
+ import { getTemplateRoleStore } from '../../../utils/TemplateRoleStore';
6
7
  import { getTemplateStore } from '../../../utils/TemplateStore';
7
8
  import { SDKError } from '../../../utils/errors';
8
9
  const capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1);
@@ -15,7 +16,7 @@ export class VerdocsTemplateFieldProperties {
15
16
  constructor() {
16
17
  this.templateStore = null;
17
18
  this.fieldStore = null;
18
- this.watcher = null;
19
+ this.roleStore = null;
19
20
  this.endpoint = VerdocsEndpoint.getDefault();
20
21
  this.templateId = '';
21
22
  this.fieldName = '';
@@ -53,10 +54,10 @@ export class VerdocsTemplateFieldProperties {
53
54
  return;
54
55
  }
55
56
  this.templateStore = await getTemplateStore(this.endpoint, this.templateId);
56
- createTemplateFieldStore(this.templateStore.state);
57
- this.fieldStore = await createTemplateFieldStore(this.templateStore.state);
57
+ this.fieldStore = await getTemplateFieldStore(this.templateId);
58
+ this.roleStore = await getTemplateRoleStore(this.templateId);
58
59
  // console.log('tfs', this.fieldStore?.state);
59
- const field = this.fieldStore.get(this.fieldName);
60
+ const field = this.fieldStore.get('fields').find(field => field.name === this.fieldName);
60
61
  // console.log('gf', field);
61
62
  if (!field) {
62
63
  console.log(`[FIELD PROPERTIES] Unable to find field "${this.fieldName}" in fields`);
@@ -64,25 +65,6 @@ export class VerdocsTemplateFieldProperties {
64
65
  else {
65
66
  console.log('props', field);
66
67
  }
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
68
  this.type = field.type;
87
69
  this.name = field.name;
88
70
  this.label = field.label;
@@ -109,7 +91,7 @@ export class VerdocsTemplateFieldProperties {
109
91
  handleCancel(e) {
110
92
  var _a, _b, _c, _d;
111
93
  e.stopPropagation();
112
- const field = this.fieldStore.get(this.fieldName);
94
+ const field = this.fieldStore.get('fields').find(field => field.name === this.fieldName);
113
95
  if (field) {
114
96
  this.name = field.name;
115
97
  this.label = field.label;
@@ -149,11 +131,19 @@ export class VerdocsTemplateFieldProperties {
149
131
  }
150
132
  console.log('FP: Will update', this.fieldName, newProperties);
151
133
  updateField(this.endpoint, this.templateId, this.fieldName, newProperties)
152
- .then(field => {
134
+ .then(updated => {
153
135
  var _a, _b;
154
136
  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 });
137
+ const newFields = [
138
+ ...this.fieldStore.get('fields').map(field => {
139
+ if (field.name !== this.fieldName) {
140
+ return field;
141
+ }
142
+ return { ...field, ...updated };
143
+ }),
144
+ ];
145
+ this.fieldStore.set('fields', newFields);
146
+ (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.fieldName, settings: newProperties, field: updated });
157
147
  (_b = this.close) === null || _b === void 0 ? void 0 : _b.emit();
158
148
  })
159
149
  .catch(() => {
@@ -187,29 +177,25 @@ export class VerdocsTemplateFieldProperties {
187
177
  delete newProperties.setting.result;
188
178
  newProperties.setting.options = [...this.options];
189
179
  updateField(this.endpoint, this.templateId, this.fieldName, newProperties)
190
- .then(field => {
180
+ .then(updated => {
191
181
  var _a, _b;
192
182
  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 });
183
+ updateStoreField(this.fieldStore, this.fieldName, updated);
184
+ this.fieldName = updated.name;
185
+ (_a = this.settingsChanged) === null || _a === void 0 ? void 0 : _a.emit({ fieldName: this.fieldName, settings: newProperties, field: updated });
195
186
  (_b = this.close) === null || _b === void 0 ? void 0 : _b.emit();
196
187
  })
197
188
  .catch(() => {
198
189
  console.log('Field update failed', e);
199
190
  });
200
191
  }
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
192
  async handleDelete(e) {
207
193
  e.stopPropagation();
208
194
  if (window.confirm('Are you sure you wish to remove this field? This action cannot be undone.')) {
209
195
  deleteField(this.endpoint, this.templateId, this.fieldName)
210
196
  .then(() => {
211
197
  var _a;
212
- this.fieldStore.set(this.fieldName, undefined);
198
+ this.fieldStore.set('fields', this.fieldStore.get('fields').filter(field => field.name !== this.fieldName));
213
199
  (_a = this.delete) === null || _a === void 0 ? void 0 : _a.emit({ templateId: this.templateId, roleName: this.roleName });
214
200
  })
215
201
  .catch(e => {
@@ -224,7 +210,7 @@ export class VerdocsTemplateFieldProperties {
224
210
  return (h(Host, null, h("verdocs-component-error", { message: "You must be authenticated to use this module." })));
225
211
  }
226
212
  // 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)) {
213
+ if (!this.endpoint.session || !this.fieldStore.get('fields').some(field => field.name === this.fieldName)) {
228
214
  return h(Host, { class: "empty" });
229
215
  }
230
216
  if (this.helpText && this.showingHelp) {
@@ -241,7 +227,7 @@ export class VerdocsTemplateFieldProperties {
241
227
  placeholder: "Optional Label...", onInput: (e) => {
242
228
  this.label = e.target.value;
243
229
  this.dirty = true;
244
- } })), h("div", { class: "row" }, h("div", { class: "input-label" }, "Role:"), h("verdocs-select-input", { value: this.roleName, options: (_a = this.templateStore.state) === null || _a === void 0 ? void 0 : _a.roles.map(role => ({ label: role.name, value: role.name })), onInput: (e) => {
230
+ } })), h("div", { class: "row" }, h("div", { class: "input-label" }, "Role:"), h("verdocs-select-input", { value: this.roleName, options: (_a = this.roleStore.state) === null || _a === void 0 ? void 0 : _a.roles.map(role => ({ label: role.name, value: role.name })), onInput: (e) => {
245
231
  this.roleName = e.target.value;
246
232
  this.dirty = true;
247
233
  } })), ['textbox', 'textarea'].includes(this.type) && (h("div", { class: "row", style: { marginTop: '10px', marginBottom: '10px' } }, h("verdocs-text-input", { id: "verdocs-field-value", label: "Value", value: this.value, autocomplete: "off", placeholder: "Pre-defined value...", onInput: (e) => {
@@ -333,7 +319,7 @@ export class VerdocsTemplateFieldProperties {
333
319
  },
334
320
  "fieldName": {
335
321
  "type": "string",
336
- "mutable": false,
322
+ "mutable": true,
337
323
  "complexType": {
338
324
  "original": "string",
339
325
  "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
+ };