@digigov/form 2.0.0-85c27c19 → 2.0.0-8e254888

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 (584) hide show
  1. package/Field/ErrorGroup/index.js +48 -0
  2. package/{Form.stories → 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 +31 -22
  6. package/Field/FieldBase.js.map +2 -2
  7. package/Field/FieldBaseContainer/index.js +5 -4
  8. package/Field/FieldBaseContainer.js.map +2 -2
  9. package/Field/FieldConditional/index.js +7 -3
  10. package/Field/FieldConditional.js.map +2 -2
  11. package/Field/index.js +10 -2
  12. package/Field/index.js.map +2 -2
  13. package/Field/types.d.ts +15 -9
  14. package/Field/utils/index.d.ts +1 -0
  15. package/Field/utils/index.js +24 -1
  16. package/Field/utils/index.js.map +2 -2
  17. package/Field/utils/useField/index.js +7 -1
  18. package/Field/utils/useField.js.map +2 -2
  19. package/FieldArray/FieldArray.stories.d.ts +1 -0
  20. package/FieldArray/FormDialog/index.js +279 -0
  21. package/{Questions/Questions.stories → FieldArray/FormDialog}/package.json +1 -1
  22. package/FieldArray/FormDialog.d.ts +53 -0
  23. package/FieldArray/FormDialog.js.map +7 -0
  24. package/FieldArray/__stories__/WithModal.d.ts +2 -0
  25. package/FieldArray/index.d.ts +6 -0
  26. package/FieldArray/index.js +59 -23
  27. package/FieldArray/index.js.map +2 -2
  28. package/FieldObject/index.d.ts +4 -0
  29. package/FieldObject/index.js +16 -8
  30. package/FieldObject/index.js.map +2 -2
  31. package/Fieldset/index.d.ts +1 -1
  32. package/Fieldset/index.js +5 -5
  33. package/Fieldset/index.js.map +2 -2
  34. package/Fieldset/types.d.ts +2 -3
  35. package/FormBuilder/FormBuilder.stories.d.ts +2 -0
  36. package/FormBuilder/__stories__/AutoErrorGrouping.d.ts +3 -0
  37. package/FormBuilder/__stories__/ErrorGrouping.d.ts +3 -0
  38. package/FormBuilder/index.d.ts +8 -2
  39. package/FormBuilder/index.js +229 -6
  40. package/FormBuilder/index.js.map +3 -3
  41. package/FormBuilder/interaction.test.d.ts +1 -0
  42. package/FormContext.js.map +2 -2
  43. package/MultiplicityField/add-objects/index.js +11 -7
  44. package/MultiplicityField/add-objects.js.map +2 -2
  45. package/MultiplicityField/index.js +17 -12
  46. package/MultiplicityField/index.js.map +2 -2
  47. package/MultiplicityField/types.d.ts +1 -2
  48. package/Questions/Questions/index.js +5 -4
  49. package/Questions/Questions.js.map +2 -2
  50. package/Questions/QuestionsContext.d.ts +0 -1
  51. package/Questions/Step/StepArrayReview.js.map +2 -2
  52. package/Questions/Step/StepContext.d.ts +0 -1
  53. package/Questions/Step/StepTitle/index.js +4 -3
  54. package/Questions/Step/StepTitle.d.ts +1 -1
  55. package/Questions/Step/StepTitle.js.map +2 -2
  56. package/Questions/Step/types.d.ts +0 -1
  57. package/Questions/types.d.ts +0 -1
  58. package/cjs/Field/ErrorGroup/index.js +82 -0
  59. package/cjs/Field/ErrorGroup.js.map +7 -0
  60. package/cjs/Field/FieldBase/index.js +30 -21
  61. package/cjs/Field/FieldBase.js.map +2 -2
  62. package/cjs/Field/FieldBaseContainer/index.js +5 -4
  63. package/cjs/Field/FieldBaseContainer.js.map +3 -3
  64. package/cjs/Field/FieldConditional/index.js +7 -3
  65. package/cjs/Field/FieldConditional.js.map +2 -2
  66. package/cjs/Field/index.js +10 -2
  67. package/cjs/Field/index.js.map +2 -2
  68. package/cjs/Field/types.js.map +1 -1
  69. package/cjs/Field/utils/index.js +24 -0
  70. package/cjs/Field/utils/index.js.map +3 -3
  71. package/cjs/Field/utils/useField/index.js +7 -1
  72. package/cjs/Field/utils/useField.js.map +2 -2
  73. package/cjs/FieldArray/FormDialog/index.js +301 -0
  74. package/cjs/FieldArray/FormDialog.js.map +7 -0
  75. package/cjs/FieldArray/index.js +58 -22
  76. package/cjs/FieldArray/index.js.map +3 -3
  77. package/cjs/FieldObject/index.js +17 -9
  78. package/cjs/FieldObject/index.js.map +3 -3
  79. package/cjs/Fieldset/index.js +10 -10
  80. package/cjs/Fieldset/index.js.map +3 -3
  81. package/cjs/Fieldset/types.js.map +1 -1
  82. package/cjs/FormBuilder/index.js +244 -5
  83. package/cjs/FormBuilder/index.js.map +3 -3
  84. package/cjs/FormContext/index.js +2 -2
  85. package/cjs/FormContext.js.map +3 -3
  86. package/cjs/MultiplicityField/add-objects/index.js +15 -11
  87. package/cjs/MultiplicityField/add-objects.js.map +3 -3
  88. package/cjs/MultiplicityField/index.js +16 -16
  89. package/cjs/MultiplicityField/index.js.map +3 -3
  90. package/cjs/MultiplicityField/types.js.map +1 -1
  91. package/cjs/Questions/Questions/index.js +5 -4
  92. package/cjs/Questions/Questions.js.map +2 -2
  93. package/cjs/Questions/Step/StepArrayReview.js.map +2 -2
  94. package/cjs/Questions/Step/StepTitle/index.js +5 -5
  95. package/cjs/Questions/Step/StepTitle.js.map +3 -3
  96. package/cjs/index.js +11 -155
  97. package/cjs/index.js.map +4 -4
  98. package/cjs/inputs/AutoCompleteInput/index.js +12 -9
  99. package/cjs/inputs/AutoCompleteInput/index.js.map +3 -3
  100. package/cjs/inputs/Checkboxes/index.js +9 -9
  101. package/cjs/inputs/Checkboxes/index.js.map +3 -3
  102. package/cjs/inputs/DateInput/index.js +10 -8
  103. package/cjs/inputs/DateInput/index.js.map +3 -3
  104. package/cjs/inputs/DateTimeInput/index.js +211 -0
  105. package/cjs/inputs/DateTimeInput/index.js.map +7 -0
  106. package/cjs/inputs/FileInput/index.js +41 -27
  107. package/cjs/inputs/FileInput/index.js.map +3 -3
  108. package/cjs/inputs/ImageInput/index.js +16 -10
  109. package/cjs/inputs/ImageInput/index.js.map +3 -3
  110. package/cjs/inputs/Input/index.js +29 -8
  111. package/cjs/inputs/Input/index.js.map +3 -3
  112. package/cjs/inputs/Input/inputsInputScenarios.js.map +2 -2
  113. package/cjs/inputs/Label/index.js +3 -3
  114. package/cjs/inputs/Label/index.js.map +3 -3
  115. package/cjs/inputs/OtpInput/index.js +1 -0
  116. package/cjs/inputs/OtpInput/index.js.map +2 -2
  117. package/cjs/inputs/Radio/index.js +57 -10
  118. package/cjs/inputs/Radio/index.js.map +3 -3
  119. package/cjs/inputs/Select/index.js +10 -5
  120. package/cjs/inputs/Select/index.js.map +3 -3
  121. package/cjs/inputs/inputsScenarios/index.js +4 -11
  122. package/cjs/inputs/inputsScenarios.js.map +2 -2
  123. package/cjs/lazy/index.js +49 -34
  124. package/cjs/lazy.js.map +3 -3
  125. package/cjs/locales/el.js.map +1 -1
  126. package/cjs/registry/index.js +72 -62
  127. package/cjs/registry.js.map +3 -3
  128. package/cjs/types.js.map +1 -1
  129. package/cjs/utils/index.js +2 -1
  130. package/cjs/utils.js.map +2 -2
  131. package/cjs/validators/index.js +44 -79
  132. package/cjs/validators/index.js.map +3 -3
  133. package/cjs/validators/utils/date/index.js +138 -0
  134. package/cjs/validators/utils/date.js.map +7 -0
  135. package/cjs/validators/utils/datetime/index.js +151 -0
  136. package/cjs/validators/utils/datetime.js.map +7 -0
  137. package/cjs/validators/utils/file/index.js +2 -2
  138. package/cjs/validators/utils/file.js.map +2 -2
  139. package/cjs/validators/utils/index.js +5 -1
  140. package/cjs/validators/utils/index.js.map +2 -2
  141. package/cjs/validators/utils/int/index.js +1 -1
  142. package/cjs/validators/utils/int.js.map +2 -2
  143. package/cjs/validators/utils/number/index.js +1 -1
  144. package/cjs/validators/utils/number.js.map +2 -2
  145. package/cjs/validators/utils/phone.js.map +2 -2
  146. package/cjs/validators/utils/postal_code.js.map +1 -1
  147. package/cjs/validators/utils/uuid4.js.map +2 -2
  148. package/index.d.ts +5 -8
  149. package/index.js +9 -152
  150. package/index.js.map +4 -4
  151. package/inputs/AutoCompleteInput/index.d.ts +1 -1
  152. package/inputs/AutoCompleteInput/index.js +14 -9
  153. package/inputs/AutoCompleteInput/index.js.map +2 -2
  154. package/inputs/Checkboxes/index.d.ts +1 -1
  155. package/inputs/Checkboxes/index.js +10 -6
  156. package/inputs/Checkboxes/index.js.map +2 -2
  157. package/inputs/DateInput/index.d.ts +1 -2
  158. package/inputs/DateInput/index.js +12 -7
  159. package/inputs/DateInput/index.js.map +2 -2
  160. package/inputs/DateTimeInput/DateTimeInput.stories.d.ts +7 -0
  161. package/inputs/DateTimeInput/__stories__/Default.d.ts +3 -0
  162. package/inputs/DateTimeInput/index.d.ts +13 -0
  163. package/inputs/DateTimeInput/index.js +181 -0
  164. package/inputs/DateTimeInput/index.js.map +7 -0
  165. package/inputs/DateTimeInput/index.test.d.ts +1 -0
  166. package/inputs/{Input/Input.stories → DateTimeInput}/package.json +1 -1
  167. package/inputs/FileInput/index.d.ts +9 -0
  168. package/inputs/FileInput/index.js +41 -27
  169. package/inputs/FileInput/index.js.map +2 -2
  170. package/inputs/ImageInput/ImageInput.stories.d.ts +1 -1
  171. package/inputs/ImageInput/__stories__/MaxSize.d.ts +3 -0
  172. package/inputs/ImageInput/index.js +15 -9
  173. package/inputs/ImageInput/index.js.map +2 -2
  174. package/inputs/Input/Input.stories.d.ts +1 -0
  175. package/inputs/Input/__stories__/StringWithTrimValidation.d.ts +3 -0
  176. package/inputs/Input/index.js +27 -6
  177. package/inputs/Input/index.js.map +3 -3
  178. package/inputs/Input/inputsInputScenarios.js.map +2 -2
  179. package/inputs/Label/index.d.ts +0 -2
  180. package/inputs/Label/index.js +2 -2
  181. package/inputs/Label/index.js.map +2 -2
  182. package/inputs/OtpInput/index.js +1 -0
  183. package/inputs/OtpInput/index.js.map +2 -2
  184. package/inputs/Radio/index.d.ts +5 -1
  185. package/inputs/Radio/index.js +58 -8
  186. package/inputs/Radio/index.js.map +2 -2
  187. package/inputs/Select/index.d.ts +1 -1
  188. package/inputs/Select/index.js +11 -3
  189. package/inputs/Select/index.js.map +2 -2
  190. package/inputs/inputsScenarios/index.js +4 -11
  191. package/inputs/inputsScenarios.d.ts +0 -42
  192. package/inputs/inputsScenarios.js.map +2 -2
  193. package/lazy/index.js +76 -65
  194. package/locales/el.js.map +1 -1
  195. package/package.json +4 -4
  196. package/registry/index.js +116 -107
  197. package/src/Field/ErrorGroup.tsx +84 -0
  198. package/src/Field/FieldBase.tsx +34 -22
  199. package/src/Field/FieldBaseContainer.tsx +7 -4
  200. package/src/Field/FieldConditional.tsx +4 -0
  201. package/src/Field/index.tsx +9 -1
  202. package/src/Field/types.tsx +15 -8
  203. package/src/Field/utils/index.ts +24 -1
  204. package/src/Field/utils/useField.ts +7 -3
  205. package/src/FieldArray/FieldArray.stories.js +1 -0
  206. package/src/FieldArray/FormDialog.tsx +378 -0
  207. package/src/FieldArray/__stories__/Default.tsx +1 -0
  208. package/src/FieldArray/__stories__/WithExactLength.tsx +1 -0
  209. package/src/FieldArray/__stories__/WithModal.tsx +159 -0
  210. package/src/FieldArray/index.test.tsx +4 -0
  211. package/src/FieldArray/index.tsx +88 -43
  212. package/src/FieldObject/index.tsx +17 -5
  213. package/src/Fieldset/index.tsx +5 -5
  214. package/src/Fieldset/types.tsx +2 -2
  215. package/src/FormBuilder/FormBuilder.stories.js +2 -0
  216. package/src/FormBuilder/__stories__/AutoErrorGrouping.tsx +63 -0
  217. package/src/FormBuilder/__stories__/ErrorGrouping.tsx +43 -0
  218. package/src/FormBuilder/{FormBuilder.mdx → doc.mdx} +20 -33
  219. package/src/FormBuilder/index.test.tsx +8 -0
  220. package/src/FormBuilder/index.tsx +264 -7
  221. package/src/FormBuilder/interaction.test.tsx +32 -0
  222. package/src/FormBuilder/scenarios.test.tsx +121 -7
  223. package/src/FormContext.tsx +1 -2
  224. package/src/MultiplicityField/add-objects.tsx +10 -8
  225. package/src/MultiplicityField/{MultiplicityField.mdx → doc.mdx} +12 -16
  226. package/src/MultiplicityField/index.tsx +16 -12
  227. package/src/MultiplicityField/types.ts +1 -2
  228. package/src/Questions/Questions.tsx +4 -4
  229. package/src/Questions/Step/StepArrayReview.tsx +1 -1
  230. package/src/Questions/Step/StepTitle.tsx +4 -3
  231. package/src/Questions/__snapshots__/index.spec.tsx.snap +10 -5
  232. package/src/Questions/{index.mdx → doc.mdx} +9 -12
  233. package/src/Questions/index.spec.tsx +14 -2
  234. package/src/create-simple-form.mdx +2 -6
  235. package/src/{index.mdx → doc.mdx} +4 -8
  236. package/src/index.ts +6 -0
  237. package/src/inputs/AutoCompleteInput/__stories__/Default.tsx +2 -10
  238. package/src/inputs/AutoCompleteInput/__stories__/Multiple.tsx +1 -8
  239. package/src/inputs/AutoCompleteInput/{index.mdx → doc.mdx} +2 -13
  240. package/src/inputs/AutoCompleteInput/index.tsx +37 -31
  241. package/src/inputs/Checkboxes/{index.mdx → doc.mdx} +5 -15
  242. package/src/inputs/Checkboxes/index.tsx +12 -8
  243. package/src/inputs/DateInput/__stories__/Default.tsx +7 -12
  244. package/src/inputs/DateInput/{index.mdx → doc.mdx} +1 -8
  245. package/src/inputs/DateInput/index.tsx +12 -7
  246. package/src/inputs/DateTimeInput/DateTimeInput.stories.js +8 -0
  247. package/src/inputs/DateTimeInput/__stories__/Default.tsx +25 -0
  248. package/src/inputs/DateTimeInput/doc.mdx +16 -0
  249. package/src/inputs/DateTimeInput/index.test.tsx +20 -0
  250. package/src/inputs/DateTimeInput/index.tsx +194 -0
  251. package/src/inputs/FileInput/{index.mdx → doc.mdx} +1 -5
  252. package/src/inputs/FileInput/index.tsx +33 -10
  253. package/src/inputs/ImageInput/ImageInput.stories.js +1 -1
  254. package/src/inputs/ImageInput/__stories__/MaxSize.tsx +37 -0
  255. package/src/inputs/ImageInput/__stories__/WithInvalidImageDimension.tsx +2 -0
  256. package/src/inputs/ImageInput/doc.mdx +23 -0
  257. package/src/inputs/ImageInput/index.test.tsx +4 -0
  258. package/src/inputs/ImageInput/index.tsx +17 -16
  259. package/src/inputs/Input/Input.stories.js +1 -0
  260. package/src/inputs/Input/__stories__/LandlineNumber.tsx +2 -1
  261. package/src/inputs/Input/__stories__/MobilePhone.tsx +1 -0
  262. package/src/inputs/Input/__stories__/PhoneNumber.tsx +1 -0
  263. package/src/inputs/Input/__stories__/PostalCode.tsx +1 -0
  264. package/src/inputs/Input/__stories__/StringWithTrimValidation.tsx +26 -0
  265. package/src/inputs/Input/__stories__/TextWithLimit.tsx +1 -0
  266. package/src/inputs/Input/doc.mdx +56 -0
  267. package/src/inputs/Input/index.test.tsx +4 -0
  268. package/src/inputs/Input/index.tsx +41 -30
  269. package/src/inputs/Input/inputsInputScenarios.ts +244 -245
  270. package/src/inputs/Label/doc.mdx +14 -0
  271. package/src/inputs/Label/index.tsx +2 -6
  272. package/src/inputs/OtpInput/{index.mdx → doc.mdx} +1 -8
  273. package/src/inputs/OtpInput/index.tsx +3 -1
  274. package/src/inputs/Radio/__stories__/Conditional.tsx +2 -1
  275. package/src/inputs/Radio/{index.mdx → doc.mdx} +5 -15
  276. package/src/inputs/Radio/index.tsx +77 -10
  277. package/src/inputs/Select/{index.mdx → doc.mdx} +1 -5
  278. package/src/inputs/Select/index.tsx +12 -4
  279. package/src/inputs/inputsScenarios.ts +174 -181
  280. package/src/installation.mdx +2 -5
  281. package/src/lazy.js +76 -62
  282. package/src/locales/el.ts +1 -1
  283. package/src/registry.js +108 -100
  284. package/src/types.tsx +3 -2
  285. package/src/utils.ts +2 -2
  286. package/src/validators/index.ts +86 -85
  287. package/src/validators/utils/date.ts +107 -0
  288. package/src/validators/utils/datetime.ts +130 -0
  289. package/src/validators/utils/file.ts +5 -3
  290. package/src/validators/utils/index.ts +2 -0
  291. package/src/validators/utils/int.ts +1 -1
  292. package/src/validators/utils/number.ts +1 -1
  293. package/src/validators/utils/phone.ts +1 -1
  294. package/src/validators/utils/postal_code.ts +1 -1
  295. package/src/validators/utils/uuid4.ts +2 -1
  296. package/src/validators/validators.spec.ts +3 -3
  297. package/types.d.ts +3 -3
  298. package/types.js.map +1 -1
  299. package/utils/index.js +2 -1
  300. package/utils.js.map +2 -2
  301. package/validators/index.js +51 -80
  302. package/validators/index.js.map +2 -2
  303. package/validators/utils/date/index.js +103 -0
  304. package/{FieldArray/FieldArray.stories → validators/utils/date}/package.json +1 -1
  305. package/validators/utils/date.d.ts +9 -0
  306. package/validators/utils/date.js.map +7 -0
  307. package/validators/utils/datetime/index.js +116 -0
  308. package/validators/utils/datetime/package.json +6 -0
  309. package/validators/utils/datetime.d.ts +9 -0
  310. package/validators/utils/datetime.js.map +7 -0
  311. package/validators/utils/file/index.js +2 -2
  312. package/validators/utils/file.js.map +2 -2
  313. package/validators/utils/index.d.ts +2 -0
  314. package/validators/utils/index.js +2 -0
  315. package/validators/utils/index.js.map +2 -2
  316. package/validators/utils/int/index.js +1 -1
  317. package/validators/utils/int.js.map +2 -2
  318. package/validators/utils/number/index.js +1 -1
  319. package/validators/utils/number.js.map +2 -2
  320. package/validators/utils/phone.d.ts +1 -1
  321. package/validators/utils/phone.js.map +2 -2
  322. package/validators/utils/postal_code.d.ts +1 -1
  323. package/validators/utils/postal_code.js.map +1 -1
  324. package/validators/utils/uuid4.js.map +2 -2
  325. package/FieldArray/FieldArray.stories/index.js +0 -14
  326. package/FieldArray/FieldArray.stories.js.map +0 -7
  327. package/FieldArray/__stories__/Default/index.js +0 -95
  328. package/FieldArray/__stories__/Default/package.json +0 -6
  329. package/FieldArray/__stories__/Default.js.map +0 -7
  330. package/FieldArray/__stories__/WithExactLength/index.js +0 -95
  331. package/FieldArray/__stories__/WithExactLength/package.json +0 -6
  332. package/FieldArray/__stories__/WithExactLength.js.map +0 -7
  333. package/Form.stories/index.js +0 -7
  334. package/Form.stories.js.map +0 -7
  335. package/FormBuilder/FormBuilder.stories/index.js +0 -12
  336. package/FormBuilder/FormBuilder.stories/package.json +0 -6
  337. package/FormBuilder/FormBuilder.stories.js.map +0 -7
  338. package/FormBuilder/__stories__/Default/index.js +0 -32
  339. package/FormBuilder/__stories__/Default/package.json +0 -6
  340. package/FormBuilder/__stories__/Default.js.map +0 -7
  341. package/MultiplicityField/MultiplicityField.stories/index.js +0 -22
  342. package/MultiplicityField/MultiplicityField.stories/package.json +0 -6
  343. package/MultiplicityField/MultiplicityField.stories.js.map +0 -7
  344. package/MultiplicityField/__stories__/Default/index.js +0 -100
  345. package/MultiplicityField/__stories__/Default/package.json +0 -6
  346. package/MultiplicityField/__stories__/Default.js.map +0 -7
  347. package/MultiplicityField/__stories__/PreviewDisplay/index.js +0 -70
  348. package/MultiplicityField/__stories__/PreviewDisplay/package.json +0 -6
  349. package/MultiplicityField/__stories__/PreviewDisplay.js.map +0 -7
  350. package/MultiplicityField/__stories__/WithExactLength/index.js +0 -97
  351. package/MultiplicityField/__stories__/WithExactLength/package.json +0 -6
  352. package/MultiplicityField/__stories__/WithExactLength.js.map +0 -7
  353. package/MultiplicityField/__stories__/WithMaxLength/index.js +0 -100
  354. package/MultiplicityField/__stories__/WithMaxLength/package.json +0 -6
  355. package/MultiplicityField/__stories__/WithMaxLength.js.map +0 -7
  356. package/MultiplicityField/__stories__/WithMinAndMaxLength/index.js +0 -101
  357. package/MultiplicityField/__stories__/WithMinAndMaxLength/package.json +0 -6
  358. package/MultiplicityField/__stories__/WithMinAndMaxLength.js.map +0 -7
  359. package/MultiplicityField/__stories__/WithMinLength/index.js +0 -100
  360. package/MultiplicityField/__stories__/WithMinLength/package.json +0 -6
  361. package/MultiplicityField/__stories__/WithMinLength.js.map +0 -7
  362. package/Questions/Questions.stories/index.js +0 -12
  363. package/Questions/Questions.stories.js.map +0 -7
  364. package/Questions/__stories__/Default/index.js +0 -108
  365. package/Questions/__stories__/Default/package.json +0 -6
  366. package/Questions/__stories__/Default.js.map +0 -7
  367. package/cjs/FieldArray/FieldArray.stories/index.js +0 -48
  368. package/cjs/FieldArray/FieldArray.stories.js.map +0 -7
  369. package/cjs/FieldArray/__stories__/Default/index.js +0 -128
  370. package/cjs/FieldArray/__stories__/Default.js.map +0 -7
  371. package/cjs/FieldArray/__stories__/WithExactLength/index.js +0 -128
  372. package/cjs/FieldArray/__stories__/WithExactLength.js.map +0 -7
  373. package/cjs/Form.stories/index.js +0 -26
  374. package/cjs/Form.stories.js.map +0 -7
  375. package/cjs/FormBuilder/FormBuilder.stories/index.js +0 -45
  376. package/cjs/FormBuilder/FormBuilder.stories.js.map +0 -7
  377. package/cjs/FormBuilder/__stories__/Default/index.js +0 -65
  378. package/cjs/FormBuilder/__stories__/Default.js.map +0 -7
  379. package/cjs/MultiplicityField/MultiplicityField.stories/index.js +0 -60
  380. package/cjs/MultiplicityField/MultiplicityField.stories.js.map +0 -7
  381. package/cjs/MultiplicityField/__stories__/Default/index.js +0 -133
  382. package/cjs/MultiplicityField/__stories__/Default.js.map +0 -7
  383. package/cjs/MultiplicityField/__stories__/PreviewDisplay/index.js +0 -86
  384. package/cjs/MultiplicityField/__stories__/PreviewDisplay.js.map +0 -7
  385. package/cjs/MultiplicityField/__stories__/WithExactLength/index.js +0 -130
  386. package/cjs/MultiplicityField/__stories__/WithExactLength.js.map +0 -7
  387. package/cjs/MultiplicityField/__stories__/WithMaxLength/index.js +0 -133
  388. package/cjs/MultiplicityField/__stories__/WithMaxLength.js.map +0 -7
  389. package/cjs/MultiplicityField/__stories__/WithMinAndMaxLength/index.js +0 -134
  390. package/cjs/MultiplicityField/__stories__/WithMinAndMaxLength.js.map +0 -7
  391. package/cjs/MultiplicityField/__stories__/WithMinLength/index.js +0 -133
  392. package/cjs/MultiplicityField/__stories__/WithMinLength.js.map +0 -7
  393. package/cjs/Questions/Questions.stories/index.js +0 -45
  394. package/cjs/Questions/Questions.stories.js.map +0 -7
  395. package/cjs/Questions/__stories__/Default/index.js +0 -136
  396. package/cjs/Questions/__stories__/Default.js.map +0 -7
  397. package/cjs/inputs/AutoCompleteInput/AutoComplete.stories/index.js +0 -48
  398. package/cjs/inputs/AutoCompleteInput/AutoComplete.stories.js.map +0 -7
  399. package/cjs/inputs/AutoCompleteInput/__stories__/Default/index.js +0 -83
  400. package/cjs/inputs/AutoCompleteInput/__stories__/Default.js.map +0 -7
  401. package/cjs/inputs/AutoCompleteInput/__stories__/Multiple/index.js +0 -84
  402. package/cjs/inputs/AutoCompleteInput/__stories__/Multiple.js.map +0 -7
  403. package/cjs/inputs/Checkboxes/Checkboxes.stories/index.js +0 -51
  404. package/cjs/inputs/Checkboxes/Checkboxes.stories.js.map +0 -7
  405. package/cjs/inputs/Checkboxes/__stories__/Conditional/index.js +0 -133
  406. package/cjs/inputs/Checkboxes/__stories__/Conditional.js.map +0 -7
  407. package/cjs/inputs/Checkboxes/__stories__/Default/index.js +0 -77
  408. package/cjs/inputs/Checkboxes/__stories__/Default.js.map +0 -7
  409. package/cjs/inputs/Checkboxes/__stories__/WithDivider/index.js +0 -78
  410. package/cjs/inputs/Checkboxes/__stories__/WithDivider.js.map +0 -7
  411. package/cjs/inputs/DateInput/DateInput.stories/index.js +0 -45
  412. package/cjs/inputs/DateInput/DateInput.stories.js.map +0 -7
  413. package/cjs/inputs/DateInput/__stories__/Default/index.js +0 -61
  414. package/cjs/inputs/DateInput/__stories__/Default.js.map +0 -7
  415. package/cjs/inputs/FileInput/FileInput.stories/index.js +0 -45
  416. package/cjs/inputs/FileInput/FileInput.stories.js.map +0 -7
  417. package/cjs/inputs/FileInput/__stories__/Default/index.js +0 -61
  418. package/cjs/inputs/FileInput/__stories__/Default.js.map +0 -7
  419. package/cjs/inputs/ImageInput/ImageInput.stories/index.js +0 -51
  420. package/cjs/inputs/ImageInput/ImageInput.stories.js.map +0 -7
  421. package/cjs/inputs/ImageInput/__stories__/Default/index.js +0 -63
  422. package/cjs/inputs/ImageInput/__stories__/Default.js.map +0 -7
  423. package/cjs/inputs/ImageInput/__stories__/WithInvalidImageDimension/index.js +0 -71
  424. package/cjs/inputs/ImageInput/__stories__/WithInvalidImageDimension.js.map +0 -7
  425. package/cjs/inputs/ImageInput/__stories__/WithInvalidImageSize/index.js +0 -68
  426. package/cjs/inputs/ImageInput/__stories__/WithInvalidImageSize.js.map +0 -7
  427. package/cjs/inputs/Input/Input.stories/index.js +0 -72
  428. package/cjs/inputs/Input/Input.stories.js.map +0 -7
  429. package/cjs/inputs/Input/__stories__/AFM/index.js +0 -63
  430. package/cjs/inputs/Input/__stories__/AFM.js.map +0 -7
  431. package/cjs/inputs/Input/__stories__/Boolean/index.js +0 -64
  432. package/cjs/inputs/Input/__stories__/Boolean.js.map +0 -7
  433. package/cjs/inputs/Input/__stories__/IBAN/index.js +0 -64
  434. package/cjs/inputs/Input/__stories__/IBAN.js.map +0 -7
  435. package/cjs/inputs/Input/__stories__/Integer/index.js +0 -78
  436. package/cjs/inputs/Input/__stories__/Integer.js.map +0 -7
  437. package/cjs/inputs/Input/__stories__/LandlineNumber/index.js +0 -67
  438. package/cjs/inputs/Input/__stories__/LandlineNumber.js.map +0 -7
  439. package/cjs/inputs/Input/__stories__/MobilePhone/index.js +0 -67
  440. package/cjs/inputs/Input/__stories__/MobilePhone.js.map +0 -7
  441. package/cjs/inputs/Input/__stories__/PhoneNumber/index.js +0 -66
  442. package/cjs/inputs/Input/__stories__/PhoneNumber.js.map +0 -7
  443. package/cjs/inputs/Input/__stories__/PostalCode/index.js +0 -64
  444. package/cjs/inputs/Input/__stories__/PostalCode.js.map +0 -7
  445. package/cjs/inputs/Input/__stories__/String/index.js +0 -64
  446. package/cjs/inputs/Input/__stories__/String.js.map +0 -7
  447. package/cjs/inputs/Input/__stories__/TextWithLimit/index.js +0 -64
  448. package/cjs/inputs/Input/__stories__/TextWithLimit.js.map +0 -7
  449. package/cjs/inputs/Label/Label.stories/index.js +0 -45
  450. package/cjs/inputs/Label/Label.stories.js.map +0 -7
  451. package/cjs/inputs/Label/__stories__/Default/index.js +0 -72
  452. package/cjs/inputs/Label/__stories__/Default.js.map +0 -7
  453. package/cjs/inputs/OtpInput/OtpInput.stories/index.js +0 -45
  454. package/cjs/inputs/OtpInput/OtpInput.stories.js.map +0 -7
  455. package/cjs/inputs/OtpInput/__stories__/Default/index.js +0 -64
  456. package/cjs/inputs/OtpInput/__stories__/Default.js.map +0 -7
  457. package/cjs/inputs/Radio/Radio.stories/index.js +0 -51
  458. package/cjs/inputs/Radio/Radio.stories.js.map +0 -7
  459. package/cjs/inputs/Radio/__stories__/Conditional/index.js +0 -133
  460. package/cjs/inputs/Radio/__stories__/Conditional.js.map +0 -7
  461. package/cjs/inputs/Radio/__stories__/Default/index.js +0 -81
  462. package/cjs/inputs/Radio/__stories__/Default.js.map +0 -7
  463. package/cjs/inputs/Radio/__stories__/WithDivider/index.js +0 -82
  464. package/cjs/inputs/Radio/__stories__/WithDivider.js.map +0 -7
  465. package/cjs/inputs/Select/Select.stories/index.js +0 -45
  466. package/cjs/inputs/Select/Select.stories.js.map +0 -7
  467. package/cjs/inputs/Select/__stories__/Default/index.js +0 -86
  468. package/cjs/inputs/Select/__stories__/Default.js.map +0 -7
  469. package/inputs/AutoCompleteInput/AutoComplete.stories/index.js +0 -14
  470. package/inputs/AutoCompleteInput/AutoComplete.stories/package.json +0 -6
  471. package/inputs/AutoCompleteInput/AutoComplete.stories.js.map +0 -7
  472. package/inputs/AutoCompleteInput/__stories__/Default/index.js +0 -50
  473. package/inputs/AutoCompleteInput/__stories__/Default/package.json +0 -6
  474. package/inputs/AutoCompleteInput/__stories__/Default.js.map +0 -7
  475. package/inputs/AutoCompleteInput/__stories__/Multiple/index.js +0 -51
  476. package/inputs/AutoCompleteInput/__stories__/Multiple/package.json +0 -6
  477. package/inputs/AutoCompleteInput/__stories__/Multiple.js.map +0 -7
  478. package/inputs/Checkboxes/Checkboxes.stories/index.js +0 -16
  479. package/inputs/Checkboxes/Checkboxes.stories/package.json +0 -6
  480. package/inputs/Checkboxes/Checkboxes.stories.js.map +0 -7
  481. package/inputs/Checkboxes/__stories__/Conditional/index.js +0 -100
  482. package/inputs/Checkboxes/__stories__/Conditional/package.json +0 -6
  483. package/inputs/Checkboxes/__stories__/Conditional.js.map +0 -7
  484. package/inputs/Checkboxes/__stories__/Default/index.js +0 -44
  485. package/inputs/Checkboxes/__stories__/Default/package.json +0 -6
  486. package/inputs/Checkboxes/__stories__/Default.js.map +0 -7
  487. package/inputs/Checkboxes/__stories__/WithDivider/index.js +0 -45
  488. package/inputs/Checkboxes/__stories__/WithDivider/package.json +0 -6
  489. package/inputs/Checkboxes/__stories__/WithDivider.js.map +0 -7
  490. package/inputs/DateInput/DateInput.stories/index.js +0 -12
  491. package/inputs/DateInput/DateInput.stories/package.json +0 -6
  492. package/inputs/DateInput/DateInput.stories.js.map +0 -7
  493. package/inputs/DateInput/__stories__/Default/index.js +0 -28
  494. package/inputs/DateInput/__stories__/Default/package.json +0 -6
  495. package/inputs/DateInput/__stories__/Default.js.map +0 -7
  496. package/inputs/FileInput/FileInput.stories/index.js +0 -12
  497. package/inputs/FileInput/FileInput.stories/package.json +0 -6
  498. package/inputs/FileInput/FileInput.stories.js.map +0 -7
  499. package/inputs/FileInput/__stories__/Default/index.js +0 -28
  500. package/inputs/FileInput/__stories__/Default/package.json +0 -6
  501. package/inputs/FileInput/__stories__/Default.js.map +0 -7
  502. package/inputs/ImageInput/ImageInput.stories/index.js +0 -16
  503. package/inputs/ImageInput/ImageInput.stories/package.json +0 -6
  504. package/inputs/ImageInput/ImageInput.stories.js.map +0 -7
  505. package/inputs/ImageInput/__stories__/Default/index.js +0 -30
  506. package/inputs/ImageInput/__stories__/Default/package.json +0 -6
  507. package/inputs/ImageInput/__stories__/Default.js.map +0 -7
  508. package/inputs/ImageInput/__stories__/WithInvalidImageDimension/index.js +0 -38
  509. package/inputs/ImageInput/__stories__/WithInvalidImageDimension/package.json +0 -6
  510. package/inputs/ImageInput/__stories__/WithInvalidImageDimension.js.map +0 -7
  511. package/inputs/ImageInput/__stories__/WithInvalidImageSize/index.js +0 -35
  512. package/inputs/ImageInput/__stories__/WithInvalidImageSize/package.json +0 -6
  513. package/inputs/ImageInput/__stories__/WithInvalidImageSize.js.map +0 -7
  514. package/inputs/Input/Input.stories/index.js +0 -30
  515. package/inputs/Input/Input.stories.js.map +0 -7
  516. package/inputs/Input/__stories__/AFM/index.js +0 -30
  517. package/inputs/Input/__stories__/AFM/package.json +0 -6
  518. package/inputs/Input/__stories__/AFM.js.map +0 -7
  519. package/inputs/Input/__stories__/Boolean/index.js +0 -31
  520. package/inputs/Input/__stories__/Boolean/package.json +0 -6
  521. package/inputs/Input/__stories__/Boolean.js.map +0 -7
  522. package/inputs/Input/__stories__/IBAN/index.js +0 -31
  523. package/inputs/Input/__stories__/IBAN/package.json +0 -6
  524. package/inputs/Input/__stories__/IBAN.js.map +0 -7
  525. package/inputs/Input/__stories__/Integer/index.js +0 -45
  526. package/inputs/Input/__stories__/Integer/package.json +0 -6
  527. package/inputs/Input/__stories__/Integer.js.map +0 -7
  528. package/inputs/Input/__stories__/LandlineNumber/index.js +0 -34
  529. package/inputs/Input/__stories__/LandlineNumber/package.json +0 -6
  530. package/inputs/Input/__stories__/LandlineNumber.js.map +0 -7
  531. package/inputs/Input/__stories__/MobilePhone/index.js +0 -34
  532. package/inputs/Input/__stories__/MobilePhone/package.json +0 -6
  533. package/inputs/Input/__stories__/MobilePhone.js.map +0 -7
  534. package/inputs/Input/__stories__/PhoneNumber/index.js +0 -33
  535. package/inputs/Input/__stories__/PhoneNumber/package.json +0 -6
  536. package/inputs/Input/__stories__/PhoneNumber.js.map +0 -7
  537. package/inputs/Input/__stories__/PostalCode/index.js +0 -31
  538. package/inputs/Input/__stories__/PostalCode/package.json +0 -6
  539. package/inputs/Input/__stories__/PostalCode.js.map +0 -7
  540. package/inputs/Input/__stories__/String/index.js +0 -31
  541. package/inputs/Input/__stories__/String/package.json +0 -6
  542. package/inputs/Input/__stories__/String.js.map +0 -7
  543. package/inputs/Input/__stories__/TextWithLimit/index.js +0 -31
  544. package/inputs/Input/__stories__/TextWithLimit/package.json +0 -6
  545. package/inputs/Input/__stories__/TextWithLimit.js.map +0 -7
  546. package/inputs/Label/Label.stories/index.js +0 -12
  547. package/inputs/Label/Label.stories/package.json +0 -6
  548. package/inputs/Label/Label.stories.js.map +0 -7
  549. package/inputs/Label/__stories__/Default/index.js +0 -39
  550. package/inputs/Label/__stories__/Default/package.json +0 -6
  551. package/inputs/Label/__stories__/Default.js.map +0 -7
  552. package/inputs/OtpInput/OtpInput.stories/index.js +0 -12
  553. package/inputs/OtpInput/OtpInput.stories/package.json +0 -6
  554. package/inputs/OtpInput/OtpInput.stories.js.map +0 -7
  555. package/inputs/OtpInput/__stories__/Default/index.js +0 -31
  556. package/inputs/OtpInput/__stories__/Default/package.json +0 -6
  557. package/inputs/OtpInput/__stories__/Default.js.map +0 -7
  558. package/inputs/Radio/Radio.stories/index.js +0 -16
  559. package/inputs/Radio/Radio.stories/package.json +0 -6
  560. package/inputs/Radio/Radio.stories.js.map +0 -7
  561. package/inputs/Radio/__stories__/Conditional/index.js +0 -100
  562. package/inputs/Radio/__stories__/Conditional/package.json +0 -6
  563. package/inputs/Radio/__stories__/Conditional.js.map +0 -7
  564. package/inputs/Radio/__stories__/Default/index.js +0 -48
  565. package/inputs/Radio/__stories__/Default/package.json +0 -6
  566. package/inputs/Radio/__stories__/Default.js.map +0 -7
  567. package/inputs/Radio/__stories__/WithDivider/index.js +0 -49
  568. package/inputs/Radio/__stories__/WithDivider/package.json +0 -6
  569. package/inputs/Radio/__stories__/WithDivider.js.map +0 -7
  570. package/inputs/Select/Select.stories/index.js +0 -12
  571. package/inputs/Select/Select.stories/package.json +0 -6
  572. package/inputs/Select/Select.stories.js.map +0 -7
  573. package/inputs/Select/__stories__/Default/index.js +0 -53
  574. package/inputs/Select/__stories__/Default/package.json +0 -6
  575. package/inputs/Select/__stories__/Default.js.map +0 -7
  576. package/lazy.d.ts +0 -72
  577. package/lazy.js.map +0 -7
  578. package/registry.d.ts +0 -70
  579. package/registry.js.map +0 -7
  580. package/src/index.tsx +0 -178
  581. package/src/inputs/ImageInput/index.mdx +0 -19
  582. package/src/inputs/Input/index.mdx +0 -95
  583. package/src/inputs/Label/index.mdx +0 -0
  584. /package/src/Field/{index.mdx → doc.mdx} +0 -0
@@ -3,10 +3,11 @@ import { ErrorOption, UseFormReturn, UseFormProps } from 'react-hook-form';
3
3
  import { ValidatorSchema } from '@digigov/form/validators/types';
4
4
  import { GridProps } from '@digigov/ui/layouts/Grid';
5
5
 
6
- export type FieldLabelProps = {
6
+ export interface FieldLabelProps {
7
7
  primary?: string;
8
8
  secondary?: string;
9
- };
9
+ hint?: string;
10
+ }
10
11
 
11
12
  export interface FieldSpec {
12
13
  key: string; // !TODO rename key to name;
@@ -21,6 +22,7 @@ export interface FieldSpec {
21
22
  | 'choice:single'
22
23
  | 'mobile_phone'
23
24
  | 'date'
25
+ | 'datetime'
24
26
  | 'otp'
25
27
  | 'afm'
26
28
  | 'iban'
@@ -30,15 +32,16 @@ export interface FieldSpec {
30
32
  | 'phone_number'
31
33
  | 'array'
32
34
  | 'object';
35
+ trim?: boolean;
33
36
  component?: any;
37
+ autoComplete?: string;
34
38
  maxLength?: number;
35
39
  condition?: Record<string, FieldCondition>;
36
40
  controlled?: boolean;
37
41
  label?: FieldLabelProps;
38
- extra?: {
39
- [key: string]: any;
40
- };
42
+ extra?: Record<string, any>;
41
43
  editable?: boolean;
44
+ variant?: 'inline' | 'dialog';
42
45
  required?: boolean;
43
46
  enabled?: boolean;
44
47
  disabled?: boolean;
@@ -77,20 +80,22 @@ export interface FieldConditionalProps {
77
80
  register: UseFormReturn['register'];
78
81
  reset: UseFormReturn['reset'];
79
82
  error?: ErrorOption;
83
+ Field: React.FC<FieldProps>;
80
84
  }
81
85
 
82
- export type FieldComponentItem = {
86
+ export interface FieldComponentItem {
83
87
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
84
88
  component: any;
85
89
  controlled?: boolean;
86
90
  wrapper?: FieldSpec['wrapper'];
87
- };
91
+ }
88
92
 
89
93
  export interface FieldContainerProps {
90
94
  name?: FieldSpec['key'];
91
95
  layout?: FieldSpec['layout'];
92
96
  label?: FieldSpec['label'];
93
97
  error?: ErrorOption | Record<string, any>;
98
+ hasError?: boolean;
94
99
  children?: React.ReactNode;
95
100
  wrapper?: FieldSpec['wrapper'];
96
101
  }
@@ -111,6 +116,7 @@ export interface ControlledFieldProps {
111
116
  error?: boolean;
112
117
  name?: string;
113
118
  disabled?: boolean;
119
+ Field: React.FC<FieldProps>;
114
120
  }
115
121
 
116
122
  export interface UncontrolledFieldProps {
@@ -121,6 +127,7 @@ export interface UncontrolledFieldProps {
121
127
  extra?: Record<string, never>;
122
128
  type?: string;
123
129
  disabled?: boolean;
130
+ Field: React.FC<FieldProps>;
124
131
  }
125
132
 
126
133
  export interface CalculatedField extends OmittedFieldSpec {
@@ -137,7 +144,7 @@ export interface FieldBaseProps extends CalculatedField {
137
144
  control: UseFormReturn['control'];
138
145
  register: UseFormReturn['register'];
139
146
  reset: UseFormReturn['reset'];
140
- fieldComponent?: React.FC<FieldBaseProps>;
147
+ Field: React.FC<FieldProps>;
141
148
  }
142
149
 
143
150
  export interface FieldProps extends FieldSpec {
@@ -2,11 +2,12 @@ import { FieldComponentRegistry } from '@digigov/form/Field/types';
2
2
  import AutoCompleteInput from '@digigov/form/inputs/AutoCompleteInput';
3
3
  import Checkboxes from '@digigov/form/inputs/Checkboxes';
4
4
  import DateInput from '@digigov/form/inputs/DateInput';
5
+ import DateTimeInput from '@digigov/form/inputs/DateTimeInput';
5
6
  import FileInput from '@digigov/form/inputs/FileInput';
6
7
  import ImageInput from '@digigov/form/inputs/ImageInput';
7
8
  import Input from '@digigov/form/inputs/Input';
8
9
  import OtpInput from '@digigov/form/inputs/OtpInput';
9
- import Radio from '@digigov/form/inputs/Radio';
10
+ import Radio, { ControlledRadioButtonsGroup } from '@digigov/form/inputs/Radio';
10
11
  import Select from '@digigov/form/inputs/Select';
11
12
 
12
13
  export const FIELD_COMPONENTS: FieldComponentRegistry = {
@@ -29,6 +30,11 @@ export const FIELD_COMPONENTS: FieldComponentRegistry = {
29
30
  controlled: true,
30
31
  component: DateInput,
31
32
  },
33
+ datetime: {
34
+ wrapper: 'fieldset',
35
+ controlled: true,
36
+ component: DateTimeInput,
37
+ },
32
38
  otp: {
33
39
  wrapper: 'fieldset',
34
40
  controlled: true,
@@ -57,3 +63,20 @@ export const ALTERNATIVE_COMPONENTS: FieldComponentRegistry = {
57
63
  wrapper: 'fieldset',
58
64
  },
59
65
  };
66
+
67
+ export const CONTROLLED_FIELD_COMPONENTS: FieldComponentRegistry = {
68
+ ...FIELD_COMPONENTS,
69
+ 'choice:single': {
70
+ wrapper: 'fieldset',
71
+ controlled: true,
72
+ component: ControlledRadioButtonsGroup,
73
+ },
74
+ text: {
75
+ component: Input,
76
+ controlled: true,
77
+ },
78
+ string: {
79
+ component: Input,
80
+ controlled: true,
81
+ },
82
+ };
@@ -23,14 +23,18 @@ export const useField = (
23
23
  unregister,
24
24
  formState,
25
25
  } = useContext(FormContext);
26
-
27
26
  if (!registerField) {
28
27
  throw new Error(`
29
28
  You can't use the Field component without wrapping it in FormBuilder.
30
29
  https://devs.pages.grnet.gr/digigov/digigov-sdk/sdk-docs/forms/create-simple-form/
31
30
  `);
32
31
  }
33
-
32
+ let error = errors[name];
33
+ const nameIndexRegex = name.match(/^(.*?)\.(\d+)$/);
34
+ if (nameIndexRegex) {
35
+ const [, fieldArrayName, indexStr] = nameIndexRegex;
36
+ error = errors[fieldArrayName]?.[Number(indexStr)];
37
+ }
34
38
  useMemo(
35
39
  () => customField?.type && registerField({ ...customField, key: name }),
36
40
  [customField, name, registerField]
@@ -49,6 +53,6 @@ export const useField = (
49
53
  getValues,
50
54
  unregister,
51
55
  formState,
52
- error: errors[name],
56
+ error,
53
57
  };
54
58
  };
@@ -5,4 +5,5 @@ export default {
5
5
  displayName: 'FieldArray',
6
6
  };
7
7
  export { Default } from '@digigov/form/FieldArray/__stories__/Default';
8
+ export { WithModal } from '@digigov/form/FieldArray/__stories__/WithModal';
8
9
  export { WithExactLength } from '@digigov/form/FieldArray/__stories__/WithExactLength';
@@ -0,0 +1,378 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import { ErrorOption, useFieldArray, UseFormReturn } from 'react-hook-form';
3
+ import { FieldProps } from '@digigov/form/Field/types';
4
+ import { FieldObject } from '@digigov/form/FieldObject';
5
+ import { Fieldset } from '@digigov/form/Fieldset';
6
+ import {
7
+ Modal,
8
+ ModalAction,
9
+ ModalContent,
10
+ ModalHeading,
11
+ useModal,
12
+ } from '@digigov/ui/app/Modal';
13
+ import {
14
+ Table,
15
+ TableBody,
16
+ TableContainer,
17
+ TableDataCell,
18
+ TableHead,
19
+ TableHeadCell,
20
+ TableRow,
21
+ } from '@digigov/ui/content';
22
+ import { Button, ButtonGroup } from '@digigov/ui/form/Button';
23
+ import { Hint } from '@digigov/ui/typography/Hint';
24
+
25
+ export interface FormDialogProps extends FieldProps {
26
+ control: UseFormReturn['control'];
27
+ trigger: UseFormReturn['trigger'];
28
+ register: UseFormReturn['register'];
29
+ clearErrors: UseFormReturn['clearErrors'];
30
+ formState: UseFormReturn['formState'];
31
+ error?: ErrorOption;
32
+ getValues: UseFormReturn['getValues'];
33
+ setValue: UseFormReturn['setValue'];
34
+ reset: UseFormReturn['reset'];
35
+ Field: React.FC<FieldProps>;
36
+ }
37
+
38
+ export interface DialogProps {
39
+ name: string;
40
+ heading: string;
41
+ actions: React.ReactNode;
42
+ children: React.ReactNode;
43
+ registerModal: (any) => {};
44
+ }
45
+
46
+ export const FormDialog: React.FC<FormDialogProps> = ({
47
+ name,
48
+ trigger,
49
+ register,
50
+ control,
51
+ formState,
52
+ error,
53
+ getValues,
54
+ Field,
55
+ reset,
56
+ ...customField
57
+ }) => {
58
+ const [isAppending, setIsAppending] = useState(false);
59
+ const [currentIndex, setCurrentIndex] = useState(0);
60
+ const { fields, append, remove, update } = useFieldArray({
61
+ control,
62
+ name,
63
+ });
64
+ const { open, close, registerModal } = useModal();
65
+ const currentLength = fields.length > 0 ? fields.length - 1 : fields.length;
66
+ const currentName = isAppending
67
+ ? `${name}.${currentLength}`
68
+ : `${name}.${currentIndex}`;
69
+ useEffect(() => {
70
+ if (isAppending) {
71
+ setCurrentIndex(currentLength);
72
+ open(`modal-${name}`);
73
+ }
74
+ }, [isAppending]);
75
+
76
+ const valuesRef = useRef(null);
77
+ if (!error) {
78
+ const values = getValues(currentName);
79
+ if (typeof values === 'object') {
80
+ valuesRef.current = { ...values };
81
+ } else {
82
+ valuesRef.current = values;
83
+ }
84
+ }
85
+ const values = getValues(name);
86
+ return (
87
+ <>
88
+ <ArrayItemModal
89
+ title={
90
+ customField.extra?.label.object.title &&
91
+ `${customField.extra?.label.object.title} ${currentLength + 1}`
92
+ }
93
+ hint={customField.label?.secondary}
94
+ name={name}
95
+ editOrAppend={async () => {
96
+ const hasNoErrors = await trigger(
97
+ customField.extra?.of.extra
98
+ ? customField.extra?.of.extra.fields.map(
99
+ ({ key }) => `${currentName}.${key}`
100
+ )
101
+ : currentName
102
+ );
103
+ if (hasNoErrors) {
104
+ const newValues = getValues(currentName);
105
+ if (isAppending) {
106
+ setIsAppending(false);
107
+ }
108
+ if (customField?.extra?.of?.extra) {
109
+ update(currentIndex, newValues);
110
+ } else {
111
+ update(currentIndex, newValues);
112
+ }
113
+ close();
114
+ }
115
+ }}
116
+ cancel={() => {
117
+ if (isAppending) {
118
+ setIsAppending(false);
119
+ remove(currentIndex);
120
+ close();
121
+ return;
122
+ }
123
+ update(currentIndex, valuesRef.current);
124
+ reset(undefined, {
125
+ keepTouched: true,
126
+ keepDefaultValues: true,
127
+ keepIsValid: true,
128
+ keepIsSubmitted: true,
129
+ keepValues: true,
130
+ });
131
+ close();
132
+ }}
133
+ type={isAppending ? 'append' : 'edit'}
134
+ appendLabel={customField.extra?.label.object.append.label}
135
+ appendProps={customField.extra?.label.object.append.props}
136
+ editLabel={customField.extra?.label.object.edit.label}
137
+ editProps={customField.extra?.label.object.edit.props}
138
+ cancelLabel={customField.extra?.label.object.cancel.label}
139
+ cancelProps={customField.extra?.label.object.cancel.props}
140
+ {...registerModal(`modal-${name}`)}
141
+ >
142
+ <Fieldset>
143
+ {customField.extra?.of?.type === 'object' ? (
144
+ <FieldObject
145
+ defaultValue={getValues(currentName) || undefined}
146
+ name={currentName}
147
+ error={error && error[currentIndex]}
148
+ formState={formState}
149
+ register={register}
150
+ control={control}
151
+ {...customField.extra?.of}
152
+ Field={Field}
153
+ />
154
+ ) : (
155
+ <Field
156
+ name={currentName}
157
+ {...customField.extra?.of}
158
+ error={error && error[currentIndex]}
159
+ key={currentName}
160
+ />
161
+ )}
162
+ </Fieldset>
163
+ </ArrayItemModal>
164
+ <TableContainer>
165
+ <Table>
166
+ {!customField.extra?.noHeader && customField.extra?.of?.extra && (
167
+ <ArrayItemHeader
168
+ labels={customField.extra?.of.extra.fields.map(
169
+ ({ label }) => label.primary
170
+ )}
171
+ disabled={customField.extra?.editable === false}
172
+ />
173
+ )}
174
+ <TableBody>
175
+ {values?.map((field, index) => {
176
+ return (
177
+ <ArrayItemDisplay
178
+ key={index}
179
+ name={`${name}.${index}`}
180
+ data={field}
181
+ edit={() => {
182
+ setCurrentIndex(index);
183
+ open(`modal-${name}`);
184
+ }}
185
+ remove={() => {
186
+ remove(index);
187
+ }}
188
+ disabledEdit={customField.extra?.noEdit ?? false}
189
+ disabledDelete={customField.extra?.noDelete ?? false}
190
+ disabled={customField.extra?.editable ?? false}
191
+ />
192
+ );
193
+ })}
194
+ </TableBody>
195
+ </Table>
196
+ </TableContainer>
197
+ <div
198
+ className={
199
+ customField.extra?.label.object?.addButtonVariant === 'link'
200
+ ? 'px-2 py-2 bg-gray-200 border-t border-b border-gray-400'
201
+ : ''
202
+ }
203
+ >
204
+ <Button
205
+ type="button"
206
+ name={`${name}-add-object`}
207
+ color="secondary"
208
+ variant={customField.extra?.label.object?.addButtonVariant}
209
+ onClick={(ev) => {
210
+ ev.preventDefault();
211
+ if (customField.extra?.of?.extra) {
212
+ append({});
213
+ } else {
214
+ append('');
215
+ }
216
+ setCurrentIndex(currentLength + 1);
217
+ setIsAppending(true);
218
+ }}
219
+ disabled={!customField?.editable}
220
+ >
221
+ {customField.extra?.label.object?.add}
222
+ </Button>
223
+ </div>
224
+ </>
225
+ );
226
+ };
227
+
228
+ export const ArrayItemModal = ({
229
+ type,
230
+ name,
231
+ title,
232
+ hint,
233
+ editOrAppend,
234
+ cancel,
235
+ editLabel,
236
+ editProps,
237
+ appendLabel,
238
+ appendProps,
239
+ cancelLabel,
240
+ cancelProps,
241
+ children,
242
+ ...props
243
+ }: {
244
+ type: 'append' | 'edit';
245
+ name: string;
246
+ title?: string;
247
+ hint?: string;
248
+ editOrAppend: (name: string) => void;
249
+ cancel: (name: string) => void;
250
+ editLabel?: string;
251
+ editProps?: any;
252
+ appendLabel?: string;
253
+ appendProps?: any;
254
+ cancelLabel?: string;
255
+ cancelProps?: any;
256
+ children: React.ReactNode;
257
+ [key: string]: any;
258
+ }) => {
259
+ return (
260
+ <Modal {...props} aria-labelledby="modal-label">
261
+ <ModalHeading id="modal-label">
262
+ {title ? title : type === 'edit' ? 'Επεξεργασία' : 'Προσθήκη'}
263
+ </ModalHeading>
264
+ <ModalContent>
265
+ {hint && <Hint>{hint}</Hint>}
266
+ {children}
267
+ </ModalContent>
268
+ <ModalAction>
269
+ {type === 'edit' ? (
270
+ <Button
271
+ color="secondary"
272
+ {...editProps}
273
+ onClick={async (e) => {
274
+ e.preventDefault();
275
+ editOrAppend(name);
276
+ }}
277
+ >
278
+ {editLabel || 'Αποθήκευση'}
279
+ </Button>
280
+ ) : (
281
+ <Button
282
+ color="primary"
283
+ {...appendProps}
284
+ onClick={async (e) => {
285
+ e.preventDefault();
286
+ editOrAppend(name);
287
+ }}
288
+ >
289
+ {appendLabel || 'Προσθήκη'}
290
+ </Button>
291
+ )}
292
+ <Button
293
+ variant="link"
294
+ {...cancelProps}
295
+ onClick={(e) => {
296
+ e.preventDefault();
297
+ cancel(name);
298
+ }}
299
+ >
300
+ {cancelLabel || 'Ακύρωση'}
301
+ </Button>
302
+ </ModalAction>
303
+ </Modal>
304
+ );
305
+ };
306
+
307
+ export const ArrayItemHeader = ({ labels, disabled }) => {
308
+ return (
309
+ <TableHead>
310
+ <TableRow>
311
+ {labels.map((label, index) => {
312
+ return <TableHeadCell key={index}>{label}</TableHeadCell>;
313
+ })}
314
+ {!disabled && <TableHeadCell>Ενέργειες</TableHeadCell>}
315
+ </TableRow>
316
+ </TableHead>
317
+ );
318
+ };
319
+
320
+ export const ArrayItemDisplay = ({
321
+ name,
322
+ data,
323
+ edit,
324
+ remove,
325
+ disabledEdit,
326
+ disabledDelete,
327
+ disabled,
328
+ }: {
329
+ data: any;
330
+ name: string;
331
+ edit: (name: string) => void;
332
+ remove: (name: string) => void;
333
+ disabledEdit?: boolean;
334
+ disabledDelete?: boolean;
335
+ disabled?: boolean;
336
+ }) => {
337
+ if (
338
+ Object.keys(data).length === 0 ||
339
+ (Object.keys(data).length === 1 && data.id)
340
+ ) {
341
+ return null;
342
+ }
343
+ delete data.id;
344
+ const values: string[] =
345
+ typeof data === 'string' ? [data] : Object.values(data);
346
+ return (
347
+ <TableRow>
348
+ {values.map((value, index) => {
349
+ return <TableDataCell key={index}>{value || ''}</TableDataCell>;
350
+ })}
351
+ {disabled === true ||
352
+ (disabledEdit === true && disabledDelete === true) ? null : (
353
+ <TableDataCell>
354
+ <ButtonGroup>
355
+ {disabledEdit !== true && (
356
+ <Button
357
+ variant="link"
358
+ type="button"
359
+ onClick={() => {
360
+ edit(name);
361
+ }}
362
+ >
363
+ Επεξεργασία
364
+ </Button>
365
+ )}
366
+ {disabledDelete !== true && (
367
+ <Button variant="link" type="button" onClick={() => remove(name)}>
368
+ Διαγραφή
369
+ </Button>
370
+ )}
371
+ </ButtonGroup>
372
+ </TableDataCell>
373
+ )}
374
+ </TableRow>
375
+ );
376
+ };
377
+
378
+ export default FormDialog;
@@ -15,6 +15,7 @@ const fields = [
15
15
  {
16
16
  key: 'multiplicity',
17
17
  type: 'array',
18
+ editable: true,
18
19
  label: {
19
20
  primary: 'Συνυπογράφοντες',
20
21
  secondary: 'Οι συνυπογράφοντες είναι άνθρωποι σαν και εμάς',
@@ -15,6 +15,7 @@ const fields = [
15
15
  {
16
16
  key: 'multiplicity',
17
17
  type: 'array',
18
+ editable: true,
18
19
  label: {
19
20
  primary: 'Συνυπογράφοντες',
20
21
  secondary: 'Οι συνυπογράφοντες είναι άνθρωποι σαν και εμάς',