@formio/js 5.1.0-dev.6040.debc859 → 5.1.0-dev.6042.603237d

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 (236) hide show
  1. package/Changelog.md +99 -310
  2. package/README.md +7 -0
  3. package/dist/formio.builder.css +1 -0
  4. package/dist/formio.builder.min.css +1 -1
  5. package/dist/formio.form.css +1 -0
  6. package/dist/formio.form.js +661 -672
  7. package/dist/formio.form.min.css +1 -1
  8. package/dist/formio.form.min.js +1 -1
  9. package/dist/formio.form.min.js.LICENSE.txt +3 -1
  10. package/dist/formio.full.css +1 -0
  11. package/dist/formio.full.js +688 -699
  12. package/dist/formio.full.min.css +1 -1
  13. package/dist/formio.full.min.js +1 -1
  14. package/dist/formio.full.min.js.LICENSE.txt +3 -1
  15. package/dist/formio.js +90 -68
  16. package/dist/formio.min.js +1 -1
  17. package/dist/formio.utils.js +103 -81
  18. package/dist/formio.utils.min.js +1 -1
  19. package/dist/formio.utils.min.js.LICENSE.txt +3 -1
  20. package/lib/cjs/Element.d.ts +2 -1
  21. package/lib/cjs/Element.js +18 -39
  22. package/lib/cjs/EventEmitter.js +2 -25
  23. package/lib/cjs/Form.js +2 -25
  24. package/lib/cjs/PDF.js +1 -1
  25. package/lib/cjs/PDFBuilder.js +4 -5
  26. package/lib/cjs/Webform.d.ts +2 -2
  27. package/lib/cjs/Webform.js +14 -15
  28. package/lib/cjs/WebformBuilder.d.ts +1 -0
  29. package/lib/cjs/WebformBuilder.js +44 -14
  30. package/lib/cjs/Wizard.d.ts +2 -2
  31. package/lib/cjs/Wizard.js +41 -27
  32. package/lib/cjs/WizardBuilder.js +1 -1
  33. package/lib/cjs/components/_classes/component/Component.d.ts +49 -15
  34. package/lib/cjs/components/_classes/component/Component.js +188 -125
  35. package/lib/cjs/components/_classes/component/editForm/Component.edit.conditional.js +1 -1
  36. package/lib/cjs/components/_classes/component/editForm/Component.edit.data.js +19 -0
  37. package/lib/cjs/components/_classes/component/editForm/Component.edit.logic.js +1 -1
  38. package/lib/cjs/components/_classes/component/editForm/utils.js +1 -1
  39. package/lib/cjs/components/_classes/componentModal/ComponentModal.js +1 -1
  40. package/lib/cjs/components/_classes/input/Input.js +1 -1
  41. package/lib/cjs/components/_classes/list/ListComponent.js +3 -3
  42. package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +0 -1
  43. package/lib/cjs/components/_classes/nested/NestedComponent.form.js +13 -0
  44. package/lib/cjs/components/_classes/nested/NestedComponent.js +17 -25
  45. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +1 -1
  46. package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.d.ts +0 -2
  47. package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.js +1 -12
  48. package/lib/cjs/components/address/Address.d.ts +9 -0
  49. package/lib/cjs/components/address/Address.js +32 -9
  50. package/lib/cjs/components/address/editForm/Address.edit.display.d.ts +4 -0
  51. package/lib/cjs/components/address/editForm/Address.edit.display.js +1 -0
  52. package/lib/cjs/components/address/editForm/Address.edit.provider.js +8 -8
  53. package/lib/cjs/components/alert/Alert.js +1 -1
  54. package/lib/cjs/components/button/Button.d.ts +1 -1
  55. package/lib/cjs/components/button/Button.js +7 -11
  56. package/lib/cjs/components/checkbox/Checkbox.js +1 -1
  57. package/lib/cjs/components/container/Container.js +1 -1
  58. package/lib/cjs/components/content/editForm/Content.edit.display.js +8 -0
  59. package/lib/cjs/components/currency/Currency.js +1 -1
  60. package/lib/cjs/components/currency/editForm/Currency.edit.display.js +12 -0
  61. package/lib/cjs/components/datagrid/DataGrid.js +5 -4
  62. package/lib/cjs/components/datamap/DataMap.js +2 -6
  63. package/lib/cjs/components/datetime/DateTime.d.ts +1 -1
  64. package/lib/cjs/components/datetime/DateTime.js +15 -13
  65. package/lib/cjs/components/datetime/editForm/DateTime.edit.validation.d.ts +66 -15
  66. package/lib/cjs/components/datetime/editForm/DateTime.edit.validation.js +68 -47
  67. package/lib/cjs/components/day/Day.js +2 -2
  68. package/lib/cjs/components/day/editForm/Day.edit.display.js +8 -0
  69. package/lib/cjs/components/editgrid/EditGrid.js +4 -14
  70. package/lib/cjs/components/editgrid/editForm/EditGrid.edit.display.js +1 -1
  71. package/lib/cjs/components/email/editForm/Email.edit.display.js +12 -0
  72. package/lib/cjs/components/fieldset/editForm/Fieldset.edit.display.js +8 -0
  73. package/lib/cjs/components/file/File.js +6 -2
  74. package/lib/cjs/components/file/editForm/File.edit.file.d.ts +13 -0
  75. package/lib/cjs/components/file/editForm/File.edit.file.js +1 -0
  76. package/lib/cjs/components/form/Form.d.ts +0 -1
  77. package/lib/cjs/components/form/Form.js +32 -24
  78. package/lib/cjs/components/form/editForm/Form.edit.form.js +4 -3
  79. package/lib/cjs/components/hidden/editForm/Hidden.edit.display.js +8 -0
  80. package/lib/cjs/components/html/HTML.js +1 -2
  81. package/lib/cjs/components/html/editForm/HTML.edit.display.js +8 -0
  82. package/lib/cjs/components/number/Number.js +1 -1
  83. package/lib/cjs/components/number/editForm/Number.edit.display.js +12 -0
  84. package/lib/cjs/components/panel/Panel.js +1 -1
  85. package/lib/cjs/components/password/editForm/Password.edit.display.js +13 -1
  86. package/lib/cjs/components/phonenumber/PhoneNumber.form.js +9 -1
  87. package/lib/cjs/components/radio/Radio.d.ts +8 -0
  88. package/lib/cjs/components/radio/Radio.js +17 -7
  89. package/lib/cjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +1 -1
  90. package/lib/cjs/components/select/Select.d.ts +1 -0
  91. package/lib/cjs/components/select/Select.js +21 -5
  92. package/lib/cjs/components/select/editForm/Select.edit.data.d.ts +68 -110
  93. package/lib/cjs/components/select/editForm/Select.edit.data.js +3 -38
  94. package/lib/cjs/components/selectboxes/SelectBoxes.d.ts +6 -0
  95. package/lib/cjs/components/selectboxes/SelectBoxes.js +7 -1
  96. package/lib/cjs/components/signature/Signature.js +1 -1
  97. package/lib/cjs/components/survey/Survey.js +2 -2
  98. package/lib/cjs/components/tabs/Tabs.js +1 -0
  99. package/lib/cjs/components/tabs/editForm/Tabs.edit.display.js +8 -0
  100. package/lib/cjs/components/tags/Tags.js +1 -1
  101. package/lib/cjs/components/textarea/TextArea.js +10 -2
  102. package/lib/cjs/components/textarea/editForm/TextArea.edit.display.js +12 -0
  103. package/lib/cjs/components/textfield/TextField.js +9 -32
  104. package/lib/cjs/components/time/Time.js +1 -1
  105. package/lib/cjs/components/unknown/Unknown.form.d.ts +2 -1
  106. package/lib/cjs/components/unknown/Unknown.form.js +13 -9
  107. package/lib/cjs/components/url/editForm/Url.edit.display.js +12 -0
  108. package/lib/cjs/components/well/editForm/Well.edit.display.js +8 -0
  109. package/lib/cjs/formio.form.js +5 -5
  110. package/lib/cjs/providers/storage/uploadAdapter.js +8 -6
  111. package/lib/cjs/translations/en.d.ts +1 -234
  112. package/lib/cjs/translations/en.js +4 -2
  113. package/lib/cjs/utils/Evaluator.d.ts +20 -6
  114. package/lib/cjs/utils/Evaluator.js +38 -15
  115. package/lib/cjs/utils/builder.js +5 -5
  116. package/lib/cjs/utils/conditionOperators/IsEqualTo.js +3 -3
  117. package/lib/cjs/utils/formUtils.d.ts +2 -2
  118. package/lib/cjs/utils/index.d.ts +169 -2
  119. package/lib/cjs/utils/index.js +22 -2
  120. package/lib/cjs/utils/utils.d.ts +31 -45
  121. package/lib/cjs/utils/utils.js +80 -156
  122. package/lib/cjs/widgets/CalendarWidget.d.ts +1 -8
  123. package/lib/cjs/widgets/CalendarWidget.js +19 -40
  124. package/lib/mjs/Element.d.ts +2 -1
  125. package/lib/mjs/Element.js +11 -9
  126. package/lib/mjs/EventEmitter.js +2 -2
  127. package/lib/mjs/Form.js +1 -1
  128. package/lib/mjs/PDF.js +1 -1
  129. package/lib/mjs/PDFBuilder.js +1 -2
  130. package/lib/mjs/Webform.d.ts +2 -2
  131. package/lib/mjs/Webform.js +12 -13
  132. package/lib/mjs/WebformBuilder.d.ts +1 -0
  133. package/lib/mjs/WebformBuilder.js +37 -8
  134. package/lib/mjs/Wizard.d.ts +2 -2
  135. package/lib/mjs/Wizard.js +39 -25
  136. package/lib/mjs/WizardBuilder.js +1 -1
  137. package/lib/mjs/components/_classes/component/Component.d.ts +49 -15
  138. package/lib/mjs/components/_classes/component/Component.js +161 -75
  139. package/lib/mjs/components/_classes/component/editForm/Component.edit.conditional.js +1 -1
  140. package/lib/mjs/components/_classes/component/editForm/Component.edit.data.js +19 -0
  141. package/lib/mjs/components/_classes/component/editForm/Component.edit.logic.js +1 -1
  142. package/lib/mjs/components/_classes/component/editForm/utils.js +1 -1
  143. package/lib/mjs/components/_classes/componentModal/ComponentModal.js +1 -1
  144. package/lib/mjs/components/_classes/input/Input.js +1 -1
  145. package/lib/mjs/components/_classes/list/ListComponent.js +3 -3
  146. package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +0 -1
  147. package/lib/mjs/components/_classes/nested/NestedComponent.form.js +13 -0
  148. package/lib/mjs/components/_classes/nested/NestedComponent.js +17 -25
  149. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +1 -1
  150. package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.d.ts +0 -2
  151. package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.js +1 -12
  152. package/lib/mjs/components/address/Address.d.ts +9 -0
  153. package/lib/mjs/components/address/Address.js +32 -9
  154. package/lib/mjs/components/address/editForm/Address.edit.display.d.ts +4 -0
  155. package/lib/mjs/components/address/editForm/Address.edit.display.js +1 -0
  156. package/lib/mjs/components/address/editForm/Address.edit.provider.js +8 -8
  157. package/lib/mjs/components/alert/Alert.js +1 -1
  158. package/lib/mjs/components/button/Button.d.ts +1 -1
  159. package/lib/mjs/components/button/Button.js +7 -10
  160. package/lib/mjs/components/checkbox/Checkbox.js +1 -1
  161. package/lib/mjs/components/container/Container.js +1 -1
  162. package/lib/mjs/components/content/editForm/Content.edit.display.js +8 -0
  163. package/lib/mjs/components/currency/Currency.js +1 -1
  164. package/lib/mjs/components/currency/editForm/Currency.edit.display.js +12 -0
  165. package/lib/mjs/components/datagrid/DataGrid.js +5 -4
  166. package/lib/mjs/components/datamap/DataMap.js +2 -6
  167. package/lib/mjs/components/datetime/DateTime.d.ts +1 -1
  168. package/lib/mjs/components/datetime/DateTime.js +15 -13
  169. package/lib/mjs/components/datetime/editForm/DateTime.edit.validation.d.ts +66 -15
  170. package/lib/mjs/components/datetime/editForm/DateTime.edit.validation.js +68 -47
  171. package/lib/mjs/components/day/Day.js +2 -2
  172. package/lib/mjs/components/day/editForm/Day.edit.display.js +8 -0
  173. package/lib/mjs/components/editgrid/EditGrid.js +4 -13
  174. package/lib/mjs/components/editgrid/editForm/EditGrid.edit.display.js +1 -1
  175. package/lib/mjs/components/email/editForm/Email.edit.display.js +12 -0
  176. package/lib/mjs/components/fieldset/editForm/Fieldset.edit.display.js +8 -0
  177. package/lib/mjs/components/file/File.js +6 -2
  178. package/lib/mjs/components/file/editForm/File.edit.file.d.ts +13 -0
  179. package/lib/mjs/components/file/editForm/File.edit.file.js +1 -0
  180. package/lib/mjs/components/form/Form.d.ts +0 -1
  181. package/lib/mjs/components/form/Form.js +31 -24
  182. package/lib/mjs/components/form/editForm/Form.edit.form.js +3 -2
  183. package/lib/mjs/components/hidden/editForm/Hidden.edit.display.js +8 -0
  184. package/lib/mjs/components/html/HTML.js +1 -2
  185. package/lib/mjs/components/html/editForm/HTML.edit.display.js +8 -0
  186. package/lib/mjs/components/number/Number.js +1 -1
  187. package/lib/mjs/components/number/editForm/Number.edit.display.js +12 -0
  188. package/lib/mjs/components/panel/Panel.js +1 -1
  189. package/lib/mjs/components/password/editForm/Password.edit.display.js +13 -1
  190. package/lib/mjs/components/phonenumber/PhoneNumber.form.js +9 -1
  191. package/lib/mjs/components/radio/Radio.d.ts +8 -0
  192. package/lib/mjs/components/radio/Radio.js +17 -7
  193. package/lib/mjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +1 -1
  194. package/lib/mjs/components/select/Select.d.ts +1 -0
  195. package/lib/mjs/components/select/Select.js +21 -5
  196. package/lib/mjs/components/select/editForm/Select.edit.data.d.ts +68 -110
  197. package/lib/mjs/components/select/editForm/Select.edit.data.js +3 -38
  198. package/lib/mjs/components/selectboxes/SelectBoxes.d.ts +6 -0
  199. package/lib/mjs/components/selectboxes/SelectBoxes.js +7 -1
  200. package/lib/mjs/components/signature/Signature.js +1 -1
  201. package/lib/mjs/components/survey/Survey.js +2 -2
  202. package/lib/mjs/components/tabs/Tabs.js +1 -0
  203. package/lib/mjs/components/tabs/editForm/Tabs.edit.display.js +8 -0
  204. package/lib/mjs/components/tags/Tags.js +1 -1
  205. package/lib/mjs/components/textarea/TextArea.js +10 -2
  206. package/lib/mjs/components/textarea/editForm/TextArea.edit.display.js +12 -0
  207. package/lib/mjs/components/textfield/TextField.js +3 -3
  208. package/lib/mjs/components/time/Time.js +1 -1
  209. package/lib/mjs/components/unknown/Unknown.form.d.ts +2 -1
  210. package/lib/mjs/components/unknown/Unknown.form.js +13 -9
  211. package/lib/mjs/components/url/editForm/Url.edit.display.js +12 -0
  212. package/lib/mjs/components/well/editForm/Well.edit.display.js +8 -0
  213. package/lib/mjs/formio.form.js +3 -3
  214. package/lib/mjs/providers/storage/uploadAdapter.js +8 -6
  215. package/lib/mjs/translations/en.d.ts +1 -234
  216. package/lib/mjs/translations/en.js +6 -47
  217. package/lib/mjs/utils/Evaluator.d.ts +20 -6
  218. package/lib/mjs/utils/Evaluator.js +31 -13
  219. package/lib/mjs/utils/builder.js +1 -1
  220. package/lib/mjs/utils/conditionOperators/IsEqualTo.js +1 -1
  221. package/lib/mjs/utils/formUtils.d.ts +2 -2
  222. package/lib/mjs/utils/index.d.ts +169 -2
  223. package/lib/mjs/utils/index.js +18 -1
  224. package/lib/mjs/utils/utils.d.ts +31 -45
  225. package/lib/mjs/utils/utils.js +72 -129
  226. package/lib/mjs/widgets/CalendarWidget.d.ts +1 -8
  227. package/lib/mjs/widgets/CalendarWidget.js +19 -40
  228. package/package.json +8 -6
  229. package/lib/cjs/i18n.d.ts +0 -13
  230. package/lib/cjs/i18n.js +0 -19
  231. package/lib/cjs/utils/i18n.d.ts +0 -19
  232. package/lib/cjs/utils/i18n.js +0 -120
  233. package/lib/mjs/i18n.d.ts +0 -13
  234. package/lib/mjs/i18n.js +0 -14
  235. package/lib/mjs/utils/i18n.d.ts +0 -19
  236. package/lib/mjs/utils/i18n.js +0 -112
