@digigov/form 2.0.0-8de46296 → 2.0.0-a0ac149e

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 (902) hide show
  1. package/Field/ErrorGroup/index.js +48 -0
  2. package/{Questions/index.spec → Field/ErrorGroup}/package.json +1 -1
  3. package/Field/ErrorGroup.d.ts +15 -0
  4. package/Field/ErrorGroup.js.map +7 -0
  5. package/Field/FieldBase/index.js +115 -76
  6. package/Field/FieldBase.d.ts +1 -1
  7. package/Field/FieldBase.js.map +7 -0
  8. package/Field/FieldBaseContainer/index.js +50 -38
  9. package/Field/FieldBaseContainer.d.ts +2 -2
  10. package/Field/FieldBaseContainer.js.map +7 -0
  11. package/Field/FieldConditional/index.js +83 -53
  12. package/Field/FieldConditional.d.ts +1 -1
  13. package/Field/FieldConditional.js.map +7 -0
  14. package/Field/index.d.ts +1 -1
  15. package/Field/index.js +106 -66
  16. package/Field/index.js.map +7 -0
  17. package/Field/types/index.js +1 -1
  18. package/Field/types.d.ts +59 -11
  19. package/Field/types.js.map +7 -0
  20. package/Field/utils/evaluateFieldWithConditions/index.js +26 -0
  21. package/{inputs/DateInput/__stories__/Default → Field/utils/evaluateFieldWithConditions}/package.json +1 -1
  22. package/Field/utils/evaluateFieldWithConditions.d.ts +2 -0
  23. package/Field/utils/evaluateFieldWithConditions.js.map +7 -0
  24. package/Field/utils/resolveField/index.js +35 -0
  25. package/{Questions/Questions.stories → Field/utils/resolveField}/package.json +1 -1
  26. package/Field/utils/resolveField.d.ts +3 -0
  27. package/Field/utils/resolveField.js.map +7 -0
  28. package/Field/utils/useField/index.js +66 -0
  29. package/{FormBuilder/FormBuilder → Field/utils/useField}/package.json +1 -1
  30. package/Field/utils/useField.d.ts +2 -0
  31. package/Field/utils/useField.js.map +7 -0
  32. package/FieldArray/BaseFieldArray/index.js +76 -0
  33. package/FieldArray/BaseFieldArray/package.json +6 -0
  34. package/FieldArray/BaseFieldArray.d.ts +5 -0
  35. package/FieldArray/BaseFieldArray.js.map +7 -0
  36. package/FieldArray/FieldArray.stories.d.ts +3 -2
  37. package/FieldArray/FormDialog/ArrayDisplay/ArrayDisplay.stories.d.ts +10 -0
  38. package/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay/index.js +97 -0
  39. package/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay/package.json +6 -0
  40. package/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay.d.ts +22 -0
  41. package/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay.js.map +7 -0
  42. package/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader/index.js +11 -0
  43. package/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader/package.json +6 -0
  44. package/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader.d.ts +5 -0
  45. package/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader.js.map +7 -0
  46. package/FieldArray/FormDialog/ArrayDisplay/__stories__/Default.d.ts +2 -0
  47. package/FieldArray/FormDialog/ArrayDisplay/__stories__/ReadOnly.d.ts +2 -0
  48. package/FieldArray/FormDialog/ArrayDisplay/__stories__/Sortable.d.ts +2 -0
  49. package/FieldArray/FormDialog/ArrayDisplay/index.d.ts +14 -0
  50. package/FieldArray/FormDialog/ArrayDisplay/index.js +51 -0
  51. package/FieldArray/FormDialog/ArrayDisplay/index.js.map +7 -0
  52. package/{inputs/DateInput/DateInput.stories → FieldArray/FormDialog/ArrayDisplay}/package.json +1 -1
  53. package/FieldArray/FormDialog/ArrayEditModal/index.js +149 -0
  54. package/{inputs/Checkboxes/Checkboxes.stories → FieldArray/FormDialog/ArrayEditModal}/package.json +1 -1
  55. package/FieldArray/FormDialog/ArrayEditModal.d.ts +26 -0
  56. package/FieldArray/FormDialog/ArrayEditModal.js.map +7 -0
  57. package/FieldArray/FormDialog/index.d.ts +19 -0
  58. package/FieldArray/FormDialog/index.js +193 -0
  59. package/FieldArray/FormDialog/index.js.map +7 -0
  60. package/FieldArray/FormDialog/package.json +6 -0
  61. package/FieldArray/__stories__/Default.d.ts +2 -2
  62. package/FieldArray/__stories__/WithExactLength.d.ts +2 -2
  63. package/FieldArray/__stories__/WithModal.d.ts +2 -0
  64. package/FieldArray/index.d.ts +11 -2
  65. package/FieldArray/index.js +87 -59
  66. package/FieldArray/index.js.map +7 -0
  67. package/FieldObject/index.d.ts +11 -3
  68. package/FieldObject/index.js +78 -52
  69. package/FieldObject/index.js.map +7 -0
  70. package/Fieldset/FieldsetWithContext/index.js +27 -31
  71. package/Fieldset/FieldsetWithContext.js.map +7 -0
  72. package/Fieldset/index.d.ts +2 -2
  73. package/Fieldset/index.js +27 -29
  74. package/Fieldset/index.js.map +7 -0
  75. package/Fieldset/types/index.js +1 -1
  76. package/Fieldset/types.d.ts +3 -2
  77. package/Fieldset/types.js.map +7 -0
  78. package/FormBuilder/FormBuilder.stories.d.ts +5 -1
  79. package/FormBuilder/__stories__/AutoErrorGrouping.d.ts +3 -0
  80. package/FormBuilder/__stories__/Default.d.ts +2 -2
  81. package/FormBuilder/__stories__/ErrorGrouping.d.ts +3 -0
  82. package/FormBuilder/index.d.ts +8 -1
  83. package/FormBuilder/index.js +266 -2
  84. package/FormBuilder/index.js.map +7 -0
  85. package/FormContext/index.js +11 -3
  86. package/FormContext.d.ts +3 -2
  87. package/FormContext.js.map +7 -0
  88. package/MultiplicityField/MultiplicityField.stories.d.ts +8 -6
  89. package/MultiplicityField/__stories__/Default.d.ts +2 -2
  90. package/MultiplicityField/__stories__/PreviewDisplay.d.ts +2 -2
  91. package/MultiplicityField/__stories__/WithExactLength.d.ts +2 -2
  92. package/MultiplicityField/__stories__/WithMaxLength.d.ts +2 -2
  93. package/MultiplicityField/__stories__/WithMinAndMaxLength.d.ts +2 -2
  94. package/MultiplicityField/__stories__/WithMinLength.d.ts +2 -2
  95. package/MultiplicityField/add-objects/index.js +131 -133
  96. package/MultiplicityField/add-objects.d.ts +3 -2
  97. package/MultiplicityField/add-objects.js.map +7 -0
  98. package/MultiplicityField/index.d.ts +2 -19
  99. package/MultiplicityField/index.js +117 -101
  100. package/MultiplicityField/index.js.map +7 -0
  101. package/MultiplicityField/types/index.js +1 -0
  102. package/MultiplicityField/types/package.json +6 -0
  103. package/MultiplicityField/types.d.ts +19 -0
  104. package/MultiplicityField/types.js.map +7 -0
  105. package/Questions/Questions/index.js +48 -56
  106. package/Questions/Questions.d.ts +1 -1
  107. package/Questions/Questions.js.map +7 -0
  108. package/Questions/Questions.stories.d.ts +3 -1
  109. package/Questions/QuestionsContext/index.js +9 -9
  110. package/Questions/QuestionsContext.d.ts +1 -2
  111. package/Questions/QuestionsContext.js.map +7 -0
  112. package/Questions/Step/ReviewStep/index.js +35 -47
  113. package/Questions/Step/ReviewStep.js.map +7 -0
  114. package/Questions/Step/Step/index.js +39 -47
  115. package/Questions/Step/Step.d.ts +1 -1
  116. package/Questions/Step/Step.js.map +7 -0
  117. package/Questions/Step/StepArrayReview/index.js +41 -45
  118. package/Questions/Step/StepArrayReview.d.ts +1 -1
  119. package/Questions/Step/StepArrayReview.js.map +7 -0
  120. package/Questions/Step/StepContext/index.js +15 -19
  121. package/Questions/Step/StepContext.d.ts +1 -2
  122. package/Questions/Step/StepContext.js.map +7 -0
  123. package/Questions/Step/StepDescription/index.js +22 -22
  124. package/Questions/Step/StepDescription.d.ts +1 -1
  125. package/Questions/Step/StepDescription.js.map +7 -0
  126. package/Questions/Step/StepForm/index.js +33 -43
  127. package/Questions/Step/StepForm.d.ts +2 -2
  128. package/Questions/Step/StepForm.js.map +7 -0
  129. package/Questions/Step/StepQuote/index.js +10 -9
  130. package/Questions/Step/StepQuote.d.ts +1 -1
  131. package/Questions/Step/StepQuote.js.map +7 -0
  132. package/Questions/Step/StepTitle/index.js +41 -38
  133. package/Questions/Step/StepTitle.d.ts +2 -1
  134. package/Questions/Step/StepTitle.js.map +7 -0
  135. package/Questions/Step/getAddMoreFields/index.js +28 -20
  136. package/Questions/Step/getAddMoreFields.d.ts +2 -2
  137. package/Questions/Step/getAddMoreFields.js.map +7 -0
  138. package/Questions/Step/index.d.ts +0 -1
  139. package/Questions/Step/index.js +16 -13
  140. package/Questions/Step/index.js.map +7 -0
  141. package/Questions/Step/types/index.js +1 -1
  142. package/Questions/Step/types.d.ts +2 -1
  143. package/Questions/Step/types.js.map +7 -0
  144. package/Questions/__stories__/Default.d.ts +2 -2
  145. package/Questions/getNextStep/index.js +12 -10
  146. package/Questions/getNextStep.d.ts +1 -1
  147. package/Questions/getNextStep.js.map +7 -0
  148. package/Questions/index.js +7 -3
  149. package/Questions/index.js.map +7 -0
  150. package/Questions/types/index.js +1 -1
  151. package/Questions/types.d.ts +2 -1
  152. package/Questions/types.js.map +7 -0
  153. package/cjs/Field/ErrorGroup/index.js +82 -0
  154. package/cjs/Field/ErrorGroup.js.map +7 -0
  155. package/cjs/Field/FieldBase/index.js +147 -82
  156. package/cjs/Field/FieldBase.js.map +7 -0
  157. package/cjs/Field/FieldBaseContainer/index.js +83 -45
  158. package/cjs/Field/FieldBaseContainer.js.map +7 -0
  159. package/cjs/Field/FieldConditional/index.js +115 -59
  160. package/cjs/Field/FieldConditional.js.map +7 -0
  161. package/cjs/Field/index.js +138 -75
  162. package/cjs/Field/index.js.map +7 -0
  163. package/cjs/Field/types/index.js +16 -5
  164. package/cjs/Field/types.js.map +7 -0
  165. package/cjs/Field/utils/evaluateFieldWithConditions/index.js +49 -0
  166. package/cjs/Field/utils/evaluateFieldWithConditions.js.map +7 -0
  167. package/cjs/Field/utils/resolveField/index.js +55 -0
  168. package/cjs/Field/utils/resolveField.js.map +7 -0
  169. package/cjs/Field/utils/useField/index.js +89 -0
  170. package/cjs/Field/utils/useField.js.map +7 -0
  171. package/cjs/FieldArray/BaseFieldArray/index.js +109 -0
  172. package/cjs/FieldArray/BaseFieldArray.js.map +7 -0
  173. package/cjs/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay/index.js +130 -0
  174. package/cjs/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay.js.map +7 -0
  175. package/cjs/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader/index.js +44 -0
  176. package/cjs/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader.js.map +7 -0
  177. package/cjs/FieldArray/FormDialog/ArrayDisplay/index.js +84 -0
  178. package/cjs/FieldArray/FormDialog/ArrayDisplay/index.js.map +7 -0
  179. package/cjs/FieldArray/FormDialog/ArrayEditModal/index.js +177 -0
  180. package/cjs/FieldArray/FormDialog/ArrayEditModal.js.map +7 -0
  181. package/cjs/FieldArray/FormDialog/index.js +220 -0
  182. package/cjs/FieldArray/FormDialog/index.js.map +7 -0
  183. package/cjs/FieldArray/index.js +119 -65
  184. package/cjs/FieldArray/index.js.map +7 -0
  185. package/cjs/FieldObject/index.js +110 -61
  186. package/cjs/FieldObject/index.js.map +7 -0
  187. package/cjs/Fieldset/FieldsetWithContext/index.js +54 -40
  188. package/cjs/Fieldset/FieldsetWithContext.js.map +7 -0
  189. package/cjs/Fieldset/index.js +61 -39
  190. package/cjs/Fieldset/index.js.map +7 -0
  191. package/cjs/Fieldset/types/index.js +16 -5
  192. package/cjs/Fieldset/types.js.map +7 -0
  193. package/cjs/FormBuilder/index.js +301 -7
  194. package/cjs/FormBuilder/index.js.map +7 -0
  195. package/cjs/FormContext/index.js +34 -8
  196. package/cjs/FormContext.js.map +7 -0
  197. package/cjs/MultiplicityField/add-objects/index.js +163 -139
  198. package/cjs/MultiplicityField/add-objects.js.map +7 -0
  199. package/cjs/MultiplicityField/index.js +145 -110
  200. package/cjs/MultiplicityField/index.js.map +7 -0
  201. package/cjs/MultiplicityField/types/index.js +16 -0
  202. package/cjs/MultiplicityField/types.js.map +7 -0
  203. package/cjs/Questions/Questions/index.js +80 -65
  204. package/cjs/Questions/Questions.js.map +7 -0
  205. package/cjs/Questions/QuestionsContext/index.js +31 -14
  206. package/cjs/Questions/QuestionsContext.js.map +7 -0
  207. package/cjs/Questions/Step/ReviewStep/index.js +61 -56
  208. package/cjs/Questions/Step/ReviewStep.js.map +7 -0
  209. package/cjs/Questions/Step/Step/index.js +71 -56
  210. package/cjs/Questions/Step/Step.js.map +7 -0
  211. package/cjs/Questions/Step/StepArrayReview/index.js +65 -54
  212. package/cjs/Questions/Step/StepArrayReview.js.map +7 -0
  213. package/cjs/Questions/Step/StepContext/index.js +37 -24
  214. package/cjs/Questions/Step/StepContext.js.map +7 -0
  215. package/cjs/Questions/Step/StepDescription/index.js +55 -31
  216. package/cjs/Questions/Step/StepDescription.js.map +7 -0
  217. package/cjs/Questions/Step/StepForm/index.js +65 -52
  218. package/cjs/Questions/Step/StepForm.js.map +7 -0
  219. package/cjs/Questions/Step/StepQuote/index.js +42 -15
  220. package/cjs/Questions/Step/StepQuote.js.map +7 -0
  221. package/cjs/Questions/Step/StepTitle/index.js +72 -47
  222. package/cjs/Questions/Step/StepTitle.js.map +7 -0
  223. package/cjs/Questions/Step/getAddMoreFields/index.js +50 -25
  224. package/cjs/Questions/Step/getAddMoreFields.js.map +7 -0
  225. package/cjs/Questions/Step/index.js +59 -143
  226. package/cjs/Questions/Step/index.js.map +7 -0
  227. package/cjs/Questions/Step/types/index.js +16 -5
  228. package/cjs/Questions/Step/types.js.map +7 -0
  229. package/cjs/Questions/getNextStep/index.js +33 -14
  230. package/cjs/Questions/getNextStep.js.map +7 -0
  231. package/cjs/Questions/index.js +29 -19
  232. package/cjs/Questions/index.js.map +7 -0
  233. package/cjs/Questions/types/index.js +16 -5
  234. package/cjs/Questions/types.js.map +7 -0
  235. package/cjs/hooks/useFieldFocusManager/index.js +135 -0
  236. package/cjs/hooks/useFieldFocusManager.js.map +7 -0
  237. package/cjs/hooks/utils/index.js +98 -0
  238. package/cjs/hooks/utils.js.map +7 -0
  239. package/cjs/index.js +47 -20
  240. package/cjs/index.js.map +7 -0
  241. package/cjs/inputs/AutoCompleteInput/index.js +92 -46
  242. package/cjs/inputs/AutoCompleteInput/index.js.map +7 -0
  243. package/cjs/inputs/Checkboxes/index.js +102 -92
  244. package/cjs/inputs/Checkboxes/index.js.map +7 -0
  245. package/cjs/inputs/DateInput/index.js +164 -117
  246. package/cjs/inputs/DateInput/index.js.map +7 -0
  247. package/cjs/inputs/DateTimeInput/index.js +250 -0
  248. package/cjs/inputs/DateTimeInput/index.js.map +7 -0
  249. package/cjs/inputs/FileInput/index.js +115 -65
  250. package/cjs/inputs/FileInput/index.js.map +7 -0
  251. package/cjs/inputs/ImageInput/__stories__/logo.d/index.js +1 -0
  252. package/cjs/inputs/ImageInput/__stories__/logo.d.js.map +7 -0
  253. package/cjs/inputs/ImageInput/index.js +127 -83
  254. package/cjs/inputs/ImageInput/index.js.map +7 -0
  255. package/cjs/inputs/Input/index.js +101 -68
  256. package/cjs/inputs/Input/index.js.map +7 -0
  257. package/cjs/inputs/Label/index.js +45 -24
  258. package/cjs/inputs/Label/index.js.map +7 -0
  259. package/cjs/inputs/OtpInput/index.js +163 -127
  260. package/cjs/inputs/OtpInput/index.js.map +7 -0
  261. package/cjs/inputs/Radio/index.js +132 -61
  262. package/cjs/inputs/Radio/index.js.map +7 -0
  263. package/cjs/inputs/Select/index.js +61 -36
  264. package/cjs/inputs/Select/index.js.map +7 -0
  265. package/cjs/inputs/index.js +62 -69
  266. package/cjs/inputs/index.js.map +7 -0
  267. package/cjs/inputs/registry/index.js +121 -0
  268. package/cjs/inputs/registry.js.map +7 -0
  269. package/cjs/internal/index.js +36 -346
  270. package/cjs/internal.js.map +7 -0
  271. package/cjs/lazy.js +112 -0
  272. package/cjs/lazy.js.map +7 -0
  273. package/cjs/registry.js +205 -0
  274. package/cjs/registry.js.map +7 -0
  275. package/cjs/types/index.js +22 -5
  276. package/cjs/types.js.map +7 -0
  277. package/cjs/utils/index.js +93 -83
  278. package/cjs/utils.js.map +7 -0
  279. package/cjs/validators/index.js +139 -167
  280. package/cjs/validators/index.js.map +7 -0
  281. package/cjs/validators/types/index.js +16 -5
  282. package/cjs/validators/types.js.map +7 -0
  283. package/cjs/validators/utils/afm/index.js +38 -21
  284. package/cjs/validators/utils/afm.js.map +7 -0
  285. package/cjs/validators/utils/amka/index.js +60 -0
  286. package/cjs/validators/utils/amka.js.map +7 -0
  287. package/cjs/validators/utils/date/index.js +161 -0
  288. package/cjs/validators/utils/date.js.map +7 -0
  289. package/cjs/validators/utils/datetime/index.js +245 -0
  290. package/cjs/validators/utils/datetime.js.map +7 -0
  291. package/cjs/validators/utils/file/index.js +53 -43
  292. package/cjs/validators/utils/file.js.map +7 -0
  293. package/cjs/validators/utils/iban/index.js +36 -17
  294. package/cjs/validators/utils/iban.js.map +7 -0
  295. package/cjs/validators/utils/image/index.js +88 -112
  296. package/cjs/validators/utils/image.js.map +7 -0
  297. package/cjs/validators/utils/index.js +103 -159
  298. package/cjs/validators/utils/index.js.map +7 -0
  299. package/cjs/validators/utils/int/index.js +35 -13
  300. package/cjs/validators/utils/int.js.map +7 -0
  301. package/cjs/validators/utils/number/index.js +34 -12
  302. package/cjs/validators/utils/number.js.map +7 -0
  303. package/cjs/validators/utils/otp/index.js +35 -13
  304. package/cjs/validators/utils/otp.js.map +7 -0
  305. package/cjs/validators/utils/phone/index.js +113 -58
  306. package/cjs/validators/utils/phone.js.map +7 -0
  307. package/cjs/validators/utils/postal_code/index.js +36 -16
  308. package/cjs/validators/utils/postal_code.js.map +7 -0
  309. package/cjs/validators/utils/text_limit/index.js +40 -25
  310. package/cjs/validators/utils/text_limit.js.map +7 -0
  311. package/cjs/validators/utils/uuid4/index.js +34 -13
  312. package/cjs/validators/utils/uuid4.js.map +7 -0
  313. package/hooks/useFieldFocusManager/index.js +116 -0
  314. package/hooks/useFieldFocusManager/package.json +6 -0
  315. package/hooks/useFieldFocusManager.d.ts +25 -0
  316. package/hooks/useFieldFocusManager.js.map +7 -0
  317. package/hooks/utils/index.js +73 -0
  318. package/{Field → hooks}/utils/package.json +1 -1
  319. package/hooks/utils.d.ts +18 -0
  320. package/hooks/utils.js.map +7 -0
  321. package/index.d.ts +4 -1
  322. package/index.js +13 -4
  323. package/index.js.map +7 -0
  324. package/inputs/AutoCompleteInput/AutoComplete.stories.d.ts +4 -1
  325. package/inputs/AutoCompleteInput/__stories__/Default.d.ts +3 -2
  326. package/inputs/AutoCompleteInput/__stories__/Multiple.d.ts +3 -0
  327. package/inputs/AutoCompleteInput/index.d.ts +5 -5
  328. package/inputs/AutoCompleteInput/index.js +60 -37
  329. package/inputs/AutoCompleteInput/index.js.map +7 -0
  330. package/inputs/Checkboxes/Checkboxes.stories.d.ts +5 -3
  331. package/inputs/Checkboxes/__stories__/Conditional.d.ts +3 -2
  332. package/inputs/Checkboxes/__stories__/Default.d.ts +2 -2
  333. package/inputs/Checkboxes/__stories__/WithDivider.d.ts +2 -2
  334. package/inputs/Checkboxes/index.d.ts +5 -4
  335. package/inputs/Checkboxes/index.js +73 -82
  336. package/inputs/Checkboxes/index.js.map +7 -0
  337. package/inputs/DateInput/DateInput.stories.d.ts +7 -1
  338. package/inputs/DateInput/__stories__/Default.d.ts +2 -2
  339. package/inputs/DateInput/__stories__/WithDefaultValue.d.ts +3 -0
  340. package/inputs/DateInput/__stories__/WithInitialValue.d.ts +3 -0
  341. package/inputs/DateInput/__stories__/WithWrongDefaultValue.d.ts +3 -0
  342. package/inputs/DateInput/__stories__/WithWrongInitialValue.d.ts +3 -0
  343. package/inputs/DateInput/index.d.ts +3 -7
  344. package/inputs/DateInput/index.js +133 -106
  345. package/inputs/DateInput/index.js.map +7 -0
  346. package/inputs/DateTimeInput/DateTimeInput.stories.d.ts +14 -0
  347. package/inputs/DateTimeInput/__stories__/Default.d.ts +3 -0
  348. package/inputs/DateTimeInput/__stories__/WithDefaultValue.d.ts +3 -0
  349. package/inputs/DateTimeInput/__stories__/WithInitialValue.d.ts +3 -0
  350. package/inputs/DateTimeInput/__stories__/WithWrongDefaultValue.d.ts +3 -0
  351. package/inputs/DateTimeInput/__stories__/WithWrongInitialValue.d.ts +3 -0
  352. package/inputs/DateTimeInput/index.d.ts +10 -0
  353. package/inputs/DateTimeInput/index.js +220 -0
  354. package/inputs/DateTimeInput/index.js.map +7 -0
  355. package/inputs/DateTimeInput/package.json +6 -0
  356. package/inputs/FileInput/FileInput.stories.d.ts +4 -1
  357. package/inputs/FileInput/__stories__/Default.d.ts +2 -2
  358. package/inputs/FileInput/__stories__/WithBorderAndLink.d.ts +3 -0
  359. package/inputs/FileInput/index.d.ts +18 -2
  360. package/inputs/FileInput/index.js +83 -56
  361. package/inputs/FileInput/index.js.map +7 -0
  362. package/inputs/ImageInput/ImageInput.stories.d.ts +6 -3
  363. package/inputs/ImageInput/__stories__/Default.d.ts +2 -2
  364. package/inputs/ImageInput/__stories__/MaxSize.d.ts +3 -0
  365. package/inputs/ImageInput/__stories__/WithInitialValues.d.ts +3 -0
  366. package/inputs/ImageInput/__stories__/WithInvalidImageDimension.d.ts +2 -2
  367. package/inputs/ImageInput/__stories__/logo.d/index.js +1 -0
  368. package/inputs/{FileInput/__stories__/Default → ImageInput/__stories__/logo.d}/package.json +1 -1
  369. package/inputs/ImageInput/__stories__/logo.d.js.map +7 -0
  370. package/inputs/ImageInput/index.d.ts +10 -2
  371. package/inputs/ImageInput/index.js +95 -75
  372. package/inputs/ImageInput/index.js.map +7 -0
  373. package/inputs/Input/Input.stories.d.ts +15 -10
  374. package/inputs/Input/__stories__/AFM.d.ts +2 -2
  375. package/inputs/Input/__stories__/AMKA.d.ts +3 -0
  376. package/inputs/Input/__stories__/Boolean.d.ts +2 -2
  377. package/inputs/Input/__stories__/Email.d.ts +3 -0
  378. package/inputs/Input/__stories__/IBAN.d.ts +2 -2
  379. package/inputs/Input/__stories__/Integer.d.ts +2 -2
  380. package/inputs/Input/__stories__/LandlineNumber.d.ts +2 -2
  381. package/inputs/Input/__stories__/MobilePhone.d.ts +2 -2
  382. package/inputs/Input/__stories__/PhoneNumber.d.ts +2 -2
  383. package/inputs/Input/__stories__/PostalCode.d.ts +2 -2
  384. package/inputs/Input/__stories__/String.d.ts +3 -0
  385. package/inputs/Input/__stories__/StringWithTrimValidation.d.ts +3 -0
  386. package/inputs/Input/__stories__/TextWithLimit.d.ts +3 -0
  387. package/inputs/Input/index.d.ts +4 -3
  388. package/inputs/Input/index.js +69 -62
  389. package/inputs/Input/index.js.map +7 -0
  390. package/inputs/Label/Label.stories.d.ts +3 -1
  391. package/inputs/Label/__stories__/Default.d.ts +2 -2
  392. package/inputs/Label/index.d.ts +2 -4
  393. package/inputs/Label/index.js +12 -17
  394. package/inputs/Label/index.js.map +7 -0
  395. package/inputs/OtpInput/OtpInput.stories.d.ts +3 -1
  396. package/inputs/OtpInput/__stories__/Default.d.ts +2 -2
  397. package/inputs/OtpInput/index.d.ts +9 -6
  398. package/inputs/OtpInput/index.js +129 -117
  399. package/inputs/OtpInput/index.js.map +7 -0
  400. package/inputs/Radio/Radio.stories.d.ts +5 -3
  401. package/inputs/Radio/__stories__/Conditional.d.ts +3 -2
  402. package/inputs/Radio/__stories__/Default.d.ts +2 -2
  403. package/inputs/Radio/__stories__/WithDivider.d.ts +2 -2
  404. package/inputs/Radio/index.d.ts +8 -3
  405. package/inputs/Radio/index.js +103 -55
  406. package/inputs/Radio/index.js.map +7 -0
  407. package/inputs/Select/Select.stories.d.ts +3 -1
  408. package/inputs/Select/__stories__/Default.d.ts +2 -2
  409. package/inputs/Select/index.d.ts +5 -4
  410. package/inputs/Select/index.js +33 -31
  411. package/inputs/Select/index.js.map +7 -0
  412. package/inputs/index.js +21 -9
  413. package/inputs/index.js.map +7 -0
  414. package/inputs/registry/index.js +86 -0
  415. package/inputs/registry/package.json +6 -0
  416. package/inputs/registry.d.ts +5 -0
  417. package/inputs/registry.js.map +7 -0
  418. package/internal/index.js +10 -34
  419. package/internal.d.ts +2 -31
  420. package/internal.js.map +7 -0
  421. package/lazy/index.js +79 -0
  422. package/{Form.stories → lazy}/package.json +1 -1
  423. package/package.json +8 -9
  424. package/registry/index.js +136 -99
  425. package/src/Field/ErrorGroup.tsx +84 -0
  426. package/src/Field/FieldBase.tsx +41 -24
  427. package/src/Field/FieldBaseContainer.tsx +71 -47
  428. package/src/Field/FieldConditional.tsx +10 -2
  429. package/src/Field/doc.mdx +207 -0
  430. package/src/Field/index.tsx +40 -24
  431. package/src/Field/types.tsx +89 -13
  432. package/src/Field/utils/evaluateFieldWithConditions.ts +33 -0
  433. package/src/Field/utils/resolveField.ts +58 -0
  434. package/src/Field/utils/useField.ts +68 -0
  435. package/src/FieldArray/BaseFieldArray.tsx +97 -0
  436. package/src/FieldArray/FieldArray.stories.js +3 -2
  437. package/src/FieldArray/FormDialog/ArrayDisplay/ArrayDisplay.stories.js +11 -0
  438. package/src/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay.tsx +165 -0
  439. package/src/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader.tsx +15 -0
  440. package/src/FieldArray/FormDialog/ArrayDisplay/__stories__/Default.tsx +93 -0
  441. package/src/FieldArray/FormDialog/ArrayDisplay/__stories__/ReadOnly.tsx +79 -0
  442. package/src/FieldArray/FormDialog/ArrayDisplay/__stories__/Sortable.tsx +93 -0
  443. package/src/FieldArray/FormDialog/ArrayDisplay/index.tsx +75 -0
  444. package/src/FieldArray/FormDialog/ArrayEditModal.tsx +233 -0
  445. package/src/FieldArray/FormDialog/index.tsx +250 -0
  446. package/src/FieldArray/__stories__/Default.tsx +2 -1
  447. package/src/FieldArray/__stories__/WithExactLength.tsx +2 -1
  448. package/src/FieldArray/__stories__/WithModal.tsx +160 -0
  449. package/src/FieldArray/__tests__/fieldset-multiplicity.spec.tsx +271 -0
  450. package/src/FieldArray/__tests__/multiplicity-attachment.spec.tsx +280 -0
  451. package/src/FieldArray/__tests__/multiplicity-required.spec.tsx +131 -0
  452. package/src/FieldArray/__tests__/nested-fieldset-multiplicity.spec.tsx +627 -0
  453. package/src/FieldArray/__tests__/preference-multiple-choice.spec.tsx +222 -0
  454. package/src/FieldArray/index.spec.tsx +355 -0
  455. package/src/FieldArray/index.test.tsx +32 -0
  456. package/src/FieldArray/index.tsx +77 -55
  457. package/src/FieldObject/index.tsx +53 -27
  458. package/src/Fieldset/FieldsetWithContext.tsx +1 -1
  459. package/src/Fieldset/index.tsx +6 -6
  460. package/src/Fieldset/types.tsx +5 -3
  461. package/src/FormBuilder/FormBuilder.stories.js +6 -1
  462. package/src/FormBuilder/__stories__/AutoErrorGrouping.tsx +63 -0
  463. package/src/FormBuilder/__stories__/Default.tsx +1 -1
  464. package/src/FormBuilder/__stories__/ErrorGrouping.tsx +43 -0
  465. package/src/FormBuilder/{FormBuilder.mdx → doc.mdx} +27 -35
  466. package/src/FormBuilder/index.test.tsx +32 -0
  467. package/src/FormBuilder/index.tsx +314 -1
  468. package/src/FormBuilder/interaction.test.tsx +40 -0
  469. package/src/FormBuilder/scenarios.test.tsx +2736 -0
  470. package/src/FormContext.tsx +7 -3
  471. package/src/MultiplicityField/MultiplicityField.stories.js +9 -6
  472. package/src/MultiplicityField/__stories__/Default.tsx +1 -1
  473. package/src/MultiplicityField/__stories__/PreviewDisplay.tsx +3 -3
  474. package/src/MultiplicityField/__stories__/WithExactLength.tsx +2 -2
  475. package/src/MultiplicityField/__stories__/WithMaxLength.tsx +2 -2
  476. package/src/MultiplicityField/__stories__/WithMinAndMaxLength.tsx +2 -2
  477. package/src/MultiplicityField/__stories__/WithMinLength.tsx +2 -2
  478. package/src/MultiplicityField/add-objects.tsx +39 -30
  479. package/{cjs/MultiplicityField/MultiplicityField.mdx → src/MultiplicityField/doc.mdx} +112 -98
  480. package/src/MultiplicityField/index.test.tsx +44 -0
  481. package/src/MultiplicityField/index.tsx +21 -31
  482. package/src/MultiplicityField/types.ts +25 -0
  483. package/src/Questions/Questions.stories.js +4 -1
  484. package/src/Questions/Questions.tsx +6 -6
  485. package/src/Questions/QuestionsContext.tsx +1 -1
  486. package/src/Questions/Step/Step.tsx +1 -1
  487. package/src/Questions/Step/StepArrayReview.tsx +3 -3
  488. package/src/Questions/Step/StepContext.tsx +1 -1
  489. package/src/Questions/Step/StepDescription.tsx +2 -1
  490. package/src/Questions/Step/StepForm.tsx +2 -2
  491. package/src/Questions/Step/StepQuote.tsx +2 -1
  492. package/src/Questions/Step/StepTitle.tsx +6 -3
  493. package/src/Questions/Step/getAddMoreFields.tsx +2 -2
  494. package/src/Questions/Step/index.ts +0 -1
  495. package/src/Questions/Step/types.tsx +2 -1
  496. package/src/Questions/__snapshots__/index.spec.tsx.snap +74 -587
  497. package/src/Questions/__stories__/Default.tsx +1 -1
  498. package/src/Questions/{index.mdx → doc.mdx} +34 -57
  499. package/src/Questions/getNextStep.tsx +1 -1
  500. package/src/Questions/index.spec.tsx +17 -5
  501. package/src/Questions/index.test.tsx +24 -0
  502. package/src/Questions/types.tsx +2 -1
  503. package/src/create-simple-form.mdx +2 -6
  504. package/{index.mdx → src/doc.mdx} +29 -18
  505. package/src/hooks/__tests__/useFieldFocusManager.spec.tsx +1079 -0
  506. package/src/hooks/__tests__/utils.spec.ts +568 -0
  507. package/src/hooks/useFieldFocusManager.ts +162 -0
  508. package/src/hooks/utils.ts +122 -0
  509. package/src/index.ts +4 -1
  510. package/src/inputs/AutoCompleteInput/AutoComplete.stories.js +5 -1
  511. package/src/inputs/AutoCompleteInput/__stories__/Default.tsx +20 -19
  512. package/src/inputs/AutoCompleteInput/__stories__/Multiple.tsx +47 -0
  513. package/src/inputs/AutoCompleteInput/doc.mdx +18 -0
  514. package/src/inputs/AutoCompleteInput/index.test.tsx +28 -0
  515. package/src/inputs/AutoCompleteInput/index.tsx +48 -33
  516. package/src/inputs/Checkboxes/Checkboxes.stories.js +6 -3
  517. package/src/inputs/Checkboxes/__stories__/Conditional.tsx +3 -4
  518. package/src/inputs/Checkboxes/__stories__/Default.tsx +1 -1
  519. package/src/inputs/Checkboxes/__stories__/WithDivider.tsx +1 -1
  520. package/src/inputs/Checkboxes/doc.mdx +23 -0
  521. package/src/inputs/Checkboxes/index.test.tsx +32 -0
  522. package/src/inputs/Checkboxes/index.tsx +103 -92
  523. package/src/inputs/DateInput/DateInput.stories.js +8 -1
  524. package/src/inputs/DateInput/__stories__/Default.tsx +17 -16
  525. package/src/inputs/DateInput/__stories__/WithDefaultValue.tsx +26 -0
  526. package/src/inputs/DateInput/__stories__/WithInitialValue.tsx +28 -0
  527. package/src/inputs/DateInput/__stories__/WithWrongDefaultValue.tsx +26 -0
  528. package/src/inputs/DateInput/__stories__/WithWrongInitialValue.tsx +28 -0
  529. package/src/inputs/DateInput/doc.mdx +16 -0
  530. package/src/inputs/DateInput/index.test.tsx +40 -0
  531. package/src/inputs/DateInput/index.tsx +77 -27
  532. package/src/inputs/DateTimeInput/DateTimeInput.stories.js +14 -0
  533. package/src/inputs/DateTimeInput/__stories__/Default.tsx +25 -0
  534. package/src/inputs/DateTimeInput/__stories__/WithDefaultValue.tsx +26 -0
  535. package/src/inputs/DateTimeInput/__stories__/WithInitialValue.tsx +28 -0
  536. package/src/inputs/DateTimeInput/__stories__/WithWrongDefaultValue.tsx +26 -0
  537. package/src/inputs/DateTimeInput/__stories__/WithWrongInitialValue.tsx +28 -0
  538. package/src/inputs/DateTimeInput/doc.mdx +16 -0
  539. package/src/inputs/DateTimeInput/index.test.tsx +40 -0
  540. package/src/inputs/DateTimeInput/index.tsx +246 -0
  541. package/src/inputs/FileInput/FileInput.stories.js +5 -1
  542. package/src/inputs/FileInput/__stories__/Default.tsx +1 -1
  543. package/src/inputs/FileInput/__stories__/WithBorderAndLink.tsx +34 -0
  544. package/src/inputs/FileInput/doc.mdx +15 -0
  545. package/src/inputs/FileInput/index.test.tsx +28 -0
  546. package/src/inputs/FileInput/index.tsx +109 -42
  547. package/src/inputs/ImageInput/ImageInput.stories.js +7 -3
  548. package/src/inputs/ImageInput/__stories__/Default.tsx +1 -1
  549. package/src/inputs/ImageInput/__stories__/{WithInvalidImageSize.tsx → MaxSize.tsx} +5 -3
  550. package/src/inputs/ImageInput/__stories__/WithInitialValues.tsx +45 -0
  551. package/src/inputs/ImageInput/__stories__/WithInvalidImageDimension.tsx +3 -1
  552. package/src/inputs/ImageInput/__stories__/logo.d.ts +4 -0
  553. package/src/inputs/ImageInput/__stories__/logo.png +0 -0
  554. package/src/inputs/ImageInput/doc.mdx +23 -0
  555. package/src/inputs/ImageInput/index.test.tsx +36 -0
  556. package/src/inputs/ImageInput/index.tsx +104 -51
  557. package/src/inputs/Input/Input.stories.js +16 -10
  558. package/src/inputs/Input/__stories__/AFM.tsx +1 -1
  559. package/src/inputs/Input/__stories__/AMKA.tsx +23 -0
  560. package/src/inputs/Input/__stories__/Boolean.tsx +1 -1
  561. package/src/inputs/Input/__stories__/Email.tsx +23 -0
  562. package/src/inputs/Input/__stories__/IBAN.tsx +1 -1
  563. package/src/inputs/Input/__stories__/Integer.tsx +1 -1
  564. package/src/inputs/Input/__stories__/LandlineNumber.tsx +3 -2
  565. package/src/inputs/Input/__stories__/MobilePhone.tsx +2 -1
  566. package/src/inputs/Input/__stories__/PhoneNumber.tsx +2 -1
  567. package/src/inputs/Input/__stories__/PostalCode.tsx +2 -1
  568. package/src/inputs/Input/__stories__/{Default.tsx → String.tsx} +2 -2
  569. package/src/inputs/Input/__stories__/StringWithTrimValidation.tsx +26 -0
  570. package/src/inputs/Input/__stories__/{TextWithCharacterLimit.tsx → TextWithLimit.tsx} +3 -2
  571. package/src/inputs/Input/doc.mdx +56 -0
  572. package/src/inputs/Input/index.test.tsx +72 -0
  573. package/src/inputs/Input/index.tsx +87 -73
  574. package/src/inputs/Label/Label.stories.js +4 -1
  575. package/src/inputs/Label/__stories__/Default.tsx +4 -2
  576. package/src/inputs/Label/doc.mdx +14 -0
  577. package/src/inputs/Label/index.test.tsx +24 -0
  578. package/src/inputs/Label/index.tsx +4 -11
  579. package/src/inputs/OtpInput/OtpInput.stories.js +4 -1
  580. package/src/inputs/OtpInput/__stories__/Default.tsx +1 -1
  581. package/src/inputs/OtpInput/doc.mdx +16 -0
  582. package/src/inputs/OtpInput/index.test.tsx +24 -0
  583. package/src/inputs/OtpInput/index.tsx +46 -35
  584. package/src/inputs/Radio/Radio.stories.js +6 -3
  585. package/src/inputs/Radio/__stories__/Conditional.tsx +5 -2
  586. package/src/inputs/Radio/__stories__/Default.tsx +1 -1
  587. package/src/inputs/Radio/__stories__/WithDivider.tsx +1 -1
  588. package/src/inputs/Radio/doc.mdx +23 -0
  589. package/src/inputs/Radio/index.test.tsx +32 -0
  590. package/src/inputs/Radio/index.tsx +90 -12
  591. package/src/inputs/Select/Select.stories.js +4 -1
  592. package/src/inputs/Select/__stories__/Default.tsx +1 -1
  593. package/src/inputs/Select/doc.mdx +13 -0
  594. package/src/inputs/Select/index.test.tsx +24 -0
  595. package/src/inputs/Select/index.tsx +20 -9
  596. package/src/inputs/registry.ts +86 -0
  597. package/src/installation.mdx +2 -5
  598. package/src/internal.ts +2 -31
  599. package/src/lazy.js +79 -0
  600. package/src/registry.js +119 -89
  601. package/src/types.tsx +20 -65
  602. package/src/utils.ts +58 -35
  603. package/src/validators/index.ts +117 -99
  604. package/src/validators/types.ts +1 -1
  605. package/src/validators/utils/amka.ts +39 -0
  606. package/src/validators/utils/date.ts +131 -0
  607. package/src/validators/utils/datetime.ts +222 -0
  608. package/src/validators/utils/file.ts +36 -20
  609. package/src/validators/utils/iban.ts +2 -2
  610. package/src/validators/utils/image.ts +2 -2
  611. package/src/validators/utils/index.ts +8 -3
  612. package/src/validators/utils/int.ts +2 -2
  613. package/src/validators/utils/number.ts +2 -2
  614. package/src/validators/utils/otp.ts +2 -2
  615. package/src/validators/utils/phone.ts +65 -74
  616. package/src/validators/utils/postal_code.ts +3 -3
  617. package/src/validators/utils/text_limit.ts +2 -2
  618. package/src/validators/utils/uuid4.ts +2 -1
  619. package/src/validators/validators.spec.ts +6 -40
  620. package/types/index.js +2 -1
  621. package/types.d.ts +13 -37
  622. package/types.js.map +7 -0
  623. package/utils/index.js +71 -77
  624. package/utils.d.ts +3 -1
  625. package/utils.js.map +7 -0
  626. package/validators/index.d.ts +6 -6
  627. package/validators/index.js +121 -153
  628. package/validators/index.js.map +7 -0
  629. package/validators/types/index.js +1 -1
  630. package/validators/types.d.ts +1 -1
  631. package/validators/types.js.map +7 -0
  632. package/validators/utils/afm/index.js +16 -16
  633. package/validators/utils/afm.js.map +7 -0
  634. package/validators/utils/amka/index.js +36 -0
  635. package/validators/utils/amka/package.json +6 -0
  636. package/validators/utils/amka.d.ts +6 -0
  637. package/validators/utils/amka.js.map +7 -0
  638. package/validators/utils/date/index.js +126 -0
  639. package/validators/utils/date/package.json +6 -0
  640. package/validators/utils/date.d.ts +9 -0
  641. package/validators/utils/date.js.map +7 -0
  642. package/validators/utils/datetime/index.js +210 -0
  643. package/validators/utils/datetime/package.json +6 -0
  644. package/validators/utils/datetime.d.ts +9 -0
  645. package/validators/utils/datetime.js.map +7 -0
  646. package/validators/utils/file/index.js +31 -38
  647. package/validators/utils/file.d.ts +2 -2
  648. package/validators/utils/file.js.map +7 -0
  649. package/validators/utils/iban/index.js +14 -12
  650. package/validators/utils/iban.d.ts +2 -2
  651. package/validators/utils/iban.js.map +7 -0
  652. package/validators/utils/image/index.js +66 -106
  653. package/validators/utils/image.d.ts +2 -2
  654. package/validators/utils/image.js.map +7 -0
  655. package/validators/utils/index.d.ts +5 -2
  656. package/validators/utils/index.js +59 -48
  657. package/validators/utils/index.js.map +7 -0
  658. package/validators/utils/int/index.js +13 -8
  659. package/validators/utils/int.d.ts +1 -1
  660. package/validators/utils/int.js.map +7 -0
  661. package/validators/utils/number/index.js +12 -7
  662. package/validators/utils/number.d.ts +1 -1
  663. package/validators/utils/number.js.map +7 -0
  664. package/validators/utils/otp/index.js +13 -8
  665. package/validators/utils/otp.d.ts +2 -2
  666. package/validators/utils/otp.js.map +7 -0
  667. package/validators/utils/phone/index.js +89 -51
  668. package/validators/utils/phone.d.ts +3 -3
  669. package/validators/utils/phone.js.map +7 -0
  670. package/validators/utils/postal_code/index.js +14 -11
  671. package/validators/utils/postal_code.d.ts +3 -3
  672. package/validators/utils/postal_code.js.map +7 -0
  673. package/validators/utils/text_limit/index.js +18 -20
  674. package/validators/utils/text_limit.d.ts +2 -2
  675. package/validators/utils/text_limit.js.map +7 -0
  676. package/validators/utils/uuid4/index.js +12 -8
  677. package/validators/utils/uuid4.js.map +7 -0
  678. package/Field/index.mdx +0 -6
  679. package/Field/utils/index.js +0 -153
  680. package/Field/utils.d.ts +0 -5
  681. package/FieldArray/FieldArray.stories/index.js +0 -8
  682. package/FieldArray/FieldArray.stories/package.json +0 -6
  683. package/FieldArray/FieldArray.stories.playwright.json +0 -353
  684. package/FieldArray/__stories__/Default/index.js +0 -88
  685. package/FieldArray/__stories__/Default/package.json +0 -6
  686. package/FieldArray/__stories__/WithExactLength/index.js +0 -88
  687. package/FieldArray/__stories__/WithExactLength/package.json +0 -6
  688. package/Form.stories/index.js +0 -3
  689. package/FormBuilder/FormBuilder/index.js +0 -152
  690. package/FormBuilder/FormBuilder.d.ts +0 -5
  691. package/FormBuilder/FormBuilder.mdx +0 -256
  692. package/FormBuilder/FormBuilder.stories/index.js +0 -7
  693. package/FormBuilder/FormBuilder.stories/package.json +0 -6
  694. package/FormBuilder/FormBuilder.stories.playwright.json +0 -52
  695. package/FormBuilder/__stories__/Default/index.js +0 -26
  696. package/FormBuilder/__stories__/Default/package.json +0 -6
  697. package/MultiplicityField/MultiplicityField.mdx +0 -590
  698. package/MultiplicityField/MultiplicityField.stories/index.js +0 -12
  699. package/MultiplicityField/MultiplicityField.stories/package.json +0 -6
  700. package/MultiplicityField/MultiplicityField.stories.playwright.json +0 -1370
  701. package/MultiplicityField/__stories__/Default/index.js +0 -95
  702. package/MultiplicityField/__stories__/Default/package.json +0 -6
  703. package/MultiplicityField/__stories__/PreviewDisplay/index.js +0 -72
  704. package/MultiplicityField/__stories__/PreviewDisplay/package.json +0 -6
  705. package/MultiplicityField/__stories__/WithExactLength/index.js +0 -90
  706. package/MultiplicityField/__stories__/WithExactLength/package.json +0 -6
  707. package/MultiplicityField/__stories__/WithMaxLength/index.js +0 -93
  708. package/MultiplicityField/__stories__/WithMaxLength/package.json +0 -6
  709. package/MultiplicityField/__stories__/WithMinAndMaxLength/index.js +0 -94
  710. package/MultiplicityField/__stories__/WithMinAndMaxLength/package.json +0 -6
  711. package/MultiplicityField/__stories__/WithMinLength/index.js +0 -93
  712. package/MultiplicityField/__stories__/WithMinLength/package.json +0 -6
  713. package/Questions/Questions.stories/index.js +0 -7
  714. package/Questions/__snapshots__/index.spec.tsx.snap +0 -596
  715. package/Questions/__stories__/Default/index.js +0 -102
  716. package/Questions/__stories__/Default/package.json +0 -6
  717. package/Questions/index.mdx +0 -415
  718. package/Questions/index.spec/index.js +0 -59
  719. package/cjs/Field/index.mdx +0 -6
  720. package/cjs/Field/utils/index.js +0 -167
  721. package/cjs/FieldArray/FieldArray.stories/index.js +0 -38
  722. package/cjs/FieldArray/FieldArray.stories.playwright.json +0 -353
  723. package/cjs/FieldArray/__stories__/Default/index.js +0 -98
  724. package/cjs/FieldArray/__stories__/WithExactLength/index.js +0 -98
  725. package/cjs/Form.stories/index.js +0 -9
  726. package/cjs/FormBuilder/FormBuilder/index.js +0 -162
  727. package/cjs/FormBuilder/FormBuilder.mdx +0 -256
  728. package/cjs/FormBuilder/FormBuilder.stories/index.js +0 -26
  729. package/cjs/FormBuilder/FormBuilder.stories.playwright.json +0 -52
  730. package/cjs/FormBuilder/__stories__/Default/index.js +0 -36
  731. package/cjs/MultiplicityField/MultiplicityField.stories/index.js +0 -86
  732. package/cjs/MultiplicityField/MultiplicityField.stories.playwright.json +0 -1370
  733. package/cjs/MultiplicityField/__stories__/Default/index.js +0 -105
  734. package/cjs/MultiplicityField/__stories__/PreviewDisplay/index.js +0 -82
  735. package/cjs/MultiplicityField/__stories__/WithExactLength/index.js +0 -100
  736. package/cjs/MultiplicityField/__stories__/WithMaxLength/index.js +0 -103
  737. package/cjs/MultiplicityField/__stories__/WithMinAndMaxLength/index.js +0 -104
  738. package/cjs/MultiplicityField/__stories__/WithMinLength/index.js +0 -103
  739. package/cjs/Questions/Questions.stories/index.js +0 -26
  740. package/cjs/Questions/__snapshots__/index.spec.tsx.snap +0 -596
  741. package/cjs/Questions/__stories__/Default/index.js +0 -113
  742. package/cjs/Questions/index.mdx +0 -415
  743. package/cjs/Questions/index.spec/index.js +0 -63
  744. package/cjs/create-simple-form.mdx +0 -539
  745. package/cjs/index.mdx +0 -51
  746. package/cjs/inputs/AutoCompleteInput/AutoComplete.stories/index.js +0 -26
  747. package/cjs/inputs/AutoCompleteInput/__stories__/Default/index.js +0 -56
  748. package/cjs/inputs/Checkboxes/Checkboxes.stories/index.js +0 -50
  749. package/cjs/inputs/Checkboxes/Checkboxes.stories.playwright.json +0 -85
  750. package/cjs/inputs/Checkboxes/__stories__/Conditional/index.js +0 -102
  751. package/cjs/inputs/Checkboxes/__stories__/Default/index.js +0 -50
  752. package/cjs/inputs/Checkboxes/__stories__/WithDivider/index.js +0 -51
  753. package/cjs/inputs/Checkboxes/index.mdx +0 -0
  754. package/cjs/inputs/DateInput/DateInput.stories/index.js +0 -26
  755. package/cjs/inputs/DateInput/DateInput.stories.playwright.json +0 -72
  756. package/cjs/inputs/DateInput/__stories__/Default/index.js +0 -33
  757. package/cjs/inputs/FileInput/FileInput.stories/index.js +0 -26
  758. package/cjs/inputs/FileInput/FileInput.stories.playwright.json +0 -75
  759. package/cjs/inputs/FileInput/__stories__/Default/index.js +0 -30
  760. package/cjs/inputs/ImageInput/ImageInput.stories/index.js +0 -50
  761. package/cjs/inputs/ImageInput/ImageInput.stories.playwright.json +0 -77
  762. package/cjs/inputs/ImageInput/__stories__/Default/index.js +0 -38
  763. package/cjs/inputs/ImageInput/__stories__/WithInvalidImageDimension/index.js +0 -46
  764. package/cjs/inputs/ImageInput/__stories__/WithInvalidImageSize/index.js +0 -43
  765. package/cjs/inputs/Input/Input.stories/index.js +0 -134
  766. package/cjs/inputs/Input/Input.stories.playwright.json +0 -376
  767. package/cjs/inputs/Input/__stories__/AFM/index.js +0 -32
  768. package/cjs/inputs/Input/__stories__/Boolean/index.js +0 -33
  769. package/cjs/inputs/Input/__stories__/Default/index.js +0 -33
  770. package/cjs/inputs/Input/__stories__/IBAN/index.js +0 -33
  771. package/cjs/inputs/Input/__stories__/Integer/index.js +0 -41
  772. package/cjs/inputs/Input/__stories__/LandlineNumber/index.js +0 -36
  773. package/cjs/inputs/Input/__stories__/MobilePhone/index.js +0 -36
  774. package/cjs/inputs/Input/__stories__/PhoneNumber/index.js +0 -35
  775. package/cjs/inputs/Input/__stories__/PostalCode/index.js +0 -35
  776. package/cjs/inputs/Input/__stories__/TextWithCharacterLimit/index.js +0 -39
  777. package/cjs/inputs/Input/index.mdx +0 -8
  778. package/cjs/inputs/Label/Label.stories/index.js +0 -26
  779. package/cjs/inputs/Label/Label.stories.playwright.json +0 -40
  780. package/cjs/inputs/Label/__stories__/Default/index.js +0 -37
  781. package/cjs/inputs/Label/index.mdx +0 -0
  782. package/cjs/inputs/OtpInput/OtpInput.stories/index.js +0 -26
  783. package/cjs/inputs/OtpInput/__stories__/Default/index.js +0 -39
  784. package/cjs/inputs/Radio/Radio.stories/index.js +0 -50
  785. package/cjs/inputs/Radio/Radio.stories.playwright.json +0 -73
  786. package/cjs/inputs/Radio/__stories__/Conditional/index.js +0 -102
  787. package/cjs/inputs/Radio/__stories__/Default/index.js +0 -55
  788. package/cjs/inputs/Radio/__stories__/WithDivider/index.js +0 -56
  789. package/cjs/inputs/Radio/index.mdx +0 -0
  790. package/cjs/inputs/Select/Select.stories/index.js +0 -26
  791. package/cjs/inputs/Select/Select.stories.playwright.json +0 -22
  792. package/cjs/inputs/Select/__stories__/Default/index.js +0 -61
  793. package/cjs/installation.mdx +0 -68
  794. package/cjs/registry/index.js +0 -147
  795. package/cjs/validators/validators.spec/index.js +0 -87
  796. package/create-simple-form.mdx +0 -539
  797. package/inputs/AutoCompleteInput/AutoComplete.stories/index.js +0 -7
  798. package/inputs/AutoCompleteInput/AutoComplete.stories/package.json +0 -6
  799. package/inputs/AutoCompleteInput/__stories__/Default/index.js +0 -46
  800. package/inputs/AutoCompleteInput/__stories__/Default/package.json +0 -6
  801. package/inputs/Checkboxes/Checkboxes.stories/index.js +0 -9
  802. package/inputs/Checkboxes/Checkboxes.stories.playwright.json +0 -85
  803. package/inputs/Checkboxes/__stories__/Conditional/index.js +0 -92
  804. package/inputs/Checkboxes/__stories__/Conditional/package.json +0 -6
  805. package/inputs/Checkboxes/__stories__/Default/index.js +0 -40
  806. package/inputs/Checkboxes/__stories__/Default/package.json +0 -6
  807. package/inputs/Checkboxes/__stories__/WithDivider/index.js +0 -41
  808. package/inputs/Checkboxes/__stories__/WithDivider/package.json +0 -6
  809. package/inputs/Checkboxes/index.mdx +0 -0
  810. package/inputs/DateInput/DateInput.stories/index.js +0 -7
  811. package/inputs/DateInput/DateInput.stories.playwright.json +0 -72
  812. package/inputs/DateInput/__stories__/Default/index.js +0 -23
  813. package/inputs/FileInput/FileInput.stories/index.js +0 -7
  814. package/inputs/FileInput/FileInput.stories/package.json +0 -6
  815. package/inputs/FileInput/FileInput.stories.playwright.json +0 -75
  816. package/inputs/FileInput/__stories__/Default/index.js +0 -20
  817. package/inputs/ImageInput/ImageInput.stories/index.js +0 -9
  818. package/inputs/ImageInput/ImageInput.stories/package.json +0 -6
  819. package/inputs/ImageInput/ImageInput.stories.playwright.json +0 -77
  820. package/inputs/ImageInput/__stories__/Default/index.js +0 -28
  821. package/inputs/ImageInput/__stories__/Default/package.json +0 -6
  822. package/inputs/ImageInput/__stories__/WithInvalidImageDimension/index.js +0 -36
  823. package/inputs/ImageInput/__stories__/WithInvalidImageDimension/package.json +0 -6
  824. package/inputs/ImageInput/__stories__/WithInvalidImageSize/index.js +0 -33
  825. package/inputs/ImageInput/__stories__/WithInvalidImageSize/package.json +0 -6
  826. package/inputs/ImageInput/__stories__/WithInvalidImageSize.d.ts +0 -3
  827. package/inputs/Input/Input.stories/index.js +0 -16
  828. package/inputs/Input/Input.stories/package.json +0 -6
  829. package/inputs/Input/Input.stories.playwright.json +0 -376
  830. package/inputs/Input/__stories__/AFM/index.js +0 -22
  831. package/inputs/Input/__stories__/AFM/package.json +0 -6
  832. package/inputs/Input/__stories__/Boolean/index.js +0 -23
  833. package/inputs/Input/__stories__/Boolean/package.json +0 -6
  834. package/inputs/Input/__stories__/Default/index.js +0 -23
  835. package/inputs/Input/__stories__/Default/package.json +0 -6
  836. package/inputs/Input/__stories__/Default.d.ts +0 -3
  837. package/inputs/Input/__stories__/IBAN/index.js +0 -23
  838. package/inputs/Input/__stories__/IBAN/package.json +0 -6
  839. package/inputs/Input/__stories__/Integer/index.js +0 -31
  840. package/inputs/Input/__stories__/Integer/package.json +0 -6
  841. package/inputs/Input/__stories__/LandlineNumber/index.js +0 -26
  842. package/inputs/Input/__stories__/LandlineNumber/package.json +0 -6
  843. package/inputs/Input/__stories__/MobilePhone/index.js +0 -26
  844. package/inputs/Input/__stories__/MobilePhone/package.json +0 -6
  845. package/inputs/Input/__stories__/PhoneNumber/index.js +0 -25
  846. package/inputs/Input/__stories__/PhoneNumber/package.json +0 -6
  847. package/inputs/Input/__stories__/PostalCode/index.js +0 -25
  848. package/inputs/Input/__stories__/PostalCode/package.json +0 -6
  849. package/inputs/Input/__stories__/TextWithCharacterLimit/index.js +0 -29
  850. package/inputs/Input/__stories__/TextWithCharacterLimit/package.json +0 -6
  851. package/inputs/Input/__stories__/TextWithCharacterLimit.d.ts +0 -3
  852. package/inputs/Input/index.mdx +0 -8
  853. package/inputs/Label/Label.stories/index.js +0 -7
  854. package/inputs/Label/Label.stories/package.json +0 -6
  855. package/inputs/Label/Label.stories.playwright.json +0 -40
  856. package/inputs/Label/__stories__/Default/index.js +0 -27
  857. package/inputs/Label/__stories__/Default/package.json +0 -6
  858. package/inputs/Label/index.mdx +0 -0
  859. package/inputs/OtpInput/OtpInput.stories/index.js +0 -7
  860. package/inputs/OtpInput/OtpInput.stories/package.json +0 -6
  861. package/inputs/OtpInput/__stories__/Default/index.js +0 -29
  862. package/inputs/OtpInput/__stories__/Default/package.json +0 -6
  863. package/inputs/Radio/Radio.stories/index.js +0 -9
  864. package/inputs/Radio/Radio.stories/package.json +0 -6
  865. package/inputs/Radio/Radio.stories.playwright.json +0 -73
  866. package/inputs/Radio/__stories__/Conditional/index.js +0 -92
  867. package/inputs/Radio/__stories__/Conditional/package.json +0 -6
  868. package/inputs/Radio/__stories__/Default/index.js +0 -45
  869. package/inputs/Radio/__stories__/Default/package.json +0 -6
  870. package/inputs/Radio/__stories__/WithDivider/index.js +0 -46
  871. package/inputs/Radio/__stories__/WithDivider/package.json +0 -6
  872. package/inputs/Radio/index.mdx +0 -0
  873. package/inputs/Select/Select.stories/index.js +0 -7
  874. package/inputs/Select/Select.stories/package.json +0 -6
  875. package/inputs/Select/Select.stories.playwright.json +0 -22
  876. package/inputs/Select/__stories__/Default/index.js +0 -51
  877. package/inputs/Select/__stories__/Default/package.json +0 -6
  878. package/installation.mdx +0 -68
  879. package/registry.d.ts +0 -64
  880. package/src/Field/index.mdx +0 -6
  881. package/src/Field/utils.ts +0 -191
  882. package/src/FieldArray/FieldArray.stories.playwright.json +0 -353
  883. package/src/FormBuilder/FormBuilder.stories.playwright.json +0 -52
  884. package/src/FormBuilder/FormBuilder.tsx +0 -166
  885. package/src/MultiplicityField/MultiplicityField.mdx +0 -590
  886. package/src/MultiplicityField/MultiplicityField.stories.playwright.json +0 -1370
  887. package/src/index.mdx +0 -51
  888. package/src/inputs/Checkboxes/Checkboxes.stories.playwright.json +0 -85
  889. package/src/inputs/Checkboxes/index.mdx +0 -0
  890. package/src/inputs/DateInput/DateInput.stories.playwright.json +0 -72
  891. package/src/inputs/FileInput/FileInput.stories.playwright.json +0 -75
  892. package/src/inputs/ImageInput/ImageInput.stories.playwright.json +0 -77
  893. package/src/inputs/Input/Input.stories.playwright.json +0 -376
  894. package/src/inputs/Input/index.mdx +0 -8
  895. package/src/inputs/Label/Label.stories.playwright.json +0 -40
  896. package/src/inputs/Label/index.mdx +0 -0
  897. package/src/inputs/Radio/Radio.stories.playwright.json +0 -73
  898. package/src/inputs/Radio/index.mdx +0 -0
  899. package/src/inputs/Select/Select.stories.playwright.json +0 -22
  900. package/validators/validators.spec/index.js +0 -85
  901. package/validators/validators.spec/package.json +0 -6
  902. /package/{Questions/index.spec.d.ts → hooks/__tests__/utils.spec.d.ts} +0 -0
