@digigov/form 2.0.0-4be8f7cc → 2.0.0-599965f0

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 (844) 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 +116 -77
  6. package/Field/FieldBase.js.map +7 -0
  7. package/Field/FieldBaseContainer/index.js +50 -38
  8. package/Field/FieldBaseContainer.d.ts +1 -1
  9. package/Field/FieldBaseContainer.js.map +7 -0
  10. package/Field/FieldConditional/index.js +83 -53
  11. package/Field/FieldConditional.js.map +7 -0
  12. package/Field/index.js +113 -63
  13. package/Field/index.js.map +7 -0
  14. package/Field/types/index.js +1 -1
  15. package/Field/types.d.ts +52 -5
  16. package/Field/types.js.map +7 -0
  17. package/Field/utils/calculateField/index.js +27 -0
  18. package/{FieldArray/FieldArray.stories → Field/utils/calculateField}/package.json +1 -1
  19. package/Field/utils/calculateField.d.ts +2 -0
  20. package/Field/utils/calculateField.js.map +7 -0
  21. package/Field/utils/evaluateFieldWithConditions/index.js +26 -0
  22. package/{inputs/DateInput/__stories__/Default → Field/utils/evaluateFieldWithConditions}/package.json +1 -1
  23. package/Field/utils/evaluateFieldWithConditions.d.ts +2 -0
  24. package/Field/utils/evaluateFieldWithConditions.js.map +7 -0
  25. package/Field/utils/index.d.ts +4 -0
  26. package/Field/utils/index.js +49 -116
  27. package/Field/utils/index.js.map +7 -0
  28. package/Field/utils/useField/index.js +64 -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/FieldArray.stories.d.ts +3 -2
  33. package/FieldArray/FormDialog/index.js +397 -0
  34. package/{validators/validators.spec → FieldArray/FormDialog}/package.json +1 -1
  35. package/FieldArray/FormDialog.d.ts +66 -0
  36. package/FieldArray/FormDialog.js.map +7 -0
  37. package/FieldArray/__stories__/Default.d.ts +2 -2
  38. package/FieldArray/__stories__/WithExactLength.d.ts +2 -2
  39. package/FieldArray/__stories__/WithModal.d.ts +2 -0
  40. package/FieldArray/index.d.ts +7 -0
  41. package/FieldArray/index.js +131 -58
  42. package/FieldArray/index.js.map +7 -0
  43. package/FieldArray/index.test.d.ts +1 -0
  44. package/FieldObject/index.d.ts +8 -0
  45. package/FieldObject/index.js +85 -52
  46. package/FieldObject/index.js.map +7 -0
  47. package/Fieldset/FieldsetWithContext/index.js +27 -31
  48. package/Fieldset/FieldsetWithContext.js.map +7 -0
  49. package/Fieldset/index.d.ts +1 -1
  50. package/Fieldset/index.js +27 -29
  51. package/Fieldset/index.js.map +7 -0
  52. package/Fieldset/types/index.js +1 -1
  53. package/Fieldset/types.d.ts +3 -2
  54. package/Fieldset/types.js.map +7 -0
  55. package/FormBuilder/FormBuilder.stories.d.ts +5 -1
  56. package/FormBuilder/__stories__/AutoErrorGrouping.d.ts +3 -0
  57. package/FormBuilder/__stories__/Default.d.ts +2 -2
  58. package/FormBuilder/__stories__/ErrorGrouping.d.ts +3 -0
  59. package/FormBuilder/index.d.ts +8 -1
  60. package/FormBuilder/index.js +241 -2
  61. package/FormBuilder/index.js.map +7 -0
  62. package/FormBuilder/index.test.d.ts +1 -0
  63. package/FormBuilder/interaction.test.d.ts +1 -0
  64. package/FormBuilder/scenarios.test.d.ts +88 -0
  65. package/FormContext/index.js +11 -3
  66. package/FormContext.d.ts +1 -0
  67. package/FormContext.js.map +7 -0
  68. package/MultiplicityField/MultiplicityField.stories.d.ts +8 -6
  69. package/MultiplicityField/__stories__/Default.d.ts +2 -2
  70. package/MultiplicityField/__stories__/PreviewDisplay.d.ts +2 -2
  71. package/MultiplicityField/__stories__/WithExactLength.d.ts +2 -2
  72. package/MultiplicityField/__stories__/WithMaxLength.d.ts +2 -2
  73. package/MultiplicityField/__stories__/WithMinAndMaxLength.d.ts +2 -2
  74. package/MultiplicityField/__stories__/WithMinLength.d.ts +2 -2
  75. package/MultiplicityField/add-objects/index.js +139 -132
  76. package/MultiplicityField/add-objects.d.ts +2 -1
  77. package/MultiplicityField/add-objects.js.map +7 -0
  78. package/MultiplicityField/index.d.ts +2 -19
  79. package/MultiplicityField/index.js +117 -106
  80. package/MultiplicityField/index.js.map +7 -0
  81. package/MultiplicityField/index.test.d.ts +1 -0
  82. package/MultiplicityField/types/index.js +1 -0
  83. package/MultiplicityField/types/package.json +6 -0
  84. package/MultiplicityField/types.d.ts +19 -0
  85. package/MultiplicityField/types.js.map +7 -0
  86. package/Questions/Questions/index.js +48 -56
  87. package/Questions/Questions.js.map +7 -0
  88. package/Questions/Questions.stories.d.ts +3 -1
  89. package/Questions/QuestionsContext/index.js +9 -9
  90. package/Questions/QuestionsContext.d.ts +0 -1
  91. package/Questions/QuestionsContext.js.map +7 -0
  92. package/Questions/Step/ReviewStep/index.js +35 -47
  93. package/Questions/Step/ReviewStep.js.map +7 -0
  94. package/Questions/Step/Step/index.js +39 -47
  95. package/Questions/Step/Step.js.map +7 -0
  96. package/Questions/Step/StepArrayReview/index.js +41 -45
  97. package/Questions/Step/StepArrayReview.js.map +7 -0
  98. package/Questions/Step/StepContext/index.js +15 -19
  99. package/Questions/Step/StepContext.d.ts +0 -1
  100. package/Questions/Step/StepContext.js.map +7 -0
  101. package/Questions/Step/StepDescription/index.js +22 -22
  102. package/Questions/Step/StepDescription.js.map +7 -0
  103. package/Questions/Step/StepForm/index.js +33 -43
  104. package/Questions/Step/StepForm.js.map +7 -0
  105. package/Questions/Step/StepQuote/index.js +10 -9
  106. package/Questions/Step/StepQuote.js.map +7 -0
  107. package/Questions/Step/StepTitle/index.js +41 -38
  108. package/Questions/Step/StepTitle.d.ts +2 -1
  109. package/Questions/Step/StepTitle.js.map +7 -0
  110. package/Questions/Step/getAddMoreFields/index.js +28 -20
  111. package/Questions/Step/getAddMoreFields.js.map +7 -0
  112. package/Questions/Step/index.d.ts +0 -1
  113. package/Questions/Step/index.js +16 -13
  114. package/Questions/Step/index.js.map +7 -0
  115. package/Questions/Step/types/index.js +1 -1
  116. package/Questions/Step/types.d.ts +1 -0
  117. package/Questions/Step/types.js.map +7 -0
  118. package/Questions/__stories__/Default.d.ts +2 -2
  119. package/Questions/getNextStep/index.js +12 -10
  120. package/Questions/getNextStep.js.map +7 -0
  121. package/Questions/index.js +7 -3
  122. package/Questions/index.js.map +7 -0
  123. package/Questions/index.test.d.ts +1 -0
  124. package/Questions/types/index.js +1 -1
  125. package/Questions/types.d.ts +1 -0
  126. package/Questions/types.js.map +7 -0
  127. package/cjs/Field/ErrorGroup/index.js +82 -0
  128. package/cjs/Field/ErrorGroup.js.map +7 -0
  129. package/cjs/Field/FieldBase/index.js +148 -83
  130. package/cjs/Field/FieldBase.js.map +7 -0
  131. package/cjs/Field/FieldBaseContainer/index.js +83 -45
  132. package/cjs/Field/FieldBaseContainer.js.map +7 -0
  133. package/cjs/Field/FieldConditional/index.js +115 -59
  134. package/cjs/Field/FieldConditional.js.map +7 -0
  135. package/cjs/Field/index.js +142 -72
  136. package/cjs/Field/index.js.map +7 -0
  137. package/cjs/Field/types/index.js +16 -5
  138. package/cjs/Field/types.js.map +7 -0
  139. package/cjs/Field/utils/calculateField/index.js +50 -0
  140. package/cjs/Field/utils/calculateField.js.map +7 -0
  141. package/cjs/Field/utils/evaluateFieldWithConditions/index.js +49 -0
  142. package/cjs/Field/utils/evaluateFieldWithConditions.js.map +7 -0
  143. package/cjs/Field/utils/index.js +92 -133
  144. package/cjs/Field/utils/index.js.map +7 -0
  145. package/cjs/Field/utils/useField/index.js +87 -0
  146. package/cjs/Field/utils/useField.js.map +7 -0
  147. package/cjs/FieldArray/FormDialog/index.js +416 -0
  148. package/cjs/FieldArray/FormDialog.js.map +7 -0
  149. package/cjs/FieldArray/index.js +163 -64
  150. package/cjs/FieldArray/index.js.map +7 -0
  151. package/cjs/FieldObject/index.js +114 -61
  152. package/cjs/FieldObject/index.js.map +7 -0
  153. package/cjs/Fieldset/FieldsetWithContext/index.js +54 -40
  154. package/cjs/Fieldset/FieldsetWithContext.js.map +7 -0
  155. package/cjs/Fieldset/index.js +61 -39
  156. package/cjs/Fieldset/index.js.map +7 -0
  157. package/cjs/Fieldset/types/index.js +16 -5
  158. package/cjs/Fieldset/types.js.map +7 -0
  159. package/cjs/FormBuilder/index.js +277 -8
  160. package/cjs/FormBuilder/index.js.map +7 -0
  161. package/cjs/FormContext/index.js +34 -8
  162. package/cjs/FormContext.js.map +7 -0
  163. package/cjs/MultiplicityField/add-objects/index.js +166 -138
  164. package/cjs/MultiplicityField/add-objects.js.map +7 -0
  165. package/cjs/MultiplicityField/index.js +145 -115
  166. package/cjs/MultiplicityField/index.js.map +7 -0
  167. package/cjs/MultiplicityField/types/index.js +16 -0
  168. package/cjs/MultiplicityField/types.js.map +7 -0
  169. package/cjs/Questions/Questions/index.js +80 -65
  170. package/cjs/Questions/Questions.js.map +7 -0
  171. package/cjs/Questions/QuestionsContext/index.js +31 -14
  172. package/cjs/Questions/QuestionsContext.js.map +7 -0
  173. package/cjs/Questions/Step/ReviewStep/index.js +61 -56
  174. package/cjs/Questions/Step/ReviewStep.js.map +7 -0
  175. package/cjs/Questions/Step/Step/index.js +71 -56
  176. package/cjs/Questions/Step/Step.js.map +7 -0
  177. package/cjs/Questions/Step/StepArrayReview/index.js +65 -54
  178. package/cjs/Questions/Step/StepArrayReview.js.map +7 -0
  179. package/cjs/Questions/Step/StepContext/index.js +37 -24
  180. package/cjs/Questions/Step/StepContext.js.map +7 -0
  181. package/cjs/Questions/Step/StepDescription/index.js +55 -31
  182. package/cjs/Questions/Step/StepDescription.js.map +7 -0
  183. package/cjs/Questions/Step/StepForm/index.js +65 -52
  184. package/cjs/Questions/Step/StepForm.js.map +7 -0
  185. package/cjs/Questions/Step/StepQuote/index.js +42 -15
  186. package/cjs/Questions/Step/StepQuote.js.map +7 -0
  187. package/cjs/Questions/Step/StepTitle/index.js +72 -47
  188. package/cjs/Questions/Step/StepTitle.js.map +7 -0
  189. package/cjs/Questions/Step/getAddMoreFields/index.js +50 -25
  190. package/cjs/Questions/Step/getAddMoreFields.js.map +7 -0
  191. package/cjs/Questions/Step/index.js +59 -143
  192. package/cjs/Questions/Step/index.js.map +7 -0
  193. package/cjs/Questions/Step/types/index.js +16 -5
  194. package/cjs/Questions/Step/types.js.map +7 -0
  195. package/cjs/Questions/getNextStep/index.js +33 -14
  196. package/cjs/Questions/getNextStep.js.map +7 -0
  197. package/cjs/Questions/index.js +29 -19
  198. package/cjs/Questions/index.js.map +7 -0
  199. package/cjs/Questions/types/index.js +16 -5
  200. package/cjs/Questions/types.js.map +7 -0
  201. package/cjs/index.js +47 -20
  202. package/cjs/index.js.map +7 -0
  203. package/cjs/inputs/AutoCompleteInput/index.js +92 -49
  204. package/cjs/inputs/AutoCompleteInput/index.js.map +7 -0
  205. package/cjs/inputs/Checkboxes/index.js +102 -96
  206. package/cjs/inputs/Checkboxes/index.js.map +7 -0
  207. package/cjs/inputs/DateInput/index.js +157 -115
  208. package/cjs/inputs/DateInput/index.js.map +7 -0
  209. package/cjs/inputs/DateTimeInput/index.js +245 -0
  210. package/cjs/inputs/DateTimeInput/index.js.map +7 -0
  211. package/cjs/inputs/FileInput/index.js +115 -65
  212. package/cjs/inputs/FileInput/index.js.map +7 -0
  213. package/cjs/inputs/ImageInput/__stories__/logo.d/index.js +1 -0
  214. package/cjs/inputs/ImageInput/__stories__/logo.d.js.map +7 -0
  215. package/cjs/inputs/ImageInput/index.js +127 -83
  216. package/cjs/inputs/ImageInput/index.js.map +7 -0
  217. package/cjs/inputs/Input/index.js +106 -71
  218. package/cjs/inputs/Input/index.js.map +7 -0
  219. package/cjs/inputs/Label/index.js +45 -24
  220. package/cjs/inputs/Label/index.js.map +7 -0
  221. package/cjs/inputs/OtpInput/index.js +143 -113
  222. package/cjs/inputs/OtpInput/index.js.map +7 -0
  223. package/cjs/inputs/Radio/index.js +131 -61
  224. package/cjs/inputs/Radio/index.js.map +7 -0
  225. package/cjs/inputs/Select/index.js +61 -36
  226. package/cjs/inputs/Select/index.js.map +7 -0
  227. package/cjs/inputs/index.js +62 -69
  228. package/cjs/inputs/index.js.map +7 -0
  229. package/cjs/inputs/inputsScenarios/index.js +533 -0
  230. package/cjs/inputs/inputsScenarios.js.map +7 -0
  231. package/cjs/internal/index.js +36 -346
  232. package/cjs/internal.js.map +7 -0
  233. package/cjs/lazy/index.js +110 -516
  234. package/cjs/lazy.js.map +7 -0
  235. package/cjs/locales/el/index.js +35 -0
  236. package/cjs/locales/el.js.map +7 -0
  237. package/cjs/registry/index.js +190 -142
  238. package/cjs/registry.js.map +7 -0
  239. package/cjs/types/index.js +22 -5
  240. package/cjs/types.js.map +7 -0
  241. package/cjs/utils/index.js +93 -83
  242. package/cjs/utils.js.map +7 -0
  243. package/cjs/validators/index.js +139 -167
  244. package/cjs/validators/index.js.map +7 -0
  245. package/cjs/validators/types/index.js +16 -5
  246. package/cjs/validators/types.js.map +7 -0
  247. package/cjs/validators/utils/afm/index.js +38 -21
  248. package/cjs/validators/utils/afm.js.map +7 -0
  249. package/cjs/validators/utils/amka/index.js +60 -0
  250. package/cjs/validators/utils/amka.js.map +7 -0
  251. package/cjs/validators/utils/date/index.js +161 -0
  252. package/cjs/validators/utils/date.js.map +7 -0
  253. package/cjs/validators/utils/datetime/index.js +245 -0
  254. package/cjs/validators/utils/datetime.js.map +7 -0
  255. package/cjs/validators/utils/file/index.js +48 -30
  256. package/cjs/validators/utils/file.js.map +7 -0
  257. package/cjs/validators/utils/iban/index.js +36 -17
  258. package/cjs/validators/utils/iban.js.map +7 -0
  259. package/cjs/validators/utils/image/index.js +88 -112
  260. package/cjs/validators/utils/image.js.map +7 -0
  261. package/cjs/validators/utils/index.js +103 -159
  262. package/cjs/validators/utils/index.js.map +7 -0
  263. package/cjs/validators/utils/int/index.js +35 -13
  264. package/cjs/validators/utils/int.js.map +7 -0
  265. package/cjs/validators/utils/number/index.js +34 -12
  266. package/cjs/validators/utils/number.js.map +7 -0
  267. package/cjs/validators/utils/otp/index.js +35 -13
  268. package/cjs/validators/utils/otp.js.map +7 -0
  269. package/cjs/validators/utils/phone/index.js +113 -58
  270. package/cjs/validators/utils/phone.js.map +7 -0
  271. package/cjs/validators/utils/postal_code/index.js +36 -16
  272. package/cjs/validators/utils/postal_code.js.map +7 -0
  273. package/cjs/validators/utils/text_limit/index.js +40 -25
  274. package/cjs/validators/utils/text_limit.js.map +7 -0
  275. package/cjs/validators/utils/uuid4/index.js +34 -13
  276. package/cjs/validators/utils/uuid4.js.map +7 -0
  277. package/index.d.ts +4 -1
  278. package/index.js +13 -4
  279. package/index.js.map +7 -0
  280. package/inputs/AutoCompleteInput/AutoComplete.stories.d.ts +4 -2
  281. package/inputs/AutoCompleteInput/__stories__/Default.d.ts +2 -2
  282. package/inputs/AutoCompleteInput/__stories__/Multiple.d.ts +2 -2
  283. package/inputs/AutoCompleteInput/index.d.ts +2 -2
  284. package/inputs/AutoCompleteInput/index.js +62 -40
  285. package/inputs/AutoCompleteInput/index.js.map +7 -0
  286. package/inputs/AutoCompleteInput/index.test.d.ts +1 -0
  287. package/inputs/Checkboxes/Checkboxes.stories.d.ts +5 -3
  288. package/inputs/Checkboxes/__stories__/Conditional.d.ts +2 -2
  289. package/inputs/Checkboxes/__stories__/Default.d.ts +2 -2
  290. package/inputs/Checkboxes/__stories__/WithDivider.d.ts +2 -2
  291. package/inputs/Checkboxes/index.d.ts +2 -1
  292. package/inputs/Checkboxes/index.js +74 -87
  293. package/inputs/Checkboxes/index.js.map +7 -0
  294. package/inputs/Checkboxes/index.test.d.ts +1 -0
  295. package/inputs/DateInput/DateInput.stories.d.ts +7 -1
  296. package/inputs/DateInput/__stories__/Default.d.ts +2 -2
  297. package/inputs/DateInput/__stories__/WithDefaultValue.d.ts +3 -0
  298. package/inputs/DateInput/__stories__/WithInitialValue.d.ts +3 -0
  299. package/inputs/DateInput/__stories__/WithWrongDefaultValue.d.ts +3 -0
  300. package/inputs/DateInput/__stories__/WithWrongInitialValue.d.ts +3 -0
  301. package/inputs/DateInput/index.d.ts +3 -4
  302. package/inputs/DateInput/index.js +127 -105
  303. package/inputs/DateInput/index.js.map +7 -0
  304. package/inputs/DateInput/index.test.d.ts +1 -0
  305. package/inputs/DateTimeInput/DateTimeInput.stories.d.ts +14 -0
  306. package/inputs/DateTimeInput/__stories__/Default.d.ts +3 -0
  307. package/inputs/DateTimeInput/__stories__/WithDefaultValue.d.ts +3 -0
  308. package/inputs/DateTimeInput/__stories__/WithInitialValue.d.ts +3 -0
  309. package/inputs/DateTimeInput/__stories__/WithWrongDefaultValue.d.ts +3 -0
  310. package/inputs/DateTimeInput/__stories__/WithWrongInitialValue.d.ts +3 -0
  311. package/inputs/DateTimeInput/index.d.ts +13 -0
  312. package/inputs/DateTimeInput/index.js +215 -0
  313. package/inputs/DateTimeInput/index.js.map +7 -0
  314. package/inputs/DateTimeInput/index.test.d.ts +1 -0
  315. package/inputs/DateTimeInput/package.json +6 -0
  316. package/inputs/FileInput/FileInput.stories.d.ts +4 -1
  317. package/inputs/FileInput/__stories__/Default.d.ts +2 -2
  318. package/inputs/FileInput/__stories__/WithBorderAndLink.d.ts +3 -0
  319. package/inputs/FileInput/index.d.ts +17 -1
  320. package/inputs/FileInput/index.js +86 -56
  321. package/inputs/FileInput/index.js.map +7 -0
  322. package/inputs/FileInput/index.test.d.ts +1 -0
  323. package/inputs/ImageInput/ImageInput.stories.d.ts +6 -3
  324. package/inputs/ImageInput/__stories__/Default.d.ts +2 -2
  325. package/inputs/ImageInput/__stories__/MaxSize.d.ts +3 -0
  326. package/inputs/ImageInput/__stories__/WithInitialValues.d.ts +3 -0
  327. package/inputs/ImageInput/__stories__/WithInvalidImageDimension.d.ts +2 -2
  328. package/inputs/ImageInput/__stories__/logo.d/index.js +1 -0
  329. package/inputs/{FileInput/__stories__/Default → ImageInput/__stories__/logo.d}/package.json +1 -1
  330. package/inputs/ImageInput/__stories__/logo.d.js.map +7 -0
  331. package/inputs/ImageInput/index.d.ts +9 -1
  332. package/inputs/ImageInput/index.js +95 -75
  333. package/inputs/ImageInput/index.js.map +7 -0
  334. package/inputs/ImageInput/index.test.d.ts +1 -0
  335. package/inputs/Input/Input.stories.d.ts +15 -10
  336. package/inputs/Input/__stories__/AFM.d.ts +2 -2
  337. package/inputs/Input/__stories__/AMKA.d.ts +3 -0
  338. package/inputs/Input/__stories__/Boolean.d.ts +2 -2
  339. package/inputs/Input/__stories__/Email.d.ts +3 -0
  340. package/inputs/Input/__stories__/IBAN.d.ts +2 -2
  341. package/inputs/Input/__stories__/Integer.d.ts +2 -2
  342. package/inputs/Input/__stories__/LandlineNumber.d.ts +2 -2
  343. package/inputs/Input/__stories__/MobilePhone.d.ts +2 -2
  344. package/inputs/Input/__stories__/PhoneNumber.d.ts +2 -2
  345. package/inputs/Input/__stories__/PostalCode.d.ts +2 -2
  346. package/inputs/Input/__stories__/String.d.ts +3 -0
  347. package/inputs/Input/__stories__/StringWithTrimValidation.d.ts +3 -0
  348. package/inputs/Input/__stories__/TextWithLimit.d.ts +3 -0
  349. package/inputs/Input/index.d.ts +2 -1
  350. package/inputs/Input/index.js +75 -66
  351. package/inputs/Input/index.js.map +7 -0
  352. package/inputs/Input/index.test.d.ts +1 -0
  353. package/inputs/Label/Label.stories.d.ts +3 -1
  354. package/inputs/Label/__stories__/Default.d.ts +2 -2
  355. package/inputs/Label/index.d.ts +1 -3
  356. package/inputs/Label/index.js +12 -17
  357. package/inputs/Label/index.js.map +7 -0
  358. package/inputs/Label/index.test.d.ts +1 -0
  359. package/inputs/OtpInput/OtpInput.stories.d.ts +3 -1
  360. package/inputs/OtpInput/__stories__/Default.d.ts +2 -2
  361. package/inputs/OtpInput/index.d.ts +1 -1
  362. package/inputs/OtpInput/index.js +111 -104
  363. package/inputs/OtpInput/index.js.map +7 -0
  364. package/inputs/OtpInput/index.test.d.ts +1 -0
  365. package/inputs/Radio/Radio.stories.d.ts +5 -3
  366. package/inputs/Radio/__stories__/Conditional.d.ts +2 -2
  367. package/inputs/Radio/__stories__/Default.d.ts +2 -2
  368. package/inputs/Radio/__stories__/WithDivider.d.ts +2 -2
  369. package/inputs/Radio/index.d.ts +6 -1
  370. package/inputs/Radio/index.js +102 -55
  371. package/inputs/Radio/index.js.map +7 -0
  372. package/inputs/Radio/index.test.d.ts +1 -0
  373. package/inputs/Select/Select.stories.d.ts +3 -1
  374. package/inputs/Select/__stories__/Default.d.ts +2 -2
  375. package/inputs/Select/index.d.ts +3 -2
  376. package/inputs/Select/index.js +33 -31
  377. package/inputs/Select/index.js.map +7 -0
  378. package/inputs/Select/index.test.d.ts +1 -0
  379. package/inputs/index.js +21 -9
  380. package/inputs/index.js.map +7 -0
  381. package/inputs/inputsScenarios/index.js +499 -0
  382. package/inputs/inputsScenarios/package.json +6 -0
  383. package/inputs/inputsScenarios.d.ts +296 -0
  384. package/inputs/inputsScenarios.js.map +7 -0
  385. package/internal/index.js +10 -34
  386. package/internal.d.ts +2 -31
  387. package/internal.js.map +7 -0
  388. package/lazy/index.js +76 -393
  389. package/locales/el/index.js +6 -0
  390. package/{Form.stories → locales/el}/package.json +1 -1
  391. package/locales/el.d.ts +2 -0
  392. package/locales/el.js.map +7 -0
  393. package/package.json +8 -9
  394. package/registry/index.js +125 -98
  395. package/src/Field/ErrorGroup.tsx +84 -0
  396. package/src/Field/FieldBase.tsx +40 -23
  397. package/src/Field/FieldBaseContainer.tsx +70 -47
  398. package/src/Field/FieldConditional.tsx +9 -1
  399. package/src/Field/doc.mdx +207 -0
  400. package/src/Field/index.tsx +40 -6
  401. package/src/Field/types.tsx +82 -5
  402. package/src/Field/utils/calculateField.ts +49 -0
  403. package/src/Field/utils/evaluateFieldWithConditions.ts +30 -0
  404. package/src/Field/utils/index.ts +84 -0
  405. package/src/Field/utils/useField.ts +66 -0
  406. package/src/FieldArray/FieldArray.stories.js +3 -2
  407. package/src/FieldArray/FormDialog.tsx +565 -0
  408. package/src/FieldArray/__stories__/Default.tsx +2 -1
  409. package/src/FieldArray/__stories__/WithExactLength.tsx +2 -1
  410. package/src/FieldArray/__stories__/WithModal.tsx +160 -0
  411. package/src/FieldArray/index.test.tsx +32 -0
  412. package/src/FieldArray/index.tsx +126 -50
  413. package/src/FieldObject/index.tsx +56 -22
  414. package/src/Fieldset/index.tsx +5 -5
  415. package/src/Fieldset/types.tsx +5 -3
  416. package/src/FormBuilder/FormBuilder.stories.js +6 -1
  417. package/src/FormBuilder/__stories__/AutoErrorGrouping.tsx +63 -0
  418. package/src/FormBuilder/__stories__/Default.tsx +1 -1
  419. package/src/FormBuilder/__stories__/ErrorGrouping.tsx +43 -0
  420. package/{FormBuilder/FormBuilder.mdx → src/FormBuilder/doc.mdx} +27 -35
  421. package/src/FormBuilder/index.test.tsx +32 -0
  422. package/src/FormBuilder/index.tsx +268 -1
  423. package/src/FormBuilder/interaction.test.tsx +40 -0
  424. package/src/FormBuilder/scenarios.test.tsx +2736 -0
  425. package/src/FormContext.tsx +5 -2
  426. package/src/MultiplicityField/MultiplicityField.stories.js +9 -6
  427. package/src/MultiplicityField/__stories__/Default.tsx +1 -1
  428. package/src/MultiplicityField/__stories__/PreviewDisplay.tsx +3 -3
  429. package/src/MultiplicityField/__stories__/WithExactLength.tsx +2 -2
  430. package/src/MultiplicityField/__stories__/WithMaxLength.tsx +2 -2
  431. package/src/MultiplicityField/__stories__/WithMinAndMaxLength.tsx +2 -2
  432. package/src/MultiplicityField/__stories__/WithMinLength.tsx +2 -2
  433. package/src/MultiplicityField/add-objects.tsx +33 -15
  434. package/{MultiplicityField/MultiplicityField.mdx → src/MultiplicityField/doc.mdx} +112 -98
  435. package/src/MultiplicityField/index.test.tsx +44 -0
  436. package/src/MultiplicityField/index.tsx +24 -34
  437. package/src/MultiplicityField/types.ts +22 -0
  438. package/src/Questions/Questions.stories.js +4 -1
  439. package/src/Questions/Questions.tsx +4 -4
  440. package/src/Questions/Step/StepArrayReview.tsx +1 -1
  441. package/src/Questions/Step/StepTitle.tsx +5 -3
  442. package/src/Questions/Step/index.ts +0 -1
  443. package/src/Questions/Step/types.tsx +1 -0
  444. package/src/Questions/__snapshots__/index.spec.tsx.snap +74 -587
  445. package/src/Questions/__stories__/Default.tsx +1 -1
  446. package/src/Questions/{index.mdx → doc.mdx} +34 -57
  447. package/src/Questions/index.spec.tsx +17 -5
  448. package/src/Questions/index.test.tsx +24 -0
  449. package/src/Questions/types.tsx +1 -0
  450. package/src/create-simple-form.mdx +2 -6
  451. package/{index.mdx → src/doc.mdx} +29 -18
  452. package/src/index.ts +4 -1
  453. package/src/inputs/AutoCompleteInput/AutoComplete.stories.js +5 -2
  454. package/src/inputs/AutoCompleteInput/__stories__/Default.tsx +3 -11
  455. package/src/inputs/AutoCompleteInput/__stories__/Multiple.tsx +3 -10
  456. package/{inputs/AutoCompleteInput/index.mdx → src/inputs/AutoCompleteInput/doc.mdx} +2 -13
  457. package/src/inputs/AutoCompleteInput/index.test.tsx +28 -0
  458. package/src/inputs/AutoCompleteInput/index.tsx +47 -31
  459. package/src/inputs/Checkboxes/Checkboxes.stories.js +6 -3
  460. package/src/inputs/Checkboxes/__stories__/Conditional.tsx +1 -1
  461. package/src/inputs/Checkboxes/__stories__/Default.tsx +1 -1
  462. package/src/inputs/Checkboxes/__stories__/WithDivider.tsx +1 -1
  463. package/src/inputs/Checkboxes/{index.mdx → doc.mdx} +5 -15
  464. package/src/inputs/Checkboxes/index.test.tsx +32 -0
  465. package/src/inputs/Checkboxes/index.tsx +34 -31
  466. package/src/inputs/DateInput/DateInput.stories.js +8 -1
  467. package/src/inputs/DateInput/__stories__/Default.tsx +17 -16
  468. package/src/inputs/DateInput/__stories__/WithDefaultValue.tsx +26 -0
  469. package/src/inputs/DateInput/__stories__/WithInitialValue.tsx +28 -0
  470. package/src/inputs/DateInput/__stories__/WithWrongDefaultValue.tsx +26 -0
  471. package/src/inputs/DateInput/__stories__/WithWrongInitialValue.tsx +28 -0
  472. package/src/inputs/DateInput/{index.mdx → doc.mdx} +1 -8
  473. package/src/inputs/DateInput/index.test.tsx +40 -0
  474. package/src/inputs/DateInput/index.tsx +60 -23
  475. package/src/inputs/DateTimeInput/DateTimeInput.stories.js +14 -0
  476. package/src/inputs/DateTimeInput/__stories__/Default.tsx +25 -0
  477. package/src/inputs/DateTimeInput/__stories__/WithDefaultValue.tsx +26 -0
  478. package/src/inputs/DateTimeInput/__stories__/WithInitialValue.tsx +28 -0
  479. package/src/inputs/DateTimeInput/__stories__/WithWrongDefaultValue.tsx +26 -0
  480. package/src/inputs/DateTimeInput/__stories__/WithWrongInitialValue.tsx +28 -0
  481. package/src/inputs/DateTimeInput/doc.mdx +16 -0
  482. package/src/inputs/DateTimeInput/index.test.tsx +40 -0
  483. package/src/inputs/DateTimeInput/index.tsx +233 -0
  484. package/src/inputs/FileInput/FileInput.stories.js +5 -1
  485. package/src/inputs/FileInput/__stories__/Default.tsx +1 -1
  486. package/src/inputs/FileInput/__stories__/WithBorderAndLink.tsx +34 -0
  487. package/src/inputs/FileInput/{index.mdx → doc.mdx} +1 -5
  488. package/src/inputs/FileInput/index.test.tsx +28 -0
  489. package/src/inputs/FileInput/index.tsx +106 -41
  490. package/src/inputs/ImageInput/ImageInput.stories.js +7 -3
  491. package/src/inputs/ImageInput/__stories__/Default.tsx +1 -1
  492. package/src/inputs/ImageInput/__stories__/{WithInvalidImageSize.tsx → MaxSize.tsx} +5 -3
  493. package/src/inputs/ImageInput/__stories__/WithInitialValues.tsx +45 -0
  494. package/src/inputs/ImageInput/__stories__/WithInvalidImageDimension.tsx +3 -1
  495. package/src/inputs/ImageInput/__stories__/logo.d.ts +4 -0
  496. package/src/inputs/ImageInput/__stories__/logo.png +0 -0
  497. package/src/inputs/ImageInput/doc.mdx +23 -0
  498. package/src/inputs/ImageInput/index.test.tsx +36 -0
  499. package/src/inputs/ImageInput/index.tsx +103 -50
  500. package/src/inputs/Input/Input.stories.js +16 -10
  501. package/src/inputs/Input/__stories__/AFM.tsx +1 -1
  502. package/src/inputs/Input/__stories__/AMKA.tsx +23 -0
  503. package/src/inputs/Input/__stories__/Boolean.tsx +1 -1
  504. package/src/inputs/Input/__stories__/Email.tsx +23 -0
  505. package/src/inputs/Input/__stories__/IBAN.tsx +1 -1
  506. package/src/inputs/Input/__stories__/Integer.tsx +1 -1
  507. package/src/inputs/Input/__stories__/LandlineNumber.tsx +3 -2
  508. package/src/inputs/Input/__stories__/MobilePhone.tsx +2 -1
  509. package/src/inputs/Input/__stories__/PhoneNumber.tsx +2 -1
  510. package/src/inputs/Input/__stories__/PostalCode.tsx +2 -1
  511. package/src/inputs/Input/__stories__/{Default.tsx → String.tsx} +2 -2
  512. package/src/inputs/Input/__stories__/StringWithTrimValidation.tsx +26 -0
  513. package/src/inputs/Input/__stories__/{TextWithCharacterLimit.tsx → TextWithLimit.tsx} +3 -2
  514. package/src/inputs/Input/doc.mdx +56 -0
  515. package/src/inputs/Input/index.test.tsx +72 -0
  516. package/src/inputs/Input/index.tsx +44 -31
  517. package/src/inputs/Label/Label.stories.js +4 -1
  518. package/src/inputs/Label/__stories__/Default.tsx +4 -2
  519. package/src/inputs/Label/doc.mdx +14 -0
  520. package/src/inputs/Label/index.test.tsx +24 -0
  521. package/src/inputs/Label/index.tsx +3 -10
  522. package/src/inputs/OtpInput/OtpInput.stories.js +4 -1
  523. package/src/inputs/OtpInput/__stories__/Default.tsx +1 -1
  524. package/{inputs/OtpInput/index.mdx → src/inputs/OtpInput/doc.mdx} +1 -8
  525. package/src/inputs/OtpInput/index.test.tsx +24 -0
  526. package/src/inputs/OtpInput/index.tsx +3 -1
  527. package/src/inputs/Radio/Radio.stories.js +6 -3
  528. package/src/inputs/Radio/__stories__/Conditional.tsx +3 -2
  529. package/src/inputs/Radio/__stories__/Default.tsx +1 -1
  530. package/src/inputs/Radio/__stories__/WithDivider.tsx +1 -1
  531. package/{cjs/inputs/Radio/index.mdx → src/inputs/Radio/doc.mdx} +5 -15
  532. package/src/inputs/Radio/index.test.tsx +32 -0
  533. package/src/inputs/Radio/index.tsx +79 -9
  534. package/src/inputs/Select/Select.stories.js +4 -1
  535. package/src/inputs/Select/__stories__/Default.tsx +1 -1
  536. package/{inputs/Select/index.mdx → src/inputs/Select/doc.mdx} +1 -5
  537. package/src/inputs/Select/index.test.tsx +24 -0
  538. package/src/inputs/Select/index.tsx +18 -7
  539. package/src/inputs/inputsScenarios.ts +496 -0
  540. package/src/installation.mdx +2 -5
  541. package/src/internal.ts +2 -31
  542. package/src/lazy.js +77 -59
  543. package/src/locales/el.ts +3 -0
  544. package/src/registry.js +108 -88
  545. package/src/types.tsx +13 -65
  546. package/src/utils.ts +55 -33
  547. package/src/validators/index.ts +107 -90
  548. package/src/validators/utils/amka.ts +39 -0
  549. package/src/validators/utils/date.ts +131 -0
  550. package/src/validators/utils/datetime.ts +222 -0
  551. package/src/validators/utils/file.ts +33 -17
  552. package/src/validators/utils/index.ts +6 -1
  553. package/src/validators/utils/int.ts +1 -1
  554. package/src/validators/utils/number.ts +1 -1
  555. package/src/validators/utils/phone.ts +63 -72
  556. package/src/validators/utils/postal_code.ts +1 -1
  557. package/src/validators/utils/uuid4.ts +2 -1
  558. package/src/validators/validators.spec.ts +6 -40
  559. package/types/index.js +2 -1
  560. package/types.d.ts +8 -36
  561. package/types.js.map +7 -0
  562. package/utils/index.js +71 -77
  563. package/utils.d.ts +2 -0
  564. package/utils.js.map +7 -0
  565. package/validators/index.d.ts +1 -1
  566. package/validators/index.js +121 -153
  567. package/validators/index.js.map +7 -0
  568. package/validators/types/index.js +1 -1
  569. package/validators/types.js.map +7 -0
  570. package/validators/utils/afm/index.js +16 -16
  571. package/validators/utils/afm.js.map +7 -0
  572. package/validators/utils/amka/index.js +36 -0
  573. package/validators/utils/amka/package.json +6 -0
  574. package/validators/utils/amka.d.ts +6 -0
  575. package/validators/utils/amka.js.map +7 -0
  576. package/validators/utils/date/index.js +126 -0
  577. package/validators/utils/date/package.json +6 -0
  578. package/validators/utils/date.d.ts +9 -0
  579. package/validators/utils/date.js.map +7 -0
  580. package/validators/utils/datetime/index.js +210 -0
  581. package/{Questions/Questions.stories → validators/utils/datetime}/package.json +1 -1
  582. package/validators/utils/datetime.d.ts +9 -0
  583. package/validators/utils/datetime.js.map +7 -0
  584. package/validators/utils/file/index.js +26 -25
  585. package/validators/utils/file.js.map +7 -0
  586. package/validators/utils/iban/index.js +14 -12
  587. package/validators/utils/iban.js.map +7 -0
  588. package/validators/utils/image/index.js +66 -106
  589. package/validators/utils/image.js.map +7 -0
  590. package/validators/utils/index.d.ts +3 -0
  591. package/validators/utils/index.js +59 -48
  592. package/validators/utils/index.js.map +7 -0
  593. package/validators/utils/int/index.js +13 -8
  594. package/validators/utils/int.js.map +7 -0
  595. package/validators/utils/number/index.js +12 -7
  596. package/validators/utils/number.js.map +7 -0
  597. package/validators/utils/otp/index.js +13 -8
  598. package/validators/utils/otp.js.map +7 -0
  599. package/validators/utils/phone/index.js +89 -51
  600. package/validators/utils/phone.d.ts +1 -1
  601. package/validators/utils/phone.js.map +7 -0
  602. package/validators/utils/postal_code/index.js +14 -11
  603. package/validators/utils/postal_code.d.ts +1 -1
  604. package/validators/utils/postal_code.js.map +7 -0
  605. package/validators/utils/text_limit/index.js +18 -20
  606. package/validators/utils/text_limit.js.map +7 -0
  607. package/validators/utils/uuid4/index.js +12 -8
  608. package/validators/utils/uuid4.js.map +7 -0
  609. package/Field/index.mdx +0 -6
  610. package/Field/utils.d.ts +0 -5
  611. package/FieldArray/FieldArray.stories/index.js +0 -8
  612. package/FieldArray/FieldArray.stories.playwright.json +0 -353
  613. package/FieldArray/__stories__/Default/index.js +0 -88
  614. package/FieldArray/__stories__/Default/package.json +0 -6
  615. package/FieldArray/__stories__/WithExactLength/index.js +0 -88
  616. package/FieldArray/__stories__/WithExactLength/package.json +0 -6
  617. package/Form.stories/index.js +0 -3
  618. package/FormBuilder/FormBuilder/index.js +0 -152
  619. package/FormBuilder/FormBuilder.d.ts +0 -5
  620. package/FormBuilder/FormBuilder.stories/index.js +0 -7
  621. package/FormBuilder/FormBuilder.stories/package.json +0 -6
  622. package/FormBuilder/FormBuilder.stories.playwright.json +0 -52
  623. package/FormBuilder/__stories__/Default/index.js +0 -26
  624. package/FormBuilder/__stories__/Default/package.json +0 -6
  625. package/MultiplicityField/MultiplicityField.stories/index.js +0 -12
  626. package/MultiplicityField/MultiplicityField.stories/package.json +0 -6
  627. package/MultiplicityField/MultiplicityField.stories.playwright.json +0 -1370
  628. package/MultiplicityField/__stories__/Default/index.js +0 -95
  629. package/MultiplicityField/__stories__/Default/package.json +0 -6
  630. package/MultiplicityField/__stories__/PreviewDisplay/index.js +0 -72
  631. package/MultiplicityField/__stories__/PreviewDisplay/package.json +0 -6
  632. package/MultiplicityField/__stories__/WithExactLength/index.js +0 -90
  633. package/MultiplicityField/__stories__/WithExactLength/package.json +0 -6
  634. package/MultiplicityField/__stories__/WithMaxLength/index.js +0 -93
  635. package/MultiplicityField/__stories__/WithMaxLength/package.json +0 -6
  636. package/MultiplicityField/__stories__/WithMinAndMaxLength/index.js +0 -94
  637. package/MultiplicityField/__stories__/WithMinAndMaxLength/package.json +0 -6
  638. package/MultiplicityField/__stories__/WithMinLength/index.js +0 -93
  639. package/MultiplicityField/__stories__/WithMinLength/package.json +0 -6
  640. package/Questions/Questions.stories/index.js +0 -7
  641. package/Questions/__snapshots__/index.spec.tsx.snap +0 -596
  642. package/Questions/__stories__/Default/index.js +0 -102
  643. package/Questions/__stories__/Default/package.json +0 -6
  644. package/Questions/index.mdx +0 -415
  645. package/Questions/index.spec/index.js +0 -59
  646. package/cjs/Field/index.mdx +0 -6
  647. package/cjs/FieldArray/FieldArray.stories/index.js +0 -38
  648. package/cjs/FieldArray/FieldArray.stories.playwright.json +0 -353
  649. package/cjs/FieldArray/__stories__/Default/index.js +0 -98
  650. package/cjs/FieldArray/__stories__/WithExactLength/index.js +0 -98
  651. package/cjs/Form.stories/index.js +0 -9
  652. package/cjs/FormBuilder/FormBuilder/index.js +0 -162
  653. package/cjs/FormBuilder/FormBuilder.mdx +0 -256
  654. package/cjs/FormBuilder/FormBuilder.stories/index.js +0 -26
  655. package/cjs/FormBuilder/FormBuilder.stories.playwright.json +0 -52
  656. package/cjs/FormBuilder/__stories__/Default/index.js +0 -36
  657. package/cjs/MultiplicityField/MultiplicityField.mdx +0 -590
  658. package/cjs/MultiplicityField/MultiplicityField.stories/index.js +0 -86
  659. package/cjs/MultiplicityField/MultiplicityField.stories.playwright.json +0 -1370
  660. package/cjs/MultiplicityField/__stories__/Default/index.js +0 -105
  661. package/cjs/MultiplicityField/__stories__/PreviewDisplay/index.js +0 -82
  662. package/cjs/MultiplicityField/__stories__/WithExactLength/index.js +0 -100
  663. package/cjs/MultiplicityField/__stories__/WithMaxLength/index.js +0 -103
  664. package/cjs/MultiplicityField/__stories__/WithMinAndMaxLength/index.js +0 -104
  665. package/cjs/MultiplicityField/__stories__/WithMinLength/index.js +0 -103
  666. package/cjs/Questions/Questions.stories/index.js +0 -26
  667. package/cjs/Questions/__snapshots__/index.spec.tsx.snap +0 -596
  668. package/cjs/Questions/__stories__/Default/index.js +0 -113
  669. package/cjs/Questions/index.mdx +0 -415
  670. package/cjs/Questions/index.spec/index.js +0 -63
  671. package/cjs/create-simple-form.mdx +0 -539
  672. package/cjs/index.mdx +0 -51
  673. package/cjs/inputs/AutoCompleteInput/AutoComplete.stories/index.js +0 -38
  674. package/cjs/inputs/AutoCompleteInput/__stories__/Default/index.js +0 -51
  675. package/cjs/inputs/AutoCompleteInput/__stories__/Multiple/index.js +0 -52
  676. package/cjs/inputs/AutoCompleteInput/index.mdx +0 -29
  677. package/cjs/inputs/Checkboxes/Checkboxes.stories/index.js +0 -50
  678. package/cjs/inputs/Checkboxes/Checkboxes.stories.playwright.json +0 -85
  679. package/cjs/inputs/Checkboxes/__stories__/Conditional/index.js +0 -103
  680. package/cjs/inputs/Checkboxes/__stories__/Default/index.js +0 -50
  681. package/cjs/inputs/Checkboxes/__stories__/WithDivider/index.js +0 -51
  682. package/cjs/inputs/Checkboxes/index.mdx +0 -33
  683. package/cjs/inputs/DateInput/DateInput.stories/index.js +0 -26
  684. package/cjs/inputs/DateInput/DateInput.stories.playwright.json +0 -72
  685. package/cjs/inputs/DateInput/__stories__/Default/index.js +0 -33
  686. package/cjs/inputs/DateInput/index.mdx +0 -23
  687. package/cjs/inputs/FileInput/FileInput.stories/index.js +0 -26
  688. package/cjs/inputs/FileInput/FileInput.stories.playwright.json +0 -75
  689. package/cjs/inputs/FileInput/__stories__/Default/index.js +0 -30
  690. package/cjs/inputs/FileInput/index.mdx +0 -19
  691. package/cjs/inputs/ImageInput/ImageInput.stories/index.js +0 -50
  692. package/cjs/inputs/ImageInput/ImageInput.stories.playwright.json +0 -77
  693. package/cjs/inputs/ImageInput/__stories__/Default/index.js +0 -38
  694. package/cjs/inputs/ImageInput/__stories__/WithInvalidImageDimension/index.js +0 -46
  695. package/cjs/inputs/ImageInput/__stories__/WithInvalidImageSize/index.js +0 -43
  696. package/cjs/inputs/ImageInput/index.mdx +0 -19
  697. package/cjs/inputs/Input/Input.stories/index.js +0 -134
  698. package/cjs/inputs/Input/Input.stories.playwright.json +0 -376
  699. package/cjs/inputs/Input/__stories__/AFM/index.js +0 -32
  700. package/cjs/inputs/Input/__stories__/Boolean/index.js +0 -33
  701. package/cjs/inputs/Input/__stories__/Default/index.js +0 -33
  702. package/cjs/inputs/Input/__stories__/IBAN/index.js +0 -33
  703. package/cjs/inputs/Input/__stories__/Integer/index.js +0 -41
  704. package/cjs/inputs/Input/__stories__/LandlineNumber/index.js +0 -36
  705. package/cjs/inputs/Input/__stories__/MobilePhone/index.js +0 -36
  706. package/cjs/inputs/Input/__stories__/PhoneNumber/index.js +0 -35
  707. package/cjs/inputs/Input/__stories__/PostalCode/index.js +0 -35
  708. package/cjs/inputs/Input/__stories__/TextWithCharacterLimit/index.js +0 -39
  709. package/cjs/inputs/Input/index.mdx +0 -95
  710. package/cjs/inputs/Label/Label.stories/index.js +0 -26
  711. package/cjs/inputs/Label/Label.stories.playwright.json +0 -40
  712. package/cjs/inputs/Label/__stories__/Default/index.js +0 -37
  713. package/cjs/inputs/Label/index.mdx +0 -0
  714. package/cjs/inputs/OtpInput/OtpInput.stories/index.js +0 -26
  715. package/cjs/inputs/OtpInput/__stories__/Default/index.js +0 -39
  716. package/cjs/inputs/OtpInput/index.mdx +0 -23
  717. package/cjs/inputs/Radio/Radio.stories/index.js +0 -50
  718. package/cjs/inputs/Radio/Radio.stories.playwright.json +0 -73
  719. package/cjs/inputs/Radio/__stories__/Conditional/index.js +0 -103
  720. package/cjs/inputs/Radio/__stories__/Default/index.js +0 -55
  721. package/cjs/inputs/Radio/__stories__/WithDivider/index.js +0 -56
  722. package/cjs/inputs/Select/Select.stories/index.js +0 -26
  723. package/cjs/inputs/Select/Select.stories.playwright.json +0 -22
  724. package/cjs/inputs/Select/__stories__/Default/index.js +0 -61
  725. package/cjs/inputs/Select/index.mdx +0 -17
  726. package/cjs/installation.mdx +0 -68
  727. package/cjs/validators/validators.spec/index.js +0 -87
  728. package/create-simple-form.mdx +0 -539
  729. package/inputs/AutoCompleteInput/AutoComplete.stories/index.js +0 -8
  730. package/inputs/AutoCompleteInput/AutoComplete.stories/package.json +0 -6
  731. package/inputs/AutoCompleteInput/__stories__/Default/index.js +0 -44
  732. package/inputs/AutoCompleteInput/__stories__/Default/package.json +0 -6
  733. package/inputs/AutoCompleteInput/__stories__/Multiple/index.js +0 -45
  734. package/inputs/AutoCompleteInput/__stories__/Multiple/package.json +0 -6
  735. package/inputs/Checkboxes/Checkboxes.stories/index.js +0 -9
  736. package/inputs/Checkboxes/Checkboxes.stories/package.json +0 -6
  737. package/inputs/Checkboxes/Checkboxes.stories.playwright.json +0 -85
  738. package/inputs/Checkboxes/__stories__/Conditional/index.js +0 -93
  739. package/inputs/Checkboxes/__stories__/Conditional/package.json +0 -6
  740. package/inputs/Checkboxes/__stories__/Default/index.js +0 -40
  741. package/inputs/Checkboxes/__stories__/Default/package.json +0 -6
  742. package/inputs/Checkboxes/__stories__/WithDivider/index.js +0 -41
  743. package/inputs/Checkboxes/__stories__/WithDivider/package.json +0 -6
  744. package/inputs/Checkboxes/index.mdx +0 -33
  745. package/inputs/DateInput/DateInput.stories/index.js +0 -7
  746. package/inputs/DateInput/DateInput.stories/package.json +0 -6
  747. package/inputs/DateInput/DateInput.stories.playwright.json +0 -72
  748. package/inputs/DateInput/__stories__/Default/index.js +0 -23
  749. package/inputs/DateInput/index.mdx +0 -23
  750. package/inputs/FileInput/FileInput.stories/index.js +0 -7
  751. package/inputs/FileInput/FileInput.stories/package.json +0 -6
  752. package/inputs/FileInput/FileInput.stories.playwright.json +0 -75
  753. package/inputs/FileInput/__stories__/Default/index.js +0 -20
  754. package/inputs/FileInput/index.mdx +0 -19
  755. package/inputs/ImageInput/ImageInput.stories/index.js +0 -9
  756. package/inputs/ImageInput/ImageInput.stories/package.json +0 -6
  757. package/inputs/ImageInput/ImageInput.stories.playwright.json +0 -77
  758. package/inputs/ImageInput/__stories__/Default/index.js +0 -28
  759. package/inputs/ImageInput/__stories__/Default/package.json +0 -6
  760. package/inputs/ImageInput/__stories__/WithInvalidImageDimension/index.js +0 -36
  761. package/inputs/ImageInput/__stories__/WithInvalidImageDimension/package.json +0 -6
  762. package/inputs/ImageInput/__stories__/WithInvalidImageSize/index.js +0 -33
  763. package/inputs/ImageInput/__stories__/WithInvalidImageSize/package.json +0 -6
  764. package/inputs/ImageInput/__stories__/WithInvalidImageSize.d.ts +0 -3
  765. package/inputs/ImageInput/index.mdx +0 -19
  766. package/inputs/Input/Input.stories/index.js +0 -16
  767. package/inputs/Input/Input.stories/package.json +0 -6
  768. package/inputs/Input/Input.stories.playwright.json +0 -376
  769. package/inputs/Input/__stories__/AFM/index.js +0 -22
  770. package/inputs/Input/__stories__/AFM/package.json +0 -6
  771. package/inputs/Input/__stories__/Boolean/index.js +0 -23
  772. package/inputs/Input/__stories__/Boolean/package.json +0 -6
  773. package/inputs/Input/__stories__/Default/index.js +0 -23
  774. package/inputs/Input/__stories__/Default/package.json +0 -6
  775. package/inputs/Input/__stories__/Default.d.ts +0 -3
  776. package/inputs/Input/__stories__/IBAN/index.js +0 -23
  777. package/inputs/Input/__stories__/IBAN/package.json +0 -6
  778. package/inputs/Input/__stories__/Integer/index.js +0 -31
  779. package/inputs/Input/__stories__/Integer/package.json +0 -6
  780. package/inputs/Input/__stories__/LandlineNumber/index.js +0 -26
  781. package/inputs/Input/__stories__/LandlineNumber/package.json +0 -6
  782. package/inputs/Input/__stories__/MobilePhone/index.js +0 -26
  783. package/inputs/Input/__stories__/MobilePhone/package.json +0 -6
  784. package/inputs/Input/__stories__/PhoneNumber/index.js +0 -25
  785. package/inputs/Input/__stories__/PhoneNumber/package.json +0 -6
  786. package/inputs/Input/__stories__/PostalCode/index.js +0 -25
  787. package/inputs/Input/__stories__/PostalCode/package.json +0 -6
  788. package/inputs/Input/__stories__/TextWithCharacterLimit/index.js +0 -29
  789. package/inputs/Input/__stories__/TextWithCharacterLimit/package.json +0 -6
  790. package/inputs/Input/__stories__/TextWithCharacterLimit.d.ts +0 -3
  791. package/inputs/Input/index.mdx +0 -95
  792. package/inputs/Label/Label.stories/index.js +0 -7
  793. package/inputs/Label/Label.stories/package.json +0 -6
  794. package/inputs/Label/Label.stories.playwright.json +0 -40
  795. package/inputs/Label/__stories__/Default/index.js +0 -27
  796. package/inputs/Label/__stories__/Default/package.json +0 -6
  797. package/inputs/Label/index.mdx +0 -0
  798. package/inputs/OtpInput/OtpInput.stories/index.js +0 -7
  799. package/inputs/OtpInput/OtpInput.stories/package.json +0 -6
  800. package/inputs/OtpInput/__stories__/Default/index.js +0 -29
  801. package/inputs/OtpInput/__stories__/Default/package.json +0 -6
  802. package/inputs/Radio/Radio.stories/index.js +0 -9
  803. package/inputs/Radio/Radio.stories/package.json +0 -6
  804. package/inputs/Radio/Radio.stories.playwright.json +0 -73
  805. package/inputs/Radio/__stories__/Conditional/index.js +0 -93
  806. package/inputs/Radio/__stories__/Conditional/package.json +0 -6
  807. package/inputs/Radio/__stories__/Default/index.js +0 -45
  808. package/inputs/Radio/__stories__/Default/package.json +0 -6
  809. package/inputs/Radio/__stories__/WithDivider/index.js +0 -46
  810. package/inputs/Radio/__stories__/WithDivider/package.json +0 -6
  811. package/inputs/Radio/index.mdx +0 -33
  812. package/inputs/Select/Select.stories/index.js +0 -7
  813. package/inputs/Select/Select.stories/package.json +0 -6
  814. package/inputs/Select/Select.stories.playwright.json +0 -22
  815. package/inputs/Select/__stories__/Default/index.js +0 -51
  816. package/inputs/Select/__stories__/Default/package.json +0 -6
  817. package/installation.mdx +0 -68
  818. package/lazy.d.ts +0 -69
  819. package/registry.d.ts +0 -64
  820. package/src/Field/index.mdx +0 -6
  821. package/src/Field/utils.ts +0 -191
  822. package/src/FieldArray/FieldArray.stories.playwright.json +0 -353
  823. package/src/FormBuilder/FormBuilder.mdx +0 -256
  824. package/src/FormBuilder/FormBuilder.stories.playwright.json +0 -52
  825. package/src/FormBuilder/FormBuilder.tsx +0 -166
  826. package/src/MultiplicityField/MultiplicityField.mdx +0 -590
  827. package/src/MultiplicityField/MultiplicityField.stories.playwright.json +0 -1370
  828. package/src/index.mdx +0 -51
  829. package/src/inputs/AutoCompleteInput/index.mdx +0 -29
  830. package/src/inputs/Checkboxes/Checkboxes.stories.playwright.json +0 -85
  831. package/src/inputs/DateInput/DateInput.stories.playwright.json +0 -72
  832. package/src/inputs/FileInput/FileInput.stories.playwright.json +0 -75
  833. package/src/inputs/ImageInput/ImageInput.stories.playwright.json +0 -77
  834. package/src/inputs/ImageInput/index.mdx +0 -19
  835. package/src/inputs/Input/Input.stories.playwright.json +0 -376
  836. package/src/inputs/Input/index.mdx +0 -95
  837. package/src/inputs/Label/Label.stories.playwright.json +0 -40
  838. package/src/inputs/Label/index.mdx +0 -0
  839. package/src/inputs/OtpInput/index.mdx +0 -23
  840. package/src/inputs/Radio/Radio.stories.playwright.json +0 -73
  841. package/src/inputs/Radio/index.mdx +0 -33
  842. package/src/inputs/Select/Select.stories.playwright.json +0 -22
  843. package/src/inputs/Select/index.mdx +0 -17
  844. package/validators/validators.spec/index.js +0 -85
