@formio/js 5.0.0-rc.27 → 5.0.0-rc.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) 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 +957 -2270
  7. package/dist/formio.form.min.js +1 -1
  8. package/dist/formio.form.min.js.LICENSE.txt +4 -2
  9. package/dist/formio.full.css +100 -3
  10. package/dist/formio.full.js +961 -2231
  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 +4 -2
  14. package/dist/formio.js +101 -1966
  15. package/dist/formio.min.js +1 -1
  16. package/dist/formio.min.js.LICENSE.txt +1 -3
  17. package/dist/formio.utils.js +145 -104
  18. package/dist/formio.utils.min.js +1 -1
  19. package/dist/formio.utils.min.js.LICENSE.txt +4 -2
  20. package/lib/cjs/CDN.d.ts +1 -1
  21. package/lib/cjs/CDN.js +2 -2
  22. package/lib/cjs/Embed.d.ts +16 -7
  23. package/lib/cjs/Embed.js +76 -24
  24. package/lib/cjs/Formio.d.ts +0 -1
  25. package/lib/cjs/Formio.js +27 -19
  26. package/lib/cjs/PDF.js +2 -2
  27. package/lib/cjs/Webform.d.ts +6 -9
  28. package/lib/cjs/Webform.js +59 -81
  29. package/lib/cjs/WebformBuilder.d.ts +1 -1
  30. package/lib/cjs/WebformBuilder.js +33 -16
  31. package/lib/cjs/Wizard.d.ts +5 -4
  32. package/lib/cjs/Wizard.js +37 -26
  33. package/lib/cjs/WizardBuilder.d.ts +1 -0
  34. package/lib/cjs/addons/PasswordStrength/PasswordStrengthAddon.d.ts +1 -2
  35. package/lib/cjs/addons/PasswordStrength/PasswordStrengthAddon.js +11 -12
  36. package/lib/cjs/addons/index.d.ts +1 -0
  37. package/lib/cjs/addons/index.js +5 -1
  38. package/lib/cjs/components/Components.d.ts +7 -0
  39. package/lib/cjs/components/Components.js +30 -0
  40. package/lib/cjs/components/_classes/component/Component.d.ts +57 -27
  41. package/lib/cjs/components/_classes/component/Component.js +193 -119
  42. package/lib/cjs/components/_classes/component/editForm/Component.edit.addons.d.ts +8 -0
  43. package/lib/cjs/components/_classes/component/editForm/Component.edit.addons.js +31 -1
  44. package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +28 -11
  45. package/lib/cjs/components/_classes/nested/NestedComponent.js +88 -57
  46. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +4 -3
  47. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +17 -4
  48. package/lib/cjs/components/builder.js +0 -2
  49. package/lib/cjs/components/button/Button.js +2 -1
  50. package/lib/cjs/components/columns/Columns.d.ts +1 -0
  51. package/lib/cjs/components/columns/Columns.js +2 -3
  52. package/lib/cjs/components/columns/editForm/Columns.edit.display.d.ts +30 -1
  53. package/lib/cjs/components/columns/editForm/Columns.edit.display.js +23 -1
  54. package/lib/cjs/components/container/Container.d.ts +1 -0
  55. package/lib/cjs/components/container/Container.js +2 -6
  56. package/lib/cjs/components/content/Content.d.ts +1 -0
  57. package/lib/cjs/components/content/Content.js +1 -0
  58. package/lib/cjs/components/datagrid/DataGrid.d.ts +0 -8
  59. package/lib/cjs/components/datagrid/DataGrid.js +9 -26
  60. package/lib/cjs/components/datamap/DataMap.js +2 -1
  61. package/lib/cjs/components/datetime/DateTime.js +0 -2
  62. package/lib/cjs/components/day/Day.js +2 -3
  63. package/lib/cjs/components/editgrid/EditGrid.d.ts +8 -4
  64. package/lib/cjs/components/editgrid/EditGrid.js +96 -73
  65. package/lib/cjs/components/email/Email.js +0 -1
  66. package/lib/cjs/components/file/File.js +1 -1
  67. package/lib/cjs/components/file/fixtures/comp3.d.ts +29 -0
  68. package/lib/cjs/components/file/fixtures/comp3.js +31 -0
  69. package/lib/cjs/components/form/Form.d.ts +2 -6
  70. package/lib/cjs/components/form/Form.js +43 -14
  71. package/lib/cjs/components/index.d.ts +0 -2
  72. package/lib/cjs/components/index.js +0 -2
  73. package/lib/cjs/components/number/Number.d.ts +1 -2
  74. package/lib/cjs/components/number/Number.js +5 -6
  75. package/lib/cjs/components/panel/Panel.d.ts +0 -1
  76. package/lib/cjs/components/panel/Panel.js +2 -9
  77. package/lib/cjs/components/panel/editForm/Panel.edit.display.d.ts +6 -38
  78. package/lib/cjs/components/panel/editForm/Panel.edit.display.js +3 -16
  79. package/lib/cjs/components/phonenumber/PhoneNumber.js +17 -0
  80. package/lib/cjs/components/radio/Radio.js +0 -2
  81. package/lib/cjs/components/recaptcha/ReCaptcha.d.ts +1 -1
  82. package/lib/cjs/components/recaptcha/ReCaptcha.js +2 -2
  83. package/lib/cjs/components/select/Select.js +3 -2
  84. package/lib/cjs/components/selectboxes/SelectBoxes.d.ts +1 -2
  85. package/lib/cjs/components/selectboxes/SelectBoxes.js +7 -6
  86. package/lib/cjs/components/table/editForm/Table.edit.display.d.ts +31 -2
  87. package/lib/cjs/components/table/editForm/Table.edit.display.js +22 -0
  88. package/lib/cjs/components/tabs/editForm/Tabs.edit.display.d.ts +30 -2
  89. package/lib/cjs/components/tabs/editForm/Tabs.edit.display.js +22 -0
  90. package/lib/cjs/components/textfield/TextField.js +20 -6
  91. package/lib/cjs/components/time/Time.js +0 -6
  92. package/lib/cjs/components/url/Url.js +0 -1
  93. package/lib/cjs/components/well/editForm/Well.edit.display.d.ts +25 -2
  94. package/lib/cjs/components/well/editForm/Well.edit.display.js +18 -0
  95. package/lib/cjs/formio.embed.js +5 -3
  96. package/lib/cjs/formio.form.d.ts +1 -7
  97. package/lib/cjs/formio.form.js +3 -38
  98. package/lib/cjs/index.d.ts +2 -1
  99. package/lib/cjs/index.js +3 -1
  100. package/lib/cjs/providers/Providers.d.ts +0 -4
  101. package/lib/cjs/providers/storage/azure.d.ts +0 -2
  102. package/lib/cjs/providers/storage/azure.js +1 -6
  103. package/lib/cjs/providers/storage/googleDrive.d.ts +0 -1
  104. package/lib/cjs/providers/storage/googleDrive.js +0 -4
  105. package/lib/cjs/providers/storage/s3.d.ts +0 -1
  106. package/lib/cjs/providers/storage/s3.js +0 -4
  107. package/lib/cjs/templates/Templates.d.ts +1 -11
  108. package/lib/cjs/templates/Templates.js +4 -41
  109. package/lib/cjs/translations/en.d.ts +5 -0
  110. package/lib/cjs/translations/en.js +5 -0
  111. package/lib/cjs/utils/formUtils.js +1 -0
  112. package/lib/cjs/utils/index.d.ts +1 -0
  113. package/lib/cjs/utils/index.js +2 -0
  114. package/lib/cjs/utils/utils.d.ts +2 -1
  115. package/lib/cjs/utils/utils.js +27 -9
  116. package/lib/mjs/CDN.d.ts +1 -1
  117. package/lib/mjs/CDN.js +2 -2
  118. package/lib/mjs/Embed.d.ts +16 -7
  119. package/lib/mjs/Embed.js +75 -18
  120. package/lib/mjs/Formio.d.ts +0 -1
  121. package/lib/mjs/Formio.js +11 -3
  122. package/lib/mjs/PDF.js +2 -2
  123. package/lib/mjs/Webform.d.ts +6 -9
  124. package/lib/mjs/Webform.js +58 -82
  125. package/lib/mjs/WebformBuilder.d.ts +1 -1
  126. package/lib/mjs/WebformBuilder.js +31 -10
  127. package/lib/mjs/Wizard.d.ts +5 -4
  128. package/lib/mjs/Wizard.js +36 -27
  129. package/lib/mjs/WizardBuilder.d.ts +1 -0
  130. package/lib/mjs/addons/PasswordStrength/PasswordStrengthAddon.d.ts +1 -2
  131. package/lib/mjs/addons/PasswordStrength/PasswordStrengthAddon.js +11 -12
  132. package/lib/mjs/addons/index.d.ts +1 -0
  133. package/lib/mjs/addons/index.js +5 -1
  134. package/lib/mjs/components/Components.d.ts +7 -0
  135. package/lib/mjs/components/Components.js +29 -0
  136. package/lib/mjs/components/_classes/component/Component.d.ts +57 -27
  137. package/lib/mjs/components/_classes/component/Component.js +191 -118
  138. package/lib/mjs/components/_classes/component/editForm/Component.edit.addons.d.ts +8 -0
  139. package/lib/mjs/components/_classes/component/editForm/Component.edit.addons.js +31 -1
  140. package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +28 -11
  141. package/lib/mjs/components/_classes/nested/NestedComponent.js +88 -57
  142. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +4 -3
  143. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +18 -5
  144. package/lib/mjs/components/builder.js +0 -2
  145. package/lib/mjs/components/button/Button.js +2 -1
  146. package/lib/mjs/components/columns/Columns.d.ts +1 -0
  147. package/lib/mjs/components/columns/Columns.js +2 -3
  148. package/lib/mjs/components/columns/editForm/Columns.edit.display.d.ts +30 -1
  149. package/lib/mjs/components/columns/editForm/Columns.edit.display.js +23 -1
  150. package/lib/mjs/components/container/Container.d.ts +1 -0
  151. package/lib/mjs/components/container/Container.js +2 -6
  152. package/lib/mjs/components/content/Content.d.ts +1 -0
  153. package/lib/mjs/components/content/Content.js +1 -0
  154. package/lib/mjs/components/datagrid/DataGrid.d.ts +0 -8
  155. package/lib/mjs/components/datagrid/DataGrid.js +9 -26
  156. package/lib/mjs/components/datamap/DataMap.js +2 -1
  157. package/lib/mjs/components/datetime/DateTime.js +0 -2
  158. package/lib/mjs/components/day/Day.js +2 -3
  159. package/lib/mjs/components/editgrid/EditGrid.d.ts +8 -4
  160. package/lib/mjs/components/editgrid/EditGrid.js +97 -76
  161. package/lib/mjs/components/email/Email.js +0 -1
  162. package/lib/mjs/components/file/File.js +1 -1
  163. package/lib/mjs/components/file/fixtures/comp3.d.ts +29 -0
  164. package/lib/mjs/components/file/fixtures/comp3.js +29 -0
  165. package/lib/mjs/components/form/Form.d.ts +2 -6
  166. package/lib/mjs/components/form/Form.js +45 -14
  167. package/lib/mjs/components/index.d.ts +0 -2
  168. package/lib/mjs/components/index.js +0 -2
  169. package/lib/mjs/components/number/Number.d.ts +1 -2
  170. package/lib/mjs/components/number/Number.js +4 -5
  171. package/lib/mjs/components/panel/Panel.d.ts +0 -1
  172. package/lib/mjs/components/panel/Panel.js +3 -9
  173. package/lib/mjs/components/panel/editForm/Panel.edit.display.d.ts +6 -38
  174. package/lib/mjs/components/panel/editForm/Panel.edit.display.js +3 -16
  175. package/lib/mjs/components/phonenumber/PhoneNumber.js +17 -0
  176. package/lib/mjs/components/radio/Radio.js +0 -2
  177. package/lib/mjs/components/recaptcha/ReCaptcha.d.ts +1 -1
  178. package/lib/mjs/components/recaptcha/ReCaptcha.js +2 -2
  179. package/lib/mjs/components/select/Select.js +3 -2
  180. package/lib/mjs/components/selectboxes/SelectBoxes.d.ts +1 -2
  181. package/lib/mjs/components/selectboxes/SelectBoxes.js +7 -6
  182. package/lib/mjs/components/table/editForm/Table.edit.display.d.ts +31 -2
  183. package/lib/mjs/components/table/editForm/Table.edit.display.js +22 -0
  184. package/lib/mjs/components/tabs/editForm/Tabs.edit.display.d.ts +30 -2
  185. package/lib/mjs/components/tabs/editForm/Tabs.edit.display.js +22 -0
  186. package/lib/mjs/components/textfield/TextField.js +20 -6
  187. package/lib/mjs/components/time/Time.js +0 -6
  188. package/lib/mjs/components/url/Url.js +0 -1
  189. package/lib/mjs/components/well/editForm/Well.edit.display.d.ts +25 -2
  190. package/lib/mjs/components/well/editForm/Well.edit.display.js +18 -0
  191. package/lib/mjs/formio.embed.js +5 -3
  192. package/lib/mjs/formio.form.d.ts +1 -7
  193. package/lib/mjs/formio.form.js +3 -32
  194. package/lib/mjs/index.d.ts +2 -1
  195. package/lib/mjs/index.js +2 -1
  196. package/lib/mjs/providers/Providers.d.ts +0 -4
  197. package/lib/mjs/providers/storage/azure.d.ts +0 -2
  198. package/lib/mjs/providers/storage/azure.js +1 -6
  199. package/lib/mjs/providers/storage/googleDrive.d.ts +0 -1
  200. package/lib/mjs/providers/storage/googleDrive.js +0 -4
  201. package/lib/mjs/providers/storage/s3.d.ts +0 -1
  202. package/lib/mjs/providers/storage/s3.js +0 -4
  203. package/lib/mjs/templates/Templates.d.ts +1 -11
  204. package/lib/mjs/templates/Templates.js +4 -40
  205. package/lib/mjs/translations/en.d.ts +5 -0
  206. package/lib/mjs/translations/en.js +5 -0
  207. package/lib/mjs/utils/formUtils.js +1 -0
  208. package/lib/mjs/utils/index.d.ts +1 -0
  209. package/lib/mjs/utils/index.js +1 -0
  210. package/lib/mjs/utils/utils.d.ts +2 -1
  211. package/lib/mjs/utils/utils.js +24 -7
  212. package/package.json +13 -13
  213. package/lib/cjs/components/tree/Node.d.ts +0 -55
  214. package/lib/cjs/components/tree/Node.js +0 -185
  215. package/lib/cjs/components/tree/Tree.d.ts +0 -48
  216. package/lib/cjs/components/tree/Tree.form.d.ts +0 -3
  217. package/lib/cjs/components/tree/Tree.form.js +0 -21
  218. package/lib/cjs/components/tree/Tree.js +0 -383
  219. package/lib/cjs/components/tree/editForm/Tree.edit.data.d.ts +0 -5
  220. package/lib/cjs/components/tree/editForm/Tree.edit.data.js +0 -9
  221. package/lib/cjs/components/tree/editForm/Tree.edit.display.d.ts +0 -9
  222. package/lib/cjs/components/tree/editForm/Tree.edit.display.js +0 -12
  223. package/lib/cjs/components/tree/fixtures/comp1.d.ts +0 -23
  224. package/lib/cjs/components/tree/fixtures/comp1.js +0 -24
  225. package/lib/cjs/components/tree/fixtures/comp2.d.ts +0 -116
  226. package/lib/cjs/components/tree/fixtures/comp2.js +0 -82
  227. package/lib/cjs/components/tree/fixtures/comp3.d.ts +0 -24
  228. package/lib/cjs/components/tree/fixtures/comp3.js +0 -25
  229. package/lib/cjs/components/tree/fixtures/comp4.d.ts +0 -42
  230. package/lib/cjs/components/tree/fixtures/comp4.js +0 -47
  231. package/lib/cjs/components/tree/fixtures/index.d.ts +0 -5
  232. package/lib/cjs/components/tree/fixtures/index.js +0 -14
  233. package/lib/cjs/validator/Rules.d.ts +0 -53
  234. package/lib/cjs/validator/Rules.js +0 -22
  235. package/lib/cjs/validator/Validator.d.ts +0 -228
  236. package/lib/cjs/validator/Validator.js +0 -1113
  237. package/lib/cjs/validator/conjunctions/index.d.ts +0 -7
  238. package/lib/cjs/validator/conjunctions/index.js +0 -18
  239. package/lib/cjs/validator/operators/index.d.ts +0 -7
  240. package/lib/cjs/validator/operators/index.js +0 -18
  241. package/lib/cjs/validator/quickRules/index.d.ts +0 -7
  242. package/lib/cjs/validator/quickRules/index.js +0 -18
  243. package/lib/cjs/validator/rules/Custom.d.ts +0 -5
  244. package/lib/cjs/validator/rules/Custom.js +0 -30
  245. package/lib/cjs/validator/rules/Date.d.ts +0 -5
  246. package/lib/cjs/validator/rules/Date.js +0 -25
  247. package/lib/cjs/validator/rules/Day.d.ts +0 -5
  248. package/lib/cjs/validator/rules/Day.js +0 -58
  249. package/lib/cjs/validator/rules/Email.d.ts +0 -5
  250. package/lib/cjs/validator/rules/Email.js +0 -24
  251. package/lib/cjs/validator/rules/JSON.d.ts +0 -5
  252. package/lib/cjs/validator/rules/JSON.js +0 -29
  253. package/lib/cjs/validator/rules/Mask.d.ts +0 -5
  254. package/lib/cjs/validator/rules/Mask.js +0 -32
  255. package/lib/cjs/validator/rules/Max.d.ts +0 -5
  256. package/lib/cjs/validator/rules/Max.js +0 -21
  257. package/lib/cjs/validator/rules/MaxDate.d.ts +0 -5
  258. package/lib/cjs/validator/rules/MaxDate.js +0 -34
  259. package/lib/cjs/validator/rules/MaxLength.d.ts +0 -5
  260. package/lib/cjs/validator/rules/MaxLength.js +0 -20
  261. package/lib/cjs/validator/rules/MaxWords.d.ts +0 -5
  262. package/lib/cjs/validator/rules/MaxWords.js +0 -20
  263. package/lib/cjs/validator/rules/MaxYear.d.ts +0 -5
  264. package/lib/cjs/validator/rules/MaxYear.js +0 -22
  265. package/lib/cjs/validator/rules/Min.d.ts +0 -5
  266. package/lib/cjs/validator/rules/Min.js +0 -21
  267. package/lib/cjs/validator/rules/MinDate.d.ts +0 -5
  268. package/lib/cjs/validator/rules/MinDate.js +0 -30
  269. package/lib/cjs/validator/rules/MinLength.d.ts +0 -5
  270. package/lib/cjs/validator/rules/MinLength.js +0 -20
  271. package/lib/cjs/validator/rules/MinWords.d.ts +0 -5
  272. package/lib/cjs/validator/rules/MinWords.js +0 -20
  273. package/lib/cjs/validator/rules/MinYear.d.ts +0 -5
  274. package/lib/cjs/validator/rules/MinYear.js +0 -22
  275. package/lib/cjs/validator/rules/Pattern.d.ts +0 -5
  276. package/lib/cjs/validator/rules/Pattern.js +0 -20
  277. package/lib/cjs/validator/rules/Required.d.ts +0 -5
  278. package/lib/cjs/validator/rules/Required.js +0 -17
  279. package/lib/cjs/validator/rules/Rule.d.ts +0 -7
  280. package/lib/cjs/validator/rules/Rule.js +0 -12
  281. package/lib/cjs/validator/rules/Select.d.ts +0 -5
  282. package/lib/cjs/validator/rules/Select.js +0 -95
  283. package/lib/cjs/validator/rules/Time.d.ts +0 -5
  284. package/lib/cjs/validator/rules/Time.js +0 -19
  285. package/lib/cjs/validator/rules/Unique.d.ts +0 -5
  286. package/lib/cjs/validator/rules/Unique.js +0 -69
  287. package/lib/cjs/validator/rules/Url.d.ts +0 -5
  288. package/lib/cjs/validator/rules/Url.js +0 -23
  289. package/lib/cjs/validator/rules/index.d.ts +0 -47
  290. package/lib/cjs/validator/rules/index.js +0 -51
  291. package/lib/cjs/validator/transformers/index.d.ts +0 -7
  292. package/lib/cjs/validator/transformers/index.js +0 -18
  293. package/lib/cjs/validator/valueSources/index.d.ts +0 -7
  294. package/lib/cjs/validator/valueSources/index.js +0 -18
  295. package/lib/mjs/components/tree/Node.d.ts +0 -55
  296. package/lib/mjs/components/tree/Node.js +0 -179
  297. package/lib/mjs/components/tree/Tree.d.ts +0 -48
  298. package/lib/mjs/components/tree/Tree.form.d.ts +0 -3
  299. package/lib/mjs/components/tree/Tree.form.js +0 -15
  300. package/lib/mjs/components/tree/Tree.js +0 -384
  301. package/lib/mjs/components/tree/editForm/Tree.edit.data.d.ts +0 -5
  302. package/lib/mjs/components/tree/editForm/Tree.edit.data.js +0 -7
  303. package/lib/mjs/components/tree/editForm/Tree.edit.display.d.ts +0 -9
  304. package/lib/mjs/components/tree/editForm/Tree.edit.display.js +0 -10
  305. package/lib/mjs/components/tree/fixtures/comp1.d.ts +0 -23
  306. package/lib/mjs/components/tree/fixtures/comp1.js +0 -22
  307. package/lib/mjs/components/tree/fixtures/comp2.d.ts +0 -116
  308. package/lib/mjs/components/tree/fixtures/comp2.js +0 -80
  309. package/lib/mjs/components/tree/fixtures/comp3.d.ts +0 -24
  310. package/lib/mjs/components/tree/fixtures/comp3.js +0 -23
  311. package/lib/mjs/components/tree/fixtures/comp4.d.ts +0 -42
  312. package/lib/mjs/components/tree/fixtures/comp4.js +0 -45
  313. package/lib/mjs/components/tree/fixtures/index.d.ts +0 -5
  314. package/lib/mjs/components/tree/fixtures/index.js +0 -5
  315. package/lib/mjs/validator/Rules.d.ts +0 -53
  316. package/lib/mjs/validator/Rules.js +0 -17
  317. package/lib/mjs/validator/Validator.d.ts +0 -228
  318. package/lib/mjs/validator/Validator.js +0 -1103
  319. package/lib/mjs/validator/conjunctions/index.d.ts +0 -7
  320. package/lib/mjs/validator/conjunctions/index.js +0 -16
  321. package/lib/mjs/validator/operators/index.d.ts +0 -7
  322. package/lib/mjs/validator/operators/index.js +0 -16
  323. package/lib/mjs/validator/quickRules/index.d.ts +0 -7
  324. package/lib/mjs/validator/quickRules/index.js +0 -16
  325. package/lib/mjs/validator/rules/Custom.d.ts +0 -5
  326. package/lib/mjs/validator/rules/Custom.js +0 -21
  327. package/lib/mjs/validator/rules/Date.d.ts +0 -5
  328. package/lib/mjs/validator/rules/Date.js +0 -16
  329. package/lib/mjs/validator/rules/Day.d.ts +0 -5
  330. package/lib/mjs/validator/rules/Day.js +0 -49
  331. package/lib/mjs/validator/rules/Email.d.ts +0 -5
  332. package/lib/mjs/validator/rules/Email.js +0 -15
  333. package/lib/mjs/validator/rules/JSON.d.ts +0 -5
  334. package/lib/mjs/validator/rules/JSON.js +0 -20
  335. package/lib/mjs/validator/rules/Mask.d.ts +0 -5
  336. package/lib/mjs/validator/rules/Mask.js +0 -23
  337. package/lib/mjs/validator/rules/Max.d.ts +0 -5
  338. package/lib/mjs/validator/rules/Max.js +0 -12
  339. package/lib/mjs/validator/rules/MaxDate.d.ts +0 -5
  340. package/lib/mjs/validator/rules/MaxDate.js +0 -25
  341. package/lib/mjs/validator/rules/MaxLength.d.ts +0 -5
  342. package/lib/mjs/validator/rules/MaxLength.js +0 -11
  343. package/lib/mjs/validator/rules/MaxWords.d.ts +0 -5
  344. package/lib/mjs/validator/rules/MaxWords.js +0 -11
  345. package/lib/mjs/validator/rules/MaxYear.d.ts +0 -5
  346. package/lib/mjs/validator/rules/MaxYear.js +0 -13
  347. package/lib/mjs/validator/rules/Min.d.ts +0 -5
  348. package/lib/mjs/validator/rules/Min.js +0 -12
  349. package/lib/mjs/validator/rules/MinDate.d.ts +0 -5
  350. package/lib/mjs/validator/rules/MinDate.js +0 -21
  351. package/lib/mjs/validator/rules/MinLength.d.ts +0 -5
  352. package/lib/mjs/validator/rules/MinLength.js +0 -11
  353. package/lib/mjs/validator/rules/MinWords.d.ts +0 -5
  354. package/lib/mjs/validator/rules/MinWords.js +0 -11
  355. package/lib/mjs/validator/rules/MinYear.d.ts +0 -5
  356. package/lib/mjs/validator/rules/MinYear.js +0 -13
  357. package/lib/mjs/validator/rules/Pattern.d.ts +0 -5
  358. package/lib/mjs/validator/rules/Pattern.js +0 -11
  359. package/lib/mjs/validator/rules/Required.d.ts +0 -5
  360. package/lib/mjs/validator/rules/Required.js +0 -8
  361. package/lib/mjs/validator/rules/Rule.d.ts +0 -7
  362. package/lib/mjs/validator/rules/Rule.js +0 -9
  363. package/lib/mjs/validator/rules/Select.d.ts +0 -5
  364. package/lib/mjs/validator/rules/Select.js +0 -86
  365. package/lib/mjs/validator/rules/Time.d.ts +0 -5
  366. package/lib/mjs/validator/rules/Time.js +0 -10
  367. package/lib/mjs/validator/rules/Unique.d.ts +0 -5
  368. package/lib/mjs/validator/rules/Unique.js +0 -60
  369. package/lib/mjs/validator/rules/Url.d.ts +0 -5
  370. package/lib/mjs/validator/rules/Url.js +0 -14
  371. package/lib/mjs/validator/rules/index.d.ts +0 -47
  372. package/lib/mjs/validator/rules/index.js +0 -46
  373. package/lib/mjs/validator/transformers/index.d.ts +0 -7
  374. package/lib/mjs/validator/transformers/index.js +0 -16
  375. package/lib/mjs/validator/valueSources/index.d.ts +0 -7
  376. package/lib/mjs/validator/valueSources/index.js +0 -16
