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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (360) hide show
  1. package/dist/fonts/bootstrap-icons.woff +0 -0
  2. package/dist/fonts/bootstrap-icons.woff2 +0 -0
  3. package/dist/formio.embed.js +1 -1
  4. package/dist/formio.embed.min.js +1 -1
  5. package/dist/formio.embed.min.js.LICENSE.txt +1 -1
  6. package/dist/formio.form.js +710 -689
  7. package/dist/formio.form.min.js +1 -1
  8. package/dist/formio.form.min.js.LICENSE.txt +2 -2
  9. package/dist/formio.full.css +100 -3
  10. package/dist/formio.full.js +715 -727
  11. package/dist/formio.full.min.css +2 -2
  12. package/dist/formio.full.min.js +1 -1
  13. package/dist/formio.full.min.js.LICENSE.txt +2 -2
  14. package/dist/formio.js +659 -264
  15. package/dist/formio.min.js +1 -1
  16. package/dist/formio.min.js.LICENSE.txt +2 -2
  17. package/dist/formio.utils.js +29 -8
  18. package/dist/formio.utils.min.js +1 -1
  19. package/dist/formio.utils.min.js.LICENSE.txt +2 -2
  20. package/lib/cjs/Embed.d.ts +1 -1
  21. package/lib/cjs/Embed.js +14 -6
  22. package/lib/cjs/PDF.js +2 -2
  23. package/lib/cjs/Webform.d.ts +3 -5
  24. package/lib/cjs/Webform.js +59 -81
  25. package/lib/cjs/WebformBuilder.d.ts +1 -1
  26. package/lib/cjs/WebformBuilder.js +27 -10
  27. package/lib/cjs/Wizard.d.ts +2 -0
  28. package/lib/cjs/Wizard.js +37 -26
  29. package/lib/cjs/WizardBuilder.d.ts +1 -0
  30. package/lib/cjs/addons/PasswordStrength/PasswordStrengthAddon.d.ts +1 -2
  31. package/lib/cjs/addons/PasswordStrength/PasswordStrengthAddon.js +11 -12
  32. package/lib/cjs/addons/index.d.ts +1 -0
  33. package/lib/cjs/addons/index.js +5 -1
  34. package/lib/cjs/components/Components.d.ts +7 -0
  35. package/lib/cjs/components/Components.js +30 -0
  36. package/lib/cjs/components/_classes/component/Component.d.ts +57 -27
  37. package/lib/cjs/components/_classes/component/Component.js +193 -119
  38. package/lib/cjs/components/_classes/component/editForm/Component.edit.addons.d.ts +8 -0
  39. package/lib/cjs/components/_classes/component/editForm/Component.edit.addons.js +31 -1
  40. package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +28 -11
  41. package/lib/cjs/components/_classes/nested/NestedComponent.js +88 -57
  42. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +4 -3
  43. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +17 -4
  44. package/lib/cjs/components/builder.js +0 -2
  45. package/lib/cjs/components/button/Button.js +2 -1
  46. package/lib/cjs/components/columns/Columns.d.ts +1 -0
  47. package/lib/cjs/components/columns/Columns.js +2 -3
  48. package/lib/cjs/components/columns/editForm/Columns.edit.display.d.ts +30 -1
  49. package/lib/cjs/components/columns/editForm/Columns.edit.display.js +23 -1
  50. package/lib/cjs/components/container/Container.d.ts +1 -0
  51. package/lib/cjs/components/container/Container.js +2 -6
  52. package/lib/cjs/components/content/Content.d.ts +1 -0
  53. package/lib/cjs/components/content/Content.js +1 -0
  54. package/lib/cjs/components/datagrid/DataGrid.d.ts +0 -8
  55. package/lib/cjs/components/datagrid/DataGrid.js +9 -26
  56. package/lib/cjs/components/datamap/DataMap.js +2 -1
  57. package/lib/cjs/components/datetime/DateTime.js +0 -2
  58. package/lib/cjs/components/day/Day.js +2 -3
  59. package/lib/cjs/components/editgrid/EditGrid.d.ts +8 -4
  60. package/lib/cjs/components/editgrid/EditGrid.js +96 -73
  61. package/lib/cjs/components/email/Email.js +0 -1
  62. package/lib/cjs/components/file/File.js +1 -1
  63. package/lib/cjs/components/file/fixtures/comp3.d.ts +29 -0
  64. package/lib/cjs/components/file/fixtures/comp3.js +31 -0
  65. package/lib/cjs/components/form/Form.d.ts +2 -6
  66. package/lib/cjs/components/form/Form.js +43 -14
  67. package/lib/cjs/components/index.d.ts +0 -2
  68. package/lib/cjs/components/index.js +0 -2
  69. package/lib/cjs/components/number/Number.d.ts +1 -2
  70. package/lib/cjs/components/number/Number.js +5 -6
  71. package/lib/cjs/components/panel/Panel.d.ts +0 -1
  72. package/lib/cjs/components/panel/Panel.js +2 -9
  73. package/lib/cjs/components/panel/editForm/Panel.edit.display.d.ts +6 -38
  74. package/lib/cjs/components/panel/editForm/Panel.edit.display.js +3 -16
  75. package/lib/cjs/components/phonenumber/PhoneNumber.js +17 -0
  76. package/lib/cjs/components/radio/Radio.js +0 -2
  77. package/lib/cjs/components/recaptcha/ReCaptcha.d.ts +1 -1
  78. package/lib/cjs/components/recaptcha/ReCaptcha.js +2 -2
  79. package/lib/cjs/components/select/Select.js +3 -2
  80. package/lib/cjs/components/selectboxes/SelectBoxes.d.ts +1 -2
  81. package/lib/cjs/components/selectboxes/SelectBoxes.js +7 -6
  82. package/lib/cjs/components/table/editForm/Table.edit.display.d.ts +31 -2
  83. package/lib/cjs/components/table/editForm/Table.edit.display.js +22 -0
  84. package/lib/cjs/components/tabs/editForm/Tabs.edit.display.d.ts +30 -2
  85. package/lib/cjs/components/tabs/editForm/Tabs.edit.display.js +22 -0
  86. package/lib/cjs/components/textfield/TextField.js +20 -6
  87. package/lib/cjs/components/time/Time.js +0 -6
  88. package/lib/cjs/components/url/Url.js +0 -1
  89. package/lib/cjs/components/well/editForm/Well.edit.display.d.ts +25 -2
  90. package/lib/cjs/components/well/editForm/Well.edit.display.js +18 -0
  91. package/lib/cjs/formio.embed.js +5 -3
  92. package/lib/cjs/formio.form.d.ts +1 -7
  93. package/lib/cjs/formio.form.js +2 -38
  94. package/lib/cjs/index.d.ts +2 -1
  95. package/lib/cjs/index.js +2 -1
  96. package/lib/cjs/providers/Providers.d.ts +0 -4
  97. package/lib/cjs/providers/storage/azure.d.ts +0 -2
  98. package/lib/cjs/providers/storage/azure.js +1 -6
  99. package/lib/cjs/providers/storage/googleDrive.d.ts +0 -1
  100. package/lib/cjs/providers/storage/googleDrive.js +0 -4
  101. package/lib/cjs/providers/storage/s3.d.ts +0 -1
  102. package/lib/cjs/providers/storage/s3.js +0 -4
  103. package/lib/cjs/translations/en.d.ts +5 -0
  104. package/lib/cjs/translations/en.js +5 -0
  105. package/lib/cjs/utils/formUtils.js +1 -0
  106. package/lib/cjs/utils/utils.d.ts +2 -1
  107. package/lib/cjs/utils/utils.js +27 -9
  108. package/lib/mjs/Embed.d.ts +1 -1
  109. package/lib/mjs/Embed.js +14 -6
  110. package/lib/mjs/PDF.js +2 -2
  111. package/lib/mjs/Webform.d.ts +3 -5
  112. package/lib/mjs/Webform.js +58 -82
  113. package/lib/mjs/WebformBuilder.d.ts +1 -1
  114. package/lib/mjs/WebformBuilder.js +28 -7
  115. package/lib/mjs/Wizard.d.ts +2 -0
  116. package/lib/mjs/Wizard.js +36 -27
  117. package/lib/mjs/WizardBuilder.d.ts +1 -0
  118. package/lib/mjs/addons/PasswordStrength/PasswordStrengthAddon.d.ts +1 -2
  119. package/lib/mjs/addons/PasswordStrength/PasswordStrengthAddon.js +11 -12
  120. package/lib/mjs/addons/index.d.ts +1 -0
  121. package/lib/mjs/addons/index.js +5 -1
  122. package/lib/mjs/components/Components.d.ts +7 -0
  123. package/lib/mjs/components/Components.js +29 -0
  124. package/lib/mjs/components/_classes/component/Component.d.ts +57 -27
  125. package/lib/mjs/components/_classes/component/Component.js +191 -118
  126. package/lib/mjs/components/_classes/component/editForm/Component.edit.addons.d.ts +8 -0
  127. package/lib/mjs/components/_classes/component/editForm/Component.edit.addons.js +31 -1
  128. package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +28 -11
  129. package/lib/mjs/components/_classes/nested/NestedComponent.js +88 -57
  130. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +4 -3
  131. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +18 -5
  132. package/lib/mjs/components/builder.js +0 -2
  133. package/lib/mjs/components/button/Button.js +2 -1
  134. package/lib/mjs/components/columns/Columns.d.ts +1 -0
  135. package/lib/mjs/components/columns/Columns.js +2 -3
  136. package/lib/mjs/components/columns/editForm/Columns.edit.display.d.ts +30 -1
  137. package/lib/mjs/components/columns/editForm/Columns.edit.display.js +23 -1
  138. package/lib/mjs/components/container/Container.d.ts +1 -0
  139. package/lib/mjs/components/container/Container.js +2 -6
  140. package/lib/mjs/components/content/Content.d.ts +1 -0
  141. package/lib/mjs/components/content/Content.js +1 -0
  142. package/lib/mjs/components/datagrid/DataGrid.d.ts +0 -8
  143. package/lib/mjs/components/datagrid/DataGrid.js +9 -26
  144. package/lib/mjs/components/datamap/DataMap.js +2 -1
  145. package/lib/mjs/components/datetime/DateTime.js +0 -2
  146. package/lib/mjs/components/day/Day.js +2 -3
  147. package/lib/mjs/components/editgrid/EditGrid.d.ts +8 -4
  148. package/lib/mjs/components/editgrid/EditGrid.js +97 -76
  149. package/lib/mjs/components/email/Email.js +0 -1
  150. package/lib/mjs/components/file/File.js +1 -1
  151. package/lib/mjs/components/file/fixtures/comp3.d.ts +29 -0
  152. package/lib/mjs/components/file/fixtures/comp3.js +29 -0
  153. package/lib/mjs/components/form/Form.d.ts +2 -6
  154. package/lib/mjs/components/form/Form.js +45 -14
  155. package/lib/mjs/components/index.d.ts +0 -2
  156. package/lib/mjs/components/index.js +0 -2
  157. package/lib/mjs/components/number/Number.d.ts +1 -2
  158. package/lib/mjs/components/number/Number.js +4 -5
  159. package/lib/mjs/components/panel/Panel.d.ts +0 -1
  160. package/lib/mjs/components/panel/Panel.js +3 -9
  161. package/lib/mjs/components/panel/editForm/Panel.edit.display.d.ts +6 -38
  162. package/lib/mjs/components/panel/editForm/Panel.edit.display.js +3 -16
  163. package/lib/mjs/components/phonenumber/PhoneNumber.js +17 -0
  164. package/lib/mjs/components/radio/Radio.js +0 -2
  165. package/lib/mjs/components/recaptcha/ReCaptcha.d.ts +1 -1
  166. package/lib/mjs/components/recaptcha/ReCaptcha.js +2 -2
  167. package/lib/mjs/components/select/Select.js +3 -2
  168. package/lib/mjs/components/selectboxes/SelectBoxes.d.ts +1 -2
  169. package/lib/mjs/components/selectboxes/SelectBoxes.js +7 -6
  170. package/lib/mjs/components/table/editForm/Table.edit.display.d.ts +31 -2
  171. package/lib/mjs/components/table/editForm/Table.edit.display.js +22 -0
  172. package/lib/mjs/components/tabs/editForm/Tabs.edit.display.d.ts +30 -2
  173. package/lib/mjs/components/tabs/editForm/Tabs.edit.display.js +22 -0
  174. package/lib/mjs/components/textfield/TextField.js +20 -6
  175. package/lib/mjs/components/time/Time.js +0 -6
  176. package/lib/mjs/components/url/Url.js +0 -1
  177. package/lib/mjs/components/well/editForm/Well.edit.display.d.ts +25 -2
  178. package/lib/mjs/components/well/editForm/Well.edit.display.js +18 -0
  179. package/lib/mjs/formio.embed.js +5 -3
  180. package/lib/mjs/formio.form.d.ts +1 -7
  181. package/lib/mjs/formio.form.js +2 -32
  182. package/lib/mjs/index.d.ts +2 -1
  183. package/lib/mjs/index.js +1 -1
  184. package/lib/mjs/providers/Providers.d.ts +0 -4
  185. package/lib/mjs/providers/storage/azure.d.ts +0 -2
  186. package/lib/mjs/providers/storage/azure.js +1 -6
  187. package/lib/mjs/providers/storage/googleDrive.d.ts +0 -1
  188. package/lib/mjs/providers/storage/googleDrive.js +0 -4
  189. package/lib/mjs/providers/storage/s3.d.ts +0 -1
  190. package/lib/mjs/providers/storage/s3.js +0 -4
  191. package/lib/mjs/translations/en.d.ts +5 -0
  192. package/lib/mjs/translations/en.js +5 -0
  193. package/lib/mjs/utils/formUtils.js +1 -0
  194. package/lib/mjs/utils/utils.d.ts +2 -1
  195. package/lib/mjs/utils/utils.js +24 -7
  196. package/package.json +5 -5
  197. package/lib/cjs/components/tree/Node.d.ts +0 -55
  198. package/lib/cjs/components/tree/Node.js +0 -185
  199. package/lib/cjs/components/tree/Tree.d.ts +0 -48
  200. package/lib/cjs/components/tree/Tree.form.d.ts +0 -3
  201. package/lib/cjs/components/tree/Tree.form.js +0 -21
  202. package/lib/cjs/components/tree/Tree.js +0 -383
  203. package/lib/cjs/components/tree/editForm/Tree.edit.data.d.ts +0 -5
  204. package/lib/cjs/components/tree/editForm/Tree.edit.data.js +0 -9
  205. package/lib/cjs/components/tree/editForm/Tree.edit.display.d.ts +0 -9
  206. package/lib/cjs/components/tree/editForm/Tree.edit.display.js +0 -12
  207. package/lib/cjs/components/tree/fixtures/comp1.d.ts +0 -23
  208. package/lib/cjs/components/tree/fixtures/comp1.js +0 -24
  209. package/lib/cjs/components/tree/fixtures/comp2.d.ts +0 -116
  210. package/lib/cjs/components/tree/fixtures/comp2.js +0 -82
  211. package/lib/cjs/components/tree/fixtures/comp3.d.ts +0 -24
  212. package/lib/cjs/components/tree/fixtures/comp3.js +0 -25
  213. package/lib/cjs/components/tree/fixtures/comp4.d.ts +0 -42
  214. package/lib/cjs/components/tree/fixtures/comp4.js +0 -47
  215. package/lib/cjs/components/tree/fixtures/index.d.ts +0 -5
  216. package/lib/cjs/components/tree/fixtures/index.js +0 -14
  217. package/lib/cjs/validator/Rules.d.ts +0 -53
  218. package/lib/cjs/validator/Rules.js +0 -22
  219. package/lib/cjs/validator/Validator.d.ts +0 -228
  220. package/lib/cjs/validator/Validator.js +0 -1113
  221. package/lib/cjs/validator/conjunctions/index.d.ts +0 -7
  222. package/lib/cjs/validator/conjunctions/index.js +0 -18
  223. package/lib/cjs/validator/operators/index.d.ts +0 -7
  224. package/lib/cjs/validator/operators/index.js +0 -18
  225. package/lib/cjs/validator/quickRules/index.d.ts +0 -7
  226. package/lib/cjs/validator/quickRules/index.js +0 -18
  227. package/lib/cjs/validator/rules/Custom.d.ts +0 -5
  228. package/lib/cjs/validator/rules/Custom.js +0 -30
  229. package/lib/cjs/validator/rules/Date.d.ts +0 -5
  230. package/lib/cjs/validator/rules/Date.js +0 -25
  231. package/lib/cjs/validator/rules/Day.d.ts +0 -5
  232. package/lib/cjs/validator/rules/Day.js +0 -58
  233. package/lib/cjs/validator/rules/Email.d.ts +0 -5
  234. package/lib/cjs/validator/rules/Email.js +0 -24
  235. package/lib/cjs/validator/rules/JSON.d.ts +0 -5
  236. package/lib/cjs/validator/rules/JSON.js +0 -29
  237. package/lib/cjs/validator/rules/Mask.d.ts +0 -5
  238. package/lib/cjs/validator/rules/Mask.js +0 -32
  239. package/lib/cjs/validator/rules/Max.d.ts +0 -5
  240. package/lib/cjs/validator/rules/Max.js +0 -21
  241. package/lib/cjs/validator/rules/MaxDate.d.ts +0 -5
  242. package/lib/cjs/validator/rules/MaxDate.js +0 -34
  243. package/lib/cjs/validator/rules/MaxLength.d.ts +0 -5
  244. package/lib/cjs/validator/rules/MaxLength.js +0 -20
  245. package/lib/cjs/validator/rules/MaxWords.d.ts +0 -5
  246. package/lib/cjs/validator/rules/MaxWords.js +0 -20
  247. package/lib/cjs/validator/rules/MaxYear.d.ts +0 -5
  248. package/lib/cjs/validator/rules/MaxYear.js +0 -22
  249. package/lib/cjs/validator/rules/Min.d.ts +0 -5
  250. package/lib/cjs/validator/rules/Min.js +0 -21
  251. package/lib/cjs/validator/rules/MinDate.d.ts +0 -5
  252. package/lib/cjs/validator/rules/MinDate.js +0 -30
  253. package/lib/cjs/validator/rules/MinLength.d.ts +0 -5
  254. package/lib/cjs/validator/rules/MinLength.js +0 -20
  255. package/lib/cjs/validator/rules/MinWords.d.ts +0 -5
  256. package/lib/cjs/validator/rules/MinWords.js +0 -20
  257. package/lib/cjs/validator/rules/MinYear.d.ts +0 -5
  258. package/lib/cjs/validator/rules/MinYear.js +0 -22
  259. package/lib/cjs/validator/rules/Pattern.d.ts +0 -5
  260. package/lib/cjs/validator/rules/Pattern.js +0 -20
  261. package/lib/cjs/validator/rules/Required.d.ts +0 -5
  262. package/lib/cjs/validator/rules/Required.js +0 -17
  263. package/lib/cjs/validator/rules/Rule.d.ts +0 -7
  264. package/lib/cjs/validator/rules/Rule.js +0 -12
  265. package/lib/cjs/validator/rules/Select.d.ts +0 -5
  266. package/lib/cjs/validator/rules/Select.js +0 -95
  267. package/lib/cjs/validator/rules/Time.d.ts +0 -5
  268. package/lib/cjs/validator/rules/Time.js +0 -19
  269. package/lib/cjs/validator/rules/Unique.d.ts +0 -5
  270. package/lib/cjs/validator/rules/Unique.js +0 -69
  271. package/lib/cjs/validator/rules/Url.d.ts +0 -5
  272. package/lib/cjs/validator/rules/Url.js +0 -23
  273. package/lib/cjs/validator/rules/index.d.ts +0 -47
  274. package/lib/cjs/validator/rules/index.js +0 -51
  275. package/lib/cjs/validator/transformers/index.d.ts +0 -7
  276. package/lib/cjs/validator/transformers/index.js +0 -18
  277. package/lib/cjs/validator/valueSources/index.d.ts +0 -7
  278. package/lib/cjs/validator/valueSources/index.js +0 -18
  279. package/lib/mjs/components/tree/Node.d.ts +0 -55
  280. package/lib/mjs/components/tree/Node.js +0 -179
  281. package/lib/mjs/components/tree/Tree.d.ts +0 -48
  282. package/lib/mjs/components/tree/Tree.form.d.ts +0 -3
  283. package/lib/mjs/components/tree/Tree.form.js +0 -15
  284. package/lib/mjs/components/tree/Tree.js +0 -384
  285. package/lib/mjs/components/tree/editForm/Tree.edit.data.d.ts +0 -5
  286. package/lib/mjs/components/tree/editForm/Tree.edit.data.js +0 -7
  287. package/lib/mjs/components/tree/editForm/Tree.edit.display.d.ts +0 -9
  288. package/lib/mjs/components/tree/editForm/Tree.edit.display.js +0 -10
  289. package/lib/mjs/components/tree/fixtures/comp1.d.ts +0 -23
  290. package/lib/mjs/components/tree/fixtures/comp1.js +0 -22
  291. package/lib/mjs/components/tree/fixtures/comp2.d.ts +0 -116
  292. package/lib/mjs/components/tree/fixtures/comp2.js +0 -80
  293. package/lib/mjs/components/tree/fixtures/comp3.d.ts +0 -24
  294. package/lib/mjs/components/tree/fixtures/comp3.js +0 -23
  295. package/lib/mjs/components/tree/fixtures/comp4.d.ts +0 -42
  296. package/lib/mjs/components/tree/fixtures/comp4.js +0 -45
  297. package/lib/mjs/components/tree/fixtures/index.d.ts +0 -5
  298. package/lib/mjs/components/tree/fixtures/index.js +0 -5
  299. package/lib/mjs/validator/Rules.d.ts +0 -53
  300. package/lib/mjs/validator/Rules.js +0 -17
  301. package/lib/mjs/validator/Validator.d.ts +0 -228
  302. package/lib/mjs/validator/Validator.js +0 -1103
  303. package/lib/mjs/validator/conjunctions/index.d.ts +0 -7
  304. package/lib/mjs/validator/conjunctions/index.js +0 -16
  305. package/lib/mjs/validator/operators/index.d.ts +0 -7
  306. package/lib/mjs/validator/operators/index.js +0 -16
  307. package/lib/mjs/validator/quickRules/index.d.ts +0 -7
  308. package/lib/mjs/validator/quickRules/index.js +0 -16
  309. package/lib/mjs/validator/rules/Custom.d.ts +0 -5
  310. package/lib/mjs/validator/rules/Custom.js +0 -21
  311. package/lib/mjs/validator/rules/Date.d.ts +0 -5
  312. package/lib/mjs/validator/rules/Date.js +0 -16
  313. package/lib/mjs/validator/rules/Day.d.ts +0 -5
  314. package/lib/mjs/validator/rules/Day.js +0 -49
  315. package/lib/mjs/validator/rules/Email.d.ts +0 -5
  316. package/lib/mjs/validator/rules/Email.js +0 -15
  317. package/lib/mjs/validator/rules/JSON.d.ts +0 -5
  318. package/lib/mjs/validator/rules/JSON.js +0 -20
  319. package/lib/mjs/validator/rules/Mask.d.ts +0 -5
  320. package/lib/mjs/validator/rules/Mask.js +0 -23
  321. package/lib/mjs/validator/rules/Max.d.ts +0 -5
  322. package/lib/mjs/validator/rules/Max.js +0 -12
  323. package/lib/mjs/validator/rules/MaxDate.d.ts +0 -5
  324. package/lib/mjs/validator/rules/MaxDate.js +0 -25
  325. package/lib/mjs/validator/rules/MaxLength.d.ts +0 -5
  326. package/lib/mjs/validator/rules/MaxLength.js +0 -11
  327. package/lib/mjs/validator/rules/MaxWords.d.ts +0 -5
  328. package/lib/mjs/validator/rules/MaxWords.js +0 -11
  329. package/lib/mjs/validator/rules/MaxYear.d.ts +0 -5
  330. package/lib/mjs/validator/rules/MaxYear.js +0 -13
  331. package/lib/mjs/validator/rules/Min.d.ts +0 -5
  332. package/lib/mjs/validator/rules/Min.js +0 -12
  333. package/lib/mjs/validator/rules/MinDate.d.ts +0 -5
  334. package/lib/mjs/validator/rules/MinDate.js +0 -21
  335. package/lib/mjs/validator/rules/MinLength.d.ts +0 -5
  336. package/lib/mjs/validator/rules/MinLength.js +0 -11
  337. package/lib/mjs/validator/rules/MinWords.d.ts +0 -5
  338. package/lib/mjs/validator/rules/MinWords.js +0 -11
  339. package/lib/mjs/validator/rules/MinYear.d.ts +0 -5
  340. package/lib/mjs/validator/rules/MinYear.js +0 -13
  341. package/lib/mjs/validator/rules/Pattern.d.ts +0 -5
  342. package/lib/mjs/validator/rules/Pattern.js +0 -11
  343. package/lib/mjs/validator/rules/Required.d.ts +0 -5
  344. package/lib/mjs/validator/rules/Required.js +0 -8
  345. package/lib/mjs/validator/rules/Rule.d.ts +0 -7
  346. package/lib/mjs/validator/rules/Rule.js +0 -9
  347. package/lib/mjs/validator/rules/Select.d.ts +0 -5
  348. package/lib/mjs/validator/rules/Select.js +0 -86
  349. package/lib/mjs/validator/rules/Time.d.ts +0 -5
  350. package/lib/mjs/validator/rules/Time.js +0 -10
  351. package/lib/mjs/validator/rules/Unique.d.ts +0 -5
  352. package/lib/mjs/validator/rules/Unique.js +0 -60
  353. package/lib/mjs/validator/rules/Url.d.ts +0 -5
  354. package/lib/mjs/validator/rules/Url.js +0 -14
  355. package/lib/mjs/validator/rules/index.d.ts +0 -47
  356. package/lib/mjs/validator/rules/index.js +0 -46
  357. package/lib/mjs/validator/transformers/index.d.ts +0 -7
  358. package/lib/mjs/validator/transformers/index.js +0 -16
  359. package/lib/mjs/validator/valueSources/index.d.ts +0 -7
  360. package/lib/mjs/validator/valueSources/index.js +0 -16
