@formio/js 5.1.0-dev.6039.a838d78 → 5.1.0-dev.6042.18ef5d3

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 (144) hide show
  1. package/Changelog.md +140 -6
  2. package/dist/formio.form.js +587 -576
  3. package/dist/formio.form.min.js +1 -1
  4. package/dist/formio.full.js +609 -598
  5. package/dist/formio.full.min.js +1 -1
  6. package/dist/formio.js +45 -12
  7. package/dist/formio.min.js +1 -1
  8. package/dist/formio.utils.js +46 -13
  9. package/dist/formio.utils.min.js +1 -1
  10. package/lib/cjs/Element.d.ts +2 -1
  11. package/lib/cjs/Element.js +6 -4
  12. package/lib/cjs/Webform.d.ts +2 -2
  13. package/lib/cjs/Webform.js +6 -8
  14. package/lib/cjs/WebformBuilder.js +4 -0
  15. package/lib/cjs/Wizard.d.ts +1 -0
  16. package/lib/cjs/Wizard.js +23 -3
  17. package/lib/cjs/components/_classes/component/Component.d.ts +27 -17
  18. package/lib/cjs/components/_classes/component/Component.js +124 -70
  19. package/lib/cjs/components/_classes/component/editForm/Component.edit.data.js +19 -0
  20. package/lib/cjs/components/_classes/component/editForm/utils.js +1 -1
  21. package/lib/cjs/components/_classes/list/ListComponent.js +2 -2
  22. package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +0 -1
  23. package/lib/cjs/components/_classes/nested/NestedComponent.form.js +13 -0
  24. package/lib/cjs/components/_classes/nested/NestedComponent.js +10 -18
  25. package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.d.ts +0 -2
  26. package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.js +0 -11
  27. package/lib/cjs/components/address/Address.d.ts +9 -0
  28. package/lib/cjs/components/address/Address.js +31 -8
  29. package/lib/cjs/components/address/editForm/Address.edit.display.d.ts +4 -0
  30. package/lib/cjs/components/address/editForm/Address.edit.display.js +1 -0
  31. package/lib/cjs/components/address/editForm/Address.edit.provider.js +8 -8
  32. package/lib/cjs/components/content/editForm/Content.edit.display.js +8 -0
  33. package/lib/cjs/components/currency/editForm/Currency.edit.display.js +12 -0
  34. package/lib/cjs/components/datagrid/DataGrid.js +0 -3
  35. package/lib/cjs/components/datamap/DataMap.js +2 -6
  36. package/lib/cjs/components/datetime/editForm/DateTime.edit.validation.d.ts +66 -15
  37. package/lib/cjs/components/datetime/editForm/DateTime.edit.validation.js +68 -47
  38. package/lib/cjs/components/day/editForm/Day.edit.display.js +8 -0
  39. package/lib/cjs/components/editgrid/EditGrid.js +3 -13
  40. package/lib/cjs/components/email/editForm/Email.edit.display.js +12 -0
  41. package/lib/cjs/components/fieldset/editForm/Fieldset.edit.display.js +8 -0
  42. package/lib/cjs/components/file/File.js +7 -2
  43. package/lib/cjs/components/file/editForm/File.edit.file.d.ts +13 -0
  44. package/lib/cjs/components/file/editForm/File.edit.file.js +1 -0
  45. package/lib/cjs/components/form/Form.js +11 -11
  46. package/lib/cjs/components/hidden/editForm/Hidden.edit.display.js +8 -0
  47. package/lib/cjs/components/html/HTML.js +1 -2
  48. package/lib/cjs/components/html/editForm/HTML.edit.display.js +8 -0
  49. package/lib/cjs/components/number/editForm/Number.edit.display.js +12 -0
  50. package/lib/cjs/components/password/editForm/Password.edit.display.js +13 -1
  51. package/lib/cjs/components/phonenumber/PhoneNumber.form.js +9 -1
  52. package/lib/cjs/components/radio/Radio.js +1 -1
  53. package/lib/cjs/components/select/Select.js +1 -1
  54. package/lib/cjs/components/select/editForm/Select.edit.data.d.ts +68 -110
  55. package/lib/cjs/components/select/editForm/Select.edit.data.js +2 -37
  56. package/lib/cjs/components/selectboxes/SelectBoxes.js +3 -0
  57. package/lib/cjs/components/survey/Survey.js +1 -1
  58. package/lib/cjs/components/tabs/Tabs.js +1 -0
  59. package/lib/cjs/components/tabs/editForm/Tabs.edit.display.js +8 -0
  60. package/lib/cjs/components/textarea/TextArea.js +9 -1
  61. package/lib/cjs/components/textarea/editForm/TextArea.edit.display.js +12 -0
  62. package/lib/cjs/components/unknown/Unknown.form.d.ts +2 -1
  63. package/lib/cjs/components/unknown/Unknown.form.js +13 -9
  64. package/lib/cjs/components/url/editForm/Url.edit.display.js +12 -0
  65. package/lib/cjs/components/well/editForm/Well.edit.display.js +8 -0
  66. package/lib/cjs/formio.form.js +2 -2
  67. package/lib/cjs/providers/storage/uploadAdapter.js +5 -3
  68. package/lib/cjs/translations/en.d.ts +1 -234
  69. package/lib/cjs/translations/en.js +4 -2
  70. package/lib/cjs/utils/formUtils.d.ts +2 -2
  71. package/lib/cjs/utils/utils.d.ts +0 -8
  72. package/lib/cjs/utils/utils.js +3 -23
  73. package/lib/mjs/Element.d.ts +2 -1
  74. package/lib/mjs/Element.js +6 -4
  75. package/lib/mjs/Webform.d.ts +2 -2
  76. package/lib/mjs/Webform.js +6 -8
  77. package/lib/mjs/WebformBuilder.js +4 -0
  78. package/lib/mjs/Wizard.d.ts +1 -0
  79. package/lib/mjs/Wizard.js +22 -2
  80. package/lib/mjs/components/_classes/component/Component.d.ts +27 -17
  81. package/lib/mjs/components/_classes/component/Component.js +125 -71
  82. package/lib/mjs/components/_classes/component/editForm/Component.edit.data.js +19 -0
  83. package/lib/mjs/components/_classes/component/editForm/utils.js +1 -1
  84. package/lib/mjs/components/_classes/list/ListComponent.js +2 -2
  85. package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +0 -1
  86. package/lib/mjs/components/_classes/nested/NestedComponent.form.js +13 -0
  87. package/lib/mjs/components/_classes/nested/NestedComponent.js +10 -18
  88. package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.d.ts +0 -2
  89. package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.js +0 -11
  90. package/lib/mjs/components/address/Address.d.ts +9 -0
  91. package/lib/mjs/components/address/Address.js +31 -8
  92. package/lib/mjs/components/address/editForm/Address.edit.display.d.ts +4 -0
  93. package/lib/mjs/components/address/editForm/Address.edit.display.js +1 -0
  94. package/lib/mjs/components/address/editForm/Address.edit.provider.js +8 -8
  95. package/lib/mjs/components/content/editForm/Content.edit.display.js +8 -0
  96. package/lib/mjs/components/currency/editForm/Currency.edit.display.js +12 -0
  97. package/lib/mjs/components/datagrid/DataGrid.js +0 -3
  98. package/lib/mjs/components/datamap/DataMap.js +2 -6
  99. package/lib/mjs/components/datetime/editForm/DateTime.edit.validation.d.ts +66 -15
  100. package/lib/mjs/components/datetime/editForm/DateTime.edit.validation.js +68 -47
  101. package/lib/mjs/components/day/editForm/Day.edit.display.js +8 -0
  102. package/lib/mjs/components/editgrid/EditGrid.js +3 -12
  103. package/lib/mjs/components/email/editForm/Email.edit.display.js +12 -0
  104. package/lib/mjs/components/fieldset/editForm/Fieldset.edit.display.js +8 -0
  105. package/lib/mjs/components/file/File.js +7 -2
  106. package/lib/mjs/components/file/editForm/File.edit.file.d.ts +13 -0
  107. package/lib/mjs/components/file/editForm/File.edit.file.js +1 -0
  108. package/lib/mjs/components/form/Form.js +11 -11
  109. package/lib/mjs/components/hidden/editForm/Hidden.edit.display.js +8 -0
  110. package/lib/mjs/components/html/HTML.js +1 -2
  111. package/lib/mjs/components/html/editForm/HTML.edit.display.js +8 -0
  112. package/lib/mjs/components/number/editForm/Number.edit.display.js +12 -0
  113. package/lib/mjs/components/password/editForm/Password.edit.display.js +13 -1
  114. package/lib/mjs/components/phonenumber/PhoneNumber.form.js +9 -1
  115. package/lib/mjs/components/radio/Radio.js +1 -1
  116. package/lib/mjs/components/select/Select.js +1 -1
  117. package/lib/mjs/components/select/editForm/Select.edit.data.d.ts +68 -110
  118. package/lib/mjs/components/select/editForm/Select.edit.data.js +2 -37
  119. package/lib/mjs/components/selectboxes/SelectBoxes.js +3 -0
  120. package/lib/mjs/components/survey/Survey.js +1 -1
  121. package/lib/mjs/components/tabs/Tabs.js +1 -0
  122. package/lib/mjs/components/tabs/editForm/Tabs.edit.display.js +8 -0
  123. package/lib/mjs/components/textarea/TextArea.js +9 -1
  124. package/lib/mjs/components/textarea/editForm/TextArea.edit.display.js +12 -0
  125. package/lib/mjs/components/unknown/Unknown.form.d.ts +2 -1
  126. package/lib/mjs/components/unknown/Unknown.form.js +13 -9
  127. package/lib/mjs/components/url/editForm/Url.edit.display.js +12 -0
  128. package/lib/mjs/components/well/editForm/Well.edit.display.js +8 -0
  129. package/lib/mjs/formio.form.js +1 -1
  130. package/lib/mjs/providers/storage/uploadAdapter.js +5 -3
  131. package/lib/mjs/translations/en.d.ts +1 -234
  132. package/lib/mjs/translations/en.js +3 -47
  133. package/lib/mjs/utils/formUtils.d.ts +2 -2
  134. package/lib/mjs/utils/utils.d.ts +0 -8
  135. package/lib/mjs/utils/utils.js +2 -21
  136. package/package.json +2 -2
  137. package/lib/cjs/i18n.d.ts +0 -13
  138. package/lib/cjs/i18n.js +0 -19
  139. package/lib/cjs/utils/i18n.d.ts +0 -19
  140. package/lib/cjs/utils/i18n.js +0 -120
  141. package/lib/mjs/i18n.d.ts +0 -13
  142. package/lib/mjs/i18n.js +0 -14
  143. package/lib/mjs/utils/i18n.d.ts +0 -19
  144. package/lib/mjs/utils/i18n.js +0 -112
