@formio/js 5.0.0-rc.18 → 5.0.0-rc.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (325) hide show
  1. package/README.md +1 -1
  2. package/dist/formio.builder.css +14 -22
  3. package/dist/formio.builder.min.css +1 -1
  4. package/dist/formio.embed.css +1 -2
  5. package/dist/formio.embed.js +2 -2
  6. package/dist/formio.embed.min.css +1 -1
  7. package/dist/formio.embed.min.js +1 -1
  8. package/dist/formio.embed.min.js.LICENSE.txt +1 -1
  9. package/dist/formio.form.css +10 -2
  10. package/dist/formio.form.js +333 -361
  11. package/dist/formio.form.min.css +1 -1
  12. package/dist/formio.form.min.js +1 -1
  13. package/dist/formio.form.min.js.LICENSE.txt +3 -8
  14. package/dist/formio.full.css +14 -22
  15. package/dist/formio.full.js +353 -370
  16. package/dist/formio.full.min.css +1 -1
  17. package/dist/formio.full.min.js +1 -1
  18. package/dist/formio.full.min.js.LICENSE.txt +3 -8
  19. package/dist/formio.js +208 -121
  20. package/dist/formio.min.js +1 -1
  21. package/dist/formio.min.js.LICENSE.txt +2 -7
  22. package/dist/formio.utils.js +220 -13
  23. package/dist/formio.utils.min.js +1 -1
  24. package/dist/formio.utils.min.js.LICENSE.txt +2 -7
  25. package/lib/cjs/CDN.js +1 -1
  26. package/lib/cjs/Element.js +7 -2
  27. package/lib/cjs/Embed.js +1 -1
  28. package/lib/cjs/Form.d.ts +8 -5
  29. package/lib/cjs/Form.js +52 -10
  30. package/lib/cjs/PDF.d.ts +11 -3
  31. package/lib/cjs/PDF.js +4 -5
  32. package/lib/cjs/PDFBuilder.js +2 -3
  33. package/lib/cjs/Webform.d.ts +4 -7
  34. package/lib/cjs/Webform.js +40 -119
  35. package/lib/cjs/WebformBuilder.d.ts +6 -1
  36. package/lib/cjs/WebformBuilder.js +104 -64
  37. package/lib/cjs/Wizard.d.ts +8 -5
  38. package/lib/cjs/Wizard.js +14 -14
  39. package/lib/cjs/WizardBuilder.d.ts +6 -4
  40. package/lib/cjs/WizardBuilder.js +20 -3
  41. package/lib/cjs/addons/FormioAddon.d.ts +1 -1
  42. package/lib/cjs/addons/FormioAddon.js +1 -2
  43. package/lib/cjs/components/_classes/component/Component.d.ts +17 -8
  44. package/lib/cjs/components/_classes/component/Component.js +52 -18
  45. package/lib/cjs/components/_classes/input/Input.d.ts +1 -1
  46. package/lib/cjs/components/_classes/input/Input.js +1 -2
  47. package/lib/cjs/components/_classes/list/ListComponent.d.ts +4 -0
  48. package/lib/cjs/components/_classes/list/ListComponent.js +43 -6
  49. package/lib/cjs/components/_classes/multivalue/Multivalue.d.ts +1 -0
  50. package/lib/cjs/components/_classes/multivalue/Multivalue.js +10 -4
  51. package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +5 -2
  52. package/lib/cjs/components/_classes/nested/NestedComponent.js +11 -12
  53. package/lib/cjs/components/address/Address.d.ts +8 -0
  54. package/lib/cjs/components/button/Button.js +2 -3
  55. package/lib/cjs/components/checkbox/Checkbox.d.ts +13 -0
  56. package/lib/cjs/components/checkbox/Checkbox.js +17 -5
  57. package/lib/cjs/components/columns/Columns.d.ts +1 -0
  58. package/lib/cjs/components/columns/Columns.js +1 -0
  59. package/lib/cjs/components/container/Container.d.ts +1 -0
  60. package/lib/cjs/components/container/Container.js +1 -0
  61. package/lib/cjs/components/content/Content.d.ts +1 -0
  62. package/lib/cjs/components/content/Content.js +1 -2
  63. package/lib/cjs/components/currency/editForm/Currency.edit.data.d.ts +14 -2
  64. package/lib/cjs/components/currency/editForm/Currency.edit.data.js +4 -0
  65. package/lib/cjs/components/currency/editForm/Currency.edit.display.js +4 -0
  66. package/lib/cjs/components/datagrid/DataGrid.d.ts +1 -0
  67. package/lib/cjs/components/datagrid/DataGrid.js +8 -1
  68. package/lib/cjs/components/datamap/DataMap.js +1 -0
  69. package/lib/cjs/components/datetime/DateTime.d.ts +4 -0
  70. package/lib/cjs/components/datetime/DateTime.js +21 -1
  71. package/lib/cjs/components/day/Day.d.ts +1 -1
  72. package/lib/cjs/components/day/Day.js +22 -6
  73. package/lib/cjs/components/day/fixtures/comp3.js +2 -2
  74. package/lib/cjs/components/editgrid/EditGrid.d.ts +4 -3
  75. package/lib/cjs/components/editgrid/EditGrid.js +11 -6
  76. package/lib/cjs/components/editgrid/fixtures/comp-with-custom-default-value.d.ts +190 -0
  77. package/lib/cjs/components/editgrid/fixtures/comp-with-custom-default-value.js +227 -0
  78. package/lib/cjs/components/editgrid/fixtures/comp15.d.ts +54 -0
  79. package/lib/cjs/components/editgrid/fixtures/comp15.js +51 -0
  80. package/lib/cjs/components/editgrid/fixtures/index.d.ts +3 -1
  81. package/lib/cjs/components/editgrid/fixtures/index.js +5 -1
  82. package/lib/cjs/components/fieldset/Fieldset.d.ts +1 -0
  83. package/lib/cjs/components/fieldset/Fieldset.js +1 -0
  84. package/lib/cjs/components/file/File.d.ts +7 -5
  85. package/lib/cjs/components/file/File.js +26 -9
  86. package/lib/cjs/components/file/editForm/File.edit.file.d.ts +62 -0
  87. package/lib/cjs/components/file/editForm/File.edit.file.js +29 -2
  88. package/lib/cjs/components/form/Form.d.ts +3 -0
  89. package/lib/cjs/components/form/Form.js +9 -10
  90. package/lib/cjs/components/hidden/Hidden.d.ts +1 -0
  91. package/lib/cjs/components/hidden/Hidden.js +1 -0
  92. package/lib/cjs/components/html/HTML.d.ts +1 -0
  93. package/lib/cjs/components/html/HTML.js +1 -0
  94. package/lib/cjs/components/number/Number.d.ts +5 -1
  95. package/lib/cjs/components/number/Number.js +24 -7
  96. package/lib/cjs/components/phonenumber/PhoneNumber.form.js +9 -0
  97. package/lib/cjs/components/radio/Radio.d.ts +5 -3
  98. package/lib/cjs/components/radio/Radio.js +59 -18
  99. package/lib/cjs/components/recaptcha/ReCaptcha.d.ts +1 -1
  100. package/lib/cjs/components/recaptcha/ReCaptcha.js +4 -5
  101. package/lib/cjs/components/resource/Resource.d.ts +7 -0
  102. package/lib/cjs/components/resource/Resource.js +0 -1
  103. package/lib/cjs/components/resource/editForm/Resource.edit.display.js +1 -1
  104. package/lib/cjs/components/select/Select.d.ts +7 -5
  105. package/lib/cjs/components/select/Select.js +15 -49
  106. package/lib/cjs/components/selectboxes/SelectBoxes.d.ts +12 -0
  107. package/lib/cjs/components/selectboxes/SelectBoxes.js +53 -25
  108. package/lib/cjs/components/selectboxes/fixtures/comp4.d.ts +30 -27
  109. package/lib/cjs/components/selectboxes/fixtures/comp4.js +47 -32
  110. package/lib/cjs/components/selectboxes/fixtures/comp6.d.ts +14 -0
  111. package/lib/cjs/components/selectboxes/fixtures/comp6.js +15 -0
  112. package/lib/cjs/components/selectboxes/fixtures/index.d.ts +2 -1
  113. package/lib/cjs/components/selectboxes/fixtures/index.js +3 -1
  114. package/lib/cjs/components/signature/Signature.d.ts +1 -1
  115. package/lib/cjs/components/signature/Signature.js +8 -3
  116. package/lib/cjs/components/survey/Survey.js +3 -0
  117. package/lib/cjs/components/table/Table.d.ts +1 -0
  118. package/lib/cjs/components/table/Table.js +1 -0
  119. package/lib/cjs/components/tabs/Tabs.d.ts +1 -0
  120. package/lib/cjs/components/tabs/Tabs.js +1 -0
  121. package/lib/cjs/components/tags/Tags.js +3 -0
  122. package/lib/cjs/components/textarea/TextArea.d.ts +3 -2
  123. package/lib/cjs/components/textarea/TextArea.js +4 -5
  124. package/lib/cjs/components/textarea/fixtures/comp4.d.ts +30 -0
  125. package/lib/cjs/components/textarea/fixtures/comp4.js +27 -0
  126. package/lib/cjs/components/textarea/fixtures/index.d.ts +2 -1
  127. package/lib/cjs/components/textarea/fixtures/index.js +3 -1
  128. package/lib/cjs/components/textfield/TextField.d.ts +1 -0
  129. package/lib/cjs/components/textfield/TextField.js +5 -3
  130. package/lib/cjs/components/time/Time.d.ts +4 -0
  131. package/lib/cjs/components/time/Time.js +6 -1
  132. package/lib/cjs/components/tree/Tree.d.ts +5 -4
  133. package/lib/cjs/components/tree/Tree.form.js +5 -0
  134. package/lib/cjs/components/tree/Tree.js +8 -9
  135. package/lib/cjs/components/tree/editForm/Tree.edit.display.d.ts +9 -0
  136. package/lib/cjs/components/tree/editForm/Tree.edit.display.js +12 -0
  137. package/lib/cjs/components/well/Well.d.ts +1 -0
  138. package/lib/cjs/components/well/Well.js +1 -0
  139. package/lib/cjs/providers/Providers.d.ts +31 -11
  140. package/lib/cjs/providers/address/GoogleAddressProvider.d.ts +2 -2
  141. package/lib/cjs/providers/address/GoogleAddressProvider.js +2 -3
  142. package/lib/cjs/providers/processor/fileProcessor.d.ts +1 -1
  143. package/lib/cjs/providers/processor/fileProcessor.js +1 -5
  144. package/lib/cjs/providers/storage/azure.d.ts +10 -1
  145. package/lib/cjs/providers/storage/azure.js +7 -2
  146. package/lib/cjs/providers/storage/base64.d.ts +2 -2
  147. package/lib/cjs/providers/storage/base64.js +2 -6
  148. package/lib/cjs/providers/storage/dropbox.d.ts +2 -2
  149. package/lib/cjs/providers/storage/dropbox.js +2 -6
  150. package/lib/cjs/providers/storage/googleDrive.d.ts +3 -2
  151. package/lib/cjs/providers/storage/googleDrive.js +6 -6
  152. package/lib/cjs/providers/storage/indexeddb.d.ts +3 -3
  153. package/lib/cjs/providers/storage/indexeddb.js +9 -13
  154. package/lib/cjs/providers/storage/s3.d.ts +11 -1
  155. package/lib/cjs/providers/storage/s3.js +5 -2
  156. package/lib/cjs/providers/storage/uploadAdapter.js +1 -5
  157. package/lib/cjs/providers/storage/url.d.ts +2 -2
  158. package/lib/cjs/providers/storage/url.js +12 -8
  159. package/lib/cjs/providers/storage/xhr.d.ts +1 -1
  160. package/lib/cjs/providers/storage/xhr.js +1 -2
  161. package/lib/cjs/templates/index.d.ts +226 -1
  162. package/lib/cjs/utils/Evaluator.js +4 -33
  163. package/lib/cjs/utils/i18n.d.ts +16 -0
  164. package/lib/cjs/utils/i18n.js +88 -0
  165. package/lib/cjs/utils/utils.d.ts +1 -1
  166. package/lib/cjs/utils/utils.js +8 -9
  167. package/lib/cjs/validator/Validator.d.ts +30 -2
  168. package/lib/cjs/validator/Validator.js +32 -9
  169. package/lib/cjs/validator/rules/Select.js +1 -2
  170. package/lib/cjs/validator/rules/Unique.d.ts +1 -1
  171. package/lib/cjs/validator/rules/Unique.js +1 -2
  172. package/lib/cjs/widgets/CalendarWidget.d.ts +1 -0
  173. package/lib/cjs/widgets/InputWidget.d.ts +1 -1
  174. package/lib/cjs/widgets/InputWidget.js +1 -2
  175. package/lib/mjs/CDN.js +1 -1
  176. package/lib/mjs/Element.js +6 -2
  177. package/lib/mjs/Embed.js +4 -1
  178. package/lib/mjs/Form.d.ts +8 -5
  179. package/lib/mjs/Form.js +52 -10
  180. package/lib/mjs/PDF.d.ts +11 -3
  181. package/lib/mjs/PDF.js +4 -5
  182. package/lib/mjs/PDFBuilder.js +2 -3
  183. package/lib/mjs/Webform.d.ts +4 -7
  184. package/lib/mjs/Webform.js +40 -122
  185. package/lib/mjs/WebformBuilder.d.ts +6 -1
  186. package/lib/mjs/WebformBuilder.js +102 -64
  187. package/lib/mjs/Wizard.d.ts +8 -5
  188. package/lib/mjs/Wizard.js +14 -14
  189. package/lib/mjs/WizardBuilder.d.ts +6 -4
  190. package/lib/mjs/WizardBuilder.js +20 -3
  191. package/lib/mjs/addons/FormioAddon.d.ts +1 -1
  192. package/lib/mjs/addons/FormioAddon.js +1 -2
  193. package/lib/mjs/components/_classes/component/Component.d.ts +17 -8
  194. package/lib/mjs/components/_classes/component/Component.js +52 -18
  195. package/lib/mjs/components/_classes/input/Input.d.ts +1 -1
  196. package/lib/mjs/components/_classes/input/Input.js +1 -2
  197. package/lib/mjs/components/_classes/list/ListComponent.d.ts +4 -0
  198. package/lib/mjs/components/_classes/list/ListComponent.js +43 -5
  199. package/lib/mjs/components/_classes/multivalue/Multivalue.d.ts +1 -0
  200. package/lib/mjs/components/_classes/multivalue/Multivalue.js +10 -4
  201. package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +5 -2
  202. package/lib/mjs/components/_classes/nested/NestedComponent.js +11 -12
  203. package/lib/mjs/components/address/Address.d.ts +8 -0
  204. package/lib/mjs/components/button/Button.js +2 -3
  205. package/lib/mjs/components/checkbox/Checkbox.d.ts +13 -0
  206. package/lib/mjs/components/checkbox/Checkbox.js +21 -5
  207. package/lib/mjs/components/columns/Columns.d.ts +1 -0
  208. package/lib/mjs/components/columns/Columns.js +1 -0
  209. package/lib/mjs/components/container/Container.d.ts +1 -0
  210. package/lib/mjs/components/container/Container.js +1 -0
  211. package/lib/mjs/components/content/Content.d.ts +1 -0
  212. package/lib/mjs/components/content/Content.js +1 -2
  213. package/lib/mjs/components/currency/editForm/Currency.edit.data.d.ts +14 -2
  214. package/lib/mjs/components/currency/editForm/Currency.edit.data.js +4 -0
  215. package/lib/mjs/components/currency/editForm/Currency.edit.display.js +4 -0
  216. package/lib/mjs/components/datagrid/DataGrid.d.ts +1 -0
  217. package/lib/mjs/components/datagrid/DataGrid.js +8 -1
  218. package/lib/mjs/components/datamap/DataMap.js +1 -0
  219. package/lib/mjs/components/datetime/DateTime.d.ts +4 -0
  220. package/lib/mjs/components/datetime/DateTime.js +28 -1
  221. package/lib/mjs/components/day/Day.d.ts +1 -1
  222. package/lib/mjs/components/day/Day.js +25 -6
  223. package/lib/mjs/components/day/fixtures/comp3.js +2 -2
  224. package/lib/mjs/components/editgrid/EditGrid.d.ts +4 -3
  225. package/lib/mjs/components/editgrid/EditGrid.js +11 -6
  226. package/lib/mjs/components/editgrid/fixtures/comp-with-custom-default-value.d.ts +190 -0
  227. package/lib/mjs/components/editgrid/fixtures/comp-with-custom-default-value.js +225 -0
  228. package/lib/mjs/components/editgrid/fixtures/comp15.d.ts +54 -0
  229. package/lib/mjs/components/editgrid/fixtures/comp15.js +49 -0
  230. package/lib/mjs/components/editgrid/fixtures/index.d.ts +3 -1
  231. package/lib/mjs/components/editgrid/fixtures/index.js +3 -1
  232. package/lib/mjs/components/fieldset/Fieldset.d.ts +1 -0
  233. package/lib/mjs/components/fieldset/Fieldset.js +1 -0
  234. package/lib/mjs/components/file/File.d.ts +7 -5
  235. package/lib/mjs/components/file/File.js +29 -9
  236. package/lib/mjs/components/file/editForm/File.edit.file.d.ts +62 -0
  237. package/lib/mjs/components/file/editForm/File.edit.file.js +29 -2
  238. package/lib/mjs/components/form/Form.d.ts +3 -0
  239. package/lib/mjs/components/form/Form.js +9 -10
  240. package/lib/mjs/components/hidden/Hidden.d.ts +1 -0
  241. package/lib/mjs/components/hidden/Hidden.js +1 -0
  242. package/lib/mjs/components/html/HTML.d.ts +1 -0
  243. package/lib/mjs/components/html/HTML.js +1 -0
  244. package/lib/mjs/components/number/Number.d.ts +5 -1
  245. package/lib/mjs/components/number/Number.js +24 -7
  246. package/lib/mjs/components/phonenumber/PhoneNumber.form.js +9 -0
  247. package/lib/mjs/components/radio/Radio.d.ts +5 -3
  248. package/lib/mjs/components/radio/Radio.js +59 -18
  249. package/lib/mjs/components/recaptcha/ReCaptcha.d.ts +1 -1
  250. package/lib/mjs/components/recaptcha/ReCaptcha.js +4 -5
  251. package/lib/mjs/components/resource/Resource.d.ts +7 -0
  252. package/lib/mjs/components/resource/Resource.js +0 -1
  253. package/lib/mjs/components/resource/editForm/Resource.edit.display.js +1 -1
  254. package/lib/mjs/components/select/Select.d.ts +7 -5
  255. package/lib/mjs/components/select/Select.js +18 -49
  256. package/lib/mjs/components/selectboxes/SelectBoxes.d.ts +12 -0
  257. package/lib/mjs/components/selectboxes/SelectBoxes.js +56 -25
  258. package/lib/mjs/components/selectboxes/fixtures/comp4.d.ts +30 -27
  259. package/lib/mjs/components/selectboxes/fixtures/comp4.js +47 -32
  260. package/lib/mjs/components/selectboxes/fixtures/comp6.d.ts +14 -0
  261. package/lib/mjs/components/selectboxes/fixtures/comp6.js +13 -0
  262. package/lib/mjs/components/selectboxes/fixtures/index.d.ts +2 -1
  263. package/lib/mjs/components/selectboxes/fixtures/index.js +2 -1
  264. package/lib/mjs/components/signature/Signature.d.ts +1 -1
  265. package/lib/mjs/components/signature/Signature.js +11 -3
  266. package/lib/mjs/components/survey/Survey.js +6 -0
  267. package/lib/mjs/components/table/Table.d.ts +1 -0
  268. package/lib/mjs/components/table/Table.js +1 -0
  269. package/lib/mjs/components/tabs/Tabs.d.ts +1 -0
  270. package/lib/mjs/components/tabs/Tabs.js +1 -0
  271. package/lib/mjs/components/tags/Tags.js +6 -0
  272. package/lib/mjs/components/textarea/TextArea.d.ts +3 -2
  273. package/lib/mjs/components/textarea/TextArea.js +4 -5
  274. package/lib/mjs/components/textarea/fixtures/comp4.d.ts +30 -0
  275. package/lib/mjs/components/textarea/fixtures/comp4.js +25 -0
  276. package/lib/mjs/components/textarea/fixtures/index.d.ts +2 -1
  277. package/lib/mjs/components/textarea/fixtures/index.js +2 -1
  278. package/lib/mjs/components/textfield/TextField.d.ts +1 -0
  279. package/lib/mjs/components/textfield/TextField.js +8 -3
  280. package/lib/mjs/components/time/Time.d.ts +4 -0
  281. package/lib/mjs/components/time/Time.js +12 -1
  282. package/lib/mjs/components/tree/Tree.d.ts +5 -4
  283. package/lib/mjs/components/tree/Tree.form.js +5 -0
  284. package/lib/mjs/components/tree/Tree.js +8 -9
  285. package/lib/mjs/components/tree/editForm/Tree.edit.display.d.ts +9 -0
  286. package/lib/mjs/components/tree/editForm/Tree.edit.display.js +10 -0
  287. package/lib/mjs/components/well/Well.d.ts +1 -0
  288. package/lib/mjs/components/well/Well.js +1 -0
  289. package/lib/mjs/providers/Providers.d.ts +31 -11
  290. package/lib/mjs/providers/address/GoogleAddressProvider.d.ts +2 -2
  291. package/lib/mjs/providers/address/GoogleAddressProvider.js +2 -3
  292. package/lib/mjs/providers/processor/fileProcessor.d.ts +1 -1
  293. package/lib/mjs/providers/processor/fileProcessor.js +1 -2
  294. package/lib/mjs/providers/storage/azure.d.ts +10 -1
  295. package/lib/mjs/providers/storage/azure.js +7 -2
  296. package/lib/mjs/providers/storage/base64.d.ts +2 -2
  297. package/lib/mjs/providers/storage/base64.js +2 -3
  298. package/lib/mjs/providers/storage/dropbox.d.ts +2 -2
  299. package/lib/mjs/providers/storage/dropbox.js +2 -3
  300. package/lib/mjs/providers/storage/googleDrive.d.ts +3 -2
  301. package/lib/mjs/providers/storage/googleDrive.js +6 -3
  302. package/lib/mjs/providers/storage/indexeddb.d.ts +3 -3
  303. package/lib/mjs/providers/storage/indexeddb.js +9 -10
  304. package/lib/mjs/providers/storage/s3.d.ts +11 -1
  305. package/lib/mjs/providers/storage/s3.js +5 -2
  306. package/lib/mjs/providers/storage/uploadAdapter.js +1 -2
  307. package/lib/mjs/providers/storage/url.d.ts +2 -2
  308. package/lib/mjs/providers/storage/url.js +12 -5
  309. package/lib/mjs/providers/storage/xhr.d.ts +1 -1
  310. package/lib/mjs/providers/storage/xhr.js +1 -2
  311. package/lib/mjs/templates/index.d.ts +226 -1
  312. package/lib/mjs/utils/Evaluator.js +4 -33
  313. package/lib/mjs/utils/i18n.d.ts +16 -0
  314. package/lib/mjs/utils/i18n.js +81 -0
  315. package/lib/mjs/utils/utils.d.ts +1 -1
  316. package/lib/mjs/utils/utils.js +8 -9
  317. package/lib/mjs/validator/Validator.d.ts +30 -2
  318. package/lib/mjs/validator/Validator.js +31 -9
  319. package/lib/mjs/validator/rules/Select.js +1 -2
  320. package/lib/mjs/validator/rules/Unique.d.ts +1 -1
  321. package/lib/mjs/validator/rules/Unique.js +1 -2
  322. package/lib/mjs/widgets/CalendarWidget.d.ts +1 -0
  323. package/lib/mjs/widgets/InputWidget.d.ts +1 -1
  324. package/lib/mjs/widgets/InputWidget.js +1 -2
  325. package/package.json +24 -25
