@digigov/form 1.1.2 → 1.1.4-mobile

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 (727) hide show
  1. package/Field/FieldBase/index.js +103 -76
  2. package/Field/FieldBase.js.map +7 -0
  3. package/Field/FieldBaseContainer/index.js +29 -37
  4. package/Field/FieldBaseContainer.js.map +7 -0
  5. package/Field/FieldConditional/index.js +79 -53
  6. package/Field/FieldConditional.js.map +7 -0
  7. package/Field/index.js +89 -63
  8. package/Field/index.js.map +7 -0
  9. package/Field/types/index.js +1 -1
  10. package/Field/types.d.ts +4 -0
  11. package/Field/types.js.map +7 -0
  12. package/Field/utils/index.js +96 -85
  13. package/Field/utils.d.ts +1 -0
  14. package/Field/utils.js.map +7 -0
  15. package/FieldArray/FieldArray.stories/index.js +12 -6
  16. package/FieldArray/FieldArray.stories.d.ts +2 -2
  17. package/FieldArray/FieldArray.stories.js.map +7 -0
  18. package/FieldArray/__stories__/Default/index.js +87 -80
  19. package/FieldArray/__stories__/Default.d.ts +2 -2
  20. package/FieldArray/__stories__/Default.js.map +7 -0
  21. package/FieldArray/__stories__/WithExactLength/index.js +87 -80
  22. package/FieldArray/__stories__/WithExactLength.d.ts +2 -2
  23. package/FieldArray/__stories__/WithExactLength.js.map +7 -0
  24. package/FieldArray/index.d.ts +1 -0
  25. package/FieldArray/index.js +65 -59
  26. package/FieldArray/index.js.map +7 -0
  27. package/FieldArray/index.test.d.ts +1 -0
  28. package/FieldObject/index.d.ts +3 -0
  29. package/FieldObject/index.js +66 -52
  30. package/FieldObject/index.js.map +7 -0
  31. package/Fieldset/FieldsetWithContext/index.js +27 -31
  32. package/Fieldset/FieldsetWithContext.js.map +7 -0
  33. package/Fieldset/index.js +27 -29
  34. package/Fieldset/index.js.map +7 -0
  35. package/Fieldset/types/index.js +1 -1
  36. package/Fieldset/types.d.ts +2 -0
  37. package/Fieldset/types.js.map +7 -0
  38. package/Form.stories/index.js +7 -3
  39. package/Form.stories.js.map +7 -0
  40. package/FormBuilder/FormBuilder/index.js +123 -118
  41. package/FormBuilder/FormBuilder.d.ts +1 -0
  42. package/FormBuilder/FormBuilder.js.map +7 -0
  43. package/FormBuilder/FormBuilder.stories/index.js +10 -5
  44. package/FormBuilder/FormBuilder.stories.d.ts +1 -1
  45. package/FormBuilder/FormBuilder.stories.js.map +7 -0
  46. package/FormBuilder/__stories__/Default/index.js +27 -21
  47. package/FormBuilder/__stories__/Default.d.ts +2 -2
  48. package/FormBuilder/__stories__/Default.js.map +7 -0
  49. package/FormBuilder/index.js +6 -2
  50. package/FormBuilder/index.js.map +7 -0
  51. package/FormBuilder/index.test.d.ts +1 -0
  52. package/FormBuilder/scenarios.test.d.ts +88 -0
  53. package/FormContext/index.js +7 -3
  54. package/FormContext.js.map +7 -0
  55. package/MultiplicityField/MultiplicityField.stories/index.js +20 -10
  56. package/MultiplicityField/MultiplicityField.stories.d.ts +6 -6
  57. package/MultiplicityField/MultiplicityField.stories.js.map +7 -0
  58. package/MultiplicityField/__stories__/Default/index.js +90 -85
  59. package/MultiplicityField/__stories__/Default.d.ts +2 -2
  60. package/MultiplicityField/__stories__/Default.js.map +7 -0
  61. package/MultiplicityField/__stories__/PreviewDisplay/index.js +70 -72
  62. package/MultiplicityField/__stories__/PreviewDisplay.d.ts +2 -2
  63. package/MultiplicityField/__stories__/PreviewDisplay.js.map +7 -0
  64. package/MultiplicityField/__stories__/WithExactLength/index.js +87 -80
  65. package/MultiplicityField/__stories__/WithExactLength.d.ts +2 -2
  66. package/MultiplicityField/__stories__/WithExactLength.js.map +7 -0
  67. package/MultiplicityField/__stories__/WithMaxLength/index.js +90 -83
  68. package/MultiplicityField/__stories__/WithMaxLength.d.ts +2 -2
  69. package/MultiplicityField/__stories__/WithMaxLength.js.map +7 -0
  70. package/MultiplicityField/__stories__/WithMinAndMaxLength/index.js +91 -84
  71. package/MultiplicityField/__stories__/WithMinAndMaxLength.d.ts +2 -2
  72. package/MultiplicityField/__stories__/WithMinAndMaxLength.js.map +7 -0
  73. package/MultiplicityField/__stories__/WithMinLength/index.js +90 -83
  74. package/MultiplicityField/__stories__/WithMinLength.d.ts +2 -2
  75. package/MultiplicityField/__stories__/WithMinLength.js.map +7 -0
  76. package/MultiplicityField/add-objects/index.js +130 -132
  77. package/MultiplicityField/add-objects.d.ts +1 -0
  78. package/MultiplicityField/add-objects.js.map +7 -0
  79. package/MultiplicityField/index.d.ts +1 -1
  80. package/MultiplicityField/index.js +111 -101
  81. package/MultiplicityField/index.js.map +7 -0
  82. package/MultiplicityField/index.test.d.ts +1 -0
  83. package/Questions/Questions/index.js +44 -53
  84. package/Questions/Questions.js.map +7 -0
  85. package/Questions/Questions.stories/index.js +10 -5
  86. package/Questions/Questions.stories.d.ts +1 -1
  87. package/Questions/Questions.stories.js.map +7 -0
  88. package/Questions/QuestionsContext/index.js +9 -9
  89. package/Questions/QuestionsContext.js.map +7 -0
  90. package/Questions/Step/ReviewStep/index.js +35 -47
  91. package/Questions/Step/ReviewStep.js.map +7 -0
  92. package/Questions/Step/Step/index.js +39 -47
  93. package/Questions/Step/Step.js.map +7 -0
  94. package/Questions/Step/StepArrayReview/index.js +41 -45
  95. package/Questions/Step/StepArrayReview.js.map +7 -0
  96. package/Questions/Step/StepContext/index.js +15 -19
  97. package/Questions/Step/StepContext.js.map +7 -0
  98. package/Questions/Step/StepDescription/index.js +22 -22
  99. package/Questions/Step/StepDescription.js.map +7 -0
  100. package/Questions/Step/StepForm/index.js +33 -43
  101. package/Questions/Step/StepForm.js.map +7 -0
  102. package/Questions/Step/StepQuote/index.js +10 -9
  103. package/Questions/Step/StepQuote.js.map +7 -0
  104. package/Questions/Step/StepTitle/index.js +40 -38
  105. package/Questions/Step/StepTitle.d.ts +1 -0
  106. package/Questions/Step/StepTitle.js.map +7 -0
  107. package/Questions/Step/getAddMoreFields/index.js +28 -20
  108. package/Questions/Step/getAddMoreFields.js.map +7 -0
  109. package/Questions/Step/index.d.ts +0 -1
  110. package/Questions/Step/index.js +16 -13
  111. package/Questions/Step/index.js.map +7 -0
  112. package/Questions/Step/types/index.js +1 -1
  113. package/Questions/Step/types.d.ts +2 -0
  114. package/Questions/Step/types.js.map +7 -0
  115. package/Questions/__stories__/Default/index.js +106 -100
  116. package/Questions/__stories__/Default.d.ts +2 -2
  117. package/Questions/__stories__/Default.js.map +7 -0
  118. package/Questions/getNextStep/index.js +12 -10
  119. package/Questions/getNextStep.js.map +7 -0
  120. package/Questions/index.js +7 -3
  121. package/Questions/index.js.map +7 -0
  122. package/Questions/index.test.d.ts +1 -0
  123. package/Questions/types/index.js +1 -1
  124. package/Questions/types.d.ts +2 -0
  125. package/Questions/types.js.map +7 -0
  126. package/cjs/Field/FieldBase/index.js +135 -82
  127. package/cjs/Field/FieldBase.js.map +7 -0
  128. package/cjs/Field/FieldBaseContainer/index.js +61 -43
  129. package/cjs/Field/FieldBaseContainer.js.map +7 -0
  130. package/cjs/Field/FieldConditional/index.js +111 -59
  131. package/cjs/Field/FieldConditional.js.map +7 -0
  132. package/cjs/Field/index.js +121 -72
  133. package/cjs/Field/index.js.map +7 -0
  134. package/cjs/Field/types/index.js +16 -5
  135. package/cjs/Field/types.js.map +7 -0
  136. package/cjs/Field/utils/index.js +139 -106
  137. package/cjs/Field/utils.js.map +7 -0
  138. package/cjs/FieldArray/FieldArray.stories/index.js +46 -36
  139. package/cjs/FieldArray/FieldArray.stories.js.map +7 -0
  140. package/cjs/FieldArray/__stories__/Default/index.js +119 -89
  141. package/cjs/FieldArray/__stories__/Default.js.map +7 -0
  142. package/cjs/FieldArray/__stories__/WithExactLength/index.js +119 -89
  143. package/cjs/FieldArray/__stories__/WithExactLength.js.map +7 -0
  144. package/cjs/FieldArray/index.js +97 -65
  145. package/cjs/FieldArray/index.js.map +7 -0
  146. package/cjs/FieldObject/index.js +98 -61
  147. package/cjs/FieldObject/index.js.map +7 -0
  148. package/cjs/Fieldset/FieldsetWithContext/index.js +54 -40
  149. package/cjs/Fieldset/FieldsetWithContext.js.map +7 -0
  150. package/cjs/Fieldset/index.js +61 -39
  151. package/cjs/Fieldset/index.js.map +7 -0
  152. package/cjs/Fieldset/types/index.js +16 -5
  153. package/cjs/Fieldset/types.js.map +7 -0
  154. package/cjs/Form.stories/index.js +25 -8
  155. package/cjs/Form.stories.js.map +7 -0
  156. package/cjs/FormBuilder/FormBuilder/index.js +158 -128
  157. package/cjs/FormBuilder/FormBuilder.js.map +7 -0
  158. package/cjs/FormBuilder/FormBuilder.stories/index.js +43 -24
  159. package/cjs/FormBuilder/FormBuilder.stories.js.map +7 -0
  160. package/cjs/FormBuilder/__stories__/Default/index.js +60 -31
  161. package/cjs/FormBuilder/__stories__/Default.js.map +7 -0
  162. package/cjs/FormBuilder/index.js +24 -7
  163. package/cjs/FormBuilder/index.js.map +7 -0
  164. package/cjs/FormContext/index.js +29 -8
  165. package/cjs/FormContext.js.map +7 -0
  166. package/cjs/MultiplicityField/MultiplicityField.stories/index.js +58 -84
  167. package/cjs/MultiplicityField/MultiplicityField.stories.js.map +7 -0
  168. package/cjs/MultiplicityField/__stories__/Default/index.js +122 -94
  169. package/cjs/MultiplicityField/__stories__/Default.js.map +7 -0
  170. package/cjs/MultiplicityField/__stories__/PreviewDisplay/index.js +85 -81
  171. package/cjs/MultiplicityField/__stories__/PreviewDisplay.js.map +7 -0
  172. package/cjs/MultiplicityField/__stories__/WithExactLength/index.js +119 -89
  173. package/cjs/MultiplicityField/__stories__/WithExactLength.js.map +7 -0
  174. package/cjs/MultiplicityField/__stories__/WithMaxLength/index.js +122 -92
  175. package/cjs/MultiplicityField/__stories__/WithMaxLength.js.map +7 -0
  176. package/cjs/MultiplicityField/__stories__/WithMinAndMaxLength/index.js +123 -93
  177. package/cjs/MultiplicityField/__stories__/WithMinAndMaxLength.js.map +7 -0
  178. package/cjs/MultiplicityField/__stories__/WithMinLength/index.js +122 -92
  179. package/cjs/MultiplicityField/__stories__/WithMinLength.js.map +7 -0
  180. package/cjs/MultiplicityField/add-objects/index.js +160 -138
  181. package/cjs/MultiplicityField/add-objects.js.map +7 -0
  182. package/cjs/MultiplicityField/index.js +144 -110
  183. package/cjs/MultiplicityField/index.js.map +7 -0
  184. package/cjs/Questions/Questions/index.js +76 -62
  185. package/cjs/Questions/Questions.js.map +7 -0
  186. package/cjs/Questions/Questions.stories/index.js +43 -24
  187. package/cjs/Questions/Questions.stories.js.map +7 -0
  188. package/cjs/Questions/QuestionsContext/index.js +31 -14
  189. package/cjs/Questions/QuestionsContext.js.map +7 -0
  190. package/cjs/Questions/Step/ReviewStep/index.js +61 -56
  191. package/cjs/Questions/Step/ReviewStep.js.map +7 -0
  192. package/cjs/Questions/Step/Step/index.js +71 -56
  193. package/cjs/Questions/Step/Step.js.map +7 -0
  194. package/cjs/Questions/Step/StepArrayReview/index.js +65 -54
  195. package/cjs/Questions/Step/StepArrayReview.js.map +7 -0
  196. package/cjs/Questions/Step/StepContext/index.js +37 -24
  197. package/cjs/Questions/Step/StepContext.js.map +7 -0
  198. package/cjs/Questions/Step/StepDescription/index.js +55 -31
  199. package/cjs/Questions/Step/StepDescription.js.map +7 -0
  200. package/cjs/Questions/Step/StepForm/index.js +65 -52
  201. package/cjs/Questions/Step/StepForm.js.map +7 -0
  202. package/cjs/Questions/Step/StepQuote/index.js +42 -15
  203. package/cjs/Questions/Step/StepQuote.js.map +7 -0
  204. package/cjs/Questions/Step/StepTitle/index.js +72 -47
  205. package/cjs/Questions/Step/StepTitle.js.map +7 -0
  206. package/cjs/Questions/Step/getAddMoreFields/index.js +50 -25
  207. package/cjs/Questions/Step/getAddMoreFields.js.map +7 -0
  208. package/cjs/Questions/Step/index.js +59 -143
  209. package/cjs/Questions/Step/index.js.map +7 -0
  210. package/cjs/Questions/Step/types/index.js +16 -5
  211. package/cjs/Questions/Step/types.js.map +7 -0
  212. package/cjs/Questions/__stories__/Default/index.js +132 -109
  213. package/cjs/Questions/__stories__/Default.js.map +7 -0
  214. package/cjs/Questions/getNextStep/index.js +33 -14
  215. package/cjs/Questions/getNextStep.js.map +7 -0
  216. package/cjs/Questions/index.js +29 -19
  217. package/cjs/Questions/index.js.map +7 -0
  218. package/cjs/Questions/types/index.js +16 -5
  219. package/cjs/Questions/types.js.map +7 -0
  220. package/cjs/index.js +47 -20
  221. package/cjs/index.js.map +7 -0
  222. package/cjs/inputs/AutoCompleteInput/AutoComplete.stories/index.js +46 -24
  223. package/cjs/inputs/AutoCompleteInput/AutoComplete.stories.js.map +7 -0
  224. package/cjs/inputs/AutoCompleteInput/__stories__/Default/index.js +78 -51
  225. package/cjs/inputs/AutoCompleteInput/__stories__/Default.js.map +7 -0
  226. package/cjs/inputs/AutoCompleteInput/__stories__/Multiple/index.js +84 -0
  227. package/cjs/inputs/AutoCompleteInput/__stories__/Multiple.js.map +7 -0
  228. package/cjs/inputs/AutoCompleteInput/index.js +90 -46
  229. package/cjs/inputs/AutoCompleteInput/index.js.map +7 -0
  230. package/cjs/inputs/Checkboxes/Checkboxes.stories/index.js +49 -48
  231. package/cjs/inputs/Checkboxes/Checkboxes.stories.js.map +7 -0
  232. package/cjs/inputs/Checkboxes/__stories__/Conditional/index.js +120 -89
  233. package/cjs/inputs/Checkboxes/__stories__/Conditional.js.map +7 -0
  234. package/cjs/inputs/Checkboxes/__stories__/Default/index.js +73 -46
  235. package/cjs/inputs/Checkboxes/__stories__/Default.js.map +7 -0
  236. package/cjs/inputs/Checkboxes/__stories__/WithDivider/index.js +74 -47
  237. package/cjs/inputs/Checkboxes/__stories__/WithDivider.js.map +7 -0
  238. package/cjs/inputs/Checkboxes/index.js +102 -96
  239. package/cjs/inputs/Checkboxes/index.js.map +7 -0
  240. package/cjs/inputs/DateInput/DateInput.stories/index.js +43 -24
  241. package/cjs/inputs/DateInput/DateInput.stories.js.map +7 -0
  242. package/cjs/inputs/DateInput/__stories__/Default/index.js +56 -28
  243. package/cjs/inputs/DateInput/__stories__/Default.js.map +7 -0
  244. package/cjs/inputs/DateInput/index.js +122 -109
  245. package/cjs/inputs/DateInput/index.js.map +7 -0
  246. package/cjs/inputs/FileInput/FileInput.stories/index.js +43 -24
  247. package/cjs/inputs/FileInput/FileInput.stories.js.map +7 -0
  248. package/cjs/inputs/FileInput/__stories__/Default/index.js +57 -26
  249. package/cjs/inputs/FileInput/__stories__/Default.js.map +7 -0
  250. package/cjs/inputs/FileInput/index.js +76 -63
  251. package/cjs/inputs/FileInput/index.js.map +7 -0
  252. package/cjs/inputs/ImageInput/ImageInput.stories/index.js +49 -48
  253. package/cjs/inputs/ImageInput/ImageInput.stories.js.map +7 -0
  254. package/cjs/inputs/ImageInput/__stories__/Default/index.js +58 -33
  255. package/cjs/inputs/ImageInput/__stories__/Default.js.map +7 -0
  256. package/cjs/inputs/ImageInput/__stories__/WithInvalidImageDimension/index.js +65 -40
  257. package/cjs/inputs/ImageInput/__stories__/WithInvalidImageDimension.js.map +7 -0
  258. package/cjs/inputs/ImageInput/__stories__/WithInvalidImageSize/index.js +62 -37
  259. package/cjs/inputs/ImageInput/__stories__/WithInvalidImageSize.js.map +7 -0
  260. package/cjs/inputs/ImageInput/index.js +91 -83
  261. package/cjs/inputs/ImageInput/index.js.map +7 -0
  262. package/cjs/inputs/Input/Input.stories/index.js +70 -120
  263. package/cjs/inputs/Input/Input.stories.js.map +7 -0
  264. package/cjs/inputs/Input/__stories__/AFM/index.js +60 -29
  265. package/cjs/inputs/Input/__stories__/AFM.js.map +7 -0
  266. package/cjs/inputs/Input/__stories__/Boolean/index.js +61 -30
  267. package/cjs/inputs/Input/__stories__/Boolean.js.map +7 -0
  268. package/cjs/inputs/Input/__stories__/IBAN/index.js +61 -30
  269. package/cjs/inputs/Input/__stories__/IBAN.js.map +7 -0
  270. package/cjs/inputs/Input/__stories__/Integer/index.js +75 -38
  271. package/cjs/inputs/Input/__stories__/Integer.js.map +7 -0
  272. package/cjs/inputs/Input/__stories__/LandlineNumber/index.js +67 -0
  273. package/cjs/inputs/Input/__stories__/LandlineNumber.js.map +7 -0
  274. package/cjs/inputs/Input/__stories__/MobilePhone/index.js +64 -29
  275. package/cjs/inputs/Input/__stories__/MobilePhone.js.map +7 -0
  276. package/cjs/inputs/Input/__stories__/PhoneNumber/index.js +63 -29
  277. package/cjs/inputs/Input/__stories__/PhoneNumber.js.map +7 -0
  278. package/cjs/inputs/Input/__stories__/PostalCode/index.js +60 -31
  279. package/cjs/inputs/Input/__stories__/PostalCode.js.map +7 -0
  280. package/cjs/inputs/Input/__stories__/String/index.js +64 -0
  281. package/cjs/inputs/Input/__stories__/String.js.map +7 -0
  282. package/cjs/inputs/Input/__stories__/TextWithLimit/index.js +64 -0
  283. package/cjs/inputs/Input/__stories__/TextWithLimit.js.map +7 -0
  284. package/cjs/inputs/Input/index.js +87 -72
  285. package/cjs/inputs/Input/index.js.map +7 -0
  286. package/cjs/inputs/Input/inputsInputScenarios/index.js +439 -0
  287. package/cjs/inputs/Input/inputsInputScenarios.js.map +7 -0
  288. package/cjs/inputs/Label/Label.stories/index.js +43 -24
  289. package/cjs/inputs/Label/Label.stories.js.map +7 -0
  290. package/cjs/inputs/Label/__stories__/Default/index.js +66 -33
  291. package/cjs/inputs/Label/__stories__/Default.js.map +7 -0
  292. package/cjs/inputs/Label/index.js +45 -24
  293. package/cjs/inputs/Label/index.js.map +7 -0
  294. package/cjs/inputs/OtpInput/OtpInput.stories/index.js +43 -24
  295. package/cjs/inputs/OtpInput/OtpInput.stories.js.map +7 -0
  296. package/cjs/inputs/OtpInput/__stories__/Default/index.js +59 -34
  297. package/cjs/inputs/OtpInput/__stories__/Default.js.map +7 -0
  298. package/cjs/inputs/OtpInput/index.js +142 -112
  299. package/cjs/inputs/OtpInput/index.js.map +7 -0
  300. package/cjs/inputs/Radio/Radio.stories/index.js +49 -48
  301. package/cjs/inputs/Radio/Radio.stories.js.map +7 -0
  302. package/cjs/inputs/Radio/__stories__/Conditional/index.js +120 -89
  303. package/cjs/inputs/Radio/__stories__/Conditional.js.map +7 -0
  304. package/cjs/inputs/Radio/__stories__/Default/index.js +77 -51
  305. package/cjs/inputs/Radio/__stories__/Default.js.map +7 -0
  306. package/cjs/inputs/Radio/__stories__/WithDivider/index.js +78 -52
  307. package/cjs/inputs/Radio/__stories__/WithDivider.js.map +7 -0
  308. package/cjs/inputs/Radio/index.js +132 -61
  309. package/cjs/inputs/Radio/index.js.map +7 -0
  310. package/cjs/inputs/Select/Select.stories/index.js +43 -24
  311. package/cjs/inputs/Select/Select.stories.js.map +7 -0
  312. package/cjs/inputs/Select/__stories__/Default/index.js +82 -57
  313. package/cjs/inputs/Select/__stories__/Default.js.map +7 -0
  314. package/cjs/inputs/Select/index.js +55 -36
  315. package/cjs/inputs/Select/index.js.map +7 -0
  316. package/cjs/inputs/index.js +62 -69
  317. package/cjs/inputs/index.js.map +7 -0
  318. package/cjs/inputs/inputsScenarios/index.js +540 -0
  319. package/cjs/inputs/inputsScenarios.js.map +7 -0
  320. package/cjs/internal/index.js +116 -346
  321. package/cjs/internal.js.map +7 -0
  322. package/cjs/lazy/index.js +93 -0
  323. package/cjs/lazy.js.map +7 -0
  324. package/cjs/locales/el/index.js +35 -0
  325. package/cjs/locales/el.js.map +7 -0
  326. package/cjs/registry/index.js +174 -142
  327. package/cjs/registry.js.map +7 -0
  328. package/cjs/types/index.js +16 -5
  329. package/cjs/types.js.map +7 -0
  330. package/cjs/utils/index.js +78 -83
  331. package/cjs/utils.js.map +7 -0
  332. package/cjs/validators/index.js +130 -128
  333. package/cjs/validators/index.js.map +7 -0
  334. package/cjs/validators/types/index.js +16 -5
  335. package/cjs/validators/types.js.map +7 -0
  336. package/cjs/validators/utils/afm/index.js +38 -21
  337. package/cjs/validators/utils/afm.js.map +7 -0
  338. package/cjs/validators/utils/file/index.js +44 -47
  339. package/cjs/validators/utils/file.js.map +7 -0
  340. package/cjs/validators/utils/iban/index.js +36 -17
  341. package/cjs/validators/utils/iban.js.map +7 -0
  342. package/cjs/validators/utils/image/index.js +88 -112
  343. package/cjs/validators/utils/image.js.map +7 -0
  344. package/cjs/validators/utils/index.js +95 -159
  345. package/cjs/validators/utils/index.js.map +7 -0
  346. package/cjs/validators/utils/int/index.js +34 -12
  347. package/cjs/validators/utils/int.js.map +7 -0
  348. package/cjs/validators/utils/number/index.js +33 -11
  349. package/cjs/validators/utils/number.js.map +7 -0
  350. package/cjs/validators/utils/otp/index.js +35 -13
  351. package/cjs/validators/utils/otp.js.map +7 -0
  352. package/cjs/validators/utils/phone/index.js +171 -92
  353. package/cjs/validators/utils/phone.js.map +7 -0
  354. package/cjs/validators/utils/postal_code/index.js +36 -16
  355. package/cjs/validators/utils/postal_code.js.map +7 -0
  356. package/cjs/validators/utils/text_limit/index.js +40 -25
  357. package/cjs/validators/utils/text_limit.js.map +7 -0
  358. package/cjs/validators/utils/uuid4/index.js +34 -13
  359. package/cjs/validators/utils/uuid4.js.map +7 -0
  360. package/index.d.ts +4 -1
  361. package/index.js +13 -4
  362. package/index.js.map +7 -0
  363. package/inputs/AutoCompleteInput/AutoComplete.stories/index.js +12 -5
  364. package/inputs/AutoCompleteInput/AutoComplete.stories.d.ts +2 -1
  365. package/inputs/AutoCompleteInput/AutoComplete.stories.js.map +7 -0
  366. package/inputs/AutoCompleteInput/__stories__/Default/index.js +46 -42
  367. package/inputs/AutoCompleteInput/__stories__/Default.d.ts +3 -2
  368. package/inputs/AutoCompleteInput/__stories__/Default.js.map +7 -0
  369. package/inputs/AutoCompleteInput/__stories__/Multiple/index.js +51 -0
  370. package/inputs/AutoCompleteInput/__stories__/Multiple/package.json +6 -0
  371. package/inputs/AutoCompleteInput/__stories__/Multiple.d.ts +3 -0
  372. package/inputs/AutoCompleteInput/__stories__/Multiple.js.map +7 -0
  373. package/inputs/AutoCompleteInput/index.d.ts +1 -1
  374. package/inputs/AutoCompleteInput/index.js +58 -37
  375. package/inputs/AutoCompleteInput/index.js.map +7 -0
  376. package/inputs/AutoCompleteInput/index.test.d.ts +1 -0
  377. package/inputs/Checkboxes/Checkboxes.stories/index.js +14 -7
  378. package/inputs/Checkboxes/Checkboxes.stories.d.ts +3 -3
  379. package/inputs/Checkboxes/Checkboxes.stories.js.map +7 -0
  380. package/inputs/Checkboxes/__stories__/Conditional/index.js +88 -80
  381. package/inputs/Checkboxes/__stories__/Conditional.d.ts +3 -2
  382. package/inputs/Checkboxes/__stories__/Conditional.js.map +7 -0
  383. package/inputs/Checkboxes/__stories__/Default/index.js +40 -36
  384. package/inputs/Checkboxes/__stories__/Default.d.ts +2 -2
  385. package/inputs/Checkboxes/__stories__/Default.js.map +7 -0
  386. package/inputs/Checkboxes/__stories__/WithDivider/index.js +41 -37
  387. package/inputs/Checkboxes/__stories__/WithDivider.d.ts +2 -2
  388. package/inputs/Checkboxes/__stories__/WithDivider.js.map +7 -0
  389. package/inputs/Checkboxes/index.js +70 -87
  390. package/inputs/Checkboxes/index.js.map +7 -0
  391. package/inputs/Checkboxes/index.test.d.ts +1 -0
  392. package/inputs/DateInput/DateInput.stories/index.js +10 -5
  393. package/inputs/DateInput/DateInput.stories.d.ts +1 -1
  394. package/inputs/DateInput/DateInput.stories.js.map +7 -0
  395. package/inputs/DateInput/__stories__/Default/index.js +23 -18
  396. package/inputs/DateInput/__stories__/Default.d.ts +2 -2
  397. package/inputs/DateInput/__stories__/Default.js.map +7 -0
  398. package/inputs/DateInput/index.d.ts +2 -2
  399. package/inputs/DateInput/index.js +89 -99
  400. package/inputs/DateInput/index.js.map +7 -0
  401. package/inputs/DateInput/index.test.d.ts +1 -0
  402. package/inputs/FileInput/FileInput.stories/index.js +10 -5
  403. package/inputs/FileInput/FileInput.stories.d.ts +1 -1
  404. package/inputs/FileInput/FileInput.stories.js.map +7 -0
  405. package/inputs/FileInput/__stories__/Default/index.js +24 -16
  406. package/inputs/FileInput/__stories__/Default.d.ts +2 -2
  407. package/inputs/FileInput/__stories__/Default.js.map +7 -0
  408. package/inputs/FileInput/index.js +44 -54
  409. package/inputs/FileInput/index.js.map +7 -0
  410. package/inputs/FileInput/index.test.d.ts +1 -0
  411. package/inputs/ImageInput/ImageInput.stories/index.js +14 -7
  412. package/inputs/ImageInput/ImageInput.stories.d.ts +3 -3
  413. package/inputs/ImageInput/ImageInput.stories.js.map +7 -0
  414. package/inputs/ImageInput/__stories__/Default/index.js +25 -23
  415. package/inputs/ImageInput/__stories__/Default.d.ts +2 -2
  416. package/inputs/ImageInput/__stories__/Default.js.map +7 -0
  417. package/inputs/ImageInput/__stories__/WithInvalidImageDimension/index.js +32 -30
  418. package/inputs/ImageInput/__stories__/WithInvalidImageDimension.d.ts +2 -2
  419. package/inputs/ImageInput/__stories__/WithInvalidImageDimension.js.map +7 -0
  420. package/inputs/ImageInput/__stories__/WithInvalidImageSize/index.js +29 -27
  421. package/inputs/ImageInput/__stories__/WithInvalidImageSize.d.ts +2 -2
  422. package/inputs/ImageInput/__stories__/WithInvalidImageSize.js.map +7 -0
  423. package/inputs/ImageInput/index.js +59 -75
  424. package/inputs/ImageInput/index.js.map +7 -0
  425. package/inputs/ImageInput/index.test.d.ts +1 -0
  426. package/inputs/Input/Input.stories/index.js +28 -13
  427. package/inputs/Input/Input.stories.d.ts +10 -9
  428. package/inputs/Input/Input.stories.js.map +7 -0
  429. package/inputs/Input/__stories__/AFM/index.js +27 -19
  430. package/inputs/Input/__stories__/AFM.d.ts +2 -2
  431. package/inputs/Input/__stories__/AFM.js.map +7 -0
  432. package/inputs/Input/__stories__/Boolean/index.js +28 -20
  433. package/inputs/Input/__stories__/Boolean.d.ts +2 -2
  434. package/inputs/Input/__stories__/Boolean.js.map +7 -0
  435. package/inputs/Input/__stories__/IBAN/index.js +28 -20
  436. package/inputs/Input/__stories__/IBAN.d.ts +2 -2
  437. package/inputs/Input/__stories__/IBAN.js.map +7 -0
  438. package/inputs/Input/__stories__/Integer/index.js +43 -29
  439. package/inputs/Input/__stories__/Integer.d.ts +2 -2
  440. package/inputs/Input/__stories__/Integer.js.map +7 -0
  441. package/inputs/Input/__stories__/LandlineNumber/index.js +34 -0
  442. package/inputs/Input/__stories__/LandlineNumber/package.json +6 -0
  443. package/inputs/Input/__stories__/LandlineNumber.d.ts +3 -0
  444. package/inputs/Input/__stories__/LandlineNumber.js.map +7 -0
  445. package/inputs/Input/__stories__/MobilePhone/index.js +31 -19
  446. package/inputs/Input/__stories__/MobilePhone.d.ts +2 -2
  447. package/inputs/Input/__stories__/MobilePhone.js.map +7 -0
  448. package/inputs/Input/__stories__/PhoneNumber/index.js +30 -19
  449. package/inputs/Input/__stories__/PhoneNumber.d.ts +2 -2
  450. package/inputs/Input/__stories__/PhoneNumber.js.map +7 -0
  451. package/inputs/Input/__stories__/PostalCode/index.js +27 -21
  452. package/inputs/Input/__stories__/PostalCode.d.ts +2 -2
  453. package/inputs/Input/__stories__/PostalCode.js.map +7 -0
  454. package/inputs/Input/__stories__/String/index.js +31 -0
  455. package/inputs/Input/__stories__/{Default → String}/package.json +1 -1
  456. package/inputs/Input/__stories__/String.d.ts +3 -0
  457. package/inputs/Input/__stories__/String.js.map +7 -0
  458. package/inputs/Input/__stories__/TextWithLimit/index.js +31 -0
  459. package/inputs/Input/__stories__/TextWithLimit/package.json +6 -0
  460. package/inputs/Input/__stories__/TextWithLimit.d.ts +3 -0
  461. package/inputs/Input/__stories__/TextWithLimit.js.map +7 -0
  462. package/inputs/Input/index.js +56 -67
  463. package/inputs/Input/index.js.map +7 -0
  464. package/inputs/Input/index.test.d.ts +1 -0
  465. package/inputs/Input/inputsInputScenarios/index.js +406 -0
  466. package/inputs/Input/inputsInputScenarios/package.json +6 -0
  467. package/inputs/Input/inputsInputScenarios.d.ts +57 -0
  468. package/inputs/Input/inputsInputScenarios.js.map +7 -0
  469. package/inputs/Label/Label.stories/index.js +10 -5
  470. package/inputs/Label/Label.stories.d.ts +1 -1
  471. package/inputs/Label/Label.stories.js.map +7 -0
  472. package/inputs/Label/__stories__/Default/index.js +33 -23
  473. package/inputs/Label/__stories__/Default.d.ts +2 -2
  474. package/inputs/Label/__stories__/Default.js.map +7 -0
  475. package/inputs/Label/index.d.ts +1 -1
  476. package/inputs/Label/index.js +12 -17
  477. package/inputs/Label/index.js.map +7 -0
  478. package/inputs/Label/index.test.d.ts +1 -0
  479. package/inputs/OtpInput/OtpInput.stories/index.js +10 -5
  480. package/inputs/OtpInput/OtpInput.stories.d.ts +1 -1
  481. package/inputs/OtpInput/OtpInput.stories.js.map +7 -0
  482. package/inputs/OtpInput/__stories__/Default/index.js +26 -24
  483. package/inputs/OtpInput/__stories__/Default.d.ts +2 -2
  484. package/inputs/OtpInput/__stories__/Default.js.map +7 -0
  485. package/inputs/OtpInput/index.d.ts +9 -2
  486. package/inputs/OtpInput/index.js +109 -103
  487. package/inputs/OtpInput/index.js.map +7 -0
  488. package/inputs/OtpInput/index.test.d.ts +1 -0
  489. package/inputs/Radio/Radio.stories/index.js +14 -7
  490. package/inputs/Radio/Radio.stories.d.ts +3 -3
  491. package/inputs/Radio/Radio.stories.js.map +7 -0
  492. package/inputs/Radio/__stories__/Conditional/index.js +88 -80
  493. package/inputs/Radio/__stories__/Conditional.d.ts +3 -2
  494. package/inputs/Radio/__stories__/Conditional.js.map +7 -0
  495. package/inputs/Radio/__stories__/Default/index.js +44 -41
  496. package/inputs/Radio/__stories__/Default.d.ts +2 -2
  497. package/inputs/Radio/__stories__/Default.js.map +7 -0
  498. package/inputs/Radio/__stories__/WithDivider/index.js +45 -42
  499. package/inputs/Radio/__stories__/WithDivider.d.ts +2 -2
  500. package/inputs/Radio/__stories__/WithDivider.js.map +7 -0
  501. package/inputs/Radio/index.d.ts +4 -0
  502. package/inputs/Radio/index.js +99 -55
  503. package/inputs/Radio/index.js.map +7 -0
  504. package/inputs/Radio/index.test.d.ts +1 -0
  505. package/inputs/Select/Select.stories/index.js +10 -5
  506. package/inputs/Select/Select.stories.d.ts +1 -1
  507. package/inputs/Select/Select.stories.js.map +7 -0
  508. package/inputs/Select/__stories__/Default/index.js +49 -47
  509. package/inputs/Select/__stories__/Default.d.ts +2 -2
  510. package/inputs/Select/__stories__/Default.js.map +7 -0
  511. package/inputs/Select/index.js +24 -31
  512. package/inputs/Select/index.js.map +7 -0
  513. package/inputs/Select/index.test.d.ts +1 -0
  514. package/inputs/index.js +21 -9
  515. package/inputs/index.js.map +7 -0
  516. package/inputs/inputsScenarios/index.js +506 -0
  517. package/{validators/validators.spec → inputs/inputsScenarios}/package.json +1 -1
  518. package/inputs/inputsScenarios.d.ts +338 -0
  519. package/inputs/inputsScenarios.js.map +7 -0
  520. package/internal/index.js +51 -34
  521. package/internal.js.map +7 -0
  522. package/lazy/index.js +64 -0
  523. package/{Questions/index.spec → lazy}/package.json +1 -1
  524. package/lazy.d.ts +70 -0
  525. package/lazy.js.map +7 -0
  526. package/locales/el/index.js +6 -0
  527. package/locales/el/package.json +6 -0
  528. package/locales/el.d.ts +2 -0
  529. package/locales/el.js.map +7 -0
  530. package/package.json +5 -7
  531. package/registry/index.js +146 -134
  532. package/registry.d.ts +3 -0
  533. package/registry.js.map +7 -0
  534. package/src/Field/FieldBase.tsx +2 -0
  535. package/src/Field/FieldBaseContainer.tsx +1 -1
  536. package/src/Field/FieldConditional.tsx +4 -0
  537. package/src/Field/index.tsx +7 -1
  538. package/src/Field/types.tsx +7 -0
  539. package/src/Field/utils.ts +13 -6
  540. package/src/FieldArray/FieldArray.stories.js +2 -2
  541. package/src/FieldArray/index.test.tsx +24 -0
  542. package/src/FieldArray/index.tsx +12 -6
  543. package/src/FieldObject/index.tsx +10 -2
  544. package/src/Fieldset/types.tsx +3 -1
  545. package/src/FormBuilder/FormBuilder.stories.js +1 -1
  546. package/src/FormBuilder/FormBuilder.tsx +15 -3
  547. package/src/FormBuilder/index.test.tsx +20 -0
  548. package/src/FormBuilder/scenarios.test.tsx +1864 -0
  549. package/src/MultiplicityField/MultiplicityField.stories.js +6 -6
  550. package/src/MultiplicityField/__stories__/PreviewDisplay.tsx +2 -2
  551. package/src/MultiplicityField/__stories__/WithExactLength.tsx +1 -1
  552. package/src/MultiplicityField/__stories__/WithMaxLength.tsx +1 -1
  553. package/src/MultiplicityField/__stories__/WithMinAndMaxLength.tsx +1 -1
  554. package/src/MultiplicityField/__stories__/WithMinLength.tsx +1 -1
  555. package/src/MultiplicityField/add-objects.tsx +26 -23
  556. package/src/MultiplicityField/index.test.tsx +40 -0
  557. package/src/MultiplicityField/index.tsx +9 -9
  558. package/src/Questions/Questions.stories.js +1 -1
  559. package/src/Questions/Step/StepTitle.tsx +1 -0
  560. package/src/Questions/Step/index.ts +0 -1
  561. package/src/Questions/Step/types.tsx +1 -0
  562. package/src/Questions/__snapshots__/index.spec.tsx.snap +67 -586
  563. package/src/Questions/index.mdx +4 -4
  564. package/src/Questions/index.spec.tsx +3 -3
  565. package/src/Questions/index.test.tsx +20 -0
  566. package/src/Questions/types.tsx +1 -0
  567. package/src/index.ts +4 -1
  568. package/src/inputs/AutoCompleteInput/AutoComplete.stories.js +2 -1
  569. package/src/inputs/AutoCompleteInput/__stories__/Default.tsx +27 -18
  570. package/src/inputs/AutoCompleteInput/__stories__/Multiple.tsx +54 -0
  571. package/src/inputs/AutoCompleteInput/index.mdx +29 -0
  572. package/src/inputs/AutoCompleteInput/index.test.tsx +24 -0
  573. package/src/inputs/AutoCompleteInput/index.tsx +29 -17
  574. package/src/inputs/Checkboxes/Checkboxes.stories.js +3 -3
  575. package/src/inputs/Checkboxes/__stories__/Conditional.tsx +2 -3
  576. package/src/inputs/Checkboxes/index.mdx +33 -0
  577. package/src/inputs/Checkboxes/index.test.tsx +29 -0
  578. package/src/inputs/Checkboxes/index.tsx +28 -26
  579. package/src/inputs/DateInput/DateInput.stories.js +1 -1
  580. package/src/inputs/DateInput/__stories__/Default.tsx +21 -15
  581. package/src/inputs/DateInput/index.mdx +23 -0
  582. package/src/inputs/DateInput/index.test.tsx +20 -0
  583. package/src/inputs/DateInput/index.tsx +3 -3
  584. package/src/inputs/FileInput/FileInput.stories.js +1 -1
  585. package/src/inputs/FileInput/index.mdx +19 -0
  586. package/src/inputs/FileInput/index.test.tsx +20 -0
  587. package/src/inputs/ImageInput/ImageInput.stories.js +3 -3
  588. package/src/inputs/ImageInput/index.mdx +19 -0
  589. package/src/inputs/ImageInput/index.test.tsx +28 -0
  590. package/src/inputs/ImageInput/index.tsx +4 -4
  591. package/src/inputs/Input/Input.stories.js +10 -9
  592. package/src/inputs/Input/__stories__/LandlineNumber.tsx +27 -0
  593. package/src/inputs/Input/__stories__/MobilePhone.tsx +4 -0
  594. package/src/inputs/Input/__stories__/PhoneNumber.tsx +4 -1
  595. package/src/inputs/Input/__stories__/{Default.tsx → String.tsx} +2 -2
  596. package/src/inputs/Input/__stories__/{TextWithCharacterLimit.tsx → TextWithLimit.tsx} +2 -2
  597. package/src/inputs/Input/index.mdx +90 -3
  598. package/src/inputs/Input/index.test.tsx +56 -0
  599. package/src/inputs/Input/index.tsx +13 -13
  600. package/src/inputs/Input/inputsInputScenarios.ts +405 -0
  601. package/src/inputs/Label/Label.stories.js +1 -1
  602. package/src/inputs/Label/index.test.tsx +20 -0
  603. package/src/inputs/Label/index.tsx +1 -4
  604. package/src/inputs/OtpInput/OtpInput.stories.js +1 -1
  605. package/src/inputs/OtpInput/index.mdx +23 -0
  606. package/src/inputs/OtpInput/index.test.tsx +20 -0
  607. package/src/inputs/OtpInput/index.tsx +2 -2
  608. package/src/inputs/Radio/Radio.stories.js +3 -3
  609. package/src/inputs/Radio/__stories__/Conditional.tsx +4 -1
  610. package/src/inputs/Radio/index.mdx +33 -0
  611. package/src/inputs/Radio/index.test.tsx +28 -0
  612. package/src/inputs/Radio/index.tsx +65 -6
  613. package/src/inputs/Select/Select.stories.js +1 -1
  614. package/src/inputs/Select/index.mdx +17 -0
  615. package/src/inputs/Select/index.test.tsx +20 -0
  616. package/src/inputs/inputsScenarios.ts +503 -0
  617. package/src/lazy.js +61 -0
  618. package/src/locales/el.ts +3 -0
  619. package/src/registry.js +6 -0
  620. package/src/types.tsx +21 -19
  621. package/src/utils.ts +34 -33
  622. package/src/validators/index.ts +5 -0
  623. package/src/validators/utils/file.ts +9 -9
  624. package/src/validators/utils/phone.ts +143 -72
  625. package/src/validators/validators.spec.ts +3 -37
  626. package/types/index.js +1 -1
  627. package/types.d.ts +2 -0
  628. package/types.js.map +7 -0
  629. package/utils/index.js +56 -77
  630. package/utils.js.map +7 -0
  631. package/validators/index.js +101 -110
  632. package/validators/index.js.map +7 -0
  633. package/validators/types/index.js +1 -1
  634. package/validators/types.js.map +7 -0
  635. package/validators/utils/afm/index.js +16 -16
  636. package/validators/utils/afm.js.map +7 -0
  637. package/validators/utils/file/index.js +22 -42
  638. package/validators/utils/file.js.map +7 -0
  639. package/validators/utils/iban/index.js +14 -12
  640. package/validators/utils/iban.js.map +7 -0
  641. package/validators/utils/image/index.js +66 -106
  642. package/validators/utils/image.js.map +7 -0
  643. package/validators/utils/index.js +54 -48
  644. package/validators/utils/index.js.map +7 -0
  645. package/validators/utils/int/index.js +12 -7
  646. package/validators/utils/int.js.map +7 -0
  647. package/validators/utils/number/index.js +11 -6
  648. package/validators/utils/number.js.map +7 -0
  649. package/validators/utils/otp/index.js +13 -8
  650. package/validators/utils/otp.js.map +7 -0
  651. package/validators/utils/phone/index.js +146 -82
  652. package/validators/utils/phone.d.ts +2 -2
  653. package/validators/utils/phone.js.map +7 -0
  654. package/validators/utils/postal_code/index.js +14 -11
  655. package/validators/utils/postal_code.js.map +7 -0
  656. package/validators/utils/text_limit/index.js +18 -20
  657. package/validators/utils/text_limit.js.map +7 -0
  658. package/validators/utils/uuid4/index.js +12 -8
  659. package/validators/utils/uuid4.js.map +7 -0
  660. package/Field/index.mdx +0 -6
  661. package/FieldArray/FieldArray.stories.playwright.json +0 -353
  662. package/FormBuilder/FormBuilder.mdx +0 -256
  663. package/FormBuilder/FormBuilder.stories.playwright.json +0 -52
  664. package/MultiplicityField/MultiplicityField.mdx +0 -590
  665. package/MultiplicityField/MultiplicityField.stories.playwright.json +0 -1370
  666. package/Questions/__snapshots__/index.spec.tsx.snap +0 -596
  667. package/Questions/index.mdx +0 -415
  668. package/Questions/index.spec/index.js +0 -59
  669. package/cjs/Field/index.mdx +0 -6
  670. package/cjs/FieldArray/FieldArray.stories.playwright.json +0 -353
  671. package/cjs/FormBuilder/FormBuilder.mdx +0 -256
  672. package/cjs/FormBuilder/FormBuilder.stories.playwright.json +0 -52
  673. package/cjs/MultiplicityField/MultiplicityField.mdx +0 -590
  674. package/cjs/MultiplicityField/MultiplicityField.stories.playwright.json +0 -1370
  675. package/cjs/Questions/__snapshots__/index.spec.tsx.snap +0 -596
  676. package/cjs/Questions/index.mdx +0 -415
  677. package/cjs/Questions/index.spec/index.js +0 -63
  678. package/cjs/create-simple-form.mdx +0 -539
  679. package/cjs/index.mdx +0 -51
  680. package/cjs/inputs/Checkboxes/Checkboxes.stories.playwright.json +0 -85
  681. package/cjs/inputs/Checkboxes/index.mdx +0 -0
  682. package/cjs/inputs/DateInput/DateInput.stories.playwright.json +0 -72
  683. package/cjs/inputs/FileInput/FileInput.stories.playwright.json +0 -75
  684. package/cjs/inputs/ImageInput/ImageInput.stories.playwright.json +0 -77
  685. package/cjs/inputs/Input/Input.stories.playwright.json +0 -376
  686. package/cjs/inputs/Input/__stories__/Default/index.js +0 -33
  687. package/cjs/inputs/Input/__stories__/TextWithCharacterLimit/index.js +0 -39
  688. package/cjs/inputs/Input/index.mdx +0 -8
  689. package/cjs/inputs/Label/Label.stories.playwright.json +0 -40
  690. package/cjs/inputs/Label/index.mdx +0 -0
  691. package/cjs/inputs/Radio/Radio.stories.playwright.json +0 -73
  692. package/cjs/inputs/Radio/index.mdx +0 -0
  693. package/cjs/inputs/Select/Select.stories.playwright.json +0 -22
  694. package/cjs/installation.mdx +0 -68
  695. package/cjs/validators/validators.spec/index.js +0 -87
  696. package/create-simple-form.mdx +0 -539
  697. package/index.mdx +0 -51
  698. package/inputs/Checkboxes/Checkboxes.stories.playwright.json +0 -85
  699. package/inputs/Checkboxes/index.mdx +0 -0
  700. package/inputs/DateInput/DateInput.stories.playwright.json +0 -72
  701. package/inputs/FileInput/FileInput.stories.playwright.json +0 -75
  702. package/inputs/ImageInput/ImageInput.stories.playwright.json +0 -77
  703. package/inputs/Input/Input.stories.playwright.json +0 -376
  704. package/inputs/Input/__stories__/Default/index.js +0 -23
  705. package/inputs/Input/__stories__/Default.d.ts +0 -3
  706. package/inputs/Input/__stories__/TextWithCharacterLimit/index.js +0 -29
  707. package/inputs/Input/__stories__/TextWithCharacterLimit/package.json +0 -6
  708. package/inputs/Input/__stories__/TextWithCharacterLimit.d.ts +0 -3
  709. package/inputs/Input/index.mdx +0 -8
  710. package/inputs/Label/Label.stories.playwright.json +0 -40
  711. package/inputs/Label/index.mdx +0 -0
  712. package/inputs/Radio/Radio.stories.playwright.json +0 -73
  713. package/inputs/Radio/index.mdx +0 -0
  714. package/inputs/Select/Select.stories.playwright.json +0 -22
  715. package/installation.mdx +0 -68
  716. package/src/FieldArray/FieldArray.stories.playwright.json +0 -353
  717. package/src/FormBuilder/FormBuilder.stories.playwright.json +0 -52
  718. package/src/MultiplicityField/MultiplicityField.stories.playwright.json +0 -1370
  719. package/src/inputs/Checkboxes/Checkboxes.stories.playwright.json +0 -85
  720. package/src/inputs/DateInput/DateInput.stories.playwright.json +0 -72
  721. package/src/inputs/FileInput/FileInput.stories.playwright.json +0 -75
  722. package/src/inputs/ImageInput/ImageInput.stories.playwright.json +0 -77
  723. package/src/inputs/Input/Input.stories.playwright.json +0 -376
  724. package/src/inputs/Label/Label.stories.playwright.json +0 -40
  725. package/src/inputs/Radio/Radio.stories.playwright.json +0 -73
  726. package/src/inputs/Select/Select.stories.playwright.json +0 -22
  727. package/validators/validators.spec/index.js +0 -85