@@ -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[];
@@ -19,7 +19,7 @@ require("./components/builder");
19
19
  if (typeof window !== 'undefined' && typeof window.global === 'undefined') {
20
20
  window.global = window;
21
21
  }
22
- const dragula_min_js_1 = __importDefault(require("dragula/dist/dragula.min.js"));
22
+ const dragula_1 = __importDefault(require("dragula"));
23
23
  class WebformBuilder extends Component_1.default {
24
24
  // eslint-disable-next-line max-statements
25
25
  constructor() {
@@ -51,7 +51,7 @@ class WebformBuilder extends Component_1.default {
51
51
  }
52
52
  };
53
53
  this.setElement(element);
54
- this.dragulaLib = dragula_min_js_1.default;
54
+ this.dragulaLib = dragula_1.default;
55
55
  this.builderHeight = 0;
56
56
  this.schemas = {};
57
57
  this.repeatablePaths = [];
@@ -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
  }
@@ -667,10 +667,10 @@ class WebformBuilder extends Component_1.default {
667
667
  const containersArray = Array.prototype.slice.call(this.refs['sidebar-container']).filter(item => {
668
668
  return item.id !== 'group-container-resource';
669
669
  });
670
- if (!dragula_min_js_1.default) {
670
+ if (!dragula_1.default) {
671
671
  return;
672
672
  }
673
- this.dragula = (0, dragula_min_js_1.default)(containersArray, {
673
+ this.dragula = (0, dragula_1.default)(containersArray, {
674
674
  moves(el) {
675
675
  let moves = true;
676
676
  const list = Array.from(el.classList).filter(item => item.indexOf('formio-component-') === 0);
@@ -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
  });
@@ -1135,8 +1143,8 @@ class WebformBuilder extends Component_1.default {
1135
1143
  comp = component;
1136
1144
  }
1137
1145
  });
1138
- const originalComp = comp.component;
1139
- const originalComponentSchema = comp.schema;
1146
+ const originalComp = comp === null || comp === void 0 ? void 0 : comp.component;
1147
+ const originalComponentSchema = comp === null || comp === void 0 ? void 0 : comp.schema;
1140
1148
  const isParentSaveChildMethod = this.isParentSaveChildMethod(parent.formioComponent);
1141
1149
  if (parentContainer && !isParentSaveChildMethod) {
1142
1150
  parentContainer[index] = submissionData;
@@ -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,13 +85,13 @@ 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 {
90
- const setBaseUrl: typeof Formio.setBaseUrl;
91
- const setApiUrl: typeof Formio.setApiUrl;
92
- const setAppUrl: typeof Formio.setAppUrl;
92
+ const setBaseUrl: any;
93
+ const setApiUrl: any;
94
+ const setAppUrl: any;
93
95
  }
94
96
  export default Wizard;
95
97
  import Webform from './Webform';
96
- import { Formio } from './Formio';
package/lib/cjs/Wizard.js CHANGED
@@ -181,7 +181,10 @@ class Wizard extends Webform_1.default {
181
181
  return this.renderTemplate('wizardNav', ctx);
182
182
  }
183
183
  prepareHeaderSettings(ctx, headerType) {
184
- if (this.currentPanel && this.currentPanel.breadcrumb === 'none' || ctx.isSubForm) {
184
+ var _a;
185
+ const shouldHideBreadcrumbs = ((_a = this.currentPanel) === null || _a === void 0 ? void 0 : _a.breadcrumb) === 'none' ||
186
+ lodash_1.default.get(this.form, 'settings.wizardBreadcrumbsType', '') === 'none';
187
+ if (shouldHideBreadcrumbs || ctx.isSubForm) {
185
188
  return null;
186
189
  }
187
190
  return this.renderTemplate(headerType, ctx);
@@ -577,6 +580,7 @@ class Wizard extends Webform_1.default {
577
580
  }
578
581
  this.redraw().then(() => {
579
582
  this.checkData(this.submission.data);
583
+ this.validateCurrentPage();
580
584
  });
581
585
  return Promise.resolve();
582
586
  }
@@ -674,7 +678,8 @@ class Wizard extends Webform_1.default {
674
678
  });
675
679
  }
676
680
  // Validate the form, before go to the next page
677
- if (this.checkValidity(this.localData, true, this.localData, true)) {
681
+ const errors = this.validateCurrentPage({ dirty: true });
682
+ if (errors.length === 0) {
678
683
  this.checkData(this.submission.data);
679
684
  return this.beforePage(true).then(() => {
680
685
  return this.setPage(this.getNextPage()).then(() => {
@@ -689,9 +694,14 @@ class Wizard extends Webform_1.default {
689
694
  else {
690
695
  this.currentPage.components.forEach((comp) => comp.setPristine(false));
691
696
  this.scrollIntoView(this.element);
692
- return Promise.reject(this.showErrors([], true));
697
+ return Promise.reject(this.showErrors(errors, true));
693
698
  }
694
699
  }
700
+ validateCurrentPage(flags = {}) {
701
+ var _a;
702
+ // Accessing the parent ensures the right instance (whether it's the parent Wizard or a nested Wizard) performs its validation
703
+ return (_a = this.currentPage) === null || _a === void 0 ? void 0 : _a.parent.validateComponents(this.currentPage.component.components, this.currentPage.parent.data, flags);
704
+ }
695
705
  emitPrevPage() {
696
706
  this.emit('prevPage', { page: this.page, submission: this.submission });
697
707
  }
@@ -768,7 +778,7 @@ class Wizard extends Webform_1.default {
768
778
  return super.setForm(form, flags);
769
779
  }
770
780
  onSetForm(clonedForm, initialForm) {
771
- this.component.components = (this._parentPath ? initialForm.components : clonedForm.components) || [];
781
+ this.component.components = (this.parent ? initialForm.components : clonedForm.components) || [];
772
782
  this.setComponentSchema();
773
783
  }
774
784
  setEditMode(submission) {
@@ -781,7 +791,9 @@ class Wizard extends Webform_1.default {
781
791
  const changed = this.getPages({ all: true }).reduce((changed, page) => {
782
792
  return this.setNestedValue(page, submission.data, flags, changed) || changed;
783
793
  }, false);
784
- if (!flags.sanitize) {
794
+ if (!flags.sanitize ||
795
+ (flags && flags.fromSubmission && (this.prefixComps.length || this.suffixComps.length) && submission._id) ||
796
+ (this.options.server && (this.prefixComps.length || this.suffixComps.length))) {
785
797
  this.mergeData(this.data, submission.data);
786
798
  }
787
799
  if (changed) {
@@ -833,9 +845,9 @@ class Wizard extends Webform_1.default {
833
845
  onChange(flags, changed, modified, changes) {
834
846
  var _a, _b;
835
847
  super.onChange(flags, changed, modified, changes);
836
- if (this.alert && !this.submitted) {
837
- this.checkValidity(this.localData, false, this.localData, true);
838
- this.showErrors([], true, true);
848
+ const errors = this.validate(this.localData, { dirty: false });
849
+ if (this.alert) {
850
+ this.showErrors(errors, true, true);
839
851
  }
840
852
  // If the pages change, need to redraw the header.
841
853
  let currentPanels;
@@ -872,7 +884,7 @@ class Wizard extends Webform_1.default {
872
884
  }
873
885
  return super.redraw();
874
886
  }
875
- checkValidity(data, dirty, row, currentPageOnly) {
887
+ checkValidity(data, dirty, row, currentPageOnly, childErrors = []) {
876
888
  if (!this.checkCondition(row, data)) {
877
889
  this.setCustomValidity('');
878
890
  return true;
@@ -880,7 +892,7 @@ class Wizard extends Webform_1.default {
880
892
  const components = !currentPageOnly || this.isLastPage()
881
893
  ? this.getComponents()
882
894
  : this.currentPage.components;
883
- return components.reduce((check, comp) => comp.checkValidity(data, dirty, row) && check, true);
895
+ return components.reduce((check, comp) => comp.checkValidity(data, dirty, row, childErrors) && check, true);
884
896
  }
885
897
  get errors() {
886
898
  if (!this.isLastPage()) {
@@ -889,23 +901,22 @@ class Wizard extends Webform_1.default {
889
901
  return super.errors;
890
902
  }
891
903
  focusOnComponent(key) {
892
- let pageIndex = 0;
893
- const [page] = this.pages.filter((page, index) => {
894
- let hasComponent = false;
895
- page.getComponent(key, (comp) => {
896
- if (comp.path === key) {
897
- pageIndex = index;
898
- hasComponent = true;
904
+ const component = this.getComponent(key);
905
+ if (component) {
906
+ let topPanel = component.parent;
907
+ while (!(topPanel.parent instanceof Wizard)) {
908
+ topPanel = topPanel.parent;
909
+ }
910
+ const pageIndex = this.pages.findIndex(page => page === topPanel);
911
+ if (pageIndex >= 0) {
912
+ const page = this.pages[pageIndex];
913
+ if (page && page !== this.currentPage) {
914
+ return this.setPage(pageIndex).then(() => {
915
+ this.showErrors(this.validate(this.localData, { dirty: true }));
916
+ super.focusOnComponent(key);
917
+ });
899
918
  }
900
- });
901
- return hasComponent;
902
- });
903
- if (page && page !== this.currentPage) {
904
- return this.setPage(pageIndex).then(() => {
905
- this.checkValidity(this.submission.data, true, this.submission.data);
906
- this.showErrors();
907
- super.focusOnComponent(key);
908
- });
919
+ }
909
920
  }
910
921
  return super.focusOnComponent(key);
911
922
  }
@@ -9,6 +9,7 @@ export default class WizardBuilder extends WebformBuilder {
9
9
  }[];
10
10
  };
11
11
  page: number;
12
+ removeComponent(component: any, parent: any, original: any): boolean | undefined;
12
13
  allowDrop(element: any): boolean;
13
14
  get pages(): any;
14
15
  get currentPage(): any;
@@ -698,8 +698,7 @@ export default class PasswordStrengthAddon extends FormioAddon {
698
698
  * @param {string} value - Suggested password
699
699
  */
700
700
  checkValidity(value: string): boolean;
701
- errors: any[] | undefined;
702
- handleBlackListCheckResult(result: any): void;
701
+ handleBlackListCheckResult(result: any, errors: any): void;
703
702
  levels: any[];
704
703
  maxEntropy: any;
705
704
  attach(element: any): void;
@@ -268,30 +268,29 @@ class PasswordStrengthAddon extends FormioAddon_1.default {
268
268
  var _a;
269
269
  const passwordLength = value.length;
270
270
  const { charactersPoolSize, errors } = this.performChecks(value);
271
- this.errors = errors;
272
271
  const entropy = this.calculatePasswordEntropy(passwordLength, charactersPoolSize);
273
272
  const blackListCheck = ((_a = this.settings.blackList) === null || _a === void 0 ? void 0 : _a.length) || this.settings.customBlacklistedWords ?
274
273
  this.checkBlackList(value)
275
274
  : null;
275
+ const isValid = this.isValid();
276
+ if (!isValid) {
277
+ errors.push({
278
+ message: 'Password is not strong enough',
279
+ level: this.settings.required ? 'error' : 'warning'
280
+ });
281
+ }
276
282
  // If there were found some words from the black list
277
283
  if (blackListCheck && blackListCheck !== true) {
278
- this.handleBlackListCheckResult(blackListCheck);
284
+ this.handleBlackListCheckResult(blackListCheck, errors);
279
285
  // Select the mininal entropy based on the dictionary check or symbolic check
280
286
  this.entropy = Math.min(entropy, blackListCheck.entropy);
281
287
  }
282
288
  else {
283
289
  this.entropy = entropy;
284
290
  }
285
- const isValid = this.isValid();
286
- if (!isValid) {
287
- this.errors.push({
288
- message: 'Password is not strong enough',
289
- level: this.settings.required ? 'error' : 'warning'
290
- });
291
- }
292
- return !this.errors.length;
291
+ return !errors.length;
293
292
  }
294
- handleBlackListCheckResult(result) {
293
+ handleBlackListCheckResult(result, errors) {
295
294
  const blacklistedWords = result.blacklistedWords;
296
295
  const isRequired = this.settings.disableBlacklistedWords;
297
296
  const message = `Password ${isRequired ? 'must' : 'should'} not include common words: ${blacklistedWords.join(', ')}`;
@@ -299,7 +298,7 @@ class PasswordStrengthAddon extends FormioAddon_1.default {
299
298
  name: 'blacklist',
300
299
  required: isRequired,
301
300
  };
302
- this.handleRuleCheckResult(false, validation, message, this.errors);
301
+ this.handleRuleCheckResult(false, validation, message, errors);
303
302
  }
304
303
  constructor(settings, componentInstance) {
305
304
  super(settings, componentInstance);
@@ -592,6 +592,7 @@ export const editForms: {
592
592
  multiple?: undefined;
593
593
  hideLabel?: undefined;
594
594
  })[];
595
+ tableView: boolean;
595
596
  defaultValue: {
596
597
  data: {
597
598
  rulesSettings: {
@@ -12,7 +12,11 @@ exports.editForms = [
12
12
  key: 'settings',
13
13
  display: 'form',
14
14
  input: true,
15
- components,
15
+ components: components.map((comp) => {
16
+ comp.tableView = false;
17
+ return comp;
18
+ }),
19
+ tableView: false,
16
20
  defaultValue: {
17
21
  data: defaultSettings
18
22
  },