@@ -21,7 +21,7 @@ export class ValidationChecker {
21
21
  key: string;
22
22
  hasLabel: boolean;
23
23
  message(component: any): any;
24
- check(component: any, setting: any, value: any): any;
24
+ check(component: any, setting: any, value: any): true | Promise<any>;
25
25
  };
26
26
  multiple: {
27
27
  key: string;
@@ -170,7 +170,35 @@ export class ValidationChecker {
170
170
  };
171
171
  };
172
172
  checkValidator(component: any, validator: any, setting: any, value: any, data: any, index: any, row: any, async: any): any;
173
- validate(component: any, validatorName: any, value: any, data: any, index: any, row: any, async: any, conditionallyVisible: any, validationObj: any): any;
173
+ validate(component: any, validatorName: any, value: any, data: any, index: any, row: any, async: any, conditionallyVisible: any, validationObj: any): false | {
174
+ message: string;
175
+ level: string;
176
+ path: any;
177
+ context: {
178
+ validator: any;
179
+ hasLabel: any;
180
+ setting: any;
181
+ key: any;
182
+ label: any;
183
+ value: any;
184
+ index: any;
185
+ input: any;
186
+ };
187
+ } | Promise<false | {
188
+ message: string;
189
+ level: string;
190
+ path: any;
191
+ context: {
192
+ validator: any;
193
+ hasLabel: any;
194
+ setting: any;
195
+ key: any;
196
+ label: any;
197
+ value: any;
198
+ index: any;
199
+ input: any;
200
+ };
201
+ }>;
174
202
  checkComponent(component: any, data: any, row: any, includeWarnings?: boolean, async?: boolean): any;
