@digigov/form 2.0.0-a32ad9b2 → 2.0.0-abd768eb

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 (331) hide show
  1. package/Field/FieldBase/index.js +7 -2
  2. package/Field/FieldBase.js.map +2 -2
  3. package/Field/FieldBaseContainer/index.js +37 -18
  4. package/Field/FieldBaseContainer.d.ts +1 -1
  5. package/Field/FieldBaseContainer.js.map +2 -2
  6. package/Field/FieldConditional/index.js +4 -0
  7. package/Field/FieldConditional.js.map +2 -2
  8. package/Field/index.js +10 -4
  9. package/Field/index.js.map +2 -2
  10. package/Field/types.d.ts +10 -3
  11. package/Field/utils/index.js +3 -1
  12. package/Field/utils/index.js.map +2 -2
  13. package/Field/utils/useField/index.js +8 -1
  14. package/Field/utils/useField.js.map +2 -2
  15. package/FieldArray/FormDialog/index.js +314 -196
  16. package/FieldArray/FormDialog.d.ts +20 -7
  17. package/FieldArray/FormDialog.js.map +3 -3
  18. package/FieldArray/__stories__/Default.d.ts +1 -1
  19. package/FieldArray/__stories__/WithExactLength.d.ts +1 -1
  20. package/FieldArray/__stories__/WithModal.d.ts +1 -1
  21. package/FieldArray/index.d.ts +1 -0
  22. package/FieldArray/index.js +32 -8
  23. package/FieldArray/index.js.map +2 -2
  24. package/FieldObject/index.d.ts +3 -0
  25. package/FieldObject/index.js +26 -15
  26. package/FieldObject/index.js.map +2 -2
  27. package/FormBuilder/FormBuilder.stories.d.ts +2 -0
  28. package/FormBuilder/__stories__/AutoErrorGrouping.d.ts +1 -1
  29. package/FormBuilder/__stories__/Default.d.ts +1 -1
  30. package/FormBuilder/__stories__/ErrorGrouping.d.ts +1 -1
  31. package/FormBuilder/index.d.ts +1 -1
  32. package/FormBuilder/index.js +11 -7
  33. package/FormBuilder/index.js.map +2 -2
  34. package/FormContext/index.js +6 -2
  35. package/FormContext.d.ts +1 -0
  36. package/FormContext.js.map +2 -2
  37. package/MultiplicityField/MultiplicityField.stories.d.ts +2 -0
  38. package/MultiplicityField/__stories__/Default.d.ts +1 -1
  39. package/MultiplicityField/__stories__/PreviewDisplay.d.ts +1 -1
  40. package/MultiplicityField/__stories__/WithExactLength.d.ts +1 -1
  41. package/MultiplicityField/__stories__/WithMaxLength.d.ts +1 -1
  42. package/MultiplicityField/__stories__/WithMinAndMaxLength.d.ts +1 -1
  43. package/MultiplicityField/__stories__/WithMinLength.d.ts +1 -1
  44. package/MultiplicityField/add-objects/index.js +2 -0
  45. package/MultiplicityField/add-objects.js.map +2 -2
  46. package/MultiplicityField/index.js +4 -1
  47. package/MultiplicityField/index.js.map +2 -2
  48. package/MultiplicityField/types.d.ts +1 -0
  49. package/Questions/Questions.stories.d.ts +2 -0
  50. package/Questions/__stories__/Default.d.ts +1 -1
  51. package/cjs/Field/FieldBase/index.js +7 -2
  52. package/cjs/Field/FieldBase.js.map +2 -2
  53. package/cjs/Field/FieldBaseContainer/index.js +36 -17
  54. package/cjs/Field/FieldBaseContainer.js.map +3 -3
  55. package/cjs/Field/FieldConditional/index.js +4 -0
  56. package/cjs/Field/FieldConditional.js.map +2 -2
  57. package/cjs/Field/index.js +10 -4
  58. package/cjs/Field/index.js.map +2 -2
  59. package/cjs/Field/types.js.map +1 -1
  60. package/cjs/Field/utils/index.js +3 -1
  61. package/cjs/Field/utils/index.js.map +2 -2
  62. package/cjs/Field/utils/useField/index.js +8 -1
  63. package/cjs/Field/utils/useField.js.map +2 -2
  64. package/cjs/FieldArray/FormDialog/index.js +309 -194
  65. package/cjs/FieldArray/FormDialog.js.map +3 -3
  66. package/cjs/FieldArray/index.js +31 -7
  67. package/cjs/FieldArray/index.js.map +2 -2
  68. package/cjs/FieldObject/index.js +26 -15
  69. package/cjs/FieldObject/index.js.map +2 -2
  70. package/cjs/FormBuilder/index.js +11 -7
  71. package/cjs/FormBuilder/index.js.map +2 -2
  72. package/cjs/FormContext/index.js +7 -2
  73. package/cjs/FormContext.js.map +2 -2
  74. package/cjs/MultiplicityField/add-objects/index.js +2 -0
  75. package/cjs/MultiplicityField/add-objects.js.map +2 -2
  76. package/cjs/MultiplicityField/index.js +4 -1
  77. package/cjs/MultiplicityField/index.js.map +2 -2
  78. package/cjs/MultiplicityField/types.js.map +1 -1
  79. package/cjs/inputs/Checkboxes/index.js +2 -2
  80. package/cjs/inputs/Checkboxes/index.js.map +2 -2
  81. package/cjs/inputs/DateInput/index.js +41 -14
  82. package/cjs/inputs/DateInput/index.js.map +2 -2
  83. package/cjs/inputs/DateTimeInput/index.js +68 -34
  84. package/cjs/inputs/DateTimeInput/index.js.map +2 -2
  85. package/cjs/inputs/FileInput/index.js +52 -29
  86. package/cjs/inputs/FileInput/index.js.map +2 -2
  87. package/cjs/inputs/ImageInput/__stories__/logo.d/index.js +1 -0
  88. package/cjs/inputs/ImageInput/__stories__/logo.d.js.map +7 -0
  89. package/cjs/inputs/ImageInput/index.js +41 -10
  90. package/cjs/inputs/ImageInput/index.js.map +2 -2
  91. package/cjs/inputs/Input/index.js +4 -4
  92. package/cjs/inputs/Input/index.js.map +2 -2
  93. package/cjs/inputs/Select/index.js +4 -3
  94. package/cjs/inputs/Select/index.js.map +2 -2
  95. package/cjs/inputs/inputsScenarios/index.js +2 -2
  96. package/cjs/inputs/inputsScenarios.js.map +2 -2
  97. package/cjs/lazy/index.js +2 -1
  98. package/cjs/lazy.js.map +2 -2
  99. package/cjs/registry/index.js +6 -6
  100. package/cjs/registry.js.map +2 -2
  101. package/cjs/types.js.map +1 -1
  102. package/cjs/utils/index.js +20 -6
  103. package/cjs/utils.js.map +2 -2
  104. package/cjs/validators/index.js +11 -6
  105. package/cjs/validators/index.js.map +2 -2
  106. package/cjs/validators/utils/amka/index.js +60 -0
  107. package/cjs/validators/utils/amka.js.map +7 -0
  108. package/cjs/validators/utils/date/index.js +26 -3
  109. package/cjs/validators/utils/date.js.map +2 -2
  110. package/cjs/validators/utils/datetime/index.js +118 -24
  111. package/cjs/validators/utils/datetime.js.map +2 -2
  112. package/cjs/validators/utils/file/index.js +30 -17
  113. package/cjs/validators/utils/file.js.map +2 -2
  114. package/cjs/validators/utils/index.js +5 -1
  115. package/cjs/validators/utils/index.js.map +2 -2
  116. package/index.js +1 -1
  117. package/inputs/AutoCompleteInput/AutoComplete.stories.d.ts +2 -0
  118. package/inputs/AutoCompleteInput/__stories__/Default.d.ts +1 -1
  119. package/inputs/AutoCompleteInput/__stories__/Multiple.d.ts +1 -1
  120. package/inputs/Checkboxes/Checkboxes.stories.d.ts +2 -0
  121. package/inputs/Checkboxes/__stories__/Conditional.d.ts +1 -1
  122. package/inputs/Checkboxes/__stories__/Default.d.ts +1 -1
  123. package/inputs/Checkboxes/__stories__/WithDivider.d.ts +1 -1
  124. package/inputs/Checkboxes/index.js +2 -2
  125. package/inputs/Checkboxes/index.js.map +2 -2
  126. package/inputs/DateInput/DateInput.stories.d.ts +6 -0
  127. package/inputs/DateInput/__stories__/Default.d.ts +1 -1
  128. package/inputs/DateInput/__stories__/WithDefaultValue.d.ts +3 -0
  129. package/inputs/DateInput/__stories__/WithInitialValue.d.ts +3 -0
  130. package/inputs/DateInput/__stories__/WithWrongDefaultValue.d.ts +3 -0
  131. package/inputs/DateInput/__stories__/WithWrongInitialValue.d.ts +3 -0
  132. package/inputs/DateInput/index.js +42 -15
  133. package/inputs/DateInput/index.js.map +2 -2
  134. package/inputs/DateTimeInput/DateTimeInput.stories.d.ts +10 -3
  135. package/inputs/DateTimeInput/__stories__/Default.d.ts +1 -1
  136. package/inputs/DateTimeInput/__stories__/WithDefaultValue.d.ts +3 -0
  137. package/inputs/DateTimeInput/__stories__/WithInitialValue.d.ts +3 -0
  138. package/inputs/DateTimeInput/__stories__/WithWrongDefaultValue.d.ts +3 -0
  139. package/inputs/DateTimeInput/__stories__/WithWrongInitialValue.d.ts +3 -0
  140. package/inputs/DateTimeInput/index.js +69 -35
  141. package/inputs/DateTimeInput/index.js.map +2 -2
  142. package/inputs/FileInput/FileInput.stories.d.ts +3 -0
  143. package/inputs/FileInput/__stories__/Default.d.ts +1 -1
  144. package/inputs/FileInput/__stories__/WithBorderAndLink.d.ts +3 -0
  145. package/inputs/FileInput/index.d.ts +11 -4
  146. package/inputs/FileInput/index.js +57 -31
  147. package/inputs/FileInput/index.js.map +2 -2
  148. package/inputs/ImageInput/ImageInput.stories.d.ts +4 -1
  149. package/inputs/ImageInput/__stories__/Default.d.ts +1 -1
  150. package/inputs/ImageInput/__stories__/MaxSize.d.ts +1 -1
  151. package/inputs/ImageInput/__stories__/WithInitialValues.d.ts +3 -0
  152. package/inputs/ImageInput/__stories__/WithInvalidImageDimension.d.ts +1 -1
  153. package/inputs/ImageInput/__stories__/logo.d/index.js +1 -0
  154. package/inputs/ImageInput/__stories__/logo.d/package.json +6 -0
  155. package/inputs/ImageInput/__stories__/logo.d.js.map +7 -0
  156. package/inputs/ImageInput/index.d.ts +9 -1
  157. package/inputs/ImageInput/index.js +42 -11
  158. package/inputs/ImageInput/index.js.map +2 -2
  159. package/inputs/Input/Input.stories.d.ts +4 -0
  160. package/inputs/Input/__stories__/AFM.d.ts +1 -1
  161. package/inputs/Input/__stories__/AMKA.d.ts +3 -0
  162. package/inputs/Input/__stories__/Boolean.d.ts +1 -1
  163. package/inputs/Input/__stories__/Email.d.ts +3 -0
  164. package/inputs/Input/__stories__/IBAN.d.ts +1 -1
  165. package/inputs/Input/__stories__/Integer.d.ts +1 -1
  166. package/inputs/Input/__stories__/LandlineNumber.d.ts +1 -1
  167. package/inputs/Input/__stories__/MobilePhone.d.ts +1 -1
  168. package/inputs/Input/__stories__/PhoneNumber.d.ts +1 -1
  169. package/inputs/Input/__stories__/PostalCode.d.ts +1 -1
  170. package/inputs/Input/__stories__/String.d.ts +1 -1
  171. package/inputs/Input/__stories__/StringWithTrimValidation.d.ts +1 -1
  172. package/inputs/Input/__stories__/TextWithLimit.d.ts +1 -1
  173. package/inputs/Input/index.d.ts +2 -1
  174. package/inputs/Input/index.js +4 -4
  175. package/inputs/Input/index.js.map +2 -2
  176. package/inputs/Label/Label.stories.d.ts +2 -0
  177. package/inputs/Label/__stories__/Default.d.ts +1 -1
  178. package/inputs/OtpInput/OtpInput.stories.d.ts +2 -0
  179. package/inputs/OtpInput/__stories__/Default.d.ts +1 -1
  180. package/inputs/Radio/Radio.stories.d.ts +2 -0
  181. package/inputs/Radio/__stories__/Conditional.d.ts +1 -1
  182. package/inputs/Radio/__stories__/Default.d.ts +1 -1
  183. package/inputs/Radio/__stories__/WithDivider.d.ts +1 -1
  184. package/inputs/Select/Select.stories.d.ts +2 -0
  185. package/inputs/Select/__stories__/Default.d.ts +1 -1
  186. package/inputs/Select/index.d.ts +2 -1
  187. package/inputs/Select/index.js +4 -3
  188. package/inputs/Select/index.js.map +2 -2
  189. package/inputs/inputsScenarios/index.js +2 -2
  190. package/inputs/inputsScenarios.d.ts +1 -1
  191. package/inputs/inputsScenarios.js.map +2 -2
  192. package/lazy/index.js +2 -1
  193. package/package.json +4 -4
  194. package/registry/index.js +6 -6
  195. package/src/Field/FieldBase.tsx +6 -1
  196. package/src/Field/FieldBaseContainer.tsx +68 -48
  197. package/src/Field/FieldConditional.tsx +4 -0
  198. package/src/Field/index.tsx +15 -5
  199. package/src/Field/types.tsx +11 -3
  200. package/src/Field/utils/index.ts +2 -0
  201. package/src/Field/utils/useField.ts +9 -1
  202. package/src/FieldArray/FormDialog.tsx +430 -243
  203. package/src/FieldArray/__stories__/Default.tsx +1 -1
  204. package/src/FieldArray/__stories__/WithExactLength.tsx +1 -1
  205. package/src/FieldArray/__stories__/WithModal.tsx +4 -3
  206. package/src/FieldArray/index.tsx +53 -30
  207. package/src/FieldObject/index.tsx +33 -18
  208. package/src/FormBuilder/FormBuilder.stories.js +3 -0
  209. package/src/FormBuilder/__stories__/AutoErrorGrouping.tsx +1 -1
  210. package/src/FormBuilder/__stories__/Default.tsx +1 -1
  211. package/src/FormBuilder/__stories__/ErrorGrouping.tsx +1 -1
  212. package/src/FormBuilder/index.tsx +12 -7
  213. package/src/FormBuilder/scenarios.test.tsx +763 -5
  214. package/src/FormContext.tsx +5 -1
  215. package/src/MultiplicityField/MultiplicityField.stories.js +3 -0
  216. package/src/MultiplicityField/__stories__/Default.tsx +1 -1
  217. package/src/MultiplicityField/__stories__/PreviewDisplay.tsx +1 -1
  218. package/src/MultiplicityField/__stories__/WithExactLength.tsx +1 -1
  219. package/src/MultiplicityField/__stories__/WithMaxLength.tsx +1 -1
  220. package/src/MultiplicityField/__stories__/WithMinAndMaxLength.tsx +1 -1
  221. package/src/MultiplicityField/__stories__/WithMinLength.tsx +1 -1
  222. package/src/MultiplicityField/add-objects.tsx +2 -0
  223. package/src/MultiplicityField/index.tsx +3 -0
  224. package/src/MultiplicityField/types.ts +1 -0
  225. package/src/Questions/Questions.stories.js +3 -0
  226. package/src/Questions/__stories__/Default.tsx +1 -1
  227. package/src/inputs/AutoCompleteInput/AutoComplete.stories.js +3 -0
  228. package/src/inputs/AutoCompleteInput/__stories__/Default.tsx +1 -1
  229. package/src/inputs/AutoCompleteInput/__stories__/Multiple.tsx +1 -1
  230. package/src/inputs/Checkboxes/Checkboxes.stories.js +3 -0
  231. package/src/inputs/Checkboxes/__stories__/Conditional.tsx +1 -1
  232. package/src/inputs/Checkboxes/__stories__/Default.tsx +1 -1
  233. package/src/inputs/Checkboxes/__stories__/WithDivider.tsx +1 -1
  234. package/src/inputs/Checkboxes/index.tsx +2 -6
  235. package/src/inputs/DateInput/DateInput.stories.js +7 -0
  236. package/src/inputs/DateInput/__stories__/Default.tsx +1 -1
  237. package/src/inputs/DateInput/__stories__/WithDefaultValue.tsx +26 -0
  238. package/src/inputs/DateInput/__stories__/WithInitialValue.tsx +28 -0
  239. package/src/inputs/DateInput/__stories__/WithWrongDefaultValue.tsx +26 -0
  240. package/src/inputs/DateInput/__stories__/WithWrongInitialValue.tsx +28 -0
  241. package/src/inputs/DateInput/index.test.tsx +16 -0
  242. package/src/inputs/DateInput/index.tsx +46 -14
  243. package/src/inputs/DateTimeInput/DateTimeInput.stories.js +12 -6
  244. package/src/inputs/DateTimeInput/__stories__/Default.tsx +1 -1
  245. package/src/inputs/DateTimeInput/__stories__/WithDefaultValue.tsx +26 -0
  246. package/src/inputs/DateTimeInput/__stories__/WithInitialValue.tsx +28 -0
  247. package/src/inputs/DateTimeInput/__stories__/WithWrongDefaultValue.tsx +26 -0
  248. package/src/inputs/DateTimeInput/__stories__/WithWrongInitialValue.tsx +28 -0
  249. package/src/inputs/DateTimeInput/index.test.tsx +16 -0
  250. package/src/inputs/DateTimeInput/index.tsx +73 -34
  251. package/src/inputs/FileInput/FileInput.stories.js +4 -0
  252. package/src/inputs/FileInput/__stories__/Default.tsx +1 -1
  253. package/src/inputs/FileInput/__stories__/WithBorderAndLink.tsx +34 -0
  254. package/src/inputs/FileInput/index.test.tsx +4 -0
  255. package/src/inputs/FileInput/index.tsx +90 -48
  256. package/src/inputs/ImageInput/ImageInput.stories.js +5 -1
  257. package/src/inputs/ImageInput/__stories__/Default.tsx +1 -1
  258. package/src/inputs/ImageInput/__stories__/MaxSize.tsx +3 -2
  259. package/src/inputs/ImageInput/__stories__/WithInitialValues.tsx +45 -0
  260. package/src/inputs/ImageInput/__stories__/WithInvalidImageDimension.tsx +1 -1
  261. package/src/inputs/ImageInput/__stories__/logo.d.ts +4 -0
  262. package/src/inputs/ImageInput/__stories__/logo.png +0 -0
  263. package/src/inputs/ImageInput/index.test.tsx +21 -17
  264. package/src/inputs/ImageInput/index.tsx +100 -48
  265. package/src/inputs/Input/Input.stories.js +5 -0
  266. package/src/inputs/Input/__stories__/AFM.tsx +1 -1
  267. package/src/inputs/Input/__stories__/AMKA.tsx +23 -0
  268. package/src/inputs/Input/__stories__/Boolean.tsx +1 -1
  269. package/src/inputs/Input/__stories__/Email.tsx +23 -0
  270. package/src/inputs/Input/__stories__/IBAN.tsx +1 -1
  271. package/src/inputs/Input/__stories__/Integer.tsx +1 -1
  272. package/src/inputs/Input/__stories__/LandlineNumber.tsx +1 -1
  273. package/src/inputs/Input/__stories__/MobilePhone.tsx +1 -1
  274. package/src/inputs/Input/__stories__/PhoneNumber.tsx +1 -1
  275. package/src/inputs/Input/__stories__/PostalCode.tsx +1 -1
  276. package/src/inputs/Input/__stories__/String.tsx +1 -1
  277. package/src/inputs/Input/__stories__/StringWithTrimValidation.tsx +1 -1
  278. package/src/inputs/Input/__stories__/TextWithLimit.tsx +1 -1
  279. package/src/inputs/Input/index.test.tsx +8 -0
  280. package/src/inputs/Input/index.tsx +5 -3
  281. package/src/inputs/Label/Label.stories.js +3 -0
  282. package/src/inputs/Label/__stories__/Default.tsx +1 -1
  283. package/src/inputs/OtpInput/OtpInput.stories.js +3 -0
  284. package/src/inputs/OtpInput/__stories__/Default.tsx +1 -1
  285. package/src/inputs/Radio/Radio.stories.js +3 -0
  286. package/src/inputs/Radio/__stories__/Conditional.tsx +1 -1
  287. package/src/inputs/Radio/__stories__/Default.tsx +1 -1
  288. package/src/inputs/Radio/__stories__/WithDivider.tsx +1 -1
  289. package/src/inputs/Select/Select.stories.js +3 -0
  290. package/src/inputs/Select/__stories__/Default.tsx +1 -1
  291. package/src/inputs/Select/index.tsx +7 -4
  292. package/src/inputs/inputsScenarios.ts +2 -2
  293. package/src/lazy.js +2 -1
  294. package/src/registry.js +6 -6
  295. package/src/types.tsx +2 -1
  296. package/src/utils.ts +27 -6
  297. package/src/validators/index.ts +17 -6
  298. package/src/validators/utils/amka.ts +39 -0
  299. package/src/validators/utils/date.ts +28 -4
  300. package/src/validators/utils/datetime.ts +121 -29
  301. package/src/validators/utils/file.ts +33 -19
  302. package/src/validators/utils/index.ts +4 -1
  303. package/types.d.ts +2 -1
  304. package/types.js.map +1 -1
  305. package/utils/index.js +20 -6
  306. package/utils.d.ts +2 -0
  307. package/utils.js.map +2 -2
  308. package/validators/index.d.ts +1 -1
  309. package/validators/index.js +12 -6
  310. package/validators/index.js.map +2 -2
  311. package/validators/utils/amka/index.js +36 -0
  312. package/{inputs/Input/inputsInputScenarios → validators/utils/amka}/package.json +1 -1
  313. package/validators/utils/amka.d.ts +6 -0
  314. package/validators/utils/amka.js.map +7 -0
  315. package/validators/utils/date/index.js +26 -3
  316. package/validators/utils/date.d.ts +1 -1
  317. package/validators/utils/date.js.map +2 -2
  318. package/validators/utils/datetime/index.js +118 -24
  319. package/validators/utils/datetime.d.ts +1 -1
  320. package/validators/utils/datetime.js.map +2 -2
  321. package/validators/utils/file/index.js +30 -17
  322. package/validators/utils/file.js.map +2 -2
  323. package/validators/utils/index.d.ts +1 -0
  324. package/validators/utils/index.js +4 -1
  325. package/validators/utils/index.js.map +2 -2
  326. package/cjs/inputs/Input/inputsInputScenarios/index.js +0 -439
  327. package/cjs/inputs/Input/inputsInputScenarios.js.map +0 -7
  328. package/inputs/Input/inputsInputScenarios/index.js +0 -406
  329. package/inputs/Input/inputsInputScenarios.d.ts +0 -57
  330. package/inputs/Input/inputsInputScenarios.js.map +0 -7
  331. package/src/inputs/Input/inputsInputScenarios.ts +0 -404
