@digigov/form 2.0.0-d0adc9fb → 2.0.0-d2ffc726

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (625) hide show
  1. package/Field/ErrorGroup/index.js +48 -0
  2. package/{inputs/inputsScenarios → 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 +37 -26
  6. package/Field/FieldBase.d.ts +1 -1
  7. package/Field/FieldBase.js.map +2 -2
  8. package/Field/FieldBaseContainer/index.js +37 -17
  9. package/Field/FieldBaseContainer.d.ts +2 -2
  10. package/Field/FieldBaseContainer.js.map +2 -2
  11. package/Field/FieldConditional/index.js +4 -0
  12. package/Field/FieldConditional.d.ts +1 -1
  13. package/Field/FieldConditional.js.map +2 -2
  14. package/Field/index.d.ts +1 -1
  15. package/Field/index.js +24 -28
  16. package/Field/index.js.map +2 -2
  17. package/Field/types.d.ts +23 -12
  18. package/Field/utils/evaluateFieldWithConditions.d.ts +2 -2
  19. package/Field/utils/evaluateFieldWithConditions.js.map +2 -2
  20. package/Field/utils/resolveField/index.js +35 -0
  21. package/Field/utils/{calculateField → resolveField}/package.json +1 -1
  22. package/Field/utils/resolveField.d.ts +3 -0
  23. package/Field/utils/resolveField.js.map +7 -0
  24. package/Field/utils/useField/index.js +12 -3
  25. package/Field/utils/useField.d.ts +1 -1
  26. package/Field/utils/useField.js.map +2 -2
  27. package/FieldArray/BaseFieldArray/index.js +76 -0
  28. package/FieldArray/BaseFieldArray/package.json +6 -0
  29. package/FieldArray/BaseFieldArray.d.ts +5 -0
  30. package/FieldArray/BaseFieldArray.js.map +7 -0
  31. package/FieldArray/FieldArray.stories.d.ts +2 -0
  32. package/FieldArray/FormDialog/ArrayDisplay/ArrayContainerDisplay/index.js +23 -0
  33. package/FieldArray/FormDialog/ArrayDisplay/ArrayContainerDisplay/package.json +6 -0
  34. package/FieldArray/FormDialog/ArrayDisplay/ArrayContainerDisplay.d.ts +9 -0
  35. package/FieldArray/FormDialog/ArrayDisplay/ArrayContainerDisplay.js.map +7 -0
  36. package/FieldArray/FormDialog/ArrayDisplay/ArrayDisplay.stories.d.ts +13 -0
  37. package/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay/index.js +184 -0
  38. package/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay/package.json +6 -0
  39. package/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay.d.ts +26 -0
  40. package/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay.js.map +7 -0
  41. package/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader/index.js +11 -0
  42. package/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader/package.json +6 -0
  43. package/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader.d.ts +5 -0
  44. package/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader.js.map +7 -0
  45. package/FieldArray/FormDialog/ArrayDisplay/__stories__/Cards.d.ts +2 -0
  46. package/FieldArray/FormDialog/ArrayDisplay/__stories__/Default.d.ts +2 -0
  47. package/FieldArray/FormDialog/ArrayDisplay/__stories__/ReadOnly.d.ts +2 -0
  48. package/FieldArray/FormDialog/ArrayDisplay/__stories__/ReadOnlyCards.d.ts +2 -0
  49. package/FieldArray/FormDialog/ArrayDisplay/__stories__/Sortable.d.ts +2 -0
  50. package/FieldArray/FormDialog/ArrayDisplay/__stories__/SortableCards.d.ts +2 -0
  51. package/FieldArray/FormDialog/ArrayDisplay/index.d.ts +15 -0
  52. package/FieldArray/FormDialog/ArrayDisplay/index.js +57 -0
  53. package/FieldArray/FormDialog/ArrayDisplay/index.js.map +7 -0
  54. package/{inputs/Input/inputsInputScenarios → FieldArray/FormDialog/ArrayDisplay}/package.json +1 -1
  55. package/FieldArray/FormDialog/ArrayEditModal/index.js +158 -0
  56. package/FieldArray/FormDialog/ArrayEditModal/package.json +6 -0
  57. package/FieldArray/FormDialog/ArrayEditModal.d.ts +26 -0
  58. package/FieldArray/FormDialog/ArrayEditModal.js.map +7 -0
  59. package/FieldArray/FormDialog/index.d.ts +19 -0
  60. package/FieldArray/FormDialog/index.js +213 -257
  61. package/FieldArray/FormDialog/index.js.map +7 -0
  62. package/FieldArray/__stories__/CardsWithError.d.ts +15 -0
  63. package/FieldArray/__stories__/Default.d.ts +1 -1
  64. package/FieldArray/__stories__/WithExactLength.d.ts +1 -1
  65. package/FieldArray/__stories__/WithModal.d.ts +2 -0
  66. package/FieldArray/index.d.ts +5 -2
  67. package/FieldArray/index.js +41 -57
  68. package/FieldArray/index.js.map +2 -2
  69. package/FieldObject/index.d.ts +7 -4
  70. package/FieldObject/index.js +30 -27
  71. package/FieldObject/index.js.map +2 -2
  72. package/Fieldset/FieldsetWithContext.js.map +1 -1
  73. package/Fieldset/index.d.ts +1 -1
  74. package/Fieldset/index.js.map +1 -1
  75. package/Fieldset/types.d.ts +2 -2
  76. package/FormBuilder/FormBuilder.stories.d.ts +4 -0
  77. package/FormBuilder/__stories__/AutoErrorGrouping.d.ts +3 -0
  78. package/FormBuilder/__stories__/Default.d.ts +1 -1
  79. package/FormBuilder/__stories__/ErrorGrouping.d.ts +3 -0
  80. package/FormBuilder/index.d.ts +2 -2
  81. package/FormBuilder/index.js +186 -80
  82. package/FormBuilder/index.js.map +2 -2
  83. package/FormContext/index.js +6 -2
  84. package/FormContext.d.ts +3 -2
  85. package/FormContext.js.map +2 -2
  86. package/MultiplicityField/MultiplicityField.stories.d.ts +2 -0
  87. package/MultiplicityField/__stories__/Default.d.ts +1 -1
  88. package/MultiplicityField/__stories__/PreviewDisplay.d.ts +1 -1
  89. package/MultiplicityField/__stories__/WithExactLength.d.ts +1 -1
  90. package/MultiplicityField/__stories__/WithMaxLength.d.ts +1 -1
  91. package/MultiplicityField/__stories__/WithMinAndMaxLength.d.ts +1 -1
  92. package/MultiplicityField/__stories__/WithMinLength.d.ts +1 -1
  93. package/MultiplicityField/add-objects/index.js +12 -19
  94. package/MultiplicityField/add-objects.d.ts +1 -1
  95. package/MultiplicityField/add-objects.js.map +2 -2
  96. package/MultiplicityField/index.d.ts +2 -2
  97. package/MultiplicityField/index.js +6 -2
  98. package/MultiplicityField/index.js.map +2 -2
  99. package/MultiplicityField/types.d.ts +3 -2
  100. package/Questions/Questions.d.ts +1 -1
  101. package/Questions/Questions.js.map +1 -1
  102. package/Questions/Questions.stories.d.ts +2 -0
  103. package/Questions/QuestionsContext.d.ts +1 -1
  104. package/Questions/QuestionsContext.js.map +1 -1
  105. package/Questions/Step/Step.d.ts +1 -1
  106. package/Questions/Step/Step.js.map +1 -1
  107. package/Questions/Step/StepArrayReview.d.ts +1 -1
  108. package/Questions/Step/StepArrayReview.js.map +1 -1
  109. package/Questions/Step/StepContext.d.ts +1 -1
  110. package/Questions/Step/StepContext.js.map +1 -1
  111. package/Questions/Step/StepDescription.d.ts +1 -1
  112. package/Questions/Step/StepDescription.js.map +2 -2
  113. package/Questions/Step/StepForm.d.ts +2 -2
  114. package/Questions/Step/StepForm.js.map +1 -1
  115. package/Questions/Step/StepQuote.d.ts +1 -1
  116. package/Questions/Step/StepQuote.js.map +2 -2
  117. package/Questions/Step/StepTitle.d.ts +1 -1
  118. package/Questions/Step/StepTitle.js.map +2 -2
  119. package/Questions/Step/getAddMoreFields.d.ts +2 -2
  120. package/Questions/Step/getAddMoreFields.js.map +1 -1
  121. package/Questions/Step/types.d.ts +1 -1
  122. package/Questions/__stories__/Default.d.ts +1 -1
  123. package/Questions/getNextStep.d.ts +1 -1
  124. package/Questions/getNextStep.js.map +1 -1
  125. package/Questions/types.d.ts +1 -1
  126. package/cjs/Field/ErrorGroup/index.js +82 -0
  127. package/cjs/Field/ErrorGroup.js.map +7 -0
  128. package/cjs/Field/FieldBase/index.js +36 -25
  129. package/cjs/Field/FieldBase.js.map +2 -2
  130. package/cjs/Field/FieldBaseContainer/index.js +36 -16
  131. package/cjs/Field/FieldBaseContainer.js.map +3 -3
  132. package/cjs/Field/FieldConditional/index.js +4 -0
  133. package/cjs/Field/FieldConditional.js.map +2 -2
  134. package/cjs/Field/index.js +24 -25
  135. package/cjs/Field/index.js.map +2 -2
  136. package/cjs/Field/types.js.map +1 -1
  137. package/cjs/Field/utils/evaluateFieldWithConditions.js.map +2 -2
  138. package/cjs/Field/utils/resolveField/index.js +55 -0
  139. package/cjs/Field/utils/resolveField.js.map +7 -0
  140. package/cjs/Field/utils/useField/index.js +12 -3
  141. package/cjs/Field/utils/useField.js.map +2 -2
  142. package/cjs/FieldArray/BaseFieldArray/index.js +109 -0
  143. package/cjs/FieldArray/BaseFieldArray.js.map +7 -0
  144. package/cjs/FieldArray/FormDialog/ArrayDisplay/ArrayContainerDisplay/index.js +56 -0
  145. package/cjs/FieldArray/FormDialog/ArrayDisplay/ArrayContainerDisplay.js.map +7 -0
  146. package/cjs/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay/index.js +209 -0
  147. package/cjs/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay.js.map +7 -0
  148. package/cjs/{locales/el → FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader}/index.js +16 -7
  149. package/cjs/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader.js.map +7 -0
  150. package/cjs/FieldArray/FormDialog/ArrayDisplay/index.js +90 -0
  151. package/cjs/FieldArray/FormDialog/ArrayDisplay/index.js.map +7 -0
  152. package/cjs/FieldArray/FormDialog/ArrayEditModal/index.js +186 -0
  153. package/cjs/FieldArray/FormDialog/ArrayEditModal.js.map +7 -0
  154. package/cjs/FieldArray/FormDialog/index.js +204 -243
  155. package/cjs/FieldArray/FormDialog/index.js.map +7 -0
  156. package/cjs/FieldArray/index.js +40 -56
  157. package/cjs/FieldArray/index.js.map +3 -3
  158. package/cjs/FieldObject/index.js +30 -24
  159. package/cjs/FieldObject/index.js.map +2 -2
  160. package/cjs/Fieldset/FieldsetWithContext.js.map +1 -1
  161. package/cjs/Fieldset/index.js.map +1 -1
  162. package/cjs/Fieldset/types.js.map +1 -1
  163. package/cjs/FormBuilder/index.js +188 -82
  164. package/cjs/FormBuilder/index.js.map +3 -3
  165. package/cjs/FormContext/index.js +7 -2
  166. package/cjs/FormContext.js.map +2 -2
  167. package/cjs/MultiplicityField/add-objects/index.js +11 -13
  168. package/cjs/MultiplicityField/add-objects.js.map +2 -2
  169. package/cjs/MultiplicityField/index.js +6 -2
  170. package/cjs/MultiplicityField/index.js.map +2 -2
  171. package/cjs/MultiplicityField/types.js.map +1 -1
  172. package/cjs/Questions/Questions.js.map +1 -1
  173. package/cjs/Questions/QuestionsContext.js.map +1 -1
  174. package/cjs/Questions/Step/Step.js.map +1 -1
  175. package/cjs/Questions/Step/StepArrayReview.js.map +1 -1
  176. package/cjs/Questions/Step/StepContext.js.map +1 -1
  177. package/cjs/Questions/Step/StepDescription.js.map +2 -2
  178. package/cjs/Questions/Step/StepForm.js.map +1 -1
  179. package/cjs/Questions/Step/StepQuote.js.map +2 -2
  180. package/cjs/Questions/Step/StepTitle.js.map +2 -2
  181. package/cjs/Questions/Step/getAddMoreFields.js.map +1 -1
  182. package/cjs/Questions/Step/types.js.map +1 -1
  183. package/cjs/Questions/getNextStep.js.map +1 -1
  184. package/cjs/Questions/types.js.map +1 -1
  185. package/cjs/hooks/useFieldFocusManager/index.js +135 -0
  186. package/cjs/hooks/useFieldFocusManager.js.map +7 -0
  187. package/cjs/hooks/utils/index.js +98 -0
  188. package/cjs/hooks/utils.js.map +7 -0
  189. package/cjs/inputs/AutoCompleteInput/index.js.map +2 -2
  190. package/cjs/inputs/Checkboxes/index.js +67 -62
  191. package/cjs/inputs/Checkboxes/index.js.map +2 -2
  192. package/cjs/inputs/DateInput/index.js +54 -19
  193. package/cjs/inputs/DateInput/index.js.map +2 -2
  194. package/cjs/inputs/DateTimeInput/index.js +83 -39
  195. package/cjs/inputs/DateTimeInput/index.js.map +2 -2
  196. package/cjs/inputs/FileInput/index.js +68 -30
  197. package/cjs/inputs/FileInput/index.js.map +2 -2
  198. package/cjs/inputs/ImageInput/__stories__/logo.d/index.js +1 -0
  199. package/cjs/inputs/ImageInput/__stories__/logo.d.js.map +7 -0
  200. package/cjs/inputs/ImageInput/index.js +42 -10
  201. package/cjs/inputs/ImageInput/index.js.map +2 -2
  202. package/cjs/inputs/Input/index.js +55 -55
  203. package/cjs/inputs/Input/index.js.map +2 -2
  204. package/cjs/inputs/Label/index.js.map +1 -1
  205. package/cjs/inputs/OtpInput/index.js +36 -30
  206. package/cjs/inputs/OtpInput/index.js.map +2 -2
  207. package/cjs/inputs/Radio/index.js +5 -4
  208. package/cjs/inputs/Radio/index.js.map +3 -3
  209. package/cjs/inputs/Select/index.js +5 -3
  210. package/cjs/inputs/Select/index.js.map +2 -2
  211. package/cjs/{Field/utils → inputs/registry}/index.js +7 -5
  212. package/cjs/inputs/registry.js.map +7 -0
  213. package/cjs/lazy/index.js +16 -10
  214. package/cjs/lazy.js.map +2 -2
  215. package/cjs/registry/index.js +31 -15
  216. package/cjs/registry.js.map +2 -2
  217. package/cjs/types.js.map +1 -1
  218. package/cjs/utils/index.js +20 -6
  219. package/cjs/utils.js.map +2 -2
  220. package/cjs/validators/index.js +33 -19
  221. package/cjs/validators/index.js.map +2 -2
  222. package/cjs/validators/types.js.map +1 -1
  223. package/cjs/validators/utils/amka/index.js +60 -0
  224. package/cjs/validators/utils/amka.js.map +7 -0
  225. package/cjs/validators/utils/date/index.js +26 -3
  226. package/cjs/validators/utils/date.js.map +2 -2
  227. package/cjs/validators/utils/datetime/index.js +118 -24
  228. package/cjs/validators/utils/datetime.js.map +2 -2
  229. package/cjs/validators/utils/email/index.js +39 -0
  230. package/cjs/validators/utils/email.js.map +7 -0
  231. package/cjs/validators/utils/file/index.js +30 -17
  232. package/cjs/validators/utils/file.js.map +2 -2
  233. package/cjs/validators/utils/iban.js.map +1 -1
  234. package/cjs/validators/utils/image.js.map +1 -1
  235. package/cjs/validators/utils/index.js +5 -1
  236. package/cjs/validators/utils/index.js.map +2 -2
  237. package/cjs/validators/utils/int/index.js +1 -1
  238. package/cjs/validators/utils/int.js.map +2 -2
  239. package/cjs/validators/utils/number/index.js +1 -1
  240. package/cjs/validators/utils/number.js.map +2 -2
  241. package/cjs/validators/utils/otp.js.map +1 -1
  242. package/cjs/validators/utils/phone.js.map +1 -1
  243. package/cjs/validators/utils/postal_code.js.map +1 -1
  244. package/cjs/validators/utils/text_limit.js.map +1 -1
  245. package/hooks/useFieldFocusManager/index.js +116 -0
  246. package/hooks/useFieldFocusManager/package.json +6 -0
  247. package/hooks/useFieldFocusManager.d.ts +25 -0
  248. package/hooks/useFieldFocusManager.js.map +7 -0
  249. package/hooks/utils/index.js +73 -0
  250. package/{Field → hooks}/utils/package.json +1 -1
  251. package/hooks/utils.d.ts +18 -0
  252. package/hooks/utils.js.map +7 -0
  253. package/index.js +1 -1
  254. package/inputs/AutoCompleteInput/AutoComplete.stories.d.ts +2 -0
  255. package/inputs/AutoCompleteInput/__stories__/Default.d.ts +1 -1
  256. package/inputs/AutoCompleteInput/__stories__/Multiple.d.ts +1 -1
  257. package/inputs/AutoCompleteInput/index.d.ts +3 -3
  258. package/inputs/AutoCompleteInput/index.js +1 -3
  259. package/inputs/AutoCompleteInput/index.js.map +2 -2
  260. package/inputs/Checkboxes/Checkboxes.stories.d.ts +2 -0
  261. package/inputs/Checkboxes/__stories__/Conditional.d.ts +1 -1
  262. package/inputs/Checkboxes/__stories__/Default.d.ts +1 -1
  263. package/inputs/Checkboxes/__stories__/WithDivider.d.ts +1 -1
  264. package/inputs/Checkboxes/index.d.ts +3 -3
  265. package/inputs/Checkboxes/index.js +67 -62
  266. package/inputs/Checkboxes/index.js.map +2 -2
  267. package/inputs/DateInput/DateInput.stories.d.ts +6 -0
  268. package/inputs/DateInput/__stories__/Default.d.ts +1 -1
  269. package/inputs/DateInput/__stories__/WithDefaultValue.d.ts +3 -0
  270. package/inputs/DateInput/__stories__/WithInitialValue.d.ts +3 -0
  271. package/inputs/DateInput/__stories__/WithWrongDefaultValue.d.ts +3 -0
  272. package/inputs/DateInput/__stories__/WithWrongInitialValue.d.ts +3 -0
  273. package/inputs/DateInput/index.d.ts +2 -5
  274. package/inputs/DateInput/index.js +55 -20
  275. package/inputs/DateInput/index.js.map +2 -2
  276. package/inputs/DateTimeInput/DateTimeInput.stories.d.ts +10 -3
  277. package/inputs/DateTimeInput/__stories__/Default.d.ts +1 -1
  278. package/inputs/DateTimeInput/__stories__/WithDefaultValue.d.ts +3 -0
  279. package/inputs/DateTimeInput/__stories__/WithInitialValue.d.ts +3 -0
  280. package/inputs/DateTimeInput/__stories__/WithWrongDefaultValue.d.ts +3 -0
  281. package/inputs/DateTimeInput/__stories__/WithWrongInitialValue.d.ts +3 -0
  282. package/inputs/DateTimeInput/index.d.ts +2 -5
  283. package/inputs/DateTimeInput/index.js +84 -40
  284. package/inputs/DateTimeInput/index.js.map +2 -2
  285. package/inputs/FileInput/FileInput.stories.d.ts +3 -0
  286. package/inputs/FileInput/__stories__/Default.d.ts +1 -1
  287. package/inputs/FileInput/__stories__/WithBorderAndLink.d.ts +3 -0
  288. package/inputs/FileInput/index.d.ts +18 -2
  289. package/inputs/FileInput/index.js +69 -31
  290. package/inputs/FileInput/index.js.map +2 -2
  291. package/inputs/ImageInput/ImageInput.stories.d.ts +4 -1
  292. package/inputs/ImageInput/__stories__/Default.d.ts +1 -1
  293. package/inputs/ImageInput/__stories__/MaxSize.d.ts +1 -1
  294. package/inputs/ImageInput/__stories__/WithInitialValues.d.ts +3 -0
  295. package/inputs/ImageInput/__stories__/WithInvalidImageDimension.d.ts +1 -1
  296. package/inputs/ImageInput/__stories__/logo.d/index.js +1 -0
  297. package/inputs/ImageInput/__stories__/logo.d/package.json +6 -0
  298. package/inputs/ImageInput/__stories__/logo.d.js.map +7 -0
  299. package/inputs/ImageInput/index.d.ts +10 -2
  300. package/inputs/ImageInput/index.js +43 -11
  301. package/inputs/ImageInput/index.js.map +2 -2
  302. package/inputs/Input/Input.stories.d.ts +5 -0
  303. package/inputs/Input/__stories__/AFM.d.ts +1 -1
  304. package/inputs/Input/__stories__/AMKA.d.ts +3 -0
  305. package/inputs/Input/__stories__/Boolean.d.ts +1 -1
  306. package/inputs/Input/__stories__/Email.d.ts +3 -0
  307. package/inputs/Input/__stories__/IBAN.d.ts +1 -1
  308. package/inputs/Input/__stories__/Integer.d.ts +1 -1
  309. package/inputs/Input/__stories__/LandlineNumber.d.ts +1 -1
  310. package/inputs/Input/__stories__/MobilePhone.d.ts +1 -1
  311. package/inputs/Input/__stories__/PhoneNumber.d.ts +1 -1
  312. package/inputs/Input/__stories__/PostalCode.d.ts +1 -1
  313. package/inputs/Input/__stories__/String.d.ts +1 -1
  314. package/inputs/Input/__stories__/StringWithTrimValidation.d.ts +3 -0
  315. package/inputs/Input/__stories__/TextWithLimit.d.ts +1 -1
  316. package/inputs/Input/index.d.ts +4 -3
  317. package/inputs/Input/index.js +55 -55
  318. package/inputs/Input/index.js.map +2 -2
  319. package/inputs/Label/Label.stories.d.ts +2 -0
  320. package/inputs/Label/__stories__/Default.d.ts +1 -1
  321. package/inputs/Label/index.d.ts +1 -1
  322. package/inputs/Label/index.js.map +1 -1
  323. package/inputs/OtpInput/OtpInput.stories.d.ts +2 -0
  324. package/inputs/OtpInput/__stories__/Default.d.ts +1 -1
  325. package/inputs/OtpInput/index.d.ts +1 -5
  326. package/inputs/OtpInput/index.js +36 -30
  327. package/inputs/OtpInput/index.js.map +2 -2
  328. package/inputs/Radio/Radio.stories.d.ts +2 -0
  329. package/inputs/Radio/__stories__/Conditional.d.ts +1 -1
  330. package/inputs/Radio/__stories__/Default.d.ts +1 -1
  331. package/inputs/Radio/__stories__/WithDivider.d.ts +1 -1
  332. package/inputs/Radio/index.d.ts +4 -4
  333. package/inputs/Radio/index.js +5 -4
  334. package/inputs/Radio/index.js.map +3 -3
  335. package/inputs/Select/Select.stories.d.ts +2 -0
  336. package/inputs/Select/__stories__/Default.d.ts +1 -1
  337. package/inputs/Select/index.d.ts +4 -3
  338. package/inputs/Select/index.js +5 -3
  339. package/inputs/Select/index.js.map +2 -2
  340. package/{Field/utils → inputs/registry}/index.js +4 -2
  341. package/{locales/el → inputs/registry}/package.json +1 -1
  342. package/{Field/utils/index.d.ts → inputs/registry.d.ts} +2 -1
  343. package/inputs/registry.js.map +7 -0
  344. package/lazy/index.js +16 -10
  345. package/package.json +8 -8
  346. package/registry/index.js +31 -15
  347. package/src/Field/ErrorGroup.tsx +84 -0
  348. package/src/Field/FieldBase.tsx +40 -26
  349. package/src/Field/FieldBaseContainer.tsx +69 -47
  350. package/src/Field/FieldConditional.tsx +5 -1
  351. package/src/Field/doc.mdx +202 -1
  352. package/src/Field/index.tsx +27 -37
  353. package/src/Field/types.tsx +24 -14
  354. package/src/Field/utils/evaluateFieldWithConditions.ts +5 -2
  355. package/src/Field/utils/resolveField.ts +58 -0
  356. package/src/Field/utils/useField.ts +12 -2
  357. package/src/FieldArray/BaseFieldArray.tsx +97 -0
  358. package/src/FieldArray/FieldArray.stories.js +2 -0
  359. package/src/FieldArray/FormDialog/ArrayDisplay/ArrayContainerDisplay.tsx +45 -0
  360. package/src/FieldArray/FormDialog/ArrayDisplay/ArrayDisplay.stories.js +14 -0
  361. package/src/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay.tsx +335 -0
  362. package/src/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader.tsx +15 -0
  363. package/src/FieldArray/FormDialog/ArrayDisplay/__stories__/Cards.tsx +88 -0
  364. package/src/FieldArray/FormDialog/ArrayDisplay/__stories__/Default.tsx +93 -0
  365. package/src/FieldArray/FormDialog/ArrayDisplay/__stories__/ReadOnly.tsx +79 -0
  366. package/src/FieldArray/FormDialog/ArrayDisplay/__stories__/ReadOnlyCards.tsx +75 -0
  367. package/src/FieldArray/FormDialog/ArrayDisplay/__stories__/Sortable.tsx +93 -0
  368. package/src/FieldArray/FormDialog/ArrayDisplay/__stories__/SortableCards.tsx +88 -0
  369. package/src/FieldArray/FormDialog/ArrayDisplay/index.test.tsx +44 -0
  370. package/src/FieldArray/FormDialog/ArrayDisplay/index.tsx +67 -0
  371. package/src/FieldArray/FormDialog/ArrayEditModal.tsx +243 -0
  372. package/src/FieldArray/FormDialog/index.tsx +304 -0
  373. package/src/FieldArray/__stories__/CardsWithError.tsx +124 -0
  374. package/src/FieldArray/__stories__/Default.tsx +1 -1
  375. package/src/FieldArray/__stories__/WithExactLength.tsx +15 -78
  376. package/src/FieldArray/__stories__/WithModal.tsx +160 -0
  377. package/src/FieldArray/__tests__/fieldset-multiplicity.spec.tsx +271 -0
  378. package/src/FieldArray/__tests__/multiplicity-attachment.spec.tsx +280 -0
  379. package/src/FieldArray/__tests__/multiplicity-optional.spec.tsx +232 -0
  380. package/src/FieldArray/__tests__/multiplicity-required.spec.tsx +170 -0
  381. package/src/FieldArray/__tests__/nested-fieldset-multiplicity.spec.tsx +627 -0
  382. package/src/FieldArray/__tests__/preference-multiple-choice.spec.tsx +222 -0
  383. package/src/FieldArray/index.spec.tsx +355 -0
  384. package/src/FieldArray/index.test.tsx +12 -0
  385. package/src/FieldArray/index.tsx +49 -72
  386. package/src/FieldObject/index.tsx +40 -34
  387. package/src/Fieldset/FieldsetWithContext.tsx +1 -1
  388. package/src/Fieldset/index.tsx +1 -1
  389. package/src/Fieldset/types.tsx +2 -2
  390. package/src/FormBuilder/FormBuilder.stories.js +5 -0
  391. package/src/FormBuilder/__stories__/AutoErrorGrouping.tsx +63 -0
  392. package/src/FormBuilder/__stories__/Default.tsx +1 -1
  393. package/src/FormBuilder/__stories__/ErrorGrouping.tsx +43 -0
  394. package/src/FormBuilder/doc.mdx +9 -4
  395. package/src/FormBuilder/index.test.tsx +12 -0
  396. package/src/FormBuilder/index.tsx +223 -89
  397. package/src/FormBuilder/interaction.test.tsx +40 -0
  398. package/src/FormBuilder/scenarios.test.tsx +1002 -129
  399. package/src/FormContext.tsx +7 -2
  400. package/src/MultiplicityField/MultiplicityField.stories.js +3 -0
  401. package/src/MultiplicityField/__stories__/Default.tsx +1 -1
  402. package/src/MultiplicityField/__stories__/PreviewDisplay.tsx +1 -1
  403. package/src/MultiplicityField/__stories__/WithExactLength.tsx +1 -1
  404. package/src/MultiplicityField/__stories__/WithMaxLength.tsx +1 -1
  405. package/src/MultiplicityField/__stories__/WithMinAndMaxLength.tsx +1 -1
  406. package/src/MultiplicityField/__stories__/WithMinLength.tsx +1 -1
  407. package/src/MultiplicityField/add-objects.tsx +14 -21
  408. package/src/MultiplicityField/doc.mdx +101 -83
  409. package/src/MultiplicityField/index.test.tsx +4 -0
  410. package/src/MultiplicityField/index.tsx +8 -3
  411. package/src/MultiplicityField/types.ts +6 -2
  412. package/src/Questions/Questions.stories.js +3 -0
  413. package/src/Questions/Questions.tsx +2 -2
  414. package/src/Questions/QuestionsContext.tsx +1 -1
  415. package/src/Questions/Step/Step.tsx +1 -1
  416. package/src/Questions/Step/StepArrayReview.tsx +2 -2
  417. package/src/Questions/Step/StepContext.tsx +1 -1
  418. package/src/Questions/Step/StepDescription.tsx +2 -1
  419. package/src/Questions/Step/StepForm.tsx +2 -2
  420. package/src/Questions/Step/StepQuote.tsx +2 -1
  421. package/src/Questions/Step/StepTitle.tsx +2 -1
  422. package/src/Questions/Step/getAddMoreFields.tsx +2 -2
  423. package/src/Questions/Step/types.tsx +1 -1
  424. package/src/Questions/__snapshots__/index.spec.tsx.snap +3 -1
  425. package/src/Questions/__stories__/Default.tsx +1 -1
  426. package/src/Questions/doc.mdx +21 -41
  427. package/src/Questions/getNextStep.tsx +1 -1
  428. package/src/Questions/index.spec.tsx +8 -0
  429. package/src/Questions/index.test.tsx +4 -0
  430. package/src/Questions/types.tsx +1 -1
  431. package/src/doc.mdx +26 -11
  432. package/src/hooks/__tests__/useFieldFocusManager.spec.tsx +1079 -0
  433. package/src/hooks/__tests__/utils.spec.ts +568 -0
  434. package/src/hooks/useFieldFocusManager.ts +162 -0
  435. package/src/hooks/utils.ts +122 -0
  436. package/src/inputs/AutoCompleteInput/AutoComplete.stories.js +3 -0
  437. package/src/inputs/AutoCompleteInput/__stories__/Default.tsx +1 -1
  438. package/src/inputs/AutoCompleteInput/__stories__/Multiple.tsx +1 -1
  439. package/src/inputs/AutoCompleteInput/index.test.tsx +4 -0
  440. package/src/inputs/AutoCompleteInput/index.tsx +4 -6
  441. package/src/inputs/Checkboxes/Checkboxes.stories.js +3 -0
  442. package/src/inputs/Checkboxes/__stories__/Conditional.tsx +1 -1
  443. package/src/inputs/Checkboxes/__stories__/Default.tsx +1 -1
  444. package/src/inputs/Checkboxes/__stories__/WithDivider.tsx +1 -1
  445. package/src/inputs/Checkboxes/index.test.tsx +4 -0
  446. package/src/inputs/Checkboxes/index.tsx +95 -90
  447. package/src/inputs/DateInput/DateInput.stories.js +7 -0
  448. package/src/inputs/DateInput/__stories__/Default.tsx +1 -1
  449. package/src/inputs/DateInput/__stories__/WithDefaultValue.tsx +26 -0
  450. package/src/inputs/DateInput/__stories__/WithInitialValue.tsx +28 -0
  451. package/src/inputs/DateInput/__stories__/WithWrongDefaultValue.tsx +26 -0
  452. package/src/inputs/DateInput/__stories__/WithWrongInitialValue.tsx +28 -0
  453. package/src/inputs/DateInput/index.test.tsx +20 -0
  454. package/src/inputs/DateInput/index.tsx +68 -20
  455. package/src/inputs/DateTimeInput/DateTimeInput.stories.js +12 -6
  456. package/src/inputs/DateTimeInput/__stories__/Default.tsx +1 -1
  457. package/src/inputs/DateTimeInput/__stories__/WithDefaultValue.tsx +26 -0
  458. package/src/inputs/DateTimeInput/__stories__/WithInitialValue.tsx +28 -0
  459. package/src/inputs/DateTimeInput/__stories__/WithWrongDefaultValue.tsx +26 -0
  460. package/src/inputs/DateTimeInput/__stories__/WithWrongInitialValue.tsx +28 -0
  461. package/src/inputs/DateTimeInput/index.test.tsx +27 -5
  462. package/src/inputs/DateTimeInput/index.tsx +97 -40
  463. package/src/inputs/FileInput/FileInput.stories.js +4 -0
  464. package/src/inputs/FileInput/__stories__/Default.tsx +1 -1
  465. package/src/inputs/FileInput/__stories__/WithBorderAndLink.tsx +34 -0
  466. package/src/inputs/FileInput/index.test.tsx +8 -0
  467. package/src/inputs/FileInput/index.tsx +106 -38
  468. package/src/inputs/ImageInput/ImageInput.stories.js +5 -1
  469. package/src/inputs/ImageInput/__stories__/Default.tsx +1 -1
  470. package/src/inputs/ImageInput/__stories__/MaxSize.tsx +3 -2
  471. package/src/inputs/ImageInput/__stories__/{WithInvalidImageSize.tsx → WithInitialValues.tsx} +12 -3
  472. package/src/inputs/ImageInput/__stories__/WithInvalidImageDimension.tsx +1 -1
  473. package/src/inputs/ImageInput/__stories__/logo.d.ts +4 -0
  474. package/src/inputs/ImageInput/__stories__/logo.png +0 -0
  475. package/src/inputs/ImageInput/index.test.tsx +8 -4
  476. package/src/inputs/ImageInput/index.tsx +101 -48
  477. package/src/inputs/Input/Input.stories.js +6 -0
  478. package/src/inputs/Input/__stories__/AFM.tsx +1 -1
  479. package/src/inputs/Input/__stories__/AMKA.tsx +23 -0
  480. package/src/inputs/Input/__stories__/Boolean.tsx +1 -1
  481. package/src/inputs/Input/__stories__/Email.tsx +23 -0
  482. package/src/inputs/Input/__stories__/IBAN.tsx +1 -1
  483. package/src/inputs/Input/__stories__/Integer.tsx +1 -1
  484. package/src/inputs/Input/__stories__/LandlineNumber.tsx +1 -1
  485. package/src/inputs/Input/__stories__/MobilePhone.tsx +1 -1
  486. package/src/inputs/Input/__stories__/PhoneNumber.tsx +1 -1
  487. package/src/inputs/Input/__stories__/PostalCode.tsx +1 -1
  488. package/src/inputs/Input/__stories__/String.tsx +1 -1
  489. package/src/inputs/Input/__stories__/StringWithTrimValidation.tsx +26 -0
  490. package/src/inputs/Input/__stories__/TextWithLimit.tsx +2 -1
  491. package/src/inputs/Input/index.test.tsx +16 -0
  492. package/src/inputs/Input/index.tsx +76 -71
  493. package/src/inputs/Label/Label.stories.js +3 -0
  494. package/src/inputs/Label/__stories__/Default.tsx +1 -1
  495. package/src/inputs/Label/index.test.tsx +4 -0
  496. package/src/inputs/Label/index.tsx +1 -1
  497. package/src/inputs/OtpInput/OtpInput.stories.js +3 -0
  498. package/src/inputs/OtpInput/__stories__/Default.tsx +1 -1
  499. package/src/inputs/OtpInput/index.test.tsx +4 -0
  500. package/src/inputs/OtpInput/index.tsx +43 -33
  501. package/src/inputs/Radio/Radio.stories.js +3 -0
  502. package/src/inputs/Radio/__stories__/Conditional.tsx +1 -1
  503. package/src/inputs/Radio/__stories__/Default.tsx +1 -1
  504. package/src/inputs/Radio/__stories__/WithDivider.tsx +1 -1
  505. package/src/inputs/Radio/index.test.tsx +4 -0
  506. package/src/inputs/Radio/index.tsx +29 -21
  507. package/src/inputs/Select/Select.stories.js +3 -0
  508. package/src/inputs/Select/__stories__/Default.tsx +1 -1
  509. package/src/inputs/Select/index.test.tsx +4 -0
  510. package/src/inputs/Select/index.tsx +10 -6
  511. package/src/{Field/utils/index.ts → inputs/registry.ts} +5 -1
  512. package/src/lazy.js +16 -10
  513. package/src/registry.js +31 -15
  514. package/src/types.tsx +14 -5
  515. package/src/utils.ts +30 -8
  516. package/src/validators/index.ts +68 -28
  517. package/src/validators/types.ts +1 -1
  518. package/src/validators/utils/amka.ts +39 -0
  519. package/src/validators/utils/date.ts +30 -6
  520. package/src/validators/utils/datetime.ts +123 -31
  521. package/src/validators/utils/email.ts +11 -0
  522. package/src/validators/utils/file.ts +35 -21
  523. package/src/validators/utils/iban.ts +2 -2
  524. package/src/validators/utils/image.ts +2 -2
  525. package/src/validators/utils/index.ts +6 -3
  526. package/src/validators/utils/int.ts +2 -2
  527. package/src/validators/utils/number.ts +2 -2
  528. package/src/validators/utils/otp.ts +2 -2
  529. package/src/validators/utils/phone.ts +2 -2
  530. package/src/validators/utils/postal_code.ts +2 -2
  531. package/src/validators/utils/text_limit.ts +2 -2
  532. package/types.d.ts +10 -4
  533. package/types.js.map +1 -1
  534. package/utils/index.js +20 -6
  535. package/utils.d.ts +3 -1
  536. package/utils.js.map +2 -2
  537. package/validators/index.d.ts +6 -6
  538. package/validators/index.js +34 -19
  539. package/validators/index.js.map +2 -2
  540. package/validators/types.d.ts +1 -1
  541. package/validators/utils/amka/index.js +36 -0
  542. package/validators/utils/amka/package.json +6 -0
  543. package/validators/utils/amka.d.ts +6 -0
  544. package/validators/utils/amka.js.map +7 -0
  545. package/validators/utils/date/index.js +26 -3
  546. package/validators/utils/date.d.ts +3 -3
  547. package/validators/utils/date.js.map +2 -2
  548. package/validators/utils/datetime/index.js +118 -24
  549. package/validators/utils/datetime.d.ts +3 -3
  550. package/validators/utils/datetime.js.map +2 -2
  551. package/validators/utils/email/index.js +16 -0
  552. package/validators/utils/email/package.json +6 -0
  553. package/validators/utils/email.d.ts +5 -0
  554. package/validators/utils/email.js.map +7 -0
  555. package/validators/utils/file/index.js +30 -17
  556. package/validators/utils/file.d.ts +2 -2
  557. package/validators/utils/file.js.map +2 -2
  558. package/validators/utils/iban.d.ts +2 -2
  559. package/validators/utils/iban.js.map +1 -1
  560. package/validators/utils/image.d.ts +2 -2
  561. package/validators/utils/image.js.map +1 -1
  562. package/validators/utils/index.d.ts +3 -2
  563. package/validators/utils/index.js +4 -1
  564. package/validators/utils/index.js.map +2 -2
  565. package/validators/utils/int/index.js +1 -1
  566. package/validators/utils/int.d.ts +1 -1
  567. package/validators/utils/int.js.map +2 -2
  568. package/validators/utils/number/index.js +1 -1
  569. package/validators/utils/number.d.ts +1 -1
  570. package/validators/utils/number.js.map +2 -2
  571. package/validators/utils/otp.d.ts +2 -2
  572. package/validators/utils/otp.js.map +1 -1
  573. package/validators/utils/phone.d.ts +2 -2
  574. package/validators/utils/phone.js.map +1 -1
  575. package/validators/utils/postal_code.d.ts +2 -2
  576. package/validators/utils/postal_code.js.map +1 -1
  577. package/validators/utils/text_limit.d.ts +2 -2
  578. package/validators/utils/text_limit.js.map +1 -1
  579. package/Field/utils/calculateField/index.js +0 -27
  580. package/Field/utils/calculateField.d.ts +0 -2
  581. package/Field/utils/calculateField.js.map +0 -7
  582. package/Field/utils/index.js.map +0 -7
  583. package/FieldArray/FormDialog.d.ts +0 -53
  584. package/FieldArray/FormDialog.js.map +0 -7
  585. package/FormBuilder/index.test.d.ts +0 -1
  586. package/FormBuilder/scenarios.test.d.ts +0 -88
  587. package/MultiplicityField/index.test.d.ts +0 -1
  588. package/Questions/index.spec.d.ts +0 -1
  589. package/Questions/index.test.d.ts +0 -1
  590. package/cjs/Field/utils/calculateField/index.js +0 -50
  591. package/cjs/Field/utils/calculateField.js.map +0 -7
  592. package/cjs/Field/utils/index.js.map +0 -7
  593. package/cjs/FieldArray/FormDialog.js.map +0 -7
  594. package/cjs/inputs/Input/inputsInputScenarios/index.js +0 -439
  595. package/cjs/inputs/Input/inputsInputScenarios.js.map +0 -7
  596. package/cjs/inputs/inputsScenarios/index.js +0 -533
  597. package/cjs/inputs/inputsScenarios.js.map +0 -7
  598. package/cjs/locales/el.js.map +0 -7
  599. package/inputs/AutoCompleteInput/index.test.d.ts +0 -1
  600. package/inputs/Checkboxes/index.test.d.ts +0 -1
  601. package/inputs/DateInput/index.test.d.ts +0 -1
  602. package/inputs/DateTimeInput/index.test.d.ts +0 -1
  603. package/inputs/FileInput/index.test.d.ts +0 -1
  604. package/inputs/ImageInput/__stories__/WithInvalidImageSize.d.ts +0 -3
  605. package/inputs/ImageInput/index.test.d.ts +0 -1
  606. package/inputs/Input/index.test.d.ts +0 -1
  607. package/inputs/Input/inputsInputScenarios/index.js +0 -406
  608. package/inputs/Input/inputsInputScenarios.d.ts +0 -57
  609. package/inputs/Input/inputsInputScenarios.js.map +0 -7
  610. package/inputs/Label/index.test.d.ts +0 -1
  611. package/inputs/OtpInput/index.test.d.ts +0 -1
  612. package/inputs/Radio/index.test.d.ts +0 -1
  613. package/inputs/Select/index.test.d.ts +0 -1
  614. package/inputs/inputsScenarios/index.js +0 -499
  615. package/inputs/inputsScenarios.d.ts +0 -296
  616. package/inputs/inputsScenarios.js.map +0 -7
  617. package/locales/el/index.js +0 -6
  618. package/locales/el.d.ts +0 -2
  619. package/locales/el.js.map +0 -7
  620. package/src/Field/utils/calculateField.ts +0 -49
  621. package/src/FieldArray/FormDialog.tsx +0 -379
  622. package/src/inputs/Input/inputsInputScenarios.ts +0 -404
  623. package/src/inputs/inputsScenarios.ts +0 -496
  624. package/src/locales/el.ts +0 -3
  625. /package/{FieldArray/index.test.d.ts → hooks/__tests__/utils.spec.d.ts} +0 -0
@@ -1,7 +1,12 @@
1
- import React, { createContext } from 'react';
2
- import { FormContextProps } from '@digigov/form/types';
1
+ import type React from 'react';
2
+ import { createContext, useContext } from 'react';
3
+ import type { FormContextProps } from '@digigov/form/types';
3
4
 
4
5
  export const FormContext: React.Context<FormContextProps> = createContext({
5
6
  fieldsMap: {},
6
7
  fieldsetsMap: {},
7
8
  } as FormContextProps);
9
+
10
+ export const useFormContext = () => {
11
+ return useContext(FormContext);
12
+ };
@@ -1,7 +1,10 @@
1
1
  import MultiplicityField from '@digigov/form/MultiplicityField';
2
+ import doc from './doc.mdx?raw';
2
3
  export default {
3
4
  title: 'Digigov Form/MultiplicityField',
4
5
  component: MultiplicityField,
6
+ tags: ['autodocs'],
7
+ markdown: doc,
5
8
  displayName: 'MultiplicityField',
6
9
  };
7
10
  export { Default } from '@digigov/form/MultiplicityField/__stories__/Default';
@@ -85,7 +85,7 @@ const fields = [
85
85
  },
86
86
  ] as FieldSpec[];
