@digigov/form 2.0.0-76ec20a0 → 2.0.0-7d765d3c

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 (459) hide show
  1. package/Field/ErrorGroup.d.ts +3 -3
  2. package/Field/ErrorGroup.js.map +1 -1
  3. package/Field/FieldBase/index.js +7 -4
  4. package/Field/FieldBase.d.ts +1 -1
  5. package/Field/FieldBase.js.map +2 -2
  6. package/Field/FieldBaseContainer/index.js +37 -18
  7. package/Field/FieldBaseContainer.d.ts +2 -2
  8. package/Field/FieldBaseContainer.js.map +2 -2
  9. package/Field/FieldConditional/index.js +4 -0
  10. package/Field/FieldConditional.d.ts +1 -1
  11. package/Field/FieldConditional.js.map +2 -2
  12. package/Field/index.d.ts +1 -1
  13. package/Field/index.js +25 -29
  14. package/Field/index.js.map +2 -2
  15. package/Field/types.d.ts +20 -12
  16. package/Field/utils/evaluateFieldWithConditions.d.ts +2 -2
  17. package/Field/utils/evaluateFieldWithConditions.js.map +2 -2
  18. package/Field/utils/resolveField/index.js +35 -0
  19. package/Field/utils/{calculateField → resolveField}/package.json +1 -1
  20. package/Field/utils/resolveField.d.ts +3 -0
  21. package/Field/utils/resolveField.js.map +7 -0
  22. package/Field/utils/useField/index.js +12 -3
  23. package/Field/utils/useField.d.ts +1 -1
  24. package/Field/utils/useField.js.map +2 -2
  25. package/FieldArray/BaseFieldArray/index.js +76 -0
  26. package/FieldArray/BaseFieldArray/package.json +6 -0
  27. package/FieldArray/BaseFieldArray.d.ts +5 -0
  28. package/FieldArray/BaseFieldArray.js.map +7 -0
  29. package/FieldArray/FormDialog/ArrayItemDisplay/index.js +97 -0
  30. package/FieldArray/FormDialog/ArrayItemDisplay/package.json +6 -0
  31. package/FieldArray/FormDialog/ArrayItemDisplay.d.ts +22 -0
  32. package/FieldArray/FormDialog/ArrayItemDisplay.js.map +7 -0
  33. package/FieldArray/FormDialog/ArrayItemHeader/index.js +11 -0
  34. package/FieldArray/FormDialog/ArrayItemHeader/package.json +6 -0
  35. package/FieldArray/FormDialog/ArrayItemHeader.d.ts +5 -0
  36. package/FieldArray/FormDialog/ArrayItemHeader.js.map +7 -0
  37. package/FieldArray/FormDialog/ArrayItemModal/index.js +158 -0
  38. package/{inputs/Input/inputsInputScenarios → FieldArray/FormDialog/ArrayItemModal}/package.json +1 -1
  39. package/FieldArray/FormDialog/ArrayItemModal.d.ts +26 -0
  40. package/FieldArray/FormDialog/ArrayItemModal.js.map +7 -0
  41. package/FieldArray/FormDialog/index.d.ts +19 -0
  42. package/FieldArray/FormDialog/index.js +152 -258
  43. package/FieldArray/FormDialog/index.js.map +7 -0
  44. package/FieldArray/index.d.ts +5 -2
  45. package/FieldArray/index.js +36 -57
  46. package/FieldArray/index.js.map +2 -2
  47. package/FieldObject/index.d.ts +7 -4
  48. package/FieldObject/index.js +29 -25
  49. package/FieldObject/index.js.map +2 -2
  50. package/Fieldset/FieldsetWithContext.js.map +1 -1
  51. package/Fieldset/index.d.ts +1 -1
  52. package/Fieldset/index.js.map +1 -1
  53. package/Fieldset/types.d.ts +2 -2
  54. package/FormBuilder/index.d.ts +2 -2
  55. package/FormBuilder/index.js +163 -134
  56. package/FormBuilder/index.js.map +2 -2
  57. package/FormContext/index.js +6 -2
  58. package/FormContext.d.ts +3 -2
  59. package/FormContext.js.map +2 -2
  60. package/MultiplicityField/add-objects/index.js +12 -19
  61. package/MultiplicityField/add-objects.d.ts +1 -1
  62. package/MultiplicityField/add-objects.js.map +2 -2
  63. package/MultiplicityField/index.d.ts +2 -2
  64. package/MultiplicityField/index.js +4 -1
  65. package/MultiplicityField/index.js.map +2 -2
  66. package/MultiplicityField/types.d.ts +3 -2
  67. package/Questions/Questions.d.ts +1 -1
  68. package/Questions/Questions.js.map +1 -1
  69. package/Questions/QuestionsContext.d.ts +1 -1
  70. package/Questions/QuestionsContext.js.map +1 -1
  71. package/Questions/Step/Step.d.ts +1 -1
  72. package/Questions/Step/Step.js.map +1 -1
  73. package/Questions/Step/StepArrayReview.d.ts +1 -1
  74. package/Questions/Step/StepArrayReview.js.map +1 -1
  75. package/Questions/Step/StepContext.d.ts +1 -1
  76. package/Questions/Step/StepContext.js.map +1 -1
  77. package/Questions/Step/StepDescription.d.ts +1 -1
  78. package/Questions/Step/StepDescription.js.map +2 -2
  79. package/Questions/Step/StepForm.d.ts +2 -2
  80. package/Questions/Step/StepForm.js.map +1 -1
  81. package/Questions/Step/StepQuote.d.ts +1 -1
  82. package/Questions/Step/StepQuote.js.map +2 -2
  83. package/Questions/Step/StepTitle.d.ts +1 -1
  84. package/Questions/Step/StepTitle.js.map +2 -2
  85. package/Questions/Step/getAddMoreFields.d.ts +2 -2
  86. package/Questions/Step/getAddMoreFields.js.map +1 -1
  87. package/Questions/Step/types.d.ts +1 -1
  88. package/Questions/getNextStep.d.ts +1 -1
  89. package/Questions/getNextStep.js.map +1 -1
  90. package/Questions/types.d.ts +1 -1
  91. package/cjs/Field/ErrorGroup.js.map +1 -1
  92. package/cjs/Field/FieldBase/index.js +7 -4
  93. package/cjs/Field/FieldBase.js.map +2 -2
  94. package/cjs/Field/FieldBaseContainer/index.js +36 -17
  95. package/cjs/Field/FieldBaseContainer.js.map +3 -3
  96. package/cjs/Field/FieldConditional/index.js +4 -0
  97. package/cjs/Field/FieldConditional.js.map +2 -2
  98. package/cjs/Field/index.js +25 -26
  99. package/cjs/Field/index.js.map +2 -2
  100. package/cjs/Field/types.js.map +1 -1
  101. package/cjs/Field/utils/evaluateFieldWithConditions.js.map +2 -2
  102. package/cjs/Field/utils/resolveField/index.js +55 -0
  103. package/cjs/Field/utils/resolveField.js.map +7 -0
  104. package/cjs/Field/utils/useField/index.js +12 -3
  105. package/cjs/Field/utils/useField.js.map +2 -2
  106. package/cjs/FieldArray/BaseFieldArray/index.js +109 -0
  107. package/cjs/FieldArray/BaseFieldArray.js.map +7 -0
  108. package/cjs/FieldArray/FormDialog/ArrayItemDisplay/index.js +130 -0
  109. package/cjs/FieldArray/FormDialog/ArrayItemDisplay.js.map +7 -0
  110. package/cjs/{locales/el → FieldArray/FormDialog/ArrayItemHeader}/index.js +16 -7
  111. package/cjs/FieldArray/FormDialog/ArrayItemHeader.js.map +7 -0
  112. package/cjs/FieldArray/FormDialog/ArrayItemModal/index.js +186 -0
  113. package/cjs/FieldArray/FormDialog/ArrayItemModal.js.map +7 -0
  114. package/cjs/FieldArray/FormDialog/index.js +148 -243
  115. package/cjs/FieldArray/FormDialog/index.js.map +7 -0
  116. package/cjs/FieldArray/index.js +35 -56
  117. package/cjs/FieldArray/index.js.map +3 -3
  118. package/cjs/FieldObject/index.js +29 -22
  119. package/cjs/FieldObject/index.js.map +2 -2
  120. package/cjs/Fieldset/FieldsetWithContext.js.map +1 -1
  121. package/cjs/Fieldset/index.js.map +1 -1
  122. package/cjs/Fieldset/types.js.map +1 -1
  123. package/cjs/FormBuilder/index.js +164 -135
  124. package/cjs/FormBuilder/index.js.map +3 -3
  125. package/cjs/FormContext/index.js +7 -2
  126. package/cjs/FormContext.js.map +2 -2
  127. package/cjs/MultiplicityField/add-objects/index.js +11 -13
  128. package/cjs/MultiplicityField/add-objects.js.map +2 -2
  129. package/cjs/MultiplicityField/index.js +4 -1
  130. package/cjs/MultiplicityField/index.js.map +2 -2
  131. package/cjs/MultiplicityField/types.js.map +1 -1
  132. package/cjs/Questions/Questions.js.map +1 -1
  133. package/cjs/Questions/QuestionsContext.js.map +1 -1
  134. package/cjs/Questions/Step/Step.js.map +1 -1
  135. package/cjs/Questions/Step/StepArrayReview.js.map +1 -1
  136. package/cjs/Questions/Step/StepContext.js.map +1 -1
  137. package/cjs/Questions/Step/StepDescription.js.map +2 -2
  138. package/cjs/Questions/Step/StepForm.js.map +1 -1
  139. package/cjs/Questions/Step/StepQuote.js.map +2 -2
  140. package/cjs/Questions/Step/StepTitle.js.map +2 -2
  141. package/cjs/Questions/Step/getAddMoreFields.js.map +1 -1
  142. package/cjs/Questions/Step/types.js.map +1 -1
  143. package/cjs/Questions/getNextStep.js.map +1 -1
  144. package/cjs/Questions/types.js.map +1 -1
  145. package/cjs/hooks/useFieldFocusManager/index.js +135 -0
  146. package/cjs/hooks/useFieldFocusManager.js.map +7 -0
  147. package/cjs/hooks/utils/index.js +98 -0
  148. package/cjs/hooks/utils.js.map +7 -0
  149. package/cjs/inputs/AutoCompleteInput/index.js.map +2 -2
  150. package/cjs/inputs/Checkboxes/index.js +67 -63
  151. package/cjs/inputs/Checkboxes/index.js.map +2 -2
  152. package/cjs/inputs/DateInput/index.js +51 -19
  153. package/cjs/inputs/DateInput/index.js.map +2 -2
  154. package/cjs/inputs/DateTimeInput/index.js +78 -39
  155. package/cjs/inputs/DateTimeInput/index.js.map +2 -2
  156. package/cjs/inputs/FileInput/index.js +52 -29
  157. package/cjs/inputs/FileInput/index.js.map +2 -2
  158. package/cjs/inputs/ImageInput/__stories__/logo.d/index.js +1 -0
  159. package/cjs/inputs/ImageInput/__stories__/logo.d.js.map +7 -0
  160. package/cjs/inputs/ImageInput/index.js +41 -10
  161. package/cjs/inputs/ImageInput/index.js.map +2 -2
  162. package/cjs/inputs/Input/index.js +55 -57
  163. package/cjs/inputs/Input/index.js.map +2 -2
  164. package/cjs/inputs/Label/index.js.map +1 -1
  165. package/cjs/inputs/OtpInput/index.js +36 -31
  166. package/cjs/inputs/OtpInput/index.js.map +2 -2
  167. package/cjs/inputs/Radio/index.js +5 -4
  168. package/cjs/inputs/Radio/index.js.map +3 -3
  169. package/cjs/inputs/Select/index.js +4 -3
  170. package/cjs/inputs/Select/index.js.map +2 -2
  171. package/cjs/{Field/utils → inputs/registry}/index.js +7 -5
  172. package/cjs/inputs/registry.js.map +7 -0
  173. package/cjs/lazy/index.js +10 -9
  174. package/cjs/lazy.js.map +2 -2
  175. package/cjs/registry/index.js +26 -18
  176. package/cjs/registry.js.map +2 -2
  177. package/cjs/types.js.map +1 -1
  178. package/cjs/utils/index.js +20 -6
  179. package/cjs/utils.js.map +2 -2
  180. package/cjs/validators/index.js +11 -6
  181. package/cjs/validators/index.js.map +2 -2
  182. package/cjs/validators/types.js.map +1 -1
  183. package/cjs/validators/utils/amka/index.js +60 -0
  184. package/cjs/validators/utils/amka.js.map +7 -0
  185. package/cjs/validators/utils/date/index.js +26 -3
  186. package/cjs/validators/utils/date.js.map +2 -2
  187. package/cjs/validators/utils/datetime/index.js +118 -24
  188. package/cjs/validators/utils/datetime.js.map +2 -2
  189. package/cjs/validators/utils/file/index.js +30 -17
  190. package/cjs/validators/utils/file.js.map +2 -2
  191. package/cjs/validators/utils/iban.js.map +1 -1
  192. package/cjs/validators/utils/image.js.map +1 -1
  193. package/cjs/validators/utils/index.js +5 -1
  194. package/cjs/validators/utils/index.js.map +2 -2
  195. package/cjs/validators/utils/int.js.map +1 -1
  196. package/cjs/validators/utils/number.js.map +1 -1
  197. package/cjs/validators/utils/otp.js.map +1 -1
  198. package/cjs/validators/utils/phone.js.map +1 -1
  199. package/cjs/validators/utils/postal_code.js.map +1 -1
  200. package/cjs/validators/utils/text_limit.js.map +1 -1
  201. package/hooks/useFieldFocusManager/index.js +116 -0
  202. package/hooks/useFieldFocusManager/package.json +6 -0
  203. package/hooks/useFieldFocusManager.d.ts +25 -0
  204. package/hooks/useFieldFocusManager.js.map +7 -0
  205. package/hooks/utils/index.js +73 -0
  206. package/{Field → hooks}/utils/package.json +1 -1
  207. package/hooks/utils.d.ts +18 -0
  208. package/hooks/utils.js.map +7 -0
  209. package/index.js +1 -1
  210. package/inputs/AutoCompleteInput/index.d.ts +3 -3
  211. package/inputs/AutoCompleteInput/index.js +1 -3
  212. package/inputs/AutoCompleteInput/index.js.map +2 -2
  213. package/inputs/Checkboxes/index.d.ts +3 -3
  214. package/inputs/Checkboxes/index.js +67 -63
  215. package/inputs/Checkboxes/index.js.map +2 -2
  216. package/inputs/DateInput/DateInput.stories.d.ts +4 -0
  217. package/inputs/DateInput/__stories__/WithDefaultValue.d.ts +3 -0
  218. package/inputs/DateInput/__stories__/WithInitialValue.d.ts +3 -0
  219. package/inputs/DateInput/__stories__/WithWrongDefaultValue.d.ts +3 -0
  220. package/inputs/DateInput/__stories__/WithWrongInitialValue.d.ts +3 -0
  221. package/inputs/DateInput/index.d.ts +2 -5
  222. package/inputs/DateInput/index.js +52 -20
  223. package/inputs/DateInput/index.js.map +2 -2
  224. package/inputs/DateTimeInput/DateTimeInput.stories.d.ts +8 -3
  225. package/inputs/DateTimeInput/__stories__/WithDefaultValue.d.ts +3 -0
  226. package/inputs/DateTimeInput/__stories__/WithInitialValue.d.ts +3 -0
  227. package/inputs/DateTimeInput/__stories__/WithWrongDefaultValue.d.ts +3 -0
  228. package/inputs/DateTimeInput/__stories__/WithWrongInitialValue.d.ts +3 -0
  229. package/inputs/DateTimeInput/index.d.ts +2 -5
  230. package/inputs/DateTimeInput/index.js +79 -40
  231. package/inputs/DateTimeInput/index.js.map +2 -2
  232. package/inputs/FileInput/FileInput.stories.d.ts +1 -0
  233. package/inputs/FileInput/__stories__/WithBorderAndLink.d.ts +3 -0
  234. package/inputs/FileInput/index.d.ts +12 -5
  235. package/inputs/FileInput/index.js +53 -30
  236. package/inputs/FileInput/index.js.map +2 -2
  237. package/inputs/ImageInput/ImageInput.stories.d.ts +2 -1
  238. package/inputs/ImageInput/__stories__/WithInitialValues.d.ts +3 -0
  239. package/inputs/ImageInput/__stories__/logo.d/index.js +1 -0
  240. package/inputs/ImageInput/__stories__/logo.d/package.json +6 -0
  241. package/inputs/ImageInput/__stories__/logo.d.js.map +7 -0
  242. package/inputs/ImageInput/index.d.ts +10 -2
  243. package/inputs/ImageInput/index.js +42 -11
  244. package/inputs/ImageInput/index.js.map +2 -2
  245. package/inputs/Input/Input.stories.d.ts +2 -0
  246. package/inputs/Input/__stories__/AMKA.d.ts +3 -0
  247. package/inputs/Input/__stories__/Email.d.ts +3 -0
  248. package/inputs/Input/index.d.ts +4 -3
  249. package/inputs/Input/index.js +55 -57
  250. package/inputs/Input/index.js.map +2 -2
  251. package/inputs/Label/index.d.ts +1 -1
  252. package/inputs/Label/index.js.map +1 -1
  253. package/inputs/OtpInput/index.d.ts +1 -5
  254. package/inputs/OtpInput/index.js +36 -31
  255. package/inputs/OtpInput/index.js.map +2 -2
  256. package/inputs/Radio/index.d.ts +4 -4
  257. package/inputs/Radio/index.js +5 -4
  258. package/inputs/Radio/index.js.map +3 -3
  259. package/inputs/Select/index.d.ts +4 -3
  260. package/inputs/Select/index.js +4 -3
  261. package/inputs/Select/index.js.map +2 -2
  262. package/{Field/utils → inputs/registry}/index.js +4 -2
  263. package/{locales/el → inputs/registry}/package.json +1 -1
  264. package/{Field/utils/index.d.ts → inputs/registry.d.ts} +2 -1
  265. package/inputs/registry.js.map +7 -0
  266. package/lazy/index.js +10 -9
  267. package/package.json +8 -8
  268. package/registry/index.js +26 -18
  269. package/src/Field/ErrorGroup.tsx +3 -3
  270. package/src/Field/FieldBase.tsx +7 -4
  271. package/src/Field/FieldBaseContainer.tsx +69 -48
  272. package/src/Field/FieldConditional.tsx +5 -1
  273. package/src/Field/index.tsx +30 -38
  274. package/src/Field/types.tsx +21 -14
  275. package/src/Field/utils/evaluateFieldWithConditions.ts +5 -2
  276. package/src/Field/utils/resolveField.ts +58 -0
  277. package/src/Field/utils/useField.ts +12 -2
  278. package/src/FieldArray/BaseFieldArray.tsx +97 -0
  279. package/src/FieldArray/FormDialog/ArrayItemDisplay.tsx +165 -0
  280. package/src/FieldArray/FormDialog/ArrayItemHeader.tsx +15 -0
  281. package/src/FieldArray/FormDialog/ArrayItemModal.tsx +223 -0
  282. package/src/FieldArray/FormDialog/index.tsx +233 -0
  283. package/src/FieldArray/__stories__/WithModal.tsx +3 -2
  284. package/src/FieldArray/__tests__/multiplicity-attachment.spec.tsx +219 -0
  285. package/src/FieldArray/__tests__/multiplicity-required.spec.tsx +131 -0
  286. package/src/FieldArray/__tests__/preference-multiple-choice.spec.tsx +222 -0
  287. package/src/FieldArray/index.spec.tsx +355 -0
  288. package/src/FieldArray/index.tsx +41 -72
  289. package/src/FieldObject/index.tsx +36 -31
  290. package/src/Fieldset/FieldsetWithContext.tsx +1 -1
  291. package/src/Fieldset/index.tsx +1 -1
  292. package/src/Fieldset/types.tsx +2 -2
  293. package/src/FormBuilder/index.tsx +197 -146
  294. package/src/FormBuilder/scenarios.test.tsx +763 -5
  295. package/src/FormContext.tsx +7 -2
  296. package/src/MultiplicityField/add-objects.tsx +14 -21
  297. package/src/MultiplicityField/index.tsx +6 -2
  298. package/src/MultiplicityField/types.ts +6 -2
  299. package/src/Questions/Questions.tsx +2 -2
  300. package/src/Questions/QuestionsContext.tsx +1 -1
  301. package/src/Questions/Step/Step.tsx +1 -1
  302. package/src/Questions/Step/StepArrayReview.tsx +2 -2
  303. package/src/Questions/Step/StepContext.tsx +1 -1
  304. package/src/Questions/Step/StepDescription.tsx +2 -1
  305. package/src/Questions/Step/StepForm.tsx +2 -2
  306. package/src/Questions/Step/StepQuote.tsx +2 -1
  307. package/src/Questions/Step/StepTitle.tsx +2 -1
  308. package/src/Questions/Step/getAddMoreFields.tsx +2 -2
  309. package/src/Questions/Step/types.tsx +1 -1
  310. package/src/Questions/getNextStep.tsx +1 -1
  311. package/src/Questions/types.tsx +1 -1
  312. package/src/hooks/__tests__/useFieldFocusManager.spec.tsx +1079 -0
  313. package/src/hooks/__tests__/utils.spec.ts +568 -0
  314. package/src/hooks/useFieldFocusManager.ts +162 -0
  315. package/src/hooks/utils.ts +122 -0
  316. package/src/inputs/AutoCompleteInput/index.tsx +4 -6
  317. package/src/inputs/Checkboxes/index.tsx +95 -91
  318. package/src/inputs/DateInput/DateInput.stories.js +4 -0
  319. package/src/inputs/DateInput/__stories__/WithDefaultValue.tsx +26 -0
  320. package/src/inputs/DateInput/__stories__/WithInitialValue.tsx +28 -0
  321. package/src/inputs/DateInput/__stories__/WithWrongDefaultValue.tsx +26 -0
  322. package/src/inputs/DateInput/__stories__/WithWrongInitialValue.tsx +28 -0
  323. package/src/inputs/DateInput/index.test.tsx +16 -0
  324. package/src/inputs/DateInput/index.tsx +65 -20
  325. package/src/inputs/DateTimeInput/DateTimeInput.stories.js +9 -6
  326. package/src/inputs/DateTimeInput/__stories__/WithDefaultValue.tsx +26 -0
  327. package/src/inputs/DateTimeInput/__stories__/WithInitialValue.tsx +28 -0
  328. package/src/inputs/DateTimeInput/__stories__/WithWrongDefaultValue.tsx +26 -0
  329. package/src/inputs/DateTimeInput/__stories__/WithWrongInitialValue.tsx +28 -0
  330. package/src/inputs/DateTimeInput/index.test.tsx +16 -0
  331. package/src/inputs/DateTimeInput/index.tsx +92 -40
  332. package/src/inputs/FileInput/FileInput.stories.js +1 -0
  333. package/src/inputs/FileInput/__stories__/WithBorderAndLink.tsx +34 -0
  334. package/src/inputs/FileInput/index.test.tsx +4 -0
  335. package/src/inputs/FileInput/index.tsx +91 -47
  336. package/src/inputs/ImageInput/ImageInput.stories.js +2 -1
  337. package/src/inputs/ImageInput/__stories__/MaxSize.tsx +2 -1
  338. package/src/inputs/ImageInput/__stories__/WithInitialValues.tsx +45 -0
  339. package/src/inputs/ImageInput/__stories__/logo.d.ts +4 -0
  340. package/src/inputs/ImageInput/__stories__/logo.png +0 -0
  341. package/src/inputs/ImageInput/index.test.tsx +21 -17
  342. package/src/inputs/ImageInput/index.tsx +101 -49
  343. package/src/inputs/Input/Input.stories.js +2 -0
  344. package/src/inputs/Input/__stories__/AMKA.tsx +23 -0
  345. package/src/inputs/Input/__stories__/Email.tsx +23 -0
  346. package/src/inputs/Input/index.test.tsx +8 -0
  347. package/src/inputs/Input/index.tsx +76 -73
  348. package/src/inputs/Label/index.tsx +1 -1
  349. package/src/inputs/OtpInput/index.tsx +43 -34
  350. package/src/inputs/Radio/index.tsx +29 -21
  351. package/src/inputs/Select/index.tsx +9 -6
  352. package/src/{Field/utils/index.ts → inputs/registry.ts} +5 -1
  353. package/src/lazy.js +10 -9
  354. package/src/registry.js +26 -18
  355. package/src/types.tsx +13 -5
  356. package/src/utils.ts +30 -8
  357. package/src/validators/index.ts +27 -15
  358. package/src/validators/types.ts +1 -1
  359. package/src/validators/utils/amka.ts +39 -0
  360. package/src/validators/utils/date.ts +30 -6
  361. package/src/validators/utils/datetime.ts +123 -31
  362. package/src/validators/utils/file.ts +35 -21
  363. package/src/validators/utils/iban.ts +2 -2
  364. package/src/validators/utils/image.ts +2 -2
  365. package/src/validators/utils/index.ts +6 -3
  366. package/src/validators/utils/int.ts +1 -1
  367. package/src/validators/utils/number.ts +1 -1
  368. package/src/validators/utils/otp.ts +2 -2
  369. package/src/validators/utils/phone.ts +2 -2
  370. package/src/validators/utils/postal_code.ts +2 -2
  371. package/src/validators/utils/text_limit.ts +2 -2
  372. package/types.d.ts +9 -4
  373. package/types.js.map +1 -1
  374. package/utils/index.js +20 -6
  375. package/utils.d.ts +3 -1
  376. package/utils.js.map +2 -2
  377. package/validators/index.d.ts +6 -6
  378. package/validators/index.js +12 -6
  379. package/validators/index.js.map +2 -2
  380. package/validators/types.d.ts +1 -1
  381. package/validators/utils/amka/index.js +36 -0
  382. package/{inputs/inputsScenarios → validators/utils/amka}/package.json +1 -1
  383. package/validators/utils/amka.d.ts +6 -0
  384. package/validators/utils/amka.js.map +7 -0
  385. package/validators/utils/date/index.js +26 -3
  386. package/validators/utils/date.d.ts +3 -3
  387. package/validators/utils/date.js.map +2 -2
  388. package/validators/utils/datetime/index.js +118 -24
  389. package/validators/utils/datetime.d.ts +3 -3
  390. package/validators/utils/datetime.js.map +2 -2
  391. package/validators/utils/file/index.js +30 -17
  392. package/validators/utils/file.d.ts +2 -2
  393. package/validators/utils/file.js.map +2 -2
  394. package/validators/utils/iban.d.ts +2 -2
  395. package/validators/utils/iban.js.map +1 -1
  396. package/validators/utils/image.d.ts +2 -2
  397. package/validators/utils/image.js.map +1 -1
  398. package/validators/utils/index.d.ts +3 -2
  399. package/validators/utils/index.js +4 -1
  400. package/validators/utils/index.js.map +2 -2
  401. package/validators/utils/int.d.ts +1 -1
  402. package/validators/utils/int.js.map +1 -1
  403. package/validators/utils/number.d.ts +1 -1
  404. package/validators/utils/number.js.map +1 -1
  405. package/validators/utils/otp.d.ts +2 -2
  406. package/validators/utils/otp.js.map +1 -1
  407. package/validators/utils/phone.d.ts +2 -2
  408. package/validators/utils/phone.js.map +1 -1
  409. package/validators/utils/postal_code.d.ts +2 -2
  410. package/validators/utils/postal_code.js.map +1 -1
  411. package/validators/utils/text_limit.d.ts +2 -2
  412. package/validators/utils/text_limit.js.map +1 -1
  413. package/Field/utils/calculateField/index.js +0 -27
  414. package/Field/utils/calculateField.d.ts +0 -2
  415. package/Field/utils/calculateField.js.map +0 -7
  416. package/Field/utils/index.js.map +0 -7
  417. package/FieldArray/FormDialog.d.ts +0 -53
  418. package/FieldArray/FormDialog.js.map +0 -7
  419. package/FormBuilder/index.test.d.ts +0 -1
  420. package/FormBuilder/interaction.test.d.ts +0 -1
  421. package/FormBuilder/scenarios.test.d.ts +0 -88
  422. package/MultiplicityField/index.test.d.ts +0 -1
  423. package/Questions/index.spec.d.ts +0 -1
  424. package/Questions/index.test.d.ts +0 -1
  425. package/cjs/Field/utils/calculateField/index.js +0 -50
  426. package/cjs/Field/utils/calculateField.js.map +0 -7
  427. package/cjs/Field/utils/index.js.map +0 -7
  428. package/cjs/FieldArray/FormDialog.js.map +0 -7
  429. package/cjs/inputs/Input/inputsInputScenarios/index.js +0 -439
  430. package/cjs/inputs/Input/inputsInputScenarios.js.map +0 -7
  431. package/cjs/inputs/inputsScenarios/index.js +0 -533
  432. package/cjs/inputs/inputsScenarios.js.map +0 -7
  433. package/cjs/locales/el.js.map +0 -7
  434. package/inputs/AutoCompleteInput/index.test.d.ts +0 -1
  435. package/inputs/Checkboxes/index.test.d.ts +0 -1
  436. package/inputs/DateInput/index.test.d.ts +0 -1
  437. package/inputs/DateTimeInput/index.test.d.ts +0 -1
  438. package/inputs/FileInput/index.test.d.ts +0 -1
  439. package/inputs/ImageInput/index.test.d.ts +0 -1
  440. package/inputs/Input/index.test.d.ts +0 -1
  441. package/inputs/Input/inputsInputScenarios/index.js +0 -406
  442. package/inputs/Input/inputsInputScenarios.d.ts +0 -57
  443. package/inputs/Input/inputsInputScenarios.js.map +0 -7
  444. package/inputs/Label/index.test.d.ts +0 -1
  445. package/inputs/OtpInput/index.test.d.ts +0 -1
  446. package/inputs/Radio/index.test.d.ts +0 -1
  447. package/inputs/Select/index.test.d.ts +0 -1
  448. package/inputs/inputsScenarios/index.js +0 -499
  449. package/inputs/inputsScenarios.d.ts +0 -296
  450. package/inputs/inputsScenarios.js.map +0 -7
  451. package/locales/el/index.js +0 -6
  452. package/locales/el.d.ts +0 -2
  453. package/locales/el.js.map +0 -7
  454. package/src/Field/utils/calculateField.ts +0 -49
  455. package/src/FieldArray/FormDialog.tsx +0 -378
  456. package/src/inputs/Input/inputsInputScenarios.ts +0 -404
  457. package/src/inputs/inputsScenarios.ts +0 -496
  458. package/src/locales/el.ts +0 -3
  459. /package/{FieldArray/index.test.d.ts → hooks/__tests__/utils.spec.d.ts} +0 -0
