@digigov/form 2.0.0-daaf7bdf → 2.0.0-eaf330f5

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