@@ -3,6 +3,14 @@ export default [
3
3
  key: 'labelPosition',
4
4
  ignore: true
5
5
  },
6
+ {
7
+ key: 'labelWidth',
8
+ ignore: true
9
+ },
10
+ {
11
+ key: 'labelMargin',
12
+ ignore: true
13
+ },
6
14
  {
7
15
  key: 'placeholder',
8
16
  ignore: true
@@ -53,8 +53,7 @@ export default class HTMLComponent extends Component {
53
53
  super.checkRefreshOn(changed);
54
54
  let visible;
55
55
  if (this.hasCondition()) {
56
- this._conditionallyHidden = this.checkConditionallyHidden();
57
- visible = !this.conditionallyHidden;
56
+ visible = !this.conditionallyHidden();
58
57
  }
59
58
  else {
60
59
  visible = !this.component.hidden;
@@ -3,6 +3,14 @@ export default [
3
3
  key: 'labelPosition',
4
4
  ignore: true
5
5
  },
6
+ {
7
+ key: 'labelWidth',
8
+ ignore: true
9
+ },
10
+ {
11
+ key: 'labelMargin',
12
+ ignore: true
13
+ },
6
14
  {
7
15
  key: 'placeholder',
8
16
  ignore: true
@@ -2,7 +2,7 @@ import { createNumberMask } from '@formio/text-mask-addons';
2
2
  import { conformToMask, maskInput } from '@formio/vanilla-text-mask';
3
3
  import _ from 'lodash';
4
4
  import Input from '../_classes/input/Input';
5
- import { getNumberSeparators, getNumberDecimalLimit, componentValueTypes, getComponentSavedTypes } from '../../utils/utils';
5
+ import { getNumberSeparators, getNumberDecimalLimit, componentValueTypes, getComponentSavedTypes } from '../../utils/';
6
6
  export default class NumberComponent extends Input {
7
7
  static schema(...extend) {
8
8
  return Input.schema({
@@ -11,6 +11,18 @@ export default [
11
11
  key: 'allowMultipleMasks',
12
12
  ignore: true
13
13
  },
14
+ {
15
+ key: 'inputMasks',
16
+ ignore: true
17
+ },
18
+ {
19
+ key: 'widget.type',
20
+ ignore: true
21
+ },
22
+ {
23
+ key: 'widget',
24
+ ignore: true
25
+ },
14
26
  {
15
27
  key: 'showWordCount',
16
28
  ignore: true,
@@ -1,5 +1,5 @@
1
1
  import NestedComponent from '../_classes/nested/NestedComponent';
2
- import { isChildOf } from '../../utils/utils';
2
+ import { isChildOf } from '../../utils';
3
3
  export default class PanelComponent extends NestedComponent {
4
4
  static schema(...extend) {
5
5
  return NestedComponent.schema({
@@ -10,5 +10,17 @@ export default [
10
10
  {
11
11
  key: 'allowMultipleMasks',
12
12
  ignore: true
13
- }
13
+ },
14
+ {
15
+ key: 'inputMasks',
16
+ ignore: true
17
+ },
18
+ {
19
+ key: 'widget.type',
20
+ ignore: true
21
+ },
22
+ {
23
+ key: 'widget',
24
+ ignore: true
25
+ },
14
26
  ];
@@ -17,7 +17,15 @@ export default function (...extend) {
17
17
  {
18
18
  key: 'showCharCount',
19
19
  ignore: true
20
- }
20
+ },
21
+ {
22
+ key: 'widget.type',
23
+ ignore: true
24
+ },
25
+ {
26
+ key: 'widget',
27
+ ignore: true
28
+ },
21
29
  ]
22
30
  },
23
31
  {
@@ -28,6 +28,7 @@ export default class RadioComponent extends ListComponent {
28
28
  optionsLoaded: boolean | undefined;
29
29
  loadedOptions: any[] | undefined;
30
30
  beforeSubmit(): Promise<any>;
31
+ convertValues(values: any): any;
31
32
  render(): string;
32
33
  attach(element: any): Promise<void>;
33
34
  detach(element: any): void;
@@ -41,5 +42,12 @@ export default class RadioComponent extends ListComponent {
41
42
  setSelectedClasses(): void;
42
43
  updateValue(value: any, flags: any): boolean;
43
44
  currentValue: any;
45
+ /**
46
+ * Normalize values coming into updateValue. For example, depending on the configuration, string value `"true"` will be normalized to boolean `true`.
47
+ * @param {*} value - The value to normalize
48
+ * @returns {*} - Returns the normalized value
49
+ */
50
+ convertByDataType(value: any): any;
51
+ normalizeValue(value: any): any;
44
52
  }
45
53
  import ListComponent from '../_classes/list/ListComponent';
@@ -1,7 +1,7 @@
1
1
  import _ from 'lodash';
2
2
  import ListComponent from '../_classes/list/ListComponent';
3
3
  import { Formio } from '../../Formio';
4
- import { boolValue, componentValueTypes, getComponentSavedTypes } from '../../utils/utils';
4
+ import { boolValue, componentValueTypes, getComponentSavedTypes } from '../../utils';
5
5
  export default class RadioComponent extends ListComponent {
6
6
  static schema(...extend) {
7
7
  return ListComponent.schema({
@@ -153,6 +153,12 @@ export default class RadioComponent extends ListComponent {
153
153
  this.dataReady.then(() => res(true));
154
154
  });
155
155
  }
156
+ convertValues(values) {
157
+ if (this.options.renderMode === 'html' && this.type === 'radio') {
158
+ return values.map(x => ({ ...x, value: this.convertByDataType(x.value) }));
159
+ }
160
+ return values;
161
+ }
156
162
  render() {
157
163
  if (!this.optionsLoaded) {
158
164
  return super.render(this.renderTemplate('loader'));
@@ -160,7 +166,7 @@ export default class RadioComponent extends ListComponent {
160
166
  return super.render(this.renderTemplate('radio', {
161
167
  input: this.inputInfo,
162
168
  inline: this.component.inline,
163
- values: this.component.dataSrc === 'values' ? this.component.values : this.loadedOptions,
169
+ values: this.component.dataSrc === 'values' ? this.convertValues(this.component.values) : this.loadedOptions,
164
170
  value: this.dataValue,
165
171
  row: this.row,
166
172
  }));
@@ -365,7 +371,7 @@ export default class RadioComponent extends ListComponent {
365
371
  const value = this.dataValue;
366
372
  this.refs.wrapper.forEach((wrapper, index) => {
367
373
  const input = this.refs.input[index];
368
- const checked = (input.type === 'checkbox') ? value[input.value] || input.checked : (input.value.toString() === value.toString());
374
+ const checked = (value === undefined || value === null) ? false : (input.type === 'checkbox') ? value[input.value] || input.checked : (input.value.toString() === value.toString());
369
375
  if (checked) {
370
376
  //add class to container when selected
371
377
  this.addClass(wrapper, this.optionSelectedClass);
@@ -406,7 +412,7 @@ export default class RadioComponent extends ListComponent {
406
412
  * @param {*} value - The value to normalize
407
413
  * @returns {*} - Returns the normalized value
408
414
  */
409
- normalizeValue(value) {
415
+ convertByDataType(value) {
410
416
  const dataType = this.component.dataType || 'auto';
411
417
  if (value === this.emptyValue) {
412
418
  return value;
@@ -438,13 +444,17 @@ export default class RadioComponent extends ListComponent {
438
444
  value = !(!value || value.toString() === 'false');
439
445
  break;
440
446
  }
441
- if (this.isSelectURL && this.templateData && this.templateData[value]) {
447
+ return value;
448
+ }
449
+ normalizeValue(value) {
450
+ const valueConverted = this.convertByDataType(value);
451
+ if (this.isSelectURL && this.templateData && this.templateData[valueConverted]) {
442
452
  const submission = this.root.submission;
443
453
  if (!submission.metadata.selectData) {
444
454
  submission.metadata.selectData = {};
445
455
  }
446
- _.set(submission.metadata.selectData, this.path, this.templateData[value]);
456
+ _.set(submission.metadata.selectData, this.path, this.templateData[valueConverted]);
447
457
  }
448
- return super.normalizeValue(value);
458
+ return super.normalizeValue(valueConverted);
449
459
  }
450
460
  }
@@ -1,4 +1,4 @@
1
- import { getContextButtons } from '../../../utils/utils';
1
+ import { getContextButtons } from '../../../utils';
2
2
  export default [
3
3
  {
4
4
  key: 'recaptchaInfo',
@@ -89,6 +89,7 @@ export default class SelectComponent extends ListComponent {
89
89
  disableInfiniteScroll(): void;
90
90
  set serverCount(value: any);
91
91
  get serverCount(): any;
92
+ shouldResetChoicesItems(items: any): boolean;
92
93
  setItems(items: any, fromSearch: any): void;
93
94
  selectItems: any;
94
95
  set downloadedResources(value: any);
@@ -2,7 +2,7 @@ import _ from 'lodash';
2
2
  import { Formio } from '../../Formio';
3
3
  import ListComponent from '../_classes/list/ListComponent';
4
4
  import Form from '../../Form';
5
- import { getRandomComponentId, boolValue, isPromise, componentValueTypes, getComponentSavedTypes, isSelectResourceWithObjectValue, removeHTML } from '../../utils/utils';
5
+ import { getRandomComponentId, boolValue, isPromise, componentValueTypes, getComponentSavedTypes, isSelectResourceWithObjectValue, removeHTML } from '../../utils';
6
6
  import Choices from '../../utils/ChoicesWrapper';
7
7
  export default class SelectComponent extends ListComponent {
8
8
  static schema(...extend) {
@@ -359,6 +359,18 @@ export default class SelectComponent extends ListComponent {
359
359
  this.downloadedResources.serverCount = this.downloadedResources.length;
360
360
  this.serverCount = this.downloadedResources.length;
361
361
  }
362
+ shouldResetChoicesItems(items) {
363
+ if (this.choices._store.choices.length !== items.length) {
364
+ return true;
365
+ }
366
+ for (let item of items) {
367
+ const choicesItem = this.choices._store.choices.find((i) => i.label === item.label);
368
+ if (!choicesItem) {
369
+ return true;
370
+ }
371
+ }
372
+ return false;
373
+ }
362
374
  /* eslint-disable max-statements */
363
375
  setItems(items, fromSearch) {
364
376
  this.selectItems = items;
@@ -444,7 +456,7 @@ export default class SelectComponent extends ListComponent {
444
456
  this.addOption(itemValueAndLabel.value, itemValueAndLabel.label, {}, _.get(item, this.component.idPath, String(index)));
445
457
  });
446
458
  if (this.choices) {
447
- this.choices.setChoices(this.selectOptions, 'value', 'label', true);
459
+ this.choices.setChoices(this.selectOptions, 'value', 'label', true, true, !fromSearch && this.shouldResetChoicesItems(this.selectOptions));
448
460
  }
449
461
  else if (this.loading) {
450
462
  // Re-attach select input.
@@ -935,8 +947,9 @@ export default class SelectComponent extends ListComponent {
935
947
  });
936
948
  }
937
949
  // Add value options.
950
+ const value = this.undoValueTyping(this.dataValue);
938
951
  this.addValueOptions();
939
- this.setChoicesValue(this.dataValue);
952
+ this.setChoicesValue(value);
940
953
  if (this.isSelectResource && this.refs.addResource) {
941
954
  this.addEventListener(this.refs.addResource, 'click', (event) => {
942
955
  event.preventDefault();
@@ -1248,7 +1261,7 @@ export default class SelectComponent extends ListComponent {
1248
1261
  }
1249
1262
  _.set(submission.metadata.selectData, this.path, templateData);
1250
1263
  }
1251
- if (flags.resetValue && this.root?.submission && !this.options.readOnly) {
1264
+ if (flags.resetValue && !flags.fromSubmission && this.root?.submission && !this.options.readOnly) {
1252
1265
  const submission = this.root.submission;
1253
1266
  if (!submission.metadata) {
1254
1267
  submission.metadata = {};
@@ -1312,6 +1325,9 @@ export default class SelectComponent extends ListComponent {
1312
1325
  this.lazyLoadInit = true;
1313
1326
  const searchProperty = this.component.searchField || this.component.valueProperty;
1314
1327
  this.triggerUpdate(_.get(value.data || value, searchProperty, value), true);
1328
+ this.itemsLoaded.then(() => {
1329
+ this.setChoicesValue(value, hasPreviousValue, flags);
1330
+ });
1315
1331
  return changed;
1316
1332
  }
1317
1333
  // Add the value options.
@@ -1487,7 +1503,7 @@ export default class SelectComponent extends ListComponent {
1487
1503
  }
1488
1504
  asString(value, options = {}) {
1489
1505
  value = value ?? this.getValue();
1490
- if (options.modalPreview || this.inDataTable) {
1506
+ if (options.modalPreview || this.inDataTable || options.email) {
1491
1507
  if (this.inDataTable) {
1492
1508
  value = this.undoValueTyping(value);
1493
1509
  }
@@ -9,99 +9,15 @@ declare const _default: ({
9
9
  custom?: undefined;
10
10
  };
11
11
  type?: undefined;
12
+ as?: undefined;
13
+ editor?: undefined;
12
14
  weight?: undefined;
13
15
  input?: undefined;
14
16
  label?: undefined;
15
17
  tooltip?: undefined;
16
- conditional?: undefined;
17
- as?: undefined;
18
- editor?: undefined;
19
- defaultValue?: undefined;
20
18
  description?: undefined;
21
- reorder?: undefined;
22
- components?: undefined;
23
- dataSrc?: undefined;
24
- authenticate?: undefined;
25
- template?: undefined;
26
- valueProperty?: undefined;
27
- clearOnHide?: undefined;
28
- lazyLoad?: undefined;
29
- skipMerge?: undefined;
30
- refreshOn?: undefined;
31
- onSetItems?: undefined;
32
- onChange?: undefined;
33
- placeholder?: undefined;
34
- validate?: undefined;
35
- delimiter?: undefined;
36
- requireDecimal?: undefined;
37
- encrypted?: undefined;
38
- rows?: undefined;
39
- mask?: undefined;
40
- tableView?: undefined;
41
- alwaysEnabled?: undefined;
42
- } | {
43
- type: string;
44
- weight: number;
45
- input: boolean;
46
- key: string;
47
- label: string;
48
- tooltip: string;
49
- conditional: {
50
- json: {
51
- '===': (string | {
52
- var: string;
53
- })[];
54
- and?: undefined;
55
- in?: undefined;
56
- };
57
- };
58
- data?: undefined;
59
- as?: undefined;
60
- editor?: undefined;
19
+ conditional?: undefined;
61
20
  defaultValue?: undefined;
62
- description?: undefined;
63
- reorder?: undefined;
64
- components?: undefined;
65
- dataSrc?: undefined;
66
- authenticate?: undefined;
67
- template?: undefined;
68
- valueProperty?: undefined;
69
- clearOnHide?: undefined;
70
- lazyLoad?: undefined;
71
- skipMerge?: undefined;
72
- refreshOn?: undefined;
73
- onSetItems?: undefined;
74
- onChange?: undefined;
75
- placeholder?: undefined;
76
- validate?: undefined;
77
- delimiter?: undefined;
78
- requireDecimal?: undefined;
79
- encrypted?: undefined;
80
- rows?: undefined;
81
- mask?: undefined;
82
- tableView?: undefined;
83
- alwaysEnabled?: undefined;
84
- } | {
85
- type: string;
86
- as: string;
87
- editor: string;
88
- weight: number;
89
- input: boolean;
90
- key: string;
91
- label: string;
92
- tooltip: string;
93
- defaultValue: {};
94
- conditional: {
95
- json: {
96
- '===': (string | {
97
- var: string;
98
- })[];
99
- and?: undefined;
100
- in?: undefined;
101
- };
102
- };
103
- data?: undefined;
104
- description?: undefined;
105
21
  reorder?: undefined;
106
22
  components?: undefined;
107
23
  dataSrc?: undefined;
@@ -172,6 +88,7 @@ declare const _default: ({
172
88
  key: string;
173
89
  tooltip: string;
174
90
  weight: number;
91
+ defaultValue: boolean;
175
92
  conditional: {
176
93
  json: {
177
94
  and: ({
@@ -192,7 +109,6 @@ declare const _default: ({
192
109
  data?: undefined;
193
110
  as?: undefined;
194
111
  editor?: undefined;
195
- defaultValue?: undefined;
196
112
  description?: undefined;
197
113
  reorder?: undefined;
198
114
  components?: undefined;
@@ -303,8 +219,8 @@ declare const _default: ({
303
219
  };
304
220
  as?: undefined;
305
221
  editor?: undefined;
306
- defaultValue?: undefined;
307
222
  description?: undefined;
223
+ defaultValue?: undefined;
308
224
  reorder?: undefined;
309
225
  components?: undefined;
310
226
  skipMerge?: undefined;
@@ -411,8 +327,8 @@ declare const _default: ({
411
327
  };
412
328
  as?: undefined;
413
329
  editor?: undefined;
414
- defaultValue?: undefined;
415
330
  description?: undefined;
331
+ defaultValue?: undefined;
416
332
  reorder?: undefined;
417
333
  components?: undefined;
418
334
  authenticate?: undefined;
@@ -443,11 +359,11 @@ declare const _default: ({
443
359
  url?: undefined;
444
360
  custom?: undefined;
445
361
  };
446
- conditional?: undefined;
447
362
  as?: undefined;
448
363
  editor?: undefined;
449
- defaultValue?: undefined;
450
364
  description?: undefined;
365
+ conditional?: undefined;
366
+ defaultValue?: undefined;
451
367
  reorder?: undefined;
452
368
  components?: undefined;
453
369
  authenticate?: undefined;
@@ -475,11 +391,52 @@ declare const _default: ({
475
391
  placeholder: string;
476
392
  tooltip: string;
477
393
  data?: undefined;
478
- conditional?: undefined;
479
394
  as?: undefined;
480
395
  editor?: undefined;
396
+ description?: undefined;
397
+ conditional?: undefined;
481
398
  defaultValue?: undefined;
399
+ reorder?: undefined;
400
+ components?: undefined;
401
+ dataSrc?: undefined;
402
+ authenticate?: undefined;
403
+ template?: undefined;
404
+ valueProperty?: undefined;
405
+ clearOnHide?: undefined;
406
+ lazyLoad?: undefined;
407
+ skipMerge?: undefined;
408
+ refreshOn?: undefined;
409
+ onSetItems?: undefined;
410
+ onChange?: undefined;
411
+ validate?: undefined;
412
+ delimiter?: undefined;
413
+ requireDecimal?: undefined;
414
+ encrypted?: undefined;
415
+ rows?: undefined;
416
+ mask?: undefined;
417
+ tableView?: undefined;
418
+ alwaysEnabled?: undefined;
419
+ } | {
420
+ type: string;
421
+ input: boolean;
422
+ key: string;
423
+ label: string;
424
+ tooltip: string;
425
+ weight: number;
426
+ conditional: {
427
+ json: {
428
+ '===': (string | {
429
+ var: string;
430
+ })[];
431
+ and?: undefined;
432
+ in?: undefined;
433
+ };
434
+ };
435
+ data?: undefined;
436
+ as?: undefined;
437
+ editor?: undefined;
482
438
  description?: undefined;
439
+ defaultValue?: undefined;
483
440
  reorder?: undefined;
484
441
  components?: undefined;
485
442
  dataSrc?: undefined;
@@ -492,6 +449,7 @@ declare const _default: ({
492
449
  refreshOn?: undefined;
493
450
  onSetItems?: undefined;
494
451
  onChange?: undefined;
452
+ placeholder?: undefined;
495
453
  validate?: undefined;
496
454
  delimiter?: undefined;
497
455
  requireDecimal?: undefined;
@@ -710,8 +668,8 @@ declare const _default: ({
710
668
  };
711
669
  data?: undefined;
712
670
  as?: undefined;
713
- defaultValue?: undefined;
714
671
  description?: undefined;
672
+ defaultValue?: undefined;
715
673
  reorder?: undefined;
716
674
  components?: undefined;
717
675
  dataSrc?: undefined;
@@ -759,8 +717,8 @@ declare const _default: ({
759
717
  };
760
718
  as?: undefined;
761
719
  editor?: undefined;
762
- defaultValue?: undefined;
763
720
  description?: undefined;
721
+ defaultValue?: undefined;
764
722
  reorder?: undefined;
765
723
  components?: undefined;
766
724
  authenticate?: undefined;
@@ -831,10 +789,10 @@ declare const _default: ({
831
789
  defaultValue: boolean;
832
790
  tooltip: string;
833
791
  data?: undefined;
834
- conditional?: undefined;
835
792
  as?: undefined;
836
793
  editor?: undefined;
837
794
  description?: undefined;
795
+ conditional?: undefined;
838
796
  reorder?: undefined;
839
797
  components?: undefined;
840
798
  dataSrc?: undefined;
@@ -927,10 +885,10 @@ declare const _default: ({
927
885
  weight: number;
928
886
  tooltip: string;
929
887
  data?: undefined;
930
- conditional?: undefined;
931
888
  as?: undefined;
932
889
  editor?: undefined;
933
890
  description?: undefined;
891
+ conditional?: undefined;
934
892
  reorder?: undefined;
935
893
  components?: undefined;
936
894
  dataSrc?: undefined;
@@ -973,8 +931,8 @@ declare const _default: ({
973
931
  data?: undefined;
974
932
  as?: undefined;
975
933
  editor?: undefined;
976
- defaultValue?: undefined;
977
934
  description?: undefined;
935
+ defaultValue?: undefined;
978
936
  reorder?: undefined;
979
937
  components?: undefined;
980
938
  dataSrc?: undefined;
@@ -1003,11 +961,11 @@ declare const _default: ({
1003
961
  label: string;
1004
962
  tooltip: string;
1005
963
  data?: undefined;
1006
- conditional?: undefined;
1007
964
  as?: undefined;
1008
965
  editor?: undefined;
1009
- defaultValue?: undefined;
1010
966
  description?: undefined;
967
+ conditional?: undefined;
968
+ defaultValue?: undefined;
1011
969
  reorder?: undefined;
1012
970
  components?: undefined;
1013
971
  dataSrc?: undefined;
@@ -1040,8 +998,8 @@ declare const _default: ({
1040
998
  tooltip: string;
1041
999
  defaultValue: {};
1042
1000
  data?: undefined;
1043
- conditional?: undefined;
1044
1001
  description?: undefined;
1002
+ conditional?: undefined;
1045
1003
  reorder?: undefined;
1046
1004
  components?: undefined;
1047
1005
  dataSrc?: undefined;
@@ -1069,15 +1027,15 @@ declare const _default: ({
1069
1027
  onChange(context: any): void;
1070
1028
  data?: undefined;
1071
1029
  type?: undefined;
1030
+ as?: undefined;
1031
+ editor?: undefined;
1072
1032
  weight?: undefined;
1073
1033
  input?: undefined;
1074
1034
  label?: undefined;
1075
1035
  tooltip?: undefined;
1036
+ description?: undefined;
1076
1037
  conditional?: undefined;
1077
- as?: undefined;
1078
- editor?: undefined;
1079
1038
  defaultValue?: undefined;
1080
- description?: undefined;
1081
1039
  reorder?: undefined;
1082
1040
  components?: undefined;
1083
1041
  dataSrc?: undefined;
@@ -1150,14 +1108,14 @@ declare const _default: ({
1150
1108
  };
1151
1109
  };
1152
1110
  data?: undefined;
1111
+ as?: undefined;
1112
+ editor?: undefined;
1153
1113
  weight?: undefined;
1154
1114
  input?: undefined;
1155
1115
  label?: undefined;
1156
1116
  tooltip?: undefined;
1157
- as?: undefined;
1158
- editor?: undefined;
1159
- defaultValue?: undefined;
1160
1117
  description?: undefined;
1118
+ defaultValue?: undefined;
1161
1119
  reorder?: undefined;
1162
1120
  components?: undefined;
1163
1121
  dataSrc?: undefined;
@@ -1184,15 +1142,15 @@ declare const _default: ({
1184
1142
  onChange(context: any): void;
1185
1143
  data?: undefined;
1186
1144
  type?: undefined;
1145
+ as?: undefined;
1146
+ editor?: undefined;
1187
1147
  weight?: undefined;
1188
1148
  input?: undefined;
1189
1149
  label?: undefined;
1190
1150
  tooltip?: undefined;
1151
+ description?: undefined;
1191
1152
  conditional?: undefined;
1192
- as?: undefined;
1193
- editor?: undefined;
1194
1153
  defaultValue?: undefined;
1195
- description?: undefined;
1196
1154
  reorder?: undefined;
1197
1155
  components?: undefined;
1198
1156
  dataSrc?: undefined;