@@ -31,9 +31,9 @@ const vanilla_text_mask_1 = require("@formio/vanilla-text-mask");
31
31
  const tippy_js_1 = __importDefault(require("tippy.js"));
32
32
  const lodash_1 = __importDefault(require("lodash"));
33
33
  const ismobilejs_1 = __importDefault(require("ismobilejs"));
34
+ const core_1 = require("@formio/core");
34
35
  const Formio_1 = require("../../../Formio");
35
36
  const FormioUtils = __importStar(require("../../../utils/utils"));
36
- const Validator_1 = __importDefault(require("../../../validator/Validator"));
37
37
  const utils_1 = require("../../../utils/utils");
38
38
  const Element_1 = __importDefault(require("../../../Element"));
39
39
  const ComponentModal_1 = __importDefault(require("../componentModal/ComponentModal"));
@@ -191,15 +191,6 @@ class Component extends Element_1.default {
191
191
  addons: [],
192
192
  }, ...sources);
193
193
  }
194
- /**
195
- * Return the validator as part of the component.
196
- *
197
- * @return {ValidationChecker}
198
- * @constructor
199
- */
200
- static get Validator() {
201
- return Validator_1.default;
202
- }
203
194
  /**
204
195
  * Return the simple condition settings as part of the component.
205
196
  *
@@ -269,16 +260,21 @@ class Component extends Element_1.default {
269
260
  this.options.components[component.type]) {
270
261
  lodash_1.default.merge(component, this.options.components[component.type]);
271
262
  }
272
- /**
273
- * Set the validator instance.
274
- */
275
- this.validator = Validator_1.default;
276
263
  /**
277
264
  * The data path to this specific component instance.
278
265
  *
279
266
  * @type {string}
280
267
  */
