@formio/js 5.0.0-rc.19 → 5.0.0-rc.21

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 (370) 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 -40
  5. package/dist/formio.embed.js +2 -90
  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 +1267 -1103
  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 +1302 -1127
  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 +713 -626
  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.d.ts +1 -0
  26. package/lib/cjs/CDN.js +2 -1
  27. package/lib/cjs/Element.js +7 -2
  28. package/lib/cjs/Embed.d.ts +21 -1
  29. package/lib/cjs/Embed.js +211 -308
  30. package/lib/cjs/Form.d.ts +9 -6
  31. package/lib/cjs/Form.js +53 -11
  32. package/lib/cjs/PDF.d.ts +11 -3
  33. package/lib/cjs/PDF.js +4 -5
  34. package/lib/cjs/PDFBuilder.js +2 -3
  35. package/lib/cjs/Webform.d.ts +10 -13
  36. package/lib/cjs/Webform.js +46 -125
  37. package/lib/cjs/WebformBuilder.d.ts +6 -1
  38. package/lib/cjs/WebformBuilder.js +105 -65
  39. package/lib/cjs/Wizard.d.ts +8 -5
  40. package/lib/cjs/Wizard.js +12 -12
  41. package/lib/cjs/WizardBuilder.d.ts +6 -4
  42. package/lib/cjs/WizardBuilder.js +20 -3
  43. package/lib/cjs/addons/FormioAddon.d.ts +1 -1
  44. package/lib/cjs/addons/FormioAddon.js +1 -2
  45. package/lib/cjs/components/_classes/component/Component.d.ts +24 -8
  46. package/lib/cjs/components/_classes/component/Component.js +44 -14
  47. package/lib/cjs/components/_classes/input/Input.d.ts +1 -1
  48. package/lib/cjs/components/_classes/input/Input.js +1 -2
  49. package/lib/cjs/components/_classes/list/ListComponent.d.ts +4 -0
  50. package/lib/cjs/components/_classes/list/ListComponent.js +43 -6
  51. package/lib/cjs/components/_classes/multivalue/Multivalue.d.ts +1 -0
  52. package/lib/cjs/components/_classes/multivalue/Multivalue.js +10 -4
  53. package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +5 -2
  54. package/lib/cjs/components/_classes/nested/NestedComponent.js +9 -10
  55. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +1 -0
  56. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +4 -0
  57. package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.d.ts +1 -0
  58. package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.js +4 -0
  59. package/lib/cjs/components/address/Address.d.ts +8 -0
  60. package/lib/cjs/components/address/Address.js +5 -0
  61. package/lib/cjs/components/button/Button.d.ts +1 -0
  62. package/lib/cjs/components/button/Button.js +5 -3
  63. package/lib/cjs/components/checkbox/Checkbox.d.ts +41 -0
  64. package/lib/cjs/components/checkbox/Checkbox.js +32 -5
  65. package/lib/cjs/components/columns/Columns.d.ts +2 -0
  66. package/lib/cjs/components/columns/Columns.js +4 -0
  67. package/lib/cjs/components/container/Container.d.ts +1 -0
  68. package/lib/cjs/components/container/Container.js +4 -0
  69. package/lib/cjs/components/content/Content.d.ts +2 -0
  70. package/lib/cjs/components/content/Content.js +4 -2
  71. package/lib/cjs/components/currency/editForm/Currency.edit.data.d.ts +14 -2
  72. package/lib/cjs/components/currency/editForm/Currency.edit.data.js +4 -0
  73. package/lib/cjs/components/currency/editForm/Currency.edit.display.js +4 -0
  74. package/lib/cjs/components/datagrid/DataGrid.d.ts +1 -0
  75. package/lib/cjs/components/datagrid/DataGrid.js +8 -1
  76. package/lib/cjs/components/datamap/DataMap.d.ts +1 -0
  77. package/lib/cjs/components/datamap/DataMap.js +4 -0
  78. package/lib/cjs/components/datetime/DateTime.d.ts +23 -0
  79. package/lib/cjs/components/datetime/DateTime.js +20 -1
  80. package/lib/cjs/components/day/Day.d.ts +22 -1
  81. package/lib/cjs/components/day/Day.js +20 -6
  82. package/lib/cjs/components/day/fixtures/comp3.js +2 -2
  83. package/lib/cjs/components/editgrid/EditGrid.d.ts +4 -3
  84. package/lib/cjs/components/editgrid/EditGrid.js +11 -6
  85. package/lib/cjs/components/editgrid/fixtures/comp-with-custom-default-value.d.ts +190 -0
  86. package/lib/cjs/components/editgrid/fixtures/comp-with-custom-default-value.js +227 -0
  87. package/lib/cjs/components/editgrid/fixtures/comp15.d.ts +54 -0
  88. package/lib/cjs/components/editgrid/fixtures/comp15.js +51 -0
  89. package/lib/cjs/components/editgrid/fixtures/index.d.ts +3 -1
  90. package/lib/cjs/components/editgrid/fixtures/index.js +5 -1
  91. package/lib/cjs/components/fieldset/Fieldset.d.ts +2 -0
  92. package/lib/cjs/components/fieldset/Fieldset.js +4 -0
  93. package/lib/cjs/components/file/File.d.ts +28 -6
  94. package/lib/cjs/components/file/File.js +40 -15
  95. package/lib/cjs/components/file/editForm/File.edit.file.d.ts +62 -0
  96. package/lib/cjs/components/file/editForm/File.edit.file.js +29 -2
  97. package/lib/cjs/components/form/Form.d.ts +4 -0
  98. package/lib/cjs/components/form/Form.js +12 -10
  99. package/lib/cjs/components/hidden/Hidden.d.ts +1 -0
  100. package/lib/cjs/components/hidden/Hidden.js +1 -0
  101. package/lib/cjs/components/html/HTML.d.ts +2 -0
  102. package/lib/cjs/components/html/HTML.js +4 -0
  103. package/lib/cjs/components/number/Number.d.ts +24 -1
  104. package/lib/cjs/components/number/Number.js +18 -6
  105. package/lib/cjs/components/panel/Panel.d.ts +1 -0
  106. package/lib/cjs/components/panel/Panel.js +3 -0
  107. package/lib/cjs/components/phonenumber/PhoneNumber.form.js +9 -0
  108. package/lib/cjs/components/radio/Radio.d.ts +24 -3
  109. package/lib/cjs/components/radio/Radio.js +89 -18
  110. package/lib/cjs/components/recaptcha/ReCaptcha.d.ts +2 -1
  111. package/lib/cjs/components/recaptcha/ReCaptcha.js +7 -5
  112. package/lib/cjs/components/resource/Resource.d.ts +7 -0
  113. package/lib/cjs/components/resource/Resource.js +0 -1
  114. package/lib/cjs/components/resource/editForm/Resource.edit.display.js +1 -1
  115. package/lib/cjs/components/select/Select.d.ts +25 -5
  116. package/lib/cjs/components/select/Select.js +51 -51
  117. package/lib/cjs/components/selectboxes/SelectBoxes.d.ts +37 -0
  118. package/lib/cjs/components/selectboxes/SelectBoxes.js +60 -25
  119. package/lib/cjs/components/selectboxes/fixtures/comp4.d.ts +30 -27
  120. package/lib/cjs/components/selectboxes/fixtures/comp4.js +47 -32
  121. package/lib/cjs/components/selectboxes/fixtures/comp6.d.ts +14 -0
  122. package/lib/cjs/components/selectboxes/fixtures/comp6.js +15 -0
  123. package/lib/cjs/components/selectboxes/fixtures/index.d.ts +2 -1
  124. package/lib/cjs/components/selectboxes/fixtures/index.js +3 -1
  125. package/lib/cjs/components/signature/Signature.d.ts +22 -1
  126. package/lib/cjs/components/signature/Signature.js +16 -3
  127. package/lib/cjs/components/survey/Survey.d.ts +21 -0
  128. package/lib/cjs/components/survey/Survey.js +9 -0
  129. package/lib/cjs/components/table/Table.d.ts +2 -0
  130. package/lib/cjs/components/table/Table.js +4 -0
  131. package/lib/cjs/components/tabs/Tabs.d.ts +2 -0
  132. package/lib/cjs/components/tabs/Tabs.js +4 -0
  133. package/lib/cjs/components/tags/Tags.d.ts +21 -0
  134. package/lib/cjs/components/tags/Tags.js +11 -0
  135. package/lib/cjs/components/textarea/TextArea.d.ts +3 -2
  136. package/lib/cjs/components/textarea/TextArea.js +4 -5
  137. package/lib/cjs/components/textarea/fixtures/comp4.d.ts +30 -0
  138. package/lib/cjs/components/textarea/fixtures/comp4.js +27 -0
  139. package/lib/cjs/components/textarea/fixtures/index.d.ts +2 -1
  140. package/lib/cjs/components/textarea/fixtures/index.js +3 -1
  141. package/lib/cjs/components/textfield/TextField.d.ts +22 -0
  142. package/lib/cjs/components/textfield/TextField.js +11 -3
  143. package/lib/cjs/components/time/Time.d.ts +11 -0
  144. package/lib/cjs/components/time/Time.js +6 -1
  145. package/lib/cjs/components/tree/Tree.d.ts +5 -4
  146. package/lib/cjs/components/tree/Tree.form.js +5 -0
  147. package/lib/cjs/components/tree/Tree.js +8 -9
  148. package/lib/cjs/components/tree/editForm/Tree.edit.display.d.ts +9 -0
  149. package/lib/cjs/components/tree/editForm/Tree.edit.display.js +12 -0
  150. package/lib/cjs/components/well/Well.d.ts +2 -0
  151. package/lib/cjs/components/well/Well.js +4 -0
  152. package/lib/cjs/formio.embed.d.ts +2 -1
  153. package/lib/cjs/formio.embed.js +96 -1
  154. package/lib/cjs/formio.form.d.ts +4 -3
  155. package/lib/cjs/formio.form.js +17 -8
  156. package/lib/cjs/licenses/Licenses.d.ts +7 -0
  157. package/lib/cjs/licenses/Licenses.js +22 -0
  158. package/lib/cjs/licenses/index.d.ts +2 -0
  159. package/lib/cjs/licenses/index.js +7 -0
  160. package/lib/cjs/providers/Providers.d.ts +31 -11
  161. package/lib/cjs/providers/address/GoogleAddressProvider.d.ts +2 -2
  162. package/lib/cjs/providers/address/GoogleAddressProvider.js +2 -3
  163. package/lib/cjs/providers/processor/fileProcessor.d.ts +1 -1
  164. package/lib/cjs/providers/processor/fileProcessor.js +1 -5
  165. package/lib/cjs/providers/storage/azure.d.ts +10 -1
  166. package/lib/cjs/providers/storage/azure.js +7 -2
  167. package/lib/cjs/providers/storage/base64.d.ts +2 -2
  168. package/lib/cjs/providers/storage/base64.js +2 -6
  169. package/lib/cjs/providers/storage/dropbox.d.ts +2 -2
  170. package/lib/cjs/providers/storage/dropbox.js +2 -6
  171. package/lib/cjs/providers/storage/googleDrive.d.ts +3 -2
  172. package/lib/cjs/providers/storage/googleDrive.js +6 -6
  173. package/lib/cjs/providers/storage/indexeddb.d.ts +3 -3
  174. package/lib/cjs/providers/storage/indexeddb.js +9 -13
  175. package/lib/cjs/providers/storage/s3.d.ts +11 -1
  176. package/lib/cjs/providers/storage/s3.js +5 -2
  177. package/lib/cjs/providers/storage/uploadAdapter.js +1 -5
  178. package/lib/cjs/providers/storage/url.d.ts +2 -2
  179. package/lib/cjs/providers/storage/url.js +12 -8
  180. package/lib/cjs/providers/storage/xhr.d.ts +1 -1
  181. package/lib/cjs/providers/storage/xhr.js +1 -2
  182. package/lib/cjs/templates/index.d.ts +226 -1
  183. package/lib/cjs/utils/Evaluator.js +4 -33
  184. package/lib/cjs/utils/i18n.d.ts +16 -0
  185. package/lib/cjs/utils/i18n.js +88 -0
  186. package/lib/cjs/utils/utils.d.ts +11 -1
  187. package/lib/cjs/utils/utils.js +29 -10
  188. package/lib/cjs/validator/Validator.d.ts +30 -2
  189. package/lib/cjs/validator/Validator.js +32 -9
  190. package/lib/cjs/validator/rules/Select.js +1 -2
  191. package/lib/cjs/validator/rules/Unique.d.ts +1 -1
  192. package/lib/cjs/validator/rules/Unique.js +1 -2
  193. package/lib/cjs/widgets/CalendarWidget.d.ts +1 -0
  194. package/lib/cjs/widgets/InputWidget.d.ts +1 -1
  195. package/lib/cjs/widgets/InputWidget.js +1 -2
  196. package/lib/mjs/CDN.d.ts +1 -0
  197. package/lib/mjs/CDN.js +2 -1
  198. package/lib/mjs/Element.js +6 -2
  199. package/lib/mjs/Embed.d.ts +21 -1
  200. package/lib/mjs/Embed.js +208 -319
  201. package/lib/mjs/Form.d.ts +9 -6
  202. package/lib/mjs/Form.js +53 -11
  203. package/lib/mjs/PDF.d.ts +11 -3
  204. package/lib/mjs/PDF.js +4 -5
  205. package/lib/mjs/PDFBuilder.js +2 -3
  206. package/lib/mjs/Webform.d.ts +10 -13
  207. package/lib/mjs/Webform.js +46 -128
  208. package/lib/mjs/WebformBuilder.d.ts +6 -1
  209. package/lib/mjs/WebformBuilder.js +103 -65
  210. package/lib/mjs/Wizard.d.ts +8 -5
  211. package/lib/mjs/Wizard.js +12 -12
  212. package/lib/mjs/WizardBuilder.d.ts +6 -4
  213. package/lib/mjs/WizardBuilder.js +20 -3
  214. package/lib/mjs/addons/FormioAddon.d.ts +1 -1
  215. package/lib/mjs/addons/FormioAddon.js +1 -2
  216. package/lib/mjs/components/_classes/component/Component.d.ts +24 -8
  217. package/lib/mjs/components/_classes/component/Component.js +44 -14
  218. package/lib/mjs/components/_classes/input/Input.d.ts +1 -1
  219. package/lib/mjs/components/_classes/input/Input.js +1 -2
  220. package/lib/mjs/components/_classes/list/ListComponent.d.ts +4 -0
  221. package/lib/mjs/components/_classes/list/ListComponent.js +43 -5
  222. package/lib/mjs/components/_classes/multivalue/Multivalue.d.ts +1 -0
  223. package/lib/mjs/components/_classes/multivalue/Multivalue.js +10 -4
  224. package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +5 -2
  225. package/lib/mjs/components/_classes/nested/NestedComponent.js +9 -10
  226. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +1 -0
  227. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +4 -0
  228. package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.d.ts +1 -0
  229. package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.js +4 -0
  230. package/lib/mjs/components/address/Address.d.ts +8 -0
  231. package/lib/mjs/components/address/Address.js +5 -0
  232. package/lib/mjs/components/button/Button.d.ts +1 -0
  233. package/lib/mjs/components/button/Button.js +6 -4
  234. package/lib/mjs/components/checkbox/Checkbox.d.ts +41 -0
  235. package/lib/mjs/components/checkbox/Checkbox.js +36 -5
  236. package/lib/mjs/components/columns/Columns.d.ts +2 -0
  237. package/lib/mjs/components/columns/Columns.js +4 -0
  238. package/lib/mjs/components/container/Container.d.ts +1 -0
  239. package/lib/mjs/components/container/Container.js +5 -1
  240. package/lib/mjs/components/content/Content.d.ts +2 -0
  241. package/lib/mjs/components/content/Content.js +4 -2
  242. package/lib/mjs/components/currency/editForm/Currency.edit.data.d.ts +14 -2
  243. package/lib/mjs/components/currency/editForm/Currency.edit.data.js +4 -0
  244. package/lib/mjs/components/currency/editForm/Currency.edit.display.js +4 -0
  245. package/lib/mjs/components/datagrid/DataGrid.d.ts +1 -0
  246. package/lib/mjs/components/datagrid/DataGrid.js +8 -1
  247. package/lib/mjs/components/datamap/DataMap.d.ts +1 -0
  248. package/lib/mjs/components/datamap/DataMap.js +5 -1
  249. package/lib/mjs/components/datetime/DateTime.d.ts +23 -0
  250. package/lib/mjs/components/datetime/DateTime.js +27 -1
  251. package/lib/mjs/components/day/Day.d.ts +22 -1
  252. package/lib/mjs/components/day/Day.js +24 -7
  253. package/lib/mjs/components/day/fixtures/comp3.js +2 -2
  254. package/lib/mjs/components/editgrid/EditGrid.d.ts +4 -3
  255. package/lib/mjs/components/editgrid/EditGrid.js +11 -6
  256. package/lib/mjs/components/editgrid/fixtures/comp-with-custom-default-value.d.ts +190 -0
  257. package/lib/mjs/components/editgrid/fixtures/comp-with-custom-default-value.js +225 -0
  258. package/lib/mjs/components/editgrid/fixtures/comp15.d.ts +54 -0
  259. package/lib/mjs/components/editgrid/fixtures/comp15.js +49 -0
  260. package/lib/mjs/components/editgrid/fixtures/index.d.ts +3 -1
  261. package/lib/mjs/components/editgrid/fixtures/index.js +3 -1
  262. package/lib/mjs/components/fieldset/Fieldset.d.ts +2 -0
  263. package/lib/mjs/components/fieldset/Fieldset.js +4 -0
  264. package/lib/mjs/components/file/File.d.ts +28 -6
  265. package/lib/mjs/components/file/File.js +44 -16
  266. package/lib/mjs/components/file/editForm/File.edit.file.d.ts +62 -0
  267. package/lib/mjs/components/file/editForm/File.edit.file.js +29 -2
  268. package/lib/mjs/components/form/Form.d.ts +4 -0
  269. package/lib/mjs/components/form/Form.js +13 -11
  270. package/lib/mjs/components/hidden/Hidden.d.ts +1 -0
  271. package/lib/mjs/components/hidden/Hidden.js +1 -0
  272. package/lib/mjs/components/html/HTML.d.ts +2 -0
  273. package/lib/mjs/components/html/HTML.js +4 -0
  274. package/lib/mjs/components/number/Number.d.ts +24 -1
  275. package/lib/mjs/components/number/Number.js +23 -7
  276. package/lib/mjs/components/panel/Panel.d.ts +1 -0
  277. package/lib/mjs/components/panel/Panel.js +3 -0
  278. package/lib/mjs/components/phonenumber/PhoneNumber.form.js +9 -0
  279. package/lib/mjs/components/radio/Radio.d.ts +24 -3
  280. package/lib/mjs/components/radio/Radio.js +93 -19
  281. package/lib/mjs/components/recaptcha/ReCaptcha.d.ts +2 -1
  282. package/lib/mjs/components/recaptcha/ReCaptcha.js +7 -5
  283. package/lib/mjs/components/resource/Resource.d.ts +7 -0
  284. package/lib/mjs/components/resource/Resource.js +0 -1
  285. package/lib/mjs/components/resource/editForm/Resource.edit.display.js +1 -1
  286. package/lib/mjs/components/select/Select.d.ts +25 -5
  287. package/lib/mjs/components/select/Select.js +55 -52
  288. package/lib/mjs/components/selectboxes/SelectBoxes.d.ts +37 -0
  289. package/lib/mjs/components/selectboxes/SelectBoxes.js +63 -25
  290. package/lib/mjs/components/selectboxes/fixtures/comp4.d.ts +30 -27
  291. package/lib/mjs/components/selectboxes/fixtures/comp4.js +47 -32
  292. package/lib/mjs/components/selectboxes/fixtures/comp6.d.ts +14 -0
  293. package/lib/mjs/components/selectboxes/fixtures/comp6.js +13 -0
  294. package/lib/mjs/components/selectboxes/fixtures/index.d.ts +2 -1
  295. package/lib/mjs/components/selectboxes/fixtures/index.js +2 -1
  296. package/lib/mjs/components/signature/Signature.d.ts +22 -1
  297. package/lib/mjs/components/signature/Signature.js +19 -3
  298. package/lib/mjs/components/survey/Survey.d.ts +21 -0
  299. package/lib/mjs/components/survey/Survey.js +13 -1
  300. package/lib/mjs/components/table/Table.d.ts +2 -0
  301. package/lib/mjs/components/table/Table.js +4 -0
  302. package/lib/mjs/components/tabs/Tabs.d.ts +2 -0
  303. package/lib/mjs/components/tabs/Tabs.js +4 -0
  304. package/lib/mjs/components/tags/Tags.d.ts +21 -0
  305. package/lib/mjs/components/tags/Tags.js +14 -0
  306. package/lib/mjs/components/textarea/TextArea.d.ts +3 -2
  307. package/lib/mjs/components/textarea/TextArea.js +4 -5
  308. package/lib/mjs/components/textarea/fixtures/comp4.d.ts +30 -0
  309. package/lib/mjs/components/textarea/fixtures/comp4.js +25 -0
  310. package/lib/mjs/components/textarea/fixtures/index.d.ts +2 -1
  311. package/lib/mjs/components/textarea/fixtures/index.js +2 -1
  312. package/lib/mjs/components/textfield/TextField.d.ts +22 -0
  313. package/lib/mjs/components/textfield/TextField.js +14 -3
  314. package/lib/mjs/components/time/Time.d.ts +11 -0
  315. package/lib/mjs/components/time/Time.js +12 -1
  316. package/lib/mjs/components/tree/Tree.d.ts +5 -4
  317. package/lib/mjs/components/tree/Tree.form.js +5 -0
  318. package/lib/mjs/components/tree/Tree.js +8 -9
  319. package/lib/mjs/components/tree/editForm/Tree.edit.display.d.ts +9 -0
  320. package/lib/mjs/components/tree/editForm/Tree.edit.display.js +10 -0
  321. package/lib/mjs/components/well/Well.d.ts +2 -0
  322. package/lib/mjs/components/well/Well.js +4 -0
  323. package/lib/mjs/formio.embed.d.ts +2 -1
  324. package/lib/mjs/formio.embed.js +96 -2
  325. package/lib/mjs/formio.form.d.ts +4 -3
  326. package/lib/mjs/formio.form.js +16 -8
  327. package/lib/mjs/licenses/Licenses.d.ts +7 -0
  328. package/lib/mjs/licenses/Licenses.js +17 -0
  329. package/lib/mjs/licenses/index.d.ts +2 -0
  330. package/lib/mjs/licenses/index.js +2 -0
  331. package/lib/mjs/providers/Providers.d.ts +31 -11
  332. package/lib/mjs/providers/address/GoogleAddressProvider.d.ts +2 -2
  333. package/lib/mjs/providers/address/GoogleAddressProvider.js +2 -3
  334. package/lib/mjs/providers/processor/fileProcessor.d.ts +1 -1
  335. package/lib/mjs/providers/processor/fileProcessor.js +1 -2
  336. package/lib/mjs/providers/storage/azure.d.ts +10 -1
  337. package/lib/mjs/providers/storage/azure.js +7 -2
  338. package/lib/mjs/providers/storage/base64.d.ts +2 -2
  339. package/lib/mjs/providers/storage/base64.js +2 -3
  340. package/lib/mjs/providers/storage/dropbox.d.ts +2 -2
  341. package/lib/mjs/providers/storage/dropbox.js +2 -3
  342. package/lib/mjs/providers/storage/googleDrive.d.ts +3 -2
  343. package/lib/mjs/providers/storage/googleDrive.js +6 -3
  344. package/lib/mjs/providers/storage/indexeddb.d.ts +3 -3
  345. package/lib/mjs/providers/storage/indexeddb.js +9 -10
  346. package/lib/mjs/providers/storage/s3.d.ts +11 -1
  347. package/lib/mjs/providers/storage/s3.js +5 -2
  348. package/lib/mjs/providers/storage/uploadAdapter.js +1 -2
  349. package/lib/mjs/providers/storage/url.d.ts +2 -2
  350. package/lib/mjs/providers/storage/url.js +12 -5
  351. package/lib/mjs/providers/storage/xhr.d.ts +1 -1
  352. package/lib/mjs/providers/storage/xhr.js +1 -2
  353. package/lib/mjs/templates/index.d.ts +226 -1
  354. package/lib/mjs/utils/Evaluator.js +4 -33
  355. package/lib/mjs/utils/i18n.d.ts +16 -0
  356. package/lib/mjs/utils/i18n.js +81 -0
  357. package/lib/mjs/utils/utils.d.ts +11 -1
  358. package/lib/mjs/utils/utils.js +27 -9
  359. package/lib/mjs/validator/Validator.d.ts +30 -2
  360. package/lib/mjs/validator/Validator.js +31 -9
  361. package/lib/mjs/validator/rules/Select.js +1 -2
  362. package/lib/mjs/validator/rules/Unique.d.ts +1 -1
  363. package/lib/mjs/validator/rules/Unique.js +1 -2
  364. package/lib/mjs/widgets/CalendarWidget.d.ts +1 -0
  365. package/lib/mjs/widgets/InputWidget.d.ts +1 -1
  366. package/lib/mjs/widgets/InputWidget.js +1 -2
  367. package/package.json +18 -15
  368. package/types/index.d.ts +1 -0
  369. package/types/licenses.d.ts +7 -0
  370. package/types/utils.d.ts +2 -0
