@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
@@ -6,7 +6,7 @@ import isMobile from 'ismobilejs';
6
6
  import { processOne, processOneSync, validateProcessInfo } from '@formio/core/process';
7
7
  import { Formio } from '../../../Formio';
8
8
  import FormioUtils from '../../../utils';
9
- import { fastCloneDeep, boolValue, currentTimezone, getScriptPlugin, getContextualRowData } from '../../../utils';
9
+ import { fastCloneDeep, boolValue, currentTimezone, getScriptPlugin, getContextualRowData, } from '../../../utils';
10
10
  import Element from '../../../Element';
11
11
  import ComponentModal from '../componentModal/ComponentModal';
12
12
  import Widgets from '../../../widgets';
@@ -137,7 +137,7 @@ export default class Component extends Element {
137
137
  */
138
138
  strictDateValidation: false,
139
139
  multiple: false,
140
- unique: false
140
+ unique: false,
141
141
  },
142
142
  /**
143
143
  * The simple conditional settings for a component.
@@ -145,7 +145,7 @@ export default class Component extends Element {
145
145
  conditional: {
146
146
  show: null,
147
147
  when: null,
148
- eq: ''
148
+ eq: '',
149
149
  },
150
150
  overlay: {
151
151
  style: '',
@@ -161,6 +161,7 @@ export default class Component extends Element {
161
161
  properties: {},
162
162
  allowMultipleMasks: false,
163
163
  addons: [],
164
+ serverOverride: {},
164
165
  }, ...sources);
165
166
  }
166
167
  /**
@@ -169,15 +170,20 @@ export default class Component extends Element {
169
170
  */
170
171
  static get conditionOperatorsSettings() {
171
172
  return {
172
- operators: ['isEqual', 'isNotEqual', 'isEmpty', 'isNotEmpty'],
173
+ operators: [
174
+ 'isEqual',
175
+ 'isNotEqual',
176
+ 'isEmpty',
177
+ 'isNotEmpty',
178
+ ],
173
179
  valueComponent() {
174
180
  return {
175
181
  type: 'textfield',
176
182
  widget: {
177
- type: 'input'
178
- }
183
+ type: 'input',
184
+ },
179
185
  };
180
- }
186
+ },
181
187
  };
182
188
  }
183
189
  /**
@@ -187,7 +193,9 @@ export default class Component extends Element {
187
193
  */
188
194
  static savedValueTypes(schema) {
189
195
  schema = schema || {};
190
- return FormioUtils.getComponentSavedTypes(schema) || [FormioUtils.componentValueTypes.any];
196
+ return (FormioUtils.getComponentSavedTypes(schema) || [
197
+ FormioUtils.componentValueTypes.any,
198
+ ]);
191
199
  }
192
200
  /**
193
201
  * Provides a table view for this component. Override if you wish to do something different than using getView
@@ -204,12 +212,11 @@ export default class Component extends Element {
204
212
  * @param {object} options - The options for this component.
205
213
  * @param {object} data - The global data submission object this component will belong.
206
214
  */