281
- this.path = '';
268
+ this.path = (component === null || component === void 0 ? void 0 : component.key) || '';
269
+ /**
270
+ * An array of all the children components errors.
271
+ */
272
+ this.childErrors = [];
273
+ /**
274
+ * Last validation errors that have occured.
275
+ */
276
+ this._errors = [];
277
+ this._visibleErrors = [];
282
278
  /**
283
279
  * The Form.io component JSON schema.
284
280
  * @type {*}
@@ -302,11 +298,6 @@ class Component extends Element_1.default {
302
298
  * @type {*}
303
299
  */
304
300
  this._data = data || {};
305
- /**
306
- * The existing error that this component has.
307
- * @type {string}
308
- */
309
- this.error = '';
310
301
  /**
311
302
  * Tool tip text after processing
312
303
  * @type {string}
@@ -317,6 +308,12 @@ class Component extends Element_1.default {
317
308
  * @type {number}
318
309
  */
319
310
  this.row = this.options.row;
311
+ /**
312
+ * Points to a flat map of child components (if applicable).
313
+ *
314
+ * @type {Object}
315
+ */
316
+ this.childComponentsMap = {};
320
317
  /**
321
318
  * Determines if this component is disabled, or not.
322
319
  *
@@ -328,8 +325,8 @@ class Component extends Element_1.default {
328
325
  *
329
326
  * @type {Component}
330
327
  */
