@formio/js 5.2.3 → 5.2.4-rc.0

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 (510) hide show
  1. package/dist/formio.builder.css +161 -50
  2. package/dist/formio.builder.min.css +1 -1
  3. package/dist/formio.embed.js +1 -1
  4. package/dist/formio.embed.min.js +1 -1
  5. package/dist/formio.embed.min.js.LICENSE.txt +1 -1
  6. package/dist/formio.form.css +158 -49
  7. package/dist/formio.form.js +152 -108
  8. package/dist/formio.form.min.css +1 -1
  9. package/dist/formio.form.min.js +1 -1
  10. package/dist/formio.form.min.js.LICENSE.txt +1 -1
  11. package/dist/formio.full.css +161 -50
  12. package/dist/formio.full.js +401 -227
  13. package/dist/formio.full.min.css +1 -1
  14. package/dist/formio.full.min.js +1 -1
  15. package/dist/formio.full.min.js.LICENSE.txt +1 -1
  16. package/dist/formio.js +51 -18
  17. package/dist/formio.min.js +1 -1
  18. package/dist/formio.min.js.LICENSE.txt +1 -1
  19. package/dist/formio.utils.js +47 -14
  20. package/dist/formio.utils.min.js +1 -1
  21. package/dist/formio.utils.min.js.LICENSE.txt +1 -1
  22. package/lib/cjs/CDN.js +12 -12
  23. package/lib/cjs/Element.d.ts +3 -2
  24. package/lib/cjs/Element.js +27 -21
  25. package/lib/cjs/Embed.js +74 -40
  26. package/lib/cjs/EventEmitter.js +1 -1
  27. package/lib/cjs/Form.d.ts +371 -341
  28. package/lib/cjs/Form.js +153 -39
  29. package/lib/cjs/FormBuilder.d.ts +3 -3
  30. package/lib/cjs/FormBuilder.js +2 -3
  31. package/lib/cjs/Formio.js +26 -23
  32. package/lib/cjs/InlineEmbed.js +23 -17
  33. package/lib/cjs/PDF.d.ts +1 -0
  34. package/lib/cjs/PDF.js +18 -15
  35. package/lib/cjs/PDFBuilder.js +51 -36
  36. package/lib/cjs/Webform.d.ts +8 -366
  37. package/lib/cjs/Webform.js +176 -235
  38. package/lib/cjs/WebformBuilder.js +217 -144
  39. package/lib/cjs/Wizard.js +92 -62
  40. package/lib/cjs/WizardBuilder.js +27 -19
  41. package/lib/cjs/addons/FormioAddon.js +1 -1
  42. package/lib/cjs/addons/PasswordStrength/PasswordStrengthAddon.form.js +59 -57
  43. package/lib/cjs/addons/PasswordStrength/PasswordStrengthAddon.js +24 -16
  44. package/lib/cjs/addons/index.js +3 -3
  45. package/lib/cjs/components/Components.js +0 -4
  46. package/lib/cjs/components/_classes/component/Component.form.js +11 -11
  47. package/lib/cjs/components/_classes/component/Component.js +298 -179
  48. package/lib/cjs/components/_classes/component/editForm/Component.edit.addons.js +2 -4
  49. package/lib/cjs/components/_classes/component/editForm/Component.edit.api.js +5 -5
  50. package/lib/cjs/components/_classes/component/editForm/Component.edit.conditional.js +9 -11
  51. package/lib/cjs/components/_classes/component/editForm/Component.edit.data.d.ts +37 -0
  52. package/lib/cjs/components/_classes/component/editForm/Component.edit.data.js +39 -25
  53. package/lib/cjs/components/_classes/component/editForm/Component.edit.display.js +47 -29
  54. package/lib/cjs/components/_classes/component/editForm/Component.edit.layout.js +9 -9
  55. package/lib/cjs/components/_classes/component/editForm/Component.edit.logic.js +5 -7
  56. package/lib/cjs/components/_classes/component/editForm/Component.edit.validation.js +37 -34
  57. package/lib/cjs/components/_classes/component/editForm/utils.js +12 -16
  58. package/lib/cjs/components/_classes/componentModal/ComponentModal.js +6 -6
  59. package/lib/cjs/components/_classes/field/Field.js +7 -1
  60. package/lib/cjs/components/_classes/input/Input.js +30 -26
  61. package/lib/cjs/components/_classes/list/ListComponent.form.js +1 -1
  62. package/lib/cjs/components/_classes/list/ListComponent.js +27 -18
  63. package/lib/cjs/components/_classes/list/editForm/ListComponent.edit.data.js +36 -9
  64. package/lib/cjs/components/_classes/multivalue/Multivalue.js +32 -13
  65. package/lib/cjs/components/_classes/nested/NestedComponent.form.js +3 -3
  66. package/lib/cjs/components/_classes/nested/NestedComponent.js +36 -32
  67. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +19 -14
  68. package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.js +19 -17
  69. package/lib/cjs/components/address/Address.js +52 -45
  70. package/lib/cjs/components/address/editForm/Address.edit.data.js +2 -2
  71. package/lib/cjs/components/address/editForm/Address.edit.display.js +2 -2
  72. package/lib/cjs/components/address/editForm/Address.edit.provider.js +53 -11
  73. package/lib/cjs/components/alert/Alert.js +21 -15
  74. package/lib/cjs/components/button/Button.form.js +1 -1
  75. package/lib/cjs/components/button/Button.js +50 -27
  76. package/lib/cjs/components/button/editForm/Button.edit.display.js +49 -9
  77. package/lib/cjs/components/checkbox/Checkbox.d.ts +1 -1
  78. package/lib/cjs/components/checkbox/Checkbox.form.js +3 -3
  79. package/lib/cjs/components/checkbox/Checkbox.js +28 -20
  80. package/lib/cjs/components/checkbox/editForm/Checkbox.edit.data.js +1 -1
  81. package/lib/cjs/components/checkbox/editForm/Checkbox.edit.display.js +13 -3
  82. package/lib/cjs/components/checkbox/editForm/Checkbox.edit.validation.js +2 -2
  83. package/lib/cjs/components/columns/Columns.form.js +1 -1
  84. package/lib/cjs/components/columns/Columns.js +24 -12
  85. package/lib/cjs/components/columns/editForm/Columns.edit.display.js +17 -17
  86. package/lib/cjs/components/container/Container.form.js +2 -2
  87. package/lib/cjs/components/container/Container.js +6 -4
  88. package/lib/cjs/components/container/editForm/Container.edit.data.js +3 -3
  89. package/lib/cjs/components/container/editForm/Container.edit.display.js +4 -4
  90. package/lib/cjs/components/content/Content.form.js +4 -2
  91. package/lib/cjs/components/content/Content.js +10 -8
  92. package/lib/cjs/components/content/editForm/Content.edit.display.js +10 -10
  93. package/lib/cjs/components/currency/Currency.form.js +3 -3
  94. package/lib/cjs/components/currency/Currency.js +19 -10
  95. package/lib/cjs/components/currency/editForm/Currency.edit.data.js +5 -5
  96. package/lib/cjs/components/currency/editForm/Currency.edit.display.js +8 -8
  97. package/lib/cjs/components/datagrid/DataGrid.form.js +3 -3
  98. package/lib/cjs/components/datagrid/DataGrid.js +89 -38
  99. package/lib/cjs/components/datagrid/editForm/DataGrid.edit.data.js +1 -1
  100. package/lib/cjs/components/datagrid/editForm/DataGrid.edit.display.js +14 -14
  101. package/lib/cjs/components/datagrid/editForm/DataGrid.edit.validation.js +3 -3
  102. package/lib/cjs/components/datamap/DataMap.form.js +2 -2
  103. package/lib/cjs/components/datamap/DataMap.js +44 -31
  104. package/lib/cjs/components/datamap/editForm/DataMap.edit.data.js +1 -1
  105. package/lib/cjs/components/datamap/editForm/DataMap.edit.display.js +8 -8
  106. package/lib/cjs/components/datetime/DateTime.form.js +5 -5
  107. package/lib/cjs/components/datetime/DateTime.js +30 -15
  108. package/lib/cjs/components/datetime/editForm/DateTime.edit.data.js +4 -3
  109. package/lib/cjs/components/datetime/editForm/DateTime.edit.date.js +10 -10
  110. package/lib/cjs/components/datetime/editForm/DateTime.edit.display.js +22 -17
  111. package/lib/cjs/components/datetime/editForm/DateTime.edit.time.js +5 -5
  112. package/lib/cjs/components/datetime/editForm/DateTime.edit.validation.js +3 -3
  113. package/lib/cjs/components/day/Day.form.js +5 -5
  114. package/lib/cjs/components/day/Day.js +146 -56
  115. package/lib/cjs/components/day/editForm/Day.edit.day.js +13 -9
  116. package/lib/cjs/components/day/editForm/Day.edit.display.js +7 -7
  117. package/lib/cjs/components/day/editForm/Day.edit.month.js +12 -8
  118. package/lib/cjs/components/day/editForm/Day.edit.validation.js +7 -7
  119. package/lib/cjs/components/day/editForm/Day.edit.year.js +8 -8
  120. package/lib/cjs/components/editgrid/EditGrid.form.js +2 -2
  121. package/lib/cjs/components/editgrid/EditGrid.js +137 -89
  122. package/lib/cjs/components/editgrid/editForm/EditGrid.edit.data.js +2 -2
  123. package/lib/cjs/components/editgrid/editForm/EditGrid.edit.display.js +7 -2
  124. package/lib/cjs/components/editgrid/editForm/EditGrid.edit.templates.js +16 -16
  125. package/lib/cjs/components/editgrid/editForm/EditGrid.edit.validation.js +3 -3
  126. package/lib/cjs/components/email/Email.js +4 -4
  127. package/lib/cjs/components/email/editForm/Email.edit.display.js +3 -3
  128. package/lib/cjs/components/email/editForm/Email.edit.validation.js +6 -6
  129. package/lib/cjs/components/fieldset/Fieldset.form.js +1 -1
  130. package/lib/cjs/components/fieldset/Fieldset.js +2 -2
  131. package/lib/cjs/components/fieldset/editForm/Fieldset.edit.display.js +8 -8
  132. package/lib/cjs/components/file/File.form.js +4 -4
  133. package/lib/cjs/components/file/File.js +126 -80
  134. package/lib/cjs/components/file/editForm/File.edit.display.js +9 -5
  135. package/lib/cjs/components/file/editForm/File.edit.file.d.ts +37 -16
  136. package/lib/cjs/components/file/editForm/File.edit.file.js +169 -72
  137. package/lib/cjs/components/file/editForm/File.edit.validation.js +2 -2
  138. package/lib/cjs/components/form/Form.form.js +3 -3
  139. package/lib/cjs/components/form/Form.js +67 -51
  140. package/lib/cjs/components/form/editForm/Form.edit.data.js +1 -3
  141. package/lib/cjs/components/form/editForm/Form.edit.display.js +6 -7
  142. package/lib/cjs/components/form/editForm/Form.edit.form.js +11 -9
  143. package/lib/cjs/components/hidden/Hidden.form.js +4 -4
  144. package/lib/cjs/components/hidden/Hidden.js +2 -2
  145. package/lib/cjs/components/hidden/editForm/Hidden.edit.data.js +3 -3
  146. package/lib/cjs/components/hidden/editForm/Hidden.edit.display.js +10 -10
  147. package/lib/cjs/components/html/HTML.js +23 -17
  148. package/lib/cjs/components/html/editForm/HTML.edit.display.js +17 -17
  149. package/lib/cjs/components/html/editForm/HTML.edit.logic.js +2 -2
  150. package/lib/cjs/components/number/Number.form.js +3 -3
  151. package/lib/cjs/components/number/Number.js +27 -11
  152. package/lib/cjs/components/number/editForm/Number.edit.data.js +3 -3
  153. package/lib/cjs/components/number/editForm/Number.edit.display.js +4 -4
  154. package/lib/cjs/components/number/editForm/Number.edit.validation.js +9 -9
  155. package/lib/cjs/components/panel/Panel.form.js +1 -1
  156. package/lib/cjs/components/panel/Panel.js +2 -2
  157. package/lib/cjs/components/panel/editForm/Panel.edit.conditional.js +5 -7
  158. package/lib/cjs/components/panel/editForm/Panel.edit.display.js +55 -29
  159. package/lib/cjs/components/password/Password.form.js +3 -3
  160. package/lib/cjs/components/password/Password.js +5 -2
  161. package/lib/cjs/components/password/editForm/Password.edit.data.js +11 -11
  162. package/lib/cjs/components/password/editForm/Password.edit.display.js +3 -3
  163. package/lib/cjs/components/password/editForm/Password.edit.validation.js +3 -3
  164. package/lib/cjs/components/phonenumber/PhoneNumber.form.js +8 -8
  165. package/lib/cjs/components/phonenumber/PhoneNumber.js +3 -3
  166. package/lib/cjs/components/phonenumber/editForm/PhoneNumber.edit.validation.js +6 -6
  167. package/lib/cjs/components/radio/Radio.form.js +3 -3
  168. package/lib/cjs/components/radio/Radio.js +55 -26
  169. package/lib/cjs/components/radio/editForm/Radio.edit.data.js +23 -9
  170. package/lib/cjs/components/radio/editForm/Radio.edit.display.js +6 -6
  171. package/lib/cjs/components/radio/editForm/Radio.edit.validation.js +2 -2
  172. package/lib/cjs/components/recaptcha/ReCaptcha.form.js +5 -5
  173. package/lib/cjs/components/recaptcha/ReCaptcha.js +7 -5
  174. package/lib/cjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +24 -24
  175. package/lib/cjs/components/select/Select.form.js +3 -3
  176. package/lib/cjs/components/select/Select.js +235 -129
  177. package/lib/cjs/components/select/editForm/Select.edit.data.d.ts +1 -1
  178. package/lib/cjs/components/select/editForm/Select.edit.data.js +191 -57
  179. package/lib/cjs/components/select/editForm/Select.edit.display.js +2 -2
  180. package/lib/cjs/components/select/editForm/Select.edit.validation.js +4 -4
  181. package/lib/cjs/components/selectboxes/SelectBoxes.form.js +3 -3
  182. package/lib/cjs/components/selectboxes/SelectBoxes.js +31 -15
  183. package/lib/cjs/components/selectboxes/editForm/SelectBoxes.edit.validation.js +5 -5
  184. package/lib/cjs/components/signature/Signature.form.js +3 -3
  185. package/lib/cjs/components/signature/Signature.js +25 -15
  186. package/lib/cjs/components/signature/editForm/Signature.edit.display.js +19 -10
  187. package/lib/cjs/components/survey/Survey.form.js +3 -3
  188. package/lib/cjs/components/survey/Survey.js +30 -17
  189. package/lib/cjs/components/survey/editForm/Survey.edit.data.js +23 -11
  190. package/lib/cjs/components/survey/editForm/Survey.edit.display.js +1 -1
  191. package/lib/cjs/components/survey/editForm/Survey.edit.validation.js +1 -1
  192. package/lib/cjs/components/table/Table.form.js +1 -1
  193. package/lib/cjs/components/table/Table.js +7 -5
  194. package/lib/cjs/components/table/editForm/Table.edit.display.js +22 -22
  195. package/lib/cjs/components/tabs/Tabs.form.js +1 -1
  196. package/lib/cjs/components/tabs/Tabs.js +26 -8
  197. package/lib/cjs/components/tabs/editForm/Tabs.edit.display.js +21 -17
  198. package/lib/cjs/components/tags/Tags.form.js +1 -1
  199. package/lib/cjs/components/tags/Tags.js +28 -12
  200. package/lib/cjs/components/tags/editForm/Tags.edit.data.js +7 -7
  201. package/lib/cjs/components/textarea/TextArea.form.js +2 -2
  202. package/lib/cjs/components/textarea/TextArea.js +63 -45
  203. package/lib/cjs/components/textarea/editForm/TextArea.edit.display.js +96 -72
  204. package/lib/cjs/components/textarea/editForm/TextArea.edit.validation.js +3 -3
  205. package/lib/cjs/components/textfield/TextField.form.js +3 -3
  206. package/lib/cjs/components/textfield/TextField.js +32 -21
  207. package/lib/cjs/components/textfield/editForm/TextField.edit.data.js +15 -13
  208. package/lib/cjs/components/textfield/editForm/TextField.edit.display.js +31 -21
  209. package/lib/cjs/components/textfield/editForm/TextField.edit.validation.js +6 -6
  210. package/lib/cjs/components/time/Time.js +17 -10
  211. package/lib/cjs/components/time/editForm/Time.edit.display.js +2 -2
  212. package/lib/cjs/components/unknown/Unknown.form.js +5 -5
  213. package/lib/cjs/components/unknown/Unknown.js +2 -2
  214. package/lib/cjs/components/unknown/editForm/Unknown.edit.display.js +3 -3
  215. package/lib/cjs/components/url/Url.form.js +3 -3
  216. package/lib/cjs/components/url/Url.js +2 -2
  217. package/lib/cjs/components/url/editForm/Url.edit.display.js +3 -3
  218. package/lib/cjs/components/url/editForm/Url.edit.validation.js +1 -1
  219. package/lib/cjs/components/well/Well.form.js +1 -1
  220. package/lib/cjs/components/well/Well.js +2 -2
  221. package/lib/cjs/components/well/editForm/Well.edit.display.js +10 -10
  222. package/lib/cjs/formio.form.d.ts +2 -1
  223. package/lib/cjs/formio.form.js +38 -12
  224. package/lib/cjs/i18n.d.ts +4 -0
  225. package/lib/cjs/i18n.js +7 -3
  226. package/lib/cjs/package.json +1 -1
  227. package/lib/cjs/providers/address/AddressProvider.js +8 -5
  228. package/lib/cjs/providers/address/GoogleAddressProvider.d.ts +3 -3
  229. package/lib/cjs/providers/address/GoogleAddressProvider.js +24 -13
  230. package/lib/cjs/providers/processor/fileProcessor.js +3 -1
  231. package/lib/cjs/providers/storage/azure.js +5 -2
  232. package/lib/cjs/providers/storage/dropbox.js +4 -5
  233. package/lib/cjs/providers/storage/googleDrive.js +3 -4
  234. package/lib/cjs/providers/storage/index.js +1 -1
  235. package/lib/cjs/providers/storage/indexeddb.js +16 -6
  236. package/lib/cjs/providers/storage/s3.js +17 -6
  237. package/lib/cjs/providers/storage/uploadAdapter.js +17 -11
  238. package/lib/cjs/providers/storage/url.js +13 -11
  239. package/lib/cjs/providers/storage/xhr.js +17 -9
  240. package/lib/cjs/templates/index.js +1 -1
  241. package/lib/cjs/translations/de.d.ts +80 -0
  242. package/lib/cjs/translations/de.js +81 -0
  243. package/lib/cjs/translations/en.d.ts +0 -2
  244. package/lib/cjs/translations/en.js +7 -9
  245. package/lib/cjs/utils/ChoicesWrapper.js +2 -2
  246. package/lib/cjs/utils/builder.js +31 -7
  247. package/lib/cjs/utils/calendarUtils.js +7 -5
  248. package/lib/cjs/utils/conditionOperators/ConditionOperator.js +1 -1
  249. package/lib/cjs/utils/conditionOperators/DateGreaterThan.js +12 -4
  250. package/lib/cjs/utils/conditionOperators/IsEmptyValue.js +3 -1
  251. package/lib/cjs/utils/conditionOperators/IsEqualTo.js +10 -6
  252. package/lib/cjs/utils/conditionOperators/index.js +1 -1
  253. package/lib/cjs/utils/formUtils.js +1 -1
  254. package/lib/cjs/utils/i18n.js +7 -1
  255. package/lib/cjs/utils/index.d.ts +2 -1
  256. package/lib/cjs/utils/index.js +2 -2
  257. package/lib/cjs/utils/utils.d.ts +10 -1
  258. package/lib/cjs/utils/utils.js +175 -92
  259. package/lib/cjs/widgets/CalendarWidget.js +66 -49
  260. package/lib/cjs/widgets/InputWidget.js +6 -4
  261. package/lib/cjs/widgets/index.js +1 -1
  262. package/lib/mjs/CDN.js +12 -12
  263. package/lib/mjs/Element.d.ts +3 -2
  264. package/lib/mjs/Element.js +27 -21
  265. package/lib/mjs/Embed.js +76 -42
  266. package/lib/mjs/EventEmitter.js +1 -1
  267. package/lib/mjs/Form.d.ts +371 -341
  268. package/lib/mjs/Form.js +142 -126
  269. package/lib/mjs/FormBuilder.d.ts +3 -3
  270. package/lib/mjs/FormBuilder.js +2 -3
  271. package/lib/mjs/Formio.js +26 -23
  272. package/lib/mjs/InlineEmbed.js +23 -17
  273. package/lib/mjs/PDF.d.ts +1 -0
  274. package/lib/mjs/PDF.js +18 -15
  275. package/lib/mjs/PDFBuilder.js +51 -36
  276. package/lib/mjs/Webform.d.ts +8 -366
  277. package/lib/mjs/Webform.js +183 -250
  278. package/lib/mjs/WebformBuilder.js +220 -147
  279. package/lib/mjs/Wizard.js +93 -63
  280. package/lib/mjs/WizardBuilder.js +27 -19
  281. package/lib/mjs/addons/FormioAddon.js +1 -1
  282. package/lib/mjs/addons/PasswordStrength/PasswordStrengthAddon.form.js +59 -57
  283. package/lib/mjs/addons/PasswordStrength/PasswordStrengthAddon.js +24 -16
  284. package/lib/mjs/addons/index.js +3 -3
  285. package/lib/mjs/components/Components.js +0 -4
  286. package/lib/mjs/components/_classes/component/Component.form.js +11 -11
  287. package/lib/mjs/components/_classes/component/Component.js +303 -184
  288. package/lib/mjs/components/_classes/component/editForm/Component.edit.addons.js +2 -4
  289. package/lib/mjs/components/_classes/component/editForm/Component.edit.api.js +5 -5
  290. package/lib/mjs/components/_classes/component/editForm/Component.edit.conditional.js +9 -11
  291. package/lib/mjs/components/_classes/component/editForm/Component.edit.data.d.ts +37 -0
  292. package/lib/mjs/components/_classes/component/editForm/Component.edit.data.js +39 -25
  293. package/lib/mjs/components/_classes/component/editForm/Component.edit.display.js +47 -29
  294. package/lib/mjs/components/_classes/component/editForm/Component.edit.layout.js +9 -9
  295. package/lib/mjs/components/_classes/component/editForm/Component.edit.logic.js +5 -7
  296. package/lib/mjs/components/_classes/component/editForm/Component.edit.validation.js +37 -34
  297. package/lib/mjs/components/_classes/component/editForm/utils.js +12 -16
  298. package/lib/mjs/components/_classes/componentModal/ComponentModal.js +2 -2
  299. package/lib/mjs/components/_classes/field/Field.js +8 -2
  300. package/lib/mjs/components/_classes/input/Input.js +27 -23
  301. package/lib/mjs/components/_classes/list/ListComponent.form.js +1 -1
  302. package/lib/mjs/components/_classes/list/ListComponent.js +27 -18
  303. package/lib/mjs/components/_classes/list/editForm/ListComponent.edit.data.js +36 -9
  304. package/lib/mjs/components/_classes/multivalue/Multivalue.js +32 -13
  305. package/lib/mjs/components/_classes/nested/NestedComponent.form.js +3 -3
  306. package/lib/mjs/components/_classes/nested/NestedComponent.js +32 -28
  307. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +20 -15
  308. package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.js +19 -17
  309. package/lib/mjs/components/address/Address.js +57 -46
  310. package/lib/mjs/components/address/editForm/Address.edit.data.js +2 -2
  311. package/lib/mjs/components/address/editForm/Address.edit.display.js +2 -2
  312. package/lib/mjs/components/address/editForm/Address.edit.provider.js +53 -11
  313. package/lib/mjs/components/alert/Alert.js +22 -16
  314. package/lib/mjs/components/button/Button.form.js +1 -1
  315. package/lib/mjs/components/button/Button.js +51 -28
  316. package/lib/mjs/components/button/editForm/Button.edit.display.js +49 -9
  317. package/lib/mjs/components/checkbox/Checkbox.d.ts +1 -1
  318. package/lib/mjs/components/checkbox/Checkbox.form.js +3 -3
  319. package/lib/mjs/components/checkbox/Checkbox.js +29 -21
  320. package/lib/mjs/components/checkbox/editForm/Checkbox.edit.data.js +1 -1
  321. package/lib/mjs/components/checkbox/editForm/Checkbox.edit.display.js +13 -3
  322. package/lib/mjs/components/checkbox/editForm/Checkbox.edit.validation.js +2 -2
  323. package/lib/mjs/components/columns/Columns.form.js +1 -1
  324. package/lib/mjs/components/columns/Columns.js +24 -12
  325. package/lib/mjs/components/columns/editForm/Columns.edit.display.js +17 -17
  326. package/lib/mjs/components/container/Container.form.js +2 -2
  327. package/lib/mjs/components/container/Container.js +6 -4
  328. package/lib/mjs/components/container/editForm/Container.edit.data.js +3 -3
  329. package/lib/mjs/components/container/editForm/Container.edit.display.js +4 -4
  330. package/lib/mjs/components/content/Content.form.js +4 -2
  331. package/lib/mjs/components/content/Content.js +10 -8
  332. package/lib/mjs/components/content/editForm/Content.edit.display.js +10 -10
  333. package/lib/mjs/components/currency/Currency.form.js +3 -3
  334. package/lib/mjs/components/currency/Currency.js +19 -10
  335. package/lib/mjs/components/currency/editForm/Currency.edit.data.js +5 -5
  336. package/lib/mjs/components/currency/editForm/Currency.edit.display.js +8 -8
  337. package/lib/mjs/components/datagrid/DataGrid.form.js +3 -3
  338. package/lib/mjs/components/datagrid/DataGrid.js +90 -39
  339. package/lib/mjs/components/datagrid/editForm/DataGrid.edit.data.js +1 -1
  340. package/lib/mjs/components/datagrid/editForm/DataGrid.edit.display.js +14 -14
  341. package/lib/mjs/components/datagrid/editForm/DataGrid.edit.validation.js +3 -3
  342. package/lib/mjs/components/datamap/DataMap.form.js +2 -2
  343. package/lib/mjs/components/datamap/DataMap.js +44 -31
  344. package/lib/mjs/components/datamap/editForm/DataMap.edit.data.js +1 -1
  345. package/lib/mjs/components/datamap/editForm/DataMap.edit.display.js +8 -8
  346. package/lib/mjs/components/datetime/DateTime.form.js +5 -5
  347. package/lib/mjs/components/datetime/DateTime.js +31 -16
  348. package/lib/mjs/components/datetime/editForm/DateTime.edit.data.js +4 -3
  349. package/lib/mjs/components/datetime/editForm/DateTime.edit.date.js +10 -10
  350. package/lib/mjs/components/datetime/editForm/DateTime.edit.display.js +22 -17
  351. package/lib/mjs/components/datetime/editForm/DateTime.edit.time.js +5 -5
  352. package/lib/mjs/components/datetime/editForm/DateTime.edit.validation.js +3 -3
  353. package/lib/mjs/components/day/Day.form.js +5 -5
  354. package/lib/mjs/components/day/Day.js +147 -57
  355. package/lib/mjs/components/day/editForm/Day.edit.day.js +13 -9
  356. package/lib/mjs/components/day/editForm/Day.edit.display.js +7 -7
  357. package/lib/mjs/components/day/editForm/Day.edit.month.js +12 -8
  358. package/lib/mjs/components/day/editForm/Day.edit.validation.js +7 -7
  359. package/lib/mjs/components/day/editForm/Day.edit.year.js +8 -8
  360. package/lib/mjs/components/editgrid/EditGrid.form.js +2 -2
  361. package/lib/mjs/components/editgrid/EditGrid.js +138 -90
  362. package/lib/mjs/components/editgrid/editForm/EditGrid.edit.data.js +2 -2
  363. package/lib/mjs/components/editgrid/editForm/EditGrid.edit.display.js +7 -2
  364. package/lib/mjs/components/editgrid/editForm/EditGrid.edit.templates.js +16 -16
  365. package/lib/mjs/components/editgrid/editForm/EditGrid.edit.validation.js +3 -3
  366. package/lib/mjs/components/email/Email.js +4 -4
  367. package/lib/mjs/components/email/editForm/Email.edit.display.js +3 -3
  368. package/lib/mjs/components/email/editForm/Email.edit.validation.js +6 -6
  369. package/lib/mjs/components/fieldset/Fieldset.form.js +1 -1
  370. package/lib/mjs/components/fieldset/Fieldset.js +2 -2
  371. package/lib/mjs/components/fieldset/editForm/Fieldset.edit.display.js +8 -8
  372. package/lib/mjs/components/file/File.form.js +4 -4
  373. package/lib/mjs/components/file/File.js +131 -84
  374. package/lib/mjs/components/file/editForm/File.edit.display.js +9 -5
  375. package/lib/mjs/components/file/editForm/File.edit.file.d.ts +37 -16
  376. package/lib/mjs/components/file/editForm/File.edit.file.js +169 -72
  377. package/lib/mjs/components/file/editForm/File.edit.validation.js +2 -2
  378. package/lib/mjs/components/form/Form.form.js +3 -3
  379. package/lib/mjs/components/form/Form.js +67 -51
  380. package/lib/mjs/components/form/editForm/Form.edit.data.js +1 -3
  381. package/lib/mjs/components/form/editForm/Form.edit.display.js +6 -7
  382. package/lib/mjs/components/form/editForm/Form.edit.form.js +10 -8
  383. package/lib/mjs/components/hidden/Hidden.form.js +4 -4
  384. package/lib/mjs/components/hidden/Hidden.js +2 -2
  385. package/lib/mjs/components/hidden/editForm/Hidden.edit.data.js +3 -3
  386. package/lib/mjs/components/hidden/editForm/Hidden.edit.display.js +10 -10
  387. package/lib/mjs/components/html/HTML.js +23 -17
  388. package/lib/mjs/components/html/editForm/HTML.edit.display.js +17 -17
  389. package/lib/mjs/components/html/editForm/HTML.edit.logic.js +2 -2
  390. package/lib/mjs/components/number/Number.form.js +3 -3
  391. package/lib/mjs/components/number/Number.js +28 -12
  392. package/lib/mjs/components/number/editForm/Number.edit.data.js +3 -3
  393. package/lib/mjs/components/number/editForm/Number.edit.display.js +4 -4
  394. package/lib/mjs/components/number/editForm/Number.edit.validation.js +9 -9
  395. package/lib/mjs/components/panel/Panel.form.js +1 -1
  396. package/lib/mjs/components/panel/Panel.js +2 -2
  397. package/lib/mjs/components/panel/editForm/Panel.edit.conditional.js +6 -8
  398. package/lib/mjs/components/panel/editForm/Panel.edit.display.js +55 -29
  399. package/lib/mjs/components/password/Password.form.js +3 -3
  400. package/lib/mjs/components/password/Password.js +5 -2
  401. package/lib/mjs/components/password/editForm/Password.edit.data.js +11 -11
  402. package/lib/mjs/components/password/editForm/Password.edit.display.js +3 -3
  403. package/lib/mjs/components/password/editForm/Password.edit.validation.js +3 -3
  404. package/lib/mjs/components/phonenumber/PhoneNumber.form.js +8 -8
  405. package/lib/mjs/components/phonenumber/PhoneNumber.js +3 -3
  406. package/lib/mjs/components/phonenumber/editForm/PhoneNumber.edit.validation.js +6 -6
  407. package/lib/mjs/components/radio/Radio.form.js +3 -3
  408. package/lib/mjs/components/radio/Radio.js +56 -27
  409. package/lib/mjs/components/radio/editForm/Radio.edit.data.js +23 -9
  410. package/lib/mjs/components/radio/editForm/Radio.edit.display.js +6 -6
  411. package/lib/mjs/components/radio/editForm/Radio.edit.validation.js +2 -2
  412. package/lib/mjs/components/recaptcha/ReCaptcha.form.js +5 -5
  413. package/lib/mjs/components/recaptcha/ReCaptcha.js +7 -5
  414. package/lib/mjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +24 -24
  415. package/lib/mjs/components/select/Select.form.js +3 -3
  416. package/lib/mjs/components/select/Select.js +240 -134
  417. package/lib/mjs/components/select/editForm/Select.edit.data.d.ts +1 -1
  418. package/lib/mjs/components/select/editForm/Select.edit.data.js +191 -57
  419. package/lib/mjs/components/select/editForm/Select.edit.display.js +2 -2
  420. package/lib/mjs/components/select/editForm/Select.edit.validation.js +4 -4
  421. package/lib/mjs/components/selectboxes/SelectBoxes.form.js +3 -3
  422. package/lib/mjs/components/selectboxes/SelectBoxes.js +32 -16
  423. package/lib/mjs/components/selectboxes/editForm/SelectBoxes.edit.validation.js +5 -5
  424. package/lib/mjs/components/signature/Signature.form.js +3 -3
  425. package/lib/mjs/components/signature/Signature.js +25 -15
  426. package/lib/mjs/components/signature/editForm/Signature.edit.display.js +19 -10
  427. package/lib/mjs/components/survey/Survey.form.js +3 -3
  428. package/lib/mjs/components/survey/Survey.js +30 -17
  429. package/lib/mjs/components/survey/editForm/Survey.edit.data.js +23 -11
  430. package/lib/mjs/components/survey/editForm/Survey.edit.display.js +1 -1
  431. package/lib/mjs/components/survey/editForm/Survey.edit.validation.js +1 -1
  432. package/lib/mjs/components/table/Table.form.js +1 -1
  433. package/lib/mjs/components/table/Table.js +7 -5
  434. package/lib/mjs/components/table/editForm/Table.edit.display.js +22 -22
  435. package/lib/mjs/components/tabs/Tabs.form.js +1 -1
  436. package/lib/mjs/components/tabs/Tabs.js +26 -8
  437. package/lib/mjs/components/tabs/editForm/Tabs.edit.display.js +21 -17
  438. package/lib/mjs/components/tags/Tags.form.js +1 -1
  439. package/lib/mjs/components/tags/Tags.js +28 -12
  440. package/lib/mjs/components/tags/editForm/Tags.edit.data.js +7 -7
  441. package/lib/mjs/components/textarea/TextArea.form.js +2 -2
  442. package/lib/mjs/components/textarea/TextArea.js +75 -51
  443. package/lib/mjs/components/textarea/editForm/TextArea.edit.display.js +96 -72
  444. package/lib/mjs/components/textarea/editForm/TextArea.edit.validation.js +3 -3
  445. package/lib/mjs/components/textfield/TextField.form.js +3 -3
  446. package/lib/mjs/components/textfield/TextField.js +34 -23
  447. package/lib/mjs/components/textfield/editForm/TextField.edit.data.js +15 -13
  448. package/lib/mjs/components/textfield/editForm/TextField.edit.display.js +31 -21
  449. package/lib/mjs/components/textfield/editForm/TextField.edit.validation.js +6 -6
  450. package/lib/mjs/components/time/Time.js +17 -10
  451. package/lib/mjs/components/time/editForm/Time.edit.display.js +2 -2
  452. package/lib/mjs/components/unknown/Unknown.form.js +5 -5
  453. package/lib/mjs/components/unknown/Unknown.js +2 -2
  454. package/lib/mjs/components/unknown/editForm/Unknown.edit.display.js +3 -3
  455. package/lib/mjs/components/url/Url.form.js +3 -3
  456. package/lib/mjs/components/url/Url.js +2 -2
  457. package/lib/mjs/components/url/editForm/Url.edit.display.js +3 -3
  458. package/lib/mjs/components/url/editForm/Url.edit.validation.js +1 -1
  459. package/lib/mjs/components/well/Well.form.js +1 -1
  460. package/lib/mjs/components/well/Well.js +2 -2
  461. package/lib/mjs/components/well/editForm/Well.edit.display.js +10 -10
  462. package/lib/mjs/formio.form.d.ts +2 -1
  463. package/lib/mjs/formio.form.js +10 -8
  464. package/lib/mjs/i18n.d.ts +4 -0
  465. package/lib/mjs/i18n.js +7 -3
  466. package/lib/mjs/package.json +1 -1
  467. package/lib/mjs/providers/address/AddressProvider.js +8 -5
  468. package/lib/mjs/providers/address/GoogleAddressProvider.d.ts +3 -3
  469. package/lib/mjs/providers/address/GoogleAddressProvider.js +24 -13
  470. package/lib/mjs/providers/processor/fileProcessor.js +3 -1
  471. package/lib/mjs/providers/storage/azure.js +5 -2
  472. package/lib/mjs/providers/storage/dropbox.js +4 -5
  473. package/lib/mjs/providers/storage/googleDrive.js +3 -4
  474. package/lib/mjs/providers/storage/index.js +1 -1
  475. package/lib/mjs/providers/storage/indexeddb.js +16 -6
  476. package/lib/mjs/providers/storage/s3.js +19 -8
  477. package/lib/mjs/providers/storage/uploadAdapter.js +17 -11
  478. package/lib/mjs/providers/storage/url.js +13 -11
  479. package/lib/mjs/providers/storage/xhr.js +17 -9
  480. package/lib/mjs/templates/index.js +1 -1
  481. package/lib/mjs/translations/de.d.ts +80 -0
  482. package/lib/mjs/translations/de.js +79 -0
  483. package/lib/mjs/translations/en.d.ts +0 -2
  484. package/lib/mjs/translations/en.js +7 -9
  485. package/lib/mjs/utils/ChoicesWrapper.js +2 -2
  486. package/lib/mjs/utils/builder.js +31 -7
  487. package/lib/mjs/utils/calendarUtils.js +7 -5
  488. package/lib/mjs/utils/conditionOperators/ConditionOperator.js +1 -1
  489. package/lib/mjs/utils/conditionOperators/DateGreaterThan.js +16 -5
  490. package/lib/mjs/utils/conditionOperators/IsEmptyValue.js +3 -1
  491. package/lib/mjs/utils/conditionOperators/IsEqualTo.js +10 -6
  492. package/lib/mjs/utils/conditionOperators/index.js +1 -1
  493. package/lib/mjs/utils/formUtils.js +2 -2
  494. package/lib/mjs/utils/i18n.js +7 -1
  495. package/lib/mjs/utils/index.d.ts +2 -1
  496. package/lib/mjs/utils/index.js +3 -3
  497. package/lib/mjs/utils/utils.d.ts +10 -1
  498. package/lib/mjs/utils/utils.js +178 -91
  499. package/lib/mjs/widgets/CalendarWidget.js +67 -50
  500. package/lib/mjs/widgets/InputWidget.js +6 -4
  501. package/lib/mjs/widgets/index.js +1 -1
  502. package/package.json +3 -3
  503. package/lib/cjs/pdf.image.d.ts +0 -2
  504. package/lib/cjs/pdf.image.js +0 -94
  505. package/lib/cjs/utils/jsonlogic/operators.d.ts +0 -1
  506. package/lib/cjs/utils/jsonlogic/operators.js +0 -265
  507. package/lib/mjs/pdf.image.d.ts +0 -2
  508. package/lib/mjs/pdf.image.js +0 -94
  509. package/lib/mjs/utils/jsonlogic/operators.d.ts +0 -1
  510. package/lib/mjs/utils/jsonlogic/operators.js +0 -262