@@ -11,35 +11,44 @@ exports.default = [
11
11
  tooltip: 'Enables to use input for moment functions instead of calendar.'
12
12
  },
13
13
  {
14
- type: 'datetime',
15
- input: true,
14
+ label: 'Minimum Date',
15
+ tooltip: "The minimum date that can be picked. You can also use Moment.js functions. For example: moment().subtract(10, 'days')",
16
+ applyMaskOn: 'change',
16
17
  key: 'datePicker.minDate',
17
- label: 'Use calendar to set minDate',
18
- skipMerge: true,
19
- weight: 10,
20
- tooltip: 'Enables to use calendar to set date.',
21
- customConditional({ data, component }) {
22
- if (component.datePicker && component.datePicker.minDate && component.datePicker.minDate.indexOf('moment') !== -1) {
23
- return false;
24
- }
25
- return !data.enableMinDateInput;
26
- },
27
- },
28
- {
18
+ logic: [
19
+ {
20
+ name: 'check input mode',
21
+ trigger: {
22
+ type: 'javascript',
23
+ javascript: "if (component.datePicker && component.datePicker.minDate && component.datePicker.minDate.indexOf('moment') !== -1) {\r\n result = false;\r\n}\r\nelse {\r\n result = !data.enableMinDateInput;\r\n}",
24
+ },
25
+ actions: [
26
+ {
27
+ name: 'change component',
28
+ type: 'mergeComponentSchema',
29
+ schemaDefinition: "schema = {\n type: 'datetime',\n label: 'Use calendar to set minDate',\n enableDate: true,\n enableTime: true,\n tooltip: 'Enables to use calendar to set date.',\n widget: {\n type: 'calendar',\n displayInTimezone: 'viewer',\n locale: 'en',\n useLocaleSettings: false,\n allowInput: true,\n mode: 'single',\n enableTime: true,\n noCalendar: false,\n format: 'yyyy-MM-dd hh:mm a',\n hourIncrement: 1,\n minuteIncrement: 1,\n time_24hr: false,\n disableWeekends: false,\n disableWeekdays: false,\n maxDate: null,\n },\n};",
30
+ },
31
+ ],
32
+ },
33
+ {
34
+ name: 'clear value',
35
+ trigger: {
36
+ type: 'event',
37
+ event: 'componentChange',
38
+ },
39
+ actions: [
40
+ {
41
+ name: 'reset value',
42
+ type: 'customAction',
43
+ customAction: "var isDateInput = instance.component?.type === 'datetime';\nvar enableInput = data.enableMinDateInput;\nvar allowReset = result[0].component && result[0].component.key === 'enableMinDateInput' && !result[0].flags?.fromSubmission;\nif(((enableInput && isDateInput) || (!enableInput && !isDateInput)) && allowReset) {\n instance.resetValue()\n}\n",
44
+ },
45
+ ],
46
+ },
47
+ ],
29
48
  type: 'textfield',
30
49
  input: true,
31
- enableTime: false,
32
- key: 'datePicker.minDate',
33
50
  skipMerge: true,
34
- label: 'Minimum Date',
35
51
  weight: 10,
36
- tooltip: 'The minimum date that can be picked. You can also use Moment.js functions. For example: \n \n moment().subtract(10, \'days\')',
37
- customConditional({ data, component }) {
38
- if (component.datePicker && component.datePicker.minDate && component.datePicker.minDate.indexOf('moment') !== -1) {
39
- return true;
40
- }
41
- return data.enableMinDateInput;
42
- },
43
52
  },