@@ -1,32 +1,36 @@
1
1
  import React from 'react';
2
2
  import { test, expect } from '@playwright/experimental-ct-react';
3
- import TestVariant from '@digigov/ui/utils/TestVariant';
3
+ import TestVariant from '@digigov/ui/utils/TestVariant'
4
4
  import { Default } from '@digigov/form/inputs/ImageInput/__stories__/Default';
5
5
  import { MaxSize } from '@digigov/form/inputs/ImageInput/__stories__/MaxSize';
6
+ import { WithInitialValues } from '@digigov/form/inputs/ImageInput/__stories__/WithInitialValues';
6
7
  import { WithInvalidImageDimension } from '@digigov/form/inputs/ImageInput/__stories__/WithInvalidImageDimension';
7
8
 
8
9
  test('renders the All ImageInput variants', async ({ mount, page }) => {
9
10
  await mount(
10
- <div>
11
- <TestVariant title="Default">
12
- <Default />
13
- </TestVariant>
14
- <TestVariant title="MaxSize">
15
- <MaxSize />
16
- </TestVariant>
17
- <TestVariant title="WithInvalidImageDimension">
18
- <WithInvalidImageDimension />
19
- </TestVariant>
20
- </div>
21
- );
11
+
12
+ <div>
13
+ <TestVariant title="Default">
14
+ <Default />
15
+ </TestVariant>
16
+ <TestVariant title="MaxSize">
17
+ <MaxSize />
18
+ </TestVariant>
19
+ <TestVariant title="WithInitialValues">
20
+ <WithInitialValues />
21
+ </TestVariant>
22
+ <TestVariant title="WithInvalidImageDimension">
23
+ <WithInvalidImageDimension />
24
+ </TestVariant>
25
+ </div>
26
+ )
22
27
  await page.evaluate(() => document.fonts.ready);
23
28
 
24
29
  // Move the mouse to the top-left corner to avoid random hover issues
25
30
  await page.mouse.move(0, 0);
26
31
 
27
- const screenshot = await page.screenshot({
28
- fullPage: true,
29
- animations: 'disabled',
30
- });
32
+
33
+ const screenshot = await page.screenshot({ fullPage: true, animations: 'disabled' });
31
34
  expect(screenshot).toMatchSnapshot();
32
35
  });