@@ -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';
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) {
@@ -12,11 +12,13 @@ export default class SelectComponent extends ListComponent {
12
12
  key: 'select',
13
13
  idPath: 'id',
14
14
  data: {
15
- values: [{ label: '', value: '' }],
15
+ values: [
16
+ { label: '', value: '' },
17
+ ],
16
18
  json: '',
17
19
  url: '',
18
20
  resource: '',
19
- custom: ''
21
+ custom: '',
20
22
  },
21
23
  clearOnRefresh: false,
22
24
  limit: 100,
@@ -37,7 +39,7 @@ export default class SelectComponent extends ListComponent {
37
39
  threshold: 0.3,
38
40
  },
39
41
  indexeddb: {
40
- filter: {}
42
+ filter: {},
41
43
  },
42
44
  customOptions: {},
43
45
  useExactSearch: false,
@@ -50,7 +52,7 @@ export default class SelectComponent extends ListComponent {
50
52
  icon: 'th-list',
51
53
  weight: 70,
52
54
  documentation: '/userguide/form-building/form-components#select',
53
- schema: SelectComponent.schema()
55
+ schema: SelectComponent.schema(),
54
56
  };
55
57
  }
56
58
  static get serverConditionSettings() {
@@ -76,7 +78,12 @@ export default class SelectComponent extends ListComponent {
76
78
  return valueComp;
77
79
  },
78
80
  dataTypeOperators: {
79
- number: ['lessThan', 'greaterThan', 'lessThanOrEqual', 'greaterThanOrEqual'],
81
+ number: [
82
+ 'lessThan',
83
+ 'greaterThan',
84
+ 'lessThanOrEqual',
85
+ 'greaterThanOrEqual',
86
+ ],
80
87
  },
81
88
  dataTypeValueComponents: {
82
89
  number: {
@@ -96,15 +103,28 @@ export default class SelectComponent extends ListComponent {
96
103
  return types;
97
104
  }
98
105
  if (reference) {
99
- return [object];
106
+ return [
107
+ object,
108
+ ];
100
109
  }
101
110
  if (dataType === 'object') {
102
- return [object, array];
111
+ return [
112
+ object,
113
+ array,
114
+ ];
103
115
  }
104
116
  if (componentValueTypes[dataType]) {
105
- return [componentValueTypes[dataType]];
106
- }
107
- return [boolean, string, number, object, array];
117
+ return [
118
+ componentValueTypes[dataType],
119
+ ];
120
+ }
121
+ return [
122
+ boolean,
123
+ string,
124
+ number,
125
+ object,
126
+ array,
127
+ ];
108
128
  }
109
129
  init() {
110
130
  super.init();
@@ -226,10 +246,10 @@ export default class SelectComponent extends ListComponent {
226
246
  return this.component.dataSrc === 'resource' && this.valueProperty === 'data';
227
247
  }
228
248
  selectValueAndLabel(data) {
229
- const value = this.getOptionValue((this.isEntireObjectDisplay() && !this.itemValue(data)) ? data : this.itemValue(data));
249
+ const value = this.getOptionValue(this.isEntireObjectDisplay() && !this.itemValue(data) ? data : this.itemValue(data));
230
250
  return {
231
251
  value,
232
- label: this.itemTemplate((this.isEntireObjectDisplay() && !_.isObject(data.data)) ? { data: data } : data, value)
252
+ label: this.itemTemplate(this.isEntireObjectDisplay() && !_.isObject(data.data) ? { data: data } : data, value),
233
253
  };
234
254
  }
235
255
  itemTemplate(data, value) {
@@ -243,13 +263,13 @@ export default class SelectComponent extends ListComponent {
243
263
  // Perform a fast interpretation if we should not use the template.
244
264
  if (data && !this.component.template) {
245
265
  const itemLabel = data.label || data;
246
- const value = (typeof itemLabel === 'string') ? this.t(itemLabel, { _userInput: true }) : itemLabel;
266
+ const value = typeof itemLabel === 'string' ? this.t(itemLabel, { _userInput: true }) : itemLabel;
247
267
  return this.sanitize(value, this.shouldSanitizeValue);
248
268
  }
249
269
  // Inside DataTable component won't have dataValue set
250
270
  const shouldUseSelectData = (this.component.multiple && _.isArray(this.dataValue)
251
271
  ? this.dataValue.find((val) => this.normalizeSingleValue(value) === val)
252
- : (this.dataValue === this.normalizeSingleValue(value))) || this.inDataTable;
272
+ : this.dataValue === this.normalizeSingleValue(value)) || this.inDataTable;
253
273
  if (shouldUseSelectData) {
254
274
  const selectData = this.selectData;
255
275
  if (selectData) {
@@ -281,9 +301,10 @@ export default class SelectComponent extends ListComponent {
281
301
  if (data.data) {
282
302
  // checking additional fields in the template for the selected Entire Object option
283
303
  const hasNestedFields = /item\.data\.\w*/g.test(this.component.template);
284
- data.data = this.isEntireObjectDisplay() && _.isObject(data.data) && !hasNestedFields
285
- ? JSON.stringify(data.data)
286
- : data.data;
304
+ data.data =
305
+ this.isEntireObjectDisplay() && _.isObject(data.data) && !hasNestedFields
306
+ ? JSON.stringify(data.data)
307
+ : data.data;
287
308
  }
288
309
  return super.itemTemplate(data, value);
289
310
  }
@@ -303,7 +324,7 @@ export default class SelectComponent extends ListComponent {
303
324
  const option = {
304
325
  value: this.getOptionValue(value),
305
326
  label,
306
- ...idPath
327
+ ...idPath,
307
328
  };
308
329
  const skipOption = this.component.uniqueOptions
309
330
  ? !!this.selectOptions.find((selectOption) => _.isEqual(selectOption.value, option.value))
@@ -314,15 +335,16 @@ export default class SelectComponent extends ListComponent {
314
335
  if (value) {
315
336
  this.selectOptions.push(option);
316
337
  }
317
- if (this.refs.selectContainer && (this.component.widget === 'html5')) {
338
+ if (this.refs.selectContainer && this.component.widget === 'html5') {
318
339
  // Replace an empty Object value to an empty String.
319
340
  if (option.value && _.isObject(option.value) && _.isEmpty(option.value)) {
320
341
  option.value = '';
321
342
  }
322
343
  // Add element to option so we can reference it later.
323
344
  const div = document.createElement('div');
345
+ const isInDataValue = this.component.multiple && Array.isArray(this.dataValue) && this.dataValue.includes(value);
324
346
  div.innerHTML = this.sanitize(this.renderTemplate('selectOption', {
325
- selected: _.isEqual(this.getOptionValue(this.dataValue), option.value),
347
+ selected: _.isEqual(this.getOptionValue(this.dataValue), option.value) || isInDataValue,
326
348
  option,
327
349
  attrs,
328
350
  id,
@@ -337,14 +359,21 @@ export default class SelectComponent extends ListComponent {
337
359
  let added = false;
338
360
  let data = this.dataValue;
339
361
  // preset submission value with value property before request.
340
- if (this.options.pdf && !items.length && this.component.dataSrc === 'url' && this.valueProperty) {
362
+ if (this.options.pdf &&
363
+ !items.length &&
364
+ this.component.dataSrc === 'url' &&
365
+ this.valueProperty) {
341
366
  data = Array.isArray(data)
342
- ? data.map(item => _.set({}, this.valueProperty, item))
367
+ ? data.map((item) => _.set({}, this.valueProperty, item))
343
368
  : _.set({}, this.valueProperty, data);
344
369
  }
345
370
  if (!this.selectOptions.length) {
346
371
  // Add the currently selected choices if they don't already exist.
347
- const currentChoices = Array.isArray(data) && this.component.multiple ? data : [data];
372
+ const currentChoices = Array.isArray(data) && this.component.multiple
373
+ ? data
374
+ : [
375
+ data,
376
+ ];
348
377
  added = this.addCurrentChoices(currentChoices, items);
349
378
  if (!added && !this.component.multiple) {
350
379
  this.addPlaceholder();
@@ -371,8 +400,12 @@ export default class SelectComponent extends ListComponent {
371
400
  }
372
401
  return false;
373
402
  }
374
- /* eslint-disable max-statements */
375
403
  setItems(items, fromSearch) {
404
+ if (this.visible && this.isHtmlRenderMode() && !_.isEqual(items, this.selectItems)) {
405
+ this.itemsLoaded.then(() => {
406
+ this.redraw();
407
+ });
408
+ }
376
409
  this.selectItems = items;
377
410
  // If the items is a string, then parse as JSON.
378
411
  if (typeof items == 'string') {
@@ -404,9 +437,9 @@ export default class SelectComponent extends ListComponent {
404
437
  if (this.itemsFromUrl) {
405
438
  areItemsEqual = this.isSelectURL ? _.isEqual(items, this.downloadedResources) : false;
406
439
  const areItemsEnded = this.component.limit > items.length;
407
- const areItemsDownloaded = areItemsEqual
408
- && this.downloadedResources
409
- && this.downloadedResources.length === items.length;
440
+ const areItemsDownloaded = areItemsEqual &&
441
+ this.downloadedResources &&
442
+ this.downloadedResources.length === items.length;
410
443
  if (areItemsEnded) {
411
444
  this.disableInfiniteScroll();
412
445
  }
@@ -423,7 +456,8 @@ export default class SelectComponent extends ListComponent {
423
456
  ? this.downloadedResources.concat(items)
424
457
  : items;
425
458
  }
426
- this.downloadedResources.serverCount = items.serverCount || this.downloadedResources.serverCount;
459
+ this.downloadedResources.serverCount =
460
+ items.serverCount || this.downloadedResources.serverCount;
427
461
  }
428
462
  else {
429
463
  this.downloadedResources = items || [];
@@ -431,10 +465,11 @@ export default class SelectComponent extends ListComponent {
431
465
  // If there is new select option with same id as already selected, set the new one
432
466
  if (!_.isEmpty(this.dataValue) && this.component.idPath) {
433
467
  const selectedOptionId = _.get(this.dataValue, this.component.idPath, null);
434
- const newOptionWithSameId = !_.isNil(selectedOptionId) && items.find(item => {
435
- const itemId = _.get(item, this.component.idPath);
436
- return itemId === selectedOptionId;
437
- });
468
+ const newOptionWithSameId = !_.isNil(selectedOptionId) &&
469
+ items.find((item) => {
470
+ const itemId = _.get(item, this.component.idPath);
471
+ return itemId === selectedOptionId;
472
+ });
438
473
  if (newOptionWithSameId) {
439
474
  this.setValue(newOptionWithSameId);
440
475
  }
@@ -450,7 +485,10 @@ export default class SelectComponent extends ListComponent {
450
485
  // Iterate through each of the items.
451
486
  _.each(items, (item, index) => {
452
487
  // preventing references of the components inside the form to the parent form when building forms
453
- if (this.root && this.root.options.editForm && this.root.options.editForm._id && this.root.options.editForm._id === item._id)
488
+ if (this.root &&
489
+ this.root.options.editForm &&
490
+ this.root.options.editForm._id &&
491
+ this.root.options.editForm._id === item._id)
454
492
  return;
455
493
  const itemValueAndLabel = this.selectValueAndLabel(item);
456
494
  this.addOption(itemValueAndLabel.value, itemValueAndLabel.label, {}, _.get(item, this.component.idPath, String(index)));
@@ -470,7 +508,7 @@ export default class SelectComponent extends ListComponent {
470
508
  // If a value is provided, then select it.
471
509
  if (!this.isEmpty() || this.isRemoveButtonPressed) {
472
510
  this.setValue(this.dataValue, {
473
- noUpdateEvent: true
511
+ noUpdateEvent: true,
474
512
  });
475
513
  }
476
514
  else if (this.shouldAddDefaultValue && !this.options.readOnly) {
@@ -496,17 +534,17 @@ export default class SelectComponent extends ListComponent {
496
534
  return super.itemValueForHTMLMode(value);
497
535
  }
498
536
  if (Array.isArray(value)) {
499
- const values = value.map(item => Array.isArray(item)
537
+ const values = value.map((item) => Array.isArray(item)
500
538
  ? this.itemValueForHTMLMode(item)
501
539
  : this.getSingleItemValueForHTMLMode(item));
502
540
  return values.join(', ');
503
541
  }
504
542
  return this.getSingleItemValueForHTMLMode(value);
505
543
  }
506
- /* eslint-enable max-statements */
507
544
  get defaultValue() {
508
545
  let defaultValue = super.defaultValue;
509
- if (!defaultValue && (this.component.defaultValue === false || this.component.defaultValue === 0)) {
546
+ if (!defaultValue &&
547
+ (this.component.defaultValue === false || this.component.defaultValue === 0)) {
510
548
  defaultValue = this.component.defaultValue;
511
549
  }
512
550
  return defaultValue;
@@ -525,9 +563,7 @@ export default class SelectComponent extends ListComponent {
525
563
  }
526
564
  // See if they have not met the minimum search requirements.
527
565
  const minSearch = parseInt(this.component.minSearch, 10);
528
- if (this.component.searchField &&
529
- (minSearch > 0) &&
530
- (!search || (search.length < minSearch))) {
566
+ if (this.component.searchField && minSearch > 0 && (!search || search.length < minSearch)) {
531
567
  // Set empty items.
532
568
  return this.setItems([]);
533
569
  }
@@ -538,17 +574,19 @@ export default class SelectComponent extends ListComponent {
538
574
  }
539
575
  const limit = this.component.limit || 100;
540
576
  const skip = this.isScrollLoading ? this.selectOptions.length : 0;
541
- const query = this.component.disableLimit ? {} : {
542
- limit,
543
- skip,
544
- };
577
+ const query = this.component.disableLimit
578
+ ? {}
579
+ : {
580
+ limit,
581
+ skip,
582
+ };
545
583
  // Allow for url interpolation.
546
584
  url = this.sanitize(this.interpolate(url, {
547
585
  formioBase: Formio.getBaseUrl(),
548
586
  search,
549
587
  limit,
550
588
  skip,
551
- page: Math.abs(Math.floor(skip / limit))
589
+ page: Math.abs(Math.floor(skip / limit)),
552
590
  }), this.shouldSanitizeValue);
553
591
  // Add search capability.
554
592
  if (this.component.searchField && search) {
@@ -571,7 +609,9 @@ export default class SelectComponent extends ListComponent {
571
609
  }
572
610
  if (!_.isEmpty(query)) {
573
611
  // Add the query string.
574
- url += (!url.includes('?') ? '?' : '&') + Formio.serialize(query, (item) => this.interpolate(item));
612
+ url +=
613
+ (!url.includes('?') ? '?' : '&') +
614
+ Formio.serialize(query, (item) => this.interpolate(item));
575
615
  }
576
616
  // Add filter capability
577
617
  if (this.component.filter) {
@@ -632,7 +672,7 @@ export default class SelectComponent extends ListComponent {
632
672
  }
633
673
  getCustomItems() {
634
674
  const customItems = this.evaluate(this.component.data.custom, {
635
- values: []
675
+ values: [],
636
676
  }, 'values');
637
677
  this.asyncValues = isPromise(customItems);
638
678
  return customItems;
@@ -651,11 +691,11 @@ export default class SelectComponent extends ListComponent {
651
691
  }
652
692
  this.loading = true;
653
693
  this.getCustomItems()
654
- .then(items => {
694
+ .then((items) => {
655
695
  this.loading = false;
656
696
  this.setItems(items || []);
657
697
  })
658
- .catch(err => {
698
+ .catch((err) => {
659
699
  this.handleLoadingError(err);
660
700
  });
661
701
  }
@@ -667,13 +707,13 @@ export default class SelectComponent extends ListComponent {
667
707
  return super.isEmpty(value) || value === undefined;
668
708
  }
669
709
  refresh(value, { instance }) {
670
- if (this.component.clearOnRefresh && (instance && !instance.pristine)) {
710
+ if (this.component.clearOnRefresh && instance && !instance.pristine) {
671
711
  this.setValue(this.emptyValue);
672
712
  }
673
713
  this.updateItems(null, true);
674
714
  }
675
715
  get additionalResourcesAvailable() {
676
- return _.isNil(this.serverCount) || (this.serverCount > this.downloadedResources.length);
716
+ return _.isNil(this.serverCount) || this.serverCount > this.downloadedResources.length;
677
717
  }
678
718
  get serverCount() {
679
719
  if (this.isFromSearch) {
@@ -725,18 +765,22 @@ export default class SelectComponent extends ListComponent {
725
765
  setLoadingItem(addToCurrentList = false) {
726
766
  if (this.choices) {
727
767
  if (addToCurrentList) {
728
- this.choices.setChoices([{
768
+ this.choices.setChoices([
769
+ {
729
770
  value: `${this.id}-loading`,
730
771
  label: 'Loading...',
731
772
  disabled: true,
732
- }], 'value', 'label');
773
+ },
774
+ ], 'value', 'label');
733
775
  }
734
776
  else {
735
- this.choices.setChoices([{
777
+ this.choices.setChoices([
778
+ {
736
779
  value: '',
737
780
  label: `<i class="${this.iconClass('refresh')}" style="font-size:1.3em;"></i>`,
738
781
  disabled: true,
739
- }], 'value', 'label', true);
782
+ },
783
+ ], 'value', 'label', true);
740
784
  }
741
785
  }
742
786
  else if (this.component.dataSrc === 'url' || this.component.dataSrc === 'resource') {
@@ -758,13 +802,15 @@ export default class SelectComponent extends ListComponent {
758
802
  }
759
803
  wrapElement(element) {
760
804
  return this.component.addResource && !this.options.readOnly
761
- ? (this.renderTemplate('resourceAdd', {
762
- element
763
- }))
805
+ ? this.renderTemplate('resourceAdd', {
806
+ element,
807
+ })
764
808
  : element;
765
809
  }
766
810
  choicesOptions() {
767
- const useSearch = this.component.hasOwnProperty('searchEnabled') ? this.component.searchEnabled : true;
811
+ const useSearch = this.component.hasOwnProperty('searchEnabled')
812
+ ? this.component.searchEnabled
813
+ : true;
768
814
  const placeholderValue = this.t(this.component.placeholder, { _userInput: true });
769
815
  let customOptions = this.component.customOptions || {};
770
816
  if (typeof customOptions == 'string') {
@@ -781,10 +827,16 @@ export default class SelectComponent extends ListComponent {
781
827
  distance: 1000,
782
828
  };
783
829
  return {
784
- removeItemButton: this.component.disabled ? false : _.get(this.component, 'removeItemButton', true),
830
+ removeItemButton: this.component.disabled
831
+ ? false
832
+ : _.get(this.component, 'removeItemButton', true),
785
833
  itemSelectText: '',
786
834
  classNames: {
787
- containerOuter: ['choices', 'form-group', 'formio-choices'],
835
+ containerOuter: [
836
+ 'choices',
837
+ 'form-group',
838
+ 'formio-choices',
839
+ ],
788
840
  containerInner: this.transform('class', 'form-control ui fluid selection dropdown').split(' '),
789
841
  },
790
842
  addItemText: false,
@@ -795,21 +847,23 @@ export default class SelectComponent extends ListComponent {
795
847
  noChoicesText: this.t('No choices to choose from'),
796
848
  searchPlaceholderValue: this.t('Type to search'),
797
849
  shouldSort: false,
798
- position: (this.component.dropdown || 'auto'),
850
+ position: this.component.dropdown || 'auto',
799
851
  searchEnabled: useSearch,
800
852
  searchChoices: !this.component.searchField,
801
- searchFields: _.get(this, 'component.searchFields', ['label']),
853
+ searchFields: _.get(this, 'component.searchFields', [
854
+ 'label',
855
+ ]),
802
856
  shadowRoot: this.root ? this.root.shadowRoot : null,
803
857
  fuseOptions: this.component.useExactSearch
804
858
  ? {
805
859
  tokenize: true,
806
860
  matchAllTokens: true,
807
- ...commonFuseOptions
861
+ ...commonFuseOptions,
808
862
  }
809
863
  : Object.assign({}, _.get(this, 'component.fuseOptions', {}), {
810
864
  include: 'score',
811
865
  threshold: _.get(this, 'component.selectThreshold', 0.3),
812
- ...commonFuseOptions
866
+ ...commonFuseOptions,
813
867
  }),
814
868
  valueComparer: _.isEqual,
815
869
  resetScrollPosition: false,
@@ -817,13 +871,12 @@ export default class SelectComponent extends ListComponent {
817
871
  ...customOptions,
818
872
  };
819
873
  }
820
- /* eslint-disable max-statements */
821
874
  attach(element) {
822
875
  const superAttach = super.attach(element);
823
876
  this.loadRefs(element, {
824
877
  selectContainer: 'single',
825
878
  addResource: 'single',
826
- autocompleteInput: 'single'
879
+ autocompleteInput: 'single',
827
880
  });
828
881
  //enable autocomplete for select
829
882
  const autocompleteInput = this.refs.autocompleteInput;
@@ -836,9 +889,18 @@ export default class SelectComponent extends ListComponent {
836
889
  if (!input) {
837
890
  return;
838
891
  }
839
- this.addEventListener(input, this.inputInfo.changeEvent, () => this.updateValue(null, {
840
- modified: true
841
- }));
892
+ this.addEventListener(input, this.inputInfo.changeEvent, (event) => {
893
+ let value = null;
894
+ if (this.component.widget === "html5") {
895
+ value = event.target.value;
896
+ if (this.component.multiple) {
897
+ value = Array.from(event.target.selectedOptions).map(opt => opt.value);
898
+ }
899
+ }
900
+ this.updateValue(value, {
901
+ modified: true
902
+ });
903
+ });
842
904
  this.attachRefreshOnBlur();
843
905
  if (this.component.widget === 'html5') {
844
906
  this.addFocusBlurEvents(input);
@@ -852,7 +914,10 @@ export default class SelectComponent extends ListComponent {
852
914
  }
853
915
  this.addEventListener(input, 'keydown', (event) => {
854
916
  const { key } = event;
855
- if (['Backspace', 'Delete'].includes(key)) {
917
+ if ([
918
+ 'Backspace',
919
+ 'Delete',
920
+ ].includes(key)) {
856
921
  this.setValue(this.emptyValue);
857
922
  }
858
923
  });
@@ -919,8 +984,10 @@ export default class SelectComponent extends ListComponent {
919
984
  this.isFromSearch = false;
920
985
  });
921
986
  // avoid spamming the resource/url endpoint when we have server side filtering enabled.
922
- const debounceTimeout = this.component.searchField && (this.isSelectResource || this.isSelectURL) ?
923
- (this.component.searchDebounce === 0 ? 0 : this.component.searchDebounce || this.defaultSchema.searchDebounce) * 1000
987
+ const debounceTimeout = this.component.searchField && (this.isSelectResource || this.isSelectURL)
988
+ ? (this.component.searchDebounce === 0
989
+ ? 0
990
+ : this.component.searchDebounce || this.defaultSchema.searchDebounce) * 1000
924
991
  : 0;
925
992
  const updateComponent = (evt) => {
926
993
  this.triggerUpdate(evt.detail.value);
@@ -947,8 +1014,9 @@ export default class SelectComponent extends ListComponent {
947
1014
  });
948
1015
  }
949
1016
  // Add value options.
1017
+ const value = this.undoValueTyping(this.dataValue);
950
1018
  this.addValueOptions();
951
- this.setChoicesValue(this.dataValue);
1019
+ this.setChoicesValue(value);
952
1020
  if (this.isSelectResource && this.refs.addResource) {
953
1021
  this.addEventListener(this.refs.addResource, 'click', (event) => {
954
1022
  event.preventDefault();
@@ -956,13 +1024,15 @@ export default class SelectComponent extends ListComponent {
956
1024
  const dialog = this.createModal(formioForm);
957
1025
  const projectUrl = _.get(this.root, 'formio.projectUrl', Formio.getProjectUrl());
958
1026
  const formUrl = `${projectUrl}/form/${this.component.data.resource}`;
959
- new Form(formioForm, formUrl, {}).ready
960
- .then((form) => {
1027
+ new Form(formioForm, formUrl, {}).ready.then((form) => {
961
1028
  form.on('submit', (submission) => {
962
1029
  // If valueProperty is set, replace the submission with the corresponding value
963
1030
  let value = this.valueProperty ? _.get(submission, this.valueProperty) : submission;
964
1031
  if (this.component.multiple) {
965
- value = [...this.dataValue, value];
1032
+ value = [
1033
+ ...this.dataValue,
1034
+ value,
1035
+ ];
966
1036
  }
967
1037
  this.setValue(value);
968
1038
  this.triggerUpdate();
@@ -1006,7 +1076,9 @@ export default class SelectComponent extends ListComponent {
1006
1076
  }
1007
1077
  }
1008
1078
  positionDropdown(scroll) {
1009
- if (!this.shouldPositionDropdown || !this.choices || (!this.choices.dropdown?.isActive && scroll)) {
1079
+ if (!this.shouldPositionDropdown ||
1080
+ !this.choices ||
1081
+ (!this.choices.dropdown?.isActive && scroll)) {
1010
1082
  return;
1011
1083
  }
1012
1084
  this.setDropdownPosition();
@@ -1027,11 +1099,12 @@ export default class SelectComponent extends ListComponent {
1027
1099
  attachRefreshOnBlur() {
1028
1100
  if (this.component.refreshOnBlur) {
1029
1101
  this.on('blur', (instance) => {
1030
- this.checkRefreshOn([{ instance, value: instance.dataValue }], { fromBlur: true });
1102
+ this.checkRefreshOn([
1103
+ { instance, value: instance.dataValue },
1104
+ ], { fromBlur: true });
1031
1105
  });
1032
1106
  }
1033
1107
  }
1034
- /* eslint-enable max-statements */
1035
1108
  update() {
1036
1109
  if (this.component.dataSrc === 'custom') {
1037
1110
  this.updateCustomItems();
@@ -1060,7 +1133,7 @@ export default class SelectComponent extends ListComponent {
1060
1133
  }
1061
1134
  set visible(value) {
1062
1135
  // If we go from hidden to visible, trigger a refresh.
1063
- if (value && (!this._visible !== !value)) {
1136
+ if (value && !this._visible !== !value) {
1064
1137
  this.triggerUpdate();
1065
1138
  }
1066
1139
  super.visible = value;
@@ -1087,7 +1160,7 @@ export default class SelectComponent extends ListComponent {
1087
1160
  const isSelectOptions = items === this.selectOptions;
1088
1161
  if (items && items.length) {
1089
1162
  _.each(items, (choice) => {
1090
- if (choice._id && value._id && (choice._id === value._id)) {
1163
+ if (choice._id && value._id && choice._id === value._id) {
1091
1164
  found = true;
1092
1165
  return false;
1093
1166
  }
@@ -1107,22 +1180,23 @@ export default class SelectComponent extends ListComponent {
1107
1180
  if (this.choices) {
1108
1181
  this.choices.setChoices(notFoundValuesToAdd, 'value', 'label');
1109
1182
  }
1110
- notFoundValuesToAdd.map(notFoundValue => {
1183
+ notFoundValuesToAdd.map((notFoundValue) => {
1111
1184
  this.addOption(notFoundValue.value, notFoundValue.label);
1112
1185
  });
1113
1186
  }
1114
1187
  return added;
1115
1188
  }
1116
1189
  getValueAsString(data, options) {
1117
- return (this.component.multiple && Array.isArray(data))
1190
+ return this.component.multiple && Array.isArray(data)
1118
1191
  ? data.map((v) => this.asString(v, options)).join(', ')
1119
1192
  : this.asString(data, options);
1120
1193
  }
1121
1194
  getValue() {
1122
1195
  // If the widget isn't active.
1123
- if (this.viewOnly || this.loading
1124
- || (!this.component.lazyLoad && !this.selectOptions.length)
1125
- || !this.element) {
1196
+ if (this.viewOnly ||
1197
+ this.loading ||
1198
+ (!this.component.lazyLoad && !this.selectOptions.length) ||
1199
+ !this.element) {
1126
1200
  return this.dataValue;
1127
1201
  }
1128
1202
  let value = this.emptyValue;
@@ -1131,7 +1205,7 @@ export default class SelectComponent extends ListComponent {
1131
1205
  // Make sure we don't get the placeholder
1132
1206
  if (!this.component.multiple &&
1133
1207
  this.component.placeholder &&
1134
- (value === this.t(this.component.placeholder, { _userInput: true }))) {
1208
+ value === this.t(this.component.placeholder, { _userInput: true })) {
1135
1209
  value = this.emptyValue;
1136
1210
  }
1137
1211
  }
@@ -1141,8 +1215,7 @@ export default class SelectComponent extends ListComponent {
1141
1215
  if (value === '') {
1142
1216
  return {};
1143
1217
  }
1144
- const option = this.selectOptions[value] ||
1145
- this.selectOptions.find(option => option.id === value);
1218
+ const option = this.selectOptions[value] || this.selectOptions.find((option) => option.id === value);
1146
1219
  if (option && _.isObject(option.value)) {
1147
1220
  value = option.value;
1148
1221
  }
@@ -1177,16 +1250,18 @@ export default class SelectComponent extends ListComponent {
1177
1250
  number() {
1178
1251
  const numberValue = Number(this.value);
1179
1252
  const isEquivalent = value.toString() === numberValue.toString();
1180
- if (!Number.isNaN(numberValue) && Number.isFinite(numberValue) && value !== '' && isEquivalent) {
1253
+ if (!Number.isNaN(numberValue) &&
1254
+ Number.isFinite(numberValue) &&
1255
+ value !== '' &&
1256
+ isEquivalent) {
1181
1257
  this.value = numberValue;
1182
1258
  }
1183
1259
  return this;
1184
1260
  },
1185
1261
  boolean() {
1186
- if (_.isString(this.value)
1187
- && (this.value.toLowerCase() === 'true'
1188
- || this.value.toLowerCase() === 'false')) {
1189
- this.value = (this.value.toLowerCase() === 'true');
1262
+ if (_.isString(this.value) &&
1263
+ (this.value.toLowerCase() === 'true' || this.value.toLowerCase() === 'false')) {
1264
+ this.value = this.value.toLowerCase() === 'true';
1190
1265
  }
1191
1266
  return this;
1192
1267
  },
@@ -1205,7 +1280,7 @@ export default class SelectComponent extends ListComponent {
1205
1280
  this.value = this.string().number().boolean().value;
1206
1281
  }
1207
1282
  return this;
1208
- }
1283
+ },
1209
1284
  };
1210
1285
  try {
1211
1286
  return normalize[dataType]().value;
@@ -1238,7 +1313,11 @@ export default class SelectComponent extends ListComponent {
1238
1313
  // Check to see if we need to save off the template data into our metadata.
1239
1314
  const templateValue = this.component.reference && value?._id ? value._id.toString() : value;
1240
1315
  const shouldSaveData = (!valueIsObject || this.component.reference) && !this.inDataTable;
1241
- if (!_.isNil(templateValue) && shouldSaveData && this.templateData && this.templateData[templateValue] && this.root?.submission) {
1316
+ if (!_.isNil(templateValue) &&
1317
+ shouldSaveData &&
1318
+ this.templateData &&
1319
+ this.templateData[templateValue] &&
1320
+ this.root?.submission) {
1242
1321
  const submission = this.root.submission;
1243
1322
  if (!submission.metadata) {
1244
1323
  submission.metadata = {};
@@ -1252,7 +1331,9 @@ export default class SelectComponent extends ListComponent {
1252
1331
  const dataValue = this.dataValue;
1253
1332
  if (dataValue && _.isArray(dataValue) && dataValue.length) {
1254
1333
  dataValue.forEach((dataValueItem) => {
1255
- const dataValueItemValue = this.component.reference ? dataValueItem._id.toString() : dataValueItem;
1334
+ const dataValueItemValue = this.component.reference
1335
+ ? dataValueItem._id.toString()
1336
+ : dataValueItem;
1256
1337
  templateData[dataValueItemValue] = this.templateData[dataValueItemValue];
1257
1338
  });
1258
1339
  }
@@ -1272,7 +1353,7 @@ export default class SelectComponent extends ListComponent {
1272
1353
  const changed = super.updateValue(value, flags);
1273
1354
  if (changed || !this.selectMetadata || flags.resetValue) {
1274
1355
  if (this.component.multiple && Array.isArray(this.dataValue)) {
1275
- this.dataValue.forEach(singleValue => this.setMetadata(singleValue, flags));
1356
+ this.dataValue.forEach((singleValue) => this.setMetadata(singleValue, flags));
1276
1357
  }
1277
1358
  else {
1278
1359
  this.setMetadata(this.dataValue, flags);
@@ -1283,7 +1364,7 @@ export default class SelectComponent extends ListComponent {
1283
1364
  undoValueTyping(value) {
1284
1365
  let untypedValue = value;
1285
1366
  if (this.component.multiple && Array.isArray(value)) {
1286
- untypedValue = value.map(v => {
1367
+ untypedValue = value.map((v) => {
1287
1368
  if (typeof v === 'boolean' || typeof v === 'number') {
1288
1369
  return v.toString();
1289
1370
  }
@@ -1300,7 +1381,9 @@ export default class SelectComponent extends ListComponent {
1300
1381
  setValue(value, flags = {}) {
1301
1382
  const previousValue = this.dataValue;
1302
1383
  const changed = this.updateValue(value, flags);
1303
- if (this.component.widget === 'html5' && (_.isEqual(value, previousValue) || _.isEqual(previousValue, {}) && _.isEqual(flags, {})) && !flags.fromSubmission) {
1384
+ if (this.component.widget === 'html5' &&
1385
+ (_.isEqual(value, previousValue) || (_.isEqual(previousValue, {}) && _.isEqual(flags, {}))) &&
1386
+ !flags.fromSubmission) {
1304
1387
  return false;
1305
1388
  }
1306
1389
  value = this.dataValue;
@@ -1324,6 +1407,9 @@ export default class SelectComponent extends ListComponent {
1324
1407
  this.lazyLoadInit = true;
1325
1408
  const searchProperty = this.component.searchField || this.component.valueProperty;
1326
1409
  this.triggerUpdate(_.get(value.data || value, searchProperty, value), true);
1410
+ this.itemsLoaded.then(() => {
1411
+ this.setChoicesValue(value, hasPreviousValue, flags);
1412
+ });
1327
1413
  return changed;
1328
1414
  }
1329
1415
  // Add the value options.
@@ -1334,23 +1420,28 @@ export default class SelectComponent extends ListComponent {
1334
1420
  return changed;
1335
1421
  }
1336
1422
  isInitApiCallNeeded(hasValue) {
1337
- return this.component.lazyLoad &&
1423
+ return (this.component.lazyLoad &&
1338
1424
  !this.lazyLoadInit &&
1339
1425
  !this.active &&
1340
1426
  !this.selectOptions.length &&
1341
1427
  hasValue &&
1342
1428
  this.shouldInitialLoad &&
1343
- this.visible && (this.component.searchField || this.component.valueProperty);
1429
+ this.visible &&
1430
+ (this.component.searchField || this.component.valueProperty));
1344
1431
  }
1345
1432
  setChoicesValue(value, hasPreviousValue, flags = {}) {
1346
1433
  const hasValue = !this.isEmpty(value) || flags.fromSubmission;
1347
- hasPreviousValue = (hasPreviousValue === undefined) ? true : hasPreviousValue;
1434
+ hasPreviousValue = hasPreviousValue === undefined ? true : hasPreviousValue;
1348
1435
  if (this.choices) {
1349
1436
  // Now set the value.
1350
1437
  if (hasValue) {
1351
1438
  this.choices.removeActiveItems();
1352
1439
  // Add the currently selected choices if they don't already exist.
1353
- const currentChoices = Array.isArray(value) && this.component.multiple ? value : [value];
1440
+ const currentChoices = Array.isArray(value) && this.component.multiple
1441
+ ? value
1442
+ : [
1443
+ value,
1444
+ ];
1354
1445
  if (!this.addCurrentChoices(currentChoices, this.selectOptions, true)) {
1355
1446
  this.choices.setChoices(this.selectOptions, 'value', 'label', true);
1356
1447
  }
@@ -1362,9 +1453,13 @@ export default class SelectComponent extends ListComponent {
1362
1453
  }
1363
1454
  else {
1364
1455
  if (hasValue) {
1365
- const values = Array.isArray(value) ? value : [value];
1366
- if (!_.isEqual(this.dataValue, this.defaultValue) && this.selectOptions.length < 2
1367
- || (this.selectData && flags.fromSubmission)) {
1456
+ const values = Array.isArray(value)
1457
+ ? value
1458
+ : [
1459
+ value,
1460
+ ];
1461
+ if ((!_.isEqual(this.dataValue, this.defaultValue) && this.selectOptions.length < 2) ||
1462
+ (this.selectData && flags.fromSubmission)) {
1368
1463
  const { value, label } = this.selectValueAndLabel(this.dataValue);
1369
1464
  this.addOption(value, label);
1370
1465
  }
@@ -1404,7 +1499,7 @@ export default class SelectComponent extends ListComponent {
1404
1499
  return false;
1405
1500
  }
1406
1501
  try {
1407
- return (JSON.stringify(normalizedOptionValue) === JSON.stringify(value));
1502
+ return JSON.stringify(normalizedOptionValue) === JSON.stringify(value);
1408
1503
  }
1409
1504
  catch (err) {
1410
1505
  console.warn.error('Error while comparing items', err);
@@ -1413,7 +1508,7 @@ export default class SelectComponent extends ListComponent {
1413
1508
  };
1414
1509
  return values.findIndex((optionValue) => compareComplexValues(optionValue)) !== -1;
1415
1510
  }
1416
- return values.findIndex((optionValue) => this.normalizeSingleValue(optionValue) === value) !== -1;
1511
+ return (values.findIndex((optionValue) => this.normalizeSingleValue(optionValue) === value) !== -1);
1417
1512
  }
1418
1513
  return false;
1419
1514
  }
@@ -1472,7 +1567,7 @@ export default class SelectComponent extends ListComponent {
1472
1567
  */
1473
1568
  deleteValue() {
1474
1569
  this.setValue('', {
1475
- noUpdateEvent: true
1570
+ noUpdateEvent: true,
1476
1571
  });
1477
1572
  this.unset();
1478
1573
  }
@@ -1495,7 +1590,10 @@ export default class SelectComponent extends ListComponent {
1495
1590
  if (!this.component || !this.component.data || !this.component.data.values) {
1496
1591
  return;
1497
1592
  }
1498
- return this.component.data.values.map(value => ({ label: value.label, value: String(this.normalizeSingleValue(value.value)) }));
1593
+ return this.component.data.values.map((value) => ({
1594
+ label: value.label,
1595
+ value: String(this.normalizeSingleValue(value.value)),
1596
+ }));
1499
1597
  }
1500
1598
  asString(value, options = {}) {
1501
1599
  value = value ?? this.getValue();
@@ -1503,7 +1601,7 @@ export default class SelectComponent extends ListComponent {
1503
1601
  if (this.inDataTable) {
1504
1602
  value = this.undoValueTyping(value);
1505
1603
  }
1506
- const templateValue = (this.isEntireObjectDisplay() && !_.isObject(value.data)) ? { data: value } : value;
1604
+ const templateValue = this.isEntireObjectDisplay() && !_.isObject(value.data) ? { data: value } : value;
1507
1605
  const template = this.itemTemplate(templateValue, value, options);
1508
1606
  return template;
1509
1607
  }
@@ -1511,7 +1609,7 @@ export default class SelectComponent extends ListComponent {
1511
1609
  const convertToString = (data, valueProperty) => {
1512
1610
  if (valueProperty) {
1513
1611
  if (Array.isArray(data)) {
1514
- data.forEach((item) => item[valueProperty] = item[valueProperty].toString());
1612
+ data.forEach((item) => (item[valueProperty] = item[valueProperty].toString()));
1515
1613
  }
1516
1614
  else if (_.isObject(data)) {
1517
1615
  data[valueProperty] = data[valueProperty].toString();
@@ -1521,14 +1619,18 @@ export default class SelectComponent extends ListComponent {
1521
1619
  if (this.isBooleanOrNumber(data)) {
1522
1620
  data = data.toString();
1523
1621
  }
1524
- if (Array.isArray(data) && data.some(item => this.isBooleanOrNumber(item))) {
1525
- data = data.map(item => this.isBooleanOrNumber(item) ? item.toString() : item);
1622
+ if (Array.isArray(data) && data.some((item) => this.isBooleanOrNumber(item))) {
1623
+ data = data.map((item) => (this.isBooleanOrNumber(item) ? item.toString() : item));
1526
1624
  }
1527
1625
  return data;
1528
1626
  };
1529
1627
  value = convertToString(value);
1530
- if (['values', 'custom'].includes(this.component.dataSrc) && !this.asyncCustomValues()) {
1531
- const { items, valueProperty, } = this.component.dataSrc === 'values'
1628
+ if ([
1629
+ 'values',
1630
+ 'custom',
1631
+ ].includes(this.component.dataSrc) &&
1632
+ !this.asyncCustomValues()) {
1633
+ const { items, valueProperty } = this.component.dataSrc === 'values'
1532
1634
  ? {
1533
1635
  items: convertToString(this.getNormalizedValues(), 'value'),
1534
1636
  valueProperty: 'value',
@@ -1538,28 +1640,30 @@ export default class SelectComponent extends ListComponent {
1538
1640
  valueProperty: this.valueProperty,
1539
1641
  };
1540
1642
  const getFromValues = () => {
1541
- const initialValue = _.find(items, [valueProperty, value]);
1643
+ const initialValue = _.find(items, [
1644
+ valueProperty,
1645
+ value,
1646
+ ]);
1542
1647
  const values = this.defaultSchema.data.values || [];
1543
1648
  return _.isEqual(initialValue, values[0]) ? '-' : initialValue;
1544
1649
  };
1545
- value = (this.component.multiple && Array.isArray(value))
1546
- ? _.filter(items, (item) => value.includes(item.value))
1547
- : (valueProperty && items)
1548
- ? getFromValues() ?? { value, label: value }
1549
- : value;
1650
+ value =
1651
+ this.component.multiple && Array.isArray(value)
1652
+ ? _.filter(items, (item) => value.includes(item.value))
1653
+ : valueProperty && items
1654
+ ? (getFromValues() ?? { value, label: value })
1655
+ : value;
1550
1656
  }
1551
1657
  if (_.isString(value)) {
1552
1658
  return value;
1553
1659
  }
1554
1660
  const getTemplateValue = (v) => {
1555
1661
  const itemTemplate = this.itemTemplate(v);
1556
- return options.csv && itemTemplate
1557
- ? removeHTML(itemTemplate)
1558
- : itemTemplate;
1662
+ return options.csv && itemTemplate ? removeHTML(itemTemplate) : itemTemplate;
1559
1663
  };
1560
1664
  if (Array.isArray(value)) {
1561
1665
  const items = [];
1562
- value.forEach(item => items.push(getTemplateValue(item)));
1666
+ value.forEach((item) => items.push(getTemplateValue(item)));
1563
1667
  if (this.component.dataSrc === 'resource' && items.length > 0) {
1564
1668
  return items.join(', ');
1565
1669
  }
@@ -1573,9 +1677,7 @@ export default class SelectComponent extends ListComponent {
1573
1677
  if (this.isEntireObjectDisplay() && _.isObject(value)) {
1574
1678
  return JSON.stringify(value);
1575
1679
  }
1576
- return !_.isNil(value)
1577
- ? getTemplateValue(value)
1578
- : '-';
1680
+ return !_.isNil(value) ? getTemplateValue(value) : '-';
1579
1681
  }
1580
1682
  detach() {
1581
1683
  this.off('blur');
@@ -1596,10 +1698,14 @@ export default class SelectComponent extends ListComponent {
1596
1698
  setErrorClasses(elements, dirty, hasError, hasMessages, element = this.element) {
1597
1699
  super.setErrorClasses(elements, dirty, hasError, hasMessages, element);
1598
1700
  if (this.choices) {
1599
- super.setErrorClasses([this.choices.containerInner.element], dirty, hasError, hasMessages, element);
1701
+ super.setErrorClasses([
1702
+ this.choices.containerInner.element,
1703
+ ], dirty, hasError, hasMessages, element);
1600
1704
  }
1601
1705
  else {
1602
- super.setErrorClasses([this.refs.selectContainer], dirty, hasError, hasMessages, element);
1706
+ super.setErrorClasses([
1707
+ this.refs.selectContainer,
1708
+ ], dirty, hasError, hasMessages, element);
1603
1709
  }
1604
1710
  }
1605
1711
  }