@@ -0,0 +1,162 @@
1
+ import { useCallback, useEffect, useRef } from 'react';
2
+ import type { Control, FieldValues, Ref, UseFormReturn } from 'react-hook-form';
3
+ import {
4
+ extractFieldEntries,
5
+ mapElementsToFields,
6
+ sortElementsByPosition,
7
+ } from '@digigov/form/hooks/utils';
8
+
9
+ export interface UseFieldFocusManagerProps<T extends FieldValues> {
10
+ enabled?: boolean;
11
+ control: Control<T>;
12
+ subscribe: UseFormReturn['subscribe'];
13
+ setFocus: UseFormReturn['setFocus'];
14
+ }
15
+
16
+ /**
17
+ * Custom hook to manage focus on form fields.
18
+ *
19
+ * It collects all focusable elements from the form fields and sorts them according to their position in the DOM.
20
+ */
21
+ export function useFieldFocusManager<T extends FieldValues>({
22
+ enabled = true,
23
+ control,
24
+ subscribe,
25
+ setFocus,
26
+ }: UseFieldFocusManagerProps<T>) {
27
+ /** Array to hold any external focusable elements registered by the user */
28
+ const customFocusableElements = useRef(new Map<string, HTMLElement>());
29
+ /** Map to hold focusable elements by field name */
30
+ const focusableElements = useRef(new Map<string, Ref>());
31
+
32
+ // When disabled, clear custom focusable elements and focusable elements map
33
+ useEffect(() => {
34
+ if (!enabled) {
35
+ customFocusableElements.current.clear();
36
+ focusableElements.current.clear();
37
+ return;
38
+ }
39
+ }, [enabled]);
40
+
41
+ const updateFocusableElements = useCallback(() => {
42
+ // Clear existing focusable elements
43
+ focusableElements.current.clear();
44
+ // Extract from form fields
45
+ const formElements = extractFieldEntries(control._fields);
46
+ // Extract from custom elements (convert to FieldRefs format first)
47
+ const customFieldRefs = mapElementsToFields(
48
+ customFocusableElements.current
49
+ );
50
+ const customElements = extractFieldEntries(customFieldRefs);
51
+
52
+ // Combine both maps
53
+ const combinedElements = new Map(formElements);
54
+ customElements.forEach((element, fieldName) => {
55
+ combinedElements.set(fieldName, element);
56
+ });
57
+
58
+ // Sort once by DOM position
59
+ focusableElements.current = sortElementsByPosition(combinedElements);
60
+ }, [control._fields]);
61
+
62
+ // Register / unregister custom focusable elements
63
+ const registerCustomFocusableElement = useCallback(
64
+ (fieldName: string, element: HTMLElement) => {
65
+ if (fieldName && element) {
66
+ customFocusableElements.current.set(fieldName, element);
67
+ updateFocusableElements();
68
+ }
69
+
70
+ return function unregister() {
71
+ customFocusableElements.current.delete(fieldName);
72
+ updateFocusableElements();
73
+ };
74
+ },
75
+ [updateFocusableElements]
76
+ );
77
+
78
+ // Collect focusable elements when fields change
79
+ useEffect(() => {
80
+ if (!enabled) return;
81
+ const callback = subscribe({
82
+ formState: {
83
+ errors: true,
84
+ // Subscribe to any form state change that might indicate field structure changes
85
+ },
86
+ callback: () => {
87
+ // Defer to next tick to ensure DOM is updated
88
+ setTimeout(updateFocusableElements, 0);
89
+ },
90
+ });
91
+
92
+ // Initial update
93
+ updateFocusableElements();
94
+
95
+ return () => callback();
96
+ }, [enabled, updateFocusableElements, subscribe]);
97
+
98
+ // Subscribe to errors and focus the first field (according to the DOM) with an error
99
+ const focusOnError = useCallback(
100
+ (errors: Record<string, any>) => {
101
+ if (!enabled) return;
102
+ if (!errors || Object.keys(errors).length === 0) return;
103
+ for (const [fieldName, element] of Array.from(
104
+ focusableElements.current
105
+ )) {
106
+ if (hasFieldError(errors, fieldName)) {
107
+ if (element && typeof element.focus === 'function') {
108
+ element.focus(); // Focus the element directly
109
+ return;
110
+ } else if (element && element.name) {
111
+ setFocus(fieldName); // Field is registered with react-hook-form
112
+ return;
113
+ }
114
+ }
115
+ }
116
+ },
117
+ [enabled, setFocus]
118
+ );
119
+
120
+ return {
121
+ /**
122
+ * Registers a custom focusable element with the given field name.
123
+ *
124
+ * Returns a callback function to unregister the element by field name.
125
+ *
126
+ * @param fieldName - The name of the field to associate with the element.
127
+ * @param element - The HTML element to register as focusable.
128
+ */
129
+ registerCustomFocusableElement,
130
+ focusOnError,
131
+ };
132
+ }
133
+
134
+ // Helper function to check for nested field errors
135
+ function hasFieldError(
136
+ errors: Record<string, any>,
137
+ fieldName: string
138
+ ): boolean {
139
+ if (!errors || typeof errors !== 'object') return false;
140
+
141
+ // Handle direct field names first
142
+ if (errors[fieldName]) {
143
+ return true;
144
+ }
145
+
146
+ // Split the field name and traverse the error object
147
+ const keys = fieldName.split(/[.[\]]+/).filter(Boolean);
148
+ let current = errors;
149
+
150
+ for (const key of keys) {
151
+ if (current && typeof current === 'object') {
152
+ current = current[key];
153
+ } else {
154
+ return false;
155
+ }
156
+ }
157
+
158
+ // Check if we found a truthy error value
159
+ return !!current;
160
+ }
161
+
162
+ export default useFieldFocusManager;
@@ -0,0 +1,122 @@
1
+ import type { Field, FieldRefs, Ref } from 'react-hook-form';
2
+
3
+ /**
4
+ * Recursively extracts field entries from nested form field structure.
5
+ * Handles both regular nested objects and array-like structures.
6
+ */
7
+ export function extractFieldEntries(
8
+ fields: FieldRefs,
9
+ prefix = ''
10
+ ): Map<string, Ref> {
11
+ const elementMap = new Map<string, Ref>();
12
+
13
+ const fieldEntries = Object.entries(fields);
14
+ if (fieldEntries.length === 0) return elementMap;
15
+
16
+ Object.entries(fields).forEach(([fieldName, field]) => {
17
+ if (!field) return;
18
+ const fullFieldName = prefix ? `${prefix}.${fieldName}` : fieldName;
19
+
20
+ // Handle direct field with ref
21
+ if (isField(field)) {
22
+ const element = field._f.ref;
23
+ if (element) {
24
+ elementMap.set(fullFieldName, element);
25
+ }
26
+ }
27
+
28
+ // Handle array fields (numeric keys indicate array indices)
29
+ else if (isFieldRefs(field)) {
30
+ // Check if any keys are numeric (indicating an array structure)
31
+ // Filter out non-numeric keys like '_f' which contains field metadata
32
+ const keys = Object.keys(field);
33
+ const numericKeys = keys.filter((key) => /^\d+$/.test(key));
34
+ const hasNumericKeys = numericKeys.length > 0;
35
+
36
+ if (hasNumericKeys) {
37
+ // Process only the numeric array indices, ignore metadata keys like '_f'
38
+ numericKeys.forEach((index) => {
39
+ const arrayItem = field[index];
40
+ if (arrayItem && isFieldRefs(arrayItem)) {
41
+ const nestedEntries = extractFieldEntries(
42
+ arrayItem,
43
+ `${fullFieldName}.${index}`
44
+ );
45
+ // Merge nested entries into main map
46
+ nestedEntries.forEach((element, fieldName) => {
47
+ elementMap.set(fieldName, element);
48
+ });
49
+ }
50
+ });
51
+ } else {
52
+ // Handle regular nested objects
53
+ const nestedEntries = extractFieldEntries(field, fullFieldName);
54
+ // Merge nested entries into main map
55
+ nestedEntries.forEach((element, fieldName) => {
56
+ elementMap.set(fieldName, element);
57
+ });
58
+ }
59
+ }
60
+ });
61
+
62
+ return elementMap;
63
+ }
64
+
65
+ /** Type guard to check if a ref is a Field object */
66
+ const isField = (fieldRef: FieldRefs[keyof FieldRefs]): fieldRef is Field =>
67
+ Boolean(
68
+ fieldRef &&
69
+ typeof fieldRef === 'object' &&
70
+ '_f' in fieldRef &&
71
+ fieldRef._f &&
72
+ 'ref' in fieldRef._f
73
+ );
74
+
75
+ /** Type guard to check if a ref is a FieldRefs object (nested fields) */
76
+ const isFieldRefs = (
77
+ fieldRef: FieldRefs[keyof FieldRefs]
78
+ ): fieldRef is FieldRefs =>
79
+ Boolean(fieldRef && typeof fieldRef === 'object' && !isField(fieldRef));
80
+
81
+ /**
82
+ * Sorts a map of HTML elements by their position in the DOM.
83
+ * Elements appearing earlier in the document order come first.
84
+ */
85
+ export function sortElementsByPosition(
86
+ elements: Map<string, Ref>
87
+ ): Map<string, Ref> {
88
+ const sortedEntries = Array.from(elements.entries()).sort(([, a], [, b]) => {
89
+ if (isActualHTMLElement(a) && isActualHTMLElement(b)) {
90
+ const aPosition = a.compareDocumentPosition(b);
91
+ if (aPosition & Node.DOCUMENT_POSITION_FOLLOWING) return -1;
92
+ if (aPosition & Node.DOCUMENT_POSITION_PRECEDING) return 1;
93
+ }
94
+ return 0; // keep original order
95
+ });
96
+ return new Map(sortedEntries);
97
+ }
98
+
99
+ /** Type guard to check if a ref is an actual HTML element */
100
+ const isActualHTMLElement = (ref: Ref): ref is Ref & HTMLElement =>
101
+ ref instanceof HTMLElement && typeof ref.focus === 'function';
102
+
103
+ /**
104
+ * Maps a collection of HTML elements to a FieldRefs structure.
105
+ *
106
+ * It's not a direct conversion, but rather a way to create a simple FieldRefs
107
+ * structure that can be used with React Hook Form.
108
+ */
109
+ export function mapElementsToFields(
110
+ elements: Map<string, HTMLElement>
111
+ ): Record<string, Field> {
112
+ const fields = {};
113
+ elements.forEach((element, fieldName) => {
114
+ fields[fieldName] = {
115
+ _f: {
116
+ ref: element,
117
+ name: fieldName,
118
+ },
119
+ };
120
+ });
121
+ return fields;
122
+ }
@@ -1,10 +1,8 @@
1
1
  import React, { useCallback } from 'react';
