@formio/js 5.0.0-rc.26 → 5.0.0-rc.28

Sign up to get free protection for your applications and to get access to all the features.
Files changed (360) hide show
  1. package/dist/fonts/bootstrap-icons.woff +0 -0
  2. package/dist/fonts/bootstrap-icons.woff2 +0 -0
  3. package/dist/formio.embed.js +1 -1
  4. package/dist/formio.embed.min.js +1 -1
  5. package/dist/formio.embed.min.js.LICENSE.txt +1 -1
  6. package/dist/formio.form.js +710 -689
  7. package/dist/formio.form.min.js +1 -1
  8. package/dist/formio.form.min.js.LICENSE.txt +2 -2
  9. package/dist/formio.full.css +100 -3
  10. package/dist/formio.full.js +715 -727
  11. package/dist/formio.full.min.css +2 -2
  12. package/dist/formio.full.min.js +1 -1
  13. package/dist/formio.full.min.js.LICENSE.txt +2 -2
  14. package/dist/formio.js +659 -264
  15. package/dist/formio.min.js +1 -1
  16. package/dist/formio.min.js.LICENSE.txt +2 -2
  17. package/dist/formio.utils.js +29 -8
  18. package/dist/formio.utils.min.js +1 -1
  19. package/dist/formio.utils.min.js.LICENSE.txt +2 -2
  20. package/lib/cjs/Embed.d.ts +2 -1
  21. package/lib/cjs/Embed.js +20 -7
  22. package/lib/cjs/PDF.js +2 -2
  23. package/lib/cjs/Webform.d.ts +3 -5
  24. package/lib/cjs/Webform.js +59 -81
  25. package/lib/cjs/WebformBuilder.d.ts +1 -1
  26. package/lib/cjs/WebformBuilder.js +27 -10
  27. package/lib/cjs/Wizard.d.ts +2 -0
  28. package/lib/cjs/Wizard.js +37 -26
  29. package/lib/cjs/WizardBuilder.d.ts +1 -0
  30. package/lib/cjs/addons/PasswordStrength/PasswordStrengthAddon.d.ts +1 -2
  31. package/lib/cjs/addons/PasswordStrength/PasswordStrengthAddon.js +11 -12
  32. package/lib/cjs/addons/index.d.ts +1 -0
  33. package/lib/cjs/addons/index.js +5 -1
  34. package/lib/cjs/components/Components.d.ts +7 -0
  35. package/lib/cjs/components/Components.js +30 -0
  36. package/lib/cjs/components/_classes/component/Component.d.ts +57 -27
  37. package/lib/cjs/components/_classes/component/Component.js +193 -119
  38. package/lib/cjs/components/_classes/component/editForm/Component.edit.addons.d.ts +8 -0
  39. package/lib/cjs/components/_classes/component/editForm/Component.edit.addons.js +31 -1
  40. package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +28 -11
  41. package/lib/cjs/components/_classes/nested/NestedComponent.js +88 -57
  42. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +4 -3
  43. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +17 -4
  44. package/lib/cjs/components/builder.js +0 -2
  45. package/lib/cjs/components/button/Button.js +2 -1
  46. package/lib/cjs/components/columns/Columns.d.ts +1 -0
  47. package/lib/cjs/components/columns/Columns.js +2 -3
  48. package/lib/cjs/components/columns/editForm/Columns.edit.display.d.ts +30 -1
  49. package/lib/cjs/components/columns/editForm/Columns.edit.display.js +23 -1
  50. package/lib/cjs/components/container/Container.d.ts +1 -0
  51. package/lib/cjs/components/container/Container.js +2 -6
  52. package/lib/cjs/components/content/Content.d.ts +1 -0
  53. package/lib/cjs/components/content/Content.js +1 -0
  54. package/lib/cjs/components/datagrid/DataGrid.d.ts +0 -8
  55. package/lib/cjs/components/datagrid/DataGrid.js +9 -26
  56. package/lib/cjs/components/datamap/DataMap.js +2 -1
  57. package/lib/cjs/components/datetime/DateTime.js +0 -2
  58. package/lib/cjs/components/day/Day.js +2 -3
  59. package/lib/cjs/components/editgrid/EditGrid.d.ts +8 -4
  60. package/lib/cjs/components/editgrid/EditGrid.js +96 -73
  61. package/lib/cjs/components/email/Email.js +0 -1
  62. package/lib/cjs/components/file/File.js +1 -1
  63. package/lib/cjs/components/file/fixtures/comp3.d.ts +29 -0
  64. package/lib/cjs/components/file/fixtures/comp3.js +31 -0
  65. package/lib/cjs/components/form/Form.d.ts +2 -6
  66. package/lib/cjs/components/form/Form.js +43 -14
  67. package/lib/cjs/components/index.d.ts +0 -2
  68. package/lib/cjs/components/index.js +0 -2
  69. package/lib/cjs/components/number/Number.d.ts +1 -2
  70. package/lib/cjs/components/number/Number.js +5 -6
  71. package/lib/cjs/components/panel/Panel.d.ts +0 -1
  72. package/lib/cjs/components/panel/Panel.js +2 -9
  73. package/lib/cjs/components/panel/editForm/Panel.edit.display.d.ts +6 -38
  74. package/lib/cjs/components/panel/editForm/Panel.edit.display.js +3 -16
  75. package/lib/cjs/components/phonenumber/PhoneNumber.js +17 -0
  76. package/lib/cjs/components/radio/Radio.js +0 -2
  77. package/lib/cjs/components/recaptcha/ReCaptcha.d.ts +1 -1
  78. package/lib/cjs/components/recaptcha/ReCaptcha.js +2 -2
  79. package/lib/cjs/components/select/Select.js +3 -2
  80. package/lib/cjs/components/selectboxes/SelectBoxes.d.ts +1 -2
  81. package/lib/cjs/components/selectboxes/SelectBoxes.js +7 -6
  82. package/lib/cjs/components/table/editForm/Table.edit.display.d.ts +31 -2
  83. package/lib/cjs/components/table/editForm/Table.edit.display.js +22 -0
  84. package/lib/cjs/components/tabs/editForm/Tabs.edit.display.d.ts +30 -2
  85. package/lib/cjs/components/tabs/editForm/Tabs.edit.display.js +22 -0
  86. package/lib/cjs/components/textfield/TextField.js +20 -6
  87. package/lib/cjs/components/time/Time.js +0 -6
  88. package/lib/cjs/components/url/Url.js +0 -1
  89. package/lib/cjs/components/well/editForm/Well.edit.display.d.ts +25 -2
  90. package/lib/cjs/components/well/editForm/Well.edit.display.js +18 -0
  91. package/lib/cjs/formio.embed.js +5 -3
  92. package/lib/cjs/formio.form.d.ts +1 -7
  93. package/lib/cjs/formio.form.js +2 -38
  94. package/lib/cjs/index.d.ts +2 -1
  95. package/lib/cjs/index.js +2 -1
  96. package/lib/cjs/providers/Providers.d.ts +0 -4
  97. package/lib/cjs/providers/storage/azure.d.ts +0 -2
  98. package/lib/cjs/providers/storage/azure.js +1 -6
  99. package/lib/cjs/providers/storage/googleDrive.d.ts +0 -1
  100. package/lib/cjs/providers/storage/googleDrive.js +0 -4
  101. package/lib/cjs/providers/storage/s3.d.ts +0 -1
  102. package/lib/cjs/providers/storage/s3.js +0 -4
  103. package/lib/cjs/translations/en.d.ts +5 -0
  104. package/lib/cjs/translations/en.js +5 -0
  105. package/lib/cjs/utils/formUtils.js +1 -0
  106. package/lib/cjs/utils/utils.d.ts +2 -1
  107. package/lib/cjs/utils/utils.js +27 -9
  108. package/lib/mjs/Embed.d.ts +2 -1
  109. package/lib/mjs/Embed.js +20 -7
  110. package/lib/mjs/PDF.js +2 -2
  111. package/lib/mjs/Webform.d.ts +3 -5
  112. package/lib/mjs/Webform.js +58 -82
  113. package/lib/mjs/WebformBuilder.d.ts +1 -1
  114. package/lib/mjs/WebformBuilder.js +28 -7
  115. package/lib/mjs/Wizard.d.ts +2 -0
  116. package/lib/mjs/Wizard.js +36 -27
  117. package/lib/mjs/WizardBuilder.d.ts +1 -0
  118. package/lib/mjs/addons/PasswordStrength/PasswordStrengthAddon.d.ts +1 -2
  119. package/lib/mjs/addons/PasswordStrength/PasswordStrengthAddon.js +11 -12
  120. package/lib/mjs/addons/index.d.ts +1 -0
  121. package/lib/mjs/addons/index.js +5 -1
  122. package/lib/mjs/components/Components.d.ts +7 -0
  123. package/lib/mjs/components/Components.js +29 -0
  124. package/lib/mjs/components/_classes/component/Component.d.ts +57 -27
  125. package/lib/mjs/components/_classes/component/Component.js +191 -118
  126. package/lib/mjs/components/_classes/component/editForm/Component.edit.addons.d.ts +8 -0
  127. package/lib/mjs/components/_classes/component/editForm/Component.edit.addons.js +31 -1
  128. package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +28 -11
  129. package/lib/mjs/components/_classes/nested/NestedComponent.js +88 -57
  130. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +4 -3
  131. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +18 -5
  132. package/lib/mjs/components/builder.js +0 -2
  133. package/lib/mjs/components/button/Button.js +2 -1
  134. package/lib/mjs/components/columns/Columns.d.ts +1 -0
  135. package/lib/mjs/components/columns/Columns.js +2 -3
  136. package/lib/mjs/components/columns/editForm/Columns.edit.display.d.ts +30 -1
  137. package/lib/mjs/components/columns/editForm/Columns.edit.display.js +23 -1
  138. package/lib/mjs/components/container/Container.d.ts +1 -0
  139. package/lib/mjs/components/container/Container.js +2 -6
  140. package/lib/mjs/components/content/Content.d.ts +1 -0
  141. package/lib/mjs/components/content/Content.js +1 -0
  142. package/lib/mjs/components/datagrid/DataGrid.d.ts +0 -8
  143. package/lib/mjs/components/datagrid/DataGrid.js +9 -26
  144. package/lib/mjs/components/datamap/DataMap.js +2 -1
  145. package/lib/mjs/components/datetime/DateTime.js +0 -2
  146. package/lib/mjs/components/day/Day.js +2 -3
  147. package/lib/mjs/components/editgrid/EditGrid.d.ts +8 -4
  148. package/lib/mjs/components/editgrid/EditGrid.js +97 -76
  149. package/lib/mjs/components/email/Email.js +0 -1
  150. package/lib/mjs/components/file/File.js +1 -1
  151. package/lib/mjs/components/file/fixtures/comp3.d.ts +29 -0
  152. package/lib/mjs/components/file/fixtures/comp3.js +29 -0
  153. package/lib/mjs/components/form/Form.d.ts +2 -6
  154. package/lib/mjs/components/form/Form.js +45 -14
  155. package/lib/mjs/components/index.d.ts +0 -2
  156. package/lib/mjs/components/index.js +0 -2
  157. package/lib/mjs/components/number/Number.d.ts +1 -2
  158. package/lib/mjs/components/number/Number.js +4 -5
  159. package/lib/mjs/components/panel/Panel.d.ts +0 -1
  160. package/lib/mjs/components/panel/Panel.js +3 -9
  161. package/lib/mjs/components/panel/editForm/Panel.edit.display.d.ts +6 -38
  162. package/lib/mjs/components/panel/editForm/Panel.edit.display.js +3 -16
  163. package/lib/mjs/components/phonenumber/PhoneNumber.js +17 -0
  164. package/lib/mjs/components/radio/Radio.js +0 -2
  165. package/lib/mjs/components/recaptcha/ReCaptcha.d.ts +1 -1
  166. package/lib/mjs/components/recaptcha/ReCaptcha.js +2 -2
  167. package/lib/mjs/components/select/Select.js +3 -2
  168. package/lib/mjs/components/selectboxes/SelectBoxes.d.ts +1 -2
  169. package/lib/mjs/components/selectboxes/SelectBoxes.js +7 -6
  170. package/lib/mjs/components/table/editForm/Table.edit.display.d.ts +31 -2
  171. package/lib/mjs/components/table/editForm/Table.edit.display.js +22 -0
  172. package/lib/mjs/components/tabs/editForm/Tabs.edit.display.d.ts +30 -2
  173. package/lib/mjs/components/tabs/editForm/Tabs.edit.display.js +22 -0
  174. package/lib/mjs/components/textfield/TextField.js +20 -6
  175. package/lib/mjs/components/time/Time.js +0 -6
  176. package/lib/mjs/components/url/Url.js +0 -1
  177. package/lib/mjs/components/well/editForm/Well.edit.display.d.ts +25 -2
  178. package/lib/mjs/components/well/editForm/Well.edit.display.js +18 -0
  179. package/lib/mjs/formio.embed.js +5 -3
  180. package/lib/mjs/formio.form.d.ts +1 -7
  181. package/lib/mjs/formio.form.js +2 -32
  182. package/lib/mjs/index.d.ts +2 -1
  183. package/lib/mjs/index.js +1 -1
  184. package/lib/mjs/providers/Providers.d.ts +0 -4
  185. package/lib/mjs/providers/storage/azure.d.ts +0 -2
  186. package/lib/mjs/providers/storage/azure.js +1 -6
  187. package/lib/mjs/providers/storage/googleDrive.d.ts +0 -1
  188. package/lib/mjs/providers/storage/googleDrive.js +0 -4
  189. package/lib/mjs/providers/storage/s3.d.ts +0 -1
  190. package/lib/mjs/providers/storage/s3.js +0 -4
  191. package/lib/mjs/translations/en.d.ts +5 -0
  192. package/lib/mjs/translations/en.js +5 -0
  193. package/lib/mjs/utils/formUtils.js +1 -0
  194. package/lib/mjs/utils/utils.d.ts +2 -1
  195. package/lib/mjs/utils/utils.js +24 -7
  196. package/package.json +6 -6
  197. package/lib/cjs/components/tree/Node.d.ts +0 -55
  198. package/lib/cjs/components/tree/Node.js +0 -185
  199. package/lib/cjs/components/tree/Tree.d.ts +0 -48
  200. package/lib/cjs/components/tree/Tree.form.d.ts +0 -3
  201. package/lib/cjs/components/tree/Tree.form.js +0 -21
  202. package/lib/cjs/components/tree/Tree.js +0 -383
  203. package/lib/cjs/components/tree/editForm/Tree.edit.data.d.ts +0 -5
  204. package/lib/cjs/components/tree/editForm/Tree.edit.data.js +0 -9
  205. package/lib/cjs/components/tree/editForm/Tree.edit.display.d.ts +0 -9
  206. package/lib/cjs/components/tree/editForm/Tree.edit.display.js +0 -12
  207. package/lib/cjs/components/tree/fixtures/comp1.d.ts +0 -23
  208. package/lib/cjs/components/tree/fixtures/comp1.js +0 -24
  209. package/lib/cjs/components/tree/fixtures/comp2.d.ts +0 -116
  210. package/lib/cjs/components/tree/fixtures/comp2.js +0 -82
  211. package/lib/cjs/components/tree/fixtures/comp3.d.ts +0 -24
  212. package/lib/cjs/components/tree/fixtures/comp3.js +0 -25
  213. package/lib/cjs/components/tree/fixtures/comp4.d.ts +0 -42
  214. package/lib/cjs/components/tree/fixtures/comp4.js +0 -47
  215. package/lib/cjs/components/tree/fixtures/index.d.ts +0 -5
  216. package/lib/cjs/components/tree/fixtures/index.js +0 -14
  217. package/lib/cjs/validator/Rules.d.ts +0 -53
  218. package/lib/cjs/validator/Rules.js +0 -22
  219. package/lib/cjs/validator/Validator.d.ts +0 -228
  220. package/lib/cjs/validator/Validator.js +0 -1113
  221. package/lib/cjs/validator/conjunctions/index.d.ts +0 -7
  222. package/lib/cjs/validator/conjunctions/index.js +0 -18
  223. package/lib/cjs/validator/operators/index.d.ts +0 -7
  224. package/lib/cjs/validator/operators/index.js +0 -18
  225. package/lib/cjs/validator/quickRules/index.d.ts +0 -7
  226. package/lib/cjs/validator/quickRules/index.js +0 -18
  227. package/lib/cjs/validator/rules/Custom.d.ts +0 -5
  228. package/lib/cjs/validator/rules/Custom.js +0 -30
  229. package/lib/cjs/validator/rules/Date.d.ts +0 -5
  230. package/lib/cjs/validator/rules/Date.js +0 -25
  231. package/lib/cjs/validator/rules/Day.d.ts +0 -5
  232. package/lib/cjs/validator/rules/Day.js +0 -58
  233. package/lib/cjs/validator/rules/Email.d.ts +0 -5
  234. package/lib/cjs/validator/rules/Email.js +0 -24
  235. package/lib/cjs/validator/rules/JSON.d.ts +0 -5
  236. package/lib/cjs/validator/rules/JSON.js +0 -29
  237. package/lib/cjs/validator/rules/Mask.d.ts +0 -5
  238. package/lib/cjs/validator/rules/Mask.js +0 -32
  239. package/lib/cjs/validator/rules/Max.d.ts +0 -5
  240. package/lib/cjs/validator/rules/Max.js +0 -21
  241. package/lib/cjs/validator/rules/MaxDate.d.ts +0 -5
  242. package/lib/cjs/validator/rules/MaxDate.js +0 -34
  243. package/lib/cjs/validator/rules/MaxLength.d.ts +0 -5
  244. package/lib/cjs/validator/rules/MaxLength.js +0 -20
  245. package/lib/cjs/validator/rules/MaxWords.d.ts +0 -5
  246. package/lib/cjs/validator/rules/MaxWords.js +0 -20
  247. package/lib/cjs/validator/rules/MaxYear.d.ts +0 -5
  248. package/lib/cjs/validator/rules/MaxYear.js +0 -22
  249. package/lib/cjs/validator/rules/Min.d.ts +0 -5
  250. package/lib/cjs/validator/rules/Min.js +0 -21
  251. package/lib/cjs/validator/rules/MinDate.d.ts +0 -5
  252. package/lib/cjs/validator/rules/MinDate.js +0 -30
  253. package/lib/cjs/validator/rules/MinLength.d.ts +0 -5
  254. package/lib/cjs/validator/rules/MinLength.js +0 -20
  255. package/lib/cjs/validator/rules/MinWords.d.ts +0 -5
  256. package/lib/cjs/validator/rules/MinWords.js +0 -20
  257. package/lib/cjs/validator/rules/MinYear.d.ts +0 -5
  258. package/lib/cjs/validator/rules/MinYear.js +0 -22
  259. package/lib/cjs/validator/rules/Pattern.d.ts +0 -5
  260. package/lib/cjs/validator/rules/Pattern.js +0 -20
  261. package/lib/cjs/validator/rules/Required.d.ts +0 -5
  262. package/lib/cjs/validator/rules/Required.js +0 -17
  263. package/lib/cjs/validator/rules/Rule.d.ts +0 -7
  264. package/lib/cjs/validator/rules/Rule.js +0 -12
  265. package/lib/cjs/validator/rules/Select.d.ts +0 -5
  266. package/lib/cjs/validator/rules/Select.js +0 -95
  267. package/lib/cjs/validator/rules/Time.d.ts +0 -5
  268. package/lib/cjs/validator/rules/Time.js +0 -19
  269. package/lib/cjs/validator/rules/Unique.d.ts +0 -5
  270. package/lib/cjs/validator/rules/Unique.js +0 -69
  271. package/lib/cjs/validator/rules/Url.d.ts +0 -5
  272. package/lib/cjs/validator/rules/Url.js +0 -23
  273. package/lib/cjs/validator/rules/index.d.ts +0 -47
  274. package/lib/cjs/validator/rules/index.js +0 -51
  275. package/lib/cjs/validator/transformers/index.d.ts +0 -7
  276. package/lib/cjs/validator/transformers/index.js +0 -18
  277. package/lib/cjs/validator/valueSources/index.d.ts +0 -7
  278. package/lib/cjs/validator/valueSources/index.js +0 -18
  279. package/lib/mjs/components/tree/Node.d.ts +0 -55
  280. package/lib/mjs/components/tree/Node.js +0 -179
  281. package/lib/mjs/components/tree/Tree.d.ts +0 -48
  282. package/lib/mjs/components/tree/Tree.form.d.ts +0 -3
  283. package/lib/mjs/components/tree/Tree.form.js +0 -15
  284. package/lib/mjs/components/tree/Tree.js +0 -384
  285. package/lib/mjs/components/tree/editForm/Tree.edit.data.d.ts +0 -5
  286. package/lib/mjs/components/tree/editForm/Tree.edit.data.js +0 -7
  287. package/lib/mjs/components/tree/editForm/Tree.edit.display.d.ts +0 -9
  288. package/lib/mjs/components/tree/editForm/Tree.edit.display.js +0 -10
  289. package/lib/mjs/components/tree/fixtures/comp1.d.ts +0 -23
  290. package/lib/mjs/components/tree/fixtures/comp1.js +0 -22
  291. package/lib/mjs/components/tree/fixtures/comp2.d.ts +0 -116
  292. package/lib/mjs/components/tree/fixtures/comp2.js +0 -80
  293. package/lib/mjs/components/tree/fixtures/comp3.d.ts +0 -24
  294. package/lib/mjs/components/tree/fixtures/comp3.js +0 -23
  295. package/lib/mjs/components/tree/fixtures/comp4.d.ts +0 -42
  296. package/lib/mjs/components/tree/fixtures/comp4.js +0 -45
  297. package/lib/mjs/components/tree/fixtures/index.d.ts +0 -5
  298. package/lib/mjs/components/tree/fixtures/index.js +0 -5
  299. package/lib/mjs/validator/Rules.d.ts +0 -53
  300. package/lib/mjs/validator/Rules.js +0 -17
  301. package/lib/mjs/validator/Validator.d.ts +0 -228
  302. package/lib/mjs/validator/Validator.js +0 -1103
  303. package/lib/mjs/validator/conjunctions/index.d.ts +0 -7
  304. package/lib/mjs/validator/conjunctions/index.js +0 -16
  305. package/lib/mjs/validator/operators/index.d.ts +0 -7
  306. package/lib/mjs/validator/operators/index.js +0 -16
  307. package/lib/mjs/validator/quickRules/index.d.ts +0 -7
  308. package/lib/mjs/validator/quickRules/index.js +0 -16
  309. package/lib/mjs/validator/rules/Custom.d.ts +0 -5
  310. package/lib/mjs/validator/rules/Custom.js +0 -21
  311. package/lib/mjs/validator/rules/Date.d.ts +0 -5
  312. package/lib/mjs/validator/rules/Date.js +0 -16
  313. package/lib/mjs/validator/rules/Day.d.ts +0 -5
  314. package/lib/mjs/validator/rules/Day.js +0 -49
  315. package/lib/mjs/validator/rules/Email.d.ts +0 -5
  316. package/lib/mjs/validator/rules/Email.js +0 -15
  317. package/lib/mjs/validator/rules/JSON.d.ts +0 -5
  318. package/lib/mjs/validator/rules/JSON.js +0 -20
  319. package/lib/mjs/validator/rules/Mask.d.ts +0 -5
  320. package/lib/mjs/validator/rules/Mask.js +0 -23
  321. package/lib/mjs/validator/rules/Max.d.ts +0 -5
  322. package/lib/mjs/validator/rules/Max.js +0 -12
  323. package/lib/mjs/validator/rules/MaxDate.d.ts +0 -5
  324. package/lib/mjs/validator/rules/MaxDate.js +0 -25
  325. package/lib/mjs/validator/rules/MaxLength.d.ts +0 -5
  326. package/lib/mjs/validator/rules/MaxLength.js +0 -11
  327. package/lib/mjs/validator/rules/MaxWords.d.ts +0 -5
  328. package/lib/mjs/validator/rules/MaxWords.js +0 -11
  329. package/lib/mjs/validator/rules/MaxYear.d.ts +0 -5
  330. package/lib/mjs/validator/rules/MaxYear.js +0 -13
  331. package/lib/mjs/validator/rules/Min.d.ts +0 -5
  332. package/lib/mjs/validator/rules/Min.js +0 -12
  333. package/lib/mjs/validator/rules/MinDate.d.ts +0 -5
  334. package/lib/mjs/validator/rules/MinDate.js +0 -21
  335. package/lib/mjs/validator/rules/MinLength.d.ts +0 -5
  336. package/lib/mjs/validator/rules/MinLength.js +0 -11
  337. package/lib/mjs/validator/rules/MinWords.d.ts +0 -5
  338. package/lib/mjs/validator/rules/MinWords.js +0 -11
  339. package/lib/mjs/validator/rules/MinYear.d.ts +0 -5
  340. package/lib/mjs/validator/rules/MinYear.js +0 -13
  341. package/lib/mjs/validator/rules/Pattern.d.ts +0 -5
  342. package/lib/mjs/validator/rules/Pattern.js +0 -11
  343. package/lib/mjs/validator/rules/Required.d.ts +0 -5
  344. package/lib/mjs/validator/rules/Required.js +0 -8
  345. package/lib/mjs/validator/rules/Rule.d.ts +0 -7
  346. package/lib/mjs/validator/rules/Rule.js +0 -9
  347. package/lib/mjs/validator/rules/Select.d.ts +0 -5
  348. package/lib/mjs/validator/rules/Select.js +0 -86
  349. package/lib/mjs/validator/rules/Time.d.ts +0 -5
  350. package/lib/mjs/validator/rules/Time.js +0 -10
  351. package/lib/mjs/validator/rules/Unique.d.ts +0 -5
  352. package/lib/mjs/validator/rules/Unique.js +0 -60
  353. package/lib/mjs/validator/rules/Url.d.ts +0 -5
  354. package/lib/mjs/validator/rules/Url.js +0 -14
  355. package/lib/mjs/validator/rules/index.d.ts +0 -47
  356. package/lib/mjs/validator/rules/index.js +0 -46
  357. package/lib/mjs/validator/transformers/index.d.ts +0 -7
  358. package/lib/mjs/validator/transformers/index.js +0 -16
  359. package/lib/mjs/validator/valueSources/index.d.ts +0 -7
  360. package/lib/mjs/validator/valueSources/index.js +0 -16
