@digigov/form 2.0.0-cbc56209 → 2.0.0-d2ffc726

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