175
203
  /**
176
204
  * Use the new validations engine to evaluate any errors.
@@ -7,10 +7,9 @@ exports.ValidationChecker = exports.default = void 0;
7
7
  const lodash_1 = __importDefault(require("lodash"));
8
8
  const utils_1 = require("../utils/utils");
9
9
  const moment_1 = __importDefault(require("moment"));
10
- const native_promise_only_1 = __importDefault(require("native-promise-only"));
11
10
  const fetch_ponyfill_1 = __importDefault(require("fetch-ponyfill"));
12
11
  const { fetch, Headers, Request } = (0, fetch_ponyfill_1.default)({
13
- Promise: native_promise_only_1.default
12
+ Promise: Promise
14
13
  });
15
14
  const calendarUtils_1 = require("../utils/calendarUtils");
16
15
  const Rules_1 = __importDefault(require("./Rules"));
@@ -75,7 +74,8 @@ class ValidationChecker {
75
74
  if (!this.config.db) {
76
75
  return true;
77
76
  }
78
- return new native_promise_only_1.default(resolve => {
77
+ return new Promise(resolve => {
78
+ var _a;
79
79
  const form = this.config.form;
80
80
  const submission = this.config.submission;
81
81
  const path = `data.${component.path}`;
@@ -101,10 +101,19 @@ class ValidationChecker {
101
101
  };
102
102
  // Build the query
103
103
  const query = { form: form._id };
104
+ let collationOptions = {};
104
105
  if (lodash_1.default.isString(value)) {
105
106
  if (component.component.dbIndex) {
106
107
  addPathQueryParams(value, query, path);
107
108
  }
109
+ // These are kind of hacky but provides for a more efficient "unique" validation when the string is an email,
110
+ // because we (by and large) only have to worry about ASCII and partial unicode; this way, we can use collation-
111
+ // aware indexes with case insensitive email searches to make things like login and registration a whole lot faster
112
+ else if (component.component.type === 'email' ||
113
+ (component.component.type === 'textfield' && ((_a = component.component.validate) === null || _a === void 0 ? void 0 : _a.pattern) === '[A-Za-z0-9]+')) {
114
+ addPathQueryParams(value, query, path);
115
+ collationOptions = { collation: { locale: 'en', strength: 2 } };
116
+ }
108
117
  else {
109
118
  addPathQueryParams({
110
119
  $regex: new RegExp(`^${(0, utils_1.escapeRegExCharacters)(value)}$`),
@@ -132,8 +141,7 @@ class ValidationChecker {
132
141
  // Only search for non-deleted items
133
142
  query.deleted = { $eq: null };
134
143
  query.state = 'submitted';
135
- // Try to find an existing value within the form
136
- this.config.db.findOne(query, (err, result) => {
144
+ const uniqueValidationCallback = (err, result) => {
137
145
  if (err) {
138
146
  return resolve(false);
139
147
  }
@@ -150,6 +158,21 @@ class ValidationChecker {
150
158
  else {
151
159
  return resolve(true);
152
160
  }
161
+ };
162
+ // Try to find an existing value within the form
163
+ this.config.db.findOne(query, null, collationOptions, (err, result) => {
164
+ if (err && collationOptions.collation) {
165
+ // presume this error comes from db compatibility, try again as regex
166
+ delete query[path];
167
+ addPathQueryParams({
168
+ $regex: new RegExp(`^${(0, utils_1.escapeRegExCharacters)(value)}$`),
169
+ $options: 'i'
170
+ }, query, path);
171
+ this.config.db.findOne(query, uniqueValidationCallback);
172
+ }
173
+ else {
174
+ return uniqueValidationCallback(err, result);
175
+ }
153
176
  });
154
177
  }).catch(() => false);
155
178
  }
@@ -825,7 +848,7 @@ class ValidationChecker {
825
848
  return '';
826
849
  };
827
850
  if (async) {
828
- return native_promise_only_1.default.resolve(resultOrPromise).then(processResult);
851
+ return Promise.resolve(resultOrPromise).then(processResult);
829
852
  }
830
853
  else {
831
854
  return processResult(resultOrPromise);
@@ -867,7 +890,7 @@ class ValidationChecker {
867
890
  }
868
891
  };
869
892
  if (async) {
870
- return native_promise_only_1.default.resolve(resultOrPromise).then(processResult);
893
+ return Promise.resolve(resultOrPromise).then(processResult);
871
894
  }
872
895
  else {
873
896
  return processResult(resultOrPromise);
@@ -880,7 +903,7 @@ class ValidationChecker {
880
903
  && !lodash_1.default.defaultTo(component.component.persistent, true);
881
904
  // If we're server-side and it's not a persistent component, don't run validation at all
882
905
  if (isServerSidePersistent || component.component.validate === false) {
883
- return async ? native_promise_only_1.default.resolve([]) : [];
906
+ return async ? Promise.resolve([]) : [];
884
907
  }
885
908
  data = data || component.rootValue;
886
909
  row = row || component.data;
@@ -1001,7 +1024,7 @@ class ValidationChecker {
1001
1024
  };
1002
1025
  // Wait for results if using async mode, otherwise process and return immediately
1003
1026
  if (async) {
1004
- return native_promise_only_1.default.all(resultsOrPromises).then(formatResults);
1027
+ return Promise.all(resultsOrPromises).then(formatResults);
1005
1028
  }
1006
1029
  else {
1007
1030
  return formatResults(resultsOrPromises);
@@ -4,10 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const utils_1 = require("../../utils/utils");
7
- const native_promise_only_1 = __importDefault(require("native-promise-only"));
8
7
  const fetch_ponyfill_1 = __importDefault(require("fetch-ponyfill"));
9
8
  const { fetch, Headers, Request } = (0, fetch_ponyfill_1.default)({
10
- Promise: native_promise_only_1.default
9
+ Promise: Promise
11
10
  });
12
11
  const lodash_1 = __importDefault(require("lodash"));
13
12
  const Rule_1 = __importDefault(require("./Rule"));
@@ -1,5 +1,5 @@
1
1
  export default class Unique extends Rule {
2
2
  defaultMessage: string;
3
- check(value: any): any;
3
+ check(value: any): true | Promise<any>;
4
4
  }
5
5
  import Rule from './Rule';
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const utils_1 = require("../../utils/utils");
7
7
  const lodash_1 = __importDefault(require("lodash"));
8
- const native_promise_only_1 = __importDefault(require("native-promise-only"));
9
8
  const Rule_1 = __importDefault(require("./Rule"));
10
9
  class Unique extends Rule_1.default {
11
10
  constructor() {
@@ -21,7 +20,7 @@ class Unique extends Rule_1.default {
21
20
  if (!this.config.db) {
22
21
  return true;
23
22
  }
24
- return new native_promise_only_1.default(resolve => {
23
+ return new Promise(resolve => {
25
24
  const form = this.config.form;
26
25
  const submission = this.config.submission;
27
26
  const path = `data.${this.component.path}`;
@@ -30,6 +30,7 @@ export default class CalendarWidget extends InputWidget {
30
30
  * @return {boolean} TRUE if the zones are loading, FALSE otherwise.
31
31
  */