@@ -1,4 +1,229 @@
1
1
  declare namespace _default {
2
- const bootstrap: any;
2
+ const bootstrap: {
3
+ webform: {
4
+ form: string;
5
+ builder: string;
6
+ };
7
+ well: {
8
+ form: string;
9
+ };
10
+ wizard: {
11
+ form: string;
12
+ builder: string;
13
+ };
14
+ wizardHeader: {
15
+ form: string;
16
+ };
17
+ wizardHeaderClassic: {
18
+ form: string;
19
+ };
20
+ wizardHeaderVertical: {
21
+ form: string;
22
+ };
23
+ wizardNav: {
24
+ form: string;
25
+ };
26
+ errorsList: {
27
+ form: string;
28
+ };
29
+ alert: {
30
+ form: string;
31
+ };
32
+ treeView: {
33
+ form: string;
34
+ };
35
+ treeEdit: {
36
+ form: string;
37
+ };
38
+ transform(type: any, text: any, instance: any): any;
39
+ defaultIconset: string;
40
+ iconClass: (iconset: any, name: any, spinning: any) => string;
41
+ cssClasses: {
42
+ 'border-default': string;
43
+ 'formio-tab-panel-active': string;
44
+ 'formio-tab-link-active': string;
45
+ 'formio-tab-link-container-active': string;
46
+ 'formio-form-error': string;
47
+ 'formio-form-alert': string;
48
+ 'formio-label-error': string;
49
+ 'formio-input-error': string;
50
+ 'formio-alert-danger': string;
51
+ 'formio-alert-success': string;
52
+ 'formio-alert-warning': string;
53
+ 'formio-modal-cancel-button': string;
54
+ 'formio-modal-confirm-button': string;
55
+ 'form-group': string;
56
+ };
57
+ address: {
58
+ form: string;
59
+ html: string;
60
+ };
61
+ builder: {
62
+ form: string;
63
+ };
64
+ builderComponent: {
65
+ form: string;
66
+ };
67
+ builderComponents: {
68
+ form: string;
69
+ };
70
+ builderEditForm: {
71
+ form: string;
72
+ };
73
+ builderPlaceholder: {
74
+ form: string;
75
+ };
76
+ builderSidebar: {
77
+ form: string;
78
+ };
79
+ builderSidebarGroup: {
80
+ form: string;
81
+ };
82
+ builderWizard: {
83
+ form: string;
84
+ };
85
+ button: {
86
+ form: string;
87
+ html: string;
88
+ };
89
+ checkbox: {
90
+ form: string;
91
+ html: string;
92
+ };
93
+ columns: {
94
+ form: string;
95
+ };
96
+ component: {
97
+ form: string;
98
+ };
99
+ componentModal: {
100
+ form: string;
101
+ };
102
+ components: {
103
+ form: string;
104
+ };
105
+ tableComponents: {
106
+ form: string;
107
+ };
108
+ container: {
109
+ form: string;
110
+ };
111
+ datagrid: {
112
+ form: string;
113
+ html: string;
114
+ };
115
+ day: {
116
+ form: string;
117
+ };
118
+ dialog: {
119
+ form: string;
120
+ };
121
+ editgrid: {
122
+ form: string;
123
+ html: string;
124
+ };
125
+ editgridTable: {
126
+ form: string;
127
+ html: string;
128
+ };
129
+ field: {
130
+ form: string;
131
+ align: string;
132
+ };
133
+ fieldset: {
134
+ form: string;
135
+ };
136
+ file: {
137
+ form: string;
138
+ };
139
+ html: {
140
+ form: string;
141
+ };
142
+ icon: {
143
+ form: string;
144
+ };
145
+ input: {
146
+ form: string;
147
+ html: string;
148
+ };
149
+ label: {
150
+ form: string;
151
+ };
152
+ loader: {
153
+ form: string;
154
+ };
155
+ loading: {
156
+ form: string;
157
+ };
158
+ map: {
159
+ form: string;
160
+ };
161
+ message: {
162
+ form: string;
163
+ };
164
+ modaledit: {
165
+ form: string;
166
+ };
167
+ modaldialog: {
168
+ form: string;
169
+ };
170
+ modalPreview: {
171
+ form: string;
172
+ };
173
+ multipleMasksInput: {
174
+ form: string;
175
+ };
176
+ multiValueRow: {
177
+ form: string;
178
+ };
179
+ multiValueTable: {
180
+ form: string;
181
+ };
182
+ panel: {
183
+ form: string;
184
+ };
185
+ pdf: {
186
+ form: string;
187
+ };
188
+ pdfBuilder: {
189
+ form: string;
190
+ };
191
+ pdfBuilderUpload: {
192
+ form: string;
193
+ };
194
+ radio: {
195
+ form: string;
196
+ html: string;
197
+ };
198
+ resourceAdd: {
199
+ form: string;
200
+ };
201
+ select: {
202
+ form: string;
203
+ html: string;
204
+ };
205
+ selectOption: {
206
+ form: string;
207
+ html: string;
208
+ };
209
+ signature: {
210
+ form: string;
211
+ html: string;
212
+ };
213
+ survey: {
214
+ form: string;
215
+ html: string;
216
+ };
217
+ tab: {
218
+ flat: string;
219
+ form: string;
220
+ };
221
+ table: {
222
+ form: string;
223
+ };
224
+ tree: {
225
+ form: string;
226
+ };
227
+ };
3
228
  }