44
53
  {
45
54
  type: 'checkbox',
@@ -51,34 +60,46 @@ exports.default = [
51
60
  tooltip: 'Enables to use input for moment functions instead of calendar.'
52
61
  },
53
62
  {
54
- type: 'datetime',
55
- input: true,
63
+ label: 'Maximum Date',
64
+ tooltip: "The maximum date that can be picked. You can also use Moment.js functions. For example: moment().add(10, 'days')",
65
+ applyMaskOn: 'change',
66
+ tableView: true,
67
+ validateWhenHidden: false,
56
68
  key: 'datePicker.maxDate',
57
- skipMerge: true,
58
- label: 'Use calendar to set maxDate',
59
- weight: 20,
60
- tooltip: 'Enables to use calendar to set date.',
61
- customConditional({ data, component }) {
62
- if (component.datePicker && component.datePicker.maxDate && component.datePicker.maxDate.indexOf('moment') !== -1) {
63
- return false;
64
- }
65
- return !data.enableMaxDateInput;
66
- },
67
- },
68
- {
69
+ logic: [
70
+ {
71
+ name: 'check input mode',
72
+ trigger: {
73
+ type: 'javascript',
74
+ javascript: "if (component.datePicker && component.datePicker.maxDate && component.datePicker.maxDate.indexOf('moment') !== -1) {\r\n result = false;\r\n}\r\nelse {\r\n result = !data.enableMaxDateInput;\r\n}",
75
+ },
76
+ actions: [
77
+ {
78
+ name: 'change component',
79
+ type: 'mergeComponentSchema',
80
+ schemaDefinition: "schema = {\n type: 'datetime',\n label: 'Use calendar to set maxDate',\n enableDate: true,\n enableTime: true,\n tooltip: 'Enables to use calendar to set date.',\n widget: {\n type: 'calendar',\n displayInTimezone: 'viewer',\n locale: 'en',\n useLocaleSettings: false,\n allowInput: true,\n mode: 'single',\n enableTime: true,\n noCalendar: false,\n format: 'yyyy-MM-dd hh:mm a',\n hourIncrement: 1,\n minuteIncrement: 1,\n time_24hr: false,\n disableWeekends: false,\n disableWeekdays: false,\n maxDate: null,\n },\n};",
81
+ },
82
+ ],
83
+ },
84
+ {
85
+ name: 'clear value',
86
+ trigger: {
87
+ type: 'event',
88
+ event: 'componentChange',
89
+ },
90
+ actions: [
91
+ {
92
+ name: 'reset value',
93
+ type: 'customAction',
94
+ customAction: "var isDateInput = instance.component?.type === 'datetime';\nvar enableInput = data.enableMaxDateInput;\nvar allowReset = result[0].component && result[0].component.key === 'enableMaxDateInput' && !result[0].flags?.fromSubmission;\nif(((enableInput && isDateInput) || (!enableInput && !isDateInput)) && allowReset) {\n instance.resetValue()\n}\n",
95
+ },
96
+ ],
97
+ },
98
+ ],
69
99
  type: 'textfield',
70
100
  input: true,
71
101
  enableTime: false,
72
- key: 'datePicker.maxDate',
73
102
  skipMerge: true,
74
- label: 'Maximum Date',
75
- tooltip: 'The maximum date that can be picked. You can also use Moment.js functions. For example: \n \n moment().add(10, \'days\')',
76
103
  weight: 20,
77
- customConditional({ data, component }) {
78
- if (component.datePicker && component.datePicker.maxDate && component.datePicker.maxDate.indexOf('moment') !== -1) {
79
- return true;
80
- }
81
- return data.enableMaxDateInput;
82
- },
83
104
  }
84
105
  ];