@@ -0,0 +1,207 @@
1
+ ---
2
+ title: Form
3
+ parent: docs/form/components
4
+ ---
5
+
6
+ # Field
7
+
8
+ Field allow users to create different types of inputs based on data that is described by a particular config schema.
9
+
10
+ ```jsx
11
+ import React from 'react';
12
+ import FormBuilder, { Field } from '@digigov/form';
13
+ import { Button } from '@digigov/ui/form/Button';
14
+
15
+ const fields = [
16
+ {
17
+ key: 'first_name',
18
+ type: 'string',
19
+ required: true,
20
+ label: {
21
+ primary: 'Ποιo είναι το όνομά σας;',
22
+ },
23
+ },
24
+ ];
25
+
26
+ export const MyComponent = () => (
27
+ <FormBuilder onSubmit={(data) => console.log(data)}>
28
+ {fields.map(({ key, ...field }) => {
29
+ return <Field {...field} name={key} key={key} />;
30
+ })}
31
+ <Button type="submit">Συνέχεια</Button>
32
+ </FormBuilder>
33
+ );
34
+ export default MyComponent;
35
+ ```
36
+
37
+ ## Accessibility & Usability
38
+
39
+ Our goal is to create semantically correct and valid forms, which means
40
+ we must avoid mixing form-related HTML elements (like form, input, label) with generic
41
+ ones (such as div, cards, or custom components). For instance, if a paragraph element is
42
+ placed inside a form, React will display warnings in the console. Rather than building overly
43
+ complex interfaces that attempt to accomplish too much too quickly, Digigov Form encourages
44
+ using forms in their intended way—filling out and validating inputs, and then submitting the form
45
+ as a whole.
46
+
47
+ Additionally, we must ensure our interfaces are fully accessible to screen readers and other
48
+ assistive technologies. This is why we designed the flow to be as guided and recoverable as possible.
49
+ Forms and fields should be clear and logical, reading like well-written text for the users.
50
+ If validation fails, the system provides users with meaningful error messages and clear instructions on how to correct the errors.
51
+ Once validation is successful, the data can be submitted. It is crucial to provide helpful information to users at each step.
52
+ Therefore, we should avoid relying on flashy “magic” UX solutions that assume users have advanced digital skills,
53
+ as these are often intended for expert use cases.
54
+
55
+ ## Introducing the Field component
56
+
57
+ Field is a component that creates `form` inputs dynamically based on a `data config` schema.
58
+ The config structure is a `key-value` pair of data that describes the input fields and its usage.
59
+ In order to create an input, we need to provide a specific type of input for each field,
60
+ and we can use the `type` property for this.
61
+
62
+ ## Field types
63
+
64
+ The `type` property determines the type of input field to be rendered. Below are the available types and their descriptions.
65
+
66
+ | Type | Input Description |
67
+ | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
68
+ | `int` | A whole number. |
69
+ | `string` | A text string (e.g., name, address). |
70
+ | `text` | A larger text input, suitable for paragraphs or multiline text. |
71
+ | `boolean` | A binary value, typically a checkbox or toggle (true/false). |
72
+ | `email` | An email address (e.g., example@example.com). |
73
+ | `uuid4` | A universally unique identifier (UUID) in version 4 format. |
74
+ | `choice:multiple` | A selection of multiple options from a list (e.g., checkboxes). |
75
+ | `choice:single` | A single selection from a list (e.g., radio buttons). |
76
+ | `mobile_phone` | A phone number, typically with country code (e.g., +1-234-567-890). |
77
+ | `date` | A date input, typically in the format YYYY-MM-DD. |
78
+ | `datetime` | A date and time input, typically in the format YYYY-MM-DD HH:MM:SS. |
79
+ | `otp` | A one-time password, typically a short numeric or alphanumeric string. |
80
+ | `afm` | A Greek Tax Identification Number (AFM). |
81
+ | `iban` | An International Bank Account Number (IBAN). |
82
+ | `file` | A file upload input (e.g., for documents, images). |
83
+ | `image` | A file input that specifically handles images. |
84
+ | `postal_code` | A postal code input (e.g., ZIP code, postcode). |
85
+ | `phone_number` | A phone number input (e.g., with or without country code). |
86
+ | `array` | A list of values, typically displayed as multiple inputs ([MultiplicityField](/components/@digigov/form/MultiplicityField.html)). |
87
+ | `object` | A structured data object, often used for more complex or nested forms. |
88
+
89
+ ## Field properties
90
+
91
+ The Field component accepts several properties, that describes the input fields and its usage.
92
+
93
+ | Property | Type | Description |
94
+ | -------------- | ----------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
95
+ | `key` | `string` | The name of the field (TODO: rename to `name`). |
96
+ | `type` | Describes the format of each field, e.g., `type: 'string'` is a simple input format field | The type of input field. Defines the kind of value it accepts. |
97
+ | `trim` | `boolean` | If `true`, trims the input value. |
98
+ | `component` | `any` | A custom React component for the input field. |
99
+ | `autoComplete` | `string` | The `autocomplete` attribute value for the input field (e.g., 'on', 'off'). |
100
+ | `maxLength` | `number` | The maximum number of characters the input can accept. |
101
+ | `condition` | `Record<string, FieldCondition>` | Conditions for when the field should be shown, enabled, or validated. |
102
+ | `controlled` | `boolean` | If `true`, the input value is controlled by React state. |
103
+ | `label` | `FieldLabelProps` | The label associated with the input field. |
104
+ | `extra` | `Record<string, any>` | Extra custom attributes or settings for the field. |
105
+ | `editable` | `boolean` | If `false`, the field cannot be edited. |
106
+ | `variant` | `'inline' \| 'dialog'` | Defines the display variant of the field (e.g., inline or in a dialog). |
107
+ | `required` | `boolean` | If `true`, the field is required to be filled. |
108
+ | `enabled` | `boolean` | If `false`, the field is disabled and cannot be interacted with. |
109
+ | `disabled` | `boolean` | If `true`, the field is disabled. |
110
+ | `layout` | `Record<string, GridProps['xs' \| 'sm' \| 'md' \| 'lg' \| 'xl']>` | Defines the layout settings for the field (grid system). |
111
+ | `validators` | `ValidatorSchema[]` | Array of validators to be applied to the input field. |
112
+ | `wrapper` | `'label' \| 'fieldset'` | Defines the wrapping element for the field (label or fieldset). |
113
+ | `maxWidth` | `string` | The maximum width of the field. |
114
+ | `maxHeight` | `string` | The maximum height of the field. |
115
+ | `width` | `string` | The width of the field. |
116
+
117
+ ### How to use it
118
+
119
+ The `Field` component is a fundamental building block of the `form`.
120
+ We can implement a `Field` by using the `data config` or we can fill the `Field` directly with its properties.
121
+
122
+ First, we need to import the `FormBuilder` component from the `@digigov/form` path.
123
+
124
+ ```jsx pure
125
+ import React from 'react';
126
+ import FormBuilder from '@digigov/form';
127
+ import Button from '@digigov/ui/form/Button';
128
+
129
+ export default function MyFieldComponent() {
130
+ return (
131
+ <FormBuilder>
132
+ {/* this is where all fields will eventually be rendered */}
133
+ <Button type="submit">Συνέχεια</Button>
134
+ </FormBuilder>
135
+ );
136
+ }
137
+ ```
138
+
139
+ #### Data config
140
+
141
+ The `data config` is an array of objects that contains the configuration for each field.
142
+
143
+ ```jsx pure
144
+ const fields = [
145
+ {
146
+ key: 'first_name',
147
+ type: 'string',
148
+ required: true,
149
+ label: {
150
+ primary: 'Ποιo είναι το όνομά σας;',
151
+ },
152
+ },
153
+ ];
154
+ ```
155
+
156
+ Then we can use the `fields` array to render the Field(s).
157
+
158
+ ```jsx pure
159
+ import React from 'react';
160
+ import FormBuilder, { Field } from '@digigov/form';
161
+ import { Button } from '@digigov/ui/form/Button';
162
+
163
+ const fields = [
164
+ {
165
+ key: 'first_name',
166
+ type: 'string',
167
+ required: true,
168
+ label: {
169
+ primary: 'Ποιo είναι το όνομά σας;',
170
+ },
171
+ },
172
+ ];
173
+
174
+ export const MyComponent = () => (
175
+ <FormBuilder onSubmit={(data) => console.log(data)}>
176
+ {fields.map(({ key, ...field }) => {
177
+ return <Field {...field} name={key} key={key} />;
178
+ })}
179
+ <Button type="submit">Συνέχεια</Button>
180
+ </FormBuilder>
181
+ );
182
+ export default MyComponent;
183
+ ```
184
+
185
+ #### Directly
186
+
187
+ We can also use the `Field` component directly and pass the properties to it.
188
+
189
+ ```jsx pure
190
+ import React from 'react';
191
+ import FormBuilder, { Field } from '@digigov/form';
192
+ import { Button } from '@digigov/ui/form/Button';
193
+
194
+ export const MyComponent = () => (
195
+ <FormBuilder onSubmit={(data) => console.log(data)}>
196
+ <Field
197
+ key="first_name"
198
+ name="first_name"
199
+ label={{ primary: 'Οχήματα' }}
200
+ type="sting"
201
+ required
202
+ />
203
+ <Button type="submit">Συνέχεια</Button>
204
+ </FormBuilder>
205
+ );
206
+ export default MyComponent;
207
+ ```
@@ -6,10 +6,14 @@ import {
6
6
  CalculatedField,
7
7
  FieldProps,
8
8
  } from '@digigov/form/Field/types';