32
32
  loadZones(): boolean;
33
+ attach(input: any): Promise<any>;
33
34
  defaultFormat: {
34
35
  date: string;
35
36
  time: string;
@@ -8,7 +8,7 @@ export default class InputWidget extends Element {
8
8
  namespace: string;
9
9
  component: any;
10
10
  settings: any;
11
- attach(input: any): any;
11
+ attach(input: any): Promise<void>;
12
12
  _input: any;
13
13
  get defaultSettings(): {};
14
14
  set disabled(arg: any);
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const lodash_1 = __importDefault(require("lodash"));
7
7
  const Element_1 = __importDefault(require("../Element"));
8
- const native_promise_only_1 = __importDefault(require("native-promise-only"));
9
8
  class InputWidget extends Element_1.default {
10
9
  static get defaultSettings() {
11
10
  return {
@@ -22,7 +21,7 @@ class InputWidget extends Element_1.default {
22
21
  }
23
22
  attach(input) {
24
23
  this._input = input;
25
- return native_promise_only_1.default.resolve();
24
+ return Promise.resolve();
26
25
  }
27
26
  get defaultSettings() {
28
27
  return {};
package/lib/mjs/CDN.js CHANGED
@@ -11,7 +11,7 @@ class CDN {
11
11
  'bootstrap': '4.6.2',
12
12
  'ckeditor': '19.0.0',
13
13
  'flatpickr': '4.6.8',
14
- 'flatpickr-formio': '4.6.13-formio.2',
14
+ 'flatpickr-formio': '4.6.13-formio.3',
15
15
  'font-awesome': '4.7.0',
16
16
  'grid': 'latest',
17
17
  'moment-timezone': 'latest',
@@ -1,7 +1,7 @@
1
1
  import EventEmitter from './EventEmitter';
2
2
  import { Formio } from './Formio';
3
3
  import * as FormioUtils from './utils/utils';
4
- import i18next from 'i18next';
4
+ import { I18n } from './utils/i18n';
5
5
  import _ from 'lodash';
6
6
  import moment from 'moment';
7
7
  import maskInput from '@formio/vanilla-text-mask';
@@ -34,7 +34,11 @@ export default class Element {
34
34
  */
35
35
  this.eventHandlers = [];
36
36
  // Use the i18next that is passed in, otherwise use the global version.
37
- this.i18next = this.options.i18next || i18next;
37
+ this.options.i18n = this.options.i18n || {};
38
+ if (this.options?.language) {
39
+ this.options.i18n.language = this.options.language;
40
+ }
41
+ this.options.i18next = this.i18next = this.options.i18next || I18n.init(this.options.i18n);
38
42
  /**
39
43
  * An instance of the EventEmitter class to handle the emitting and registration of events.
40
44
  *
package/lib/mjs/Embed.js CHANGED
@@ -205,7 +205,10 @@ export function embed(config = {}) {
205
205
  debug('Creating form', form, config.config);
206
206
  isReady.then(() => {
207
207
  Formio.license = true;
208
- Formio.createForm(formElement, form, config.config).then((instance) => {
208
+ Formio.createForm(formElement, form, {
209
+ ...config.config,
210
+ ...{ noLoader: true }
211
+ }).then((instance) => {
209
212
  const submitDone = (submission) => {
210
213
  debug('Submision Complete', submission);
211
214
  let returnUrl = config.redirect;
package/lib/mjs/Form.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export default class Form extends Element {
2
- static embed(embed: any): any;
2
+ static embed(embed: any): Promise<any>;
3
3
  /**
4
4
  * Creates an easy to use interface for embedding webforms, pdfs, and wizards into your application.
5
5
  *
@@ -17,13 +17,16 @@ export default class Form extends Element {
17
17
  * form.build();
18
18
  */
19
19
  constructor(...args: any[]);
20
- ready: any;
21
- readyResolve: any;
22
- readyReject: any;
20
+ ready: Promise<any>;
21
+ readyResolve: (value: any) => void;
22
+ readyReject: (reason?: any) => void;
23
23
  instance: any;
24
24
  element: any;
25
25
  options: any;
26
26
  display: string;
27
+ createElement(tag: any, attrs: any, children: any): any;
28
+ set loading(arg: any);
29
+ loader: any;
27
30
  /**
28
31
  * Create a new form instance provided the display of the form.
29
32
  *
@@ -84,7 +87,7 @@ export default class Form extends Element {
84
87
  * @return {Promise<T>}
85
88
  */
86
89
  build(): Promise<T>;
87
- render(): any;
90
+ render(): Promise<any>;
88
91
  attach(element: any): any;
89
92
  }
90
93
  import Element from './Element';
package/lib/mjs/Form.js CHANGED
@@ -3,7 +3,6 @@ import { Formio } from './Formio';
3
3
  import Displays from './displays';
4
4
  import templates from './templates';
5
5
  import * as FormioUtils from './utils/utils';
6
- import NativePromise from 'native-promise-only';
7
6
  export default class Form extends Element {
8
7
  /**
9
8
  * Creates an easy to use interface for embedding webforms, pdfs, and wizards into your application.
@@ -30,7 +29,7 @@ export default class Form extends Element {
30
29
  if (this.options.useSessionToken) {
31
30
  Formio.useSessionToken(this.options);
32
31
  }
33
- this.ready = new NativePromise((resolve, reject) => {
32
+ this.ready = new Promise((resolve, reject) => {
34
33
  this.readyResolve = resolve;
35
34
  this.readyReject = reject;
36
35
  });
@@ -61,6 +60,47 @@ export default class Form extends Element {
61
60
  }
62
61
  this.display = '';
63
62
  }
63
+ createElement(tag, attrs, children) {
64
+ const element = document.createElement(tag);
65
+ for (const attr in attrs) {
66
+ if (attrs.hasOwnProperty(attr)) {
67
+ element.setAttribute(attr, attrs[attr]);
68
+ }
69
+ }
70
+ (children || []).forEach(child => {
71
+ element.appendChild(this.createElement(child.tag, child.attrs, child.children));
72
+ });
73
+ return element;
74
+ }
75
+ set loading(load) {
76
+ if (!this.element || this.options.noLoader) {
77
+ return;
78
+ }
79
+ if (load) {
80
+ if (this.loader) {
81
+ return;
82
+ }
83
+ this.loader = this.createElement('div', {
84
+ 'class': 'formio-loader'
85
+ }, [{
86
+ tag: 'div',
87
+ attrs: {
88
+ class: 'loader-wrapper'
89
+ },
90
+ children: [{
91
+ tag: 'div',
92
+ attrs: {
93
+ class: 'loader text-center'
94
+ }
95
+ }]
96
+ }]);
97
+ this.element.appendChild(this.loader);
98
+ }
99
+ else if (this.loader) {
100
+ this.element.removeChild(this.loader);
101
+ this.loader = null;
102
+ }
103
+ }
64
104
  /**
65
105
  * Create a new form instance provided the display of the form.
66
106
  *
@@ -116,6 +156,7 @@ export default class Form extends Element {
116
156
  if (typeof formParam === 'string') {
117
157
  const formio = new Formio(formParam);
118
158
  let error;
159
+ this.loading = true;
119
160
  result = this.getSubmission(formio, this.options)
120
161
  .catch((err) => {
121
162
  error = err;
@@ -131,6 +172,7 @@ export default class Form extends Element {
131
172
  if (error) {
132
173
  form = this.errorForm(error);
133
174
  }
175
+ this.loading = false;
134
176
  this.instance = this.instance || this.create(form.display);
135
177
  this.instance.url = formParam;
136
178
  this.instance.nosubmit = false;
@@ -163,7 +205,7 @@ export default class Form extends Element {
163
205
  if (formio.submissionId) {
164
206
  return formio.loadSubmission(null, opts);
165
207
  }
166
- return NativePromise.resolve();
208
+ return Promise.resolve();
167
209
  }
168
210
  /**
169
211
  * Returns the loaded forms JSON.
@@ -181,7 +223,7 @@ export default class Form extends Element {
181
223
  */
182
224
  setDisplay(display) {
183
225
  if ((this.display === display) && this.instance) {
184
- return NativePromise.resolve(this.instance);
226
+ return Promise.resolve(this.instance);
185
227
  }
186
228
  this.form.display = display;
187
229
  this.instance.destroy();
@@ -196,7 +238,7 @@ export default class Form extends Element {
196
238
  }
197
239
  }
198
240
  static embed(embed) {
199
- return new NativePromise((resolve) => {
241
+ return new Promise((resolve) => {
200
242
  if (!embed || !embed.src) {
201
243
  resolve();
202
244
  }
@@ -243,10 +285,10 @@ export default class Form extends Element {
243
285
  */
244
286
  build() {
245
287
  if (!this.instance) {
246
- return NativePromise.reject('Form not ready. Use form.ready promise');
288
+ return Promise.reject('Form not ready. Use form.ready promise');
247
289
  }
248
290
  if (!this.element) {
249
- return NativePromise.reject('No DOM element for form.');
291
+ return Promise.reject('No DOM element for form.');
250
292
  }
251
293
  // Add temporary loader.
252
294
  const template = (this.options && this.options.template) ? this.options.template : 'bootstrap';
@@ -263,9 +305,9 @@ export default class Form extends Element {
263
305
  }
264
306
  render() {
265
307
  if (!this.instance) {
266
- return NativePromise.reject('Form not ready. Use form.ready promise');
308
+ return Promise.reject('Form not ready. Use form.ready promise');
267
309
  }
268
- return NativePromise.resolve(this.instance.render())
310
+ return Promise.resolve(this.instance.render())
269
311
  .then((param) => {
270
312
  this.emit('render', param);
271
313
  return param;
@@ -273,7 +315,7 @@ export default class Form extends Element {
273
315
  }
274
316
  attach(element) {
275
317
  if (!this.instance) {
276
- return NativePromise.reject('Form not ready. Use form.ready promise');
318
+ return Promise.reject('Form not ready. Use form.ready promise');
277
319
  }
278
320
  if (this.element) {
279
321
  delete this.element.component;
package/lib/mjs/PDF.d.ts CHANGED
@@ -4,9 +4,10 @@ export default class PDF extends Webform {
4
4
  init(): void;
5
5
  submitButton: any;
6
6
  attachComponents(element: any, components: any, container: any): Promise<void>;
7
- iframeReady: any;
8
- iframeReadyResolve: any;
9
- iframeReadyReject: any;
7
+ attach(element: any): Promise<void>;
8
+ iframeReady: Promise<any> | undefined;
9
+ iframeReadyResolve: ((value: any) => void) | undefined;
10
+ iframeReadyReject: ((reason?: any) => void) | undefined;
10
11
  iframeElement: any;
11
12
  /**
12
13
  * Get the submission from the iframe.
@@ -14,6 +15,13 @@ export default class PDF extends Webform {
14
15
  * @return {Promise<any>}
15
16
  */
16
17
  getSubmission(): Promise<any>;
18
+ /**
19
+ * Ensure we have the submission from the iframe before we submit the form.
20
+ *
21
+ * @param options
22
+ * @return {*}
23
+ */
24
+ submitForm(options?: {}): any;
17
25
  getSrc(): string;
18
26
  setForm(form: any, flags?: {}): any;
19
27
  /**
package/lib/mjs/PDF.js CHANGED
@@ -1,4 +1,3 @@
1
- import NativePromise from 'native-promise-only';
2
1
  import { Formio } from './Formio';
3
2
  import Webform from './Webform';
4
3
  import { fastCloneDeep, eachComponent } from './utils/utils';
@@ -56,7 +55,7 @@ export default class PDF extends Webform {
56
55
  }
57
56
  redraw() {
58
57
  this.postMessage({ name: 'redraw' });
59
- return this.builderMode ? NativePromise.resolve() : super.redraw();
58
+ return this.builderMode ? Promise.resolve() : super.redraw();
60
59
  }
61
60
  destroy(all = false) {
62
61
  if (this.iframeElement) {
@@ -69,7 +68,7 @@ export default class PDF extends Webform {
69
68
  if (this.attached && this.builderMode && this.component.components) {
70
69
  this.destroyComponents();
71
70
  this.addComponents();
72
- return NativePromise.resolve();
71
+ return Promise.resolve();
73
72
  }
74
73
  this.postMessage({ name: 'redraw' });
75
74
  return super.rebuild();
@@ -94,7 +93,7 @@ export default class PDF extends Webform {
94
93
  this.submitButton.refs = { ...this.refs };
95
94
  this.submitButton.attachButton();
96
95
  // Reset the iframeReady promise.
97
- this.iframeReady = new NativePromise((resolve, reject) => {
96
+ this.iframeReady = new Promise((resolve, reject) => {
98
97
  this.iframeReadyResolve = resolve;
99
98
  this.iframeReadyReject = reject;
100
99
  });
@@ -143,7 +142,7 @@ export default class PDF extends Webform {
143
142
  * @return {Promise<any>}
144
143
  */
145
144
  getSubmission() {
146
- return new NativePromise((resolve) => {
145
+ return new Promise((resolve) => {
147
146
  this.once('iframe-submission', resolve);
148
147
  this.postMessage({ name: 'getSubmission' });
149
148
  });
@@ -1,5 +1,4 @@
1
1
  import _ from 'lodash';
2
- import NativePromise from 'native-promise-only';
3
2
  import { Formio } from './Formio';
4
3
  import WebformBuilder from './WebformBuilder';
5
4
  import { fastCloneDeep, getElementRect, getBrowserInfo } from './utils/utils';
@@ -152,7 +151,7 @@ export default class PDFBuilder extends WebformBuilder {
152
151
  this.refs.hiddenFileInputElement.value = '';
153
152
  });
154
153
  }
155
- return NativePromise.resolve();
154
+ return Promise.resolve();
156
155
  }
157
156
  // Normal PDF Builder
158
157
  return super.attach(element).then(() => {
@@ -411,7 +410,7 @@ export default class PDFBuilder extends WebformBuilder {
411
410
  if (!this.dropEvent) {
412
411
  // a 'drop' event may not be emited in the chrome browser when using a Mac, therefore an additional check has been added
413
412
  // eslint-disable-next-line no-undef
414
- if (!this.dropEmitted && getBrowserInfo().chrome && globalThis.navigator.userAgentData.platform === 'macOS' && iframeRect.left < e.clientX && iframeRect.top < e.clientY) {
413
+ if (!this.dropEmitted && (getBrowserInfo().chrome || getBrowserInfo().edge) && globalThis.navigator.userAgentData.platform === 'macOS' && iframeRect.left < e.clientX && iframeRect.top < e.clientY) {
415
414
  this.dropEvent = e;
416
415
  this.dropEvent.dataTransfer.effectAllowed = 'all';
417
416
  this.dropEmitted = true;
@@ -132,11 +132,6 @@ declare class Webform extends NestedDataComponent {
132
132
  * @return {*}
133
133
  */
134
134
  addLanguage(code: any, lang: any, active?: boolean): any;
135
- /**
136
- * Perform the localization initialization.
137
- * @returns {*}
138
- */
139
- localize(): any;
140
135
  keyboardCatchableElement(element: any): boolean;
141
136
  executeShortcuts: (event: any) => void;
142
137
  /**
@@ -308,6 +303,8 @@ declare class Webform extends NestedDataComponent {
308
303
  build(element: any): Promise<any>;
309
304
  getClassName(): string;
310
305
  render(): any;
306
+ redraw(): Promise<void> | Promise<boolean>;
307
+ attach(element: any): Promise<boolean>;
311
308
  hasRequiredFields(): boolean;
312
309
  /**
313
310
  * Sets a new alert to display in the error dialog of the form.
@@ -365,10 +362,10 @@ declare class Webform extends NestedDataComponent {
365
362
  */
366
363
  cancel(noconfirm: any): boolean;
367
364
  setMetadata(submission: any): void;
368
- submitForm(options?: {}): any;
365
+ submitForm(options?: {}): Promise<any>;
369
366
  setServerErrors(error: any): void;
370
367
  serverErrors: any;
371
- executeSubmit(options: any): any;
368
+ executeSubmit(options: any): Promise<object>;
372
369
  submissionInProcess: boolean | undefined;
373
370
  clearServerErrors(): void;
374
371
  /**