@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
@@ -8,6 +8,7 @@ const DataGrid_1 = __importDefault(require("../datagrid/DataGrid"));
8
8
  const lodash_1 = __importDefault(require("lodash"));
9
9
  const eventemitter3_1 = __importDefault(require("eventemitter3"));
10
10
  const utils_1 = require("../../utils/utils");
11
+ const Components_1 = require("../Components");
11
12
  class DataMapComponent extends DataGrid_1.default {
12
13
  static schema(...extend) {
13
14
  return Component_1.default.schema({
@@ -240,7 +241,7 @@ class DataMapComponent extends DataGrid_1.default {
240
241
  delete dataValue[key];
241
242
  const comp = components[this.valueKey];
242
243
  comp.component.key = newKey;
243
- comp.path = this.calculateComponentPath(comp);
244
+ comp.path = Components_1.Components.calculateComponentPath(comp);
244
245
  key = newKey;
245
246
  });
246
247
  const valueComponent = lodash_1.default.clone(this.component.valueComponent);
@@ -104,8 +104,6 @@ class DateTimeComponent extends Input_1.default {
104
104
  /* eslint-disable camelcase */
105
105
  this.component.widget = Object.assign({ type: 'calendar', timezone, displayInTimezone: lodash_1.default.get(this.component, 'displayInTimezone', 'viewer'), locale: this.options.language, useLocaleSettings: lodash_1.default.get(this.component, 'useLocaleSettings', false), allowInput: lodash_1.default.get(this.component, 'allowInput', true), mode: 'single', enableTime: lodash_1.default.get(this.component, 'enableTime', true), noCalendar: !lodash_1.default.get(this.component, 'enableDate', true), format: this.component.format, hourIncrement: lodash_1.default.get(this.component, 'timePicker.hourStep', 1), minuteIncrement: lodash_1.default.get(this.component, 'timePicker.minuteStep', 5), time_24hr: time24hr, readOnly: this.options.readOnly, minDate: lodash_1.default.get(this.component, 'datePicker.minDate'), disabledDates: lodash_1.default.get(this.component, 'datePicker.disable'), disableWeekends: lodash_1.default.get(this.component, 'datePicker.disableWeekends'), disableWeekdays: lodash_1.default.get(this.component, 'datePicker.disableWeekdays'), disableFunction: lodash_1.default.get(this.component, 'datePicker.disableFunction'), maxDate: lodash_1.default.get(this.component, 'datePicker.maxDate') }, customOptions);
106
106
  /* eslint-enable camelcase */
107
- // Add the validators date.
108
- this.validators.push('date');
109
107
  }
110
108
  get defaultSchema() {
111
109
  return DateTimeComponent.schema();
@@ -51,10 +51,10 @@ class DayComponent extends Field_1.default {
51
51
  return (0, utils_1.getComponentSavedTypes)(schema) || [utils_1.componentValueTypes.string];
52
52
  }
53
53
  constructor(component, options, data) {
54
- if (component.maxDate) {
54
+ if (component.maxDate && component.maxDate.indexOf('moment(') === -1) {
55
55
  component.maxDate = (0, moment_1.default)(component.maxDate, 'YYYY-MM-DD').toISOString();
56
56
  }
57
- if (component.minDate) {
57
+ if (component.minDate && component.minDate.indexOf('moment(') === -1) {
58
58
  component.minDate = (0, moment_1.default)(component.minDate, 'YYYY-MM-DD').toISOString();
59
59
  }
60
60
  super(component, options, data);
@@ -211,7 +211,6 @@ class DayComponent extends Field_1.default {
211
211
  }
212
212
  init() {
213
213
  super.init();
214
- this.validators = this.validators.concat(['day', 'maxDate', 'minDate', 'minYear', 'maxYear']);
215
214
  const minYear = this.component.fields.year.minYear;
216
215
  const maxYear = this.component.fields.year.maxYear;
217
216
  this.component.maxYear = maxYear;
@@ -83,12 +83,16 @@ export default class EditGridComponent extends NestedArrayComponent {
83
83
  removeRow(rowIndex: any, modified: any): void;
84
84
  createRowComponents(row: any, rowIndex: any, recreatePartially: any): any;
85
85
  hasOpenRows(): any;
86
+ getAttachedData(data?: null): any;
86
87
  shouldValidateDraft(editRow: any): any;
87
88
  shouldValidateRow(editRow: any, dirty: any): any;
88
- validateRow(editRow: any, dirty: any, forceSilentCheck: any): boolean;
89
- showRowErrorAlerts(editRow: any, valid: any): void;
90
- checkValidity(data: any, dirty: any, row: any, silentCheck: any): boolean;
91
- checkComponentValidity(data: any, dirty: any, row: any, options?: {}): boolean;
89
+ validateRow(editRow: any, dirty: any, forceSilentCheck: any): any;
90
+ showRowErrorAlerts(editRow: any, errors: any): void;
91
+ /**
92
+ * Return that this component processes its own validation.
93
+ */
94
+ get processOwnValidation(): boolean;
95
+ setRowInvalid(ref: any, index: any): void;
92
96
  changeState(changed: any, flags: any): void;
93
97
  openWhenEmpty(): void;
94
98
  restoreRowContext(editRow: any, flags?: {}): void;
@@ -4,11 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const lodash_1 = __importDefault(require("lodash"));
7
+ const process_1 = require("@formio/core/process");
8
+ const components_1 = require("@formio/bootstrap/components");
7
9
  const NestedArrayComponent_1 = __importDefault(require("../_classes/nestedarray/NestedArrayComponent"));
8
10
  const Component_1 = __importDefault(require("../_classes/component/Component"));
9
11
  const Alert_1 = __importDefault(require("../alert/Alert"));
10
12
  const utils_1 = require("../../utils/utils");
11
- const components_1 = require("@formio/bootstrap/components");
12
13
  const EditRowState = {
13
14
  New: 'new',
14
15
  Editing: 'editing',
@@ -87,7 +88,7 @@ class EditGridComponent extends NestedArrayComponent_1.default {
87
88
  {% if (!instance.options.readOnly && !instance.disabled) { %}
88
89
  <div class="col-sm-2">
89
90
  <div class="btn-group pull-right">
90
- <button class="btn btn-default btn-light btn-sm editRow"><i class="{{ iconClass('edit') }}"></i></button>
91
+ <button class="btn btn-default btn-light btn-sm editRow"><i class="{{ iconClass('pen-fill') }}"></i></button>
91
92
  {% if (!instance.hasRemoveButtons || instance.hasRemoveButtons()) { %}
92
93
  <button class="btn btn-danger btn-sm removeRow"><i class="{{ iconClass('trash') }}"></i></button>
93
94
  {% } %}
@@ -108,7 +109,7 @@ class EditGridComponent extends NestedArrayComponent_1.default {
108
109
  {% if (!instance.options.readOnly && !instance.disabled) { %}
109
110
  <td class="editgrid-table-column">
110
111
  <div class="btn-group">
111
- <button class="btn btn-default btn-light btn-sm editRow" aria-label="{{ t('Edit row') }}"><i class="{{ iconClass('edit') }}"></i></button>
112
+ <button class="btn btn-default btn-light btn-sm editRow" aria-label="{{ t('Edit row') }}"><i class="{{ iconClass('pen-fill') }}"></i></button>
112
113
  {% if (!instance.hasRemoveButtons || instance.hasRemoveButtons()) { %}
113
114
  <button class="btn btn-danger btn-sm removeRow" aria-label="{{ t('Remove row') }}"><i class="{{ iconClass('trash') }}"></i></button>
114
115
  {% } %}
@@ -440,11 +441,10 @@ class EditGridComponent extends NestedArrayComponent_1.default {
440
441
  this.editRow(rowIndex).then(() => {
441
442
  var _a;
442
443
  if (this.component.rowDrafts) {
443
- this.validateRow(editRow, false);
444
- const hasErrors = editRow.errors && !!editRow.errors.length;
445
- const shouldShowRowErrorsAlert = this.component.modal && hasErrors && ((_a = this.root) === null || _a === void 0 ? void 0 : _a.submitted);
444
+ const errors = this.validateRow(editRow, false);
445
+ const shouldShowRowErrorsAlert = this.component.modal && errors.length && ((_a = this.root) === null || _a === void 0 ? void 0 : _a.submitted);
446
446
  if (shouldShowRowErrorsAlert) {
447
- this.alert.showErrors(editRow.errors, false);
447
+ this.alert.showErrors(errors, false);
448
448
  editRow.alerts = true;
449
449
  }
450
450
  }
@@ -615,7 +615,7 @@ class EditGridComponent extends NestedArrayComponent_1.default {
615
615
  component: this.component,
616
616
  row: editRow,
617
617
  });
618
- this.checkRow('checkData', null, {}, editRow.data, editRow.components);
618
+ this.processRow('checkData', null, {}, editRow.data, editRow.components);
619
619
  if (this.component.modal) {
620
620
  this.addRowModal(rowIndex);
621
621
  }
@@ -662,13 +662,14 @@ class EditGridComponent extends NestedArrayComponent_1.default {
662
662
  if (!this.component.rowDrafts) {
663
663
  editRow.components.forEach((comp) => comp.setPristine(false));
664
664
  }
665
- if (this.validateRow(editRow, true) || this.component.rowDrafts) {
665
+ const errors = this.validateRow(editRow, true);
666
+ if (!errors.length || this.component.rowDrafts) {
666
667
  editRow.willBeSaved = true;
667
668
  dialog.close();
668
669
  this.saveRow(rowIndex, true);
669
670
  }
670
671
  else {
671
- this.alert.showErrors(editRow.errors, false);
672
+ this.alert.showErrors(errors, false);
672
673
  editRow.alerts = true;
673
674
  }
674
675
  },
@@ -794,9 +795,9 @@ class EditGridComponent extends NestedArrayComponent_1.default {
794
795
  if (!this.component.rowDrafts) {
795
796
  editRow.components.forEach((comp) => comp.setPristine(false));
796
797
  }
797
- const isRowValid = this.validateRow(editRow, true);
798
+ const errors = this.validateRow(editRow, true);
798
799
  if (!this.component.rowDrafts) {
799
- if (!isRowValid) {
800
+ if (errors.length) {
800
801
  return false;
801
802
  }
802
803
  }
@@ -822,7 +823,7 @@ class EditGridComponent extends NestedArrayComponent_1.default {
822
823
  }
823
824
  }
824
825
  }
825
- editRow.state = this.component.rowDrafts && !isRowValid ? EditRowState.Draft : EditRowState.Saved;
826
+ editRow.state = this.component.rowDrafts && errors.length ? EditRowState.Draft : EditRowState.Saved;
826
827
  editRow.backup = null;
827
828
  this.updateValue();
828
829
  this.emit('editGridSaveRow', {
@@ -931,15 +932,9 @@ class EditGridComponent extends NestedArrayComponent_1.default {
931
932
  return;
932
933
  }
933
934
  const editRow = this.editRows[rowIndex];
934
- if (editRow === null || editRow === void 0 ? void 0 : editRow.alerts) {
935
- this.checkData(null, Object.assign(Object.assign({}, flags), { changed,
936
- rowIndex }), this.data);
937
- }
938
- else if (editRow) {
939
- // If drafts allowed, perform validation silently if there was no attempt to submit a form
940
- const silentCheck = this.component.rowDrafts && !this.shouldValidateDraft(editRow);
941
- this.checkRow('checkData', null, Object.assign(Object.assign({}, flags), { changed,
942
- silentCheck }), editRow.data, editRow.components, silentCheck);
935
+ if (editRow) {
936
+ this.processRow('checkData', null, Object.assign(Object.assign({}, flags), { changed }), editRow.data, editRow.components);
937
+ this.validateRow(editRow, false);
943
938
  }
944
939
  if (this.variableTypeComponentsIndexes.length) {
945
940
  this.checkRowVariableTypeComponents(editRow, rowIndex);
@@ -955,6 +950,11 @@ class EditGridComponent extends NestedArrayComponent_1.default {
955
950
  hasOpenRows() {
956
951
  return this.editRows.some(row => this.isOpen(row));
957
952
  }
953
+ getAttachedData(data = null) {
954
+ const ourData = (0, utils_1.fastCloneDeep)(data || this._data || this.rootValue);
955
+ lodash_1.default.set(ourData, this.key, this.editRows.map((row) => row.data));
956
+ return ourData;
957
+ }
958
958
  shouldValidateDraft(editRow) {
959
959
  var _a, _b;
960
960
  // Draft rows should be validated only when there was an attempt to submit a form
@@ -966,48 +966,65 @@ class EditGridComponent extends NestedArrayComponent_1.default {
966
966
  }
967
967
  shouldValidateRow(editRow, dirty) {
968
968
  return this.shouldValidateDraft(editRow) ||
969
+ editRow.state === EditRowState.New ||
969
970
  editRow.state === EditRowState.Editing ||
970
971
  editRow.alerts ||
971
972
  dirty;
972
973
  }
973
974
  validateRow(editRow, dirty, forceSilentCheck) {
974
975
  var _a;
975
- let valid = true;
976
- const errorsSnapshot = [...this.errors];
976
+ editRow.errors = [];
977
977
  if (this.shouldValidateRow(editRow, dirty)) {
978
- editRow.components.forEach(comp => {
979
- const silentCheck = (this.component.rowDrafts && !this.shouldValidateDraft(editRow)) || forceSilentCheck;
980
- valid &= comp.checkValidity(null, dirty, null, silentCheck);
981
- });
978
+ const silentCheck = (this.component.rowDrafts && !this.shouldValidateDraft(editRow)) || forceSilentCheck;
979
+ const rootValue = (0, utils_1.fastCloneDeep)(this.rootValue);
980
+ const editGridValue = lodash_1.default.get(rootValue, this.path, []);
981
+ editGridValue[editRow.rowIndex] = editRow.data;
982
+ lodash_1.default.set(rootValue, this.path, editGridValue);
983
+ editRow.errors = (0, process_1.processSync)({
984
+ components: (0, utils_1.fastCloneDeep)(this.component.components).map((component) => {
985
+ component.parentPath = `${this.path}[${editRow.rowIndex}]`;
986
+ return component;
987
+ }),
988
+ data: rootValue,
989
+ row: editRow.data,
990
+ process: 'validateRow',
991
+ instances: this.componentsMap,
992
+ scope: { errors: [] },
993
+ processors: [
994
+ (context) => this.validationProcessor(context, { dirty, silentCheck })
995
+ ]
996
+ }).errors;
982
997
  }
998
+ // TODO: this is essentially running its own custom validation and should be moved into a validation rule
983
999
  if (this.component.validate && this.component.validate.row) {
984
- valid = this.evaluate(this.component.validate.row, {
985
- valid,
1000
+ const valid = this.evaluate(this.component.validate.row, {
1001
+ valid: (editRow.length === 0),
986
1002
  row: editRow.data
987
1003
  }, 'valid', true);
988
1004
  if (valid.toString() !== 'true') {
989
- editRow.error = valid;
990
- valid = false;
991
- }
992
- else {
993
- editRow.error = null;
1005
+ editRow.errors.push({
1006
+ type: 'error',
1007
+ rowError: true,
1008
+ message: valid.toString()
1009
+ });
994
1010
  }
995
1011
  if (valid === null) {
996
- valid = `Invalid row validation for ${this.key}`;
1012
+ editRow.errors.push({
1013
+ type: 'error',
1014
+ message: `Invalid row validation for ${this.key}`
1015
+ });
997
1016
  }
998
1017
  }
999
- editRow.errors = !valid ? this.errors.filter((err) => !errorsSnapshot.includes(err)) : null;
1000
1018
  if (!this.component.rowDrafts || ((_a = this.root) === null || _a === void 0 ? void 0 : _a.submitted)) {
1001
- this.showRowErrorAlerts(editRow, !!valid);
1019
+ this.showRowErrorAlerts(editRow, editRow.errors);
1002
1020
  }
1003
- return !!valid;
1021
+ return editRow.errors;
1004
1022
  }
1005
- showRowErrorAlerts(editRow, valid) {
1006
- var _a;
1023
+ showRowErrorAlerts(editRow, errors) {
1007
1024
  if (editRow.alerts) {
1008
1025
  if (this.alert) {
1009
- if (((_a = editRow.errors) === null || _a === void 0 ? void 0 : _a.length) && !valid) {
1010
- this.alert.showErrors(editRow.errors, false);
1026
+ if (errors.length) {
1027
+ this.alert.showErrors(errors, false);
1011
1028
  editRow.alerts = true;
1012
1029
  }
1013
1030
  else {
@@ -1016,40 +1033,35 @@ class EditGridComponent extends NestedArrayComponent_1.default {
1016
1033
  }
1017
1034
  }
1018
1035
  }
1019
- checkValidity(data, dirty, row, silentCheck) {
1020
- data = data || this.rootValue;
1021
- row = row || this.data;
1022
- if (!this.checkCondition(row, data)) {
1023
- this.setCustomValidity('');
1024
- return true;
1025
- }
1026
- return this.checkComponentValidity(data, dirty, row, { silentCheck });
1036
+ /**
1037
+ * Return that this component processes its own validation.
1038
+ */
1039
+ get processOwnValidation() {
1040
+ return true;
1027
1041
  }
1028
- checkComponentValidity(data, dirty, row, options = {}) {
1029
- var _a, _b, _c;
1042
+ checkComponentValidity(data, dirty, row, options = {}, errors = []) {
1043
+ var _a, _b;
1030
1044
  const { silentCheck } = options;
1031
- const errorsLength = this.errors.length;
1032
- const superValid = super.checkComponentValidity(data, dirty, row, options);
1045
+ const superValid = super.checkComponentValidity(data, dirty, row, options, errors);
1033
1046
  // If super tells us that component invalid and there is no need to update alerts, just return false
1034
1047
  if (!superValid && (!this.alert && !this.hasOpenRows())) {
1035
1048
  return false;
1036
1049
  }
1037
- if (this.shouldSkipValidation(data, dirty, row)) {
1038
- return true;
1039
- }
1040
- let rowsValid = true;
1041
1050
  let rowsEditing = false;
1051
+ const allRowErrors = [];
1042
1052
  this.editRows.forEach((editRow, index) => {
1043
1053
  // Trigger all errors on the row.
1044
- const rowValid = this.validateRow(editRow, dirty, silentCheck);
1045
- rowsValid &= rowValid;
1054
+ const rowErrors = this.validateRow(editRow, dirty, silentCheck);
1055
+ errors.push(...rowErrors);
1056
+ allRowErrors.push(...rowErrors);
1046
1057
  if (this.rowRefs) {
1047
1058
  const rowContainer = this.rowRefs[index];
1048
1059
  if (rowContainer) {
1049
1060
  const errorContainer = rowContainer.querySelector('.editgrid-row-error');
1050
- if (!rowValid && errorContainer && (!this.component.rowDrafts || this.shouldValidateDraft(editRow))) {
1061
+ if (rowErrors.length && errorContainer && (!this.component.rowDrafts || this.shouldValidateDraft(editRow))) {
1062
+ const rowError = rowErrors.find(error => error.rowError);
1051
1063
  this.addClass(errorContainer, 'help-block');
1052
- errorContainer.textContent = this.t(this.errorMessage('invalidRowError'));
1064
+ errorContainer.textContent = this.t(rowError ? rowError.message : this.errorMessage('invalidRowError'));
1053
1065
  }
1054
1066
  else if (errorContainer) {
1055
1067
  errorContainer.textContent = '';
@@ -1059,10 +1071,9 @@ class EditGridComponent extends NestedArrayComponent_1.default {
1059
1071
  // If this is a dirty check, and any rows are still editing, we need to throw validation error.
1060
1072
  rowsEditing |= (dirty && this.isOpen(editRow));
1061
1073
  });
1062
- if (!rowsValid) {
1063
- if (!silentCheck && (!this.component.rowDrafts || ((_a = this.root) === null || _a === void 0 ? void 0 : _a.submitted))) {
1074
+ if (allRowErrors.length) {
1075
+ if (!silentCheck && (dirty || this.dirty) && (!this.component.rowDrafts || ((_a = this.root) === null || _a === void 0 ? void 0 : _a.submitted))) {
1064
1076
  this.setCustomValidity(this.t(this.errorMessage('invalidRowsError')), dirty);
1065
- // Delete this class, because otherwise all the components inside EditGrid will has red border even if they are valid
1066
1077
  this.removeClass(this.element, 'has-error');
1067
1078
  }
1068
1079
  return false;
@@ -1072,15 +1083,28 @@ class EditGridComponent extends NestedArrayComponent_1.default {
1072
1083
  return false;
1073
1084
  }
1074
1085
  const message = this.invalid || this.invalidMessage(data, dirty);
1075
- if (((_b = this.errors) === null || _b === void 0 ? void 0 : _b.length) !== errorsLength && ((_c = this.root) === null || _c === void 0 ? void 0 : _c.submitted) && !message) {
1076
- this.setCustomValidity(message, dirty);
1077
- this.root.showErrors();
1086
+ if (allRowErrors.length && ((_b = this.root) === null || _b === void 0 ? void 0 : _b.submitted) && !message) {
1087
+ this._errors = this.setCustomValidity(message, dirty);
1088
+ errors.push(...this._errors);
1089
+ this.root.showErrors([message]);
1078
1090
  }
1079
1091
  else {
1080
- this.setCustomValidity(message, dirty);
1092
+ this._errors = this.setCustomValidity(message, dirty);
1093
+ errors.push(...this._errors);
1081
1094
  }
1082
1095
  return superValid;
1083
1096
  }
1097
+ setRowInvalid(ref, index) {
1098
+ const editRow = this.editRows[index];
1099
+ const errorContainer = ref.querySelector('.editgrid-row-error');
1100
+ if (errorContainer && (!this.component.rowDrafts || this.shouldValidateDraft(editRow))) {
1101
+ this.addClass(errorContainer, 'help-block');
1102
+ errorContainer.textContent = this.t(this.errorMessage('invalidRowError'));
1103
+ }
1104
+ else if (errorContainer) {
1105
+ errorContainer.textContent = '';
1106
+ }
1107
+ }
1084
1108
  changeState(changed, flags) {
1085
1109
  if (changed || (flags.resetValue && this.component.modalEdit)) {
1086
1110
  this.rebuild();
@@ -1102,7 +1126,6 @@ class EditGridComponent extends NestedArrayComponent_1.default {
1102
1126
  }
1103
1127
  }
1104
1128
  const changed = this.hasChanged(value, this.dataValue);
1105
- flags.noValidate = !changed;
1106
1129
  if (this.parent) {
1107
1130
  this.parent.checkComponentConditions();
1108
1131
  }
@@ -1115,7 +1138,7 @@ class EditGridComponent extends NestedArrayComponent_1.default {
1115
1138
  this.restoreRowContext(editRow, flags);
1116
1139
  editRow.state = EditRowState.Saved;
1117
1140
  editRow.backup = null;
1118
- editRow.error = null;
1141
+ editRow.errors = [];
1119
1142
  }
1120
1143
  else {
1121
1144
  this.editRows[rowIndex] = {
@@ -1123,7 +1146,7 @@ class EditGridComponent extends NestedArrayComponent_1.default {
1123
1146
  data: row,
1124
1147
  state: EditRowState.Saved,
1125
1148
  backup: null,
1126
- error: null,
1149
+ errors: [],
1127
1150
  };
1128
1151
  }
1129
1152
  });
@@ -28,7 +28,6 @@ class EmailComponent extends TextField_1.default {
28
28
  }
29
29
  init() {
30
30
  super.init();
31
- this.validators.push('email');
32
31
  }
33
32
  get defaultSchema() {
34
33
  return EmailComponent.schema();
@@ -283,7 +283,7 @@ class FileComponent extends Field_1.default {
283
283
  }
284
284
  deleteFile(fileInfo) {
285
285
  const { options = {} } = this.component;
286
- if (fileInfo && (['url', 'indexeddb', 's3', 'googledrive', 'azure'].includes(this.component.storage))) {
286
+ if (fileInfo && (['url', 'indexeddb'].includes(this.component.storage))) {
287
287
  const { fileService } = this;
288
288
  if (fileService && typeof fileService.deleteFile === 'function') {
289
289
  fileService.deleteFile(fileInfo, options);
@@ -0,0 +1,29 @@
1
+ declare namespace _default {
2
+ const type: string;
3
+ const display: string;
4
+ const components: ({
5
+ label: string;
6
+ tableView: boolean;
7
+ storage: string;
8
+ webcam: boolean;
9
+ fileTypes: {
10
+ label: string;
11
+ value: string;
12
+ }[];
13
+ key: string;
14
+ type: string;
15
+ input: boolean;
16
+ disableOnInvalid?: undefined;
17
+ } | {
18
+ type: string;
19
+ label: string;
20
+ key: string;
21
+ disableOnInvalid: boolean;
22
+ input: boolean;
23
+ tableView: boolean;
24
+ storage?: undefined;
25
+ webcam?: undefined;
26
+ fileTypes?: undefined;
27
+ })[];
28
+ }
29
+ export default _default;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ type: 'form',
5
+ display: 'form',
6
+ components: [
7
+ {
8
+ label: 'Upload',
9
+ tableView: false,
10
+ storage: 'base64',
11
+ webcam: false,
12
+ fileTypes: [
13
+ {
14
+ label: '',
15
+ value: ''
16
+ }
17
+ ],
18
+ key: 'file',
19
+ type: 'file',
20
+ input: true
21
+ },
22
+ {
23
+ type: 'button',
24
+ label: 'Submit',
25
+ key: 'submit',
26
+ disableOnInvalid: true,
27
+ input: true,
28
+ tableView: false
29
+ }
30
+ ],
31
+ };
@@ -25,10 +25,6 @@ export default class FormComponent extends Component {
25
25
  getSubOptions(options?: {}): {};
26
26
  render(): any;
27
27
  asString(value: any): any;
28
- /**
29
- * Prints out the value of form components as a datagrid value.
30
- */
31
- getValueAsString(value: any): any;
32
28
  attach(element: any): Promise<any>;
33
29
  get hasLoadedForm(): any;
34
30
  get isRevisionChanged(): any;
@@ -54,7 +50,7 @@ export default class FormComponent extends Component {
54
50
  loadSubForm(fromAttach: any): any;
55
51
  subFormLoading: boolean | undefined;
56
52
  get subFormData(): any;
57
- checkComponentValidity(data: any, dirty: any, row: any, options: any): any;
53
+ checkComponentValidity(data: any, dirty: any, row: any, options: any, errors?: any[]): any;
58
54
  checkComponentConditions(data: any, flags: any, row: any): any;
59
55
  calculateValue(data: any, flags: any, row: any): any;
60
56
  setPristine(pristine: any): void;
@@ -74,7 +70,7 @@ export default class FormComponent extends Component {
74
70
  *
75
71
  * @return {*}
76
72
  */
77
- submitSubForm(rejectOnError: any): any;
73
+ submitSubForm(): any;
78
74
  /**
79
75
  * Submit the form before the next page is triggered.
80
76
  */
@@ -143,7 +143,6 @@ class FormComponent extends Component_1.default {
143
143
  }
144
144
  }
145
145
  getSubOptions(options = {}) {
146
- options.parentPath = `${this.path}.data.`;
147
146
  options.events = this.createEmitter();
148
147
  // Make sure to not show the submit button in wizards in the nested forms.
149
148
  lodash_1.default.set(options, 'buttonSettings.showSubmit', false);
@@ -192,6 +191,12 @@ class FormComponent extends Component_1.default {
192
191
  if (this.options.onChange) {
193
192
  options.onChange = this.options.onChange;
194
193
  }
194
+ if (this.options.preview) {
195
+ options.preview = this.options.preview;
196
+ }
197
+ if (this.options.inEditGrid) {
198
+ options.inEditGrid = this.options.inEditGrid;
199
+ }
195
200
  return options;
196
201
  }
197
202
  render() {
@@ -207,7 +212,7 @@ class FormComponent extends Component_1.default {
207
212
  /**
208
213
  * Prints out the value of form components as a datagrid value.
209
214
  */
210
- getValueAsString(value) {
215
+ getValueAsString(value, options) {
211
216
  if (!value) {
212
217
  return 'No data provided';
213
218
  }
@@ -217,6 +222,30 @@ class FormComponent extends Component_1.default {
217
222
  if (!value.data || !Object.keys(value.data).length) {
218
223
  return 'No data provided';
219
224
  }
225
+ if (options === null || options === void 0 ? void 0 : options.email) {
226
+ let result = (`
227
+ <table border="1" style="width:100%">
228
+ <tbody>
229
+ `);
230
+ this.everyComponent((component) => {
231
+ if (component.isInputComponent && component.visible && !component.skipInEmail) {
232
+ result += (`
233
+ <tr>
234
+ <th style="padding: 5px 10px;">${component.label}</th>
235
+ <td style="width:100%;padding:5px 10px;">${component.getView(component.dataValue, options)}</td>
236
+ </tr>
237
+ `);
238
+ }
239
+ }, Object.assign(Object.assign({}, options), { fromRoot: true }));
240
+ result += (`
241
+ </tbody>
242
+ </table>
243
+ `);
244
+ return result;
245
+ }
246
+ if (lodash_1.default.isEmpty(value)) {
247
+ return '';
248
+ }
220
249
  return '[Complex Data]';
221
250
  }
222
251
  attach(element) {
@@ -389,11 +418,12 @@ class FormComponent extends Component_1.default {
389
418
  * Load the subform.
390
419
  */
391
420
  loadSubForm(fromAttach) {
421
+ var _a;
392
422
  if (this.builderMode || this.isHidden() || (this.isSubFormLazyLoad() && !fromAttach)) {
393
423
  return Promise.resolve();
394
424
  }
395
425
  if (this.hasLoadedForm && !this.isRevisionChanged &&
396
- !(this.options.pdf && this.useOriginalRevision && lodash_1.default.isNull(this.subForm) && !this.subFormLoading)) {
426
+ !(this.options.pdf && ((_a = this.component) === null || _a === void 0 ? void 0 : _a.useOriginalRevision) && lodash_1.default.isNull(this.subForm) && !this.subFormLoading)) {
397
427
  // Pass config down to sub forms.
398
428
  if (this.root && this.root.form && this.root.form.config && !this.formObj.config) {
399
429
  this.formObj.config = this.root.form.config;
@@ -405,6 +435,9 @@ class FormComponent extends Component_1.default {
405
435
  return (new Formio_1.Formio(this.formSrc)).loadForm({ params: { live: 1 } })
406
436
  .then((formObj) => {
407
437
  this.formObj = formObj;
438
+ if (this.options.pdf && this.component.useOriginalRevision) {
439
+ this.formObj.display = 'form';
440
+ }
408
441
  this.subFormLoading = false;
409
442
  return formObj;
410
443
  })
@@ -419,13 +452,13 @@ class FormComponent extends Component_1.default {
419
452
  var _a;
420
453
  return ((_a = this.dataValue) === null || _a === void 0 ? void 0 : _a.data) || {};
421
454
  }
422
- checkComponentValidity(data, dirty, row, options) {
455
+ checkComponentValidity(data, dirty, row, options, errors = []) {
423
456
  options = options || {};
424
457
  const silentCheck = options.silentCheck || false;
425
458
  if (this.subForm) {
426
- return this.subForm.checkValidity(this.subFormData, dirty, null, silentCheck);
459
+ return this.subForm.checkValidity(this.subFormData, dirty, null, silentCheck, errors);
427
460
  }
428
- return super.checkComponentValidity(data, dirty, row, options);
461
+ return super.checkComponentValidity(data, dirty, row, options, errors);
429
462
  }
430
463
  checkComponentConditions(data, flags, row) {
431
464
  const visible = super.checkComponentConditions(data, flags, row);
@@ -484,7 +517,7 @@ class FormComponent extends Component_1.default {
484
517
  *
485
518
  * @return {*}
486
519
  */
487
- submitSubForm(rejectOnError) {
520
+ submitSubForm() {
488
521
  // If we wish to submit the form on next page, then do that here.
489
522
  if (this.shouldSubmit) {
490
523
  return this.subFormReady.then(() => {
@@ -492,6 +525,7 @@ class FormComponent extends Component_1.default {
492
525
  return this.dataValue;
493
526
  }
494
527
  this.subForm.nosubmit = false;
528
+ this.subForm.submitted = true;
495
529
  return this.subForm.submitForm().then(result => {
496
530
  this.subForm.loading = false;
497
531
  this.subForm.showAllErrors = false;
@@ -499,13 +533,8 @@ class FormComponent extends Component_1.default {
499
533
  return this.dataValue;
500
534
  }).catch(err => {
501
535
  this.subForm.showAllErrors = true;
502
- if (rejectOnError) {
503
- this.subForm.onSubmissionError(err);
504
- return Promise.reject(err);
505
- }
506
- else {
507
- return {};
508
- }
536
+ this.subForm.onSubmissionError(err);
537
+ return Promise.reject(err);
509
538
  });
510
539
  });
511
540
  }