@@ -5,6 +5,14 @@ exports.default = [
5
5
  key: 'labelPosition',
6
6
  ignore: true
7
7
  },
8
+ {
9
+ key: 'labelWidth',
10
+ ignore: true
11
+ },
12
+ {
13
+ key: 'labelMargin',
14
+ ignore: true
15
+ },
8
16
  {
9
17
  weight: 15,
10
18
  type: 'checkbox',
@@ -553,14 +553,6 @@ class EditGridComponent extends NestedArrayComponent_1.default {
553
553
  }
554
554
  });
555
555
  }
556
- restoreComponentsContext() {
557
- this.getComponents().forEach((component) => {
558
- var _a;
559
- const rowData = this.dataValue[component.rowIndex];
560
- const editRowData = (_a = this.editRows[component.rowIndex]) === null || _a === void 0 ? void 0 : _a.data;
561
- component.data = rowData || editRowData;
562
- });
563
- }
564
556
  flattenComponents(rowIndex) {
565
557
  const result = {};
566
558
  this.everyComponent((component) => {
@@ -1115,7 +1107,9 @@ class EditGridComponent extends NestedArrayComponent_1.default {
1115
1107
  errors.push(...this._errors);
1116
1108
  return false;
1117
1109
  }
1118
- const message = this.invalid || this.invalidMessage(data, dirty, false, row);
1110
+ // TODO: this is the only place invalidMessage gets called, and it's not clear why it's needed - we already validate the editGrid
1111
+ // component above with super.checkComponentValidity
1112
+ const message = this.invalid || this.invalidMessage(data, dirty, false, row, options);
1119
1113
  if (allRowErrors.length && ((_b = this.root) === null || _b === void 0 ? void 0 : _b.submitted) && !message) {
1120
1114
  this._errors = this.setCustomValidity(message, dirty);
1121
1115
  errors.push(...this._errors);
@@ -1159,9 +1153,6 @@ class EditGridComponent extends NestedArrayComponent_1.default {
1159
1153
  }
1160
1154
  }
1161
1155
  const changed = this.hasChanged(value, this.dataValue);
1162
- if (this.parent) {
1163
- this.parent.checkComponentConditions();
1164
- }
1165
1156
  this.dataValue = value;
1166
1157
  // Refresh editRow data when data changes.
1167
1158
  this.dataValue.forEach((row, rowIndex) => {
@@ -1192,7 +1183,6 @@ class EditGridComponent extends NestedArrayComponent_1.default {
1192
1183
  this.editRows = this.editRows.slice(0, dataLength);
1193
1184
  this.openWhenEmpty();
1194
1185
  this.updateOnChange(flags, changed);
1195
- this.checkData();
1196
1186
  this.changeState(changed, flags);
1197
1187
  return changed;
1198
1188
  }
@@ -9,6 +9,18 @@ exports.default = [
9
9
  key: 'allowMultipleMasks',
10
10
  ignore: true,
11
11
  },
12
+ {
13
+ key: 'inputMasks',
14
+ ignore: true
15
+ },
16
+ {
17
+ key: 'widget.type',
18
+ ignore: true
19
+ },
20
+ {
21
+ key: 'widget',
22
+ ignore: true
23
+ },
12
24
  {
13
25
  key: 'showWordCount',
14
26
  ignore: true
@@ -5,6 +5,14 @@ exports.default = [
5
5
  key: 'labelPosition',
6
6
  ignore: true
7
7
  },
8
+ {
9
+ key: 'labelWidth',
10
+ ignore: true
11
+ },
12
+ {
13
+ key: 'labelMargin',
14
+ ignore: true
15
+ },
8
16
  {
9
17
  key: 'placeholder',
10
18
  ignore: true
@@ -905,14 +905,17 @@ class FileComponent extends Field_1.default {
905
905
  }
906
906
  uploadFile(fileToSync) {
907
907
  return __awaiter(this, void 0, void 0, function* () {
908
- return yield this.fileService.uploadFile(fileToSync.storage, fileToSync.file, fileToSync.name, fileToSync.dir,
908
+ const filePromise = this.fileService.uploadFile(fileToSync.storage, fileToSync.file, fileToSync.name, fileToSync.dir,
909
909
  // Progress callback
910
- this.updateProgress.bind(this, fileToSync), fileToSync.url, fileToSync.options, fileToSync.fileKey, fileToSync.groupPermissions, fileToSync.groupResourceId, () => { },
910
+ this.updateProgress.bind(this, fileToSync), fileToSync.url, fileToSync.options, fileToSync.fileKey, fileToSync.groupPermissions, fileToSync.groupResourceId, () => {
911
+ this.emit('fileUploadingStart', filePromise);
912
+ },
911
913
  // Abort upload callback
912
914
  (abort) => this.abortUploads.push({
913
915
  id: fileToSync.id,
914
916
  abort,
915
917
  }), this.getMultipartOptions(fileToSync));
918
+ return yield filePromise;
916
919
  });
917
920
  }
918
921
  upload() {
@@ -934,6 +937,7 @@ class FileComponent extends Field_1.default {
934
937
  fileToSync.message = this.t('succefullyUploaded');
935
938
  fileInfo.originalName = fileToSync.originalName;
936
939
  fileInfo.hash = fileToSync.hash;
940
+ this.emit('fileUploadingEnd', Promise.resolve(fileInfo));
937
941
  }
938
942
  catch (response) {
939
943
  fileToSync.status = 'error';
@@ -943,6 +947,7 @@ class FileComponent extends Field_1.default {
943
947
  : response.type === 'abort'
944
948
  ? this.t('Request was aborted')
945
949
  : response.toString();
950
+ this.emit('fileUploadingEnd', Promise.reject(response));
946
951
  this.emit('fileUploadError', {
947
952
  fileToSync,
948
953
  response,
@@ -16,6 +16,7 @@ declare const _default: ({
16
16
  components?: undefined;
17
17
  rows?: undefined;
18
18
  editor?: undefined;
19
+ as?: undefined;
19
20
  optionsLabelPosition?: undefined;
20
21
  inline?: undefined;
21
22
  defaultValue?: undefined;
@@ -45,6 +46,7 @@ declare const _default: ({
45
46
  components?: undefined;
46
47
  rows?: undefined;
47
48
  editor?: undefined;
49
+ as?: undefined;
48
50
  optionsLabelPosition?: undefined;
49
51
  inline?: undefined;
50
52
  defaultValue?: undefined;
@@ -91,6 +93,7 @@ declare const _default: ({
91
93
  data?: undefined;
92
94
  rows?: undefined;
93
95
  editor?: undefined;
96
+ as?: undefined;
94
97
  optionsLabelPosition?: undefined;
95
98
  inline?: undefined;
96
99
  defaultValue?: undefined;
@@ -120,6 +123,7 @@ declare const _default: ({
120
123
  components?: undefined;
121
124
  rows?: undefined;
122
125
  editor?: undefined;
126
+ as?: undefined;
123
127
  optionsLabelPosition?: undefined;
124
128
  inline?: undefined;
125
129
  defaultValue?: undefined;
@@ -149,6 +153,7 @@ declare const _default: ({
149
153
  components?: undefined;
150
154
  rows?: undefined;
151
155
  editor?: undefined;
156
+ as?: undefined;
152
157
  optionsLabelPosition?: undefined;
153
158
  inline?: undefined;
154
159
  defaultValue?: undefined;
@@ -160,6 +165,7 @@ declare const _default: ({
160
165
  tooltip: string;
161
166
  rows: number;
162
167
  editor: string;
168
+ as: string;
163
169
  input: boolean;
164
170
  weight: number;
165
171
  placeholder: string;
@@ -207,6 +213,7 @@ declare const _default: ({
207
213
  components?: undefined;
208
214
  rows?: undefined;
209
215
  editor?: undefined;
216
+ as?: undefined;
210
217
  optionsLabelPosition?: undefined;
211
218
  inline?: undefined;
212
219
  defaultValue?: undefined;
@@ -227,6 +234,7 @@ declare const _default: ({
227
234
  components?: undefined;
228
235
  rows?: undefined;
229
236
  editor?: undefined;
237
+ as?: undefined;
230
238
  optionsLabelPosition?: undefined;
231
239
  inline?: undefined;
232
240
  defaultValue?: undefined;
@@ -247,6 +255,7 @@ declare const _default: ({
247
255
  components?: undefined;
248
256
  rows?: undefined;
249
257
  editor?: undefined;
258
+ as?: undefined;
250
259
  optionsLabelPosition?: undefined;
251
260
  inline?: undefined;
252
261
  defaultValue?: undefined;
@@ -276,6 +285,7 @@ declare const _default: ({
276
285
  components?: undefined;
277
286
  rows?: undefined;
278
287
  editor?: undefined;
288
+ as?: undefined;
279
289
  optionsLabelPosition?: undefined;
280
290
  inline?: undefined;
281
291
  defaultValue?: undefined;
@@ -305,6 +315,7 @@ declare const _default: ({
305
315
  components?: undefined;
306
316
  rows?: undefined;
307
317
  editor?: undefined;
318
+ as?: undefined;
308
319
  optionsLabelPosition?: undefined;
309
320
  inline?: undefined;
310
321
  defaultValue?: undefined;
@@ -332,6 +343,7 @@ declare const _default: ({
332
343
  components?: undefined;
333
344
  rows?: undefined;
334
345
  editor?: undefined;
346
+ as?: undefined;
335
347
  } | {
336
348
  type: string;
337
349
  input: boolean;
@@ -353,6 +365,7 @@ declare const _default: ({
353
365
  tableView?: undefined;
354
366
  rows?: undefined;
355
367
  editor?: undefined;
368
+ as?: undefined;
356
369
  optionsLabelPosition?: undefined;
357
370
  inline?: undefined;
358
371
  defaultValue?: undefined;
@@ -120,6 +120,7 @@ exports.default = [
120
120
  tooltip: 'Pass your custom xhr options(optional)',
121
121
  rows: 5,
122
122
  editor: 'ace',
123
+ as: 'json',
123
124
  input: true,
124
125
  weight: 15,
125
126
  placeholder: `{
@@ -115,6 +115,10 @@ class FormComponent extends Component_1.default {
115
115
  get emptyValue() {
116
116
  return { data: {} };
117
117
  }
118
+ // In order for the subform values to set properly, we must always say that nested forms have a default value.
119
+ get hasDefaultValue() {
120
+ return true;
121
+ }
118
122
  get ready() {
119
123
  return this.subFormReady || Promise.resolve();
120
124
  }
@@ -448,7 +452,7 @@ class FormComponent extends Component_1.default {
448
452
  loadSubForm(fromAttach, beforeSubmit) {
449
453
  var _a, _b, _c, _d, _e;
450
454
  const loadHiddenForm = beforeSubmit && !this.component.clearOnHide;
451
- if (this.builderMode || (this.conditionallyHidden && !loadHiddenForm) || (this.isSubFormLazyLoad() && !fromAttach)) {
455
+ if (this.builderMode || (this.conditionallyHidden() && !loadHiddenForm) || (this.isSubFormLazyLoad() && !fromAttach)) {
452
456
  return Promise.resolve();
453
457
  }
454
458
  if (this.hasLoadedForm && !this.isRevisionChanged &&
@@ -520,7 +524,7 @@ class FormComponent extends Component_1.default {
520
524
  * @returns {*|boolean} - TRUE if the subform should be submitted, FALSE if it should not.
521
525
  */
522
526
  get shouldSubmit() {
523
- return this.subFormReady && (!this.component.hasOwnProperty('reference') || this.component.reference) && (!this.conditionallyHidden || !this.component.clearOnHide);
527
+ return this.subFormReady && (!this.component.hasOwnProperty('reference') || this.component.reference) && !this.shouldConditionallyClear();
524
528
  }
525
529
  /**
526
530
  * Returns the data for the subform.
@@ -592,20 +596,16 @@ class FormComponent extends Component_1.default {
592
596
  return Promise.resolve(this.dataValue);
593
597
  }
594
598
  // we need to load a hidden form (when clearOnHide is disabled) in order to get and submit (if needed) its data
595
- const loadHiddenForm = !this.subForm && !this.component.clearOnHide;
596
- if ((this.isSubFormLazyLoad() || loadHiddenForm) && !this.subFormLoading) {
599
+ const loadHiddenForm = !this.component.clearOnHide;
600
+ if ((this.isSubFormLazyLoad() || loadHiddenForm) && !this.subFormLoading && !this.subForm) {
597
601
  return this.createSubForm(true, true)
598
- .then(this.submitSubForm(false))
599
- .then(() => {
600
- return this.dataValue;
601
- })
602
+ .then(() => this.submitSubForm(false))
603
+ .then(() => this.dataValue)
602
604
  .then(() => super.beforeSubmit());
603
605
  }
604
606
  else {
605
607
  return this.submitSubForm(false)
606
- .then(() => {
607
- return this.dataValue;
608
- })
608
+ .then(() => this.dataValue)
609
609
  .then(() => super.beforeSubmit());
610
610
  }
611
611
  }
@@ -5,6 +5,14 @@ exports.default = [
5
5
  key: 'labelPosition',
6
6
  ignore: true
7
7
  },
8
+ {
9
+ key: 'labelWidth',
10
+ ignore: true
11
+ },
12
+ {
13
+ key: 'labelMargin',
14
+ ignore: true
15
+ },
8
16
  {
9
17
  key: 'placeholder',
10
18
  ignore: true
@@ -58,8 +58,7 @@ class HTMLComponent extends Component_1.default {
58
58
  super.checkRefreshOn(changed);
59
59
  let visible;
60
60
  if (this.hasCondition()) {
61
- this._conditionallyHidden = this.checkConditionallyHidden();
62
- visible = !this.conditionallyHidden;
61
+ visible = !this.conditionallyHidden();
63
62
  }
64
63
  else {
65
64
  visible = !this.component.hidden;
@@ -5,6 +5,14 @@ exports.default = [
5
5
  key: 'labelPosition',
6
6
  ignore: true
7
7
  },
8
+ {
9
+ key: 'labelWidth',
10
+ ignore: true
11
+ },
12
+ {
13
+ key: 'labelMargin',
14
+ ignore: true
15
+ },
8
16
  {
9
17
  key: 'placeholder',
10
18
  ignore: true
@@ -13,6 +13,18 @@ exports.default = [
13
13
  key: 'allowMultipleMasks',
14
14
  ignore: true
15
15
  },
16
+ {
17
+ key: 'inputMasks',
18
+ ignore: true
19
+ },
20
+ {
21
+ key: 'widget.type',
22
+ ignore: true
23
+ },
24
+ {
25
+ key: 'widget',
26
+ ignore: true
27
+ },
16
28
  {
17
29
  key: 'showWordCount',
18
30
  ignore: true,
@@ -12,5 +12,17 @@ exports.default = [
12
12
  {
13
13
  key: 'allowMultipleMasks',
14
14
  ignore: true
15
- }
15
+ },
16
+ {
17
+ key: 'inputMasks',
18
+ ignore: true
19
+ },
20
+ {
21
+ key: 'widget.type',
22
+ ignore: true
23
+ },
24
+ {
25
+ key: 'widget',
26
+ ignore: true
27
+ },
16
28
  ];
@@ -22,7 +22,15 @@ function default_1(...extend) {
22
22
  {
23
23
  key: 'showCharCount',
24
24
  ignore: true
25
- }
25
+ },
26
+ {
27
+ key: 'widget.type',
28
+ ignore: true
29
+ },
30
+ {
31
+ key: 'widget',
32
+ ignore: true
33
+ },
26
34
  ]
27
35
  },
28
36
  {
@@ -365,7 +365,7 @@ class RadioComponent extends ListComponent_1.default {
365
365
  const value = this.dataValue;
366
366
  this.refs.wrapper.forEach((wrapper, index) => {
367
367
  const input = this.refs.input[index];
368
- const checked = (input.type === 'checkbox') ? value[input.value] || input.checked : (input.value.toString() === value.toString());
368
+ const checked = (value === undefined || value === null) ? false : (input.type === 'checkbox') ? value[input.value] || input.checked : (input.value.toString() === value.toString());
369
369
  if (checked) {
370
370
  //add class to container when selected
371
371
  this.addClass(wrapper, this.optionSelectedClass);
@@ -1459,7 +1459,7 @@ class SelectComponent extends ListComponent_1.default {
1459
1459
  asString(value, options = {}) {
1460
1460
  var _a;
1461
1461
  value = value !== null && value !== void 0 ? value : this.getValue();
1462
- if (options.modalPreview || this.inDataTable) {
1462
+ if (options.modalPreview || this.inDataTable || options.email) {
1463
1463
  if (this.inDataTable) {
1464
1464
  value = this.undoValueTyping(value);
1465
1465
  }