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

Sign up to get free protection for your applications and to get access to all the features.
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);