@@ -10,9 +10,9 @@
10
10
  * MIT licensed
11
11
  */
12
12
 
13
- /*! @license DOMPurify 3.0.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.5/LICENSE */
13
+ /*! @license DOMPurify 3.0.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.6/LICENSE */
14
14
 
15
- /*! formiojs v5.0.0-rc.25 | https://unpkg.com/formiojs@5.0.0-rc.25/LICENSE.txt */
15
+ /*! formiojs v5.0.0-rc.28 | https://unpkg.com/formiojs@5.0.0-rc.28/LICENSE.txt */
16
16
 
17
17
  /**
18
18
  * @license
@@ -5,6 +5,7 @@ export class Formio {
5
5
  static config: {};
6
6
  static cdn: null;
7
7
  static proxy: boolean;
8
+ static version: string;
8
9
  static setBaseUrl(url: any): Promise<void>;
9
10
  static setProjectUrl(url: any): Promise<void>;
10
11
  static debug(...args: any[]): void;
@@ -15,7 +16,7 @@ export class Formio {
15
16
  static addStyles(wrapper: any, href: any): Promise<void>;
16
17
  static submitDone(instance: any, submission: any): Promise<void>;
17
18
  static formioScript(script: any, builder: any): any;
18
- static init(element: any, builder?: boolean): Promise<any>;
19
+ static init(element: any, options?: {}, builder?: boolean): Promise<any>;
19
20
  static createForm(element: any, form: any, options: any): Promise<any>;
20
21
  static builder(element: any, form: any, options: any): Promise<any>;
21
22
  }
package/lib/cjs/Embed.js CHANGED
@@ -136,10 +136,14 @@ class Formio {
136
136
  }
137
137
  // Return the full script if the builder is being used.
138
138
  static formioScript(script, builder) {
139
- return builder ? script.replace('formio.form', 'formio.full') : script;
139
+ if (Formio.fullAdded || builder) {
140
+ Formio.fullAdded = true;
141
+ return script.replace('formio.form', 'formio.full');
142
+ }
143
+ return script;
140
144
  }
141
145
  // eslint-disable-next-line max-statements
142
- static init(element, builder = false) {
146
+ static init(element, options = {}, builder = false) {
143
147
  return __awaiter(this, void 0, void 0, function* () {
144
148
  Formio.cdn = new CDN_js_1.default(Formio.config.cdn);
145
149
  Formio.config.libs = Formio.config.libs || {
@@ -157,10 +161,17 @@ class Formio {
157
161
  };
158
162
  const id = Formio.config.id || `formio-${Math.random().toString(36).substring(7)}`;
159
163
  // Create a new wrapper and add the element inside of a new wrapper.
160
- const wrapper = Formio.createElement('div', {
164
+ let wrapper = Formio.createElement('div', {
161
165
  'id': `"${id}-wrapper"`
162
166
  });
163
167
  element.parentNode.insertBefore(wrapper, element);
168
+ // If we include the libraries, then we will attempt to run this in shadow dom.
169
+ if (Formio.config.includeLibs && (typeof wrapper.attachShadow === 'function') && !Formio.config.premium) {
170
+ wrapper = wrapper.attachShadow({
171
+ mode: 'open'
172
+ });
173
+ options.shadowRoot = wrapper;
174
+ }
164
175
  element.parentNode.removeChild(element);
165
176
  wrapper.appendChild(element);
166
177
  // Load the renderer styles.
@@ -180,7 +191,8 @@ class Formio {
180
191
  }
181
192
  }]
182
193
  }]));
183
- Formio.FormioClass = yield Formio.addScript(wrapper, Formio.formioScript(Formio.config.script || `${Formio.cdn.js}/formio.form.min.js`, builder), 'Formio');
194
+ const renderer = Formio.config.debug ? 'formio.form' : 'formio.form.min';
195
+ Formio.FormioClass = yield Formio.addScript(wrapper, Formio.formioScript(Formio.config.script || `${Formio.cdn.js}/${renderer}.js`, builder), 'Formio');
184
196
  Formio.FormioClass.setBaseUrl(Formio.baseUrl || Formio.config.base);
185
197
  Formio.FormioClass.setProjectUrl(Formio.projectUrl || Formio.config.project);
186
198
  Formio.FormioClass.language = Formio.language;
@@ -222,7 +234,7 @@ class Formio {
222
234
  Formio.debug('Using premium');
223
235
  Formio.FormioClass.use(yield Formio.addScript(wrapper, Formio.config.premium.js, 'premium'));
224
236
  }
225
- yield Formio.addStyles(wrapper, Formio.formioScript(Formio.config.style || `${Formio.cdn.js}/formio.form.min.css`, builder));
237
+ yield Formio.addStyles(wrapper, Formio.formioScript(Formio.config.style || `${Formio.cdn.js}/${renderer}.css`, builder));
226
238
  if (Formio.config.before) {
227
239
  yield Formio.config.before(Formio.FormioClass, element, Formio.config);
228
240
  }
@@ -232,7 +244,7 @@ class Formio {
232
244
  }
233
245
  static createForm(element, form, options) {
234
246
  return __awaiter(this, void 0, void 0, function* () {
235
- const wrapper = yield Formio.init(element);
247
+ const wrapper = yield Formio.init(element, options);
236
248
  return Formio.FormioClass.createForm(element, form, Object.assign(Object.assign({}, options), { noLoader: true })).then((instance) => {
237
249
  Formio.debug('Form created', instance);
238
250
  // Remove the loader.
@@ -257,7 +269,7 @@ class Formio {
257
269
  }
258
270
  static builder(element, form, options) {
259
271
  return __awaiter(this, void 0, void 0, function* () {
260
- const wrapper = yield Formio.init(element, true);
272
+ const wrapper = yield Formio.init(element, options, true);
261
273
  return Formio.FormioClass.builder(element, form, options).then((instance) => {
262
274
  Formio.debug('Builder created', instance);
263
275
  Formio.debug('Removing loader');
@@ -276,6 +288,7 @@ class Formio {
276
288
  Formio.config = {};
277
289
  Formio.cdn = null;
278
290
  Formio.proxy = true;
291
+ Formio.version = 'FORMIO_VERSION';
279
292
  exports.Formio = Formio;
280
293
  class Form {
281
294
  constructor(element, form, options) {
package/lib/cjs/PDF.js CHANGED
@@ -241,7 +241,7 @@ class PDF extends Webform_1.default {
241
241
  const helpBlock = document.getElementById('submit-error');
242
242
  const submitError = this.t('submitError');
243
243
  const isSubmitErrorShown = ((_a = this.refs.buttonMessage) === null || _a === void 0 ? void 0 : _a.textContent.trim()) === submitError;
244
- if (!helpBlock && this.errors.length && !isSubmitErrorShown) {
244
+ if (!helpBlock && error.length && !isSubmitErrorShown) {
245
245
  const p = this.ce('p', { class: 'help-block' });
246
246
  this.setContent(p, submitError);
247
247
  p.addEventListener('click', () => {
@@ -251,7 +251,7 @@ class PDF extends Webform_1.default {
251
251
  this.appendTo(p, div);
252
252
  this.appendTo(div, this.element);
253
253
  }
254
- if (!this.errors.length && helpBlock) {
254
+ if (!error.length && helpBlock) {
255
255
  helpBlock.remove();
256
256
  }
257
257
  super.showErrors(error, triggerEvent);
@@ -20,7 +20,6 @@ declare class Webform extends NestedDataComponent {
20
20
  draftEnabled: boolean;
21
21
  savingDraft: boolean;
22
22
  triggerSaveDraft: any;
23
- customErrors: any[];
24
23
  set nosubmit(arg: any);
25
24
  get nosubmit(): any;
26
25
  /**
@@ -327,7 +326,7 @@ declare class Webform extends NestedDataComponent {
327
326
  * @param {Object} error - An optional additional error to display along with the component errors.
328
327
  * @returns {*}
329
328
  */