331
- this.root = this.options.root;
332
- this.localRoot = this.options.localRoot;
328
+ this.root = this.options.root || this;
329
+ this.localRoot = this.options.localRoot || this;
333
330
  /**
334
331
  * If this input has been input and provided value.
335
332
  *
@@ -343,14 +340,7 @@ class Component extends Element_1.default {
343
340
  */
344
341
  this.parent = this.options.parent;
345
342
  this.options.name = this.options.name || 'data';
346
- /**
347
- * The validators that are assigned to this component.
348
- * @type {[string]}
349
- */
350
- this.validators = ['required', 'minLength', 'maxLength', 'minWords', 'maxWords', 'custom', 'pattern', 'json', 'mask'];
351
343
  this._path = '';
352
- // Nested forms don't have parents so we need to pass their path in.
353
- this._parentPath = this.options.parentPath || '';
354
344
  // Needs for Nextgen Rules Engine
355
345
  this.resetCaches();
356
346
  /**
@@ -450,6 +440,15 @@ class Component extends Element_1.default {
450
440
  }
451
441
  }
452
442
  /* eslint-enable max-statements */
443
+ get componentsMap() {
444
+ var _a;
445
+ if ((_a = this.localRoot) === null || _a === void 0 ? void 0 : _a.childComponentsMap) {
446
+ return this.localRoot.childComponentsMap;
447
+ }
448
+ const localMap = {};
449
+ localMap[this.path] = this;
450
+ return localMap;
451
+ }
453
452
  get data() {
454
453
  return this._data;
455
454
  }