207
- /* eslint-disable max-statements */
208
215
  constructor(component, options, data) {
209
216
  super(Object.assign({
210
217
  renderMode: 'form',
211
218
  attachMode: 'full',
212
- noDefaults: false
219
+ noDefaults: false,
213
220
  }, options || {}));
214
221
  // Restore the component id.
215
222
  if (component && component.id) {
@@ -230,9 +237,7 @@ export default class Component extends Element {
230
237
  */
231
238
  this.refs = {};
232
239
  // Allow global override for any component JSON.
233
- if (component &&
234
- this.options.components &&
235
- this.options.components[component.type]) {
240
+ if (component && this.options.components && this.options.components[component.type]) {
236
241
  _.merge(component, this.options.components[component.type]);
237
242
  }
238
243
  /**
@@ -309,7 +314,7 @@ export default class Component extends Element {
309
314
  */
310
315
  this.paths = FormioUtils.getComponentPaths(this.component, this.parent?.component, {
311
316
  ...this.parent?.paths,
312
- dataIndex: this.options.rowIndex === undefined ? this.parent?.paths?.dataIndex : this.options.rowIndex
317
+ dataIndex: this.options.rowIndex === undefined ? this.parent?.paths?.dataIndex : this.options.rowIndex,
313
318
  });
314
319
  this.options.name = this.options.name || 'data';
315
320
  this._path = '';
@@ -318,8 +323,12 @@ export default class Component extends Element {
318
323
  /**
319
324
  * Determines if this component is visible, or not.
320
325
  */
321
- this._parentVisible = this.options.hasOwnProperty('parentVisible') ? this.options.parentVisible : true;
322
- this._visible = this._parentVisible && (this.hasCondition() ? !this.conditionallyHidden() : !this.component.hidden);
326
+ this._parentVisible = this.options.hasOwnProperty('parentVisible')
327
+ ? this.options.parentVisible
328
+ : true;
329
+ this._visible =
330
+ this._parentVisible &&
331
+ (this.hasCondition() ? !this.conditionallyHidden() : !this.component.hidden);
323
332
  this._parentDisabled = false;
324
333
  /**
325
334
  * The reference attribute name for this component
@@ -414,7 +423,6 @@ export default class Component extends Element {
414
423
  this.init();
415
424
  }
416
425
  }
417
- /* eslint-enable max-statements */
418
426
  get componentsMap() {
419
427
  return this.root?.childComponentsMap || {};
420
428
  }
@@ -472,10 +480,7 @@ export default class Component extends Element {
472
480
  return Promise.resolve(this);
473
481
  }
474
482
  get isPDFReadOnlyMode() {
475
- return this.parent &&
476
- this.parent.form &&
477
- (this.parent.form.display === 'pdf') &&
478
- this.options.readOnly;
483
+ return (this.parent && this.parent.form && this.parent.form.display === 'pdf' && this.options.readOnly);
479
484
  }
480
485
  get labelInfo() {
481
486
  const label = {};
@@ -484,7 +489,10 @@ export default class Component extends Element {
484
489
  label.labelPosition = this.component.labelPosition;
485
490
  label.tooltipClass = `${this.iconClass('question-sign')} text-muted`;
486
491
  const isPDFReadOnlyMode = this.isPDFReadOnlyMode;
487
- if (this.hasInput && this.component.validate && boolValue(this.component.validate.required) && !isPDFReadOnlyMode) {
492
+ if (this.hasInput &&
493
+ this.component.validate &&
494
+ boolValue(this.component.validate.required) &&
495
+ !isPDFReadOnlyMode) {
488
496
  label.className += ' field-required';
489
497
  }
490
498
  if (label.hidden) {
@@ -497,7 +505,7 @@ export default class Component extends Element {
497
505
  }
498
506
  init() {
499
507
  this.disabled = this.shouldDisabled;
500
- this._visible = (this.hasCondition() ? !this.conditionallyHidden() : !this.component.hidden);
508
+ this._visible = this.hasCondition() ? !this.conditionallyHidden() : !this.component.hidden;
501
509
  if (this.component.addons?.length) {
502
510
  this.component.addons.forEach((addon) => this.createAddon(addon));
503
511
  }
@@ -517,7 +525,7 @@ export default class Component extends Element {
517
525
  set rowIndex(value) {
518
526
  this.paths = FormioUtils.getComponentPaths(this.component, this.parent?.component, {
519
527
  ...(this.parent?.paths || {}),
520
- ...{ dataIndex: value }
528
+ ...{ dataIndex: value },
521
529
  });
522
530
  this._rowIndex = value;
523
531
  }
@@ -534,8 +542,7 @@ export default class Component extends Element {
534
542
  let addon = null;
535
543
  if (Addon) {
536
544
  const supportedComponents = Addon.info.supportedComponents;
537
- const supportsThisComponentType = !supportedComponents?.length ||
538
- supportedComponents.indexOf(this.component.type) !== -1;
545
+ const supportsThisComponentType = !supportedComponents?.length || supportedComponents.indexOf(this.component.type) !== -1;
539
546
  if (supportsThisComponentType) {
540
547
  addon = new Addon(settings, this);
541
548
  this.addons.push(addon);
@@ -572,7 +579,9 @@ export default class Component extends Element {
572
579
  }
573
580
  }
574
581
  get shouldDisabled() {
575
- return this.options.readOnly || this.component.disabled || (this.options.hasOwnProperty('disabled') && this.options.disabled[this.key]);
582
+ return (this.options.readOnly ||
583
+ this.component.disabled ||
584
+ (this.options.hasOwnProperty('disabled') && this.options.disabled[this.key]));
576
585
  }
577
586
  get isInputComponent() {
578
587
  return !this.component.hasOwnProperty('input') || this.component.input;
@@ -751,7 +760,7 @@ export default class Component extends Element {
751
760
  'left-left',
752
761
  'left-right',
753
762
  'right-left',
754
- 'right-right'
763
+ 'right-right',
755
764
  ].includes(this.labelPosition);
756
765
  }
757
766
  get labelPositions() {
@@ -789,7 +798,7 @@ export default class Component extends Element {
789
798
  isRightPosition,
790
799
  isRightAlign,
791
800
  labelStyles,
792
- contentStyles
801
+ contentStyles,
793
802
  };
794
803
  }
795
804
  /**
@@ -816,11 +825,11 @@ export default class Component extends Element {
816
825
  modified[key] = val;
817
826
  }
818
827
  }
819
- else if ((!recursion && (key === 'type')) ||
820
- (!recursion && (key === 'key')) ||
821
- (!recursion && (key === 'label')) ||
822
- (!recursion && (key === 'input')) ||
823
- (!recursion && (key === 'tableView')) ||
828
+ else if ((!recursion && key === 'type') ||
829
+ (!recursion && key === 'key') ||
830
+ (!recursion && key === 'label') ||
831
+ (!recursion && key === 'input') ||
832
+ (!recursion && key === 'tableView') ||
824
833
  (val !== '' && !defaultSchema.hasOwnProperty(key)) ||
825
834
  (val !== '' && val !== defaultSchema[key]) ||
826
835
  (defaultSchema[key] && val !== defaultSchema[key])) {
@@ -864,21 +873,32 @@ export default class Component extends Element {
864
873
  return super.t(text, params, ...args);
865
874
  }
866
875
  labelIsHidden() {
867
- return !this.component.label ||
868
- ((!this.isInDataGrid && this.component.hideLabel) ||
876
+ return (!this.component.label ||
877
+ (((!this.isInDataGrid && this.component.hideLabel) ||
869
878
  (this.isInDataGrid && !this.component.dataGridLabel) ||
870
879
  this.options.floatingLabels ||
871
- this.options.inputsOnly) && !this.builderMode;
880
+ this.options.inputsOnly) &&
881
+ !this.builderMode));
872
882
  }
873
883
  transform(type, value) {
874
- const frameworkTemplates = this.options.template ? Templates.templates[this.options.template] : Templates.current;
884
+ const frameworkTemplates = this.options.template
885
+ ? Templates.templates[this.options.template]
886
+ : Templates.current;
875
887
  return frameworkTemplates.hasOwnProperty('transform')
876
888
  ? frameworkTemplates.transform(type, value, this)
877
889
  : (type, value) => value;
878
890
  }
879
891
  getTemplate(names, modes) {
880
- modes = Array.isArray(modes) ? modes : [modes];
881
- names = Array.isArray(names) ? names : [names];
892
+ modes = Array.isArray(modes)
893
+ ? modes
894
+ : [
895
+ modes,
896
+ ];
897
+ names = Array.isArray(names)
898
+ ? names
899
+ : [
900
+ names,
901
+ ];
882
902
  if (!modes.includes('form')) {
883
903
  modes.push('form');
884
904
  }
@@ -889,7 +909,9 @@ export default class Component extends Element {
889
909
  return result;
890
910
  }
891
911
  }
892
- const frameworkTemplates = this.options.template ? Templates.templates[this.options.template] : Templates.current;
912
+ const frameworkTemplates = this.options.template
913
+ ? Templates.templates[this.options.template]
914
+ : Templates.current;
893
915
  result = this.checkTemplate(frameworkTemplates, names, modes);
894
916
  if (result) {
895
917
  return result;
@@ -1021,7 +1043,9 @@ export default class Component extends Element {
1021
1043
  if (settings && this.root?.shadowRoot) {
1022
1044
  settings.shadowRoot = this.root.shadowRoot;
1023
1045
  }
1024
- const widget = settings && Widgets[settings.type] ? new Widgets[settings.type](settings, this.component, this) : null;
1046
+ const widget = settings && Widgets[settings.type]
1047
+ ? new Widgets[settings.type](settings, this.component, this)
1048
+ : null;
1025
1049
  return widget;
1026
1050
  }
1027
1051
  /**
@@ -1030,7 +1054,12 @@ export default class Component extends Element {
1030
1054
  */
1031
1055
  getBrowserLanguage() {
1032
1056
  const nav = window.navigator;
1033
- const browserLanguagePropertyKeys = ['language', 'browserLanguage', 'systemLanguage', 'userLanguage'];
1057
+ const browserLanguagePropertyKeys = [
1058
+ 'language',
1059
+ 'browserLanguage',
1060
+ 'systemLanguage',
1061
+ 'userLanguage',
1062
+ ];
1034
1063
  let language;
1035
1064
  // support for HTML 5.1 "navigator.languages"
1036
1065
  if (Array.isArray(nav.languages)) {
@@ -1076,7 +1105,8 @@ export default class Component extends Element {
1076
1105
  * @returns {string} - The submission timezone.
1077
1106
  */
1078
1107
  get submissionTimezone() {
1079
- this.options.submissionTimezone = this.options.submissionTimezone || _.get(this.root, 'options.submissionTimezone');
1108
+ this.options.submissionTimezone =
1109
+ this.options.submissionTimezone || _.get(this.root, 'options.submissionTimezone');
1080
1110
  return this.options.submissionTimezone;
1081
1111
  }
1082
1112
  /**
@@ -1100,8 +1130,8 @@ export default class Component extends Element {
1100
1130
  }
1101
1131
  const submissionTimezone = this.submissionTimezone;
1102
1132
  if (submissionTimezone &&
1103
- ((settings.displayInTimezone === 'submission') ||
1104
- ((this.options.pdf || this.options.server) && (settings.displayInTimezone === 'viewer')))) {
1133
+ (settings.displayInTimezone === 'submission' ||
1134
+ ((this.options.pdf || this.options.server) && settings.displayInTimezone === 'viewer'))) {
1105
1135
  return submissionTimezone;
1106
1136
  }
1107
1137
  // Return current timezone if none are provided.
@@ -1192,7 +1222,7 @@ export default class Component extends Element {
1192
1222
  id: this.id,
1193
1223
  classes: this.className,
1194
1224
  styles: this.customStyle,
1195
- children
1225
+ children,
1196
1226
  }, topLevel);
1197
1227
  }
1198
1228
  else {
@@ -1201,7 +1231,7 @@ export default class Component extends Element {
1201
1231
  id: this.id,
1202
1232
  classes: this.className,
1203
1233
  styles: this.customStyle,
1204
- children
1234
+ children,
1205
1235
  }, topLevel);
1206
1236
  }
1207
1237
  }
@@ -1214,8 +1244,7 @@ export default class Component extends Element {
1214
1244
  createTooltip(tooltipEl, settings = {}) {
1215
1245
  const tooltipAttribute = tooltipEl.getAttribute('data-tooltip');
1216
1246
  const tooltipDataTitle = tooltipEl.getAttribute('data-title');
1217
- const tooltipText = this.interpolate(tooltipDataTitle || tooltipAttribute)
1218
- .replace(/(?:\r\n|\r|\n)/g, '<br />');
1247
+ const tooltipText = this.interpolate(tooltipDataTitle || tooltipAttribute).replace(/(?:\r\n|\r|\n)/g, '<br />');
1219
1248
  return tippy(tooltipEl, {
1220
1249
  allowHTML: true,
1221
1250
  trigger: 'mouseenter click focus',
@@ -1257,9 +1286,7 @@ export default class Component extends Element {
1257
1286
  if (!this.builderMode && !this.previewMode && this.component.modalEdit) {
1258
1287
  const modalShouldBeOpened = this.componentModal ? this.componentModal.isOpened : false;
1259
1288
  const currentValue = modalShouldBeOpened ? this.componentModal.currentValue : this.dataValue;
1260
- const openModalTemplate = this.componentModal && modalShouldBeOpened
1261
- ? this.componentModal.openModalTemplate
1262
- : null;
1289
+ const openModalTemplate = this.componentModal && modalShouldBeOpened ? this.componentModal.openModalTemplate : null;
1263
1290
  this.componentModal = this.createComponentModal(element, modalShouldBeOpened, currentValue);
1264
1291
  this.setOpenModalElement(openModalTemplate);
1265
1292
  }
@@ -1273,7 +1300,7 @@ export default class Component extends Element {
1273
1300
  }
1274
1301
  this.loadRefs(element, {
1275
1302
  messageContainer: 'single',
1276
- tooltip: 'multiple'
1303
+ tooltip: 'multiple',
1277
1304
  });
1278
1305
  this.attachTooltips(this.refs.tooltip);
1279
1306
  // Attach logic.
@@ -1309,7 +1336,7 @@ export default class Component extends Element {
1309
1336
  */
1310
1337
  addShortcut(element, shortcut) {
1311
1338
  // Avoid infinite recursion.
1312
- if (!element || !this.root || (this.root === this)) {
1339
+ if (!element || !this.root || this.root === this) {
1313
1340
  return;
1314
1341
  }
1315
1342
  if (!shortcut) {
@@ -1325,7 +1352,7 @@ export default class Component extends Element {
1325
1352
  */
1326
1353
  removeShortcut(element, shortcut) {
1327
1354
  // Avoid infinite recursion.
1328
- if (!element || (this.root === this)) {
1355
+ if (!element || this.root === this) {
1329
1356
  return;
1330
1357
  }
1331
1358
  if (!shortcut) {
@@ -1371,7 +1398,10 @@ export default class Component extends Element {
1371
1398
  if (refreshData === 'data') {
1372
1399
  this.refresh(this.data, changed, flags);
1373
1400
  }
1374
- else if ((changePath && (changed.instance?.paths?.localPath === refreshData)) && changed && changed.instance &&
1401
+ else if (changePath &&
1402
+ changed.instance?.paths?.localPath === refreshData &&
1403
+ changed &&
1404
+ changed.instance &&
1375
1405
  // Make sure the changed component is not in a different "context". Solves issues where refreshOn being set
1376
1406
  // in fields inside EditGrids could alter their state from other rows (which is bad).
1377
1407
  this.inContext(changed.instance)) {
@@ -1390,16 +1420,20 @@ export default class Component extends Element {
1390
1420
  return;
1391
1421
  }
1392
1422
  if (!changes.length && flags.changed) {
1393
- changes = [flags.changed];
1423
+ changes = [
1424
+ flags.changed,
1425
+ ];
1394
1426
  }
1395
- const refreshOn = flags.fromBlur ? this.component.refreshOnBlur : this.component.refreshOn || this.component.redrawOn;
1427
+ const refreshOn = flags.fromBlur
1428
+ ? this.component.refreshOnBlur
1429
+ : this.component.refreshOn || this.component.redrawOn;
1396
1430
  // If they wish to refresh on a value, then add that here.
1397
1431
  if (refreshOn) {
1398
1432
  if (Array.isArray(refreshOn)) {
1399
- refreshOn.forEach(refreshData => changes.forEach(changed => this.checkRefresh(refreshData, changed, flags)));
1433
+ refreshOn.forEach((refreshData) => changes.forEach((changed) => this.checkRefresh(refreshData, changed, flags)));
1400
1434
  }
1401
1435
  else {
1402
- changes.forEach(changed => this.checkRefresh(refreshOn, changed, flags));
1436
+ changes.forEach((changed) => this.checkRefresh(refreshOn, changed, flags));
1403
1437
  }
1404
1438
  }
1405
1439
  }
@@ -1470,7 +1504,7 @@ export default class Component extends Element {
1470
1504
  */
1471
1505
  createViewOnlyElement() {
1472
1506
  this.setElement(this.ce('dl', {
1473
- id: this.id
1507
+ id: this.id,
1474
1508
  }));
1475
1509
  if (this.element) {
1476
1510
  // Ensure you can get the component info from the element.
@@ -1582,7 +1616,7 @@ export default class Component extends Element {
1582
1616
  */
1583
1617
  itemValueForHTMLMode(value) {
1584
1618
  if (Array.isArray(value)) {
1585
- const values = value.map(item => Array.isArray(item) ? this.itemValueForHTMLMode(item) : this.itemValue(item));
1619
+ const values = value.map((item) => Array.isArray(item) ? this.itemValueForHTMLMode(item) : this.itemValue(item));
1586
1620
  return values.join(', ');
1587
1621
  }
1588
1622
  return this.itemValue(value);
@@ -1618,7 +1652,8 @@ export default class Component extends Element {
1618
1652
  };
1619
1653
  const handleCloseClick = (e) => {
1620
1654
  if (confirm) {
1621
- confirm().then(() => close(e))
1655
+ confirm()
1656
+ .then(() => close(e))
1622
1657
  .catch(() => { });
1623
1658
  }
1624
1659
  else {
@@ -1718,9 +1753,11 @@ export default class Component extends Element {
1718
1753
  // It is useful to translate strings in different scenarions (eg: custom edit grid templates, custom error messages etc.)
1719
1754
  // and desirable to be publicly available rather than calling the internal {instance.t} function in the template string.
1720
1755
  t: this.t.bind(this),
1721
- submission: (this.root ? this.root._submission : {
1722
- data: this.rootValue
1723
- }),
1756
+ submission: this.root
1757
+ ? this.root._submission
1758
+ : {
1759
+ data: this.rootValue,
1760
+ },
1724
1761
  form: this.root ? this.root._form : {},
1725
1762
  options: this.options,
1726
1763
  }, additional));
@@ -1773,7 +1810,12 @@ export default class Component extends Element {
1773
1810
  const iconset = this.options.iconset || Templates.current.defaultIconset || 'fa';
1774
1811
  return Templates.current.hasOwnProperty('iconClass')
1775
1812
  ? Templates.current.iconClass(iconset, name, spinning)
1776
- : this.options.iconset === 'fa' ? Templates.defaultTemplates.iconClass(iconset, name, spinning) : name;
1813
+ : [
1814
+ 'fa',
1815
+ 'bi',
1816
+ ].includes(this.options.iconset)
1817
+ ? Templates.defaultTemplates.iconClass(iconset, name, spinning)
1818
+ : name;
1777
1819
  }
1778
1820
  /**
1779
1821
  * Returns the size css class names for our current template.
@@ -1781,16 +1823,16 @@ export default class Component extends Element {
1781
1823
  * @returns {string} - The size class for our component.
1782
1824
  */
1783
1825
  size(size) {
1784
- return Templates.current.hasOwnProperty('size')
1785
- ? Templates.current.size(size)
1786
- : size;
1826
+ return Templates.current.hasOwnProperty('size') ? Templates.current.size(size) : size;
1787
1827
  }
1788
1828
  /**
1789
1829
  * The readible name for this component.
1790
1830
  * @returns {string} - The name of the component.
1791
1831
  */
1792
1832
  get name() {
1793
- return this.t(this.component.label || this.component.placeholder || this.key, { _userInput: true });
1833
+ return this.t(this.component.label || this.component.placeholder || this.key, {
1834
+ _userInput: true,
1835
+ });
1794
1836
  }
1795
1837
  /**
1796
1838
  * Returns the visible errors for this component.
@@ -1811,10 +1853,7 @@ export default class Component extends Element {
1811
1853
  * @returns {string} - The error label for this component.
1812
1854
  */
1813
1855
  get errorLabel() {
1814
- return this.t(this.component.errorLabel
1815
- || this.component.label
1816
- || this.component.placeholder
1817
- || this.key);
1856
+ return this.t(this.component.errorLabel || this.component.label || this.component.placeholder || this.key);
1818
1857
  }
1819
1858
  /**
1820
1859
  * Get the error message provided a certain type of error.
@@ -1822,7 +1861,9 @@ export default class Component extends Element {
1822
1861
  * @returns {string} - The error message configured for this component.
1823
1862
  */
1824
1863
  errorMessage(type) {
1825
- return (this.component.errors && this.component.errors[type]) ? this.component.errors[type] : type;
1864
+ return this.component.errors && this.component.errors[type]
1865
+ ? this.component.errors[type]
1866
+ : type;
1826
1867
  }
1827
1868
  /**
1828
1869
  * Sets the content, innerHTML, of an element to the sanitized content.
@@ -1897,7 +1938,7 @@ export default class Component extends Element {
1897
1938
  */
1898
1939
  removeEventListeners() {
1899
1940
  super.removeEventListeners();
1900
- this.tooltips.forEach(tooltip => tooltip.destroy());
1941
+ this.tooltips.forEach((tooltip) => tooltip.destroy());
1901
1942
  this.tooltips = [];
1902
1943
  }
1903
1944
  /**
@@ -1988,7 +2029,7 @@ export default class Component extends Element {
1988
2029
  this.redraw();
1989
2030
  }
1990
2031
  // Check visibility
1991
- const visible = (this.hasCondition() ? !this.conditionallyHidden() : !this.component.hidden);
2032
+ const visible = this.hasCondition() ? !this.conditionallyHidden() : !this.component.hidden;
1992
2033
  if (this.visible !== visible) {
1993
2034
  this.visible = visible;
1994
2035
  }
@@ -2030,7 +2071,8 @@ export default class Component extends Element {
2030
2071
  const newComponent = fastCloneDeep(this.originalComponent);
2031
2072
  let changed = logics.reduce((changed, logic) => {
2032
2073
  const result = FormioUtils.checkTrigger(newComponent, logic.trigger, row, data, this.root ? this.root._form : {}, this);
2033
- return (result ? this.applyActions(newComponent, logic.actions, result, row, data) : false) || changed;
2074
+ return ((result ? this.applyActions(newComponent, logic.actions, result, row, data) : false) ||
2075
+ changed);
2034
2076
  }, false);
2035
2077
  // If component definition changed, replace and mark as changed.
2036
2078
  if (!_.isEqual(this.component, newComponent)) {
@@ -2190,13 +2232,17 @@ export default class Component extends Element {
2190
2232
  };
2191
2233
  }
2192
2234
  if (!Array.isArray(messages)) {
2193
- messages = [messages];
2235
+ messages = [
2236
+ messages,
2237
+ ];
2194
2238
  }
2195
- messages = _.uniqBy(messages, message => message.message);
2239
+ messages = _.uniqBy(messages, (message) => message.message);
2196
2240
  if (this.refs.messageContainer) {
2197
- this.setContent(this.refs.messageContainer, messages.map((message) => {
2241
+ this.setContent(this.refs.messageContainer, messages
2242
+ .map((message) => {
2198
2243
  return this.renderTemplate('message', { ...message });
2199
- }).join(''));
2244
+ })
2245
+ .join(''));
2200
2246
  }
2201
2247
  }
2202
2248
  /**
@@ -2256,14 +2302,16 @@ export default class Component extends Element {
2256
2302
  */
2257
2303
  clearComponentOnHide() {
2258
2304
  // clearOnHide defaults to true for old forms (without the value set) so only trigger if the value is false.
2259
- if (this.component.clearOnHide !== false && !this.options.readOnly && !this.options.showHiddenFields) {
2305
+ if (this.component.clearOnHide !== false &&
2306
+ !this.options.readOnly &&
2307
+ !this.options.showHiddenFields) {
2260
2308
  if (this.shouldConditionallyClear()) {
2261
2309
  this.deleteValue();
2262
2310
  }
2263
2311
  else if (!this.hasValue() && this.shouldAddDefaultValue) {
2264
2312
  // If shown, ensure the default is set.
2265
2313
  this.setValue(this.defaultValue, {
2266
- noUpdateEvent: true
2314
+ noUpdateEvent: true,
2267
2315
  });
2268
2316
  }
2269
2317
  }
@@ -2307,7 +2355,7 @@ export default class Component extends Element {
2307
2355
  }
2308
2356
  if (this.component.onChange) {
2309
2357
  this.evaluate(this.component.onChange, {
2310
- flags
2358
+ flags,
2311
2359
  });
2312
2360
  }
2313
2361
  // Set the changed variable.
@@ -2315,7 +2363,7 @@ export default class Component extends Element {
2315
2363
  instance: this,
2316
2364
  component: this.component,
2317
2365
  value: this.dataValue,
2318
- flags: flags
2366
+ flags: flags,
2319
2367
  };
2320
2368
  // Emit the change.
2321
2369
  this.emit('componentChange', changed);
@@ -2338,16 +2386,65 @@ export default class Component extends Element {
2338
2386
  placeholder: this.t(this.component.placeholder, { _userInput: true }),
2339
2387
  modules: {
2340
2388
  toolbar: [
2341
- [{ 'size': ['small', false, 'large', 'huge'] }], // custom dropdown
2342
- [{ 'header': [1, 2, 3, 4, 5, 6, false] }],
2343
- [{ 'font': [] }],
2344
- ['bold', 'italic', 'underline', 'strike', { 'script': 'sub' }, { 'script': 'super' }, 'clean'],
2345
- [{ 'color': [] }, { 'background': [] }],
2346
- [{ 'list': 'ordered' }, { 'list': 'bullet' }, { 'indent': '-1' }, { 'indent': '+1' }, { 'align': [] }],
2347
- ['blockquote', 'code-block'],
2348
- ['link', 'image', 'video', 'formula', 'source']
2349
- ]
2350
- }
2389
+ [
2390
+ {
2391
+ size: [
2392
+ 'small',
2393
+ false,
2394
+ 'large',
2395
+ 'huge',
2396
+ ],
2397
+ },
2398
+ ], // custom dropdown
2399
+ [
2400
+ {
2401
+ header: [
2402
+ 1,
2403
+ 2,
2404
+ 3,
2405
+ 4,
2406
+ 5,
2407
+ 6,
2408
+ false,
2409
+ ],
2410
+ },
2411
+ ],
2412
+ [
2413
+ { font: [] },
2414
+ ],
2415
+ [
2416
+ 'bold',
2417
+ 'italic',
2418
+ 'underline',
2419
+ 'strike',
2420
+ { script: 'sub' },
2421
+ { script: 'super' },
2422
+ 'clean',
2423
+ ],
2424
+ [
2425
+ { color: [] },
2426
+ { background: [] },
2427
+ ],
2428
+ [
2429
+ { list: 'ordered' },
2430
+ { list: 'bullet' },
2431
+ { indent: '-1' },
2432
+ { indent: '+1' },
2433
+ { align: [] },
2434
+ ],
2435
+ [
2436
+ 'blockquote',
2437
+ 'code-block',
2438
+ ],
2439
+ [
2440
+ 'link',
2441
+ 'image',
2442
+ 'video',
2443
+ 'formula',
2444
+ 'source',
2445
+ ],
2446
+ ],
2447
+ },
2351
2448
  },
2352
2449
  ace: {
2353
2450
  theme: 'ace/theme/xcode',
@@ -2355,7 +2452,7 @@ export default class Component extends Element {
2355
2452
  minLines: 12,
2356
2453
  tabSize: 2,
2357
2454
  mode: 'ace/mode/javascript',
2358
- placeholder: this.t(this.component.placeholder, { _userInput: true })
2455
+ placeholder: this.t(this.component.placeholder, { _userInput: true }),
2359
2456
  },
2360
2457
  ckeditor: {
2361
2458
  image: {
@@ -2365,18 +2462,18 @@ export default class Component extends Element {
2365
2462
  'imageStyle:full',
2366
2463
  'imageStyle:alignLeft',
2367
2464
  'imageStyle:alignCenter',
2368
- 'imageStyle:alignRight'
2465
+ 'imageStyle:alignRight',
2369
2466
  ],
2370
2467
  styles: [
2371
2468
  'full',
2372
2469
  'alignLeft',
2373
2470
  'alignCenter',
2374
- 'alignRight'
2375
- ]
2471
+ 'alignRight',
2472
+ ],
2376
2473
  },
2377
- extraPlugins: []
2474
+ extraPlugins: [],
2378
2475
  },
2379
- default: {}
2476
+ default: {},
2380
2477
  };
2381
2478
  }
2382
2479
  addCKE(element, settings, onChange) {
@@ -2387,8 +2484,7 @@ export default class Component extends Element {
2387
2484
  if (this.component.isUploadEnabled) {
2388
2485
  settings.extraPlugins.push(getFormioUploadAdapterPlugin(this.fileService, this));
2389
2486
  }
2390
- return Formio.requireLibrary('ckeditor', isIEBrowser ? 'CKEDITOR' : 'ClassicEditor', _.get(this.options, 'editors.ckeditor.src', `${Formio.cdn.ckeditor}/ckeditor.js`), true)
2391
- .then(() => {
2487
+ return Formio.requireLibrary('ckeditor', isIEBrowser ? 'CKEDITOR' : 'ClassicEditor', _.get(this.options, 'editors.ckeditor.src', `${Formio.cdn.ckeditor}/ckeditor.js`), true).then(() => {
2392
2488
  if (!element.parentNode) {
2393
2489
  return Promise.reject();
2394
2490
  }
@@ -2398,7 +2494,7 @@ export default class Component extends Element {
2398
2494
  return Promise.resolve(editor);
2399
2495
  }
2400
2496
  else {
2401
- return ClassicEditor.create(element, settings).then(editor => {
2497
+ return ClassicEditor.create(element, settings).then((editor) => {
2402
2498
  editor.model.document.on('change', () => onChange(editor.data.get()));
2403
2499
  return editor;
2404
2500
  });
@@ -2412,18 +2508,16 @@ export default class Component extends Element {
2412
2508
  ...settings,
2413
2509
  modules: {
2414
2510
  table: true,
2415
- ...settings.modules
2416
- }
2511
+ ...settings.modules,
2512
+ },
2417
2513
  };
2418
2514
  // Lazy load the quill css.
2419
2515
  Formio.requireLibrary(`quill-css-${settings.theme}`, 'Quill', [
2420
- { type: 'styles', src: `${Formio.cdn.quill}/quill.${settings.theme}.css` }
2516
+ { type: 'styles', src: `${Formio.cdn.quill}/quill.${settings.theme}.css` },
2421
2517
  ], true);
2422
2518
  // Lazy load the quill library.
2423
- return Formio.requireLibrary('quill', 'Quill', _.get(this.options, 'editors.quill.src', `${Formio.cdn.quill}/quill.min.js`), true)
2424
- .then(() => {
2425
- return Formio.requireLibrary('quill-table', 'Quill', `${Formio.cdn.baseUrl}/quill/quill-table.js`, true)
2426
- .then(() => {
2519
+ return Formio.requireLibrary('quill', 'Quill', _.get(this.options, 'editors.quill.src', `${Formio.cdn.quill}/quill.min.js`), true).then(() => {
2520
+ return Formio.requireLibrary('quill-table', 'Quill', `${Formio.cdn.baseUrl}/quill/quill-table.js`, true).then(() => {
2427
2521
  if (!element.parentNode) {
2428
2522
  return Promise.reject();
2429
2523
  }
@@ -2439,7 +2533,7 @@ export default class Component extends Element {
2439
2533
  if (txtArea.style.display === 'inherit') {
2440
2534
  this.quill.setContents(this.quill.clipboard.convert({ html: txtArea.value }));
2441
2535
  }
2442
- txtArea.style.display = (txtArea.style.display === 'none') ? 'inherit' : 'none';
2536
+ txtArea.style.display = txtArea.style.display === 'none' ? 'inherit' : 'none';
2443
2537
  });
2444
2538
  }
2445
2539
  /** END CODEBLOCK */
@@ -2460,10 +2554,10 @@ export default class Component extends Element {
2460
2554
  }
2461
2555
  get shouldSanitizeValue() {
2462
2556
  // Sanitize value if sanitizing for thw whole content is turned off
2463
- return (this.options?.sanitize !== false);
2557
+ return this.options?.sanitize !== false;
2464
2558
  }
2465
2559
  addAce(element, settings, onChange) {
2466
- if (!settings || (settings.theme === 'snow')) {
2560
+ if (!settings || settings.theme === 'snow') {
2467
2561
  const mode = settings ? settings.mode : '';
2468
2562
  settings = {};
2469
2563
  if (mode) {
@@ -2471,8 +2565,7 @@ export default class Component extends Element {
2471
2565
  }
2472
2566
  }
2473
2567
  settings = _.merge(this.wysiwygDefault.ace, _.get(this.options, 'editors.ace.settings', {}), settings || {});
2474
- return Formio.requireLibrary('ace', 'ace', _.get(this.options, 'editors.ace.src', `${Formio.cdn.ace}/ace.js`), true)
2475
- .then((editor) => {
2568
+ return Formio.requireLibrary('ace', 'ace', _.get(this.options, 'editors.ace.src', `${Formio.cdn.ace}/ace.js`), true).then((editor) => {
2476
2569
  editor = editor.edit(element);
2477
2570
  editor.removeAllListeners('change');
2478
2571
  editor.setOptions(settings);
@@ -2530,10 +2623,10 @@ export default class Component extends Element {
2530
2623
  if (!this.allowData || !this.key) {
2531
2624
  return;
2532
2625
  }
2533
- if ((value !== null) && (value !== undefined)) {
2626
+ if (value !== null && value !== undefined) {
2534
2627
  value = this.hook('setDataValue', value, this.key, this._data);
2535
2628
  }
2536
- if ((value === null) || (value === undefined)) {
2629
+ if (value === null || value === undefined) {
2537
2630
  this.unset();
2538
2631
  return;
2539
2632
  }
@@ -2564,7 +2657,7 @@ export default class Component extends Element {
2564
2657
  deleteValue() {
2565
2658
  this.setValue(null, {
2566
2659
  noUpdateEvent: true,
2567
- noDefault: true
2660
+ noDefault: true,
2568
2661
  });
2569
2662
  this.unset();
2570
2663
  }
@@ -2579,9 +2672,10 @@ export default class Component extends Element {
2579
2672
  * @returns {boolean} - TRUE if a default value is set.
2580
2673
  */
2581
2674
  get hasDefaultValue() {
2582
- return this.component.customDefaultValue || (this.component.hasOwnProperty('defaultValue') &&
2583
- (this.component.defaultValue !== null) &&
2584
- (this.component.defaultValue !== undefined));
2675
+ return (this.component.customDefaultValue ||
2676
+ (this.component.hasOwnProperty('defaultValue') &&
2677
+ this.component.defaultValue !== null &&
2678
+ this.component.defaultValue !== undefined));
2585
2679
  }
2586
2680
  /**
2587
2681
  * Determine if we should add a default value for this component.
@@ -2676,7 +2770,7 @@ export default class Component extends Element {
2676
2770
  Array.isArray(this.defaultValue) &&
2677
2771
  this.refs.hasOwnProperty('input') &&
2678
2772
  valueInput &&
2679
- (valueInput.length !== value.length) &&
2773
+ valueInput.length !== value.length &&
2680
2774
  this.visible) {
2681
2775
  if (isFilelink || valueInput.length) {
2682
2776
  this.redraw();
@@ -2730,9 +2824,9 @@ export default class Component extends Element {
2730
2824
  }
2731
2825
  setDefaultValue() {
2732
2826
  if (this.defaultValue && this.shouldAddDefaultValue) {
2733
- const defaultValue = (this.component.multiple && !this.dataValue.length) ? [] : this.defaultValue;
2827
+ const defaultValue = this.component.multiple && !this.dataValue.length ? [] : this.defaultValue;
2734
2828
  this.setValue(defaultValue, {
2735
- noUpdateEvent: true
2829
+ noUpdateEvent: true,
2736
2830
  });
2737
2831
  }
2738
2832
  }
@@ -2742,7 +2836,7 @@ export default class Component extends Element {
2742
2836
  restoreValue() {
2743
2837
  if (this.hasSetValue) {
2744
2838
  this.setValue(this.dataValue, {
2745
- noUpdateEvent: true
2839
+ noUpdateEvent: true,
2746
2840
  });
2747
2841
  }
2748
2842
  else {
@@ -2764,10 +2858,10 @@ export default class Component extends Element {
2764
2858
  * @returns {boolean} - If the value changed.
2765
2859
  */
2766
2860
  updateComponentValue(value, flags = {}) {
2767
- let newValue = (!flags.resetValue && (value === undefined || value === null)) ? this.getValue() : value;
2861
+ let newValue = !flags.resetValue && (value === undefined || value === null) ? this.getValue() : value;
2768
2862
  newValue = this.normalizeValue(newValue, flags);
2769
2863
  const oldValue = this.dataValue;
2770
- let changed = ((newValue !== undefined) ? this.hasChanged(newValue, oldValue) : false);
2864
+ let changed = newValue !== undefined ? this.hasChanged(newValue, oldValue) : false;
2771
2865
  if (changed) {
2772
2866
  this.dataValue = newValue;
2773
2867
  changed = this.dataValue !== oldValue;
@@ -2791,7 +2885,7 @@ export default class Component extends Element {
2791
2885
  className: this.iconClass(name),
2792
2886
  ref,
2793
2887
  styles,
2794
- content
2888
+ content,
2795
2889
  });
2796
2890
  }
2797
2891
  /**
@@ -2802,7 +2896,7 @@ export default class Component extends Element {
2802
2896
  this.setValue(this.defaultValue || this.emptyValue, {
2803
2897
  noUpdateEvent: true,
2804
2898
  noValidate: true,
2805
- resetValue: true
2899
+ resetValue: true,
2806
2900
  });
2807
2901
  }
2808
2902
  /**
@@ -2812,15 +2906,12 @@ export default class Component extends Element {
2812
2906
  * @returns {boolean} - TRUE if the value has changed.
2813
2907
  */
2814
2908
  hasChanged(newValue, oldValue) {
2815
- if (((newValue === undefined) || (newValue === null)) &&
2816
- ((oldValue === undefined) || (oldValue === null) || this.isEmpty(oldValue))) {
2909
+ if ((newValue === undefined || newValue === null) &&
2910
+ (oldValue === undefined || oldValue === null || this.isEmpty(oldValue))) {
2817
2911
  return false;
2818
2912
  }
2819
2913
  // If we do not have a value and are getting set to anything other than undefined or null, then we changed.
2820
- if (newValue !== undefined &&
2821
- newValue !== null &&
2822
- this.allowData &&
2823
- !this.hasValue()) {
2914
+ if (newValue !== undefined && newValue !== null && this.allowData && !this.hasValue()) {
2824
2915
  return true;
2825
2916
  }
2826
2917
  return !_.isEqual(newValue, oldValue);
@@ -2854,11 +2945,10 @@ export default class Component extends Element {
2854
2945
  data,
2855
2946
  row: row || this.data,
2856
2947
  submission: this.root?._submission || {
2857
- data: this.rootValue
2858
- }
2948
+ data: this.rootValue,
2949
+ },
2859
2950
  }, 'value');
2860
2951
  }
2861
- /* eslint-disable max-statements */
2862
2952
  calculateComponentValue(data, flags, row) {
2863
2953
  // Skip value calculation for the component if we don't have entire form data set or in builder mode
2864
2954
  if (this.builderMode || _.isUndefined(_.get(this, 'root.data'))) {
@@ -2879,7 +2969,10 @@ export default class Component extends Element {
2879
2969
  !(this.component.calculateValue || this.component.calculateValueVariable) ||
2880
2970
  (this.options.server && !this.component.calculateServer) ||
2881
2971
  (flags.dataSourceInitialLoading && allowOverride) ||
2882
- (this.options.readOnly && this.options.pdf && allowOverride && _.get(this.root, 'submission._id', false))) {
2972
+ (this.options.readOnly &&
2973
+ this.options.pdf &&
2974
+ allowOverride &&
2975
+ _.get(this.root, 'submission._id', false))) {
2883
2976
  return false;
2884
2977
  }
2885
2978
  const dataValue = this.dataValue;
@@ -2895,7 +2988,7 @@ export default class Component extends Element {
2895
2988
  // Do not override calculations on server if they have calculateServer set.
2896
2989
  if (allowOverride) {
2897
2990
  // The value is considered locked if it is not empty and comes from a submission value.
2898
- const fromSubmission = (flags.fromSubmission && this.component.persistent === true);
2991
+ const fromSubmission = flags.fromSubmission && this.component.persistent === true;
2899
2992
  if (this.isEmpty(dataValue)) {
2900
2993
  // Reset the calculation lock if ever the data is cleared.
2901
2994
  this.calculationLocked = false;
@@ -2904,7 +2997,7 @@ export default class Component extends Element {
2904
2997
  this.calculationLocked = true;
2905
2998
  return false;
2906
2999
  }
2907
- const firstPass = (this.calculatedValue === undefined) || flags.resetValue;
3000
+ const firstPass = this.calculatedValue === undefined || flags.resetValue;
2908
3001
  if (firstPass) {
2909
3002
  this.calculatedValue = null;
2910
3003
  }
@@ -2945,7 +3038,6 @@ export default class Component extends Element {
2945
3038
  }
2946
3039
  return false;
2947
3040
  }
2948
- /* eslint-enable max-statements */
2949
3041
  /**
2950
3042
  * Performs calculations in this component plus any child components.
2951
3043
  * @param {*} data - The data to perform the calculation with.
@@ -3020,8 +3112,8 @@ export default class Component extends Element {
3020
3112
  scope: validationScope,
3021
3113
  instance: this,
3022
3114
  processors: [
3023
- validateProcessInfo
3024
- ]
3115
+ validateProcessInfo,
3116
+ ],
3025
3117
  });
3026
3118
  const errors = validationScope.errors;
3027
3119
  const interpolatedErrors = FormioUtils.interpolateErrors(this.component, errors, this.t.bind(this));
@@ -3040,8 +3132,10 @@ export default class Component extends Element {
3040
3132
  if (silentCheck) {
3041
3133
  return [];
3042
3134
  }
3043
- const messages = errors.filter(message => !message.fromServer);
3044
- if (errors.length && !!messages.length && (!this.isEmpty(this.defaultValue) || dirty || !this.pristine)) {
3135
+ const messages = errors.filter((message) => !message.fromServer);
3136
+ if (errors.length &&
3137
+ !!messages.length &&
3138
+ (!this.isEmpty(this.defaultValue) || dirty || !this.pristine)) {
3045
3139
  return this.setCustomValidity(messages, dirty);
3046
3140
  }
3047
3141
  else {
@@ -3055,7 +3149,12 @@ export default class Component extends Element {
3055
3149
  */
3056
3150
  interpolateErrors(errors) {
3057
3151
  const interpolatedErrors = FormioUtils.interpolateErrors(this.component, errors, this.t.bind(this));
3058
- return this.serverErrors?.length ? [...interpolatedErrors, ...this.serverErrors] : interpolatedErrors;
3152
+ return this.serverErrors?.length
3153
+ ? [
3154
+ ...interpolatedErrors,
3155
+ ...this.serverErrors,
3156
+ ]
3157
+ : interpolatedErrors;
3059
3158
  }
3060
3159
  /**
3061
3160
  * Show component validation errors.
@@ -3069,7 +3168,7 @@ export default class Component extends Element {
3069
3168
  if (flags.silentCheck) {
3070
3169
  return [];
3071
3170
  }
3072
- let isDirty = (flags.dirty === false) ? false : (this.dirty || flags.dirty);
3171
+ let isDirty = flags.dirty === false ? false : this.dirty || flags.dirty;
3073
3172
  if (this.options.alwaysDirty) {
3074
3173
  isDirty = true;
3075
3174
  }
@@ -3103,8 +3202,8 @@ export default class Component extends Element {
3103
3202
  form: this.root ? this.root._form : {},
3104
3203
  scope: { errors: [] },
3105
3204
  processors: [
3106
- validateProcessInfo
3107
- ]
3205
+ validateProcessInfo,
3206
+ ],
3108
3207
  };
3109
3208
  if (async) {
3110
3209
  return processOne(processContext).then(() => {
@@ -3126,7 +3225,7 @@ export default class Component extends Element {
3126
3225
  * @returns {boolean} - TRUE if the component is valid.
3127
3226
  */
3128
3227
  checkComponentValidity(data = null, dirty = false, row = null, flags = {}, allErrors = []) {
3129
- data = data || this.rootValue;
3228
+ data = this.rootValue;
3130
3229
  row = row || this.data;
3131
3230
  flags.dirty = dirty || false;
3132
3231
  if (flags.async) {
@@ -3213,13 +3312,15 @@ export default class Component extends Element {
3213
3312
  this.checkingData = false;
3214
3313
  }
3215
3314
  checkModal(errors = [], dirty = false) {
3216
- const messages = errors.filter(error => !error.fromServer);
3315
+ const messages = errors.filter((error) => !error.fromServer);
3217
3316
  const isValid = errors.length === 0;
3218
3317
  if (!this.component.modalEdit || !this.componentModal) {
3219
3318
  return;
3220
3319
  }
3221
3320
  if (dirty && !isValid) {
3222
- this.setErrorClasses([this.refs.openModal], dirty, !isValid, !!messages.length, this.refs.openModalWrapper);
3321
+ this.setErrorClasses([
3322
+ this.refs.openModal,
3323
+ ], dirty, !isValid, !!messages.length, this.refs.openModalWrapper);
3223
3324
  }
3224
3325
  else {
3225
3326
  this.clearErrorClasses(this.refs.openModalWrapper);
@@ -3229,7 +3330,7 @@ export default class Component extends Element {
3229
3330
  return this.dataValue;
3230
3331
  }
3231
3332
  isEmpty(value = this.dataValue) {
3232
- const isEmptyArray = (_.isArray(value) && value.length === 1) ? _.isEqual(value[0], this.emptyValue) : false;
3333
+ const isEmptyArray = _.isArray(value) && value.length === 1 ? _.isEqual(value[0], this.emptyValue) : false;
3233
3334
  return value == null || value.length === 0 || _.isEqual(value, this.emptyValue) || isEmptyArray;
3234
3335
  }
3235
3336
  isEqual(valueA, valueB = this.dataValue) {
@@ -3280,7 +3381,7 @@ export default class Component extends Element {
3280
3381
  instance: this,
3281
3382
  component: this.component,
3282
3383
  value: this.dataValue,
3283
- flags: { fromBlur: true }
3384
+ flags: { fromBlur: true },
3284
3385
  });
3285
3386
  }
3286
3387
  this.root.focusedComponent = null;
@@ -3288,7 +3389,6 @@ export default class Component extends Element {
3288
3389
  });
3289
3390
  });
3290
3391
  }
3291
- // eslint-disable-next-line max-statements
3292
3392
  setCustomValidity(messages, dirty, external) {
3293
3393
  const inputRefs = this.isInputComponent ? this.refs.input || [] : null;
3294
3394
  if (typeof messages === 'string' && messages) {
@@ -3300,13 +3400,15 @@ export default class Component extends Element {
3300
3400
  }
3301
3401
  if (!Array.isArray(messages)) {
3302
3402
  if (messages) {
3303
- messages = [messages];
3403
+ messages = [
3404
+ messages,
3405
+ ];
3304
3406
  }
3305
3407
  else {
3306
3408
  messages = [];
3307
3409
  }
3308
3410
  }
3309
- const errors = messages.filter(message => message.level === 'error');
3411
+ const errors = messages.filter((message) => message.level === 'error');
3310
3412
  let invalidInputRefs = inputRefs;
3311
3413
  // Filter the invalid input refs in multiple components
3312
3414
  if (this.component.multiple) {
@@ -3337,7 +3439,7 @@ export default class Component extends Element {
3337
3439
  this.setErrorClasses(invalidInputRefs, dirty, !!errors.length, !!messages.length);
3338
3440
  }
3339
3441
  }
3340
- else if (!errors.length || (errors[0].external === !!external)) {
3442
+ else if (!errors.length || errors[0].external === !!external) {
3341
3443
  if (this.refs.messageContainer) {
3342
3444
  this.empty(this.refs.messageContainer);
3343
3445
  }
@@ -3367,7 +3469,9 @@ export default class Component extends Element {
3367
3469
  if (!this.root || !this.root.editing) {
3368
3470
  return false;
3369
3471
  }
3370
- return (this.component.protected || !this.component.persistent || (this.component.persistent === 'client-only'));
3472
+ return (this.component.protected ||
3473
+ !this.component.persistent ||
3474
+ this.component.persistent === 'client-only');
3371
3475
  }
3372
3476
  shouldSkipValidation(data, row, flags = {}) {
3373
3477
  const rules = [
@@ -3381,15 +3485,16 @@ export default class Component extends Element {
3381
3485
  () => this.isValueHidden(),
3382
3486
  // Force valid if component is hidden.
3383
3487
  () => {
3384
- if (!this.component.validateWhenHidden && (!this.visible || !this.checkCondition(row, data))) {
3488
+ if (!this.component.validateWhenHidden &&
3489
+ (!this.visible || !this.checkCondition(row, data))) {
3385
3490
  // If this component is forced valid when it is hidden, then we also need to reset the errors for this component.
3386
3491
  this._errors = [];
3387
3492
  return true;
3388
3493
  }
3389
3494
  return false;
3390
- }
3495
+ },
3391
3496
  ];
3392
- return rules.some(pred => pred());
3497
+ return rules.some((pred) => pred());
3393
3498
  }
3394
3499
  // Maintain reverse compatibility.
3395
3500
  whenReady() {
@@ -3406,7 +3511,13 @@ export default class Component extends Element {
3406
3511
  */
3407
3512
  asString(value) {
3408
3513
  value = value || this.getValue();
3409
- return (Array.isArray(value) ? value : [value]).map(_.toString).join(', ');
3514
+ return (Array.isArray(value)
3515
+ ? value
3516
+ : [
3517
+ value,
3518
+ ])
3519
+ .map(_.toString)
3520
+ .join(', ');
3410
3521
  }
3411
3522
  /**
3412
3523
  * Return if the component is disabled.
@@ -3435,13 +3546,13 @@ export default class Component extends Element {
3435
3546
  }
3436
3547
  }
3437
3548
  setLoading(element, loading) {
3438
- if (!element || (element.loading === loading)) {
3549
+ if (!element || element.loading === loading) {
3439
3550
  return;
3440
3551
  }
3441
3552
  element.loading = loading;
3442
3553
  if (!element.loader && loading) {
3443
3554
  element.loader = this.ce('i', {
3444
- class: `${this.iconClass('refresh', true)} button-icon-right`
3555
+ class: `${this.iconClass('refresh', true)} button-icon-right`,
3445
3556
  });
3446
3557
  }
3447
3558
  if (element.loader) {
@@ -3456,9 +3567,9 @@ export default class Component extends Element {
3456
3567
  selectOptions(select, tag, options, defaultValue) {
3457
3568
  _.each(options, (option) => {
3458
3569
  const attrs = {
3459
- value: option.value
3570
+ value: option.value,
3460
3571
  };
3461
- if (defaultValue !== undefined && (option.value === defaultValue)) {
3572
+ if (defaultValue !== undefined && option.value === defaultValue) {
3462
3573
  attrs.selected = 'selected';
3463
3574
  }
3464
3575
  const optionElement = this.ce('option', attrs);
@@ -3485,8 +3596,7 @@ export default class Component extends Element {
3485
3596
  }
3486
3597
  getRelativePath(path) {
3487
3598
  const keyPart = `.${this.key}`;
3488
- const thisPath = this.isInputComponent ? this.path
3489
- : this.path.slice(0).replace(keyPart, '');
3599
+ const thisPath = this.isInputComponent ? this.path : this.path.slice(0).replace(keyPart, '');
3490
3600
  return path.replace(thisPath, '');
3491
3601
  }
3492
3602
  clear() {
@@ -3503,7 +3613,7 @@ export default class Component extends Element {
3503
3613
  this.removeChildFrom(element, this.element);
3504
3614
  }
3505
3615
  detachLogic() {
3506
- this.logic.forEach(logic => {
3616
+ this.logic.forEach((logic) => {
3507
3617
  if (logic.trigger.type === 'event') {
3508
3618
  const event = this.interpolate(logic.trigger.event);
3509
3619
  this.off(event); // only applies to callbacks on this component
@@ -3524,10 +3634,16 @@ export default class Component extends Element {
3524
3634
  // If component definition changed, replace it.
3525
3635
  if (!_.isEqual(this.component, newComponent)) {
3526
3636
  this.component = newComponent;
3527
- const visible = this.hasCondition() ? !this.conditionallyHidden() : !this.component.hidden;
3637
+ const visible = this.hasCondition()
3638
+ ? !this.conditionallyHidden()
3639
+ : !this.component.hidden;
3528
3640
  const disabled = this.shouldDisabled;
3529
3641
  // Change states which won't be recalculated during redrawing
3530
3642
  if (this.visible !== visible) {
3643
+ // If the logic is triggered by an event and the action sets the hidden state then the original
3644
+ // component definition must be changed so that the components hidden state does not get flipped back by
3645
+ // the fieldLogic function
3646
+ this.originalComponent.hidden = !visible;
3531
3647
  this.visible = visible;
3532
3648
  }
3533
3649
  if (this.disabled !== disabled) {
@@ -3549,7 +3665,7 @@ export default class Component extends Element {
3549
3665
  name: this.options.name,
3550
3666
  type: this.component.inputType || 'text',
3551
3667
  class: 'form-control',
3552
- lang: this.options.language
3668
+ lang: this.options.language,
3553
3669
  };
3554
3670
  if (this.component.placeholder) {
3555
3671
  attributes.placeholder = this.t(this.component.placeholder, { _userInput: true });
@@ -3565,7 +3681,7 @@ export default class Component extends Element {
3565
3681
  type: 'input',
3566
3682
  component: this.component,
3567
3683
  changeEvent: 'change',
3568
- attr: attributes
3684
+ attr: attributes,
3569
3685
  };
3570
3686
  }
3571
3687
  autofocus() {
@@ -3653,14 +3769,18 @@ Component.requireLibrary = function (name, property, src, polling) {
3653
3769
  Component.externalLibraries[name].resolve(plugin);
3654
3770
  }
3655
3771
  else {
3656
- src = Array.isArray(src) ? src : [src];
3772
+ src = Array.isArray(src)
3773
+ ? src
3774
+ : [
3775
+ src,
3776
+ ];
3657
3777
  src.forEach((lib) => {
3658
3778
  let attrs = {};
3659
3779
  let elementType = '';
3660
3780
  if (typeof lib === 'string') {
3661
3781
  lib = {
3662
3782
  type: 'script',
3663
- src: lib
3783
+ src: lib,
3664
3784
  };
3665
3785
  }
3666
3786
  switch (lib.type) {
@@ -3670,14 +3790,14 @@ Component.requireLibrary = function (name, property, src, polling) {
3670
3790
  src: lib.src,
3671
3791
  type: 'text/javascript',
3672
3792
  defer: true,
3673
- async: true
3793
+ async: true,
3674
3794
  };
3675
3795
  break;
3676
3796
  case 'styles':
3677
3797
  elementType = 'link';
3678
3798
  attrs = {
3679
3799
  href: lib.src,
3680
- rel: 'stylesheet'
3800
+ rel: 'stylesheet',
3681
3801
  };
3682
3802
  break;
3683
3803
  }
@@ -3706,8 +3826,7 @@ Component.requireLibrary = function (name, property, src, polling) {
3706
3826
  return Component.externalLibraries[name].ready;
3707
3827
  };
3708
3828
  Component.libraryReady = function (name) {
3709
- if (Component.externalLibraries.hasOwnProperty(name) &&
3710
- Component.externalLibraries[name].ready) {
3829
+ if (Component.externalLibraries.hasOwnProperty(name) && Component.externalLibraries[name].ready) {
3711
3830
  return Component.externalLibraries[name].ready;
3712
3831
  }
3713
3832
  return Promise.reject(`${name} library was not required.`);