9
- import { useField, calculateField } from '@digigov/form/Field/utils';
9
+ import {
10
+ FIELD_COMPONENTS,
11
+ ALTERNATIVE_COMPONENTS,
12
+ } from '@digigov/form/Field/utils';
13
+ import { calculateField } from '@digigov/form/Field/utils/calculateField';
14
+ import { useField } from '@digigov/form/Field/utils/useField';
10
15
  import FieldArray from '@digigov/form/FieldArray';
11
16
  import Multiplicity from '@digigov/form/MultiplicityField';
12
-
13
17
  export const Field: React.FC<FieldProps> = ({
14
18
  name,
15
19
  children,
@@ -20,6 +24,7 @@ export const Field: React.FC<FieldProps> = ({
20
24
  control,
21
25
  register,
22
26
  reset,
27
+ resetField,
23
28
  error,
24
29
  componentRegistry,
25
30
  formState,
@@ -30,18 +35,28 @@ export const Field: React.FC<FieldProps> = ({
30
35
  clearErrors,
31
36
  } = useField(name, customField?.type ? customField : null);
32
37
  const calculatedField: CalculatedField = useMemo(
33
- () => calculateField(children, field, componentRegistry),
38
+ () =>
39
+ calculateField(
40
+ children,
41
+ field,
42
+ {
43
+ ...FIELD_COMPONENTS,
44
+ ...componentRegistry,
45
+ },
46
+ ALTERNATIVE_COMPONENTS
47
+ ),
34
48
  [field]
35
49
  );
36
-
37
50
  if (calculatedField.condition) {
38
51
  return (
39
52
  <FieldConditional
40
53
  control={control}
41
54
  reset={reset}
55
+ resetField={resetField}
42
56
  register={register}
43
57
  field={calculatedField as FieldWithCondition}
44
58
  error={error}
59
+ Field={Field}
45
60
  />
46
61
  );
47
62
  }
@@ -50,9 +65,18 @@ export const Field: React.FC<FieldProps> = ({
50
65
  return (
51
66
  <FieldArray
52
67
  control={control}
68
+ trigger={trigger}
53
69
  register={register}
54
- error={error}
70
+ clearErrors={clearErrors}
71
+ error={
72
+ formState.isSubmitted && !formState.isSubmitting ? error : undefined
73
+ }
74
+ getValues={getValues}
75
+ setValue={setValue}
55
76
  formState={formState}
77
+ Field={Field}
78
+ reset={reset}
79
+ resetField={resetField}
56
80
  {...calculatedField}
57
81
  />
58
82
  );
@@ -73,18 +97,28 @@ export const Field: React.FC<FieldProps> = ({
73
97
  setValue={setValue}
74
98
  getValues={getValues}
75
99
  unregister={unregister}
100
+ resetField={resetField}
101
+ Field={Field}
76
102
  {...calculatedField}
77
103
  />
78
104
  );
79
105
  }
106
+ const editable =
107
+ customField.editable === false || customField.disabled === true
108
+ ? false
109
+ : true;
110
+ const customError = error ? error : formState?.errors[name];
80
111
  return (
81
112
  <FieldBase
82
113
  {...calculatedField}
114
+ editable={editable}
83
115
  name={name}
84
116
  control={control}
85
117
  register={register}
86
118
  reset={reset}
87
- error={error}
119
+ error={customError}
120
+ resetField={resetField}
121
+ Field={Field}
88
122
  />
89
123
  );
90
124
  };
@@ -1,11 +1,77 @@
1
1
  import React from 'react';
2
- import { ErrorOption, UseFormReturn } from 'react-hook-form';
3
- import { FieldSpec } from '@digigov/form/types';
4
- import { FieldCondition, FormData } from '@digigov/form/types';
2
+ import { ErrorOption, UseFormReturn, UseFormProps } from 'react-hook-form';
3
+ import { ValidatorSchema } from '@digigov/form/validators/types';
4
+ import { FieldsetLegendProps } from '@digigov/ui/form/FieldContainer';
5
+ import { GridProps } from '@digigov/ui/layouts/Grid';
5
6
 
7
+ export interface FieldLabelProps {
8
+ primary?: string;
9
+ secondary?: string;
10
+ hint?: string;
11
+ }
12
+
13
+ export interface FieldSpec {
14
+ key: string; // !TODO rename key to name;
15
+ type?:
16
+ | 'int'
17
+ | 'string'
18
+ | 'text'
19
+ | 'boolean'
20
+ | 'email'
21
+ | 'uuid4'
22
+ | 'choice:multiple'
23
+ | 'choice:single'
24
+ | 'mobile_phone'
25
+ | 'date'
26
+ | 'datetime'
27
+ | 'otp'
28
+ | 'afm'
29
+ | 'amka'
30
+ | 'iban'
31
+ | 'file'
32
+ | 'image'
33
+ | 'postal_code'
34
+ | 'phone_number'
35
+ | 'array'
36
+ | 'object';
37
+ trim?: boolean;
38
+ component?: any;
39
+ autoComplete?: string;
40
+ placeholder?: string;
41
+ maxLength?: number;
42
+ condition?: Record<string, FieldCondition>;
43
+ controlled?: boolean;
44
+ label?: FieldLabelProps;
45
+ extra?: Record<string, any>;
46
+ editable?: boolean;
47
+ variant?: 'inline' | 'dialog';
48
+ required?: boolean;
49
+ enabled?: boolean;
50
+ disabled?: boolean; // TODO: keep disabled or editable
51
+ layout?: Record<
52
+ string,
53
+ | GridProps['xs']
54
+ | GridProps['sm']
55
+ | GridProps['md']
56
+ | GridProps['lg']
57
+ | GridProps['xl']
58
+ >;
59
+ validators?: ValidatorSchema[];
60
+ wrapper?: 'label' | 'fieldset';
61
+ maxWidth?: string;
62
+ maxHeight?: string;
63
+ width?: string;
64
+ }
65
+
66
+ export interface FieldCondition {
67
+ is: string | string[] | number | number[] | boolean | boolean[];
68
+ then?: Partial<FieldSpec>;
69
+ else?: Partial<FieldSpec>;
70
+ }
6
71
  export interface ChildFieldMemoProps extends FieldConditionalProps {
7
72
  dependencies: FormData;
8
73
  }
74
+ export type FormData = UseFormProps['defaultValues'];
9
75
 
10
76
  export interface FieldWithCondition extends Omit<CalculatedField, 'condition'> {
11
77
  condition: Record<string, FieldCondition>;
@@ -16,23 +82,29 @@ export interface FieldConditionalProps {
16
82
  control: UseFormReturn['control'];
17
83
  register: UseFormReturn['register'];
18
84
  reset: UseFormReturn['reset'];
85
+ resetField?: UseFormReturn['resetField'];
19
86
  error?: ErrorOption;
87
+ Field: React.FC<FieldProps>;
20
88
  }
21
89
 
22
- export type FieldComponentItem = {
90
+ export interface FieldComponentItem {
23
91
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
92
  component: any;
25
93
  controlled?: boolean;
26
94
  wrapper?: FieldSpec['wrapper'];
27
- };
95
+ }
28
96
 
29
97
  export interface FieldContainerProps {
30
98
  name?: FieldSpec['key'];
99
+ register: FieldBaseProps['register'];
31
100
  layout?: FieldSpec['layout'];
32
101
  label?: FieldSpec['label'];
33
102
  error?: ErrorOption | Record<string, any>;
103
+ hasError?: boolean;
34
104
  children?: React.ReactNode;
105
+ controlled?: boolean;
35
106
  wrapper?: FieldSpec['wrapper'];
107
+ labelSize?: FieldsetLegendProps['size'];
36
108
  }
37
109
 
38
110
  export type FieldComponentRegistry = Record<string, FieldComponentItem>;
@@ -51,6 +123,7 @@ export interface ControlledFieldProps {
51
123
  error?: boolean;
52
124
  name?: string;
53
125
  disabled?: boolean;
126
+ Field?: React.FC<FieldProps>;
54
127
  }
55
128
 
56
129
  export interface UncontrolledFieldProps {
@@ -61,6 +134,7 @@ export interface UncontrolledFieldProps {
61
134
  extra?: Record<string, never>;
62
135
  type?: string;
63
136
  disabled?: boolean;
137
+ Field: React.FC<FieldProps>;
64
138
  }
65
139
 
66
140
  export interface CalculatedField extends OmittedFieldSpec {
@@ -77,6 +151,8 @@ export interface FieldBaseProps extends CalculatedField {
77
151
  control: UseFormReturn['control'];
78
152
  register: UseFormReturn['register'];
79
153
  reset: UseFormReturn['reset'];
154
+ resetField?: UseFormReturn['resetField'];
155
+ Field?: React.FC<FieldProps>;
80
156
  }
81
157
 
82
158
  export interface FieldProps extends FieldSpec {
@@ -89,6 +165,7 @@ export interface UseFieldProps {
89
165
  control: FieldBaseProps['control'];
90
166
  register: FieldBaseProps['register'];
91
167
  reset: FieldBaseProps['reset'];
168
+ resetField: FieldBaseProps['resetField'];
92
169
  watch: UseFormReturn['watch'];
93
170
  formState: UseFormReturn['formState'];
94
171
  getFieldState: UseFormReturn['getFieldState'];
@@ -0,0 +1,49 @@
1
+ import {
2
+ FieldProps,
3
+ FieldSpec,
4
+ FieldComponentRegistry,
5
+ CalculatedField,
6
+ } from '@digigov/form/Field/types';
7
+
8
+ export function calculateField(
9
+ children: FieldProps['children'],
10
+ field: FieldSpec,
11
+ fieldComponentRegistry: FieldComponentRegistry,
12
+ alternativeComponents: FieldComponentRegistry
13
+ ): CalculatedField {
14
+ const calculatedField = { ...field };
15
+ if (children) {
16
+ calculatedField.component = children;
17
+ calculatedField.controlled = true;
18
+ } else if (typeof field.component === 'function') {
19
+ // leave as is
20
+ } else if (!field.component && !field.type) {
21
+ calculatedField.component = fieldComponentRegistry.string.component;
22
+ calculatedField.controlled =
23
+ fieldComponentRegistry.string?.controlled || false;
24
+ } else if (
25
+ typeof field?.extra?.component === 'string' &&
26
+ alternativeComponents[field.extra.component]
27
+ ) {
28
+ calculatedField.controlled =
29
+ alternativeComponents[field.extra.component]?.controlled || false;
30
+ calculatedField.component =
31
+ alternativeComponents[field.extra.component].component;
32
+ calculatedField.wrapper =
33
+ alternativeComponents[field.extra.component].wrapper;
34
+ } else if (
35
+ !field.component &&
36
+ field.type &&
37
+ fieldComponentRegistry[field.type]
38
+ ) {
39
+ calculatedField.component = fieldComponentRegistry[field.type].component;
40
+ calculatedField.wrapper = fieldComponentRegistry[field.type].wrapper;
41
+ calculatedField.controlled =
42
+ fieldComponentRegistry[field.type]?.controlled || false;
43
+ } else {
44
+ calculatedField.component = fieldComponentRegistry.string.component;
45
+ calculatedField.controlled =
46
+ fieldComponentRegistry.string?.controlled || false;
47
+ }
48
+ return calculatedField as CalculatedField;
49
+ }
@@ -0,0 +1,30 @@
1
+ import { FieldWithCondition, CalculatedField } from '@digigov/form/Field/types';
2
+
3
+ export function evaluateFieldWithConditions(
4
+ field: FieldWithCondition,
5
+ variables: FormData
6
+ ): CalculatedField {
7
+ const newField = { ...field };
8
+ if (variables) {
9
+ for (const key in variables) {
10
+ if (field.condition[key] && field.condition[key].is) {
11
+ const is = field.condition[key].is;
12
+ if (
13
+ is === variables[key] ||
14
+ (Array.isArray(variables[key]) && variables[key].includes(is))
15
+ ) {
16
+ const then = field.condition[key].then || {};
17
+ for (const attr in then) {
18
+ newField[attr] = then[attr];
19
+ }
20
+ }
21
+ } else if (field.condition[key]) {
22
+ const otherwise = field.condition[key].else || {};
23
+ for (const attr in otherwise) {
24
+ newField[attr] = otherwise[attr];
25
+ }
26
+ }
27
+ }
28
+ }
29
+ return newField;
30
+ }
@@ -0,0 +1,84 @@
1
+ import { FieldComponentRegistry } from '@digigov/form/Field/types';
2
+ import AutoCompleteInput from '@digigov/form/inputs/AutoCompleteInput';
3
+ import Checkboxes from '@digigov/form/inputs/Checkboxes';
4
+ import DateInput from '@digigov/form/inputs/DateInput';
5
+ import DateTimeInput from '@digigov/form/inputs/DateTimeInput';
6
+ import FileInput from '@digigov/form/inputs/FileInput';
7
+ import ImageInput from '@digigov/form/inputs/ImageInput';
8
+ import Input from '@digigov/form/inputs/Input';
9
+ import OtpInput from '@digigov/form/inputs/OtpInput';
10
+ import Radio, { ControlledRadioButtonsGroup } from '@digigov/form/inputs/Radio';
11
+ import Select from '@digigov/form/inputs/Select';
12
+
13
+ export const FIELD_COMPONENTS: FieldComponentRegistry = {
14
+ text: {
15
+ component: Input,
16
+ },
17
+ string: {
18
+ component: Input,
19
+ },
20
+ file: {
21
+ wrapper: 'fieldset',
22
+ component: FileInput,
23
+ // controlled: true,
24
+ },
25
+ image: {
26
+ wrapper: 'fieldset',
27
+ component: ImageInput,
28
+ controlled: true,
29
+ },
30
+ date: {
31
+ wrapper: 'fieldset',
32
+ controlled: true,
33
+ component: DateInput,
34
+ },
35
+ datetime: {
36
+ wrapper: 'fieldset',
37
+ controlled: true,
38
+ component: DateTimeInput,
39
+ },
40
+ otp: {
41
+ wrapper: 'fieldset',
42
+ controlled: true,
43
+ component: OtpInput,
44
+ },
45
+ 'choice:multiple': {
46
+ wrapper: 'fieldset',
47
+ controlled: true,
48
+ component: Checkboxes,
49
+ },
50
+ 'choice:single': {
51
+ wrapper: 'fieldset',
52
+ controlled: false,
53
+ component: Radio,
54
+ },
55
+ };
56
+
57
+ export const ALTERNATIVE_COMPONENTS: FieldComponentRegistry = {
58
+ Select: {
59
+ component: Select,
60
+ controlled: false,
61
+ },
62
+ AutoComplete: {
63
+ component: AutoCompleteInput,
64
+ controlled: true,
65
+ wrapper: 'fieldset',
66
+ },
67
+ };
68
+
69
+ export const CONTROLLED_FIELD_COMPONENTS: FieldComponentRegistry = {
70
+ ...FIELD_COMPONENTS,
71
+ 'choice:single': {
72
+ wrapper: 'fieldset',
73
+ controlled: true,
74
+ component: ControlledRadioButtonsGroup,
75
+ },
76
+ text: {
77
+ component: Input,
78
+ controlled: true,
79
+ },
80
+ string: {
81
+ component: Input,
82
+ controlled: true,
83
+ },
84
+ };
@@ -0,0 +1,66 @@
1
+ import { useContext, useMemo } from 'react';
2
+ import { FieldSpec, UseFieldProps } from '@digigov/form/Field/types';
3
+ import { FormContext } from '@digigov/form/FormContext';
4
+
5
+ export const useField = (
6
+ name: string,
7
+ customField: FieldSpec | null
8
+ ): UseFieldProps => {
9
+ const {
10
+ fieldsMap,
11
+ control,
12
+ register,
13
+ reset,
14
+ resetField,
15
+ trigger,
16
+ clearErrors,
17
+ errors,
18
+ registerField,
19
+ watch,
20
+ componentRegistry,
21
+ getFieldState,
22
+ setValue,
23
+ getValues,
24
+ unregister,
25
+ formState,
26
+ } = useContext(FormContext);
27
+ if (!registerField) {
28
+ throw new Error(`
29
+ You can't use the Field component without wrapping it in FormBuilder.
30
+ https://devs.pages.grnet.gr/digigov/digigov-sdk/sdk-docs/forms/create-simple-form/
31
+ `);
32
+ }
33
+ let error = errors[name];
34
+
35
+ const nameIndexRegex = name.match(/^\[*(.*?)\.(\d+)\]*$/);
36
+ if (nameIndexRegex) {
37
+ const [, fieldArrayName, indexStr] = nameIndexRegex;
38
+ error = errors[fieldArrayName]?.[Number(indexStr)];
39
+ }
40
+ const nestedNameIndexRegex = name.match(/^\[*(.*?)\.(\d+)\.(.*?)\]*$/);
41
+ if (nestedNameIndexRegex) {
42
+ const [, fieldArrayName, indexStr, fieldItemName] = nestedNameIndexRegex;
43
+ error = errors[fieldArrayName]?.[Number(indexStr)]?.[fieldItemName];
44
+ }
45
+ useMemo(
46
+ () => customField?.type && registerField({ ...customField, key: name }),
47
+ [customField, name, registerField]
48
+ );
49
+ return {
50
+ field: customField || fieldsMap[name],
51
+ control,
52
+ register,
53
+ reset,
54
+ resetField,
55
+ trigger,
56
+ watch,
57
+ componentRegistry,
58
+ getFieldState,
59
+ setValue,
60
+ clearErrors,
61
+ getValues,
62
+ unregister,
63
+ formState,
64
+ error,
65
+ };
66
+ };