@@ -0,0 +1,2736 @@
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 fillDateTimeInput = async ({ formBuilder, fill }) => {
81
+ const { fieldKey, value } = fill;
82
+
83
+ const dayInput = await getLocator(formBuilder, 'name', `${fieldKey}-day`);
84
+ await dayInput.fill(value?.day || '');
85
+
86
+ const monthInput = await getLocator(formBuilder, 'name', `${fieldKey}-month`);
87
+ await monthInput.fill(value?.month || '');
88
+
89
+ const yearInput = await getLocator(formBuilder, 'name', `${fieldKey}-year`);
90
+ await yearInput.fill(value?.year || '');
91
+
92
+ const hourInput = await getLocator(formBuilder, 'name', `${fieldKey}-hours`);
93
+ await hourInput.fill(value?.hours || '');
94
+
95
+ const minuteInput = await getLocator(
96
+ formBuilder,
97
+ 'name',
98
+ `${fieldKey}-minutes`
99
+ );
100
+ await minuteInput.fill(value?.minutes || '');
101
+ };
102
+
103
+ const fillChoiceMultiple = async ({ formBuilder, fill, field }) => {
104
+ const { fieldKey, value } = fill;
105
+
106
+ if (field?.extra?.component?.includes('Select')) {
107
+ const selectLocator = await getLocator(formBuilder, 'name', fieldKey);
108
+ await selectLocator.selectOption(value);
109
+ } else if (field?.extra?.component?.includes('AutoComplete')) {
110
+ await simulateAutoCompleteFill(formBuilder, fieldKey, value, field);
111
+ } else {
112
+ for (const valueItem of value) {
113
+ const checkboxLocator = await getLocator(
114
+ formBuilder,
115
+ 'name',
116
+ `${fieldKey}\\.${valueItem}`
117
+ );
118
+ await checkboxLocator.check(true);
119
+ }
120
+ }
121
+ };
122
+
123
+ const fillChoiceSingle = async ({ formBuilder, fill, field }) => {
124
+ const { fieldKey, value } = fill;
125
+ if (field?.extra?.component?.includes('Select')) {
126
+ const selectLocator = await getLocator(formBuilder, 'name', fieldKey);
127
+ await selectLocator.selectOption(value);
128
+ } else if (field?.extra?.component?.includes('AutoComplete')) {
129
+ await simulateAutoCompleteFill(formBuilder, fieldKey, value, field);
130
+ } else {
131
+ const radioLocator = await getLocator(
132
+ formBuilder,
133
+ 'id',
134
+ `${fieldKey}\\.${value}`
135
+ );
136
+ await radioLocator.check();
137
+ }
138
+ };
139
+
140
+ const fillOtpInput = async ({ formBuilder, fill }) => {
141
+ const { fieldKey, value } = fill;
142
+
143
+ for (let otpField = 0; otpField < 6; otpField++) {
144
+ const otpLocator = await getLocator(
145
+ formBuilder,
146
+ 'name',
147
+ `${fieldKey}-${otpField}`
148
+ );
149
+ await otpLocator.fill(value?.[`${otpField}`] || '');
150
+ }
151
+ };
152
+
153
+ const imageTypes = {
154
+ bmp: 'image/bmp',
155
+ gif: 'image/gif',
156
+ jpeg: 'image/jpeg',
157
+ jpg: 'image/jpeg',
158
+ jpe: 'image/jpeg',
159
+ png: 'image/png',
160
+ svg: 'image/svg+xml',
161
+ svgz: 'image/svg+xml',
162
+ ico: 'image/x-icon',
163
+ webp: 'image/webp',
164
+ };
165
+
166
+ const fileTypes = {
167
+ xhtml: 'application/xhtml+xml',
168
+ xht: 'application/xhtml+xml',
169
+ xhtm: 'application/xhtml+xml',
170
+ html: 'text/html',
171
+ htm: 'text/html',
172
+ shtml: 'text/html',
173
+ shtm: 'text/html',
174
+ apng: 'image/apng',
175
+ wasm: 'application/wasm',
176
+ mp3: 'audio/mpeg',
177
+ wav: 'audio/x-wav',
178
+ flac: 'audio/x-flac',
179
+ m4a: 'audio/mp4',
180
+ js: 'application/javascript',
181
+ mjs: 'application/javascript',
182
+ m4v: 'video/x-m4v',
183
+ ogv: 'video/ogg',
184
+ ogm: 'video/ogg',
185
+ epub: 'application/epub+zip',
186
+ pdf: 'application/pdf',
187
+ mpeg: 'video/mpeg',
188
+ mpg: 'video/mpeg',
189
+ mpe: 'video/mpeg',
190
+ m1v: 'video/mpeg',
191
+ m2v: 'video/mpeg',
192
+ mpga: 'audio/mpeg',
193
+ mp2: 'audio/mpeg',
194
+ mp2a: 'audio/mpeg',
195
+ m2a: 'audio/mpeg',
196
+ m3a: 'audio/mpeg',
197
+ otf: 'font/otf',
198
+ ttf: 'font/ttf',
199
+ woff: 'font/woff',
200
+ woff2: 'font/woff2',
201
+ atom: 'application/atom+xml',
202
+ ecma: 'application/ecmascript',
203
+ es: 'application/ecmascript',
204
+ geojson: 'application/geo+json',
205
+ json: 'application/json',
206
+ map: 'application/json',
207
+ jsonml: 'application/jsonml+json',
208
+ jsonld: 'application/ld+json',
209
+ webmanifest: 'application/manifest+json',
210
+ ogx: 'application/ogg',
211
+ rss: 'application/rss+xml',
212
+ webapp: 'application/x-web-app-manifest+json',
213
+ xml: 'text/xml',
214
+ xsl: 'application/xml',
215
+ xsd: 'application/xml',
216
+ rng: 'application/xml',
217
+ mp4a: 'audio/mp4',
218
+ oga: 'audio/ogg',
219
+ ogg: 'audio/ogg',
220
+ spx: 'audio/ogg',
221
+ weba: 'audio/webm',
222
+ bmp: 'image/bmp',
223
+ gif: 'image/gif',
224
+ jpeg: 'image/jpeg',
225
+ jpg: 'image/jpeg',
226
+ jpe: 'image/jpeg',
227
+ png: 'image/png',
228
+ svg: 'image/svg+xml',
229
+ svgz: 'image/svg+xml',
230
+ ico: 'image/x-icon',
231
+ webp: 'image/webp',
232
+ xbm: 'image/x-xbitmap',
233
+ appcache: 'text/cache-manifest',
234
+ manifest: 'text/cache-manifest',
235
+ coffee: 'text/coffeescript',
236
+ litcoffee: 'text/coffeescript',
237
+ css: 'text/css',
238
+ jade: 'text/jade',
239
+ jsx: 'text/jsx',
240
+ less: 'text/less',
241
+ markdown: 'text/markdown',
242
+ md: 'text/markdown',
243
+ mml: 'text/mathml',
244
+ n3: 'text/n3',
245
+ txt: 'text/plain',
246
+ text: 'text/plain',
247
+ conf: 'text/plain',
248
+ def: 'text/plain',
249
+ list: 'text/plain',
250
+ log: 'text/plain',
251
+ in: 'text/plain',
252
+ ini: 'text/plain',
253
+ dsc: 'text/prs.lines.tag',
254
+ rtx: 'text/richtext',
255
+ sgml: 'text/sgml',
256
+ sgm: 'text/sgml',
257
+ shex: 'text/shex',
258
+ slim: 'text/slim',
259
+ slm: 'text/slim',
260
+ stylus: 'text/stylus',
261
+ styl: 'text/stylus',
262
+ t: 'text/troff',
263
+ tr: 'text/troff',
264
+ roff: 'text/troff',
265
+ man: 'text/troff',
266
+ me: 'text/troff',
267
+ ms: 'text/troff',
268
+ ttl: 'text/turtle',
269
+ uri: 'text/uri-list',
270
+ uris: 'text/uri-list',
271
+ urls: 'text/uri-list',
272
+ curl: 'text/vnd.curl',
273
+ dcurl: 'text/vnd.curl.dcurl',
274
+ mcurl: 'text/vnd.curl.mcurl',
275
+ scurl: 'text/vnd.curl.scurl',
276
+ sub: 'text/vnd.dvb.subtitle',
277
+ fly: 'text/vnd.fly',
278
+ flx: 'text/vnd.fmi.flexstor',
279
+ gv: 'text/vnd.graphviz',
280
+ '3dml': 'text/vnd.in3d.3dml',
281
+ spot: 'text/vnd.in3d.spot',
282
+ wml: 'text/vnd.wap.wml',
283
+ wmls: 'text/vnd.wap.wmlscript',
284
+ vtt: 'text/vtt',
285
+ s: 'text/x-asm',
286
+ asm: 'text/x-asm',
287
+ c: 'text/x-c',
288
+ cc: 'text/x-c',
289
+ cxx: 'text/x-c',
290
+ cpp: 'text/x-c',
291
+ h: 'text/x-c',
292
+ hh: 'text/x-c',
293
+ dic: 'text/x-c',
294
+ htc: 'text/x-component',
295
+ f: 'text/x-fortran',
296
+ for: 'text/x-fortran',
297
+ f77: 'text/x-fortran',
298
+ f90: 'text/x-fortran',
299
+ hbs: 'text/x-handlebars-template',
300
+ java: 'text/x-java-source',
301
+ lua: 'text/x-lua',
302
+ mkd: 'text/x-markdown',
303
+ nfo: 'text/x-nfo',
304
+ opml: 'text/x-opml',
305
+ org: 'text/x-org',
306
+ p: 'text/x-pascal',
307
+ pas: 'text/x-pascal',
308
+ pde: 'text/x-processing',
309
+ sass: 'text/x-sass',
310
+ scss: 'text/x-scss',
311
+ etx: 'text/x-setext',
312
+ sfv: 'text/x-sfv',
313
+ ymp: 'text/x-suse-ymp',
314
+ uu: 'text/x-uuencode',
315
+ yaml: 'text/yaml',
316
+ yml: 'text/yaml',
317
+ mp4: 'video/mp4',
318
+ mp4v: 'video/mp4',
319
+ mpg4: 'video/mp4',
320
+ webm: 'video/webm',
321
+ };
322
+
323
+ function calculateDimensions(memorySizeInMB) {
324
+ const bytesPerPixel = 4;
325
+ const bytesPerMB = 1024 * 1024;
326
+ const memorySizeInBytes = memorySizeInMB * bytesPerMB;
327
+ const totalPixels = memorySizeInBytes / bytesPerPixel;
328
+ const sideLength = Math.sqrt(totalPixels);
329
+ const width = Math.floor(sideLength);
330
+ const height = Math.floor(sideLength);
331
+ return { width, height };
332
+ }
333
+
334
+ const fillImageInput = async ({ formBuilder, fill }) => {
335
+ const { fieldKey, value } = fill;
336
+
337
+ const buttonUploadLocator = await getLocator(
338
+ formBuilder,
339
+ 'name',
340
+ `${fieldKey}`,
341
+ false
342
+ );
343
+ let width = value?.width;
344
+ let height = value?.height;
345
+ if (value?.size) {
346
+ const sizeObj = calculateDimensions(value?.size);
347
+ width = sizeObj?.width;
348
+ height = sizeObj?.height;
349
+ }
350
+ const image = new Jimp(width, height, 'green');
351
+ const imageBuffer = await image.getBufferAsync(Jimp.MIME_PNG);
352
+ const fileExtension = value?.fileName.split('.').pop();
353
+ await buttonUploadLocator.setInputFiles({
354
+ buffer: imageBuffer,
355
+ mimeType: imageTypes[fileExtension],
356
+ name: value?.fileName,
357
+ });
358
+ };
359
+
360
+ const fillFileInput = async ({ formBuilder, fill }) => {
361
+ const { fieldKey, value } = fill;
362
+
363
+ const fileExtension = value?.fileName.split('.').pop();
364
+ const buttonUploadLocator = await getLocator(
365
+ formBuilder,
366
+ 'name',
367
+ `${fieldKey}`,
368
+ false
369
+ );
370
+ await buttonUploadLocator.setInputFiles({
371
+ buffer: Buffer.alloc(value?.size * 1024),
372
+ mimeType: fileTypes[fileExtension],
373
+ name: value?.fileName,
374
+ });
375
+ };
376
+
377
+ const fillObjectInput = async ({ formBuilder, fill, field }) => {
378
+ for (const extraField of fill.value.of.extra.fields) {
379
+ const objField = field.extra.of.extra.fields.find(({ key }) => {
380
+ return key === extraField.fieldKey;
381
+ });
382
+ const fillObj = {
383
+ fieldKey: `${fill.fieldKey}\\.${fill.index}\\.${extraField.fieldKey}`,
384
+ value: extraField.value,
385
+ };
386
+ await fillActionPerType[objField.type]({
387
+ formBuilder,
388
+ fill: fillObj,
389
+ field,
390
+ });
391
+ }
392
+ if (field.multiplicity) {
393
+ const buttonActionLocator = await getLocator(
394
+ formBuilder,
395
+ 'name',
396
+ `${fill.fieldKey}\\.${fill.index}-${fill.value.of.extra.action}-object`
397
+ );
398
+ await buttonActionLocator.click();
399
+ }
400
+ };
401
+
402
+ const fillArrayInput = async ({ formBuilder, fill, field }) => {
403
+ const { value } = fill;
404
+ if (field.multiplicity) {
405
+ const radioLocator = await getLocator(
406
+ formBuilder,
407
+ 'id',
408
+ `radio-input-${field.key}-${value?.question}`
409
+ );
410
+ await radioLocator.check(true);
411
+ } else {
412
+ const buttonAddLocator = await getLocator(
413
+ formBuilder,
414
+ 'name',
415
+ `${field.key}-add-object`
416
+ );
417
+ await buttonAddLocator.click();
418
+ }
419
+ if (value.of) {
420
+ await fillActionPerType[value.of.type]({ formBuilder, fill, field });
421
+ }
422
+ };
423
+
424
+ const fillActionPerType = {
425
+ int: fillSimpleInput,
426
+ string: fillSimpleInput,
427
+ text: fillSimpleInput,
428
+ email: fillSimpleInput,
429
+ uuid4: fillSimpleInput,
430
+ mobile_phone: fillSimpleInput,
431
+ number: fillSimpleInput,
432
+ afm: fillSimpleInput,
433
+ iban: fillSimpleInput,
434
+ postal_code: fillSimpleInput,
435
+ phone_number: fillSimpleInput,
436
+
437
+ date: fillDateInput,
438
+ datetime: fillDateTimeInput,
439
+ otp: fillOtpInput,
440
+ image: fillImageInput,
441
+ file: fillFileInput,
442
+ 'choice:multiple': fillChoiceMultiple,
443
+ 'choice:single': fillChoiceSingle,
444
+ array: fillArrayInput,
445
+ object: fillObjectInput,
446
+ };
447
+
448
+ const fillFields = async (page, formBuilder, scenario) => {
449
+ for (const fill of scenario.fill) {
450
+ const field = scenario.fields.find(({ key }) => {
451
+ return key === fill.fieldKey;
452
+ });
453
+ if (fillActionPerType[field.type]) {
454
+ await fillActionPerType[field.type]({ formBuilder, fill, field, page });
455
+ } else {
456
+ console.log(
457
+ '\nField type:',
458
+ field.type,
459
+ "doesn't exist in fillActionPerType\n"
460
+ );
461
+ }
462
+ }
463
+ };
464
+
465
+ const submitForm = async (formBuilder) => {
466
+ await formBuilder.locator(`[type=submit]`).click();
467
+ };
468
+
469
+ const expectErrorMessages = async (formBuilder, scenarioExpect, expect) => {
470
+ for (const expectObj of scenarioExpect) {
471
+ if (expectObj.type === 'success') {
472
+ const labelLocatorIsVisible = await locatorExists(
473
+ formBuilder,
474
+ 'id',
475
+ `${expectObj.fieldKey}-error`
476
+ );
477
+ expect(labelLocatorIsVisible).toBeFalsy();
478
+ } else {
479
+ let expectText = expectObj.text;
480
+ const argRegex = /{{([^}]+)}}/g;
481
+ const argMatches = [...expectObj.text.matchAll(argRegex)];
482
+ const labelLocator = await getLocator(
483
+ formBuilder,
484
+ 'id',
485
+ `${expectObj.fieldKey}-error`
486
+ );
487
+ if (argMatches.length > 0) {
488
+ for (const argMatch of argMatches) {
489
+ const argKey = argMatch[1];
490
+ expectText = expectText.replace(
491
+ new RegExp(`{{\\s*${argKey}\\s*}}`, 'g'),
492
+ expectObj.args[argKey]
493
+ );
494
+ }
495
+ }
496
+ if (expectObj.textAssertion === 'toContainText') {
497
+ await expect(labelLocator).toContainText(expectText);
498
+ } else {
499
+ await expect(labelLocator).toHaveText(expectText);
500
+ }
501
+ }
502
+ }
503
+ };
504
+
505
+ const generateScenarios = (
506
+ scenarioTitles,
507
+ fillTemplate,
508
+ fieldsTemplate,
509
+ fieldKey,
510
+ isMultiplicity,
511
+ locals
512
+ ) => {
513
+ const generatedScenarios: any[] = [];
514
+ const addRegex = /add\s+(\d+)/;
515
+ const minRegex = /min=(\d+)/;
516
+ const maxRegex = /max=(\d+)/;
517
+ const exactRegex = /exact=(\d+)/;
518
+ const { min, max, length, required } = locals;
519
+
520
+ for (const title of scenarioTitles) {
521
+ const titleLowerCase = title.toLowerCase();
522
+ const scenarioFields: any[] = [];
523
+ const scenarioFill: any[] = [];
524
+ const scenarioExpect: any[] = [];
525
+
526
+ const addMatch = titleLowerCase.match(addRegex);
527
+ const minMatch = titleLowerCase.match(minRegex);
528
+ const maxMatch = titleLowerCase.match(maxRegex);
529
+ const exactMatch = titleLowerCase.match(exactRegex);
530
+
531
+ const addNumber = addMatch ? Number(addMatch[1]) : null;
532
+ const minNumber = minMatch ? Number(minMatch[1]) : null;
533
+ const maxNumber = maxMatch ? Number(maxMatch[1]) : null;
534
+ const exactNumber = exactMatch ? Number(exactMatch[1]) : null;
535
+
536
+ let addNumberFinal = addNumber;
537
+
538
+ if (minNumber !== null) {
539
+ const expectEntry = {
540
+ type: 'error',
541
+ fieldKey: fieldKey,
542
+ args: { min: minNumber },
543
+ text: min,
544
+ };
545
+ if (addNumber !== null && addNumber >= minNumber) {
546
+ if (maxNumber === null) {
547
+ scenarioExpect.push({
548
+ ...expectEntry,
549
+ type: 'success',
550
+ });
551
+ }
552
+ } else {
553
+ scenarioExpect.push(expectEntry);
554
+ if (isMultiplicity) {
555
+ scenarioExpect.push({
556
+ type: 'error',
557
+ fieldKey: 'needs-more',
558
+ text: required,
559
+ });
560
+ }
561
+ }
562
+ }
563
+
564
+ if (maxNumber !== null) {
565
+ const expectEntry = {
566
+ type: 'error',
567
+ fieldKey: fieldKey,
568
+ args: { max: maxNumber },
569
+ text: max,
570
+ };
571
+ if (addNumber !== null && addNumber <= maxNumber) {
572
+ if (minNumber === null) {
573
+ scenarioExpect.push({
574
+ ...expectEntry,
575
+ type: 'success',
576
+ });
577
+ }
578
+ } else {
579
+ addNumberFinal = maxNumber;
580
+ scenarioExpect.push(expectEntry);
581
+ if (isMultiplicity) {
582
+ scenarioExpect.push({
583
+ type: 'error',
584
+ fieldKey: 'needs-more',
585
+ args: { max: maxNumber },
586
+ text: max,
587
+ });
588
+ }
589
+ }
590
+ }
591
+
592
+ if (exactNumber !== null) {
593
+ const expectEntry = {
594
+ type: 'error',
595
+ fieldKey: fieldKey,
596
+ args: { length: exactNumber },
597
+ text: length,
598
+ };
599
+ if (addNumber !== null && addNumber === exactNumber) {
600
+ scenarioExpect.push({
601
+ ...expectEntry,
602
+ type: 'success',
603
+ });
604
+ } else {
605
+ scenarioExpect.push({
606
+ ...expectEntry,
607
+ type: 'error',
608
+ });
609
+ }
610
+ }
611
+
612
+ if (addNumberFinal !== null) {
613
+ for (let i = 0; i < addNumberFinal; i++) {
614
+ const finalScenarioFill = {
615
+ index: i,
616
+ ...fillTemplate,
617
+ };
618
+ scenarioFill.push(finalScenarioFill);
619
+ for (const multiplicityField of fillTemplate?.value?.of?.extra
620
+ ?.fields ?? []) {
621
+ scenarioExpect.push({
622
+ type: 'success',
623
+ fieldKey: `${fillTemplate.fieldKey}\\.${i}\\.${multiplicityField.fieldKey}`,
624
+ text: required,
625
+ });
626
+ }
627
+ }
628
+ if (addNumber !== null && addNumber > addNumberFinal) {
629
+ scenarioFill.push({
630
+ fieldKey: fieldKey,
631
+ value: {
632
+ question: 'yes',
633
+ },
634
+ });
635
+ }
636
+ // This will choose 'no' in the radio-choice for last action before submitting the form
637
+ // scenarioFill.push({
638
+ // fieldKey: fieldKey,
639
+ // value: {
640
+ // question: 'no',
641
+ // },
642
+ // })
643
+ }
644
+ scenarioFields.push({
645
+ ...fieldsTemplate,
646
+ extra: {
647
+ ...fieldsTemplate.extra,
648
+ ...(minNumber !== null ? { min: minNumber } : {}),
649
+ ...(maxNumber !== null ? { max: maxNumber } : {}),
650
+ ...(exactNumber !== null ? { length: exactNumber } : {}),
651
+ },
652
+ });
653
+ generatedScenarios.push({
654
+ title: title,
655
+ describe: `${fieldKey} scenario`,
656
+ fields: scenarioFields,
657
+ fill: scenarioFill,
658
+ expect: scenarioExpect,
659
+ });
660
+ }
661
+ return generatedScenarios;
662
+ };
663
+
664
+ const el = {
665
+ form: {
666
+ label: {
667
+ day: 'Ημέρα',
668
+ month: 'Μήνας',
669
+ year: 'Έτος',
670
+ hours: 'Ώρα',
671
+ minutes: 'Λεπτά',
672
+ },
673
+ error: {
674
+ required: 'Το πεδίο είναι υποχρεωτικό.',
675
+ number: 'Συμπληρώστε έναν έγκυρο αριθμό',
676
+ positive_integer_number: 'Συμπληρώστε έναν θετικό ακέραιο αριθμό',
677
+ string: 'Το πεδίο πρέπει να είναι string',
678
+ email: 'Συμπληρώστε μια έγκυρη ηλεκτρονική διεύθυνση (e-mail).',
679
+ afm: 'Ο Α.Φ.Μ που πληκτρολογήσατε είναι λανθασμένος.',
680
+ amka: 'Ο ΑΜΚΑ που συμπληρώσατε δεν είναι έγκυρος.',
681
+ file_size:
682
+ 'Το μέγεθος του αρχείου είναι μεγαλύτερο από το επιτρεπόμενο ({{maxSize}} Bytes).',
683
+ image_size:
684
+ 'Το μέγεθος της φωτογραφίας είναι μεγαλύτερο από το επιτρεπόμενο ({{maxSize}} Bytes).',
685
+ mobile_phone: 'Συμπληρώστε έναν έγκυρο αριθμό κινητού τηλεφώνου.',
686
+ phone_number: 'Συμπληρώστε έναν έγκυρο αριθμό τηλεφώνου.',
687
+ landline: 'Συμπληρώστε έναν έγκυρο αριθμό σταθερού τηλεφώνου.',
688
+ uuid4: 'Ο κωδικός επιβεβαίωσης δεν είναι έγκυρος.',
689
+ iban: 'Συμπληρώστε έναν έγκυρο αριθμό IBAN',
690
+ postalCode: 'Συμπληρώστε έναν έγκυρο αριθμό ταχυδρομικού κώδικα.',
691
+ 'needs-more':
692
+ 'Για να συνεχίσετε, πατήστε το κουμπί «Προσθήκη». Διαφορετικά, επιλέξε το «Όχι» σαν απάντηση.',
693
+ array: {
694
+ min: 'Το πεδίο πρέπει να έχει τουλάχιστον {{min}} εγγραφές. Προσθέστε μια ακόμα επιλέγοντας την απάντηση «Ναι» στην επόμενη ερώτηση.',
695
+ max: 'Έχετε φτάσει το όριο των {{max}} εγγραφών. Αν θέλετε να προσθέσετε μια νέα, διαγράψτε μια από τις παραπάνω εγγραφές. Διαφορετικά, επιλέξτε το «Όχι» σαν απάντηση.',
696
+ length: 'Το πεδίο πρέπει να έχει ακριβώς {{length}} εγγραφές',
697
+ },
698
+ date: {
699
+ invalid: 'Η ημερομηνία πρέπει να είναι έγκυρη.',
700
+ invalid_month_year:
701
+ 'Η ημερομηνία πρέπει να περιλαμβάνει τον μήνα και το έτος.',
702
+ invalid_day_year:
703
+ 'Η ημερομηνία πρέπει να περιλαμβάνει την ημέρα και το έτος.',
704
+ invalid_day_month:
705
+ 'Η ημερομηνία πρέπει να περιλαμβάνει την ημέρα και τον μήνα.',
706
+ invalid_day: 'Η ημερομηνία πρέπει να περιλαμβάνει την ημέρα.',
707
+ invalid_month: 'Η ημερομηνία πρέπει να περιλαμβάνει τον μήνα.',
708
+ invalid_year: 'Η ημερομηνία πρέπει να περιλαμβάνει το ετος.',
709
+ earlier_than: 'Συμπληρώστε μια ημερομηνία προγενέστερη της {{maxDate}}',
710
+ later_than: 'Συμπληρώστε μια ημερομηνία μεταγενέστερη της {{minDate}}',
711
+ invalid_day_range: 'Η ήμέρα πρέπει να είναι μεταξύ 1 και {{maxDay}}.',
712
+ invalid_month_range: 'Ο μήνας πρέπει να είναι μεταξύ 1 και 12.',
713
+ },
714
+ datetime: {
715
+ invalid: 'Η ημερομηνία και ώρα πρέπει να είναι έγκυρη.',
716
+ invalid_month_year_hours_minutes:
717
+ 'Η ημερομηνία πρέπει να περιλαμβάνει τον μήνα, το έτος, την ώρα και τα λεπτά.',
718
+ invalid_day_year_hours_minutes:
719
+ 'Η ημερομηνία πρέπει να περιλαμβάνει την ημέρα, το έτος, την ώρα και τα λεπτά.',
720
+ invalid_day_month_hours_minutes:
721
+ 'Η ημερομηνία πρέπει να περιλαμβάνει την ημέρα, τον μήνα, την ώρα και τα λεπτά.',
722
+ invalid_year_hours_minutes:
723
+ 'Η ημερομηνία πρέπει να περιλαμβάνει το έτος, την ώρα και τα λεπτά.',
724
+ invalid_month_hours_minutes:
725
+ 'Η ημερομηνία πρέπει να περιλαμβάνει τον μήνα, την ώρα και τα λεπτά.',
726
+ invalid_day_hours_minutes:
727
+ 'Η ημερομηνία πρέπει να περιλαμβάνει την ημέρα, την ώρα και τα λεπτά.',
728
+ invalid__hours_minutes:
729
+ 'Η ημερομηνία πρέπει να περιλαμβάνει την ώρα και τα λεπτά.',
730
+ invalid_minutes: 'Η ημερομηνία πρέπει να περιλαμβάνει τα λεπτά.',
731
+ invalid_hours: 'Η ημερομηνία πρέπει να περιλαμβάνει την ώρα.',
732
+ invalid_month_year_minutes:
733
+ 'Η ημερομηνία πρέπει να περιλαμβάνει τον μήνα, το έτος και τα λεπτά.',
734
+ invalid_month_year_hours:
735
+ 'Η ημερομηνία πρέπει να περιλαμβάνει τον μήνα, το έτος και την ώρα.',
736
+ invalid_month_year:
737
+ 'Η ημερομηνία πρέπει να περιλαμβάνει τον μήνα και το έτος.',
738
+ invalid_day_year_minutes:
739
+ 'Η ημερομηνία πρέπει να περιλαμβάνει την ημέρα, το έτος και τα λεπτά.',
740
+ invalid_day_year_hours:
741
+ 'Η ημερομηνία πρέπει να περιλαμβάνει την ημέρα, το έτος και την ώρα.',
742
+ invalid_day_month_year:
743
+ 'Η ημερομηνία πρέπει να περιλαμβάνει την ημέρα, τον μήνα και το έτος.',
744
+ invalid_day_month_year_hours:
745
+ 'Η ημερομηνία πρέπει να περιλαμβάνει την ημέρα, τον μήνα, το έτος και την ώρα.',
746
+ invalid_day_year:
747
+ 'Η ημερομηνία πρέπει να περιλαμβάνει την ημέρα και το έτος.',
748
+ invalid_day_month_minutes:
749
+ 'Η ημερομηνία πρέπει να περιλαμβάνει την ημέρα, τον μήνα και τα λεπτά.',
750
+ invalid_day_month_hours:
751
+ 'Η ημερομηνία πρέπει να περιλαμβάνει την ημέρα, τον μήνα και την ώρα.',
752
+ invalid_day_month:
753
+ 'Η ημερομηνία πρέπει να περιλαμβάνει την ημέρα και τον μήνα.',
754
+ invalid_year_minutes:
755
+ 'Η ημερομηνία πρέπει να περιλαμβάνει το έτος και τα λεπτά.',
756
+ invalid_year_hours:
757
+ 'Η ημερομηνία πρέπει να περιλαμβάνει το έτος και την ώρα.',
758
+ invalid_year: 'Η ημερομηνία πρέπει να περιλαμβάνει το έτος.',
759
+ invalid_month_minutes:
760
+ 'Η ημερομηνία πρέπει να περιλαμβάνει τον μήνα και τα λεπτά.',
761
+ invalid_month_hours:
762
+ 'Η ημερομηνία πρέπει να περιλαμβάνει τον μήνα και την ώρα.',
763
+ invalid_month: 'Η ημερομηνία πρέπει να περιλαμβάνει τον μήνα.',
764
+ invalid_day_minutes:
765
+ 'Η ημερομηνία πρέπει να περιλαμβάνει την ημέρα και τα λεπτά.',
766
+ invalid_day_hours:
767
+ 'Η ημερομηνία πρέπει να περιλαμβάνει την ημέρα και την ώρα.',
768
+ invalid_day: 'Η ημερομηνία πρέπει να περιλαμβάνει την ημέρα.',
769
+ invalid_hours_range: 'Η ώρα πρέπει να είναι μεταξύ 0 και 23.',
770
+ invalid_minutes_range: 'Τα λεπτά πρέπει να είναι μεταξύ 0 και 59.',
771
+ invalid_day_range: 'Η ημέρα πρέπει να είναι μεταξύ 1 και {{maxDay}}.',
772
+ invalid_month_range: 'Ο μήνας πρέπει να είναι μεταξύ 1 και 12.',
773
+ invalid_day_month_year_minutes:
774
+ 'Η ημερομηννία πρέπει να περιλαμβάνει την ημέρα, τον μήνα και το έτος κ τα λεπτά.',
775
+ invalid_hours_minutes:
776
+ 'Η ημερομηνία πρέπει να περιλαμβάνει την ώρα και τα λεπτά.',
777
+ earlier_than:
778
+ 'Συμπληρώστε ημερομηνία και ώρα προγενέστερη της {{maxDateTime}}.',
779
+ later_than:
780
+ 'Συμπληρώστε ημερομηνία και ώρα μεταγενέστερη της {{minDateTime}}.',
781
+ },
782
+ otp: {
783
+ invalid: 'Ο κωδικός που έχετε εισάγει είναι λάθος.',
784
+ less_than: 'Έχετε συμπληρώσει λιγότερα από {{maxLength}} ψηφία.',
785
+ },
786
+ image: {
787
+ image_dimension_size:
788
+ 'Οι διαστάσεις που καταχωρίσατε υπερβαίνουν τα αναμενόμενα όρια. Ελάχιστο μέγεθος: ({{minWidth}}x{{minHeight}})px, Μέγιστο μέγεθος: ({{maxWidth}}x{{maxHeight}})px',
789
+ },
790
+ text: {
791
+ more_than: 'Έχετε υπερβεί το όριο των {{max}} χαρακτήρων.',
792
+ less_than: 'Χρειάζονται τουλάχιστον {{min}} χαρακτήρες.',
793
+ },
794
+ },
795
+ },
796
+ };
797
+
798
+ export const INPUTS_FIELDS = [
799
+ {
800
+ key: 'date-example',
801
+ type: 'date',
802
+ required: true,
803
+ label: {
804
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
805
+ secondary: 'Για παράδειγμα, 05 11 2020',
806
+ },
807
+ },
808
+ {
809
+ key: 'date-example-2',
810
+ type: 'date',
811
+ required: true,
812
+ label: {
813
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
814
+ secondary: 'Για παράδειγμα, 05 11 2020',
815
+ },
816
+ },
817
+ {
818
+ key: 'datetime-example',
819
+ type: 'datetime',
820
+ required: true,
821
+ label: {
822
+ primary: 'Πότε εκδόθηκε το διαβατήριο σας;',
823
+ secondary: 'Για παράδειγμα, 05 11 2020 13:30',
824
+ },
825
+ },
826
+ {
827
+ key: 'datetime-example-2',
828
+ type: 'datetime',
829
+ required: true,
830
+ label: {
831
+ primary: 'Πότε εκδόθηκε το διαβατήριο σας;',
832
+ secondary: 'Για παράδειγμα, 05 11 2020 13:30',
833
+ },
834
+ },
835
+ {
836
+ key: 'otp',
837
+ type: 'otp',
838
+ maxLength: 6,
839
+ label: {
840
+ primary: 'Συμπληρώστε τον κωδικό επιβεβαίωσης',
841
+ },
842
+ required: true,
843
+ },
844
+ {
845
+ key: 'checkbox',
846
+ type: 'choice:multiple',
847
+ required: true,
848
+ label: { primary: 'Πώς αισθάνεστε αυτή τη στιγμή;' },
849
+ extra: {
850
+ options: [
851
+ {
852
+ label: { primary: 'Έχω συνάχι' },
853
+ value: 'runny-nose',
854
+ },
855
+ {
856
+ label: { primary: 'Έχω πυρετό' },
857
+ value: 'fever',
858
+ },
859
+ {
860
+ label: { primary: 'Αισθάνομαι κούραση' },
861
+ value: 'fatigue',
862
+ },
863
+ ],
864
+ },
865
+ },
866
+ {
867
+ key: 'autocomplete_multiple',
868
+ required: true,
869
+ type: 'choice:multiple',
870
+ label: { primary: 'Πώς αισθάνεστε αυτή τη στιγμή;' },
871
+ extra: {
872
+ component: 'AutoComplete',
873
+ multiple: true,
874
+ options: [
875
+ {
876
+ label: { primary: 'Έχω συνάχι' },
877
+ value: 'runny-nose',
878
+ },
879
+ {
880
+ label: { primary: 'Έχω πυρετό' },
881
+ value: 'fever',
882
+ },
883
+ {
884
+ label: { primary: 'Αισθάνομαι κούραση' },
885
+ value: 'fatigue',
886
+ },
887
+ ],
888
+ },
889
+ },
890
+ {
891
+ key: 'radio',
892
+ type: 'choice:single',
893
+ required: true,
894
+ label: { primary: 'Πώς αισθάνεστε αυτή τη στιγμή;' },
895
+ extra: {
896
+ options: [
897
+ {
898
+ label: { primary: 'Έχω συνάχι' },
899
+ value: 'runny-nose',
900
+ },
901
+ {
902
+ label: { primary: 'Έχω πυρετό' },
903
+ value: 'fever',
904
+ },
905
+ {
906
+ label: { primary: 'Αισθάνομαι κούραση' },
907
+ value: 'fatigue',
908
+ },
909
+ ],
910
+ },
911
+ },
912
+ {
913
+ key: 'select',
914
+ type: 'choice:single',
915
+ required: true,
916
+ label: { primary: 'Πώς αισθάνεστε αυτή τη στιγμή;' },
917
+ extra: {
918
+ component: 'Select',
919
+ options: [
920
+ {
921
+ label: { primary: '' },
922
+ value: '',
923
+ },
924
+ {
925
+ label: { primary: 'Έχω συνάχι' },
926
+ value: 'runny-nose',
927
+ },
928
+ {
929
+ label: { primary: 'Έχω πυρετό' },
930
+ value: 'fever',
931
+ },
932
+ {
933
+ label: { primary: 'Αισθάνομαι κούραση' },
934
+ value: 'fatigue',
935
+ },
936
+ ],
937
+ },
938
+ },
939
+ {
940
+ key: 'autocomplete_single',
941
+ required: true,
942
+ type: 'choice:single',
943
+ label: { primary: 'Πώς αισθάνεστε αυτή τη στιγμή;' },
944
+ extra: {
945
+ component: 'AutoComplete',
946
+ options: [
947
+ {
948
+ label: { primary: 'Έχω συνάχι' },
949
+ value: 'runny-nose',
950
+ },
951
+ {
952
+ label: { primary: 'Έχω πυρετό' },
953
+ value: 'fever',
954
+ },
955
+ {
956
+ label: { primary: 'Αισθάνομαι κούραση' },
957
+ value: 'fatigue',
958
+ },
959
+ ],
960
+ },
961
+ },
962
+ {
963
+ key: 'image',
964
+ type: 'image',
965
+ required: true,
966
+ label: {
967
+ primary: 'Ανεβάστε τη φωτογραφία του προστίμου',
968
+ },
969
+ },
970
+ {
971
+ key: 'file',
972
+ type: 'file',
973
+ label: {
974
+ primary: 'Ανεβάστε το αρχείο της απόδειξης',
975
+ },
976
+ required: true,
977
+ },
978
+ ];
979
+
980
+ const inputsScenarios = [
981
+ {
982
+ title: 'success fill for inputs',
983
+ describe: 'inputs scenario',
984
+ fields: INPUTS_FIELDS,
985
+ fill: [
986
+ {
987
+ fieldKey: 'date-example',
988
+ value: {
989
+ day: '22',
990
+ month: '11',
991
+ year: '2020',
992
+ },
993
+ },
994
+ {
995
+ fieldKey: 'date-example-2',
996
+ value: {
997
+ day: '2',
998
+ month: '1',
999
+ year: '2020',
1000
+ },
1001
+ },
1002
+ {
1003
+ fieldKey: 'datetime-example',
1004
+ value: {
1005
+ day: '22',
1006
+ month: '11',
1007
+ year: '2020',
1008
+ hours: '22',
1009
+ minutes: '22',
1010
+ },
1011
+ },
1012
+ {
1013
+ fieldKey: 'datetime-example-2',
1014
+ value: {
1015
+ day: '2',
1016
+ month: '1',
1017
+ year: '2020',
1018
+ hours: '2',
1019
+ minutes: '2',
1020
+ },
1021
+ },
1022
+ {
1023
+ fieldKey: 'otp',
1024
+ value: {
1025
+ '0': '4',
1026
+ '1': '4',
1027
+ '2': '4',
1028
+ '3': '4',
1029
+ '4': '4',
1030
+ '5': '4',
1031
+ },
1032
+ },
1033
+ {
1034
+ fieldKey: 'checkbox',
1035
+ value: ['fever', 'fatigue'],
1036
+ },
1037
+ {
1038
+ fieldKey: 'autocomplete_multiple',
1039
+ value: ['fever', 'fatigue'],
1040
+ },
1041
+ {
1042
+ fieldKey: 'radio',
1043
+ value: 'fever',
1044
+ },
1045
+ {
1046
+ fieldKey: 'select',
1047
+ value: 'fatigue',
1048
+ },
1049
+ {
1050
+ fieldKey: 'autocomplete_single',
1051
+ value: 'fatigue',
1052
+ },
1053
+ {
1054
+ fieldKey: 'image',
1055
+ value: {
1056
+ fileName: 'green_image.png',
1057
+ width: 500,
1058
+ height: 500,
1059
+ size: 3,
1060
+ },
1061
+ },
1062
+ {
1063
+ fieldKey: 'file',
1064
+ value: {
1065
+ fileName: 'file.txt',
1066
+ size: 200,
1067
+ },
1068
+ },
1069
+ ],
1070
+ expect: [
1071
+ {
1072
+ type: 'success',
1073
+ fieldKey: 'date-example',
1074
+ text: el.form.error.date.invalid,
1075
+ },
1076
+ {
1077
+ type: 'success',
1078
+ fieldKey: 'date-example-2',
1079
+ text: el.form.error.date.invalid,
1080
+ },
1081
+ {
1082
+ type: 'success',
1083
+ fieldKey: 'datetime-example',
1084
+ text: el.form.error.required,
1085
+ },
1086
+ {
1087
+ type: 'success',
1088
+ fieldKey: 'datetime-example-2',
1089
+ text: el.form.error.required,
1090
+ },
1091
+ {
1092
+ type: 'success',
1093
+ fieldKey: 'otp',
1094
+ args: {
1095
+ maxLength: 6,
1096
+ },
1097
+ text: el.form.error.otp.less_than,
1098
+ },
1099
+ {
1100
+ type: 'success',
1101
+ fieldKey: 'checkbox',
1102
+ text: el.form.error.required,
1103
+ },
1104
+ {
1105
+ type: 'success',
1106
+ fieldKey: 'autocomplete_multiple',
1107
+ text: el.form.error.required,
1108
+ },
1109
+ {
1110
+ type: 'success',
1111
+ fieldKey: 'radio',
1112
+ text: el.form.error.required,
1113
+ },
1114
+ {
1115
+ type: 'success',
1116
+ fieldKey: 'select',
1117
+ text: el.form.error.required,
1118
+ },
1119
+ {
1120
+ type: 'success',
1121
+ fieldKey: 'autocomplete_single',
1122
+ text: el.form.error.required,
1123
+ },
1124
+ {
1125
+ type: 'success',
1126
+ fieldKey: 'image',
1127
+ text: el.form.error.required,
1128
+ },
1129
+ {
1130
+ type: 'success',
1131
+ fieldKey: 'file',
1132
+ text: el.form.error.required,
1133
+ },
1134
+ ],
1135
+ },
1136
+ {
1137
+ title: 'empty fill for inputs',
1138
+ describe: 'inputs scenario',
1139
+ fields: INPUTS_FIELDS,
1140
+ fill: [],
1141
+ expect: [
1142
+ {
1143
+ type: 'error',
1144
+ fieldKey: 'date-example',
1145
+ text: el.form.error.required,
1146
+ },
1147
+ {
1148
+ type: 'error',
1149
+ fieldKey: 'datetime-example',
1150
+ text: el.form.error.required,
1151
+ },
1152
+ {
1153
+ type: 'error',
1154
+ fieldKey: 'otp',
1155
+ text: el.form.error.required,
1156
+ },
1157
+ {
1158
+ type: 'error',
1159
+ fieldKey: 'checkbox',
1160
+ text: el.form.error.required,
1161
+ },
1162
+ {
1163
+ type: 'error',
1164
+ fieldKey: 'autocomplete_multiple',
1165
+ text: el.form.error.required,
1166
+ },
1167
+ {
1168
+ type: 'error',
1169
+ fieldKey: 'radio',
1170
+ text: el.form.error.required,
1171
+ },
1172
+ {
1173
+ type: 'error',
1174
+ fieldKey: 'select',
1175
+ text: el.form.error.required,
1176
+ },
1177
+ {
1178
+ type: 'error',
1179
+ fieldKey: 'autocomplete_single',
1180
+ text: el.form.error.required,
1181
+ },
1182
+ {
1183
+ type: 'error',
1184
+ fieldKey: 'image',
1185
+ text: el.form.error.required,
1186
+ },
1187
+ {
1188
+ type: 'error',
1189
+ fieldKey: 'file',
1190
+ text: el.form.error.required,
1191
+ },
1192
+ ],
1193
+ },
1194
+ {
1195
+ title: 'incorrect types for DateInput and OtpInput',
1196
+ describe: 'inputs scenario',
1197
+ fields: [
1198
+ {
1199
+ key: 'date-example',
1200
+ type: 'date',
1201
+ required: true,
1202
+ label: {
1203
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1204
+ secondary: 'Για παράδειγμα, 05 11 2020',
1205
+ },
1206
+ },
1207
+ {
1208
+ key: 'date-example-2',
1209
+ type: 'date',
1210
+ required: true,
1211
+ label: {
1212
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1213
+ secondary: 'Για παράδειγμα, 05 11 2020',
1214
+ },
1215
+ },
1216
+ {
1217
+ key: 'date-example-3',
1218
+ type: 'date',
1219
+ required: true,
1220
+ label: {
1221
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1222
+ secondary: 'Για παράδειγμα, 05 11 2020',
1223
+ },
1224
+ },
1225
+ {
1226
+ key: 'date-example-4',
1227
+ type: 'date',
1228
+ required: true,
1229
+ label: {
1230
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1231
+ secondary: 'Για παράδειγμα, 05 11 2020',
1232
+ },
1233
+ },
1234
+ {
1235
+ key: 'date-example-5',
1236
+ type: 'date',
1237
+ required: true,
1238
+ label: {
1239
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1240
+ secondary: 'Για παράδειγμα, 05 11 2020',
1241
+ },
1242
+ },
1243
+ {
1244
+ key: 'date-example-6',
1245
+ type: 'date',
1246
+ required: true,
1247
+ label: {
1248
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1249
+ secondary: 'Για παράδειγμα, 05 11 2020',
1250
+ },
1251
+ },
1252
+ {
1253
+ key: 'date-example-7',
1254
+ type: 'date',
1255
+ required: true,
1256
+ label: {
1257
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1258
+ secondary: 'Για παράδειγμα, 05 11 2020',
1259
+ },
1260
+ },
1261
+ {
1262
+ key: 'datetime-example-1',
1263
+ type: 'datetime',
1264
+ required: true,
1265
+ label: {
1266
+ primary: 'Ποιά είναι η ημερομηνία και ώρα του ραντεβού;',
1267
+ secondary: 'Για παράδειγμα, 05/11/2020 14:30',
1268
+ },
1269
+ },
1270
+ {
1271
+ key: 'datetime-example-2',
1272
+ type: 'datetime',
1273
+ required: true,
1274
+ label: {
1275
+ primary: 'Ποιά είναι η ημερομηνία και ώρα του ραντεβού;',
1276
+ secondary: 'Για παράδειγμα, 05/11/2020 14:30',
1277
+ },
1278
+ },
1279
+ {
1280
+ key: 'datetime-example-3',
1281
+ type: 'datetime',
1282
+ required: true,
1283
+ label: {
1284
+ primary: 'Ποιά είναι η ημερομηνία και ώρα του ραντεβού;',
1285
+ secondary: 'Για παράδειγμα, 05/11/2020 14:30',
1286
+ },
1287
+ },
1288
+ {
1289
+ key: 'datetime-example-4',
1290
+ type: 'datetime',
1291
+ required: true,
1292
+ label: {
1293
+ primary: 'Ποιά είναι η ημερομηνία και ώρα του ραντεβού;',
1294
+ secondary: 'Για παράδειγμα, 05/11/2020 14:30',
1295
+ },
1296
+ },
1297
+ {
1298
+ key: 'datetime-example-5',
1299
+ type: 'datetime',
1300
+ required: true,
1301
+ label: {
1302
+ primary: 'Ποιά είναι η ημερομηνία και ώρα του ραντεβού;',
1303
+ secondary: 'Για παράδειγμα, 05/11/2020 14:30',
1304
+ },
1305
+ },
1306
+
1307
+ {
1308
+ key: 'datetime-example-6',
1309
+ type: 'datetime',
1310
+ required: true,
1311
+ label: {
1312
+ primary: 'Ποιά είναι η ημερομηνία και ώρα του ραντεβού;',
1313
+ secondary: 'Για παράδειγμα, 05/11/2020 14:30',
1314
+ },
1315
+ },
1316
+ {
1317
+ key: 'datetime-example-7',
1318
+ type: 'datetime',
1319
+ required: true,
1320
+ label: {
1321
+ primary: 'Ποιά είναι η ημερομηνία και ώρα του ραντεβού;',
1322
+ secondary: 'Για παράδειγμα, 05/11/2020 14:30',
1323
+ },
1324
+ },
1325
+ {
1326
+ key: 'datetime-example-8',
1327
+ type: 'datetime',
1328
+ required: true,
1329
+ label: {
1330
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1331
+ secondary: 'Για παράδειγμα, 05 11 2020',
1332
+ },
1333
+ },
1334
+ {
1335
+ key: 'datetime-example-9',
1336
+ type: 'datetime',
1337
+ required: true,
1338
+ label: {
1339
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1340
+ secondary: 'Για παράδειγμα, 05 11 2020',
1341
+ },
1342
+ },
1343
+ {
1344
+ key: 'datetime-example-10',
1345
+ type: 'datetime',
1346
+ required: true,
1347
+ label: {
1348
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1349
+ secondary: 'Για παράδειγμα, 05 11 2020',
1350
+ },
1351
+ },
1352
+ {
1353
+ key: 'datetime-example-11',
1354
+ type: 'datetime',
1355
+ required: true,
1356
+ label: {
1357
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1358
+ secondary: 'Για παράδειγμα, 05 11 2020',
1359
+ },
1360
+ },
1361
+ {
1362
+ key: 'datetime-example-12',
1363
+ type: 'datetime',
1364
+ required: true,
1365
+ label: {
1366
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1367
+ secondary: 'Για παράδειγμα, 05 11 2020',
1368
+ },
1369
+ },
1370
+ {
1371
+ key: 'datetime-example-13',
1372
+ type: 'datetime',
1373
+ required: true,
1374
+ label: {
1375
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1376
+ secondary: 'Για παράδειγμα, 05 11 2020',
1377
+ },
1378
+ },
1379
+ {
1380
+ key: 'datetime-example-14',
1381
+ type: 'datetime',
1382
+ required: true,
1383
+ label: {
1384
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1385
+ secondary: 'Για παράδειγμα, 05 11 2020',
1386
+ },
1387
+ },
1388
+ {
1389
+ key: 'datetime-example-15',
1390
+ type: 'datetime',
1391
+ required: true,
1392
+ label: {
1393
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1394
+ secondary: 'Για παράδειγμα, 05 11 2020',
1395
+ },
1396
+ },
1397
+ {
1398
+ key: 'datetime-example-16',
1399
+ type: 'datetime',
1400
+ required: true,
1401
+ label: {
1402
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1403
+ secondary: 'Για παράδειγμα, 05 11 2020',
1404
+ },
1405
+ },
1406
+ {
1407
+ key: 'datetime-example-17',
1408
+ type: 'datetime',
1409
+ required: true,
1410
+ label: {
1411
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1412
+ secondary: 'Για παράδειγμα, 05 11 2020',
1413
+ },
1414
+ },
1415
+ {
1416
+ key: 'datetime-example-18',
1417
+ type: 'datetime',
1418
+ required: true,
1419
+ label: {
1420
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1421
+ secondary: 'Για παράδειγμα, 05 11 2020',
1422
+ },
1423
+ },
1424
+ {
1425
+ key: 'datetime-example-19',
1426
+ type: 'datetime',
1427
+ required: true,
1428
+ label: {
1429
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1430
+ secondary: 'Για παράδειγμα, 05 11 2020',
1431
+ },
1432
+ },
1433
+ {
1434
+ key: 'datetime-example-20',
1435
+ type: 'datetime',
1436
+ required: true,
1437
+ label: {
1438
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1439
+ secondary: 'Για παράδειγμα, 05 11 2020',
1440
+ },
1441
+ },
1442
+ {
1443
+ key: 'datetime-example-21',
1444
+ type: 'datetime',
1445
+ required: true,
1446
+ label: {
1447
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1448
+ secondary: 'Για παράδειγμα, 05 11 2020',
1449
+ },
1450
+ },
1451
+ {
1452
+ key: 'datetime-example-22',
1453
+ type: 'datetime',
1454
+ required: true,
1455
+ label: {
1456
+ primary: 'Ποιά είναι η ημερομηνία γέννησής σας;',
1457
+ secondary: 'Για παράδειγμα, 05 11 2020',
1458
+ },
1459
+ },
1460
+ {
1461
+ key: 'otp',
1462
+ type: 'otp',
1463
+ maxLength: 6,
1464
+ label: {
1465
+ primary: 'Συμπληρώστε τον κωδικό επιβεβαίωσης',
1466
+ },
1467
+ required: true,
1468
+ },
1469
+ ],
1470
+ fill: [
1471
+ {
1472
+ fieldKey: 'date-example',
1473
+ value: {
1474
+ day: 'a2',
1475
+ month: '11',
1476
+ year: '2020',
1477
+ },
1478
+ },
1479
+ {
1480
+ fieldKey: 'date-example-2',
1481
+ value: {
1482
+ day: '',
1483
+ month: '11',
1484
+ year: '2020',
1485
+ },
1486
+ },
1487
+ {
1488
+ fieldKey: 'date-example-3',
1489
+ value: {
1490
+ day: '11',
1491
+ month: '',
1492
+ year: '2020',
1493
+ },
1494
+ },
1495
+ {
1496
+ fieldKey: 'date-example-4',
1497
+ value: {
1498
+ day: '11',
1499
+ month: '11',
1500
+ year: '',
1501
+ },
1502
+ },
1503
+ {
1504
+ fieldKey: 'date-example-5',
1505
+ value: {
1506
+ day: '',
1507
+ month: '',
1508
+ year: '2020',
1509
+ },
1510
+ },
1511
+ {
1512
+ fieldKey: 'date-example-6',
1513
+ value: {
1514
+ day: '',
1515
+ month: '11',
1516
+ year: '',
1517
+ },
1518
+ },
1519
+ {
1520
+ fieldKey: 'date-example-7',
1521
+ value: {
1522
+ day: '11',
1523
+ month: '',
1524
+ year: '',
1525
+ },
1526
+ },
1527
+ {
1528
+ fieldKey: 'datetime-example-1',
1529
+ value: {
1530
+ day: 'a2',
1531
+ month: '11',
1532
+ year: '2024',
1533
+ hours: '15',
1534
+ minutes: '15',
1535
+ },
1536
+ },
1537
+ {
1538
+ fieldKey: 'datetime-example-2',
1539
+ value: { day: '12', month: '', year: '', hours: '', minutes: '' },
1540
+ },
1541
+ {
1542
+ fieldKey: 'datetime-example-3',
1543
+ value: { day: '', month: '12', year: '', hours: '', minutes: '' },
1544
+ },
1545
+ {
1546
+ fieldKey: 'datetime-example-4',
1547
+ value: { day: '', month: '', year: '2024', hours: '', minutes: '' },
1548
+ },
1549
+ {
1550
+ fieldKey: 'datetime-example-5',
1551
+ value: { day: '', month: '', year: '', hours: '13', minutes: '' },
1552
+ },
1553
+ {
1554
+ fieldKey: 'datetime-example-6',
1555
+ value: { day: '', month: '', year: '', hours: '', minutes: '45' },
1556
+ },
1557
+ {
1558
+ fieldKey: 'datetime-example-7',
1559
+ value: { day: '12', month: '11', year: '', hours: '', minutes: '' },
1560
+ },
1561
+ {
1562
+ fieldKey: 'datetime-example-8',
1563
+ value: { day: '12', month: '', year: '2024', hours: '', minutes: '' },
1564
+ },
1565
+ {
1566
+ fieldKey: 'datetime-example-9',
1567
+ value: { day: '', month: '11', year: '2024', hours: '', minutes: '' },
1568
+ },
1569
+ {
1570
+ fieldKey: 'datetime-example-10',
1571
+ value: { day: '12', month: '11', year: '2024', hours: '', minutes: '' },
1572
+ },
1573
+ {
1574
+ fieldKey: 'datetime-example-11',
1575
+ value: {
1576
+ day: '12',
1577
+ month: '11',
1578
+ year: '2024',
1579
+ hours: '15',
1580
+ minutes: '',
1581
+ },
1582
+ },
1583
+ {
1584
+ fieldKey: 'datetime-example-12',
1585
+ value: {
1586
+ day: '12',
1587
+ month: '11',
1588
+ year: '2024',
1589
+ hours: '',
1590
+ minutes: '15',
1591
+ },
1592
+ },
1593
+ {
1594
+ fieldKey: 'datetime-example-13',
1595
+ value: { day: '12', month: '', year: '', hours: '15', minutes: '' },
1596
+ },
1597
+ {
1598
+ fieldKey: 'datetime-example-14',
1599
+ value: { day: '12', month: '', year: '', hours: '', minutes: '15' },
1600
+ },
1601
+ {
1602
+ fieldKey: 'datetime-example-15',
1603
+ value: { day: '12', month: '', year: '', hours: '15', minutes: '15' },
1604
+ },
1605
+ {
1606
+ fieldKey: 'datetime-example-16',
1607
+ value: { day: '', month: '12', year: '', hours: '15', minutes: '' },
1608
+ },
1609
+ {
1610
+ fieldKey: 'datetime-example-17',
1611
+ value: { day: '', month: '12', year: '', hours: '', minutes: '15' },
1612
+ },
1613
+ {
1614
+ fieldKey: 'datetime-example-18',
1615
+ value: { day: '', month: '12', year: '', hours: '15', minutes: '15' },
1616
+ },
1617
+ {
1618
+ fieldKey: 'datetime-example-19',
1619
+ value: { day: '', month: '', year: '2024', hours: '15', minutes: '' },
1620
+ },
1621
+ {
1622
+ fieldKey: 'datetime-example-20',
1623
+ value: { day: '', month: '', year: '2024', hours: '', minutes: '15' },
1624
+ },
1625
+ {
1626
+ fieldKey: 'datetime-example-21',
1627
+ value: { day: '', month: '', year: '2024', hours: '15', minutes: '15' },
1628
+ },
1629
+ {
1630
+ fieldKey: 'datetime-example-22',
1631
+ value: { day: '', month: '', year: '', hours: '15', minutes: '15' },
1632
+ },
1633
+ {
1634
+ fieldKey: 'otp',
1635
+ value: {
1636
+ '0': 'a',
1637
+ '1': '4',
1638
+ '2': '4',
1639
+ '3': '4',
1640
+ '4': '4',
1641
+ '5': '4',
1642
+ },
1643
+ },
1644
+ ],
1645
+ expect: [
1646
+ {
1647
+ type: 'error',
1648
+ fieldKey: 'date-example',
1649
+ text: el.form.error.date.invalid,
1650
+ },
1651
+ {
1652
+ type: 'error',
1653
+ fieldKey: 'date-example-2',
1654
+ text: el.form.error.date.invalid_day,
1655
+ },
1656
+ {
1657
+ type: 'error',
1658
+ fieldKey: 'date-example-3',
1659
+ text: el.form.error.date.invalid_month,
1660
+ },
1661
+ {
1662
+ type: 'error',
1663
+ fieldKey: 'date-example-4',
1664
+ text: el.form.error.date.invalid_year,
1665
+ },
1666
+ {
1667
+ type: 'error',
1668
+ fieldKey: 'date-example-5',
1669
+ text: el.form.error.date.invalid_day_month,
1670
+ },
1671
+ {
1672
+ type: 'error',
1673
+ fieldKey: 'date-example-6',
1674
+ text: el.form.error.date.invalid_day_year,
1675
+ },
1676
+ {
1677
+ type: 'error',
1678
+ fieldKey: 'date-example-7',
1679
+ text: el.form.error.date.invalid_month_year,
1680
+ },
1681
+ {
1682
+ type: 'error',
1683
+ fieldKey: 'date-example-2',
1684
+ text: el.form.error.date.invalid_day,
1685
+ },
1686
+ {
1687
+ type: 'error',
1688
+ fieldKey: 'date-example-3',
1689
+ text: el.form.error.date.invalid_month,
1690
+ },
1691
+ {
1692
+ type: 'error',
1693
+ fieldKey: 'date-example-4',
1694
+ text: el.form.error.date.invalid_year,
1695
+ },
1696
+ {
1697
+ type: 'error',
1698
+ fieldKey: 'date-example-5',
1699
+ text: el.form.error.date.invalid_day_month,
1700
+ },
1701
+ {
1702
+ type: 'error',
1703
+ fieldKey: 'date-example-6',
1704
+ text: el.form.error.date.invalid_day_year,
1705
+ },
1706
+ {
1707
+ type: 'error',
1708
+ fieldKey: 'date-example-7',
1709
+ text: el.form.error.date.invalid_month_year,
1710
+ },
1711
+ {
1712
+ type: 'error',
1713
+ fieldKey: 'datetime-example-1',
1714
+ text: el.form.error.datetime.invalid,
1715
+ },
1716
+ {
1717
+ type: 'error',
1718
+ fieldKey: 'datetime-example-2',
1719
+ text: el.form.error.datetime.invalid_month_year_hours_minutes,
1720
+ },
1721
+ {
1722
+ type: 'error',
1723
+ fieldKey: 'datetime-example-3',
1724
+ text: el.form.error.datetime.invalid_day_year_hours_minutes,
1725
+ },
1726
+ {
1727
+ type: 'error',
1728
+ fieldKey: 'datetime-example-4',
1729
+ text: el.form.error.datetime.invalid_day_month_hours_minutes,
1730
+ },
1731
+ {
1732
+ type: 'error',
1733
+ fieldKey: 'datetime-example-5',
1734
+ text: el.form.error.datetime.invalid_day_month_year_minutes,
1735
+ },
1736
+ {
1737
+ type: 'error',
1738
+ fieldKey: 'datetime-example-6',
1739
+ text: el.form.error.datetime.invalid_day_month_year_hours,
1740
+ },
1741
+ {
1742
+ type: 'error',
1743
+ fieldKey: 'datetime-example-7',
1744
+ text: el.form.error.datetime.invalid_year_hours_minutes,
1745
+ },
1746
+ {
1747
+ type: 'error',
1748
+ fieldKey: 'datetime-example-8',
1749
+ text: el.form.error.datetime.invalid_month_hours_minutes,
1750
+ },
1751
+ {
1752
+ type: 'error',
1753
+ fieldKey: 'datetime-example-9',
1754
+ text: el.form.error.datetime.invalid_day_hours_minutes,
1755
+ },
1756
+ {
1757
+ type: 'error',
1758
+ fieldKey: 'datetime-example-10',
1759
+ text: el.form.error.datetime.invalid_hours_minutes,
1760
+ },
1761
+ {
1762
+ type: 'error',
1763
+ fieldKey: 'datetime-example-11',
1764
+ text: el.form.error.datetime.invalid_minutes,
1765
+ },
1766
+ {
1767
+ type: 'error',
1768
+ fieldKey: 'datetime-example-12',
1769
+ text: el.form.error.datetime.invalid_hours,
1770
+ },
1771
+ {
1772
+ type: 'error',
1773
+ fieldKey: 'datetime-example-13',
1774
+ text: el.form.error.datetime.invalid_month_year_minutes,
1775
+ },
1776
+ {
1777
+ type: 'error',
1778
+ fieldKey: 'datetime-example-14',
1779
+ text: el.form.error.datetime.invalid_month_year_hours,
1780
+ },
1781
+ {
1782
+ type: 'error',
1783
+ fieldKey: 'datetime-example-15',
1784
+ text: el.form.error.datetime.invalid_month_year,
1785
+ },
1786
+ {
1787
+ type: 'error',
1788
+ fieldKey: 'datetime-example-16',
1789
+ text: el.form.error.datetime.invalid_day_year_minutes,
1790
+ },
1791
+ {
1792
+ type: 'error',
1793
+ fieldKey: 'datetime-example-17',
1794
+ text: el.form.error.datetime.invalid_day_year_hours,
1795
+ },
1796
+ {
1797
+ type: 'error',
1798
+ fieldKey: 'datetime-example-18',
1799
+ text: el.form.error.datetime.invalid_day_year,
1800
+ },
1801
+ {
1802
+ type: 'error',
1803
+ fieldKey: 'datetime-example-19',
1804
+ text: el.form.error.datetime.invalid_day_month_minutes,
1805
+ },
1806
+ {
1807
+ type: 'error',
1808
+ fieldKey: 'datetime-example-20',
1809
+ text: el.form.error.datetime.invalid_day_month_hours,
1810
+ },
1811
+ {
1812
+ type: 'error',
1813
+ fieldKey: 'datetime-example-21',
1814
+ text: el.form.error.datetime.invalid_day_month,
1815
+ },
1816
+ {
1817
+ type: 'error',
1818
+ fieldKey: 'datetime-example-22',
1819
+ text: el.form.error.datetime.invalid_day_month_year,
1820
+ },
1821
+ {
1822
+ type: 'error',
1823
+ fieldKey: 'otp',
1824
+ args: {
1825
+ maxLength: 6,
1826
+ },
1827
+ text: el.form.error.otp.less_than,
1828
+ },
1829
+ ],
1830
+ },
1831
+ {
1832
+ title: 'wrong sizes for ImageInput and FileInput',
1833
+ describe: 'inputs scenario',
1834
+ fields: [
1835
+ {
1836
+ key: 'image',
1837
+ type: 'image',
1838
+ required: true,
1839
+ label: {
1840
+ primary: 'Ανεβάστε τη φωτογραφία του προστίμου',
1841
+ },
1842
+ extra: {
1843
+ limit: {
1844
+ maxSize: 300,
1845
+ },
1846
+ },
1847
+ },
1848
+ {
1849
+ key: 'file',
1850
+ type: 'file',
1851
+ required: true,
1852
+ label: {
1853
+ primary: 'Ανεβάστε το αρχείο της απόδειξης',
1854
+ },
1855
+ extra: {
1856
+ limit: {
1857
+ maxSize: 300,
1858
+ },
1859
+ },
1860
+ },
1861
+ ],
1862
+ fill: [
1863
+ {
1864
+ fieldKey: 'image',
1865
+ value: {
1866
+ fileName: 'green_image.png',
1867
+ size: 300,
1868
+ },
1869
+ },
1870
+ {
1871
+ fieldKey: 'file',
1872
+ value: {
1873
+ fileName: 'file.txt',
1874
+ size: 200,
1875
+ },
1876
+ },
1877
+ ],
1878
+ expect: [
1879
+ {
1880
+ type: 'error',
1881
+ fieldKey: 'image',
1882
+ args: {
1883
+ maxSize: 300,
1884
+ },
1885
+ text: el.form.error.image_size,
1886
+ },
1887
+ {
1888
+ type: 'error',
1889
+ fieldKey: 'file',
1890
+ args: {
1891
+ maxSize: 300,
1892
+ },
1893
+ text: el.form.error.file_size,
1894
+ },
1895
+ ],
1896
+ },
1897
+ {
1898
+ title: 'wrong dimensions for ImageInput',
1899
+ describe: 'inputs scenario',
1900
+ fields: [
1901
+ {
1902
+ key: 'image',
1903
+ type: 'image',
1904
+ required: true,
1905
+ label: {
1906
+ primary: 'Ανεβάστε τη φωτογραφία του προστίμου',
1907
+ },
1908
+ extra: {
1909
+ limit: {
1910
+ maxHeight: 400,
1911
+ maxWidth: 400,
1912
+ minHeight: 100,
1913
+ minWidth: 100,
1914
+ },
1915
+ },
1916
+ },
1917
+ ],
1918
+ fill: [
1919
+ {
1920
+ fieldKey: 'image',
1921
+ value: {
1922
+ fileName: 'green_image.png',
1923
+ width: 500,
1924
+ height: 500,
1925
+ },
1926
+ },
1927
+ ],
1928
+ expect: [
1929
+ {
1930
+ type: 'error',
1931
+ fieldKey: 'image',
1932
+ args: {
1933
+ minWidth: 100,
1934
+ minHeight: 100,
1935
+ maxWidth: 400,
1936
+ maxHeight: 400,
1937
+ },
1938
+ text: el.form.error.image.image_dimension_size,
1939
+ },
1940
+ ],
1941
+ },
1942
+ ];
1943
+
1944
+ const INPUTS_INPUT_FIELDS = [
1945
+ {
1946
+ key: 'location',
1947
+ type: 'string',
1948
+ label: {
1949
+ primary: 'Συμπληρώστε τον τόπο κατοικίας σας',
1950
+ },
1951
+ required: true,
1952
+ },
1953
+ {
1954
+ key: 'text',
1955
+ type: 'text',
1956
+ required: true,
1957
+ label: {
1958
+ primary: 'Συμπληρώστε το αίτημά σας',
1959
+ },
1960
+ },
1961
+ {
1962
+ key: 'email',
1963
+ type: 'email',
1964
+ label: {
1965
+ primary: 'Διεύθυνση ηλεκτρονικού ταχυδρομείου (email)',
1966
+ },
1967
+ required: true,
1968
+ },
1969
+ {
1970
+ key: 'desired-mount',
1971
+ type: 'number',
1972
+ label: {
1973
+ primary: 'Συμπληρώστε το ποσό που σας ενδιαφέρει',
1974
+ },
1975
+ required: true,
1976
+ },
1977
+ {
1978
+ key: 'age',
1979
+ type: 'int',
1980
+ required: true,
1981
+ label: {
1982
+ primary: 'Ποιά είναι η ηλικία σας;',
1983
+ secondary: 'Καταχωρίστε την ηλικία σας',
1984
+ },
1985
+ },
1986
+ {
1987
+ key: 'afm',
1988
+ type: 'afm',
1989
+ required: true,
1990
+ label: { primary: 'ΑΦΜ' },
1991
+ },
1992
+ {
1993
+ key: 'iban',
1994
+ type: 'iban',
1995
+ label: {
1996
+ primary: 'Συμπληρώστε το αριθμό του τραπεζικού σας λογαριασμού',
1997
+ },
1998
+ required: true,
1999
+ },
2000
+ {
2001
+ key: 'uuid4',
2002
+ type: 'uuid4',
2003
+ label: {
2004
+ primary: 'Συμπληρώστε το uuid4',
2005
+ },
2006
+ required: true,
2007
+ },
2008
+ {
2009
+ key: 'mobile-phone',
2010
+ type: 'mobile_phone',
2011
+ label: {
2012
+ primary: 'Συμπληρώστε το κινητό σας τηλέφωνο',
2013
+ },
2014
+ required: true,
2015
+ extra: {
2016
+ countries: ['gr'],
2017
+ phoneType: 'mobile',
2018
+ },
2019
+ },
2020
+ {
2021
+ key: 'phone-number',
2022
+ type: 'phone_number',
2023
+ label: {
2024
+ primary: 'Συμπληρώστε το τηλέφωνό σας',
2025
+ },
2026
+ required: true,
2027
+ extra: {
2028
+ countries: ['gr'],
2029
+ },
2030
+ },
2031
+ {
2032
+ key: 'phone-number-landline',
2033
+ type: 'phone_number',
2034
+ label: {
2035
+ primary: 'Συμπληρώστε το σταθερό σας τηλέφωνό',
2036
+ },
2037
+ required: true,
2038
+ extra: {
2039
+ countries: ['gr'],
2040
+ phoneType: 'landline',
2041
+ },
2042
+ },
2043
+ {
2044
+ key: 'postal-code',
2045
+ type: 'postal_code',
2046
+ label: {
2047
+ primary: 'Συμπληρώστε τον ταχυδρομικό σας κώδικα',
2048
+ },
2049
+ extra: { countries: ['GR'] },
2050
+ required: true,
2051
+ },
2052
+ ];
2053
+
2054
+ const ERROR_GROUPING_FIELDS = [
2055
+ {
2056
+ key: 'address',
2057
+ type: 'string',
2058
+ required: true,
2059
+ layout: { xl: 6, lg: 6, md: 6, xs: 6 },
2060
+ label: {
2061
+ primary: 'Οδός',
2062
+ },
2063
+ },
2064
+ {
2065
+ key: 'address_number',
2066
+ type: 'int',
2067
+ required: true,
2068
+ layout: { xl: 2, lg: 2, md: 2, xs: 6 },
2069
+ label: {
2070
+ primary: 'Αριθμός',
2071
+ },
2072
+ },
2073
+ {
2074
+ key: 'postal_code',
2075
+ type: 'postal_code',
2076
+ required: true,
2077
+ layout: { xl: 4, lg: 4, md: 4, xs: 6 },
2078
+ label: {
2079
+ primary: 'Ταχ. Κώδικας',
2080
+ },
2081
+ },
2082
+ {
2083
+ key: 'town',
2084
+ type: 'string',
2085
+ required: true,
2086
+ layout: { xl: 6, lg: 6, md: 6, xs: 6 },
2087
+ label: {
2088
+ primary: 'Πόλη',
2089
+ },
2090
+ },
2091
+ {
2092
+ key: 'country',
2093
+ type: 'string',
2094
+ required: true,
2095
+ layout: { xl: 6, lg: 6, md: 6, xs: 6 },
2096
+ label: {
2097
+ primary: 'Χώρα',
2098
+ },
2099
+ },
2100
+ ];
2101
+
2102
+ const inputsInputScenarios = [
2103
+ {
2104
+ title: 'success fill for inputs Input',
2105
+ describe: 'inputs Input scenario',
2106
+ fields: INPUTS_INPUT_FIELDS,
2107
+ fill: [
2108
+ {
2109
+ fieldKey: 'text',
2110
+ value: 'aaaaaaa',
2111
+ },
2112
+ {
2113
+ fieldKey: 'age',
2114
+ value: '12',
2115
+ },
2116
+ {
2117
+ fieldKey: 'email',
2118
+ value: 'example@mail.com',
2119
+ },
2120
+ {
2121
+ fieldKey: 'location',
2122
+ value: 'Location1',
2123
+ },
2124
+ {
2125
+ fieldKey: 'postal-code',
2126
+ value: '42100',
2127
+ },
2128
+ {
2129
+ fieldKey: 'afm',
2130
+ value: '094536469',
2131
+ },
2132
+ {
2133
+ fieldKey: 'desired-mount',
2134
+ value: '12.5',
2135
+ },
2136
+ {
2137
+ fieldKey: 'mobile-phone',
2138
+ value: '+306900000000',
2139
+ },
2140
+ {
2141
+ fieldKey: 'phone-number',
2142
+ value: '6900000000',
2143
+ },
2144
+ {
2145
+ fieldKey: 'phone-number-landline',
2146
+ value: '2100000000',
2147
+ },
2148
+ {
2149
+ fieldKey: 'iban',
2150
+ value: 'GR3201122267115323218375195',
2151
+ },
2152
+ {
2153
+ fieldKey: 'uuid4',
2154
+ value: '1e805d00-ea67-478a-ab8b-d13ff8b38fa3',
2155
+ },
2156
+ ],
2157
+ expect: [
2158
+ {
2159
+ type: 'success',
2160
+ fieldKey: 'age',
2161
+ text: el.form.error.required,
2162
+ },
2163
+ {
2164
+ type: 'success',
2165
+ fieldKey: 'text',
2166
+ text: el.form.error.required,
2167
+ },
2168
+ {
2169
+ type: 'success',
2170
+ fieldKey: 'email',
2171
+ text: el.form.error.required,
2172
+ },
2173
+ {
2174
+ type: 'success',
2175
+ fieldKey: 'location',
2176
+ text: el.form.error.required,
2177
+ },
2178
+ {
2179
+ type: 'success',
2180
+ fieldKey: 'postal-code',
2181
+ text: el.form.error.required,
2182
+ },
2183
+ {
2184
+ type: 'success',
2185
+ fieldKey: 'afm',
2186
+ text: el.form.error.required,
2187
+ },
2188
+ {
2189
+ type: 'success',
2190
+ fieldKey: 'desired-mount',
2191
+ text: el.form.error.required,
2192
+ },
2193
+ {
2194
+ type: 'success',
2195
+ fieldKey: 'mobile-phone',
2196
+ text: el.form.error.required,
2197
+ },
2198
+ {
2199
+ type: 'success',
2200
+ fieldKey: 'phone-number',
2201
+ text: el.form.error.required,
2202
+ },
2203
+ {
2204
+ type: 'success',
2205
+ fieldKey: 'phone-number-landline',
2206
+ text: el.form.error.required,
2207
+ },
2208
+ {
2209
+ type: 'success',
2210
+ fieldKey: 'iban',
2211
+ text: el.form.error.required,
2212
+ },
2213
+ {
2214
+ type: 'success',
2215
+ fieldKey: 'uuid4',
2216
+ text: el.form.error.required,
2217
+ },
2218
+ ],
2219
+ },
2220
+ {
2221
+ title: 'empty fill for inputs Input',
2222
+ describe: 'inputs Input scenario',
2223
+ delay: 5_000,
2224
+ fields: [...INPUTS_INPUT_FIELDS, ...ERROR_GROUPING_FIELDS],
2225
+ fill: [],
2226
+ expect: [
2227
+ {
2228
+ type: 'error',
2229
+ fieldKey: 'age',
2230
+ text: el.form.error.required,
2231
+ },
2232
+ {
2233
+ type: 'error',
2234
+ fieldKey: 'email',
2235
+ text: el.form.error.required,
2236
+ },
2237
+ {
2238
+ type: 'error',
2239
+ fieldKey: 'location',
2240
+ text: el.form.error.required,
2241
+ },
2242
+ {
2243
+ type: 'error',
2244
+ fieldKey: 'postal-code',
2245
+ text: el.form.error.required,
2246
+ },
2247
+ {
2248
+ type: 'error',
2249
+ fieldKey: 'afm',
2250
+ text: el.form.error.required,
2251
+ },
2252
+ {
2253
+ type: 'error',
2254
+ fieldKey: 'desired-mount',
2255
+ text: el.form.error.required,
2256
+ },
2257
+ {
2258
+ type: 'error',
2259
+ fieldKey: 'mobile-phone',
2260
+ text: el.form.error.required,
2261
+ },
2262
+ {
2263
+ type: 'error',
2264
+ fieldKey: 'phone-number',
2265
+ text: el.form.error.required,
2266
+ },
2267
+ {
2268
+ type: 'error',
2269
+ fieldKey: 'phone-number-landline',
2270
+ text: el.form.error.required,
2271
+ },
2272
+ {
2273
+ type: 'error',
2274
+ fieldKey: 'iban',
2275
+ text: el.form.error.required,
2276
+ },
2277
+ {
2278
+ type: 'error',
2279
+ fieldKey: 'uuid4',
2280
+ text: el.form.error.required,
2281
+ },
2282
+ {
2283
+ type: 'error',
2284
+ fieldKey: 'address',
2285
+ text: el.form.error.required,
2286
+ textAssertion: 'toContainText',
2287
+ },
2288
+ {
2289
+ type: 'error',
2290
+ fieldKey: 'address_number',
2291
+ text: el.form.error.required,
2292
+ textAssertion: 'toContainText',
2293
+ },
2294
+ {
2295
+ type: 'error',
2296
+ fieldKey: 'postal_code',
2297
+ text: el.form.error.required,
2298
+ textAssertion: 'toContainText',
2299
+ },
2300
+ {
2301
+ type: 'error',
2302
+ fieldKey: 'town',
2303
+ text: el.form.error.required,
2304
+ textAssertion: 'toContainText',
2305
+ },
2306
+ {
2307
+ type: 'error',
2308
+ fieldKey: 'country',
2309
+ text: el.form.error.required,
2310
+ textAssertion: 'toContainText',
2311
+ },
2312
+ ],
2313
+ },
2314
+ {
2315
+ title: 'incorrect types for inputs Input',
2316
+ describe: 'inputs Input scenario',
2317
+ fields: [...INPUTS_INPUT_FIELDS, ...ERROR_GROUPING_FIELDS],
2318
+ fill: [
2319
+ {
2320
+ fieldKey: 'age',
2321
+ value: 'aa',
2322
+ },
2323
+ {
2324
+ fieldKey: 'email',
2325
+ value: 'example@mail.',
2326
+ },
2327
+ {
2328
+ fieldKey: 'location',
2329
+ value: '23232',
2330
+ },
2331
+ {
2332
+ fieldKey: 'postal-code',
2333
+ value: 'aaaaa',
2334
+ },
2335
+ {
2336
+ fieldKey: 'afm',
2337
+ value: 'aaaaaaaaa',
2338
+ },
2339
+ {
2340
+ fieldKey: 'desired-mount',
2341
+ value: 'aaa',
2342
+ },
2343
+ {
2344
+ fieldKey: 'mobile-phone',
2345
+ value: '+33690000000',
2346
+ },
2347
+ {
2348
+ fieldKey: 'phone-number',
2349
+ value: '000000000',
2350
+ },
2351
+ {
2352
+ fieldKey: 'phone-number-landline',
2353
+ value: '000000000',
2354
+ },
2355
+ {
2356
+ fieldKey: 'iban',
2357
+ value: 'aaaaaa',
2358
+ },
2359
+ {
2360
+ fieldKey: 'uuid4',
2361
+ value: 'aaaaaa',
2362
+ },
2363
+ {
2364
+ fieldKey: 'address_number',
2365
+ value: 'aa',
2366
+ },
2367
+ {
2368
+ fieldKey: 'postal_code',
2369
+ value: 'aaaaa',
2370
+ },
2371
+ ],
2372
+ expect: [
2373
+ {
2374
+ type: 'error',
2375
+ fieldKey: 'age',
2376
+ text: el.form.error.number,
2377
+ },
2378
+ {
2379
+ type: 'error',
2380
+ fieldKey: 'email',
2381
+ text: el.form.error.email,
2382
+ },
2383
+ {
2384
+ type: 'success',
2385
+ fieldKey: 'location',
2386
+ text: el.form.error.string,
2387
+ },
2388
+ {
2389
+ type: 'error',
2390
+ fieldKey: 'postal-code',
2391
+ text: el.form.error.postalCode,
2392
+ },
2393
+ {
2394
+ type: 'error',
2395
+ fieldKey: 'afm',
2396
+ text: el.form.error.afm,
2397
+ },
2398
+ {
2399
+ type: 'error',
2400
+ fieldKey: 'desired-mount',
2401
+ text: el.form.error.number,
2402
+ },
2403
+ {
2404
+ type: 'error',
2405
+ fieldKey: 'mobile-phone',
2406
+ text: el.form.error.mobile_phone,
2407
+ },
2408
+ {
2409
+ type: 'error',
2410
+ fieldKey: 'phone-number',
2411
+ text: el.form.error.phone_number,
2412
+ },
2413
+ {
2414
+ type: 'error',
2415
+ fieldKey: 'phone-number-landline',
2416
+ text: el.form.error.landline,
2417
+ },
2418
+ {
2419
+ type: 'error',
2420
+ fieldKey: 'iban',
2421
+ text: el.form.error.iban,
2422
+ },
2423
+ {
2424
+ type: 'error',
2425
+ fieldKey: 'uuid4',
2426
+ text: el.form.error.uuid4,
2427
+ },
2428
+ {
2429
+ type: 'error',
2430
+ fieldKey: 'address_number',
2431
+ text: el.form.error.number,
2432
+ textAssertion: 'toContainText',
2433
+ },
2434
+ {
2435
+ type: 'error',
2436
+ fieldKey: 'postal_code',
2437
+ text: el.form.error.postalCode,
2438
+ textAssertion: 'toContainText',
2439
+ },
2440
+ ],
2441
+ },
2442
+ ];
2443
+
2444
+ const multiplicityScenarioTitles = [
2445
+ 'add 0 items with min=3',
2446
+ 'add 1 item with min=3',
2447
+ 'add 3 items with min=3',
2448
+ 'add 1 item with max=3',
2449
+ 'add 3 items with max=3',
2450
+ 'add 4 items with max=3',
2451
+ 'add 1 item with min=2 and max=3',
2452
+ 'add 3 items with min=2 and max=3',
2453
+ 'add 4 items with min=2 and max=3',
2454
+ 'add 1 item with exact=3',
2455
+ 'add 3 items with exact=3',
2456
+ 'add 4 items with exact=3',
2457
+ ];
2458
+
2459
+ const multiplicityFieldsTemplate = {
2460
+ key: 'multiplicity',
2461
+ type: 'array',
2462
+ multiplicity: true,
2463
+ label: {
2464
+ primary: 'Εξαρτώμενα μέλη',
2465
+ secondary:
2466
+ 'Τα εξαρτώμενα μέλη είναι φυσικά πρόσωπα που υπάγονται στη φορολογική σας δήλωση',
2467
+ },
2468
+ extra: {
2469
+ label: {
2470
+ object: {
2471
+ title: 'Εξαρτώμενο μέλος',
2472
+ add: 'Προσθήκη',
2473
+ delete: 'Αφαίρεση μέλους',
2474
+ },
2475
+ question: {
2476
+ title: 'Θέλετε να προσθέσετε εξαρτώμενα μέλη;',
2477
+ yes: 'Ναι',
2478
+ no: 'Όχι',
2479
+ },
2480
+ },
2481
+ of: {
2482
+ type: 'object',
2483
+ label: {
2484
+ primary: 'Στοιχεία εξαρτώμενου μέλους',
2485
+ secondary:
2486
+ 'Συμπληρώστε τα στοιχεία παρακάτω και μετά πατήστε το κουμπί «Προσθήκη»',
2487
+ },
2488
+ extra: {
2489
+ fields: [
2490
+ {
2491
+ key: 'firstName',
2492
+ required: true,
2493
+ type: 'string',
2494
+ label: {
2495
+ primary: 'Όνομα',
2496
+ },
2497
+ },
2498
+ {
2499
+ key: 'lastName',
2500
+ required: true,
2501
+ type: 'string',
2502
+ label: {
2503
+ primary: 'Επώνυμο',
2504
+ },
2505
+ },
2506
+ {
2507
+ key: 'dob',
2508
+ required: true,
2509
+ type: 'date',
2510
+ label: {
2511
+ primary: 'Ημερομηνία γέννησης',
2512
+ },
2513
+ extra: {
2514
+ max: 'now',
2515
+ },
2516
+ },
2517
+ ],
2518
+ },
2519
+ },
2520
+ },
2521
+ };
2522
+
2523
+ const multiplicityFillTemplate = {
2524
+ fieldKey: 'multiplicity',
2525
+ value: {
2526
+ question: 'yes',
2527
+ of: {
2528
+ type: 'object',
2529
+ extra: {
2530
+ fields: [
2531
+ {
2532
+ fieldKey: 'firstName',
2533
+ value: 'FirstName',
2534
+ },
2535
+ {
2536
+ fieldKey: 'lastName',
2537
+ value: 'LastName',
2538
+ },
2539
+ {
2540
+ fieldKey: 'dob',
2541
+ value: {
2542
+ day: '20',
2543
+ month: '11',
2544
+ year: '2020',
2545
+ },
2546
+ },
2547
+ ],
2548
+ action: 'add',
2549
+ },
2550
+ },
2551
+ },
2552
+ };
2553
+
2554
+ const multiplicityScenarios: any[] = [];
2555
+ const locals = {
2556
+ min: el.form.error.array.min,
2557
+ max: el.form.error.array.max,
2558
+ length: el.form.error.array.length,
2559
+ required: el.form.error.required,
2560
+ };
2561
+ multiplicityScenarios.push(
2562
+ ...generateScenarios(
2563
+ multiplicityScenarioTitles,
2564
+ multiplicityFillTemplate,
2565
+ multiplicityFieldsTemplate,
2566
+ 'multiplicity',
2567
+ true,
2568
+ locals
2569
+ )
2570
+ );
2571
+
2572
+ const fieldArrayScenarioTitles = [
2573
+ 'add 0 items with min=3',
2574
+ 'add 1 item with min=3',
2575
+ 'add 3 items with min=3',
2576
+ 'add 1 item with max=3',
2577
+ 'add 3 items with max=3',
2578
+ 'add 4 items with max=3',
2579
+ 'add 1 item with min=2 and max=3',
2580
+ 'add 3 items with min=2 and max=3',
2581
+ 'add 4 items with min=2 and max=3',
2582
+ 'add 1 item with exact=3',
2583
+ 'add 3 items with exact=3',
2584
+ 'add 4 items with exact=3',
2585
+ ];
2586
+
2587
+ const fieldArrayFieldsTemplate = {
2588
+ key: 'fieldArray',
2589
+ type: 'array',
2590
+ editable: true,
2591
+ label: {
2592
+ primary: 'Εξαρτώμενα μέλη',
2593
+ secondary:
2594
+ 'Τα εξαρτώμενα μέλη είναι φυσικά πρόσωπα που υπάγονται στη φορολογική σας δήλωση',
2595
+ },
2596
+ extra: {
2597
+ label: {
2598
+ object: {
2599
+ title: 'Εξαρτώμενο μέλος',
2600
+ add: 'Προσθήκη',
2601
+ delete: 'Αφαίρεση μέλους',
2602
+ },
2603
+ question: {
2604
+ title: 'Θέλετε να προσθέσετε εξαρτώμενα μέλη;',
2605
+ yes: 'Ναι',
2606
+ no: 'Όχι',
2607
+ },
2608
+ },
2609
+ border: 'border',
2610
+ of: {
2611
+ type: 'object',
2612
+ label: {
2613
+ primary: 'Στοιχεία εξαρτώμενου μέλους',
2614
+ secondary:
2615
+ 'Συμπληρώστε τα στοιχεία παρακάτω και μετά πατήστε το κουμπί «Προσθήκη»',
2616
+ },
2617
+ extra: {
2618
+ fields: [
2619
+ {
2620
+ key: 'firstName',
2621
+ required: true,
2622
+ type: 'string',
2623
+ label: {
2624
+ primary: 'Όνομα',
2625
+ },
2626
+ },
2627
+ {
2628
+ key: 'lastName',
2629
+ required: true,
2630
+ type: 'string',
2631
+ label: {
2632
+ primary: 'Επώνυμο',
2633
+ },
2634
+ },
2635
+ {
2636
+ key: 'dob',
2637
+ required: true,
2638
+ type: 'date',
2639
+ label: {
2640
+ primary: 'Ημερομηνία γέννησης',
2641
+ },
2642
+ extra: {
2643
+ max: 'now',
2644
+ },
2645
+ },
2646
+ ],
2647
+ },
2648
+ },
2649
+ },
2650
+ };
2651
+
2652
+ const fieldArrayFillTemplate = {
2653
+ fieldKey: 'fieldArray',
2654
+ value: {
2655
+ question: 'yes',
2656
+ of: {
2657
+ type: 'object',
2658
+ extra: {
2659
+ fields: [
2660
+ {
2661
+ fieldKey: 'firstName',
2662
+ value: 'FirstName',
2663
+ },
2664
+ {
2665
+ fieldKey: 'lastName',
2666
+ value: 'LastName',
2667
+ },
2668
+ {
2669
+ fieldKey: 'dob',
2670
+ value: {
2671
+ day: '20',
2672
+ month: '11',
2673
+ year: '2020',
2674
+ },
2675
+ },
2676
+ ],
2677
+ action: 'add',
2678
+ },
2679
+ },
2680
+ },
2681
+ };
2682
+
2683
+ const fieldArrayScenarios: any[] = [];
2684
+ const tmpLocals = {
2685
+ min: el.form.error.array.min,
2686
+ max: el.form.error.array.max,
2687
+ length: el.form.error.array.length,
2688
+ required: el.form.error.required,
2689
+ };
2690
+ fieldArrayScenarios.push(
2691
+ ...generateScenarios(
2692
+ fieldArrayScenarioTitles,
2693
+ fieldArrayFillTemplate,
2694
+ fieldArrayFieldsTemplate,
2695
+ 'fieldArray',
2696
+ false,
2697
+ tmpLocals
2698
+ )
2699
+ );
2700
+
2701
+ const scenarios = [
2702
+ ...fieldArrayScenarios,
2703
+ ...multiplicityScenarios,
2704
+ ...inputsScenarios,
2705
+ ...inputsInputScenarios,
2706
+ ];
2707
+
2708
+ const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
2709
+
2710
+ for (const scenario of scenarios) {
2711
+ test.describe(scenario.describe, () => {
2712
+ test(scenario.title, async ({ mount, page }) => {
2713
+ const formBuilder = await mount(
2714
+ // @ts-ignore
2715
+ <FormBuilder
2716
+ auto={true}
2717
+ grid={true}
2718
+ fields={scenario.fields}
2719
+ onSubmit={() => {}}
2720
+ />
2721
+ );
2722
+ await fillFields(page, formBuilder, scenario);
2723
+ await submitForm(formBuilder);
2724
+ if (scenario.delay) {
2725
+ await delay(scenario.delay);
2726
+ }
2727
+ const screenshot = await page.screenshot({
2728
+ fullPage: true,
2729
+ animations: 'disabled',
2730
+ });
2731
+ expect(screenshot).toMatchSnapshot();
2732
+
2733
+ await expectErrorMessages(formBuilder, scenario.expect, expect);
2734
+ });
2735
+ });
2736
+ }