36
+
@@ -1,4 +1,5 @@
1
- import React, { useState, useCallback } from 'react';
1
+ import React, { useRef, useState, useEffect, useCallback } from 'react';
2
+ import { UseFormReturn } from 'react-hook-form';
2
3
  import { UncontrolledFieldProps } from '@digigov/form/Field/types';
3
4
  import { Button, ButtonGroup } from '@digigov/ui/form/Button';
4
5
  import { FileUpload, FileUploadContainer } from '@digigov/ui/form/FileUpload';
@@ -7,7 +8,7 @@ import { Hint } from '@digigov/ui/typography/Hint';
7
8
  import { Paragraph } from '@digigov/ui/typography/Paragraph';
8
9
  import { Base } from '@digigov/ui/utils/Base';
9
10
  export interface ImageProps {
10
- src?: any;
11
+ src: string;
11
12
  }
12
13
 
13
14
  export interface Limit {
@@ -21,6 +22,18 @@ export interface Limit {
21
22
  export const Image: React.FC<ImageProps> = React.memo(function Image({ src }) {
22
23
  return <Base as="img" src={src} className="ds-image--ratio" />;
23
24
  });
25
+
26
+ interface ImageInputDefaultValue {
27
+ filename: string;
28
+ src: string;
29
+ }
30
+
31
+ const blobToFileList = (blob: Blob, fileName: string): FileList => {
32
+ const file = new File([blob], fileName, { type: 'image/jpeg' });
33
+ const dataTransfer = new DataTransfer();
34
+ dataTransfer.items.add(file);
35
+ return dataTransfer.files;
36
+ };
24
37
  export interface ImageInputProps extends Omit<UncontrolledFieldProps, 'extra'> {
25
38
  extra?: {
26
39
  className?: string;
@@ -29,25 +42,40 @@ export interface ImageInputProps extends Omit<UncontrolledFieldProps, 'extra'> {
29
42
  limit?: Limit;
30
43
  };
31
44
  reset: (values?: any) => void;
45
+ resetField: UseFormReturn['resetField'];
32
46
  onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
47
+ defaultValue?: ImageInputDefaultValue | null;
48
+ value: any;
33
49
  }
34
50
 
35
51
  export const ImageInput: React.FC<ImageInputProps> = React.forwardRef(
36
- function ImageInput({ name, disabled, onChange, reset, ...props }, ref: any) {
52
+ function ImageInput(
53
+ { name, disabled, onChange, resetField, defaultValue, value, ...props },
54
+ ref: any
55
+ ) {
56
+ const imageRef = useRef(ref?.current);
37
57
  const { t } = useTranslation();
38
- const [selectedImage, setSelectedImage] = useState<File | null>(null);
39
- const [imageUrl, setImageUrl] = useState<string | null>(null);
58
+ const currentValue: ImageInputDefaultValue | null =
59
+ defaultValue || value || null;
60
+ const [selectedImage, setSelectedImage] = useState<
61
+ File | ImageInputDefaultValue | null
62
+ >(currentValue);
63
+ const [imageUrl, setImageUrl] = useState<string | null>(
64
+ currentValue?.src || null
65
+ );
66
+
40
67
  const handleImageChange = useCallback(
41
68
  (e: React.ChangeEvent<HTMLInputElement>) => {
42
69
  e.preventDefault();
43
70
  const target = e.target as HTMLInputElement;
44
71
  const selectedFile = target.files?.[0];
45
-
46
72
  if (selectedFile) {
47
73
  setSelectedImage(selectedFile);
48
74
  setImageUrl(URL.createObjectURL(selectedFile));
49
75
  }
50
- onChange(e);
76
+ onChange(
77
+ target.files as unknown as React.ChangeEvent<HTMLInputElement>
78
+ );
51
79
  },
52
80
  [selectedImage]
53
81
  );
@@ -55,55 +83,79 @@ export const ImageInput: React.FC<ImageInputProps> = React.forwardRef(
55
83
  const handleDeleteImage = useCallback(
56
84
  (event) => {
57
85
  event.preventDefault();
58
- reset({ [name]: '' });
86
+ resetField(name);
59
87
  setSelectedImage(null);
60
- setImageUrl('');
88
+ setImageUrl(null);
61
89
  },
62
90
  [selectedImage]
63
91
  );
64
92
 
93
+ useEffect(() => {
94
+ // This is to fill the input with the default value (image)
95
+ if (defaultValue?.src && imageRef.current) {
96
+ fetch(defaultValue?.src)
97
+ .then((response) => response.blob())
98
+ .then((blob) => {
99
+ const fileList = blobToFileList(blob, defaultValue.filename);
100
+ imageRef.current.files = fileList;
101
+ const fileChangeEvent = new Event('change', { bubbles: true });
102
+ imageRef.current.dispatchEvent(fileChangeEvent);
103
+ return;
104
+ })
105
+ .catch((error) => console.error('Error fetching image:', error));
106
+ }
107
+ }, [defaultValue, imageRef]);
108
+
65
109
  return (
66
- <>
67
- <FileUploadContainer>
68
- {selectedImage !== null ? (
69
- <>
70
- <Paragraph>
71
- <Base as="b">{t('upload.image')}:</Base>{' '}
72
- {`${selectedImage?.name}`}
73
- </Paragraph>
74
- </>
75
- ) : (
76
- <Hint className="ds-dashed--border">{t('upload.no_image')}</Hint>
77
- )}
110
+ <FileUploadContainer>
111
+ {selectedImage !== null ? (
78
112
  <>
79
- {selectedImage !== null && <Image src={imageUrl} />}
80
- <ButtonGroup marginTop={2}>
81
- {selectedImage !== null && (
82
- <Button variant="link" onClick={handleDeleteImage}>
83
- {t('upload.reset_file')}
84
- </Button>
85
- )}
86
- <FileUpload
87
- ref={ref}
88
- hasFiles={selectedImage !== null}
89
- name={name}
90
- id={name}
91
- disabled={disabled}
92
- accept="image/*"
93
- onChange={handleImageChange}
94
- {...{
95
- ...props,
96
- required: undefined,
97
- Field: undefined,
98
- type: 'file',
99
- }}
100
- >
101
- {t('upload.choose_image')}
102
- </FileUpload>
103
- </ButtonGroup>
113
+ <Paragraph>
114
+ <Base as="b">{t('upload.image')}:</Base>{' '}
115
+ <em>
116
+ {`${(selectedImage as File)?.name || (selectedImage as ImageInputDefaultValue)?.filename}`}
117
+ </em>
118
+ </Paragraph>
104
119
  </>
105
- </FileUploadContainer>
106
- </>
120
+ ) : (
121
+ <Hint className="ds-dashed--border">{t('upload.no_image')}</Hint>
122
+ )}
123
+ {imageUrl !== null && selectedImage !== null && (
124
+ <Image src={imageUrl} />
125
+ )}
126
+ {!disabled && (
127
+ <ButtonGroup marginTop={2}>
128
+ <FileUpload
129
+ ref={imageRef}
130
+ hasFiles={selectedImage !== null}
131
+ name={name}
132
+ id={name}
133
+ disabled={disabled}
134
+ accept="image/*"
135
+ onChange={handleImageChange}
136
+ {...{
137
+ ...(props as any),
138
+ required: undefined,
139
+ Field: undefined,
140
+ type: 'file',
141
+ }}
142
+ >
143
+ {selectedImage
144
+ ? t('upload.change_image')
145
+ : t('upload.choose_image')}
146
+ </FileUpload>
147
+ {selectedImage !== null && (
148
+ <Button
149
+ color="warning"
150
+ variant="link"
151
+ onClick={handleDeleteImage}
152
+ >
153
+ {t('upload.reset_file')}
154
+ </Button>
155
+ )}
156
+ </ButtonGroup>
157
+ )}
158
+ </FileUploadContainer>
107
159
  );
108
160
  }
109
161
  );
@@ -1,7 +1,10 @@
1
1
  import Input from '@digigov/form/inputs/Input';
2
+ import doc from './doc.mdx?raw';
2
3
  export default {
3
4
  title: 'Digigov Form/inputs/Input',
4
5
  component: Input,
6
+ tags: ['autodocs'],
7
+ markdown: doc,
5
8
  displayName: 'Input',
6
9
  };
7
10
  export { String } from '@digigov/form/inputs/Input/__stories__/String';
@@ -12,6 +15,8 @@ export { PhoneNumber } from '@digigov/form/inputs/Input/__stories__/PhoneNumber'
12
15
  export { LandlineNumber } from '@digigov/form/inputs/Input/__stories__/LandlineNumber';
13
16
  export { MobilePhone } from '@digigov/form/inputs/Input/__stories__/MobilePhone';
14
17
  export { AFM } from '@digigov/form/inputs/Input/__stories__/AFM';
18
+ export { AMKA } from '@digigov/form/inputs/Input/__stories__/AMKA';
15
19
  export { IBAN } from '@digigov/form/inputs/Input/__stories__/IBAN';
20
+ export { Email } from '@digigov/form/inputs/Input/__stories__/Email';
16
21
  export { PostalCode } from '@digigov/form/inputs/Input/__stories__/PostalCode';
17
22
  export { TextWithLimit } from '@digigov/form/inputs/Input/__stories__/TextWithLimit';
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import FormBuilder, { Field } from '@digigov/form';
3
3
  import { Button } from '@digigov/ui/form/Button';
4
4
 
5
- export const AFM = () => (
5
+ export const AFM = (_: any) => (
6
6
  <FormBuilder
7
7
  onSubmit={(data) => {
8
8
  console.log(data);
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import FormBuilder, { Field } from '@digigov/form';
3
+ import { Button } from '@digigov/ui/form/Button';
4
+
5
+ export const AMKA = () => (
6
+ <FormBuilder
7
+ onSubmit={(data) => {
8
+ console.log(data);
9
+ }}
10
+ >
11
+ <Field
12
+ key="amka"
13
+ name="amka"
14
+ type="amka"
15
+ label={{
16
+ primary: 'Αριθμός μητρώου κοινωνικής ασφάλισης',
17
+ }}
18
+ required
19
+ />
20
+ <Button type="submit">Συνέχεια</Button>
21
+ </FormBuilder>
22
+ );
23
+ export default AMKA;
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import FormBuilder, { Field } from '@digigov/form';
3
3
  import { Button } from '@digigov/ui/form/Button';
4
4
 
5
- export const Boolean = () => (
5
+ export const Boolean = (_: any) => (
6
6
  <FormBuilder
7
7
  onSubmit={(data) => {
8
8
  console.log(data);
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import FormBuilder, { Field } from '@digigov/form';
3
+ import { Button } from '@digigov/ui/form/Button';
4
+
5
+ export const Email = (_: any) => (
6
+ <FormBuilder
7
+ onSubmit={(data) => {
8
+ console.log(data);
9
+ }}
10
+ >
11
+ <Field
12
+ key="email"
13
+ name="email"
14
+ type="email"
15
+ label={{
16
+ primary: 'Δ/νση Ηλεκτρ. Ταχυδρομείου (Ε-mail)',
17
+ }}
18
+ required
19
+ />
20
+ <Button type="submit">Συνέχεια</Button>
21
+ </FormBuilder>
22
+ );
23
+ export default Email;
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import FormBuilder, { Field } from '@digigov/form';
3
3
  import { Button } from '@digigov/ui/form/Button';
4
4
 
5
- export const IBAN = () => (
5
+ export const IBAN = (_: any) => (
6
6
  <FormBuilder
7
7
  onSubmit={(data) => {
8
8
  console.log(data);
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import FormBuilder, { Field } from '@digigov/form';
3
3
  import { Button } from '@digigov/ui/form/Button';
4
4
 
5
- export const Integer = () => {
5
+ export const Integer = (_: any) => {
6
6
  return (
7
7
  <FormBuilder
8
8
  onSubmit={(data) => {
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import FormBuilder, { Field } from '@digigov/form';
3
3
  import { Button } from '@digigov/ui/form/Button';
4
4
 
5
- export const LandlineNumber = () => (
5
+ export const LandlineNumber = (_: any) => (
6
6
  <FormBuilder
7
7
  onSubmit={(data) => {
8
8
  console.log(data);
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import FormBuilder, { Field } from '@digigov/form';
3
3
  import { Button } from '@digigov/ui/form/Button';
4
4
 
5
- export const MobilePhone = () => (
5
+ export const MobilePhone = (_: any) => (
6
6
  <FormBuilder
7
7
  onSubmit={(data) => {
8
8
  console.log(data);
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import FormBuilder, { Field } from '@digigov/form';
3
3
  import { Button } from '@digigov/ui/form/Button';
4
4
 
5
- export const PhoneNumber = () => (
5
+ export const PhoneNumber = (_: any) => (
6
6
  <FormBuilder
7
7
  onSubmit={(data) => {
8
8
  console.log(data);
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import FormBuilder, { Field } from '@digigov/form';
3
3
  import { Button } from '@digigov/ui/form/Button';
4
4
 
5
- export const PostalCode = () => (
5
+ export const PostalCode = (_: any) => (
6
6
  <FormBuilder
7
7
  onSubmit={(data) => {
8
8
  console.log(data);
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import FormBuilder, { Field } from '@digigov/form';
3
3
  import { Button } from '@digigov/ui/form/Button';
4
4
 
5
- export const String = () => (
5
+ export const String = (_: any) => (
6
6
  <FormBuilder
7
7
  onSubmit={(data) => {
8
8
  console.log(data);
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import FormBuilder, { Field } from '@digigov/form';
3
3
  import { Button } from '@digigov/ui/form/Button';
4
4
 
5
- export const StringWithTrimValidation = () => (
5
+ export const StringWithTrimValidation = (_: any) => (
6
6
  <FormBuilder
7
7
  onSubmit={(data) => {
8
8
  console.log(data);
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import FormBuilder, { Field } from '@digigov/form';
3
3
  import { Button } from '@digigov/ui/form';
4
4
 
5
- export const TextWithLimit = () => (
5
+ export const TextWithLimit = (_: any) => (
6
6
  <FormBuilder
7
7
  onSubmit={(data) => {
8
8
  console.log(data);
@@ -2,7 +2,9 @@ import React from 'react';
2
2
  import { test, expect } from '@playwright/experimental-ct-react';
3
3
  import TestVariant from '@digigov/ui/utils/TestVariant'
4
4
  import { AFM } from '@digigov/form/inputs/Input/__stories__/AFM';
5
+ import { AMKA } from '@digigov/form/inputs/Input/__stories__/AMKA';
5
6
  import { Boolean } from '@digigov/form/inputs/Input/__stories__/Boolean';
7
+ import { Email } from '@digigov/form/inputs/Input/__stories__/Email';
6
8
  import { IBAN } from '@digigov/form/inputs/Input/__stories__/IBAN';
7
9
  import { Integer } from '@digigov/form/inputs/Input/__stories__/Integer';
8
10
  import { LandlineNumber } from '@digigov/form/inputs/Input/__stories__/LandlineNumber';
@@ -20,9 +22,15 @@ test('renders the All Input variants', async ({ mount, page }) => {
20
22
  <TestVariant title="AFM">
21
23
  <AFM />
22
24
  </TestVariant>
25
+ <TestVariant title="AMKA">
26
+ <AMKA />
27
+ </TestVariant>
23
28
  <TestVariant title="Boolean">
24
29
  <Boolean />
25
30
  </TestVariant>
31
+ <TestVariant title="Email">
32
+ <Email />
33
+ </TestVariant>
26
34
  <TestVariant title="IBAN">
27
35
  <IBAN />
28
36
  </TestVariant>
@@ -8,12 +8,14 @@ import { Hint } from '@digigov/ui/typography/Hint';
8
8
 
9
9
  const TYPES_MAP = {
10
10
  string: 'text',
11
+ password: 'password',
11
12
  int: 'text',
12
13
  text: 'text',
13
14
  date: 'date',
14
15
  };
15
16
 
16
- export interface InputProps extends Omit<UncontrolledFieldProps, 'extra'> {
17
+ export interface InputProps
18
+ extends Omit<UncontrolledFieldProps, 'extra' | 'Field'> {
17
19
  extra?: {
18
20
  fullWidth?: boolean;
19
21
  multiline?: boolean;
@@ -25,10 +27,12 @@ export interface InputProps extends Omit<UncontrolledFieldProps, 'extra'> {
25
27
  max?: number;
26
28
  };
27
29
  };
30
+ Field?: UncontrolledFieldProps['Field'];
28
31
  }
29
32
 
30
33
  export const Input: React.ExoticComponent<InputProps> = React.forwardRef(
31
34
  function WrappedInput({ name, control, type, extra, ...props }, ref: never) {
35
+ delete props['Field'];
32
36
  // eslint-disable-next-line prefer-const
33
37
  let { multiline = false, rows, limit } = extra || {};
34
38
  const { className } = extra || {};
@@ -75,7 +79,6 @@ export const Input: React.ExoticComponent<InputProps> = React.forwardRef(
75
79
  reset: undefined,
76
80
  required: undefined,
77
81
  type: fieldType,
78
- Field: undefined,
79
82
  }}
80
83
  />
81
84
  {limit?.max && (
@@ -103,7 +106,6 @@ export const Input: React.ExoticComponent<InputProps> = React.forwardRef(
103
106
  ...props,
104
107
  reset: undefined,
105
108
  required: undefined,
106
- Field: undefined,
107
109
  }}
108
110
  />
109
111
  );
@@ -1,7 +1,10 @@
1
1
  import Label from '@digigov/form/inputs/Label';
2
+ import doc from './doc.mdx?raw';
2
3
  export default {
3
4
  title: 'Digigov Form/inputs/Label',
4
5
  component: Label,
6
+ tags: ['autodocs'],
7
+ markdown: doc,
5
8
  displayName: 'Label',
6
9
  };
7
10
  export { Default } from '@digigov/form/inputs/Label/__stories__/Default';
@@ -4,7 +4,7 @@ import Field from '@digigov/form/Field';
4
4
  import Label from '@digigov/form/inputs/Label';
5
5
  import { Button } from '@digigov/ui/form/Button';
6
6
 
7
- export const Default = () => (
7
+ export const Default = (_: any) => (
8
8
  <FormBuilder
9
9
  onSubmit={(data) => {
10
10
  console.log(data);
@@ -1,7 +1,10 @@
1
1
  import OtpInput from '@digigov/form/inputs/OtpInput';
2
+ import doc from './doc.mdx?raw';
2
3
  export default {
3
4
  title: 'Digigov Form/inputs/OtpInput',
4
5
  component: OtpInput,
6
+ tags: ['autodocs'],
7
+ markdown: doc,
5
8
  displayName: 'OtpInput',
6
9
  };
7
10
  export { Default } from '@digigov/form/inputs/OtpInput/__stories__/Default';
@@ -14,7 +14,7 @@ const FIELDS: FieldSpec[] = [
14
14
  },
15
15
  ];
16
16
 
17
- export const Default = () => (
17
+ export const Default = (_: any) => (
18
18
  <FormBuilder
19
19
  fields={FIELDS}
20
20
  onSubmit={(data) => {
@@ -1,7 +1,10 @@
1
1
  import Radio from '@digigov/form/inputs/Radio';
2
+ import doc from './doc.mdx?raw';
2
3
  export default {
3
4
  title: 'Digigov Form/inputs/Radio',
4
5
  component: Radio,
6
+ tags: ['autodocs'],
7
+ markdown: doc,
5
8
  displayName: 'Radio',
6
9
  };
7
10
  export { Default } from '@digigov/form/inputs/Radio/__stories__/Default';
@@ -85,7 +85,7 @@ const fields: FieldSpec[] = [
85
85
  },
86
86
  ];
87
87
 
88
- export const Conditional = () => (
88
+ export const Conditional = (_: any) => (
89
89
  <FormBuilder
90
90
  onSubmit={(data) => {
91
91
  console.log(data);
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import FormBuilder, { Field } from '@digigov/form';
3
3
  import { Button } from '@digigov/ui/form/Button';
4
4
 
5
- export const Default = () => (
5
+ export const Default = (_: any) => (
6
6
  <FormBuilder
7
7
  onSubmit={(data) => {
8
8
  console.log(data);
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import FormBuilder, { Field } from '@digigov/form';
3
3
  import { Button } from '@digigov/ui/form/Button';
4
4
 
5
- export const WithDivider = () => (
5
+ export const WithDivider = (_: any) => (
6
6
  <FormBuilder
7
7
  onSubmit={(data) => {
8
8
  console.log(data);
@@ -1,7 +1,10 @@
1
1
  import Select from '@digigov/form/inputs/Select';
2
+ import doc from './doc.mdx?raw';
2
3
  export default {
3
4
  title: 'Digigov Form/inputs/Select',
4
5
  component: Select,
6
+ tags: ['autodocs'],
7
+ markdown: doc,
5
8
  displayName: 'Select',
6
9
  };
7
10
  export { Default } from '@digigov/form/inputs/Select/__stories__/Default';
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import FormBuilder, { Field } from '@digigov/form';
3
3
  import { Button } from '@digigov/ui/form/Button';
4
4
 
5
- export const Default = () => (
5
+ export const Default = (_: any) => (
6
6
  <FormBuilder
7
7
  onSubmit={(data) => {
8
8
  console.log(data);
@@ -6,11 +6,13 @@ import {
6
6
  SelectOption,
7
7
  } from '@digigov/ui/form/SelectContainer';
8
8
 
9
- export interface SelectProps extends Omit<UncontrolledFieldProps, 'extra'> {
9
+ export interface SelectProps
10
+ extends Omit<UncontrolledFieldProps, 'extra' | 'Field'> {
10
11
  extra: {
11
12
  className?: string;
12
13
  options: FieldOptionProps[];
13
14
  };
15
+ Field?: UncontrolledFieldProps['Field'];
14
16
  }
15
17
 
16
18
  export const Select: React.ExoticComponent<SelectProps> = React.forwardRef(
@@ -18,6 +20,7 @@ export const Select: React.ExoticComponent<SelectProps> = React.forwardRef(
18
20
  { name, extra: { options, className }, disabled, ...props },
19
21
  ref: never
20
22
  ) {
23
+ delete props.Field;
21
24
  return (
22
25
  <SelectContainer
23
26
  className={className}
@@ -28,12 +31,12 @@ export const Select: React.ExoticComponent<SelectProps> = React.forwardRef(
28
31
  {...{
29
32
  ...props,
30
33
  reset: undefined,
34
+ error: undefined,
31
35
  required: undefined,
32
- Field: undefined,
33
36
  }}
34
37
  >
35
- {options.map(({ value, label }) => (
36
- <SelectOption key={value} value={value}>
38
+ {options.map(({ value, label }, index) => (
39
+ <SelectOption key={index} value={value}>
37
40
  {label && label.primary ? label.primary : value}
38
41
  </SelectOption>
39
42
  ))}