@@ -683,7 +682,7 @@ class Component extends Element_1.default {
683
682
  const isRightAlign = this.rightDirection(this.labelPositions[1]);
684
683
  let contentMargin = '';
685
684
  if (this.component.hideLabel) {
686
- const margin = this.labelWidth + this.labelMargin;
685
+ const margin = isCondensed ? 0 : this.labelWidth + this.labelMargin;
687
686
  contentMargin = isRightPosition ? `margin-right: ${margin}%` : '';
688
687
  contentMargin = isLeftPosition ? `margin-left: ${margin}%` : '';
689
688
  }
@@ -765,9 +764,9 @@ class Component extends Element_1.default {
765
764
  if (text in en_1.default && params._userInput) {
766
765
  return text;
767
766
  }
768
- params.data = this.rootValue;
769
- params.row = this.data;
770
- params.component = this.component;
767
+ params.data = params.data || this.rootValue;
768
+ params.row = params.row || this.data;
769
+ params.component = params.component || this.component;
771
770
  return super.t(text, params, ...args);
772
771
  }
773
772
  labelIsHidden() {
@@ -885,8 +884,7 @@ class Component extends Element_1.default {
885
884
  */
886
885
  sanitize(dirty, forceSanitize, options) {
887
886
  var _a;
888
- // No need to sanitize when generating PDF'S since no users interact with the form.
889
- if ((!this.shouldSanitizeValue && !forceSanitize) || ((this.options.pdf) && !forceSanitize)) {
887
+ if (!this.shouldSanitizeValue && !forceSanitize) {
890
888
  return dirty;
891
889
  }
892
890
  return FormioUtils.sanitize(dirty, {
@@ -1011,17 +1009,13 @@ class Component extends Element_1.default {
1011
1009
  getModalPreviewTemplate() {
1012
1010
  var _a;
1013
1011
  const dataValue = this.component.type === 'password' ? this.dataValue.replace(/./g, '•') : this.dataValue;
1014
- const message = this.error ? {
1015
- level: 'error',
1016
- message: this.error.message,
1017
- } : '';
1018
1012
  let modalLabel;
1019
1013
  if (this.hasInput && ((_a = this.component.validate) === null || _a === void 0 ? void 0 : _a.required) && !this.isPDFReadOnlyMode) {
1020
1014
  modalLabel = { className: 'field-required' };
1021
1015
  }
1022
1016
  return this.renderTemplate('modalPreview', {
1023
1017
  previewText: this.getValueAsString(dataValue, { modalPreview: true }) || this.t('Click to set value'),
1024
- messages: message && this.renderTemplate('message', message),
1018
+ messages: '',
1025
1019
  labelInfo: modalLabel,
1026
1020
  });
1027
1021
  }
@@ -1510,6 +1504,12 @@ class Component extends Element_1.default {
1510
1504
  get name() {
1511
1505
  return this.t(this.component.label || this.component.placeholder || this.key, { _userInput: true });
1512
1506
  }
1507
+ get visibleErrors() {
1508
+ return this._visibleErrors;
1509
+ }
1510
+ get errors() {
1511
+ return this._errors;
1512
+ }
1513
1513
  /**
1514
1514
  * Returns the error label for this component.
1515
1515
  * @return {*}
@@ -1831,7 +1831,7 @@ class Component extends Element_1.default {
1831
1831
  if (message.message && typeof message.message === 'string') {
1832
1832
  message.message = message.message.replaceAll('<', '&lt;').replaceAll('>', '&gt;');
1833
1833
  }
1834
- return this.renderTemplate('message', message);
1834
+ return this.renderTemplate('message', Object.assign({}, message));
1835
1835
  }).join(''));
1836
1836
  }
1837
1837
  }
@@ -1904,7 +1904,7 @@ class Component extends Element_1.default {
1904
1904
  this.addClass(this.getElement(), 'formio-modified');
1905
1905
  }
1906
1906
  // If we are supposed to validate on blur, then don't trigger validation yet.
1907
- if (this.component.validateOn === 'blur' && !this.errors.length) {
1907
+ if (this.component.validateOn === 'blur') {
1908
1908
  flags.noValidate = true;
1909
1909
  }
1910
1910
  if (this.component.onChange) {
@@ -2421,6 +2421,10 @@ class Component extends Element_1.default {
2421
2421
  */
2422
2422
  updateOnChange(flags = {}, changed = false) {
2423
2423
  if (!flags.noUpdateEvent && changed) {
2424
+ if (flags.fromSubmission) {
2425
+ // Reset the errors when a submission has been made and allow it to revalidate.
2426
+ this._errors = [];
2427
+ }
2424
2428
  this.triggerChange(flags);
2425
2429
  return true;
2426
2430
  }
@@ -2588,7 +2592,21 @@ class Component extends Element_1.default {
2588
2592
  if (!this.hasInput || (!dirty && this.pristine)) {
2589
2593
  return '';
2590
2594
  }
2591
- return lodash_1.default.map(Validator_1.default.checkComponent(this, data), 'message').join('\n\n');
2595
+ const validationScope = { errors: [] };
2596
+ (0, core_1.processOneSync)({
2597
+ component: this.component,
2598
+ data,
2599
+ row,
2600
+ path: this.path || this.component.key,
2601
+ scope: validationScope,
2602
+ instance: this,
2603
+ processors: [
2604
+ core_1.validateProcessSync
2605
+ ]
2606
+ });
2607
+ const errors = validationScope.errors;
2608
+ const interpolatedErrors = FormioUtils.interpolateErrors(this.component, errors, this.t.bind(this));
2609
+ return lodash_1.default.map(interpolatedErrors, 'message').join('\n\n');
2592
2610
  }
2593
2611
  /**
2594
2612
  * Returns if the component is valid or not.
@@ -2600,15 +2618,83 @@ class Component extends Element_1.default {
2600
2618
  isValid(data, dirty) {
2601
2619
  return !this.invalidMessage(data, dirty);
2602
2620
  }
2603
- setComponentValidity(messages, dirty, silentCheck) {
2604
- const hasErrors = !!messages.filter(message => message.level === 'error' && !message.fromServer).length;
2605
- if (messages.length && (!silentCheck || this.error) && (!this.isEmpty(this.defaultValue) || dirty || !this.pristine)) {
2606
- this.setCustomValidity(messages, dirty);
2621
+ setComponentValidity(errors, dirty, silentCheck) {
2622
+ if (silentCheck) {
2623
+ return [];
2607
2624
  }
2608
- else if (!silentCheck) {
2609
- this.setCustomValidity('');
2625
+ const messages = errors.filter(message => !message.fromServer);
2626
+ if (errors.length && !!messages.length && (!this.isEmpty(this.defaultValue) || dirty || !this.pristine)) {
2627
+ return this.setCustomValidity(messages, dirty);
2628
+ }
2629
+ else {
2630
+ return this.setCustomValidity('');
2610
2631
  }
2611
- return !hasErrors;
2632
+ }
2633
+ /**
2634
+ * Interpolate errors from the validation methods.
2635
+ * @param {*} errors
2636
+ * @returns
2637
+ */
2638
+ interpolateErrors(errors) {
2639
+ var _a;
2640
+ const interpolatedErrors = FormioUtils.interpolateErrors(this.component, errors, this.t.bind(this));
2641
+ return ((_a = this.serverErrors) === null || _a === void 0 ? void 0 : _a.length) ? [...interpolatedErrors, ...this.serverErrors] : interpolatedErrors;
2642
+ }
2643
+ /**
2644
+ * Show component validation errors.
2645
+ * @param {*} errors - An array of errors that have occured.
2646
+ * @param {*} data - The root submission data.
2647
+ * @param {*} row - The contextual row data.
2648
+ * @param {*} flags - The flags to perform validation.
2649
+ * @returns
2650
+ */
2651
+ showValidationErrors(errors, data, row, flags) {
2652
+ if (flags.silentCheck) {
2653
+ return [];
2654
+ }
2655
+ if (this.options.alwaysDirty) {
2656
+ flags.dirty = true;
2657
+ }
2658
+ if (flags.fromSubmission && this.hasValue(data)) {
2659
+ flags.dirty = true;
2660
+ }
2661
+ this.setDirty(flags.dirty);
2662
+ return this.setComponentValidity(errors, flags.dirty, flags.silentCheck, flags.fromSubmission);
2663
+ }
2664
+ /**
2665
+ * Perform a component validation.
2666
+ * @param {*} data - The root data you wish to use for this component.
2667
+ * @param {*} row - The contextual row data you wish to use for this component.
2668
+ * @param {*} flags - The flags to control the behavior of the validation.
2669
+ * @returns
2670
+ */
2671
+ validateComponent(data, row, flags = {}) {
2672
+ data = data || this.rootValue;
2673
+ row = row || this.data;
2674
+ const { async = false } = flags;
2675
+ if (this.shouldSkipValidation(data, row, flags)) {
2676
+ return async ? Promise.resolve([]) : [];
2677
+ }
2678
+ const processContext = {
2679
+ component: this.component,
2680
+ data,
2681
+ row,
2682
+ path: this.path || this.component.key,
2683
+ instance: this,
2684
+ scope: { errors: [] },
2685
+ processors: [
2686
+ async ? core_1.validateProcess : core_1.validateProcessSync
2687
+ ]
2688
+ };
2689
+ if (async) {
2690
+ return (0, core_1.processOne)(processContext).then(() => {
2691
+ this._errors = this.interpolateErrors(processContext.scope.errors);
2692
+ return this._errors;
2693
+ });
2694
+ }
2695
+ (0, core_1.processOneSync)(processContext);
2696
+ this._errors = this.interpolateErrors(processContext.scope.errors);
2697
+ return this._errors;
2612
2698
  }
2613
2699
  /**
2614
2700
  * Checks the validity of this component and sets the error message if it is invalid.
@@ -2618,33 +2704,47 @@ class Component extends Element_1.default {
2618
2704
  * @param row
2619
2705
  * @return {boolean}
2620
2706
  */
2621
- checkComponentValidity(data, dirty, row, options = {}) {
2622
- var _a;
2707
+ checkComponentValidity(data, dirty, row, flags = {}, allErrors = []) {
2623
2708
  data = data || this.rootValue;
2624
2709
  row = row || this.data;
2625
- const { async = false, silentCheck = false } = options;
2626
- if (this.shouldSkipValidation(data, dirty, row)) {
2627
- this.setCustomValidity('');
2628
- return async ? Promise.resolve(true) : true;
2710
+ flags.dirty = dirty || false;
2711
+ if (flags.async) {
2712
+ return this.validateComponent(data, row, flags).then((errors) => {
2713
+ allErrors.push(...errors);
2714
+ if (this.parent && this.parent.childErrors) {
2715
+ this.parent.childErrors.push(...errors);
2716
+ }
2717
+ this.showValidationErrors(errors, data, row, flags);
2718
+ return errors.length === 0;
2719
+ });
2629
2720
  }
2630
- const check = Validator_1.default.checkComponent(this, data, row, true, async);
2631
- let validations = check;
2632
- if ((_a = this.serverErrors) === null || _a === void 0 ? void 0 : _a.length) {
2633
- validations = check.concat(this.serverErrors);
2721
+ else {
2722
+ const errors = this.validateComponent(data, row, flags);
2723
+ this.showValidationErrors(errors, data, row, flags);
2724
+ allErrors.push(...errors);
2725
+ if (this.parent && this.parent.childErrors) {
2726
+ this.parent.childErrors.push(...errors);
2727
+ }
2728
+ return errors.length === 0;
2634
2729
  }
2635
- return async ?
2636
- validations.then((messages) => this.setComponentValidity(messages, dirty, silentCheck)) :
2637
- this.setComponentValidity(validations, dirty, silentCheck);
2638
2730
  }
2639
- checkValidity(data, dirty, row, silentCheck) {
2731
+ /**
2732
+ * Checks the validity of the component.
2733
+ * @param {*} data
2734
+ * @param {*} dirty
2735
+ * @param {*} row
2736
+ * @param {*} silentCheck
2737
+ * @returns
2738
+ */
2739
+ checkValidity(data, dirty, row, silentCheck, errors = []) {
2640
2740
  data = data || this.rootValue;
2641
2741
  row = row || this.data;
2642
- const isValid = this.checkComponentValidity(data, dirty, row, { silentCheck });
2643
- this.checkModal();
2644
- return isValid;
2742
+ console.log('Deprecation warning: Component.checkValidity() will be deprecated in 6.x version of renderer. Use Component.validateComponent instead.');
2743
+ return this.checkComponentValidity(data, dirty, row, { silentCheck }, errors);
2645
2744
  }
2646
- checkAsyncValidity(data, dirty, row, silentCheck) {
2647
- return Promise.resolve(this.checkComponentValidity(data, dirty, row, { async: true, silentCheck }));
2745
+ checkAsyncValidity(data, dirty, row, silentCheck, errors = []) {
2746
+ console.log('Deprecation warning: Component.checkAsyncValidity() will be deprecated in 6.x version of renderer. Use Component.validateComponent instead.');
2747
+ return this.checkComponentValidity(data, dirty, row, { async: true, silentCheck }, errors);
2648
2748
  }
2649
2749
  /**
2650
2750
  * Check the conditions, calculations, and validity of a single component and triggers an update if
@@ -2672,35 +2772,15 @@ class Component extends Element_1.default {
2672
2772
  if (this.id !== flags.triggeredComponentId) {
2673
2773
  this.calculateComponentValue(data, flags, row);
2674
2774
  }
2675
- if (flags.noValidate && !flags.validateOnInit && !flags.fromIframe) {
2676
- if (flags.fromSubmission && this.rootPristine && this.pristine && this.error && flags.changed) {
2677
- this.checkComponentValidity(data, !!this.options.alwaysDirty, row, true);
2678
- }
2679
- return true;
2680
- }
2681
- let isDirty = false;
2682
- // We need to set dirty if they explicitly set noValidate to false.
2683
- if (this.options.alwaysDirty || flags.dirty) {
2684
- isDirty = true;
2685
- }
2686
- // See if they explicitely set the values with setSubmission.
2687
- if (flags.fromSubmission && this.hasValue(data)) {
2688
- isDirty = true;
2689
- }
2690
- this.setDirty(isDirty);
2691
- if (this.component.validateOn === 'blur' && flags.fromSubmission) {
2692
- return true;
2693
- }
2694
- const isValid = this.checkComponentValidity(data, isDirty, row, flags);
2695
- this.checkModal();
2696
- return isValid;
2697
2775
  }
2698
- checkModal(isValid = true, dirty = false) {
2776
+ checkModal(errors = [], dirty = false) {
2777
+ const messages = errors.filter(error => !error.fromServer);
2778
+ const isValid = errors.length === 0;
2699
2779
  if (!this.component.modalEdit || !this.componentModal) {
2700
2780
  return;
2701
2781
  }
2702
2782
  if (dirty && !isValid) {
2703
- this.setErrorClasses([this.refs.openModal], dirty, !isValid, !!this.errors.length, this.refs.openModalWrapper);
2783
+ this.setErrorClasses([this.refs.openModal], dirty, !isValid, !!messages.length, this.refs.openModalWrapper);
2704
2784
  }
2705
2785
  else {
2706
2786
  this.clearErrorClasses(this.refs.openModalWrapper);
@@ -2724,9 +2804,6 @@ class Component extends Element_1.default {
2724
2804
  validateMultiple() {
2725
2805
  return true;
2726
2806
  }
2727
- get errors() {
2728
- return this.error ? [this.error] : [];
2729
- }
2730
2807
  clearErrorClasses(element = this.element) {
2731
2808
  this.removeClass(element, this.options.componentErrorClass);
2732
2809
  this.removeClass(element, 'alert alert-danger');
@@ -2773,12 +2850,14 @@ class Component extends Element_1.default {
2773
2850
  });
2774
2851
  });
2775
2852
  }
2853
+ // eslint-disable-next-line max-statements
2776
2854
  setCustomValidity(messages, dirty, external) {
2777
2855
  const inputRefs = this.isInputComponent ? this.refs.input || [] : null;
2778
2856
  if (typeof messages === 'string' && messages) {
2779
2857
  messages = {
2780
2858
  level: 'error',
2781
2859
  message: messages,
2860
+ component: this.component,
2782
2861
  };
2783
2862
  }
2784
2863
  if (!Array.isArray(messages)) {
@@ -2789,19 +2868,20 @@ class Component extends Element_1.default {
2789
2868
  messages = [];
2790
2869
  }
2791
2870
  }
2792
- const hasErrors = !!messages.filter(message => message.level === 'error').length;
2871
+ const errors = messages.filter(message => message.level === 'error');
2793
2872
  let invalidInputRefs = inputRefs;
2873
+ // Filter the invalid input refs in multiple components
2794
2874
  if (this.component.multiple) {
2795
- const inputRefsArray = Array.from(inputRefs);
2796
- inputRefsArray.forEach((input) => {
2875
+ const refsArray = Array.from(inputRefs);
2876
+ refsArray.forEach((input) => {
2797
2877
  this.setElementInvalid(this.performInputMapping(input), false);
2798
2878
  });
2799
- this.setInputWidgetErrorClasses(inputRefsArray, false);
2800
- invalidInputRefs = inputRefsArray.filter((ref) => {
2879
+ this.setInputWidgetErrorClasses(refsArray, false);
2880
+ invalidInputRefs = refsArray.filter((ref, index) => {
2801
2881
  var _a;
2802
2882
  return (_a = messages.some) === null || _a === void 0 ? void 0 : _a.call(messages, (msg) => {
2803
2883
  var _a;
2804
- return ((_a = msg === null || msg === void 0 ? void 0 : msg.context) === null || _a === void 0 ? void 0 : _a.input) === ref;
2884
+ return ((_a = msg === null || msg === void 0 ? void 0 : msg.context) === null || _a === void 0 ? void 0 : _a.index) === index;
2805
2885
  });
2806
2886
  });
2807
2887
  }
@@ -2809,40 +2889,32 @@ class Component extends Element_1.default {
2809
2889
  if (this.refs.messageContainer) {
2810
2890
  this.empty(this.refs.messageContainer);
2811
2891
  }
2812
- this.error = {
2892
+ this.emit('componentError', {
2893
+ instance: this,
2813
2894
  component: this.component,
2814
2895
  message: messages[0].message,
2815
2896
  messages,
2816
2897
  external: !!external,
2817
- };
2818
- this.emit('componentError', this.error);
2898
+ });
2819
2899
  this.addMessages(messages, dirty, invalidInputRefs);
2820
2900
  if (invalidInputRefs) {
2821
- this.setErrorClasses(invalidInputRefs, dirty, hasErrors, !!messages.length);
2901
+ this.setErrorClasses(invalidInputRefs, dirty, !!errors.length, !!messages.length);
2822
2902
  }
2823
2903
  }
2824
- else if (!this.error || (this.error && this.error.external === !!external)) {
2904
+ else if (!errors.length || (errors[0].external === !!external)) {
2825
2905
  if (this.refs.messageContainer) {
2826
2906
  this.empty(this.refs.messageContainer);
2827
2907
  }
2828
2908
  if (this.refs.modalMessageContainer) {
2829
2909
  this.empty(this.refs.modalMessageContainer);
2830
2910
  }
2831
- this.error = null;
2832
2911
  if (invalidInputRefs) {
2833
- this.setErrorClasses(invalidInputRefs, dirty, hasErrors, !!messages.length);
2912
+ this.setErrorClasses(invalidInputRefs, dirty, !!errors.length, !!messages.length);
2834
2913
  }
2835
2914
  this.clearErrorClasses();
2836
2915
  }
2837
- // if (!this.refs.input) {
2838
- // return;
2839
- // }
2840
- // this.refs.input.forEach(input => {
2841
- // input = this.performInputMapping(input);
2842
- // if (typeof input.setCustomValidity === 'function') {
2843
- // input.setCustomValidity(message, dirty);
2844
- // }
2845
- // });
2916
+ this._visibleErrors = messages;
2917
+ return messages;
2846
2918
  }
2847
2919
  /**
2848
2920
  * Determines if the value of this component is hidden from the user as if it is coming from the server, but is
@@ -2862,8 +2934,10 @@ class Component extends Element_1.default {
2862
2934
  }
2863
2935
  return (this.component.protected || !this.component.persistent || (this.component.persistent === 'client-only'));
2864
2936
  }
2865
- shouldSkipValidation(data, dirty, row) {
2937
+ shouldSkipValidation(data, row, flags = {}) {
2866
2938
  const rules = [
2939
+ // Do not validate if the flags say not too.
2940
+ () => flags.noValidate,
2867
2941
  // Do not check custom validation for empty data if it is not required
2868
2942
  () => this.component.validate.custom && !this.dataValue && !this.component.validate.required,
2869
2943
  // Force valid if component is read-only
@@ -6,6 +6,10 @@ declare const _default: {
6
6
  input: boolean;
7
7
  key: string;
8
8
  label: string;
9
+ templates: {
10
+ header: string;
11
+ row: string;
12
+ };
9
13
  components: ({
10
14
  type: string;
11
15
  key: string;
@@ -600,6 +604,7 @@ declare const _default: {
600
604
  multiple?: undefined;
601
605
  hideLabel?: undefined;
602
606
  })[];
607
+ tableView: boolean;
603
608
  defaultValue: {
604
609
  data: {
605
610
  rulesSettings: {
@@ -640,6 +645,9 @@ declare const _default: {
640
645
  }[];
641
646
  };
642
647
  input: boolean;
648
+ validate: {
649
+ required: boolean;
650
+ };
643
651
  })[];
644
652
  }[];
645
653
  export default _default;
@@ -14,6 +14,33 @@ exports.default = [
14
14
  input: true,
15
15
  key: 'addons',
16
16
  label: 'Addons',
17
+ templates: {
18
+ // eslint-disable-next-line quotes
19
+ header: `<div class="row">
20
+ <div class="col-6">{{ t(components[0].label) }}</div>
21
+ <div class="col-4">Settings</div>
22
+ </div>`,
23
+ // eslint-disable-next-line quotes
24
+ row: `<div class="row">
25
+ <div class="col-6">
26
+ {{ row.name.label }}
27
+ </div>
28
+ <div class="col-4 text-muted">
29
+ Click Edit to see addon's settings
30
+ </div>
31
+
32
+ {% if (!instance.options.readOnly && !instance.disabled) { %}
33
+ <div class="col-2">
34
+ <div class="btn-group pull-right">
35
+ <button class="btn btn-default btn-light btn-sm editRow"><i class="{{ iconClass('edit') }}"></i></button>
36
+ {% if (!instance.hasRemoveButtons || instance.hasRemoveButtons()) { %}
37
+ <button class="btn btn-danger btn-sm removeRow"><i class="{{ iconClass('trash') }}"></i></button>
38
+ {% } %}
39
+ </div>
40
+ </div>
41
+ {% } %}
42
+ </div>`,
43
+ },
17
44
  components: [
18
45
  {
19
46
  label: 'Name',
@@ -38,7 +65,10 @@ exports.default = [
38
65
  }));
39
66
  },
40
67
  },
41
- input: true
68
+ input: true,
69
+ validate: {
70
+ required: true,
71
+ },
42
72
  },
43
73
  ...addons_1.editForms,
44
74
  ]