330
- showErrors(error: Object, triggerEvent: any, onChange: any): any;
329
+ showErrors(errors: any, triggerEvent: any, onChange: any): any;
331
330
  /**
332
331
  * Called when the submission has completed, or if the submission needs to be sent to an external library.
333
332
  *
@@ -342,7 +341,7 @@ declare class Webform extends NestedDataComponent {
342
341
  *
343
342
  * @param {Object} error - The error that occured.
344
343
  */
345
- onSubmissionError(error: Object): any;
344
+ onSubmissionError(error: Object): false | undefined;
346
345
  /**
347
346
  * Trigger the change event for this form.
348
347
  *
@@ -350,7 +349,6 @@ declare class Webform extends NestedDataComponent {
350
349
  * @param flags
351
350
  */
352
351
  onChange(flags: any, changed: any, modified: any, changes: any): void;
353
- checkData(data: any, flags?: {}): any;
354
352
  /**
355
353
  * Send a delete request to the server.
356
354
  */
@@ -388,7 +386,7 @@ declare class Webform extends NestedDataComponent {
388
386
  *
389
387
  * @returns {Promise} - A promise when the form is done submitting.
390
388
  */
391
- submit(before: boolean, options: any): Promise<any>;
389
+ submit(before: boolean, options?: {}): Promise<any>;
392
390
  submitUrl(URL: any, headers: any): void;
393
391
  triggerRecaptcha(): void;
394
392
  _nosubmit: any;
@@ -115,7 +115,6 @@ class Webform extends NestedDataComponent_1.default {
115
115
  else {
116
116
  this.triggerSaveDraft = this.saveDraft.bind(this);
117
117
  }
118
- this.customErrors = [];
119
118
  /**
120
119
  * Determines if this form should submit the API on submit.
121
120
  * @type {boolean}
@@ -779,9 +778,9 @@ class Webform extends NestedDataComponent_1.default {
779
778
  this.component.input = false;
780
779
  this.addComponents();
781
780
  this.on('submitButton', options => {
782
- this.submit(false, options).catch(e => e !== false && console.log(e));
781
+ this.submit(false, options).catch(e => e !== false && e !== undefined && console.log(e));
783
782
  }, true);
784
- this.on('checkValidity', (data) => this.checkValidity(data, true, data), true);
783
+ this.on('checkValidity', (data) => this.validate(data, { dirty: true, process: 'change' }), true);
785
784
  this.on('requestUrl', (args) => (this.submitUrl(args.url, args.headers)), true);
786
785
  this.on('resetForm', () => this.resetValue(), true);
787
786
  this.on('deleteSubmission', () => this.deleteSubmission(), true);
@@ -975,21 +974,14 @@ class Webform extends NestedDataComponent_1.default {
975
974
  * @returns {*}
976
975
  */
977
976
  /* eslint-disable no-unused-vars */
978
- showErrors(error, triggerEvent, onChange) {
979
- this.loading = false;
980
- let errors = this.errors;
981
- if (error) {
982
- if (Array.isArray(error)) {
983
- errors = errors.concat(error);
984
- }
985
- else {
986
- errors.push(error);
987
- }
977
+ showErrors(errors, triggerEvent, onChange) {
978
+ if (!errors) {
979
+ return;
988
980
  }
989
- else {
990
- errors = super.errors;
981
+ this.loading = false;
982
+ if (!Array.isArray(errors)) {
983
+ errors = [errors];
991
984
  }
992
- errors = errors.concat(this.customErrors);
993
985
  errors = errors.concat(this.serverErrors || []);
994
986
  if (!errors.length) {
995
987
  this.setAlert(false);
@@ -1005,7 +997,7 @@ class Webform extends NestedDataComponent_1.default {
1005
997
  components.push(err.path);
1006
998
  }
1007
999
  components.forEach((path) => {
1008
- const originalPath = this._parentPath + (0, utils_1.getStringFromComponentPath)(path);
1000
+ const originalPath = (0, utils_1.getStringFromComponentPath)(path);
1009
1001
  const component = this.getComponent(path, lodash_1.default.identity, originalPath);
1010
1002
  if (err.fromServer) {
1011
1003
  if (component.serverErrors) {
@@ -1020,42 +1012,32 @@ class Webform extends NestedDataComponent_1.default {
1020
1012
  });
1021
1013
  });
1022
1014
  const displayedErrors = [];
1023
- errors.forEach(err => {
1024
- if (err) {
1025
- const createListItem = (message, index) => {
1026
- const messageFromIndex = !lodash_1.default.isUndefined(index) && err.messages && err.messages[index];
1027
- const keyOrPath = (messageFromIndex && messageFromIndex.formattedKeyOrPath || messageFromIndex.path) || (err.component && err.component.key) || err.fromServer && err.path;
1028
- let formattedKeyOrPath = keyOrPath ? (0, utils_1.getStringFromComponentPath)(keyOrPath) : '';
1029
- formattedKeyOrPath = this._parentPath + formattedKeyOrPath;
1030
- if (typeof err !== 'string' && !err.formattedKeyOrPath) {
1031
- err.formattedKeyOrPath = formattedKeyOrPath;
1032
- }
1033
- return {
1034
- message: (0, utils_1.unescapeHTML)(message),
1035
- keyOrPath: formattedKeyOrPath
1036
- };
1015
+ if (errors.length) {
1016
+ errors = lodash_1.default.uniqBy(errors, error => error.message);
1017
+ const createListItem = (message, index) => {
1018
+ var _a, _b, _c;
1019
+ const err = errors[index];
1020
+ const messageFromIndex = !lodash_1.default.isUndefined(index) && errors && errors[index];
1021
+ const keyOrPath = ((messageFromIndex === null || messageFromIndex === void 0 ? void 0 : messageFromIndex.formattedKeyOrPath) || (messageFromIndex === null || messageFromIndex === void 0 ? void 0 : messageFromIndex.path) || ((_a = messageFromIndex === null || messageFromIndex === void 0 ? void 0 : messageFromIndex.context) === null || _a === void 0 ? void 0 : _a.path)) || (((_b = err.context) === null || _b === void 0 ? void 0 : _b.component) && ((_c = err.context) === null || _c === void 0 ? void 0 : _c.component.key)) || (err.component && err.component.key) || err.fromServer && err.path;
1022
+ const formattedKeyOrPath = keyOrPath ? (0, utils_1.getStringFromComponentPath)(keyOrPath) : '';
1023
+ if (typeof err !== 'string' && !err.formattedKeyOrPath) {
1024
+ err.formattedKeyOrPath = formattedKeyOrPath;
1025
+ }
1026
+ return {
1027
+ message: (0, utils_1.unescapeHTML)(message),
1028
+ keyOrPath: formattedKeyOrPath
1037
1029
  };
1038
- err.messages = lodash_1.default.uniqBy(err.messages, message => message.message);
1039
- if (err.messages && err.messages.length) {
1040
- const { component } = err;
1041
- err.messages.forEach(({ message, context, fromServer }, index) => {
1042
- const text = (context === null || context === void 0 ? void 0 : context.hasLabel) || fromServer
1043
- ? this.t('alertMessage', { message: this.t(message) })
1044
- : this.t('alertMessageWithLabel', {
1045
- label: this.t(component.label),
1046
- message: this.t(message),
1047
- });
1048
- displayedErrors.push(createListItem(text, index));
1030
+ };
1031
+ errors.forEach(({ message, context, fromServer, component }, index) => {
1032
+ const text = !(component === null || component === void 0 ? void 0 : component.label) || (context === null || context === void 0 ? void 0 : context.hasLabel) || fromServer
1033
+ ? this.t('alertMessage', { message: this.t(message) })
1034
+ : this.t('alertMessageWithLabel', {
1035
+ label: this.t(component === null || component === void 0 ? void 0 : component.label),
1036
+ message: this.t(message),
1049
1037
  });
1050
- }
1051
- else if (err) {
1052
- const message = lodash_1.default.isObject(err)
1053
- ? this.t('alertMessage', { message: this.t(err.message || '') })
1054
- : this.t('alertMessage', { message: this.t(err) });
1055
- displayedErrors.push(createListItem(message));
1056
- }
1057
- }
1058
- });
1038
+ displayedErrors.push(createListItem(text, index));
1039
+ });
1040
+ }
1059
1041
  const errorsList = this.renderTemplate('errorsList', { errors: displayedErrors });
1060
1042
  this.root.setAlert('danger', errorsList);
1061
1043
  if (triggerEvent) {
@@ -1118,17 +1100,10 @@ class Webform extends NestedDataComponent_1.default {
1118
1100
  this.emit('change', { isValid: true }, { silent: true });
1119
1101
  return false;
1120
1102
  }
1121
- let errors;
1122
- if (this.submitted) {
1123
- errors = this.showErrors();
1124
- }
1125
- else {
1126
- errors = this.showErrors(error, true);
1127
- }
1103
+ this.showErrors(error, true);
1128
1104
  if (this.root && this.root.alert) {
1129
1105
  this.scrollIntoView(this.root.alert);
1130
1106
  }
1131
- return errors;
1132
1107
  }
1133
1108
  /**
1134
1109
  * Trigger the change event for this form.
@@ -1139,10 +1114,6 @@ class Webform extends NestedDataComponent_1.default {
1139
1114
  onChange(flags, changed, modified, changes) {
1140
1115
  flags = flags || {};
1141
1116
  let isChangeEventEmitted = false;
1142
- // For any change events, clear any custom errors for that component.
1143
- if (changed && changed.component) {
1144
- this.customErrors = this.customErrors.filter(err => err.component && err.component !== changed.component.key);
1145
- }
1146
1117
  super.onChange(flags, true);
1147
1118
  const value = lodash_1.default.clone(this.submission);
1148
1119
  flags.changed = value.changed = changed;
@@ -1150,10 +1121,13 @@ class Webform extends NestedDataComponent_1.default {
1150
1121
  if (modified && this.pristine) {
1151
1122
  this.pristine = false;
1152
1123
  }
1153
- value.isValid = this.checkData(value.data, flags);
1124
+ this.checkData(value.data, flags);
1125
+ const shouldValidate = !flags.noValidate || flags.fromIFrame || (flags.fromSubmission && this.rootPristine && this.pristine && flags.changed);
1126
+ const errors = shouldValidate ? this.validate(value.data, Object.assign(Object.assign({}, flags), { process: 'change' })) : [];
1127
+ value.isValid = errors.length === 0;
1154
1128
  this.loading = false;
1155
1129
  if (this.submitted) {
1156
- this.showErrors();
1130
+ this.showErrors(errors);
1157
1131
  }
1158
1132
  // See if we need to save the draft of the form.
1159
1133
  if (modified && this.options.saveDraft) {
@@ -1169,13 +1143,6 @@ class Webform extends NestedDataComponent_1.default {
1169
1143
  this.initialized = true;
1170
1144
  }
1171
1145
  }
1172
- checkData(data, flags = {}) {
1173
- const valid = super.checkData(data, flags);
1174
- if ((lodash_1.default.isEmpty(flags) || flags.noValidate) && this.submitted) {
1175
- this.showErrors();
1176
- }
1177
- return valid;
1178
- }
1179
1146
  /**
1180
1147
  * Send a delete request to the server.
1181
1148
  */
@@ -1228,18 +1195,31 @@ class Webform extends NestedDataComponent_1.default {
1228
1195
  }
1229
1196
  const submission = (0, utils_1.fastCloneDeep)(this.submission || {});
1230
1197
  this.setMetadata(submission);
1231
- submission.state = options.state || 'submitted';
1198
+ submission.state = options.state || submission.state || 'submitted';
1232
1199
  const isDraft = (submission.state === 'draft');
1233
1200
  this.hook('beforeSubmit', Object.assign(Object.assign({}, submission), { component: options.component }), (err, data) => {
1201
+ var _a;
1234
1202
  if (err) {
1235
1203
  return reject(err);
1236
1204
  }
1237
1205
  submission._vnote = data && data._vnote ? data._vnote : '';
1238
- if (!isDraft && !submission.data) {
1239
- return reject('Invalid Submission');
1206
+ try {
1207
+ if (!isDraft && !options.noValidate) {
1208
+ if (!submission.data) {
1209
+ return reject('Invalid Submission');
1210
+ }
1211
+ const errors = this.validate(submission.data, {
1212
+ dirty: true,
1213
+ silentCheck: false,
1214
+ process: 'submit'
1215
+ });
1216
+ if (errors.length || ((_a = options.beforeSubmitResults) === null || _a === void 0 ? void 0 : _a.some((result) => result.status === 'rejected'))) {
1217
+ return reject(errors);
1218
+ }
1219
+ }
1240
1220
  }
1241
- if (!isDraft && !this.checkValidity(submission.data, true)) {
1242
- return reject();
1221
+ catch (err) {
1222
+ console.error(err);
1243
1223
  }
1244
1224
  this.everyComponent((comp) => {
1245
1225
  if (submission._vnote && comp.type === 'form' && comp.component.reference) {
@@ -1260,9 +1240,7 @@ class Webform extends NestedDataComponent_1.default {
1260
1240
  }
1261
1241
  // Ensure err is an array.
1262
1242
  err = Array.isArray(err) ? err : [err];
1263
- // Set as custom errors.
1264
- this.customErrors = err;
1265
- return reject();
1243
+ return reject(err);
1266
1244
  }
1267
1245
  this.loading = true;
1268
1246
  // Use the form action to submit the form if available.
@@ -1358,7 +1336,7 @@ class Webform extends NestedDataComponent_1.default {
1358
1336
  *
1359
1337
  * @returns {Promise} - A promise when the form is done submitting.
1360
1338
  */
1361
- submit(before, options) {
1339
+ submit(before, options = {}) {
1362
1340
  this.submissionInProcess = true;
1363
1341
  if (!before) {
1364
1342
  return this.beforeSubmit(options).then(() => this.executeSubmit(options));
@@ -73,7 +73,7 @@ export default class WebformBuilder extends Component {
73
73
  setForm(form: any): any;
74
74
  keyboardActionsEnabled: any;
75
75
  populateRecaptchaSettings(form: any): void;
76
- removeComponent(component: any, parent: any, original: any): boolean | undefined;
76
+ removeComponent(component: any, parent: any, original: any, componentInstance: any): boolean | undefined;
77
77
  replaceDoubleQuotes(data: any, fieldsToRemoveDoubleQuotes?: any[]): any;
78
78
  updateComponent(component: any, changed: any): void;
79
79
  findRepeatablePaths(): any[];
@@ -361,7 +361,7 @@ class WebformBuilder extends Component_1.default {
361
361
  }
362
362
  if (component.refs.removeComponent) {
363
363
  this.attachTooltip(component.refs.removeComponent, this.t('Remove'));
364
- component.addEventListener(component.refs.removeComponent, 'click', () => this.removeComponent(component.schema, parent, component.component));
364
+ component.addEventListener(component.refs.removeComponent, 'click', () => this.removeComponent(component.schema, parent, component.component, component));
365
365
  }
366
366
  return element;
367
367
  }
@@ -735,6 +735,10 @@ class WebformBuilder extends Component_1.default {
735
735
  }
736
736
  }
737
737
  if (info) {
738
+ //if this is a custom component that was already assigned a key, don't stomp on it
739
+ if (!Components_1.default.components.hasOwnProperty(info.type) && info.key) {
740
+ return info;
741
+ }
738
742
  info.key = this.generateKey(info);
739
743
  }
740
744
  return info;
@@ -940,7 +944,7 @@ class WebformBuilder extends Component_1.default {
940
944
  }
941
945
  }
942
946
  }
943
- removeComponent(component, parent, original) {
947
+ removeComponent(component, parent, original, componentInstance) {
944
948
  if (!parent) {
945
949
  return;
946
950
  }
@@ -966,6 +970,9 @@ class WebformBuilder extends Component_1.default {
966
970
  else if (parent.formioComponent && parent.formioComponent.removeChildComponent) {
967
971
  parent.formioComponent.removeChildComponent(component);
968
972
  }
973
+ if (component.input && componentInstance && componentInstance.parent) {
974
+ lodash_1.default.unset(componentInstance._data, componentInstance.key);
975
+ }
969
976
  const rebuild = parent.formioComponent.rebuild() || Promise.resolve();
970
977
  rebuild.then(() => {
971
978
  this.emit('removeComponent', component, parent.formioComponent.schema, path, index);
@@ -1094,13 +1101,14 @@ class WebformBuilder extends Component_1.default {
1094
1101
  const repeatablePaths = this.findRepeatablePaths();
1095
1102
  let hasInvalidComponents = false;
1096
1103
  this.webform.everyComponent((comp) => {
1097
- var _a, _b;
1104
+ var _a;
1098
1105
  const path = comp.path;
1106
+ const errors = comp.visibleErrors || [];
1099
1107
  if (repeatablePaths.includes(path)) {
1100
1108
  comp.setCustomValidity(`API Key is not unique: ${comp.key}`);
1101
1109
  hasInvalidComponents = true;
1102
1110
  }
1103
- else if ((_b = (_a = comp.error) === null || _a === void 0 ? void 0 : _a.message) === null || _b === void 0 ? void 0 : _b.startsWith('API Key is not unique')) {
1111
+ else if (errors.length && ((_a = errors[0].message) === null || _a === void 0 ? void 0 : _a.startsWith('API Key is not unique'))) {
1104
1112
  comp.setCustomValidity('');
1105
1113
  }
1106
1114
  });
@@ -1193,9 +1201,12 @@ class WebformBuilder extends Component_1.default {
1193
1201
  saveButtons.forEach((saveButton) => {
1194
1202
  this.editForm.addEventListener(saveButton, 'click', (event) => {
1195
1203
  event.preventDefault();
1196
- if (!this.editForm.checkValidity(this.editForm.data, true, this.editForm.data)) {
1204
+ const errors = this.editForm.validate(this.editForm.data, {
1205
+ dirty: true
1206
+ });
1207
+ if (errors.length) {
1197
1208
  this.editForm.setPristine(false);
1198
- this.editForm.showErrors();
1209
+ this.editForm.showErrors(errors);
1199
1210
  return false;
1200
1211
  }
1201
1212
  this.saved = true;
@@ -1221,7 +1232,7 @@ class WebformBuilder extends Component_1.default {
1221
1232
  });
1222
1233
  }
1223
1234
  editComponent(component, parent, isNew, isJsonEdit, original, flags = {}) {
1224
- var _a;
1235
+ var _a, _b;
1225
1236
  if (!component.key) {
1226
1237
  return;
1227
1238
  }
@@ -1248,7 +1259,7 @@ class WebformBuilder extends Component_1.default {
1248
1259
  editFormOptions.editComponent = component;
1249
1260
  editFormOptions.flags = flags;
1250
1261
  this.hook('editComponentParentInstance', editFormOptions, parent);
1251
- this.editForm = new Webform_1.default(Object.assign(Object.assign(Object.assign({}, lodash_1.default.omit(this.options, ['hooks', 'builder', 'events', 'attachMode', 'skipInit'])), { language: this.options.language }), editFormOptions));
1262
+ this.editForm = new Webform_1.default(Object.assign(Object.assign(Object.assign(Object.assign({}, lodash_1.default.omit(this.options, ['hooks', 'builder', 'events', 'attachMode', 'skipInit'])), { language: this.options.language }), editFormOptions), { evalContext: Object.assign(Object.assign({}, ((editFormOptions === null || editFormOptions === void 0 ? void 0 : editFormOptions.evalContext) || ((_a = this.options) === null || _a === void 0 ? void 0 : _a.evalContext) || {})), { buildingForm: this.form }) }));
1252
1263
  this.hook('editFormProperties', parent);
1253
1264
  this.editForm.form = (isJsonEdit && !isCustom) ? {
1254
1265
  components: [
@@ -1296,7 +1307,7 @@ class WebformBuilder extends Component_1.default {
1296
1307
  ]));
1297
1308
  this.hook('previewFormSettitngs', schema, isJsonEdit);
1298
1309
  }
1299
- this.showPreview = (_a = ComponentClass.builderInfo.showPreview) !== null && _a !== void 0 ? _a : true;
1310
+ this.showPreview = (_b = ComponentClass.builderInfo.showPreview) !== null && _b !== void 0 ? _b : true;
1300
1311
  this.componentEdit = this.ce('div', { 'class': 'component-edit-container' });
1301
1312
  this.setContent(this.componentEdit, this.renderTemplate('builderEditForm', {
1302
1313
  componentInfo: ComponentClass.builderInfo,
@@ -1353,8 +1364,14 @@ class WebformBuilder extends Component_1.default {
1353
1364
  }
1354
1365
  }
1355
1366
  }
1367
+ // If the edit form has any nested form inside, we get a partial data (nested form's data) in the
1368
+ // event.data property
1369
+ let editFormData;
1370
+ if (event.changed.instance && event.changed.instance.root && event.changed.instance.root.id !== this.editForm.id) {
1371
+ editFormData = this.editForm.data;
1372
+ }
1356
1373
  // Update the component.
1357
- this.updateComponent(event.data.componentJson || event.data, event.changed);
1374
+ this.updateComponent(event.data.componentJson || editFormData || event.data, event.changed);
1358
1375
  }
1359
1376
  });
1360
1377
  this.attachEditComponentControls(component, parent, isNew, original, ComponentClass);
@@ -70,6 +70,7 @@ declare class Wizard extends Webform {
70
70
  beforePage(next: any): Promise<any>;
71
71
  emitNextPage(): void;
72
72
  nextPage(): Promise<void>;
73
+ validateCurrentPage(flags?: {}): any;
73
74
  emitPrevPage(): void;
74
75
  prevPage(): Promise<void>;
75
76
  cancel(noconfirm: any): Promise<void> | Promise<number>;
@@ -84,6 +85,7 @@ declare class Wizard extends Webform {
84
85
  hasButton(name: any, nextPage?: number | null): any;
85
86
  pageId(page: any): any;
86
87
  onChange(flags: any, changed: any, modified: any, changes: any): void;
88
+ checkValidity(data: any, dirty: any, row: any, currentPageOnly: any, childErrors?: any[]): any;
87
89
  focusOnComponent(key: any): any;
88
90
  }
89
91
  declare namespace Wizard {