2
- import { ControlledFieldProps } from '@digigov/form/Field/types';
3
- import { FieldOptionProps } from '@digigov/form/inputs/Label';
4
- import {
5
- AutoComplete,
6
- AutoCompleteProps as UIAutoCompleteProps,
7
- } from '@digigov/ui/form/AutoComplete';
2
+ import type { ControlledFieldProps } from '@digigov/form/Field/types';
3
+ import type { FieldOptionProps } from '@digigov/form/inputs/Label';
4
+ import type { AutoCompleteProps as UIAutoCompleteProps } from '@digigov/ui/form/AutoComplete';
5
+ import { AutoComplete } from '@digigov/ui/form/AutoComplete';
8
6
  import { Hint } from '@digigov/ui/typography/Hint';
9
7
  import { Base } from '@digigov/ui/utils/Base';
10
8
  export interface AutoCompleteInputExtra
@@ -1,6 +1,6 @@
1
1
  import React, { useState } from 'react';
2
- import { ControlledFieldProps } from '@digigov/form/Field/types';
3
- import { FieldOptionProps } from '@digigov/form/inputs/Label';
2
+ import type { ControlledFieldProps } from '@digigov/form/Field/types';
3
+ import type { FieldOptionProps } from '@digigov/form/inputs/Label';
4
4
  import {
5
5
  Checkbox,
6
6
  CheckboxItem,
@@ -19,96 +19,100 @@ export interface CheckboxesProps
19
19
  fieldComponent: React.FC<Omit<ControlledFieldProps, 'value' | 'onChange'>>;
20
20
  }