4
229
  export default _default;
@@ -5,25 +5,13 @@ 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 string_hash_1 = __importDefault(require("string-hash"));
8
+ const utils_1 = require("@formio/core/utils");
8
9
  const Evaluator = {
9
10
  noeval: false,
10
11
  protectedEval: false,
11
12
  cache: {},
12
- templateSettings: {
13
- evaluate: /\{%([\s\S]+?)%\}/g,
14
- interpolate: /\{\{([\s\S]+?)\}\}/g,
15
- escape: /\{\{\{([\s\S]+?)\}\}\}/g
16
- },
17
- evaluator(func, ...params) {
18
- if (Evaluator.noeval) {
19
- console.warn('No evaluations allowed for this renderer.');
20
- return lodash_1.default.noop;
21
- }
22
- if (typeof params[0] === 'object') {
23
- params = lodash_1.default.keys(params[0]);
24
- }
25
- return new Function(...params, func);
26
- },
13
+ templateSettings: utils_1.Evaluator.templateSettings,
14
+ evaluator: utils_1.Evaluator.evaluator,
27
15
  template(template, hash) {
28
16
  hash = hash || (0, string_hash_1.default)(template);
29
17
  if (Evaluator.cache[hash]) {
@@ -53,24 +41,7 @@ const Evaluator = {
53
41
  rawTemplate = String(rawTemplate);
54
42
  let template;
55
43
  if (Evaluator.noeval || options.noeval) {
56
- // No cached template methods available. Use poor-mans interpolate without eval.
57
- return rawTemplate.replace(/({{\s*(.*?)\s*}})/g, (match, $1, $2) => {
58
- // Allow for conditional values.
59
- const parts = $2.split('||').map(item => item.trim());
60
- let value = '';
61
- let path = '';
62
- for (let i = 0; i < parts.length; i++) {
63
- path = parts[i];
64
- value = lodash_1.default.get(data, path);
65
- if (value) {
66
- break;
67
- }
68
- }
69
- if (options.data) {
70
- lodash_1.default.set(options.data, path, value);
71
- }
72
- return value;
73
- });
44
+ return utils_1.Evaluator.interpolateString(rawTemplate, data, _options);
74
45
  }
75
46
  else {
76
47
  template = Evaluator.template(rawTemplate);
@@ -0,0 +1,16 @@
1
+ /**
2
+ * This file is used to mimic the i18n library interface.
3
+ */
4
+ export class I18n {
5
+ static init(languages?: {}): I18n;
6
+ static createInstance(): I18n;
7
+ constructor(languages?: {});
8
+ languages: {};
9
+ language: string;
10
+ currentLanguage: any;
11
+ setLanguages(languages: any): void;
12
+ dir(lang?: string): "rtl" | "ltr";
13
+ changeLanguage(language: any, ready?: null): void;
14
+ addResourceBundle(language: any, type: any, strings: any): void;
15
+ t(text: any, ...args: any[]): any;
16
+ }
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.I18n = void 0;
7
+ const utils_1 = require("@formio/core/utils");
8
+ const i18n_1 = __importDefault(require("../i18n"));
9
+ const i18Defaults = {};
10
+ for (const lang in i18n_1.default.resources) {
11
+ if (i18n_1.default.resources.hasOwnProperty(lang)) {
12
+ i18Defaults[lang] = i18n_1.default.resources[lang].translation;
13
+ }
14
+ }
15
+ /**
16
+ * This file is used to mimic the i18n library interface.
17
+ */
18
+ class I18n {
19
+ constructor(languages = {}) {
20
+ this.languages = i18Defaults;
21
+ this.language = 'en';
22
+ this.currentLanguage = i18Defaults.en;
23
+ this.setLanguages(languages);
24
+ this.changeLanguage(this.language);
25
+ }
26
+ setLanguages(languages) {
27
+ if (languages.resources) {
28
+ for (const lang in languages.resources) {
29
+ if (languages.resources.hasOwnProperty(lang)) {
30
+ languages[lang] = languages.resources[lang].translation;
31
+ }
32
+ }
33
+ delete languages.resources;
34
+ }
35
+ if (languages.lng) {
36
+ languages.language = languages.lng;
37
+ delete languages.lng;
38
+ }
39
+ // Do not use these configurations.
40
+ delete languages.nsSeparator;
41
+ delete languages.keySeparator;
42
+ delete languages.pluralSeparator;
43
+ delete languages.contextSeparator;
44
+ // Now establish the languages default.
45
+ if (languages.language) {
46
+ this.language = languages.language;
47
+ }
48
+ for (const lang in languages) {
49
+ if (lang !== 'language' && languages.hasOwnProperty(lang)) {
50
+ if (!this.languages[lang]) {
51
+ this.languages[lang] = {};
52
+ }
53
+ this.languages[lang] = Object.assign(Object.assign({}, this.languages[lang]), languages[lang]);
54
+ }
55
+ }
56
+ }
57
+ static init(languages = {}) {
58
+ return new I18n(languages);
59
+ }
60
+ dir(lang = '') {
61
+ lang = lang || this.language;
62
+ const rtls = ['ar', 'he', 'fa', 'ps', 'ur'];
63
+ return rtls.includes(lang) ? 'rtl' : 'ltr';
64
+ }
65
+ static createInstance() {
66
+ return new I18n();
67
+ }
68
+ changeLanguage(language, ready = null) {
69
+ if (!this.languages[language]) {
70
+ language = 'en';
71
+ }
72
+ this.language = language;
73
+ this.currentLanguage = this.languages[language] ? this.languages[language] : {};
74
+ if (ready) {
75
+ ready();
76
+ }
77
+ }
78
+ addResourceBundle(language, type, strings) {
79
+ this.languages[language] = strings;
80
+ }
81
+ t(text, ...args) {
82
+ if (this.currentLanguage[text]) {
83
+ return utils_1.Evaluator.interpolateString(this.currentLanguage[text], ...args);
84
+ }
85
+ return utils_1.Evaluator.interpolateString(text, ...args);
86
+ }
87
+ }
88
+ exports.I18n = I18n;
@@ -223,7 +223,7 @@ export function getNumberSeparators(lang?: string): {
223
223
  };
224
224
  export function getNumberDecimalLimit(component: any, defaultLimit: any): any;
225
225
  export function getCurrencyAffixes({ currency, decimalLimit, decimalSeparator, lang, }: {
226
- currency?: string | undefined;
226
+ currency: any;
227
227
  decimalLimit: any;
228
228
  decimalSeparator: any;
229
229
  lang: any;
@@ -349,6 +349,7 @@ export function isPromise(value: any): boolean;
349
349
  */
350
350
  export function isInsideScopingComponent(componentInstance: any, firstPass?: boolean): boolean | boolean | any;
351
351
  export function getFocusableElements(element: any): any;
352
+ export function getComponentSavedTypes(fullSchema: any): string[] | null;
352
353
  export * from "./formUtils";
353
354
  /**
354
355
  * Map values through unfold and return first non-nil value.
@@ -357,6 +358,15 @@ export * from "./formUtils";
357
358
  * @return {T}
358
359
  */
359
360
  export const firstNonNil: any;
361
+ export namespace componentValueTypes {
362
+ const number: string;
363
+ const string: string;
364
+ const boolean: string;
365
+ const array: string;
366
+ const object: string;
367
+ const date: string;
368
+ const any: string;
369
+ }
360
370
  import jsonLogic from 'json-logic-js';
361
371
  import ConditionOperators from './conditionOperators';
362
372
  import Evaluator from './Evaluator';
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- /* global $ */
2
+ /* global jQuery */
3
3
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
4
  if (k2 === undefined) k2 = k;
5
5
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -31,7 +31,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
31
31
  };
32
32
  Object.defineProperty(exports, "__esModule", { value: true });
33
33
  exports.observeOverload = exports.withSwitch = exports.firstNonNil = exports.unfold = exports.bootstrapVersion = exports.uniqueKey = exports.iterateKey = exports.delay = exports.fieldData = exports.getCurrencyAffixes = exports.getNumberDecimalLimit = exports.getNumberSeparators = exports.matchInputMask = exports.unmaskValue = exports.getInputMask = exports.convertFormatToMask = exports.convertFormatToMoment = exports.convertFormatToFlatpickr = exports.getLocaleDateFormatInfo = exports.formatOffset = exports.formatDate = exports.momentDate = exports.loadZones = exports.shouldLoadZones = exports.zonesLoaded = exports.offsetDate = exports.currentTimezone = exports.isValidDate = exports.getDateSetting = exports.guid = exports.uniqueName = exports.convertStringToHTMLElement = exports.unescapeHTML = exports.setActionProperty = exports.checkTrigger = exports.checkCondition = exports.checkJsonConditional = exports.checkCustomConditional = exports.getComponentActualValue = exports.checkSimpleConditional = exports.checkCalculated = exports.isMongoId = exports.boolValue = exports.getElementRect = exports.getPropertyValue = exports.getRandomComponentId = exports.evaluate = exports.moment = exports.ConditionOperators = exports.jsonLogic = void 0;
34
- exports._ = exports.getFocusableElements = exports.isInsideScopingComponent = exports.isPromise = exports.getDataParentComponent = exports.getComponentPath = exports.getComponentPathWithoutIndicies = exports.getBrowserInfo = exports.getIEBrowserVersion = exports.round = exports.getStringFromComponentPath = exports.hasInvalidComponent = exports.getArrayFromComponentPath = exports.isInputComponent = exports.interpolate = exports.Evaluator = exports.fastCloneDeep = exports.sanitize = exports.translateHTMLTemplate = exports.getContextButtons = exports.getContextComponents = void 0;
34
+ exports.getComponentSavedTypes = exports.componentValueTypes = exports._ = exports.getFocusableElements = exports.isInsideScopingComponent = exports.isPromise = exports.getDataParentComponent = exports.getComponentPath = exports.getComponentPathWithoutIndicies = exports.getBrowserInfo = exports.getIEBrowserVersion = exports.round = exports.getStringFromComponentPath = exports.hasInvalidComponent = exports.getArrayFromComponentPath = exports.isInputComponent = exports.interpolate = exports.Evaluator = exports.fastCloneDeep = exports.sanitize = exports.translateHTMLTemplate = exports.getContextButtons = exports.getContextComponents = void 0;
35
35
  const lodash_1 = __importDefault(require("lodash"));
36
36
  exports._ = lodash_1.default;
37
37
  const fetch_ponyfill_1 = __importDefault(require("fetch-ponyfill"));
@@ -40,7 +40,6 @@ exports.jsonLogic = json_logic_js_1.default;
40
40
  const moment_timezone_1 = __importDefault(require("moment-timezone/moment-timezone"));
41
41
  const jstimezonedetect_1 = __importDefault(require("jstimezonedetect"));
42
42
  const operators_1 = require("./jsonlogic/operators");
43
- const native_promise_only_1 = __importDefault(require("native-promise-only"));
44
43
  const dompurify_1 = __importDefault(require("dompurify"));
45
44
  const formUtils_1 = require("./formUtils");
46
45
  const Evaluator_1 = __importDefault(require("./Evaluator"));
@@ -50,7 +49,7 @@ exports.ConditionOperators = conditionOperators_1.default;
50
49
  const interpolate = Evaluator_1.default.interpolate;
51
50
  exports.interpolate = interpolate;
52
51
  const { fetch } = (0, fetch_ponyfill_1.default)({
53
- Promise: native_promise_only_1.default
52
+ Promise: Promise
54
53
  });
55
54
  __exportStar(require("./formUtils"), exports);
56
55
  // Configure JsonLogic
@@ -387,7 +386,7 @@ exports.checkCondition = checkCondition;
387
386
  */
388
387
  function checkTrigger(component, trigger, row, data, form, instance) {
389
388
  // If trigger is empty, don't fire it
390
- if (!trigger[trigger.type]) {
389
+ if (!trigger || !trigger[trigger.type]) {
391
390
  return false;
392
391
  }
393
392
  switch (trigger.type) {
@@ -612,7 +611,7 @@ exports.shouldLoadZones = shouldLoadZones;
612
611
  function loadZones(url, timezone) {
613
612
  if (timezone && !shouldLoadZones(timezone)) {
614
613
  // Return non-resolving promise.
615
- return new native_promise_only_1.default(lodash_1.default.noop);
614
+ return new Promise(lodash_1.default.noop);
616
615
  }
617
616
  if (moment_timezone_1.default.zonesPromise) {
618
617
  return moment_timezone_1.default.zonesPromise;
@@ -899,7 +898,7 @@ function getNumberDecimalLimit(component, defaultLimit) {
899
898
  return decimalLimit;
900
899
  }
901
900
  exports.getNumberDecimalLimit = getNumberDecimalLimit;
902
- function getCurrencyAffixes({ currency = 'USD', decimalLimit, decimalSeparator, lang, }) {
901
+ function getCurrencyAffixes({ currency, decimalLimit, decimalSeparator, lang, }) {
903
902
  // Get the prefix and suffix from the localized string.
904
903
  let regex = `(.*)?${(100).toLocaleString(lang)}`;
905
904
  if (decimalLimit) {
@@ -908,7 +907,7 @@ function getCurrencyAffixes({ currency = 'USD', decimalLimit, decimalSeparator,
908
907
  regex += '(.*)?';
909
908
  const parts = (100).toLocaleString(lang, {
910
909
  style: 'currency',
911
- currency,
910
+ currency: currency ? currency : 'USD',
912
911
  useGrouping: true,
913
912
  maximumFractionDigits: decimalLimit || 0,
914
913
  minimumFractionDigits: decimalLimit || 0
@@ -1032,8 +1031,8 @@ function bootstrapVersion(options) {
1032
1031
  if (options.bootstrap) {
1033
1032
  return options.bootstrap;
1034
1033
  }
1035
- if ((typeof $ === 'function') && (typeof $().collapse === 'function')) {
1036
- return parseInt($.fn.collapse.Constructor.VERSION.split('.')[0], 10);
1034
+ if ((typeof jQuery === 'function') && (typeof jQuery().collapse === 'function')) {
1035
+ return parseInt(jQuery.fn.collapse.Constructor.VERSION.split('.')[0], 10);
1037
1036
  }
1038
1037
  if (window.bootstrap && window.bootstrap.Collapse) {
1039
1038
  return parseInt(window.bootstrap.Collapse.VERSION.split('.')[0], 10);
@@ -1466,3 +1465,23 @@ function getFocusableElements(element) {
1466
1465
  return element.querySelectorAll(focusableSelector);
1467
1466
  }
1468
1467
  exports.getFocusableElements = getFocusableElements;
1468
+ exports.componentValueTypes = {
1469
+ number: 'number',
1470
+ string: 'string',
1471
+ boolean: 'boolean',
1472
+ array: 'array',
1473
+ object: 'object',
1474
+ date: 'date',
1475
+ any: 'any',
1476
+ };
1477
+ function getComponentSavedTypes(fullSchema) {
1478
+ const schema = fullSchema || {};
1479
+ if (schema.persistent !== true) {
1480
+ return [];
1481
+ }
1482
+ if (schema.multiple) {
1483
+ return [exports.componentValueTypes.array];
1484
+ }
1485
+ return null;
1486
+ }
1487
+ exports.getComponentSavedTypes = getComponentSavedTypes;
@@ -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);