@@ -0,0 +1,1864 @@
1
+ import React from 'react';
2
+ import { test, expect } from '@playwright/experimental-ct-react';
3
+ import Jimp from 'jimp';
4
+ import FormBuilder from '@digigov/form/FormBuilder';
5
+
6
+ const getLocator = async (
7
+ formBuilder,
8
+ locatorLabel,
9
+ label,
10
+ isVisible = true
11
+ ) => {
12
+ const locator = await formBuilder.locator(`[${locatorLabel}=${label}]`);
13
+ if (isVisible) {
14
+ await locator.waitFor({ state: 'visible' });
15
+ }
16
+ return locator;
17
+ };
18
+
19
+ const locatorExists = async (formBuilder, locatorLabel, label) => {
20
+ const locatorIsVisible = await formBuilder
21
+ .locator(`[${locatorLabel}=${label}]`)
22
+ .isVisible();
23
+ return locatorIsVisible;
24
+ };
25
+
26
+ const simulateAutoCompleteFill = async (
27
+ formBuilder,
28
+ fieldKey,
29
+ value,
30
+ field
31
+ ) => {
32
+ const autoCompleteLocator = await getLocator(formBuilder, 'name', fieldKey);
33
+ await autoCompleteLocator.click();
34
+ const ariaOwnsValue = await autoCompleteLocator.getAttribute('aria-owns');
35
+ const autoCompleteMenu = await getLocator(formBuilder, 'id', ariaOwnsValue);
36
+ if (Array.isArray(value) && field?.extra?.multiple) {
37
+ for (const valueItem of value) {
38
+ const autoCompleteMenuItem = await getLocator(
39
+ autoCompleteMenu,
40
+ 'value',
41
+ valueItem
42
+ );
43
+ await autoCompleteMenuItem.click();
44
+ }
45
+ const autoCompleteArrowButton = await getLocator(
46
+ formBuilder,
47
+ 'id',
48
+ `${fieldKey}-id__button-arrow`
49
+ );
50
+ await autoCompleteArrowButton.click();
51
+ } else {
52
+ const autoCompleteMenuItem = await getLocator(
53
+ autoCompleteMenu,
54
+ 'value',
55
+ value
56
+ );
57
+ await autoCompleteMenuItem.click();
58
+ }
59
+ };
60
+
61
+ const fillSimpleInput = async ({ formBuilder, fill }) => {
62
+ const { fieldKey, value } = fill;
63
+ const input = await getLocator(formBuilder, 'name', fieldKey);
64
+ await input.fill(value);
65
+ };
66
+
67
+ const fillDateInput = async ({ formBuilder, fill }) => {
68
+ const { fieldKey, value } = fill;
69
+
70
+ const dayInput = await getLocator(formBuilder, 'name', `${fieldKey}-day`);
71
+ await dayInput.fill(value?.day || '');
72
+
73
+ const monthInput = await getLocator(formBuilder, 'name', `${fieldKey}-month`);
74
+ await monthInput.fill(value?.month || '');
75
+
76
+ const yearInput = await getLocator(formBuilder, 'name', `${fieldKey}-year`);
77
+ await yearInput.fill(value?.year || '');
78
+ };
79
+
80
+ const fillChoiceMultiple = async ({ formBuilder, fill, field }) => {
81
+ const { fieldKey, value } = fill;
82
+
83
+ if (field?.extra?.component?.includes('Select')) {
84
+ const selectLocator = await getLocator(formBuilder, 'name', fieldKey);
85
+ await selectLocator.selectOption(value);
86
+ } else if (field?.extra?.component?.includes('AutoComplete')) {
87
+ await simulateAutoCompleteFill(formBuilder, fieldKey, value, field);
88
+ } else {
89
+ for (const valueItem of value) {
90
+ const checkboxLocator = await getLocator(
91
+ formBuilder,
92
+ 'name',
93
+ `${fieldKey}\\.${valueItem}`
94
+ );
95
+ await checkboxLocator.check(true);
96
+ }
97
+ }
98
+ };
99
+
100
+ const fillChoiceSingle = async ({ formBuilder, fill, field }) => {
101
+ const { fieldKey, value } = fill;
102
+ if (field?.extra?.component?.includes('Select')) {
103
+ const selectLocator = await getLocator(formBuilder, 'name', fieldKey);
104
+ await selectLocator.selectOption(value);
105
+ } else if (field?.extra?.component?.includes('AutoComplete')) {
106
+ await simulateAutoCompleteFill(formBuilder, fieldKey, value, field);
107
+ } else {
108
+ const radioLocator = await getLocator(
109
+ formBuilder,
110
+ 'id',
111
+ `${fieldKey}\\.${value}`
112
+ );
113
+ await radioLocator.check();
114
+ }
115
+ };
116
+
117
+ const fillOtpInput = async ({ formBuilder, fill }) => {
118
+ const { fieldKey, value } = fill;
119
+
120
+ for (let otpField = 0; otpField < 6; otpField++) {
121
+ const otpLocator = await getLocator(
122
+ formBuilder,
123
+ 'name',
124
+ `${fieldKey}-${otpField}`
125
+ );
126
+ await otpLocator.fill(value?.[`${otpField}`] || '');
127
+ }
128
+ };
129
+
130
+ const imageTypes = {
131
+ bmp: 'image/bmp',
132
+ gif: 'image/gif',
133
+ jpeg: 'image/jpeg',
134
+ jpg: 'image/jpeg',
135
+ jpe: 'image/jpeg',
136
+ png: 'image/png',
137
+ svg: 'image/svg+xml',
138
+ svgz: 'image/svg+xml',
139
+ ico: 'image/x-icon',
140
+ webp: 'image/webp',
141
+ };
142
+
143
+ const fileTypes = {
144
+ xhtml: 'application/xhtml+xml',
145
+ xht: 'application/xhtml+xml',
146
+ xhtm: 'application/xhtml+xml',
147
+ html: 'text/html',
148
+ htm: 'text/html',
149
+ shtml: 'text/html',
150
+ shtm: 'text/html',
151
+ apng: 'image/apng',
152
+ wasm: 'application/wasm',
153
+ mp3: 'audio/mpeg',
154
+ wav: 'audio/x-wav',
155
+ flac: 'audio/x-flac',
156
+ m4a: 'audio/mp4',
157
+ js: 'application/javascript',
158
+ mjs: 'application/javascript',
159
+ m4v: 'video/x-m4v',
160
+ ogv: 'video/ogg',
161
+ ogm: 'video/ogg',
162
+ epub: 'application/epub+zip',
163
+ pdf: 'application/pdf',
164
+ mpeg: 'video/mpeg',
165
+ mpg: 'video/mpeg',
166
+ mpe: 'video/mpeg',
167
+ m1v: 'video/mpeg',
168
+ m2v: 'video/mpeg',
169
+ mpga: 'audio/mpeg',
170
+ mp2: 'audio/mpeg',
171
+ mp2a: 'audio/mpeg',
172
+ m2a: 'audio/mpeg',
173
+ m3a: 'audio/mpeg',
174
+ otf: 'font/otf',
175
+ ttf: 'font/ttf',
176
+ woff: 'font/woff',
177
+ woff2: 'font/woff2',
178
+ atom: 'application/atom+xml',
179
+ ecma: 'application/ecmascript',
180
+ es: 'application/ecmascript',
181
+ geojson: 'application/geo+json',
182
+ json: 'application/json',
183
+ map: 'application/json',
184
+ jsonml: 'application/jsonml+json',
185
+ jsonld: 'application/ld+json',
186
+ webmanifest: 'application/manifest+json',
187
+ ogx: 'application/ogg',
188
+ rss: 'application/rss+xml',
189
+ webapp: 'application/x-web-app-manifest+json',
190
+ xml: 'text/xml',
191
+ xsl: 'application/xml',
192
+ xsd: 'application/xml',
193
+ rng: 'application/xml',
194
+ mp4a: 'audio/mp4',
195
+ oga: 'audio/ogg',
196
+ ogg: 'audio/ogg',
197
+ spx: 'audio/ogg',
198
+ weba: 'audio/webm',
199
+ bmp: 'image/bmp',
200
+ gif: 'image/gif',
201
+ jpeg: 'image/jpeg',
202
+ jpg: 'image/jpeg',
203
+ jpe: 'image/jpeg',
204
+ png: 'image/png',
205
+ svg: 'image/svg+xml',
206
+ svgz: 'image/svg+xml',
207
+ ico: 'image/x-icon',
208
+ webp: 'image/webp',
209
+ xbm: 'image/x-xbitmap',
210
+ appcache: 'text/cache-manifest',
211
+ manifest: 'text/cache-manifest',
212
+ coffee: 'text/coffeescript',
213
+ litcoffee: 'text/coffeescript',
214
+ css: 'text/css',
215
+ jade: 'text/jade',
216
+ jsx: 'text/jsx',
217
+ less: 'text/less',
218
+ markdown: 'text/markdown',
219
+ md: 'text/markdown',
220
+ mml: 'text/mathml',
221
+ n3: 'text/n3',
222
+ txt: 'text/plain',
223
+ text: 'text/plain',
224
+ conf: 'text/plain',
225
+ def: 'text/plain',
226
+ list: 'text/plain',
227
+ log: 'text/plain',
228
+ in: 'text/plain',
229
+ ini: 'text/plain',
230
+ dsc: 'text/prs.lines.tag',
231
+ rtx: 'text/richtext',
232
+ sgml: 'text/sgml',
233
+ sgm: 'text/sgml',
234
+ shex: 'text/shex',
235
+ slim: 'text/slim',
236
+ slm: 'text/slim',
237
+ stylus: 'text/stylus',
238
+ styl: 'text/stylus',
239
+ t: 'text/troff',
240
+ tr: 'text/troff',
241
+ roff: 'text/troff',
242
+ man: 'text/troff',
243
+ me: 'text/troff',
244
+ ms: 'text/troff',
245
+ ttl: 'text/turtle',
246
+ uri: 'text/uri-list',
247
+ uris: 'text/uri-list',
248
+ urls: 'text/uri-list',
249
+ curl: 'text/vnd.curl',
250
+ dcurl: 'text/vnd.curl.dcurl',
251
+ mcurl: 'text/vnd.curl.mcurl',
252
+ scurl: 'text/vnd.curl.scurl',
253
+ sub: 'text/vnd.dvb.subtitle',
254
+ fly: 'text/vnd.fly',
255
+ flx: 'text/vnd.fmi.flexstor',
256
+ gv: 'text/vnd.graphviz',
257
+ '3dml': 'text/vnd.in3d.3dml',
258
+ spot: 'text/vnd.in3d.spot',
259
+ wml: 'text/vnd.wap.wml',
260
+ wmls: 'text/vnd.wap.wmlscript',
261
+ vtt: 'text/vtt',
262
+ s: 'text/x-asm',
263
+ asm: 'text/x-asm',
264
+ c: 'text/x-c',
265
+ cc: 'text/x-c',
266
+ cxx: 'text/x-c',
267
+ cpp: 'text/x-c',
268
+ h: 'text/x-c',
269
+ hh: 'text/x-c',
270
+ dic: 'text/x-c',
271
+ htc: 'text/x-component',
272
+ f: 'text/x-fortran',
273
+ for: 'text/x-fortran',
274
+ f77: 'text/x-fortran',
275
+ f90: 'text/x-fortran',
276
+ hbs: 'text/x-handlebars-template',
277
+ java: 'text/x-java-source',
278
+ lua: 'text/x-lua',
279
+ mkd: 'text/x-markdown',
280
+ nfo: 'text/x-nfo',
281
+ opml: 'text/x-opml',
282
+ org: 'text/x-org',
283
+ p: 'text/x-pascal',
284
+ pas: 'text/x-pascal',
285
+ pde: 'text/x-processing',
286
+ sass: 'text/x-sass',
287
+ scss: 'text/x-scss',
288
+ etx: 'text/x-setext',
289
+ sfv: 'text/x-sfv',
290
+ ymp: 'text/x-suse-ymp',
291
+ uu: 'text/x-uuencode',
292
+ yaml: 'text/yaml',
293
+ yml: 'text/yaml',
294
+ mp4: 'video/mp4',
295
+ mp4v: 'video/mp4',
296
+ mpg4: 'video/mp4',
297
+ webm: 'video/webm',
298
+ };
299
+
300
+ function calculateDimensions(memorySizeInMB) {
301
+ const bytesPerPixel = 4;
302
+ const bytesPerMB = 1024 * 1024;
303
+ const memorySizeInBytes = memorySizeInMB * bytesPerMB;
304
+ const totalPixels = memorySizeInBytes / bytesPerPixel;
305
+ const sideLength = Math.sqrt(totalPixels);
306
+ const width = Math.floor(sideLength);
307
+ const height = Math.floor(sideLength);
308
+ return { width, height };
309
+ }
310
+
311
+ const fillImageInput = async ({ formBuilder, fill }) => {
312
+ const { fieldKey, value } = fill;
313
+
314
+ const buttonUploadLocator = await getLocator(
315
+ formBuilder,
316
+ 'name',
317
+ `${fieldKey}`,
318
+ false
319
+ );
320
+ let width = value?.width;
321
+ let height = value?.height;
322
+ if (value?.size) {
323
+ const sizeObj = calculateDimensions(value?.size);
324
+ width = sizeObj?.width;
325
+ height = sizeObj?.height;
326
+ }
327
+ const image = new Jimp(width, height, 'green');
328
+ const imageBuffer = await image.getBufferAsync(Jimp.MIME_PNG);
329
+ const fileExtension = value?.fileName.split('.').pop();
330
+ await buttonUploadLocator.setInputFiles({
331
+ buffer: imageBuffer,
332
+ mimeType: imageTypes[fileExtension],
333
+ name: value?.fileName,
334
+ });
335
+ };
336
+
337
+ const fillFileInput = async ({ formBuilder, fill }) => {
338
+ const { fieldKey, value } = fill;
339
+
340
+ const fileExtension = value?.fileName.split('.').pop();
341
+ const buttonUploadLocator = await getLocator(
342
+ formBuilder,
343
+ 'name',
344
+ `${fieldKey}`,
345
+ false
346
+ );
347
+ await buttonUploadLocator.setInputFiles({
348
+ buffer: Buffer.alloc(value?.size * 1024),
349
+ mimeType: fileTypes[fileExtension],
350
+ name: value?.fileName,
351
+ });
352
+ };
353
+
354
+ const fillObjectInput = async ({ formBuilder, fill, field }) => {
355
+ for (const extraField of fill.value.of.extra.fields) {
356
+ const objField = field.extra.of.extra.fields.find(({ key }) => {
357
+ return key === extraField.fieldKey;
358
+ });
359
+ const fillObj = {
360
+ fieldKey: `${fill.fieldKey}\\.${fill.index}\\.${extraField.fieldKey}`,
361
+ value: extraField.value,
362
+ };
363
+ await fillActionPerType[objField.type]({
364
+ formBuilder,
365
+ fill: fillObj,
366
+ field,
367
+ });
368
+ }
369
+ if (field.multiplicity) {
370
+ const buttonActionLocator = await getLocator(
371
+ formBuilder,
372
+ 'name',
373
+ `${fill.fieldKey}\\.${fill.index}-${fill.value.of.extra.action}-object`
374
+ );
375
+ await buttonActionLocator.click();
376
+ }
377
+ };
378
+
379
+ const fillArrayInput = async ({ formBuilder, fill, field }) => {
380
+ const { value } = fill;
381
+ if (field.multiplicity) {
382
+ const radioLocator = await getLocator(
383
+ formBuilder,
384
+ 'id',
385
+ `radio-input-${field.key}-${value?.question}`
386
+ );
387
+ await radioLocator.check(true);
388
+ } else {
389
+ const buttonAddLocator = await getLocator(
390
+ formBuilder,
391
+ 'name',
392
+ `${field.key}-add-object`
393
+ );
394
+ await buttonAddLocator.click();
395
+ }
396
+ if (value.of) {
397
+ await fillActionPerType[value.of.type]({ formBuilder, fill, field });
398
+ }
399
+ };
400
+
401
+ const fillActionPerType = {
402
+ int: fillSimpleInput,
403
+ string: fillSimpleInput,
404
+ text: fillSimpleInput,
405
+ email: fillSimpleInput,
406
+ uuid4: fillSimpleInput,
407
+ mobile_phone: fillSimpleInput,
408
+ number: fillSimpleInput,
409
+ afm: fillSimpleInput,
410
+ iban: fillSimpleInput,
411
+ postal_code: fillSimpleInput,
412
+ phone_number: fillSimpleInput,
413
+
414
+ date: fillDateInput,
415
+ otp: fillOtpInput,
416
+ image: fillImageInput,
417
+ file: fillFileInput,
418
+ 'choice:multiple': fillChoiceMultiple,
419
+ 'choice:single': fillChoiceSingle,
420
+ array: fillArrayInput,
421
+ object: fillObjectInput,
422
+ };
423
+
424
+ const fillFields = async (page, formBuilder, scenario) => {
425
+ for (const fill of scenario.fill) {
426
+ const field = scenario.fields.find(({ key }) => {
427
+ return key === fill.fieldKey;
428
+ });
429
+ if (fillActionPerType[field.type]) {
430
+ await fillActionPerType[field.type]({ formBuilder, fill, field, page });
431
+ } else {
432
+ console.log(
433
+ '\nField type:',
434
+ field.type,
435
+ "doesn't exist in fillActionPerType\n"
436
+ );
437
+ }
438
+ }
439
+ };
440
+
441
+ const submitForm = async (formBuilder) => {
442
+ await formBuilder.locator(`[type=submit]`).click();
443
+ };
444
+
445
+ const expectErrorMessages = async (formBuilder, scenarioExpect, expect) => {
446
+ for (const expectObj of scenarioExpect) {
447
+ if (expectObj.type === 'success') {
448
+ const labelLocatorIsVisible = await locatorExists(
449
+ formBuilder,
450
+ 'id',
451
+ `${expectObj.fieldKey}-error`
452
+ );
453
+ expect(labelLocatorIsVisible).toBeFalsy();
454
+ } else {
455
+ let expectText = expectObj.text;
456
+ const argRegex = /{{([^}]+)}}/g;
457
+ const argMatches = [...expectObj.text.matchAll(argRegex)];
458
+ const labelLocator = await getLocator(
459
+ formBuilder,
460
+ 'id',
461
+ `${expectObj.fieldKey}-error`
462
+ );
463
+ if (argMatches.length > 0) {
464
+ for (const argMatch of argMatches) {
465
+ const argKey = argMatch[1];
466
+ expectText = expectText.replace(
467
+ new RegExp(`{{\\s*${argKey}\\s*}}`, 'g'),
468
+ expectObj.args[argKey]
469
+ );
470
+ }
471
+ }
472
+ await expect(labelLocator).toHaveText(expectText);
473
+ }
474
+ }
475
+ };
476
+
477
+ const generateScenarios = (
478
+ scenarioTitles,
479
+ fillTemplate,
480
+ fieldsTemplate,
481
+ fieldKey,
482
+ isMultiplicity,
483
+ locals
484
+ ) => {
485
+ const generatedScenarios: any[] = [];
486
+ const addRegex = /add\s+(\d+)/;
487
+ const minRegex = /min=(\d+)/;
488
+ const maxRegex = /max=(\d+)/;
489
+ const exactRegex = /exact=(\d+)/;
490
+ const { min, max, length, required } = locals;
491
+
492
+ for (const title of scenarioTitles) {
493
+ const titleLowerCase = title.toLowerCase();
494
+ const scenarioFields: any[] = [];
495
+ const scenarioFill: any[] = [];
496
+ const scenarioExpect: any[] = [];
497
+
498
+ const addMatch = titleLowerCase.match(addRegex);
499
+ const minMatch = titleLowerCase.match(minRegex);
500
+ const maxMatch = titleLowerCase.match(maxRegex);
501
+ const exactMatch = titleLowerCase.match(exactRegex);
502
+
503
+ const addNumber = addMatch ? Number(addMatch[1]) : null;
504
+ const minNumber = minMatch ? Number(minMatch[1]) : null;
505
+ const maxNumber = maxMatch ? Number(maxMatch[1]) : null;
506
+ const exactNumber = exactMatch ? Number(exactMatch[1]) : null;
507
+
508
+ let addNumberFinal = addNumber;
509
+
510
+ if (minNumber !== null) {
511
+ const expectEntry = {
512
+ type: 'error',
513
+ fieldKey: fieldKey,
514
+ args: { min: minNumber },
515
+ text: min,
516
+ };
517
+ if (addNumber !== null && addNumber >= minNumber) {
518
+ if (maxNumber === null) {
519
+ scenarioExpect.push({
520
+ ...expectEntry,
521
+ type: 'success',
522
+ });
523
+ }
524
+ } else {
525
+ scenarioExpect.push(expectEntry);
526
+ if (isMultiplicity) {
527
+ scenarioExpect.push({
528
+ type: 'error',
529
+ fieldKey: 'needs-more',
530
+ text: required,
531
+ });
532
+ }
533
+ }
534
+ }
535
+
536
+ if (maxNumber !== null) {
537
+ const expectEntry = {
538
+ type: 'error',
539
+ fieldKey: fieldKey,
540
+ args: { max: maxNumber },
541
+ text: max,
542
+ };
543
+ if (addNumber !== null && addNumber <= maxNumber) {
544
+ if (minNumber === null) {
545
+ scenarioExpect.push({
546
+ ...expectEntry,
547
+ type: 'success',
548
+ });
549
+ }
550
+ } else {
551
+ addNumberFinal = maxNumber;
552
+ scenarioExpect.push(expectEntry);
553
+ if (isMultiplicity) {
554
+ scenarioExpect.push({
555
+ type: 'error',
556
+ fieldKey: 'needs-more',
557
+ args: { max: maxNumber },
558
+ text: max,
559
+ });
560
+ }
561
+ }
562
+ }
563
+
564
+ if (exactNumber !== null) {
565
+ const expectEntry = {
566
+ type: 'error',
567
+ fieldKey: fieldKey,
568
+ args: { length: exactNumber },
569
+ text: length,
570
+ };
571
+ if (addNumber !== null && addNumber === exactNumber) {
572
+ scenarioExpect.push({
573
+ ...expectEntry,
574
+ type: 'success',
575
+ });
576
+ } else {
577
+ scenarioExpect.push({
578
+ ...expectEntry,
579
+ type: 'error',
580
+ });
581
+ }
582
+ }
583
+
584
+ if (addNumberFinal !== null) {
585
+ for (let i = 0; i < addNumberFinal; i++) {
586
+ const finalScenarioFill = {
587
+ index: i,
588
+ ...fillTemplate,
589
+ };
590
+ scenarioFill.push(finalScenarioFill);
591
+ for (const multiplicityField of fillTemplate?.value?.of?.extra
592
+ ?.fields) {
593
+ scenarioExpect.push({
594
+ type: 'success',
595
+ fieldKey: `${fillTemplate.fieldKey}\\.${i}\\.${multiplicityField.fieldKey}`,
596
+ text: required,
597
+ });
598
+ }
599
+ }
600
+ if (addNumber !== null && addNumber > addNumberFinal) {
601
+ scenarioFill.push({
602
+ fieldKey: fieldKey,
603
+ value: {
604
+ question: 'yes',
605
+ },
606
+ });
607
+ }
608
+ // This will choose 'no' in the radio-choice for last action before submitting the form
609
+ // scenarioFill.push({
610
+ // fieldKey: fieldKey,
611
+ // value: {
612
+ // question: 'no',
613
+ // },
614
+ // })
615
+ }
616
+ scenarioFields.push({
617
+ ...fieldsTemplate,
618
+ extra: {
619
+ ...fieldsTemplate.extra,
620
+ ...(minNumber !== null ? { min: minNumber } : {}),
621
+ ...(maxNumber !== null ? { max: maxNumber } : {}),
622
+ ...(exactNumber !== null ? { length: exactNumber } : {}),
623
+ },
624
+ });
625
+ generatedScenarios.push({
626
+ title: title,
627
+ describe: `${fieldKey} scenario`,
628
+ fields: scenarioFields,
629
+ fill: scenarioFill,
630
+ expect: scenarioExpect,
631
+ });
632
+ }
633
+ return generatedScenarios;
634
+ };
635
+
636
+ const el = {
637
+ form: {
638
+ label: {
639
+ day: 'Ημέρα',
640
+ month: 'Μήνας',
641
+ year: 'Έτος',
642
+ },
643
+ error: {
644
+ required: 'Το πεδίο είναι υποχρεωτικό.',
645
+ number: 'Συμπληρώστε έναν έγκυρο αριθμό',
646
+ positive_integer_number: 'Συμπληρώστε έναν θετικό ακέραιο αριθμό',
647
+ string: 'Το πεδίο πρέπει να είναι string',
648
+ email: 'Συμπληρώστε μια έγκυρη ηλεκτρονική διεύθυνση (e-mail).',
649
+ afm: 'Ο Α.Φ.Μ που πληκτρολογήσατε είναι λανθασμένος.',
650
+ file_size:
651
+ 'Το μέγεθος του αρχείου είναι μεγαλύτερο απο το επιτρεπόμενο ({{maxSizeToMb}}Mb).',
652
+ image_size:
653
+ 'Το μέγεθος της φωτογραφίας είναι μεγαλύτερο απο το επιτρεπόμενο ({{maxSizeToMb}}Mb).',
654
+ mobile_phone: 'Συμπληρώστε έναν έγκυρο αριθμό κινητού τηλεφώνου.',
655
+ phone_number: 'Συμπληρώστε έναν έγκυρο αριθμό τηλεφώνου.',
656
+ landline: 'Συμπληρώστε έναν έγκυρο αριθμό σταθερού τηλεφώνου.',
657
+ uuid4: 'Ο κωδικός επιβεβαίωσης δεν είναι έγκυρος.',
658
+ iban: 'Συμπληρώστε έναν έγκυρο αριθμό IBAN',
659
+ postalCode: 'Συμπληρώστε έναν έγκυρο αριθμό ταχυδρομικού κώδικα.',
660
+ 'needs-more':
661
+ 'Για να συνεχίσετε, πατήστε το κουμπί «Προσθήκη». Διαφορετικά, επιλέξε το «Όχι» σαν απάντηση.',
662
+ array: {
663
+ min: 'Το πεδίο πρέπει να έχει τουλάχιστον {{min}} εγγραφές. Προσθέστε μια ακόμα επιλέγοντας την απάντηση «Ναι» στην επόμενη ερώτηση.',
664
+ max: 'Έχετε φτάσει το όριο των {{max}} εγγραφών. Αν θέλετε να προσθέσετε μια νέα, διαγράψτε μια από τις παραπάνω εγγραφές. Διαφορετικά, επιλέξτε το «Όχι» σαν απάντηση.',
665
+ length: 'Το πεδίο πρέπει να έχει ακριβώς {{length}} εγγραφές',
666
+ },
667
+ date: {
668
+ invalid: 'Η ημερομηνία πρέπει να είναι έγκυρη.',
669
+ earlier_than: 'Συμπληρώστε μια ημερομηνία προγενέστερη της {{maxDate}}',
670
+ later_than: 'Συμπληρώστε μια ημερομηνία μεταγενέστερη της {{minDate}}',
671
+ },
672
+ otp: {
673
+ invalid: 'Ο κωδικός που έχετε εισάγει είναι λάθος.',
674
+ less_than: 'Έχετε συμπληρώσει λιγότερα από {{maxLength}} ψηφία.',
675
+ },
676
+ image: {
677
+ image_dimension_size:
678
+ 'Οι διαστάσεις που καταχωρίσατε υπερβαίνουν τα αναμενόμενα όρια. Ελάχιστο μέγεθος: ({{minWidth}}x{{minHeight}})px, Μέγιστο μέγεθος: ({{maxWidth}}x{{maxHeight}})px',
679
+ },
680
+ text: {
681
+ more_than: 'Έχετε υπερβεί το όριο των {{max}} χαρακτήρων.',
682
+ less_than: 'Χρειάζονται τουλάχιστον {{min}} χαρακτήρες.',
683
+ },
684
+ },
685
+ },
686
+ };
687
+
688
+ export const INPUTS_FIELDS = [
689
+ {
690
+ key: 'date-example',
691
+ type: 'date',
692
+ required: true,
693
+ label: {
694
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
695
+ secondary: 'Για παράδειγμα, 05 11 2020',
696
+ },
697
+ },
698
+ {
699
+ key: 'otp',
700
+ type: 'otp',
701
+ maxLength: 6,
702
+ label: {
703
+ primary: 'Συμπληρώστε τον κωδικό επιβεβαίωσης',
704
+ },
705
+ required: true,
706
+ },
707
+ {
708
+ key: 'checkbox',
709
+ type: 'choice:multiple',
710
+ required: true,
711
+ label: { primary: 'Πώς αισθάνεστε αυτή τη στιγμή;' },
712
+ extra: {
713
+ options: [
714
+ {
715
+ label: { primary: 'Έχω συνάχι' },
716
+ value: 'runny-nose',
717
+ },
718
+ {
719
+ label: { primary: 'Έχω πυρετό' },
720
+ value: 'fever',
721
+ },
722
+ {
723
+ label: { primary: 'Αισθάνομαι κούραση' },
724
+ value: 'fatigue',
725
+ },
726
+ ],
727
+ },
728
+ },
729
+ {
730
+ key: 'autocomplete_multiple',
731
+ required: true,
732
+ type: 'choice:multiple',
733
+ label: { primary: 'Πώς αισθάνεστε αυτή τη στιγμή;' },
734
+ extra: {
735
+ component: 'AutoComplete',
736
+ multiple: true,
737
+ options: [
738
+ {
739
+ label: { primary: 'Έχω συνάχι' },
740
+ value: 'runny-nose',
741
+ },
742
+ {
743
+ label: { primary: 'Έχω πυρετό' },
744
+ value: 'fever',
745
+ },
746
+ {
747
+ label: { primary: 'Αισθάνομαι κούραση' },
748
+ value: 'fatigue',
749
+ },
750
+ ],
751
+ },
752
+ },
753
+ {
754
+ key: 'radio',
755
+ type: 'choice:single',
756
+ required: true,
757
+ label: { primary: 'Πώς αισθάνεστε αυτή τη στιγμή;' },
758
+ extra: {
759
+ options: [
760
+ {
761
+ label: { primary: 'Έχω συνάχι' },
762
+ value: 'runny-nose',
763
+ },
764
+ {
765
+ label: { primary: 'Έχω πυρετό' },
766
+ value: 'fever',
767
+ },
768
+ {
769
+ label: { primary: 'Αισθάνομαι κούραση' },
770
+ value: 'fatigue',
771
+ },
772
+ ],
773
+ },
774
+ },
775
+ {
776
+ key: 'select',
777
+ type: 'choice:single',
778
+ required: true,
779
+ label: { primary: 'Πώς αισθάνεστε αυτή τη στιγμή;' },
780
+ extra: {
781
+ component: 'Select',
782
+ options: [
783
+ {
784
+ label: { primary: '' },
785
+ value: '',
786
+ },
787
+ {
788
+ label: { primary: 'Έχω συνάχι' },
789
+ value: 'runny-nose',
790
+ },
791
+ {
792
+ label: { primary: 'Έχω πυρετό' },
793
+ value: 'fever',
794
+ },
795
+ {
796
+ label: { primary: 'Αισθάνομαι κούραση' },
797
+ value: 'fatigue',
798
+ },
799
+ ],
800
+ },
801
+ },
802
+ {
803
+ key: 'autocomplete_single',
804
+ required: true,
805
+ type: 'choice:single',
806
+ label: { primary: 'Πώς αισθάνεστε αυτή τη στιγμή;' },
807
+ extra: {
808
+ component: 'AutoComplete',
809
+ options: [
810
+ {
811
+ label: { primary: 'Έχω συνάχι' },
812
+ value: 'runny-nose',
813
+ },
814
+ {
815
+ label: { primary: 'Έχω πυρετό' },
816
+ value: 'fever',
817
+ },
818
+ {
819
+ label: { primary: 'Αισθάνομαι κούραση' },
820
+ value: 'fatigue',
821
+ },
822
+ ],
823
+ },
824
+ },
825
+ {
826
+ key: 'image',
827
+ type: 'image',
828
+ required: true,
829
+ label: {
830
+ primary: 'Ανεβάστε τη φωτογραφία του προστίμου',
831
+ },
832
+ },
833
+ {
834
+ key: 'file',
835
+ type: 'file',
836
+ label: {
837
+ primary: 'Ανεβάστε το αρχείο της απόδειξης',
838
+ },
839
+ required: true,
840
+ },
841
+ ];
842
+
843
+ const inputsScenarios = [
844
+ {
845
+ title: 'success fill for inputs',
846
+ describe: 'inputs scenario',
847
+ fields: INPUTS_FIELDS,
848
+ fill: [
849
+ {
850
+ fieldKey: 'date-example',
851
+ value: {
852
+ day: '22',
853
+ month: '11',
854
+ year: '2020',
855
+ },
856
+ },
857
+ {
858
+ fieldKey: 'otp',
859
+ value: {
860
+ '0': '4',
861
+ '1': '4',
862
+ '2': '4',
863
+ '3': '4',
864
+ '4': '4',
865
+ '5': '4',
866
+ },
867
+ },
868
+ {
869
+ fieldKey: 'checkbox',
870
+ value: ['fever', 'fatigue'],
871
+ },
872
+ {
873
+ fieldKey: 'autocomplete_multiple',
874
+ value: ['fever', 'fatigue'],
875
+ },
876
+ {
877
+ fieldKey: 'radio',
878
+ value: 'fever',
879
+ },
880
+ {
881
+ fieldKey: 'select',
882
+ value: 'fatigue',
883
+ },
884
+ {
885
+ fieldKey: 'autocomplete_single',
886
+ value: 'fatigue',
887
+ },
888
+ {
889
+ fieldKey: 'image',
890
+ value: {
891
+ fileName: 'green_image.png',
892
+ width: 500,
893
+ height: 500,
894
+ size: 3,
895
+ },
896
+ },
897
+ {
898
+ fieldKey: 'file',
899
+ value: {
900
+ fileName: 'file.txt',
901
+ size: 200,
902
+ },
903
+ },
904
+ ],
905
+ expect: [
906
+ {
907
+ type: 'success',
908
+ fieldKey: 'date-example',
909
+ text: el.form.error.date.invalid,
910
+ },
911
+ {
912
+ type: 'success',
913
+ fieldKey: 'otp',
914
+ args: {
915
+ maxLength: 6,
916
+ },
917
+ text: el.form.error.otp.less_than,
918
+ },
919
+ {
920
+ type: 'success',
921
+ fieldKey: 'checkbox',
922
+ text: el.form.error.required,
923
+ },
924
+ {
925
+ type: 'success',
926
+ fieldKey: 'autocomplete_multiple',
927
+ text: el.form.error.required,
928
+ },
929
+ {
930
+ type: 'success',
931
+ fieldKey: 'radio',
932
+ text: el.form.error.required,
933
+ },
934
+ {
935
+ type: 'success',
936
+ fieldKey: 'select',
937
+ text: el.form.error.required,
938
+ },
939
+ {
940
+ type: 'success',
941
+ fieldKey: 'autocomplete_single',
942
+ text: el.form.error.required,
943
+ },
944
+ {
945
+ type: 'success',
946
+ fieldKey: 'image',
947
+ text: el.form.error.required,
948
+ },
949
+ {
950
+ type: 'success',
951
+ fieldKey: 'file',
952
+ text: el.form.error.required,
953
+ },
954
+ ],
955
+ },
956
+ {
957
+ title: 'empty fill for inputs',
958
+ describe: 'inputs scenario',
959
+ fields: INPUTS_FIELDS,
960
+ fill: [],
961
+ expect: [
962
+ {
963
+ type: 'error',
964
+ fieldKey: 'date-example',
965
+ text: el.form.error.required,
966
+ },
967
+ {
968
+ type: 'error',
969
+ fieldKey: 'otp',
970
+ text: el.form.error.required,
971
+ },
972
+ {
973
+ type: 'error',
974
+ fieldKey: 'checkbox',
975
+ text: el.form.error.required,
976
+ },
977
+ {
978
+ type: 'error',
979
+ fieldKey: 'autocomplete_multiple',
980
+ text: el.form.error.required,
981
+ },
982
+ {
983
+ type: 'error',
984
+ fieldKey: 'radio',
985
+ text: el.form.error.required,
986
+ },
987
+ {
988
+ type: 'error',
989
+ fieldKey: 'select',
990
+ text: el.form.error.required,
991
+ },
992
+ {
993
+ type: 'error',
994
+ fieldKey: 'autocomplete_single',
995
+ text: el.form.error.required,
996
+ },
997
+ {
998
+ type: 'error',
999
+ fieldKey: 'image',
1000
+ text: el.form.error.required,
1001
+ },
1002
+ {
1003
+ type: 'error',
1004
+ fieldKey: 'file',
1005
+ text: el.form.error.required,
1006
+ },
1007
+ ],
1008
+ },
1009
+ {
1010
+ title: 'incorrect types for DateInput and OtpInput',
1011
+ describe: 'inputs scenario',
1012
+ fields: [
1013
+ {
1014
+ key: 'date-example',
1015
+ type: 'date',
1016
+ required: true,
1017
+ label: {
1018
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1019
+ secondary: 'Για παράδειγμα, 05 11 2020',
1020
+ },
1021
+ },
1022
+ {
1023
+ key: 'otp',
1024
+ type: 'otp',
1025
+ maxLength: 6,
1026
+ label: {
1027
+ primary: 'Συμπληρώστε τον κωδικό επιβεβαίωσης',
1028
+ },
1029
+ required: true,
1030
+ },
1031
+ ],
1032
+ fill: [
1033
+ {
1034
+ fieldKey: 'date-example',
1035
+ value: {
1036
+ day: 'a2',
1037
+ month: '11',
1038
+ year: '2020',
1039
+ },
1040
+ },
1041
+ {
1042
+ fieldKey: 'otp',
1043
+ value: {
1044
+ '0': 'a',
1045
+ '1': '4',
1046
+ '2': '4',
1047
+ '3': '4',
1048
+ '4': '4',
1049
+ '5': '4',
1050
+ },
1051
+ },
1052
+ ],
1053
+ expect: [
1054
+ {
1055
+ type: 'error',
1056
+ fieldKey: 'date-example',
1057
+ text: el.form.error.date.invalid,
1058
+ },
1059
+ {
1060
+ type: 'error',
1061
+ fieldKey: 'otp',
1062
+ args: {
1063
+ maxLength: 6,
1064
+ },
1065
+ text: el.form.error.otp.less_than,
1066
+ },
1067
+ ],
1068
+ },
1069
+ {
1070
+ title: 'wrong sizes for ImageInput and FileInput',
1071
+ describe: 'inputs scenario',
1072
+ fields: [
1073
+ {
1074
+ key: 'image',
1075
+ type: 'image',
1076
+ required: true,
1077
+ label: {
1078
+ primary: 'Ανεβάστε τη φωτογραφία του προστίμου',
1079
+ },
1080
+ extra: {
1081
+ limit: {
1082
+ maxSize: 300,
1083
+ },
1084
+ },
1085
+ },
1086
+ {
1087
+ key: 'file',
1088
+ type: 'file',
1089
+ required: true,
1090
+ label: {
1091
+ primary: 'Ανεβάστε το αρχείο της απόδειξης',
1092
+ },
1093
+ extra: {
1094
+ limit: {
1095
+ maxSize: 300,
1096
+ },
1097
+ },
1098
+ },
1099
+ ],
1100
+ fill: [
1101
+ {
1102
+ fieldKey: 'image',
1103
+ value: {
1104
+ fileName: 'green_image.png',
1105
+ size: 300,
1106
+ },
1107
+ },
1108
+ {
1109
+ fieldKey: 'file',
1110
+ value: {
1111
+ fileName: 'file.txt',
1112
+ size: 200,
1113
+ },
1114
+ },
1115
+ ],
1116
+ expect: [
1117
+ {
1118
+ type: 'error',
1119
+ fieldKey: 'image',
1120
+ args: {
1121
+ maxSizeToMb: 0.0003,
1122
+ },
1123
+ text: el.form.error.file_size,
1124
+ },
1125
+ {
1126
+ type: 'error',
1127
+ fieldKey: 'file',
1128
+ args: {
1129
+ maxSizeToMb: 0.0003,
1130
+ },
1131
+ text: el.form.error.file_size,
1132
+ },
1133
+ ],
1134
+ },
1135
+ {
1136
+ title: 'wrong dimensions for ImageInput',
1137
+ describe: 'inputs scenario',
1138
+ fields: [
1139
+ {
1140
+ key: 'image',
1141
+ type: 'image',
1142
+ required: true,
1143
+ label: {
1144
+ primary: 'Ανεβάστε τη φωτογραφία του προστίμου',
1145
+ },
1146
+ extra: {
1147
+ limit: {
1148
+ maxHeight: 400,
1149
+ maxWidth: 400,
1150
+ minHeight: 100,
1151
+ minWidth: 100,
1152
+ },
1153
+ },
1154
+ },
1155
+ ],
1156
+ fill: [
1157
+ {
1158
+ fieldKey: 'image',
1159
+ value: {
1160
+ fileName: 'green_image.png',
1161
+ width: 500,
1162
+ height: 500,
1163
+ },
1164
+ },
1165
+ ],
1166
+ expect: [
1167
+ {
1168
+ type: 'error',
1169
+ fieldKey: 'image',
1170
+ args: {
1171
+ minWidth: 100,
1172
+ minHeight: 100,
1173
+ maxWidth: 400,
1174
+ maxHeight: 400,
1175
+ },
1176
+ text: el.form.error.image.image_dimension_size,
1177
+ },
1178
+ ],
1179
+ },
1180
+ ];
1181
+
1182
+ const INPUTS_INPUT_FIELDS = [
1183
+ {
1184
+ key: 'location',
1185
+ type: 'string',
1186
+ label: {
1187
+ primary: 'Συμπληρώστε τον τόπο κατοικίας σας',
1188
+ },
1189
+ required: true,
1190
+ },
1191
+ {
1192
+ key: 'text',
1193
+ type: 'text',
1194
+ required: true,
1195
+ label: {
1196
+ primary: 'Συμπληρώστε το αίτημά σας',
1197
+ },
1198
+ },
1199
+ {
1200
+ key: 'email',
1201
+ type: 'email',
1202
+ label: {
1203
+ primary: 'Διεύθυνση ηλεκτρονικού ταχυδρομείου (email)',
1204
+ },
1205
+ required: true,
1206
+ },
1207
+ {
1208
+ key: 'desired-mount',
1209
+ type: 'number',
1210
+ label: {
1211
+ primary: 'Συμπληρώστε το ποσό που σας ενδιαφέρει',
1212
+ },
1213
+ required: true,
1214
+ },
1215
+ {
1216
+ key: 'age',
1217
+ type: 'int',
1218
+ required: true,
1219
+ label: {
1220
+ primary: 'Ποιά είναι η ηλικία σας;',
1221
+ secondary: 'Καταχωρίστε την ηλικία σας',
1222
+ },
1223
+ },
1224
+ {
1225
+ key: 'afm',
1226
+ type: 'afm',
1227
+ required: true,
1228
+ label: { primary: 'ΑΦΜ' },
1229
+ },
1230
+ {
1231
+ key: 'iban',
1232
+ type: 'iban',
1233
+ label: {
1234
+ primary: 'Συμπληρώστε το αριθμό του τραπεζικού σας λογαριασμού',
1235
+ },
1236
+ required: true,
1237
+ },
1238
+ {
1239
+ key: 'uuid4',
1240
+ type: 'uuid4',
1241
+ label: {
1242
+ primary: 'Συμπληρώστε το uuid4',
1243
+ },
1244
+ required: true,
1245
+ },
1246
+ {
1247
+ key: 'mobile-phone',
1248
+ type: 'mobile_phone',
1249
+ label: {
1250
+ primary: 'Συμπληρώστε το κινητό σας τηλέφωνο',
1251
+ },
1252
+ required: true,
1253
+ extra: {
1254
+ countries: ['gr'],
1255
+ phoneType: 'mobile',
1256
+ },
1257
+ },
1258
+ {
1259
+ key: 'phone-number',
1260
+ type: 'phone_number',
1261
+ label: {
1262
+ primary: 'Συμπληρώστε το τηλέφωνό σας',
1263
+ },
1264
+ required: true,
1265
+ extra: {
1266
+ countries: ['gr'],
1267
+ },
1268
+ },
1269
+ {
1270
+ key: 'phone-number-landline',
1271
+ type: 'phone_number',
1272
+ label: {
1273
+ primary: 'Συμπληρώστε το σταθερό σας τηλέφωνό',
1274
+ },
1275
+ required: true,
1276
+ extra: {
1277
+ countries: ['gr'],
1278
+ phoneType: 'landline',
1279
+ },
1280
+ },
1281
+ {
1282
+ key: 'postal-code',
1283
+ type: 'postal_code',
1284
+ label: {
1285
+ primary: 'Συμπληρώστε τον ταχυδρομικό σας κώδικα',
1286
+ },
1287
+ extra: { countries: ['GR'] },
1288
+ required: true,
1289
+ },
1290
+ ];
1291
+
1292
+ const inputsInputScenarios = [
1293
+ {
1294
+ title: 'success fill for inputs Input',
1295
+ describe: 'inputs Input scenario',
1296
+ fields: INPUTS_INPUT_FIELDS,
1297
+ fill: [
1298
+ {
1299
+ fieldKey: 'text',
1300
+ value: 'aaaaaaa',
1301
+ },
1302
+ {
1303
+ fieldKey: 'age',
1304
+ value: '12',
1305
+ },
1306
+ {
1307
+ fieldKey: 'email',
1308
+ value: 'example@mail.com',
1309
+ },
1310
+ {
1311
+ fieldKey: 'location',
1312
+ value: 'Location1',
1313
+ },
1314
+ {
1315
+ fieldKey: 'postal-code',
1316
+ value: '42100',
1317
+ },
1318
+ {
1319
+ fieldKey: 'afm',
1320
+ value: '094536469',
1321
+ },
1322
+ {
1323
+ fieldKey: 'desired-mount',
1324
+ value: '12.5',
1325
+ },
1326
+ {
1327
+ fieldKey: 'mobile-phone',
1328
+ value: '+306900000000',
1329
+ },
1330
+ {
1331
+ fieldKey: 'phone-number',
1332
+ value: '6900000000',
1333
+ },
1334
+ {
1335
+ fieldKey: 'phone-number-landline',
1336
+ value: '2100000000',
1337
+ },
1338
+ {
1339
+ fieldKey: 'iban',
1340
+ value: 'GR3201122267115323218375195',
1341
+ },
1342
+ {
1343
+ fieldKey: 'uuid4',
1344
+ value: '1e805d00-ea67-478a-ab8b-d13ff8b38fa3',
1345
+ },
1346
+ ],
1347
+ expect: [
1348
+ {
1349
+ type: 'success',
1350
+ fieldKey: 'age',
1351
+ text: el.form.error.required,
1352
+ },
1353
+ {
1354
+ type: 'success',
1355
+ fieldKey: 'text',
1356
+ text: el.form.error.required,
1357
+ },
1358
+ {
1359
+ type: 'success',
1360
+ fieldKey: 'email',
1361
+ text: el.form.error.required,
1362
+ },
1363
+ {
1364
+ type: 'success',
1365
+ fieldKey: 'location',
1366
+ text: el.form.error.required,
1367
+ },
1368
+ {
1369
+ type: 'success',
1370
+ fieldKey: 'postal-code',
1371
+ text: el.form.error.required,
1372
+ },
1373
+ {
1374
+ type: 'success',
1375
+ fieldKey: 'afm',
1376
+ text: el.form.error.required,
1377
+ },
1378
+ {
1379
+ type: 'success',
1380
+ fieldKey: 'desired-mount',
1381
+ text: el.form.error.required,
1382
+ },
1383
+ {
1384
+ type: 'success',
1385
+ fieldKey: 'mobile-phone',
1386
+ text: el.form.error.required,
1387
+ },
1388
+ {
1389
+ type: 'success',
1390
+ fieldKey: 'phone-number',
1391
+ text: el.form.error.required,
1392
+ },
1393
+ {
1394
+ type: 'success',
1395
+ fieldKey: 'phone-number-landline',
1396
+ text: el.form.error.required,
1397
+ },
1398
+ {
1399
+ type: 'success',
1400
+ fieldKey: 'iban',
1401
+ text: el.form.error.required,
1402
+ },
1403
+ {
1404
+ type: 'success',
1405
+ fieldKey: 'uuid4',
1406
+ text: el.form.error.required,
1407
+ },
1408
+ ],
1409
+ },
1410
+ {
1411
+ title: 'empty fill for inputs Input',
1412
+ describe: 'inputs Input scenario',
1413
+ fields: INPUTS_INPUT_FIELDS,
1414
+ fill: [],
1415
+ expect: [
1416
+ {
1417
+ type: 'error',
1418
+ fieldKey: 'age',
1419
+ text: el.form.error.required,
1420
+ },
1421
+ {
1422
+ type: 'error',
1423
+ fieldKey: 'email',
1424
+ text: el.form.error.required,
1425
+ },
1426
+ {
1427
+ type: 'error',
1428
+ fieldKey: 'location',
1429
+ text: el.form.error.required,
1430
+ },
1431
+ {
1432
+ type: 'error',
1433
+ fieldKey: 'postal-code',
1434
+ text: el.form.error.required,
1435
+ },
1436
+ {
1437
+ type: 'error',
1438
+ fieldKey: 'afm',
1439
+ text: el.form.error.required,
1440
+ },
1441
+ {
1442
+ type: 'error',
1443
+ fieldKey: 'desired-mount',
1444
+ text: el.form.error.required,
1445
+ },
1446
+ {
1447
+ type: 'error',
1448
+ fieldKey: 'mobile-phone',
1449
+ text: el.form.error.required,
1450
+ },
1451
+ {
1452
+ type: 'error',
1453
+ fieldKey: 'phone-number',
1454
+ text: el.form.error.required,
1455
+ },
1456
+ {
1457
+ type: 'error',
1458
+ fieldKey: 'phone-number-landline',
1459
+ text: el.form.error.required,
1460
+ },
1461
+ {
1462
+ type: 'error',
1463
+ fieldKey: 'iban',
1464
+ text: el.form.error.required,
1465
+ },
1466
+ {
1467
+ type: 'error',
1468
+ fieldKey: 'uuid4',
1469
+ text: el.form.error.required,
1470
+ },
1471
+ ],
1472
+ },
1473
+ {
1474
+ title: 'incorrect types for inputs Input',
1475
+ describe: 'inputs Input scenario',
1476
+ fields: INPUTS_INPUT_FIELDS,
1477
+ fill: [
1478
+ {
1479
+ fieldKey: 'age',
1480
+ value: 'aa',
1481
+ },
1482
+ {
1483
+ fieldKey: 'email',
1484
+ value: '23232',
1485
+ },
1486
+ {
1487
+ fieldKey: 'location',
1488
+ value: '23232',
1489
+ },
1490
+ {
1491
+ fieldKey: 'postal-code',
1492
+ value: 'aaaaa',
1493
+ },
1494
+ {
1495
+ fieldKey: 'afm',
1496
+ value: 'aaaaaaaaa',
1497
+ },
1498
+ {
1499
+ fieldKey: 'desired-mount',
1500
+ value: 'aaa',
1501
+ },
1502
+ {
1503
+ fieldKey: 'mobile-phone',
1504
+ value: '+33690000000',
1505
+ },
1506
+ {
1507
+ fieldKey: 'phone-number',
1508
+ value: '000000000',
1509
+ },
1510
+ {
1511
+ fieldKey: 'phone-number-landline',
1512
+ value: '000000000',
1513
+ },
1514
+ {
1515
+ fieldKey: 'iban',
1516
+ value: 'aaaaaa',
1517
+ },
1518
+ {
1519
+ fieldKey: 'uuid4',
1520
+ value: 'aaaaaa',
1521
+ },
1522
+ ],
1523
+ expect: [
1524
+ {
1525
+ type: 'error',
1526
+ fieldKey: 'age',
1527
+ text: el.form.error.number,
1528
+ },
1529
+ {
1530
+ type: 'error',
1531
+ fieldKey: 'email',
1532
+ text: el.form.error.email,
1533
+ },
1534
+ {
1535
+ type: 'success',
1536
+ fieldKey: 'location',
1537
+ text: el.form.error.string,
1538
+ },
1539
+ {
1540
+ type: 'error',
1541
+ fieldKey: 'postal-code',
1542
+ text: el.form.error.postalCode,
1543
+ },
1544
+ {
1545
+ type: 'error',
1546
+ fieldKey: 'afm',
1547
+ text: el.form.error.afm,
1548
+ },
1549
+ {
1550
+ type: 'error',
1551
+ fieldKey: 'desired-mount',
1552
+ text: el.form.error.number,
1553
+ },
1554
+ {
1555
+ type: 'error',
1556
+ fieldKey: 'mobile-phone',
1557
+ text: el.form.error.mobile_phone,
1558
+ },
1559
+ {
1560
+ type: 'error',
1561
+ fieldKey: 'phone-number',
1562
+ text: el.form.error.phone_number,
1563
+ },
1564
+ {
1565
+ type: 'error',
1566
+ fieldKey: 'phone-number-landline',
1567
+ text: el.form.error.landline,
1568
+ },
1569
+ {
1570
+ type: 'error',
1571
+ fieldKey: 'iban',
1572
+ text: el.form.error.iban,
1573
+ },
1574
+ {
1575
+ type: 'error',
1576
+ fieldKey: 'uuid4',
1577
+ text: el.form.error.uuid4,
1578
+ },
1579
+ ],
1580
+ },
1581
+ ];
1582
+
1583
+ const multiplicityScenarioTitles = [
1584
+ 'add 0 items with min=3',
1585
+ 'add 1 item with min=3',
1586
+ 'add 3 items with min=3',
1587
+ 'add 1 item with max=3',
1588
+ 'add 3 items with max=3',
1589
+ 'add 4 items with max=3',
1590
+ 'add 1 item with min=2 and max=3',
1591
+ 'add 3 items with min=2 and max=3',
1592
+ 'add 4 items with min=2 and max=3',
1593
+ 'add 1 item with exact=3',
1594
+ 'add 3 items with exact=3',
1595
+ 'add 4 items with exact=3',
1596
+ ];
1597
+
1598
+ const multiplicityFieldsTemplate = {
1599
+ key: 'multiplicity',
1600
+ type: 'array',
1601
+ multiplicity: true,
1602
+ label: {
1603
+ primary: 'Εξαρτώμενα μέλη',
1604
+ secondary:
1605
+ 'Τα εξαρτώμενα μέλη είναι φυσικά πρόσωπα που υπάγονται στη φορολογική σας δήλωση',
1606
+ },
1607
+ extra: {
1608
+ label: {
1609
+ object: {
1610
+ title: 'Εξαρτώμενο μέλος',
1611
+ add: 'Προσθήκη',
1612
+ delete: 'Αφαίρεση μέλους',
1613
+ },
1614
+ question: {
1615
+ title: 'Θέλετε να προσθέσετε εξαρτώμενα μέλη;',
1616
+ yes: 'Ναι',
1617
+ no: 'Όχι',
1618
+ },
1619
+ },
1620
+ of: {
1621
+ type: 'object',
1622
+ label: {
1623
+ primary: 'Στοιχεία εξαρτώμενου μέλους',
1624
+ secondary:
1625
+ 'Συμπληρώστε τα στοιχεία παρακάτω και μετά πατήστε το κουμπί «Προσθήκη»',
1626
+ },
1627
+ extra: {
1628
+ fields: [
1629
+ {
1630
+ key: 'firstName',
1631
+ required: true,
1632
+ type: 'string',
1633
+ label: {
1634
+ primary: 'Όνομα',
1635
+ },
1636
+ },
1637
+ {
1638
+ key: 'lastName',
1639
+ required: true,
1640
+ type: 'string',
1641
+ label: {
1642
+ primary: 'Επώνυμο',
1643
+ },
1644
+ },
1645
+ {
1646
+ key: 'dob',
1647
+ required: true,
1648
+ type: 'date',
1649
+ label: {
1650
+ primary: 'Ημερομηνία γέννησης',
1651
+ },
1652
+ extra: {
1653
+ max: 'now',
1654
+ },
1655
+ },
1656
+ ],
1657
+ },
1658
+ },
1659
+ },
1660
+ };
1661
+
1662
+ const multiplicityFillTemplate = {
1663
+ fieldKey: 'multiplicity',
1664
+ value: {
1665
+ question: 'yes',
1666
+ of: {
1667
+ type: 'object',
1668
+ extra: {
1669
+ fields: [
1670
+ {
1671
+ fieldKey: 'firstName',
1672
+ value: 'FirstName',
1673
+ },
1674
+ {
1675
+ fieldKey: 'lastName',
1676
+ value: 'LastName',
1677
+ },
1678
+ {
1679
+ fieldKey: 'dob',
1680
+ value: {
1681
+ day: '20',
1682
+ month: '11',
1683
+ year: '2020',
1684
+ },
1685
+ },
1686
+ ],
1687
+ action: 'add',
1688
+ },
1689
+ },
1690
+ },
1691
+ };
1692
+
1693
+ const multiplicityScenarios: any[] = [];
1694
+ const locals = {
1695
+ min: el.form.error.array.min,
1696
+ max: el.form.error.array.max,
1697
+ length: el.form.error.array.length,
1698
+ required: el.form.error.required,
1699
+ };
1700
+ multiplicityScenarios.push(
1701
+ ...generateScenarios(
1702
+ multiplicityScenarioTitles,
1703
+ multiplicityFillTemplate,
1704
+ multiplicityFieldsTemplate,
1705
+ 'multiplicity',
1706
+ true,
1707
+ locals
1708
+ )
1709
+ );
1710
+
1711
+ const fieldArrayScenarioTitles = [
1712
+ 'add 0 items with min=3',
1713
+ 'add 1 item with min=3',
1714
+ 'add 3 items with min=3',
1715
+ 'add 1 item with max=3',
1716
+ 'add 3 items with max=3',
1717
+ 'add 4 items with max=3',
1718
+ 'add 1 item with min=2 and max=3',
1719
+ 'add 3 items with min=2 and max=3',
1720
+ 'add 4 items with min=2 and max=3',
1721
+ 'add 1 item with exact=3',
1722
+ 'add 3 items with exact=3',
1723
+ 'add 4 items with exact=3',
1724
+ ];
1725
+
1726
+ const fieldArrayFieldsTemplate = {
1727
+ key: 'fieldArray',
1728
+ type: 'array',
1729
+ label: {
1730
+ primary: 'Εξαρτώμενα μέλη',
1731
+ secondary:
1732
+ 'Τα εξαρτώμενα μέλη είναι φυσικά πρόσωπα που υπάγονται στη φορολογική σας δήλωση',
1733
+ },
1734
+ extra: {
1735
+ label: {
1736
+ object: {
1737
+ title: 'Εξαρτώμενο μέλος',
1738
+ add: 'Προσθήκη',
1739
+ delete: 'Αφαίρεση μέλους',
1740
+ },
1741
+ question: {
1742
+ title: 'Θέλετε να προσθέσετε εξαρτώμενα μέλη;',
1743
+ yes: 'Ναι',
1744
+ no: 'Όχι',
1745
+ },
1746
+ },
1747
+ of: {
1748
+ type: 'object',
1749
+ label: {
1750
+ primary: 'Στοιχεία εξαρτώμενου μέλους',
1751
+ secondary:
1752
+ 'Συμπληρώστε τα στοιχεία παρακάτω και μετά πατήστε το κουμπί «Προσθήκη»',
1753
+ },
1754
+ extra: {
1755
+ fields: [
1756
+ {
1757
+ key: 'firstName',
1758
+ required: true,
1759
+ type: 'string',
1760
+ label: {
1761
+ primary: 'Όνομα',
1762
+ },
1763
+ },
1764
+ {
1765
+ key: 'lastName',
1766
+ required: true,
1767
+ type: 'string',
1768
+ label: {
1769
+ primary: 'Επώνυμο',
1770
+ },
1771
+ },
1772
+ {
1773
+ key: 'dob',
1774
+ required: true,
1775
+ type: 'date',
1776
+ label: {
1777
+ primary: 'Ημερομηνία γέννησης',
1778
+ },
1779
+ extra: {
1780
+ max: 'now',
1781
+ },
1782
+ },
1783
+ ],
1784
+ },
1785
+ },
1786
+ },
1787
+ };
1788
+
1789
+ const fieldArrayFillTemplate = {
1790
+ fieldKey: 'fieldArray',
1791
+ value: {
1792
+ question: 'yes',
1793
+ of: {
1794
+ type: 'object',
1795
+ extra: {
1796
+ fields: [
1797
+ {
1798
+ fieldKey: 'firstName',
1799
+ value: 'FirstName',
1800
+ },
1801
+ {
1802
+ fieldKey: 'lastName',
1803
+ value: 'LastName',
1804
+ },
1805
+ {
1806
+ fieldKey: 'dob',
1807
+ value: {
1808
+ day: '20',
1809
+ month: '11',
1810
+ year: '2020',
1811
+ },
1812
+ },
1813
+ ],
1814
+ action: 'add',
1815
+ },
1816
+ },
1817
+ },
1818
+ };
1819
+
1820
+ const fieldArrayScenarios: any[] = [];
1821
+ const tmpLocals = {
1822
+ min: el.form.error.array.min,
1823
+ max: el.form.error.array.max,
1824
+ length: el.form.error.array.length,
1825
+ required: el.form.error.required,
1826
+ };
1827
+ fieldArrayScenarios.push(
1828
+ ...generateScenarios(
1829
+ fieldArrayScenarioTitles,
1830
+ fieldArrayFillTemplate,
1831
+ fieldArrayFieldsTemplate,
1832
+ 'fieldArray',
1833
+ false,
1834
+ tmpLocals
1835
+ )
1836
+ );
1837
+
1838
+ const scenarios = [
1839
+ ...fieldArrayScenarios,
1840
+ ...multiplicityScenarios,
1841
+ ...inputsScenarios,
1842
+ ...inputsInputScenarios,
1843
+ ];
1844
+
1845
+ for (const scenario of scenarios) {
1846
+ test.describe(scenario.describe, () => {
1847
+ test(scenario.title, async ({ mount, page }) => {
1848
+ const formBuilder = await mount(
1849
+ // @ts-ignore
1850
+ <FormBuilder auto={true} fields={scenario.fields} onSubmit={() => {}} />
1851
+ );
1852
+ await fillFields(page, formBuilder, scenario);
1853
+ await submitForm(formBuilder);
1854
+
1855
+ const screenshot = await page.screenshot({
1856
+ fullPage: true,
1857
+ animations: 'disabled',
1858
+ });
1859
+ expect(screenshot).toMatchSnapshot();
1860
+
1861
+ await expectErrorMessages(formBuilder, scenario.expect, expect);
1862
+ });
1863
+ });
1864
+ }