21
21
 
22
- export const Checkboxes: React.FC<CheckboxesProps> = ({
23
- name,
24
- onChange,
25
- value,
26
- extra: { options, className },
27
- disabled,
28
- Field,
29
- ...props
30
- }) => {
31
- if (!value) value = [];
32
- const handleChange =
33
- (optionValue, idx, show) =>
34
- (evt): void => {
35
- let newValue;
36
- if (evt.currentTarget.checked) {
37
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
38
- // @ts-ignore
39
- newValue = value.concat([optionValue]);
40
- } else {
41
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
42
- // @ts-ignore
43
- newValue = value.filter((val) => val !== optionValue);
44
- }
45
- if (show && show.length > 0) {
46
- setChecked((items) =>
47
- items.map((item, index) => (index === idx ? !item : item))
48
- );
49
- }
22
+ export const Checkboxes = React.forwardRef<HTMLInputElement, CheckboxesProps>(
23
+ (
24
+ {
25
+ name,
26
+ onChange,
27
+ value,
28
+ extra: { options, className },
29
+ disabled,
30
+ Field,
31
+ ...props
32
+ },
33
+ ref
34
+ ) => {
35
+ if (!value) value = [];
36
+ const handleChange =
37
+ (optionValue, idx, show) =>
38
+ (evt): void => {
39
+ let newValue: any = [];
40
+ if (evt.currentTarget.checked) {
41
+ newValue = value.concat([optionValue]);
42
+ } else {
43
+ newValue = value.filter((val) => val !== optionValue);
44
+ }
45
+ if (show && show.length > 0) {
46
+ setChecked((items) =>
47
+ items.map((item, index) => (index === idx ? !item : item))
48
+ );
49
+ }
50
50
 
51
- // reset value to undefined instead of an empty array
52
- // so the error state mechanism can throw validation errors
53
- if (newValue.length === 0) newValue = undefined;
54
- onChange(newValue);
55
- };
56
- const { t } = useTranslation();
57
- const [checked, setChecked] = useState(
58
- Array<boolean>(options.length).fill(false)
59
- );
60
- return (
61
- <Checkbox className={className}>
62
- {options.map(
63
- (
64
- {
65
- label,
66
- value: v,
67
- show,
68
- disabled: optionDisabled,
69
- selected,
70
- ...option
71
- },
72
- index
73
- ) => (
74
- <React.Fragment key={index}>
75
- <CheckboxItem
76
- key={`${name}.${index}`}
77
- name={`${name}.${v}`}
78
- id={`${name}.${v}`}
79
- value={v}
80
- disabled={disabled || optionDisabled}
81
- checked={value?.includes(v)}
82
- onChange={handleChange(v, index, show)}
83
- {...option}
84
- {...{
85
- ...props,
86
- reset: undefined,
87
- defaultValue: undefined,
88
- onBlur: undefined,
89
- required: undefined,
90
- Field: undefined,
91
- 'aria-describedby': undefined,
92
- type: 'checkbox',
93
- }}
94
- >
95
- {(label && label.primary && t(label.primary)) || value}
96
- {label && label.secondary && <Hint>{t(label.secondary)}</Hint>}
97
- </CheckboxItem>
51
+ // reset value to undefined instead of an empty array
52
+ // so the error state mechanism can throw validation errors
53
+ if (newValue.length === 0) newValue = undefined;
54
+ onChange(newValue);
55
+ };
56
+ const { t } = useTranslation();
57
+ const [checked, setChecked] = useState(
58
+ Array<boolean>(options.length).fill(false)
59
+ );
60
+ return (
61
+ <Checkbox className={className}>
62
+ {options.map(
63
+ (
64
+ {
65
+ label,
66
+ value: v,
67
+ show,
68
+ disabled: optionDisabled,
69
+ selected,
70
+ ...option
71
+ },
72
+ index
73
+ ) => (
74
+ <React.Fragment key={index}>
75
+ <CheckboxItem
76
+ ref={index === 0 ? ref : undefined}
77
+ key={`${name}.${index}`}
78
+ name={`${name}.${v}`}
79
+ id={`${name}.${v}`}
80
+ value={v}
81
+ disabled={disabled || optionDisabled}
82
+ checked={value?.includes(v)}
83
+ onChange={handleChange(v, index, show)}
84
+ {...option}
85
+ {...{
86
+ ...props,
87
+ reset: undefined,
88
+ defaultValue: undefined,
89
+ error: undefined,
90
+ onBlur: undefined,
91
+ required: undefined,
92
+ 'aria-describedby': undefined,
93
+ type: 'checkbox',
94
+ }}
95
+ >
96
+ {(label && label.primary && t(label.primary)) || value}
97
+ {label && label.secondary && <Hint>{t(label.secondary)}</Hint>}
98
+ </CheckboxItem>
98
99
 
99
- {!!checked[index] && show && Field && (
100
- <CheckboxConditional>
101
- {show.map((fieldName) => (
102
- <Field name={fieldName} key={fieldName} />
103
- ))}
104
- </CheckboxConditional>
105
- )}
106
- {selected && selected()}
107
- </React.Fragment>
108
- )
109
- )}
110
- </Checkbox>
111
- );
112
- };
100
+ {!!checked[index] && show && Field && (
101
+ <CheckboxConditional>
102
+ {show.map((fieldName) => (
103
+ <Field name={fieldName} key={fieldName} />
104
+ ))}
105
+ </CheckboxConditional>
106
+ )}
107
+ {selected && selected()}
108
+ </React.Fragment>
109
+ )
110
+ )}
111
+ </Checkbox>
112
+ );
113
+ }
114
+ );
115
+
116
+ Checkboxes.displayName = 'Checkboxes';
113
117
 