87
87
 
88
- export const Default = () => (
88
+ export const Default = (_: any) => (
89
89
  <FormBuilder
90
90
  onSubmit={(data) => {
91
91
  console.log(data);
@@ -61,7 +61,7 @@ const fields = [
61
61
  },
62
62
  ];
63
63
 
64
- export const PreviewDisplay = () => (
64
+ export const PreviewDisplay = (_: any) => (
65
65
  <Layout>
66
66
  <Header>
67
67
  <HeaderContent>
@@ -84,7 +84,7 @@ const fields = [
84
84
  },
85
85
  ] as FieldSpec[];
86
86
 
87
- export const WithExactLength = () => (
87
+ export const WithExactLength = (_: any) => (
88
88
  <FormBuilder
89
89
  onSubmit={(data) => {
90
90
  console.log(data);
@@ -87,7 +87,7 @@ const fields = [
87
87
  },
88
88
  ] as FieldSpec[];
89
89
 
90
- export const WithMaxLength = () => (
90
+ export const WithMaxLength = (_: any) => (
91
91
  <FormBuilder
92
92
  onSubmit={(data) => {
93
93
  console.log(data);
@@ -88,7 +88,7 @@ const fields = [
88
88
  },
89
89
  ] as FieldSpec[];
90
90
 
91
- export const WithMinAndMaxLength = () => (
91
+ export const WithMinAndMaxLength = (_: any) => (
92
92
  <FormBuilder
93
93
  onSubmit={(data) => {
94
94
  console.log(data);
@@ -87,7 +87,7 @@ const fields = [
87
87
  },
88
88
  ] as FieldSpec[];
89
89
 
90
- export const WithMinLength = () => (
90
+ export const WithMinLength = (_: any) => (
91
91
  <FormBuilder
92
92
  onSubmit={(data) => {
93
93
  console.log(data);
@@ -1,17 +1,12 @@
1
1
  import React, { useEffect, useMemo } from 'react';
2
- import {
2
+ import type {
3
3
  ErrorOption,
4
4
  FieldArrayWithId,
5
5
  UseFieldArrayReturn,
6
- useWatch,
7
6
  } from 'react-hook-form';
7
+ import { useWatch } from 'react-hook-form';
8
8
  import { FieldBase } from '@digigov/form/Field/FieldBase';
9
- import { CalculatedField } from '@digigov/form/Field/types';
10
- import {
11
- FIELD_COMPONENTS,
12
- ALTERNATIVE_COMPONENTS,
13
- } from '@digigov/form/Field/utils';
14
- import { calculateField } from '@digigov/form/Field/utils/calculateField';
9
+ import { resolveField } from '@digigov/form/Field/utils/resolveField';
15
10
  import { useField } from '@digigov/form/Field/utils/useField';
16
11
  import { FieldObject } from '@digigov/form/FieldObject';
17
12
  import { Fieldset } from '@digigov/form/Fieldset';
@@ -19,7 +14,7 @@ import type {
19
14
  MultiplicityProps,
20
15
  StashedObject,
21
16
  } from '@digigov/form/MultiplicityField/types';
22
- import { FieldSpec } from '@digigov/form/types';
17
+ import type { FieldSpec } from '@digigov/form/types';
23
18
  import { Button } from '@digigov/ui/form/Button';
24
19
  import { RadioConditional } from '@digigov/ui/form/RadioContainer';
25
20
 
@@ -47,6 +42,7 @@ export const AddObjects: React.FC<AddObjectsProps> = ({
47
42
  setValue,
48
43
  stashedObjects,
49
44
  getValues,
45
+ resetField,
50
46
  onStash,
51
47
  error,
52
48
  Field,
@@ -136,11 +132,7 @@ export const AddObjects: React.FC<AddObjectsProps> = ({
136
132
  error: needsMoreError,
137
133
  } = useField(radioField.key, radioField?.type ? radioField : null);
138
134
 
139
- const calculatedField: CalculatedField = useMemo(
140
- () =>
141
- calculateField(children, field, FIELD_COMPONENTS, ALTERNATIVE_COMPONENTS),
142
- [field]
143
- );
135
+ const resolvedField = useMemo(() => resolveField(children, field), [field]);
144
136
  const needsMore = useWatch({ name: field.key, control });
145
137
 
146
138
  useEffect(() => {
@@ -155,25 +147,25 @@ export const AddObjects: React.FC<AddObjectsProps> = ({
155
147
 
156
148
  // TODO: Refactor types so that label is always required, the following
157
149
  // assignment is a temp fix for typescript build to run
158
- calculatedField.label = calculatedField.label || {};
150
+ resolvedField.label = resolvedField.label || {};
159
151
  if (extra?.length) {
160
- calculatedField.label.secondary = `Έχετε προσθέσει ${
152
+ resolvedField.label.secondary = `Έχετε προσθέσει ${
161
153
  stashedObjects.length
162
154
  } εγγραφές και σας απομένουν ακόμα ${
163
155
  extra.length - stashedObjects.length
164
156
  } εγγραφές.`;
165
157
  } else if (extra?.min && extra?.max) {
166
- calculatedField.label.secondary = `Το πεδίο πρέπει να έχει ακόμα ${
158
+ resolvedField.label.secondary = `Το πεδίο πρέπει να έχει ακόμα ${
167
159
  extra?.min - stashedObjects.length
168
160
  } και το μέγιστο ${
169
161
  extra?.max
170
162
  } εγγραφές. Προσθέστε μια ακόμα επιλέγοντας την απάντηση «Ναι» στην επόμενη ερώτηση.`;
171
163
  } else if (extra?.min) {
172
- calculatedField.label.secondary = `Το πεδίο πρέπει να έχει ακόμα ${
164
+ resolvedField.label.secondary = `Το πεδίο πρέπει να έχει ακόμα ${
173
165
  extra?.min - stashedObjects.length
174
166
  } εγγραφές. Προσθέστε μια ακόμα επιλέγοντας την απάντηση «Ναι» στην επόμενη ερώτηση.`;
175
167
  } else if (extra?.max) {
176
- calculatedField.label.secondary = ` Έχετε προσθέσει ${
168
+ resolvedField.label.secondary = ` Έχετε προσθέσει ${
177
169
  stashedObjects.length
178
170
  } εγγραφές και σας απομένουν ${
179
171
  extra.max - stashedObjects.length
@@ -182,11 +174,12 @@ export const AddObjects: React.FC<AddObjectsProps> = ({
182
174
  return (
183
175
  <Fieldset>
184
176
  <FieldBase
185
- {...calculatedField}
186
- name={calculatedField.key}
177
+ {...resolvedField}
178
+ name={resolvedField.key}
187
179
  control={control}
188
180
  register={register}
189
181
  reset={reset}
182
+ resetField={resetField}
190
183
  Field={Field}
191
184
  error={
192
185
  extra?.max - stashedObjects.length === 0 ||
@@ -3,6 +3,8 @@ id: ask-users-recursive
3
3
  title: Ask users for recursive data
4
4
  ---
5
5
 
6
+ # MultiplicityField
7
+
6
8
  Multiplicity & FieldArray fields allow users to input data described by a
7
9
  particular schema for an arbitrary number of times until they are done. It can
8
10
  be used to input a fixed, a minimum, and a maximum length of instances.
@@ -28,7 +30,7 @@ properties for a data entity like a citizen and their personal details, and it
28
30
  can be reused internally multiple times by `@digigov/form` to generate data
29
31
  objects based on this schema.
30
32
 
31
- ## Accessibility & usability
33
+ ## Accessibility & Usability
32
34
 
33
35
  We aim to have semantically correct and valid forms, and as a result we cannot
34
36
  mix form-related HTML elements, like `form`, `input`, `label` with generic ones,
@@ -109,38 +111,40 @@ import React from 'react';
109
111
  import Form, { Field } from '@digigov/form';
110
112
  import Button from '@digigov/ui/form/Button';
111
113
 
112
- export default function SimpleForm() {
114
+ export function SimpleForm() {
113
115
  return (
114
116
  <Form>
115
117
  <Field
116
118
  key="vehicles"
117
119
  name="vehicles"
118
- label={{ primary: 'Vehicles' }}
120
+ multiplicity={true}
121
+ label={{ primary: 'Οχήματα' }}
119
122
  type="array"
120
123
  extra={{
121
124
  border: true,
122
125
  label: {
123
126
  object: {
124
- title: 'Vehicle',
125
- title_added: 'The vehicles you have already added',
126
- add: 'Add',
127
- delete: 'Remove',
127
+ title: 'Οχήματα',
128
+ title_added: 'Τα οχήματα που έχετε που έχετε προσθέσει',
129
+ add: 'Προσθήκη',
130
+ delete: 'Αφαίρεση',
128
131
  },
129
132
  question: {
130
- title: 'Do you want to add more vehicles?',
133
+ title: 'Θέλετε να προσθέσετε και άλλα οχήματα;',
131
134
  objectLabel: {
132
- primary: 'Add one more of your vehicles',
133
- secondary: 'Fill in the details below and then click “Add“.',
135
+ primary: 'Προσθέστε άλλο ένα όχημα',
136
+ secondary:
137
+ 'Συμπληρώστε τα παρακάτω πεδία και πατήστε "Προσθήκη".',
134
138
  },
135
- yes: 'Yes',
136
- no: 'No',
139
+ yes: 'Ναι',
140
+ no: 'Όχι',
137
141
  },
138
142
  },
139
143
  of: {
140
144
  type: 'object',
141
145
  label: {
142
- primary: 'Vehicle details',
143
- secondary: 'See and change the details of a vehicle',
146
+ primary: 'Περιγραφή Οχήματος',
147
+ secondary: 'Αλλάξτε τα στοιχεία του οχήματος',
144
148
  },
145
149
  extra: {
146
150
  fields: [
@@ -148,14 +152,14 @@ export default function SimpleForm() {
148
152
  key: 'registration_date',
149
153
  type: 'date',
150
154
  required: true,
151
- label: { primary: 'Registration date' },
155
+ label: { primary: 'Ημερομηνία Κυκλοφορίας' },
152
156
  },
153
157
  {
154
158
  key: 'make',
155
159
  type: 'string',
156
160
  required: true,
157
161
  label: {
158
- primary: 'Make',
162
+ primary: 'Κατασκευαστής',
159
163
  },
160
164
  },
161
165
  {
@@ -163,7 +167,7 @@ export default function SimpleForm() {
163
167
  type: 'string',
164
168
  required: true,
165
169
  label: {
166
- primary: 'Model',
170
+ primary: 'Μοντέλο',
167
171
  },
168
172
  },
169
173
  ],
@@ -172,10 +176,11 @@ export default function SimpleForm() {
172
176
  }}
173
177
  required
174
178
  />
175
- <Button type="submit">Submit</Button>
179
+ <Button type="submit">Συνέχεια</Button>
176
180
  </Form>
177
181
  );
178
182
  }
183
+ export default SimpleForm;
179
184
  ```
180
185
 
181
186
  ### How to use it
@@ -192,7 +197,7 @@ export default function MultiplicityForm() {
192
197
  return (
193
198
  <Form>
194
199
  {/* this is where all fields will eventually be rendered */}
195
- <Button type="submit">Submit</Button>
200
+ <Button type="submit">Συνέχεια</Button>
196
201
  </Form>
197
202
  );
198
203
  }
@@ -209,7 +214,7 @@ props.
209
214
  <Field
210
215
  key="vehicles"
211
216
  name="vehicles"
212
- label={{ primary: 'Vehicles' }}
217
+ label={{ primary: 'Οχήματα' }}
213
218
  type="array"
214
219
  required
215
220
  />
@@ -234,8 +239,8 @@ key describing the field props for all inputs needed.
234
239
  of: {
235
240
  type: 'object',
236
241
  label: {
237
- primary: 'Vehicle details',
238
- secondary: 'See and change the details of a vehicle',
242
+ primary: 'Περιγραφή Οχήματος',
243
+ secondary: 'Αλλάξτε τα στοιχεία του οχήματος',
239
244
  },
240
245
  extra: {
241
246
  fields: [
@@ -243,14 +248,16 @@ key describing the field props for all inputs needed.
243
248
  key: 'registration_date',
244
249
  type: 'date',
245
250
  required: true,
246
- label: { primary: 'Registration date' },
251
+ label: {
252
+ primary: 'Ημερομηνία Κυκλοφορίας'
253
+ },
247
254
  },
248
255
  {
249
256
  key: 'make',
250
257
  type: 'string',
251
258
  required: true,
252
259
  label: {
253
- primary: 'Make',
260
+ primary: 'Κατασκευαστής',
254
261
  },
255
262
  },
256
263
  {
@@ -258,7 +265,7 @@ key describing the field props for all inputs needed.
258
265
  type: 'string',
259
266
  required: true,
260
267
  label: {
261
- primary: 'Model',
268
+ primary: 'Μοντέλο',
262
269
  },
263
270
  },
264
271
  ],
@@ -283,14 +290,14 @@ FieldArray instead of the Multiplicity, is to explicitly disable the
283
290
  multiplicity functionality, by using the `multiplicity={false}` prop.
284
291
 
285
292
  As a result, if you learn how to use one, you can easily use the other, and
286
- naturally, you can also change their behaviour by changing a single prop in your
293
+ naturally, you can also change their behavior by changing a single prop in your
287
294
  React code.
288
295
 
289
296
  ```jsx pure
290
297
  <Field
291
298
  key="vehicles"
292
299
  name="vehicles"
293
- label={{ primary: 'Vehicles' }}
300
+ label={{ primary: 'Οχήματα' }}
294
301
  type="array"
295
302
  // highlight-next-line
296
303
  multiplicity={false}
@@ -306,40 +313,41 @@ import React from 'react';
306
313
  import Form, { Field } from '@digigov/form';
307
314
  import Button from '@digigov/ui/form/Button';
308
315
 
309
- export default function SimpleForm() {
316
+ export function SimpleForm() {
310
317
  return (
311
318
  <Form>
312
319
  <Field
313
320
  key="vehicles"
314
321
  name="vehicles"
315
- label={{ primary: 'Vehicles' }}
316
- type="array"
317
322
  multiplicity={false}
323
+ editable={true}
324
+ label={{ primary: 'Οχήματα' }}
325
+ type="array"
318
326
  extra={{
319
327
  border: true,
320
328
  label: {
321
329
  object: {
322
- title: 'Vehicle',
323
- title_added: 'The vehicles you have already added',
324
- nothing_added: 'You have not added any vehicles yet.',
325
- add: 'Add vehicle',
326
- delete: 'Remove',
330
+ title: 'Οχήματα',
331
+ title_added: 'Τα οχήματα που έχετε που έχετε προσθέσει',
332
+ add: 'Προσθήκη',
333
+ delete: 'Αφαίρεση',
327
334
  },
328
335
  question: {
329
- title: 'Do you want to add more vehicles?',
336
+ title: 'Θέλετε να προσθέσετε και άλλα οχήματα;',
330
337
  objectLabel: {
331
- primary: 'Add one more of your vehicles',
332
- secondary: 'Fill in the details below and then click “Add“.',
338
+ primary: 'Προσθέστε άλλο ένα όχημα',
339
+ secondary:
340
+ 'Συμπληρώστε τα παρακάτω πεδία και πατήστε "Προσθήκη".',
333
341
  },
334
- yes: 'Yes',
335
- no: 'No',
342
+ yes: 'Ναι',
343
+ no: 'Όχι',
336
344
  },
337
345
  },
338
346
  of: {
339
347
  type: 'object',
340
348
  label: {
341
- primary: 'Vehicle details',
342
- secondary: 'See and change the details of a vehicle',
349
+ primary: 'Περιγραφή Οχήματος',
350
+ secondary: 'Αλλάξτε τα στοιχεία του οχήματος',
343
351
  },
344
352
  extra: {
345
353
  fields: [
@@ -347,14 +355,14 @@ export default function SimpleForm() {
347
355
  key: 'registration_date',
348
356
  type: 'date',
349
357
  required: true,
350
- label: { primary: 'Registration date' },
358
+ label: { primary: 'Ημερομηνία Κυκλοφορίας' },
351
359
  },
352
360
  {
353
361
  key: 'make',
354
362
  type: 'string',
355
363
  required: true,
356
364
  label: {
357
- primary: 'Make',
365
+ primary: 'Κατασκευαστής',
358
366
  },
359
367
  },
360
368
  {
@@ -362,7 +370,7 @@ export default function SimpleForm() {
362
370
  type: 'string',
363
371
  required: true,
364
372
  label: {
365
- primary: 'Model',
373
+ primary: 'Μοντέλο',
366
374
  },
367
375
  },
368
376
  ],
@@ -371,10 +379,11 @@ export default function SimpleForm() {
371
379
  }}
372
380
  required
373
381
  />
374
- <Button type="submit">Submit</Button>
382
+ <Button type="submit">Συνέχεια</Button>
375
383
  </Form>
376
384
  );
377
385
  }
386
+ export default SimpleForm;
378
387
  ```
379
388
 
380
389
  ## Validating form data
@@ -410,40 +419,42 @@ import React from 'react';
410
419
  import Form, { Field } from '@digigov/form';
411
420
  import Button from '@digigov/ui/form/Button';
412
421
 
413
- export default function SimpleForm() {
422
+ export function SimpleForm() {
414
423
  return (
415
424
  <Form>
416
425
  <Field
417
426
  key="vehicles"
418
427
  name="vehicles"
419
- label={{ primary: 'Vehicles' }}
428
+ label={{ primary: 'Οχήματα' }}
420
429
  type="array"
421
430
  multiplicity={true}
422
431
  extra={{
432
+ length: 2,
423
433
  border: true,
424
- length: 3,
425
434
  label: {
426
435
  object: {
427
- title: 'Vehicle',
428
- title_added: 'The vehicles you have already added',
429
- add: 'Add',
430
- delete: 'Remove',
436
+ title: 'Οχήματα',
437
+ title_added: 'Τα οχήματα που έχετε προσθέσει',
438
+ nothing_added: 'Δεν έχετε προσθέσει κανένα όχημα ακόμα.',
439
+ add: 'Προσθήκη οχήματος',
440
+ delete: 'Αφαίρεση',
431
441
  },
432
442
  question: {
433
- title: 'Do you want to add more vehicles?',
443
+ title: 'Θέλετε να προσθέσετε περισσότερα οχήματα;',
434
444
  objectLabel: {
435
- primary: 'Add one more of your vehicles',
436
- secondary: 'Fill in the details below and then click “Add“.',
445
+ primary: 'Προσθέστε ακόμα ένα από τα οχήματά σας',
446
+ secondary:
447
+ 'Συμπληρώστε τα παρακάτω πεδία και πατήστε "Προσθήκη".',
437
448
  },
438
- yes: 'Yes',
439
- no: 'No',
449
+ yes: 'Ναι',
450
+ no: 'Όχι',
440
451
  },
441
452
  },
442
453
  of: {
443
454
  type: 'object',
444
455
  label: {
445
- primary: 'Vehicle details',
446
- secondary: 'See and change the details of a vehicle',
456
+ primary: 'Περιγραφή Οχήματος',
457
+ secondary: 'Αλλάξτε τα στοιχεία του οχήματος',
447
458
  },
448
459
  extra: {
449
460
  fields: [
@@ -451,14 +462,16 @@ export default function SimpleForm() {
451
462
  key: 'registration_date',
452
463
  type: 'date',
453
464
  required: true,
454
- label: { primary: 'Registration date' },
465
+ label: {
466
+ primary: 'Ημερομηνία Κυκλοφορίας',
467
+ },
455
468
  },
456
469
  {
457
470
  key: 'make',
458
471
  type: 'string',
459
472
  required: true,
460
473
  label: {
461
- primary: 'Make',
474
+ primary: 'Κατασκευαστής',
462
475
  },
463
476
  },
464
477
  {
@@ -466,7 +479,7 @@ export default function SimpleForm() {
466
479
  type: 'string',
467
480
  required: true,
468
481
  label: {
469
- primary: 'Model',
482
+ primary: 'Μοντέλο',
470
483
  },
471
484
  },
472
485
  ],
@@ -475,10 +488,11 @@ export default function SimpleForm() {
475
488
  }}
476
489
  required
477
490
  />
478
- <Button type="submit">Submit</Button>
491
+ <Button type="submit">Συνέχεια</Button>
479
492
  </Form>
480
493
  );
481
494
  }
495
+ export default SimpleForm;
482
496
  ```
483
497
 
484
498
  ### Min or max length
@@ -512,42 +526,43 @@ import React from 'react';
512
526
  import Form, { Field } from '@digigov/form';
513
527
  import Button from '@digigov/ui/form/Button';
514
528
 
515
- export default function SimpleForm() {
529
+ export function SimpleForm() {
516
530
  return (
517
531
  <Form>
518
532
  <Field
519
533
  key="vehicles"
520
534
  name="vehicles"
521
- label={{ primary: 'Vehicles' }}
535
+ label={{ primary: 'Οχήματα' }}
522
536
  type="array"
523
537
  multiplicity={true}
524
538
  extra={{
525
- border: true,
526
539
  min: 2,
527
540
  max: 5,
541
+ border: true,
528
542
  label: {
529
543
  object: {
530
- title: 'Vehicle',
531
- title_added: 'The vehicles you have already added',
532
- nothing_added: 'You have not added any vehicles yet.',
533
- add: 'Add',
534
- delete: 'Remove',
544
+ title: 'Οχήματα',
545
+ title_added: 'Τα οχήματα που έχετε προσθέσει',
546
+ nothing_added: 'Δεν έχετε προσθέσει κανένα όχημα ακόμα.',
547
+ add: 'Προσθήκη οχήματος',
548
+ delete: 'Αφαίρεση',
535
549
  },
536
550
  question: {
537
- title: 'Do you want to add more vehicles?',
551
+ title: 'Θέλετε να προσθέσετε περισσότερα οχήματα;',
538
552
  objectLabel: {
539
- primary: 'Add one more of your vehicles',
540
- secondary: 'Fill in the details below and then click “Add“.',
553
+ primary: 'Προσθέστε ακόμα ένα από τα οχήματά σας',
554
+ secondary:
555
+ 'Συμπληρώστε τα παρακάτω πεδία και πατήστε "Προσθήκη".',
541
556
  },
542
- yes: 'Yes',
543
- no: 'No',
557
+ yes: 'Ναι',
558
+ no: 'Όχι',
544
559
  },
545
560
  },
546
561
  of: {
547
562
  type: 'object',
548
563
  label: {
549
- primary: 'Vehicle details',
550
- secondary: 'See and change the details of a vehicle',
564
+ primary: 'Περιγραφή Οχήματος',
565
+ secondary: 'Αλλάξτε τα στοιχεία του οχήματος',
551
566
  },
552
567
  extra: {
553
568
  fields: [
@@ -555,14 +570,16 @@ export default function SimpleForm() {
555
570
  key: 'registration_date',
556
571
  type: 'date',
557
572
  required: true,
558
- label: { primary: 'Registration date' },
573
+ label: {
574
+ primary: 'Ημερομηνία Κυκλοφορίας',
575
+ },
559
576
  },
560
577
  {
561
578
  key: 'make',
562
579
  type: 'string',
563
580
  required: true,
564
581
  label: {
565
- primary: 'Make',
582
+ primary: 'Κατασκευαστής',
566
583
  },
567
584
  },
568
585
  {
@@ -570,7 +587,7 @@ export default function SimpleForm() {
570
587
  type: 'string',
571
588
  required: true,
572
589
  label: {
573
- primary: 'Model',
590
+ primary: 'Μοντέλο',
574
591
  },
575
592
  },
576
593
  ],
@@ -579,8 +596,9 @@ export default function SimpleForm() {
579
596
  }}
580
597
  required
581
598
  />
582
- <Button type="submit">Submit</Button>
599
+ <Button type="submit">Συνέχεια</Button>
583
600
  </Form>
584
601
  );
585
602
  }
603
+ export default SimpleForm;
586
604
  ```
@@ -34,6 +34,10 @@ test('renders the All MultiplicityField variants', async ({ mount, page }) => {
34
34
  )
35
35
  await page.evaluate(() => document.fonts.ready);
36
36
 
37
+ // Move the mouse to the top-left corner to avoid random hover issues
38
+ await page.mouse.move(0, 0);
39
+
40
+
37
41
  const screenshot = await page.screenshot({ fullPage: true, animations: 'disabled' });
38
42
  expect(screenshot).toMatchSnapshot();
39
43
  });