@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
@@ -2,7 +2,7 @@ import React, { useContext, useEffect } from 'react';
2
2
  import { Controller } from 'react-hook-form';
3
3
  import { ErrorGroupContext } from '@digigov/form/Field/ErrorGroup';
4
4
  import FieldBaseContainer from '@digigov/form/Field/FieldBaseContainer';
5
- import { FieldBaseProps } from '@digigov/form/Field/types';
5
+ import type { FieldBaseProps } from '@digigov/form/Field/types';
6
6
 
7
7
  export const FieldBase: React.FC<FieldBaseProps> = ({
8
8
  required,
@@ -39,10 +39,12 @@ export const FieldBase: React.FC<FieldBaseProps> = ({
39
39
  <FieldBaseContainer
40
40
  label={label}
41
41
  layout={layout}
42
+ register={register}
42
43
  error={errorGroupContext ? undefined : error}
43
44
  hasError={!!error}
44
45
  wrapper={wrapper}
45
46
  name={name}
47
+ controlled={controlled}
46
48
  >
47
49
  <Controller
48
50
  control={control}
@@ -52,8 +54,7 @@ export const FieldBase: React.FC<FieldBaseProps> = ({
52
54
  <Component
53
55
  {...field}
54
56
  control={control}
55
- ref={undefined}
56
- defaultValue={defaultValue}
57
+ defaultValue={defaultValue ?? field.value}
57
58
  extra={extra}
58
59
  error={!!error}
59
60
  type={type}
@@ -74,6 +75,7 @@ export const FieldBase: React.FC<FieldBaseProps> = ({
74
75
  <FieldBaseContainer
75
76
  label={label}
76
77
  layout={layout}
78
+ register={register}
77
79
  error={errorGroupContext ? undefined : error}
78
80
  hasError={!!error}
79
81
  wrapper={wrapper}
@@ -90,6 +92,7 @@ export const FieldBase: React.FC<FieldBaseProps> = ({
90
92
  aria-describedby={error && `${name}-error`}
91
93
  required={required}
92
94
  disabled={editable === false}
95
+ defaultValue={defaultValue}
93
96
  {...componentProps}
94
97
  />
95
98
  ) : (
@@ -100,11 +103,11 @@ export const FieldBase: React.FC<FieldBaseProps> = ({
100
103
  error={!!error}
101
104
  extra={extra}
102
105
  type={type}
106
+ defaultValue={defaultValue}
103
107
  aria-required={!!required}
104
108
  aria-describedby={error && `${name}-error`}
105
109
  required={required}
106
110
  disabled={editable === false}
107
- ref={undefined}
108
111
  {...componentProps}
109
112
  />
110
113
  )}
@@ -1,60 +1,81 @@
1
+ import type { ComponentRef } from 'react';
1
2
  import React from 'react';
2
- import { FieldContainerProps } from '@digigov/form/Field/types';
3
+ import type { FieldContainerProps } from '@digigov/form/Field/types';
3
4
  import Label from '@digigov/form/inputs/Label';
4
5
  import { ErrorMessage } from '@digigov/react-core/ErrorMessage';
5
6
  import FieldContainer from '@digigov/react-core/FieldContainer';
6
- import CoreFieldset from '@digigov/react-core/Fieldset';
7
+ import Fieldset from '@digigov/react-core/Fieldset';
7
8
  import FieldsetLegend from '@digigov/react-core/FieldsetLegend';
8
9
  import LabelContainer from '@digigov/react-core/LabelContainer';
9
10
  import { useTranslation } from '@digigov/ui/i18n';
10
11
  import { Hint } from '@digigov/ui/typography/Hint';
11
12
 
12
- export const FieldBaseContainer: React.FC<FieldContainerProps> = ({
13
- name,
14
- wrapper,
15
- label,
16
- children,
17
- error,
18
- hasError,
19
- layout,
20
- }) => {
21
- const { t } = useTranslation();
22
- const errorMessage = error?.message.key
23
- ? error.message.key
24
- : error?.message || '';
25
- const errorContext = error?.message.context || {};
26
- if (wrapper === 'fieldset') {
27
- return (
28
- <FieldContainer error={hasError} {...layout}>
29
- <CoreFieldset>
30
- <FieldsetLegend size="sm">{label && label.primary}</FieldsetLegend>
31
- {label && label.secondary && <Hint>{t(label.secondary)}</Hint>}
32
- {error && (
33
- <ErrorMessage id={`${name}-error`}>
34
- {t(errorMessage, errorContext)}
35
- </ErrorMessage>
36
- )}
37
- {children}
38
- {label && label.hint && <Hint size="sm">{label.hint}</Hint>}
39
- </CoreFieldset>
40
- </FieldContainer>
41
- );
42
- } else {
43
- return (
44
- <FieldContainer error={hasError} {...layout}>
45
- <LabelContainer>
46
- {label && <Label label={label} />}
47
- {error && (
48
- <ErrorMessage id={`${name}-error`}>
49
- {t(errorMessage, errorContext)}
50
- </ErrorMessage>
51
- )}
52
- {children}
53
- {label && label.hint && <Hint size="sm">{label.hint}</Hint>}
54
- </LabelContainer>
55
- </FieldContainer>
56
- );
13
+ export const FieldBaseContainer = React.forwardRef<
14
+ ComponentRef<typeof Fieldset>,
15
+ FieldContainerProps
16
+ >(
17
+ (
18
+ {
19
+ name,
20
+ wrapper,
21
+ label,
22
+ children,
23
+ error,
24
+ hasError,
25
+ layout,
26
+ controlled,
27
+ labelSize = 'sm',
28
+ },
29
+ ref
30
+ ) => {
31
+ const { t } = useTranslation();
32
+ const errorMessage = error?.message.key
33
+ ? error.message.key
34
+ : error?.message || '';
35
+ const errorContext = error?.message.context || {};
36
+ if (wrapper === 'fieldset') {
37
+ return (
38
+ <FieldContainer error={hasError} {...layout}>
39
+ <Fieldset
40
+ ref={ref}
41
+ className="outline-none"
42
+ {...(controlled && {
43
+ tabIndex: -1,
44
+ })}
45
+ >
46
+ <FieldsetLegend size={labelSize}>
47
+ {label && label.primary}
48
+ </FieldsetLegend>
49
+ {label && label.secondary && <Hint>{t(label.secondary)}</Hint>}
50
+ {error && (
51
+ <ErrorMessage id={`${name}-error`}>
52
+ {t(errorMessage, errorContext)}
53
+ </ErrorMessage>
54
+ )}
55
+ {children}
56
+ {label && label.hint && <Hint size="sm">{label.hint}</Hint>}
57
+ </Fieldset>
58
+ </FieldContainer>
59
+ );
60
+ } else {
61
+ return (
62
+ <FieldContainer error={hasError} {...layout}>
63
+ <LabelContainer>
64
+ {label && <Label label={label} />}
65
+ {error && (
66
+ <ErrorMessage id={`${name}-error`}>
67
+ {t(errorMessage, errorContext)}
68
+ </ErrorMessage>
69
+ )}
70
+ {children}
71
+ {label && label.hint && <Hint size="sm">{label.hint}</Hint>}
72
+ </LabelContainer>
73
+ </FieldContainer>
74
+ );
75
+ }
57
76
  }
58
- };
77
+ );
78
+
79
+ FieldBaseContainer.displayName = 'FieldBaseContainer';
59
80
 
60
81
  export default FieldBaseContainer;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { useWatch } from 'react-hook-form';
3
3
  import { FieldBase } from '@digigov/form/Field/FieldBase';
4
- import {
4
+ import type {
5
5
  ChildFieldMemoProps,
6
6
  FieldConditionalProps,
7
7
  } from '@digigov/form/Field/types';
@@ -13,6 +13,7 @@ const ChildFieldMemo = React.memo(
13
13
  field,
14
14
  control,
15
15
  reset,
16
+ resetField,
16
17
  register,
17
18
  error,
18
19
  Field,
@@ -27,6 +28,7 @@ const ChildFieldMemo = React.memo(
27
28
  Field={Field}
28
29
  name={newField.key}
29
30
  reset={reset}
31
+ resetField={resetField}
30
32
  control={control}
31
33
  register={register}
32
34
  error={error}
@@ -54,6 +56,7 @@ export const FieldConditional: React.FC<FieldConditionalProps> = ({
54
56
  field,
55
57
  register,
56
58
  reset,
59
+ resetField,
57
60
  error,
58
61
  Field,
59
62
  }) => {
@@ -76,6 +79,7 @@ export const FieldConditional: React.FC<FieldConditionalProps> = ({
76
79
  control={control}
77
80
  register={register}
78
81
  reset={reset}
82
+ resetField={resetField}
79
83
  error={error}
80
84
  Field={Field}
81
85
  />
@@ -1,22 +1,13 @@
1
1
  import React, { useMemo } from 'react';
2
2
  import { FieldBase } from '@digigov/form/Field/FieldBase';
3
3
  import FieldConditional from '@digigov/form/Field/FieldConditional';
4
- import {
5
- FieldWithCondition,
6
- CalculatedField,
7
- FieldProps,
8
- } from '@digigov/form/Field/types';
9
- import {
10
- FIELD_COMPONENTS,
11
- ALTERNATIVE_COMPONENTS,
12
- } from '@digigov/form/Field/utils';
13
- import { calculateField } from '@digigov/form/Field/utils/calculateField';
4
+ import type { FieldWithCondition, FieldProps } from '@digigov/form/Field/types';
5
+ import { resolveField } from '@digigov/form/Field/utils/resolveField';
14
6
  import { useField } from '@digigov/form/Field/utils/useField';
15
7
  import FieldArray from '@digigov/form/FieldArray';
16
8
  import Multiplicity from '@digigov/form/MultiplicityField';
17
9
  export const Field: React.FC<FieldProps> = ({
18
10
  name,
19
- disabled,
20
11
  children,
21
12
  ...customField
22
13
  }) => {
@@ -25,6 +16,7 @@ export const Field: React.FC<FieldProps> = ({
25
16
  control,
26
17
  register,
27
18
  reset,
19
+ resetField,
28
20
  error,
29
21
  componentRegistry,
30
22
  formState,
@@ -33,56 +25,49 @@ export const Field: React.FC<FieldProps> = ({
33
25
  unregister,
34
26
  trigger,
35
27
  clearErrors,
28
+ registerFieldFocus,
36
29
  } = useField(name, customField?.type ? customField : null);
37
- const calculatedField: CalculatedField = useMemo(
38
- () =>
39
- calculateField(
40
- children,
41
- field,
42
- {
43
- ...FIELD_COMPONENTS,
44
- ...componentRegistry,
45
- },
46
- ALTERNATIVE_COMPONENTS
47
- ),
30
+ const resolvedField = useMemo(
31
+ () => resolveField(children, field, componentRegistry),
48
32
  [field]
49
33
  );
50
-
51
- if (calculatedField.condition) {
34
+ if (resolvedField.condition) {
52
35
  return (
53
36
  <FieldConditional
54
37
  control={control}
55
38
  reset={reset}
39
+ resetField={resetField}
56
40
  register={register}
57
- field={calculatedField as FieldWithCondition}
41
+ field={resolvedField as FieldWithCondition}
58
42
  error={error}
59
43
  Field={Field}
60
44
  />
61
45
  );
62
46
  }
63
- if (calculatedField.type === 'array' && !calculatedField.multiplicity) {
64
- calculatedField.name = name;
47
+ if (resolvedField.type === 'array' && !resolvedField.multiplicity) {
48
+ resolvedField.name = name;
65
49
  return (
66
50
  <FieldArray
67
51
  control={control}
68
52
  trigger={trigger}
69
53
  register={register}
70
54
  clearErrors={clearErrors}
71
- error={error}
55
+ error={
56
+ formState.isSubmitted && !formState.isSubmitting ? error : undefined
57
+ }
72
58
  getValues={getValues}
73
59
  setValue={setValue}
74
60
  formState={formState}
75
61
  Field={Field}
76
62
  reset={reset}
77
- {...calculatedField}
63
+ resetField={resetField}
64
+ registerFieldFocus={registerFieldFocus}
65
+ {...resolvedField}
78
66
  />
79
67
  );
80
68
  }
81
- if (
82
- calculatedField.type === 'array' &&
83
- calculatedField.multiplicity === true
84
- ) {
85
- calculatedField.name = name;
69
+ if (resolvedField.type === 'array' && resolvedField.multiplicity === true) {
70
+ resolvedField.name = name;
86
71
  return (
87
72
  <Multiplicity
88
73
  control={control}
@@ -94,20 +79,27 @@ export const Field: React.FC<FieldProps> = ({
94
79
  setValue={setValue}
95
80
  getValues={getValues}
96
81
  unregister={unregister}
82
+ resetField={resetField}
97
83
  Field={Field}
98
- {...calculatedField}
84
+ {...resolvedField}
99
85
  />
100
86
  );
101
87
  }
88
+ const editable =
89
+ customField.editable === false || customField.disabled === true
90
+ ? false
91
+ : true;
92
+ const customError = error ? error : formState?.errors[name];
102
93
  return (
103
94
  <FieldBase
104
- {...calculatedField}
95
+ {...resolvedField}
96
+ editable={editable}
105
97
  name={name}
106
- disabled={disabled}
107
98
  control={control}
108
99
  register={register}
109
100
  reset={reset}
110
- error={error}
101
+ error={customError}
102
+ resetField={resetField}
111
103
  Field={Field}
112
104
  />
113
105
  );
@@ -1,7 +1,10 @@
1
- import React from 'react';
2
- import { ErrorOption, UseFormReturn, UseFormProps } from 'react-hook-form';
3
- import { ValidatorSchema } from '@digigov/form/validators/types';
4
- import { GridProps } from '@digigov/ui/layouts/Grid';
1
+ import type React from 'react';
2
+ import type { ErrorOption, UseFormReturn, UseFormProps } from 'react-hook-form';
3
+ import type { FieldComponentRegistry } from '@digigov/form/inputs/registry';
4
+ import type { registerFieldFocus } from '@digigov/form/types';
5
+ import type { ValidatorSchema } from '@digigov/form/validators/types';
6
+ import type { FieldsetLegendProps } from '@digigov/ui/form/FieldContainer';
7
+ import type { GridProps } from '@digigov/ui/layouts/Grid';
5
8
 
6
9
  export interface FieldLabelProps {
7
10
  primary?: string;
@@ -25,6 +28,7 @@ export interface FieldSpec {
25
28
  | 'datetime'
26
29
  | 'otp'
27
30
  | 'afm'
31
+ | 'amka'
28
32
  | 'iban'
29
33
  | 'file'
30
34
  | 'image'
@@ -45,7 +49,7 @@ export interface FieldSpec {
45
49
  variant?: 'inline' | 'dialog';
46
50
  required?: boolean;
47
51
  enabled?: boolean;
48
- disabled?: boolean;
52
+ disabled?: boolean; // TODO: keep disabled or editable
49
53
  layout?: Record<
50
54
  string,
51
55
  | GridProps['xs']
@@ -71,7 +75,7 @@ export interface ChildFieldMemoProps extends FieldConditionalProps {
71
75
  }
72
76
  export type FormData = UseFormProps['defaultValues'];
73
77
 
74
- export interface FieldWithCondition extends Omit<CalculatedField, 'condition'> {
78
+ export interface FieldWithCondition extends Omit<ResolvedField, 'condition'> {
75
79
  condition: Record<string, FieldCondition>;
76
80
  }
77
81
 
@@ -80,6 +84,7 @@ export interface FieldConditionalProps {
80
84
  control: UseFormReturn['control'];
81
85
  register: UseFormReturn['register'];
82
86
  reset: UseFormReturn['reset'];
87
+ resetField?: UseFormReturn['resetField'];
83
88
  error?: ErrorOption;
84
89
  Field: React.FC<FieldProps>;
85
90
  }
@@ -93,18 +98,17 @@ export interface FieldComponentItem {
93
98
 
94
99
  export interface FieldContainerProps {
95
100
  name?: FieldSpec['key'];
101
+ register: FieldBaseProps['register'];
96
102
  layout?: FieldSpec['layout'];
97
103
  label?: FieldSpec['label'];
98
104
  error?: ErrorOption | Record<string, any>;
99
105
  hasError?: boolean;
100
106
  children?: React.ReactNode;
107
+ controlled?: boolean;
101
108
  wrapper?: FieldSpec['wrapper'];
109
+ labelSize?: FieldsetLegendProps['size'];
102
110
  }
103
111
 
104
- export type FieldComponentRegistry = Record<string, FieldComponentItem>;
105
-
106
- export type OmittedFieldSpec = Omit<FieldSpec, 'component'>;
107
-
108
112
  export type UnknownValue = never | never[];
109
113
 
110
114
  export interface ControlledFieldProps {
@@ -117,7 +121,7 @@ export interface ControlledFieldProps {
117
121
  error?: boolean;
118
122
  name?: string;
119
123
  disabled?: boolean;
120
- Field: React.FC<FieldProps>;
124
+ Field?: React.FC<FieldProps>;
121
125
  }
122
126
 
123
127
  export interface UncontrolledFieldProps {
@@ -131,7 +135,7 @@ export interface UncontrolledFieldProps {
131
135
  Field: React.FC<FieldProps>;
132
136
  }
133
137
 
134
- export interface CalculatedField extends OmittedFieldSpec {
138
+ export interface ResolvedField extends Omit<FieldSpec, 'component'> {
135
139
  name: string;
136
140
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
137
141
  component: any;
@@ -141,11 +145,12 @@ export interface CalculatedField extends OmittedFieldSpec {
141
145
  multiplicity?: boolean;
142
146
  }
143
147
 
144
- export interface FieldBaseProps extends CalculatedField {
148
+ export interface FieldBaseProps extends ResolvedField {
145
149
  control: UseFormReturn['control'];
146
150
  register: UseFormReturn['register'];
147
151
  reset: UseFormReturn['reset'];
148
- Field: React.FC<FieldProps>;
152
+ resetField?: UseFormReturn['resetField'];
153
+ Field?: React.FC<FieldProps>;
149
154
  }
150
155
 
151
156
  export interface FieldProps extends FieldSpec {
@@ -158,6 +163,7 @@ export interface UseFieldProps {
158
163
  control: FieldBaseProps['control'];
159
164
  register: FieldBaseProps['register'];
160
165
  reset: FieldBaseProps['reset'];
166
+ resetField: FieldBaseProps['resetField'];
161
167
  watch: UseFormReturn['watch'];
162
168
  formState: UseFormReturn['formState'];
163
169
  getFieldState: UseFormReturn['getFieldState'];
@@ -167,5 +173,6 @@ export interface UseFieldProps {
167
173
  trigger: UseFormReturn['trigger'];
168
174
  clearErrors: UseFormReturn['clearErrors'];
169
175
  error?: ErrorOption;
176
+ registerFieldFocus: registerFieldFocus;
170
177
  componentRegistry?: FieldComponentRegistry;
171
178
  }
@@ -1,9 +1,12 @@
1
- import { FieldWithCondition, CalculatedField } from '@digigov/form/Field/types';
1
+ import type {
2
+ FieldWithCondition,
3
+ ResolvedField,
4
+ } from '@digigov/form/Field/types';
2
5
 
3
6
  export function evaluateFieldWithConditions(
4
7
  field: FieldWithCondition,
5
8
  variables: FormData
6
- ): CalculatedField {
9
+ ): ResolvedField {
7
10
  const newField = { ...field };
8
11
  if (variables) {
9
12
  for (const key in variables) {
@@ -0,0 +1,58 @@
1
+ import type {
2
+ FieldProps,
3
+ FieldSpec,
4
+ ResolvedField,
5
+ } from '@digigov/form/Field/types';
6
+ import {
7
+ ALTERNATIVE_COMPONENTS,
8
+ FIELD_COMPONENTS,
9
+ type FieldComponentRegistry,
10
+ } from '@digigov/form/inputs/registry';
11
+
12
+ export function resolveField(
13
+ children: FieldProps['children'],
14
+ field: FieldSpec,
15
+ customComponentRegistry?: FieldComponentRegistry
16
+ ): ResolvedField {
17
+ const fieldComponentRegistry = {
18
+ ...FIELD_COMPONENTS,
19
+ ...(customComponentRegistry ?? {}),
20
+ };
21
+
22
+ const resolvedField = { ...field };
23
+
24
+ if (children) {
25
+ resolvedField.component = children;
26
+ resolvedField.controlled = true;
27
+ } else if (typeof field.component === 'function') {
28
+ // leave as is
29
+ } else if (!field.component && !field.type) {
30
+ resolvedField.component = fieldComponentRegistry.string.component;
31
+ resolvedField.controlled =
32
+ fieldComponentRegistry.string?.controlled || false;
33
+ } else if (
34
+ typeof field?.extra?.component === 'string' &&
35
+ ALTERNATIVE_COMPONENTS[field.extra.component]
36
+ ) {
37
+ resolvedField.controlled =
38
+ ALTERNATIVE_COMPONENTS[field.extra.component]?.controlled || false;
39
+ resolvedField.component =
40
+ ALTERNATIVE_COMPONENTS[field.extra.component].component;
41
+ resolvedField.wrapper =
42
+ ALTERNATIVE_COMPONENTS[field.extra.component].wrapper;
43
+ } else if (
44
+ !field.component &&
45
+ field.type &&
46
+ fieldComponentRegistry[field.type]
47
+ ) {
48
+ resolvedField.component = fieldComponentRegistry[field.type].component;
49
+ resolvedField.wrapper = fieldComponentRegistry[field.type].wrapper;
50
+ resolvedField.controlled =
51
+ fieldComponentRegistry[field.type]?.controlled || false;
52
+ } else {
53
+ resolvedField.component = fieldComponentRegistry.string.component;
54
+ resolvedField.controlled =
55
+ fieldComponentRegistry.string?.controlled || false;
56
+ }
57
+ return resolvedField as ResolvedField;
58
+ }
@@ -1,5 +1,5 @@
1
1
  import { useContext, useMemo } from 'react';
2
- import { FieldSpec, UseFieldProps } from '@digigov/form/Field/types';
2
+ import type { FieldSpec, UseFieldProps } from '@digigov/form/Field/types';
3
3
  import { FormContext } from '@digigov/form/FormContext';
4
4
 
5
5
  export const useField = (
@@ -11,6 +11,7 @@ export const useField = (
11
11
  control,
12
12
  register,
13
13
  reset,
14
+ resetField,
14
15
  trigger,
15
16
  clearErrors,
16
17
  errors,
@@ -22,6 +23,7 @@ export const useField = (
22
23
  getValues,
23
24
  unregister,
24
25
  formState,
26
+ registerFieldFocus,
25
27
  } = useContext(FormContext);
26
28
  if (!registerField) {
27
29
  throw new Error(`
@@ -30,11 +32,17 @@ export const useField = (
30
32
  `);
31
33
  }
32
34
  let error = errors[name];
33
- const nameIndexRegex = name.match(/^(.*?)\.(\d+)$/);
35
+
36
+ const nameIndexRegex = name.match(/^\[*(.*?)\.(\d+)\]*$/);
34
37
  if (nameIndexRegex) {
35
38
  const [, fieldArrayName, indexStr] = nameIndexRegex;
36
39
  error = errors[fieldArrayName]?.[Number(indexStr)];
37
40
  }
41
+ const nestedNameIndexRegex = name.match(/^\[*(.*?)\.(\d+)\.(.*?)\]*$/);
42
+ if (nestedNameIndexRegex) {
43
+ const [, fieldArrayName, indexStr, fieldItemName] = nestedNameIndexRegex;
44
+ error = errors[fieldArrayName]?.[Number(indexStr)]?.[fieldItemName];
45
+ }
38
46
  useMemo(
39
47
  () => customField?.type && registerField({ ...customField, key: name }),
40
48
  [customField, name, registerField]
@@ -44,6 +52,7 @@ export const useField = (
44
52
  control,
45
53
  register,
46
54
  reset,
55
+ resetField,
47
56
  trigger,
48
57
  watch,
49
58
  componentRegistry,
@@ -54,5 +63,6 @@ export const useField = (
54
63
  unregister,
55
64
  formState,
56
65
  error,
66
+ registerFieldFocus,
57
67
  };
58
68
  };