114
118
  export default Checkboxes;
@@ -8,3 +8,7 @@ export default {
8
8
  displayName: 'DateInput',
9
9
  };
10
10
  export { Default } from '@digigov/form/inputs/DateInput/__stories__/Default';
11
+ export { WithDefaultValue } from '@digigov/form/inputs/DateInput/__stories__/WithDefaultValue';
12
+ export { WithWrongDefaultValue } from '@digigov/form/inputs/DateInput/__stories__/WithWrongDefaultValue';
13
+ export { WithInitialValue } from '@digigov/form/inputs/DateInput/__stories__/WithInitialValue';
14
+ export { WithWrongInitialValue } from '@digigov/form/inputs/DateInput/__stories__/WithWrongInitialValue';
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import FormBuilder, { Field } from '@digigov/form';
3
+ import { Button } from '@digigov/ui/form/Button';
4
+
5
+ const fields = [
6
+ {
7
+ key: 'date_example',
8
+ type: 'date',
9
+ required: true,
10
+ defaultValue: '05/11/2020',
11
+ label: {
12
+ primary: 'Πότε εκδόθηκε το διαβατήριο σας;',
13
+ secondary: 'Για παράδειγμα, 05 11 2020',
14
+ },
15
+ } as const,
16
+ ];
17
+
18
+ export const WithDefaultValue = (_: any) => (
19
+ <FormBuilder onSubmit={(data) => console.log(data)}>
20
+ {fields.map(({ key, ...field }) => {
21
+ return <Field {...field} name={key} key={key} />;
22
+ })}
23
+ <Button type="submit">Συνέχεια</Button>
24
+ </FormBuilder>
25
+ );
26
+ export default WithDefaultValue;
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import FormBuilder, { Field } from '@digigov/form';
3
+ import { Button } from '@digigov/ui/form/Button';
4
+
5
+ const fields = [
6
+ {
7
+ key: 'date_example',
8
+ type: 'date',
9
+ required: true,
10
+ label: {
11
+ primary: 'Πότε εκδόθηκε το διαβατήριο σας;',
12
+ secondary: 'Για παράδειγμα, 05 11 2020',
13
+ },
14
+ } as const,
15
+ ];
16
+
17
+ export const WithInitialValue = (_: any) => (
18
+ <FormBuilder
19
+ initial={{ date_example: '05/01/2020' }}
20
+ onSubmit={(data) => console.log(data)}
21
+ >
22
+ {fields.map(({ key, ...field }) => {
23
+ return <Field {...field} name={key} key={key} />;
24
+ })}
25
+ <Button type="submit">Συνέχεια</Button>
26
+ </FormBuilder>
27
+ );
28
+ export default WithInitialValue;
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import FormBuilder, { Field } from '@digigov/form';
3
+ import { Button } from '@digigov/ui/form/Button';
4
+
5
+ const fields = [
6
+ {
7
+ key: 'date_example',
8
+ type: 'date',
9
+ required: true,
10
+ defaultValue: '5/1/2020',
11
+ label: {
12
+ primary: 'Πότε εκδόθηκε το διαβατήριο σας;',
13
+ secondary: 'Για παράδειγμα, 05 11 2020',
14
+ },
15
+ } as const,
16
+ ];
17
+
18
+ export const WithWrongDefaultValue = (_: any) => (
19
+ <FormBuilder onSubmit={(data) => console.log(data)}>
20
+ {fields.map(({ key, ...field }) => {
21
+ return <Field {...field} name={key} key={key} />;
22
+ })}
23
+ <Button type="submit">Συνέχεια</Button>
24
+ </FormBuilder>
25
+ );
26
+ export default WithWrongDefaultValue;
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import FormBuilder, { Field } from '@digigov/form';
3
+ import { Button } from '@digigov/ui/form/Button';
4
+
5
+ const fields = [
6
+ {
7
+ key: 'date_example',
8
+ type: 'date',
9
+ required: true,
10
+ label: {
11
+ primary: 'Πότε εκδόθηκε το διαβατήριο σας;',
12
+ secondary: 'Για παράδειγμα, 05 11 2020',
13
+ },
14
+ } as const,
15
+ ];
16
+
17
+ export const WithWrongInitialValue = (_: any) => (
18
+ <FormBuilder
19
+ initial={{ date_example: '5/1/2020' }}
20
+ onSubmit={(data) => console.log(data)}
21
+ >
22
+ {fields.map(({ key, ...field }) => {
23
+ return <Field {...field} name={key} key={key} />;
24
+ })}
25
+ <Button type="submit">Συνέχεια</Button>
26
+ </FormBuilder>
27
+ );
28
+ export default WithWrongInitialValue;
@@ -2,6 +2,10 @@ import React from 'react';
2
2
  import { test, expect } from '@playwright/experimental-ct-react';
3
3
  import TestVariant from '@digigov/ui/utils/TestVariant'
4
4
  import { Default } from '@digigov/form/inputs/DateInput/__stories__/Default';
5
+ import { WithDefaultValue } from '@digigov/form/inputs/DateInput/__stories__/WithDefaultValue';
6
+ import { WithInitialValue } from '@digigov/form/inputs/DateInput/__stories__/WithInitialValue';
7
+ import { WithWrongDefaultValue } from '@digigov/form/inputs/DateInput/__stories__/WithWrongDefaultValue';
8
+ import { WithWrongInitialValue } from '@digigov/form/inputs/DateInput/__stories__/WithWrongInitialValue';
5
9
 
6
10
  test('renders the All DateInput variants', async ({ mount, page }) => {
7
11
  await mount(
@@ -10,6 +14,18 @@ test('renders the All DateInput variants', async ({ mount, page }) => {
10
14
  <TestVariant title="Default">
11
15
  <Default />
12
16
  </TestVariant>
17
+ <TestVariant title="WithDefaultValue">
18
+ <WithDefaultValue />
19
+ </TestVariant>
20
+ <TestVariant title="WithInitialValue">
21
+ <WithInitialValue />
22
+ </TestVariant>
23
+ <TestVariant title="WithWrongDefaultValue">
24
+ <WithWrongDefaultValue />
25
+ </TestVariant>
26
+ <TestVariant title="WithWrongInitialValue">
27
+ <WithWrongInitialValue />
28
+ </TestVariant>
13
29
  </div>
14
30
  )
15
31
  await page.evaluate(() => document.fonts.ready);