@digigov/form 0.8.3 → 0.8.5-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. package/CHANGELOG.md +10 -1
  2. package/{libs/form/src/Field → Field}/FieldBase.d.ts +0 -0
  3. package/Field/FieldBase.js +1 -0
  4. package/{libs/form/src/Field → Field}/FieldConditional.d.ts +0 -0
  5. package/{libs/form/src/Field → Field}/FieldContainer.d.ts +0 -0
  6. package/{libs/form/src/Field → Field}/index.d.ts +0 -0
  7. package/{libs/form/src/Field → Field}/types.d.ts +0 -0
  8. package/{libs/form/src/Field → Field}/utils.d.ts +0 -0
  9. package/Field/utils.js +7 -0
  10. package/{libs/form/src/FieldArray → FieldArray}/FieldArray.stories.d.ts +0 -0
  11. package/FieldArray/FieldArray.stories.playwright.json +168 -0
  12. package/{libs/form/src/FieldArray → FieldArray}/__stories__/Default.d.ts +0 -0
  13. package/FieldArray/__stories__/Default.js +3 -5
  14. package/{libs/form/src/FieldArray → FieldArray}/__stories__/WithExactLength.d.ts +0 -0
  15. package/FieldArray/__stories__/WithExactLength.js +3 -5
  16. package/{libs/form/src/FieldArray → FieldArray}/index.d.ts +0 -0
  17. package/FieldArray/index.js +1 -0
  18. package/{libs/form/src/FieldObject → FieldObject}/index.d.ts +0 -0
  19. package/FieldObject/index.js +1 -2
  20. package/{libs/form/src/Fieldset → Fieldset}/FieldsetWithContext.d.ts +0 -0
  21. package/{libs/form/src/Fieldset → Fieldset}/index.d.ts +0 -0
  22. package/{libs/form/src/Fieldset → Fieldset}/types.d.ts +0 -0
  23. package/{libs/form/src/Form.stories.d.ts → Form.stories.d.ts} +1 -0
  24. package/Form.stories.js +14 -0
  25. package/{libs/form/src → FormBuilder}/FormBuilder.d.ts +0 -0
  26. package/{FormBuilder.js → FormBuilder/FormBuilder.js} +0 -0
  27. package/FormBuilder/FormBuilder.mdx +271 -0
  28. package/FormBuilder/FormBuilder.stories.d.ts +7 -0
  29. package/FormBuilder/FormBuilder.stories.js +30 -0
  30. package/{libs/form/src/inputs/FileInput → FormBuilder}/__stories__/Default.d.ts +0 -0
  31. package/FormBuilder/__stories__/Default.js +45 -0
  32. package/FormBuilder/index.d.ts +2 -0
  33. package/FormBuilder/index.js +11 -0
  34. package/{libs/form/src/FormContext.d.ts → FormContext.d.ts} +0 -0
  35. package/MultiplicityField/MultiplicityField.mdx +148 -0
  36. package/{libs/form/src/MultiplicityField → MultiplicityField}/MultiplicityField.stories.d.ts +0 -0
  37. package/{libs/form/src/MultiplicityField → MultiplicityField}/__stories__/Default.d.ts +0 -0
  38. package/MultiplicityField/__stories__/Default.js +3 -5
  39. package/{libs/form/src/MultiplicityField → MultiplicityField}/__stories__/WithExactLength.d.ts +0 -0
  40. package/MultiplicityField/__stories__/WithExactLength.js +3 -5
  41. package/{libs/form/src/MultiplicityField → MultiplicityField}/__stories__/WithMaxLength.d.ts +0 -0
  42. package/MultiplicityField/__stories__/WithMaxLength.js +3 -5
  43. package/{libs/form/src/MultiplicityField → MultiplicityField}/__stories__/WithMinAndMaxLength.d.ts +0 -0
  44. package/MultiplicityField/__stories__/WithMinAndMaxLength.js +3 -5
  45. package/{libs/form/src/MultiplicityField → MultiplicityField}/__stories__/WithMinLength.d.ts +0 -0
  46. package/MultiplicityField/__stories__/WithMinLength.js +3 -5
  47. package/{libs/form/src/MultiplicityField → MultiplicityField}/add-objects.d.ts +0 -0
  48. package/{libs/form/src/MultiplicityField → MultiplicityField}/index.d.ts +0 -0
  49. package/{libs/form/src/Questions → Questions}/Questions.d.ts +0 -0
  50. package/{libs/form/src/Questions → Questions}/QuestionsContext.d.ts +0 -0
  51. package/{libs/form/src/Questions → Questions}/Step/ReviewStep.d.ts +0 -0
  52. package/{libs/form/src/Questions → Questions}/Step/Step.d.ts +0 -0
  53. package/{libs/form/src/Questions → Questions}/Step/StepArrayReview.d.ts +0 -0
  54. package/Questions/Step/StepArrayReview.js +2 -2
  55. package/{libs/form/src/Questions → Questions}/Step/StepContext.d.ts +0 -0
  56. package/{libs/form/src/Questions → Questions}/Step/StepDescription.d.ts +0 -0
  57. package/{libs/form/src/Questions → Questions}/Step/StepForm.d.ts +0 -0
  58. package/{libs/form/src/Questions → Questions}/Step/StepQuote.d.ts +0 -0
  59. package/{libs/form/src/Questions → Questions}/Step/StepTitle.d.ts +0 -0
  60. package/{libs/form/src/Questions → Questions}/Step/getAddMoreFields.d.ts +0 -0
  61. package/{libs/form/src/Questions → Questions}/Step/index.d.ts +0 -0
  62. package/{libs/form/src/Questions → Questions}/Step/types.d.ts +0 -0
  63. package/Questions/__snapshots__/index.spec.tsx.snap +649 -449
  64. package/{libs/form/src/Questions → Questions}/getNextStep.d.ts +0 -0
  65. package/{libs/form/src/Questions → Questions}/index.d.ts +0 -0
  66. package/Questions/index.mdx +0 -187
  67. package/{libs/form/src/Questions → Questions}/index.spec.d.ts +0 -0
  68. package/{libs/form/src/Questions → Questions}/types.d.ts +0 -0
  69. package/__stories__/AutoCompleteField.d.ts +1 -0
  70. package/__stories__/AutoCompleteField.js +61 -0
  71. package/{libs/form/src/__stories__ → __stories__}/IntField.d.ts +0 -0
  72. package/__stories__/IntField.js +5 -9
  73. package/create-simple-form.mdx +515 -0
  74. package/es/Field/FieldBase.js +1 -0
  75. package/es/Field/utils.js +6 -0
  76. package/es/FieldArray/FieldArray.stories.playwright.json +168 -0
  77. package/es/FieldArray/__stories__/Default.js +3 -5
  78. package/es/FieldArray/__stories__/WithExactLength.js +3 -5
  79. package/es/FieldArray/index.js +1 -0
  80. package/es/FieldObject/index.js +1 -2
  81. package/es/Form.stories.js +2 -1
  82. package/es/{FormBuilder.js → FormBuilder/FormBuilder.js} +0 -0
  83. package/es/FormBuilder/FormBuilder.mdx +271 -0
  84. package/es/FormBuilder/FormBuilder.stories.js +6 -0
  85. package/es/FormBuilder/__stories__/Default.js +25 -0
  86. package/es/FormBuilder/index.js +2 -0
  87. package/es/MultiplicityField/MultiplicityField.mdx +148 -0
  88. package/es/MultiplicityField/__stories__/Default.js +3 -5
  89. package/es/MultiplicityField/__stories__/WithExactLength.js +3 -5
  90. package/es/MultiplicityField/__stories__/WithMaxLength.js +3 -5
  91. package/es/MultiplicityField/__stories__/WithMinAndMaxLength.js +3 -5
  92. package/es/MultiplicityField/__stories__/WithMinLength.js +3 -5
  93. package/es/Questions/Step/StepArrayReview.js +1 -1
  94. package/es/Questions/__snapshots__/index.spec.tsx.snap +649 -449
  95. package/es/Questions/index.mdx +0 -187
  96. package/es/__stories__/AutoCompleteField.js +45 -0
  97. package/es/__stories__/IntField.js +2 -1
  98. package/es/create-simple-form.mdx +515 -0
  99. package/es/index.mdx +37 -199
  100. package/es/inputs/AutoComplete/index.js +45 -0
  101. package/es/inputs/Checkboxes/Checkboxes.stories.js +6 -0
  102. package/es/inputs/Checkboxes/__stories__/Default.js +43 -0
  103. package/es/inputs/DateInput/DateInput.stories.js +6 -0
  104. package/es/inputs/DateInput/__stories__/Default.js +44 -0
  105. package/es/inputs/Input/Input.stories.js +13 -0
  106. package/es/inputs/Input/__stories__/AFM.js +25 -0
  107. package/es/inputs/Input/__stories__/Boolean.js +26 -0
  108. package/es/inputs/Input/__stories__/Default.js +26 -0
  109. package/es/inputs/Input/__stories__/IBAN.js +26 -0
  110. package/es/inputs/Input/__stories__/Integer.js +26 -0
  111. package/es/inputs/Input/__stories__/MobilePhone.js +25 -0
  112. package/es/inputs/Input/__stories__/PhoneNumber.js +25 -0
  113. package/es/inputs/Input/__stories__/PostalCode.js +28 -0
  114. package/es/inputs/Input/index.mdx +0 -2
  115. package/es/inputs/Label/Label.stories.js +6 -0
  116. package/es/inputs/Label/__stories__/Default.js +30 -0
  117. package/es/inputs/Radio/Radio.stories.js +6 -0
  118. package/es/inputs/Radio/__stories__/Default.js +48 -0
  119. package/es/inputs/Radio/index.js +3 -2
  120. package/es/inputs/Select/Select.stories.js +6 -0
  121. package/es/inputs/Select/__stories__/Default.js +54 -0
  122. package/es/installation.mdx +72 -0
  123. package/es/registry.js +129 -0
  124. package/esm/Field/FieldBase.js +1 -0
  125. package/esm/Field/utils.js +6 -0
  126. package/esm/FieldArray/FieldArray.stories.playwright.json +168 -0
  127. package/esm/FieldArray/__stories__/Default.js +3 -5
  128. package/esm/FieldArray/__stories__/WithExactLength.js +3 -5
  129. package/esm/FieldArray/index.js +1 -0
  130. package/esm/FieldObject/index.js +1 -2
  131. package/esm/Form.stories.js +2 -1
  132. package/esm/{FormBuilder.js → FormBuilder/FormBuilder.js} +0 -0
  133. package/esm/FormBuilder/FormBuilder.mdx +271 -0
  134. package/esm/FormBuilder/FormBuilder.stories.js +6 -0
  135. package/esm/FormBuilder/__stories__/Default.js +25 -0
  136. package/esm/FormBuilder/index.js +2 -0
  137. package/esm/MultiplicityField/MultiplicityField.mdx +148 -0
  138. package/esm/MultiplicityField/__stories__/Default.js +3 -5
  139. package/esm/MultiplicityField/__stories__/WithExactLength.js +3 -5
  140. package/esm/MultiplicityField/__stories__/WithMaxLength.js +3 -5
  141. package/esm/MultiplicityField/__stories__/WithMinAndMaxLength.js +3 -5
  142. package/esm/MultiplicityField/__stories__/WithMinLength.js +3 -5
  143. package/esm/Questions/Step/StepArrayReview.js +1 -1
  144. package/esm/Questions/__snapshots__/index.spec.tsx.snap +649 -449
  145. package/esm/Questions/index.mdx +0 -187
  146. package/esm/__stories__/AutoCompleteField.js +45 -0
  147. package/esm/__stories__/IntField.js +2 -1
  148. package/esm/create-simple-form.mdx +515 -0
  149. package/esm/index.js +1 -1
  150. package/esm/index.mdx +37 -199
  151. package/esm/inputs/AutoComplete/index.js +45 -0
  152. package/esm/inputs/Checkboxes/Checkboxes.stories.js +6 -0
  153. package/esm/inputs/Checkboxes/__stories__/Default.js +43 -0
  154. package/esm/inputs/DateInput/DateInput.stories.js +6 -0
  155. package/esm/inputs/DateInput/__stories__/Default.js +44 -0
  156. package/esm/inputs/Input/Input.stories.js +13 -0
  157. package/esm/inputs/Input/__stories__/AFM.js +25 -0
  158. package/esm/inputs/Input/__stories__/Boolean.js +26 -0
  159. package/esm/inputs/Input/__stories__/Default.js +26 -0
  160. package/esm/inputs/Input/__stories__/IBAN.js +26 -0
  161. package/esm/inputs/Input/__stories__/Integer.js +26 -0
  162. package/esm/inputs/Input/__stories__/MobilePhone.js +25 -0
  163. package/esm/inputs/Input/__stories__/PhoneNumber.js +25 -0
  164. package/esm/inputs/Input/__stories__/PostalCode.js +28 -0
  165. package/esm/inputs/Input/index.mdx +0 -2
  166. package/esm/inputs/Label/Label.stories.js +6 -0
  167. package/esm/inputs/Label/__stories__/Default.js +30 -0
  168. package/esm/inputs/Radio/Radio.stories.js +6 -0
  169. package/esm/inputs/Radio/__stories__/Default.js +48 -0
  170. package/esm/inputs/Radio/index.js +3 -2
  171. package/esm/inputs/Select/Select.stories.js +6 -0
  172. package/esm/inputs/Select/__stories__/Default.js +54 -0
  173. package/esm/installation.mdx +72 -0
  174. package/esm/registry.js +129 -0
  175. package/{libs/form/src/index.d.ts → index.d.ts} +0 -0
  176. package/index.mdx +37 -199
  177. package/inputs/AutoComplete/index.d.ts +14 -0
  178. package/inputs/AutoComplete/index.js +68 -0
  179. package/inputs/Checkboxes/Checkboxes.stories.d.ts +7 -0
  180. package/inputs/Checkboxes/Checkboxes.stories.js +30 -0
  181. package/inputs/Checkboxes/__stories__/Default.d.ts +2 -0
  182. package/inputs/Checkboxes/__stories__/Default.js +63 -0
  183. package/{libs/form/src/inputs → inputs}/Checkboxes/index.d.ts +0 -0
  184. package/inputs/DateInput/DateInput.stories.d.ts +7 -0
  185. package/inputs/DateInput/DateInput.stories.js +30 -0
  186. package/inputs/DateInput/__stories__/Default.d.ts +2 -0
  187. package/inputs/DateInput/__stories__/Default.js +64 -0
  188. package/{libs/form/src/inputs → inputs}/DateInput/index.d.ts +0 -0
  189. package/{libs/form/src/inputs → inputs}/FileInput/FileInput.stories.d.ts +0 -0
  190. package/inputs/FileInput/__stories__/Default.d.ts +2 -0
  191. package/{libs/form/src/inputs → inputs}/FileInput/index.d.ts +0 -0
  192. package/inputs/Input/Input.stories.d.ts +14 -0
  193. package/inputs/Input/Input.stories.js +128 -0
  194. package/inputs/Input/__stories__/AFM.d.ts +2 -0
  195. package/inputs/Input/__stories__/AFM.js +45 -0
  196. package/inputs/Input/__stories__/Boolean.d.ts +2 -0
  197. package/inputs/Input/__stories__/Boolean.js +46 -0
  198. package/inputs/Input/__stories__/Default.d.ts +2 -0
  199. package/inputs/Input/__stories__/Default.js +46 -0
  200. package/inputs/Input/__stories__/IBAN.d.ts +2 -0
  201. package/inputs/Input/__stories__/IBAN.js +46 -0
  202. package/inputs/Input/__stories__/Integer.d.ts +2 -0
  203. package/inputs/Input/__stories__/Integer.js +46 -0
  204. package/inputs/Input/__stories__/MobilePhone.d.ts +2 -0
  205. package/inputs/Input/__stories__/MobilePhone.js +45 -0
  206. package/inputs/Input/__stories__/PhoneNumber.d.ts +2 -0
  207. package/inputs/Input/__stories__/PhoneNumber.js +45 -0
  208. package/inputs/Input/__stories__/PostalCode.d.ts +2 -0
  209. package/inputs/Input/__stories__/PostalCode.js +48 -0
  210. package/{libs/form/src/inputs → inputs}/Input/index.d.ts +0 -0
  211. package/inputs/Input/index.mdx +0 -2
  212. package/inputs/Label/Label.stories.d.ts +7 -0
  213. package/inputs/Label/Label.stories.js +30 -0
  214. package/inputs/Label/__stories__/Default.d.ts +2 -0
  215. package/inputs/Label/__stories__/Default.js +50 -0
  216. package/{libs/form/src/inputs → inputs}/Label/index.d.ts +0 -0
  217. package/inputs/Radio/Radio.stories.d.ts +7 -0
  218. package/inputs/Radio/Radio.stories.js +30 -0
  219. package/inputs/Radio/__stories__/Default.d.ts +2 -0
  220. package/inputs/Radio/__stories__/Default.js +68 -0
  221. package/{libs/form/src/inputs → inputs}/Radio/index.d.ts +0 -0
  222. package/inputs/Radio/index.js +3 -2
  223. package/inputs/Select/Select.stories.d.ts +7 -0
  224. package/inputs/Select/Select.stories.js +30 -0
  225. package/inputs/Select/__stories__/Default.d.ts +2 -0
  226. package/inputs/Select/__stories__/Default.js +74 -0
  227. package/{libs/form/src/inputs → inputs}/Select/index.d.ts +0 -0
  228. package/{libs/form/src/inputs → inputs}/index.d.ts +0 -0
  229. package/installation.mdx +72 -0
  230. package/{libs/form/src/internal.d.ts → internal.d.ts} +0 -0
  231. package/package.json +6 -5
  232. package/registry.d.ts +59 -0
  233. package/registry.js +198 -0
  234. package/{libs/form/src/types.d.ts → types.d.ts} +1 -1
  235. package/{libs/form/src/utils.d.ts → utils.d.ts} +0 -0
  236. package/{libs/form/src/validators → validators}/index.d.ts +0 -0
  237. package/{libs/form/src/validators → validators}/types.d.ts +0 -0
  238. package/{libs/form/src/validators → validators}/utils/afm.d.ts +0 -0
  239. package/{libs/form/src/validators → validators}/utils/file.d.ts +0 -0
  240. package/{libs/form/src/validators → validators}/utils/iban.d.ts +0 -0
  241. package/{libs/form/src/validators → validators}/utils/index.d.ts +0 -0
  242. package/{libs/form/src/validators → validators}/utils/int.d.ts +0 -0
  243. package/{libs/form/src/validators → validators}/utils/number.d.ts +0 -0
  244. package/{libs/form/src/validators → validators}/utils/phone.d.ts +0 -0
  245. package/{libs/form/src/validators → validators}/utils/postal_code.d.ts +0 -0
  246. package/{libs/form/src/validators → validators}/utils/uuid4.d.ts +0 -0
  247. package/{libs/form/src/validators → validators}/validators.spec.d.ts +0 -0
  248. package/libs/ui/src/app/PageTitle.d.ts +0 -10
  249. package/libs/ui/src/app/i18n.d.ts +0 -12
  250. package/libs/ui/src/core/Accordion/index.d.ts +0 -23
  251. package/libs/ui/src/core/BackLink/index.d.ts +0 -3
  252. package/libs/ui/src/core/Base/index.d.ts +0 -3
  253. package/libs/ui/src/core/Blockquote/index.d.ts +0 -3
  254. package/libs/ui/src/core/Breadcrumbs/index.d.ts +0 -5
  255. package/libs/ui/src/core/Button/BackButton.d.ts +0 -3
  256. package/libs/ui/src/core/Button/ButtonLink.d.ts +0 -4
  257. package/libs/ui/src/core/Button/CallToAction.d.ts +0 -7
  258. package/libs/ui/src/core/Button/Icon.d.ts +0 -2
  259. package/libs/ui/src/core/Button/index.d.ts +0 -15
  260. package/libs/ui/src/core/Card/index.d.ts +0 -6
  261. package/libs/ui/src/core/Confirmation/index.d.ts +0 -5
  262. package/libs/ui/src/core/Details/index.d.ts +0 -5
  263. package/libs/ui/src/core/Divider/index.d.ts +0 -5
  264. package/libs/ui/src/core/ErrorSummary/index.d.ts +0 -3
  265. package/libs/ui/src/core/FileUpload/index.d.ts +0 -3
  266. package/libs/ui/src/core/Form/index.d.ts +0 -3
  267. package/libs/ui/src/core/Hidden/index.d.ts +0 -1
  268. package/libs/ui/src/core/Label/index.d.ts +0 -4
  269. package/libs/ui/src/core/Link/index.d.ts +0 -13
  270. package/libs/ui/src/core/List/List.d.ts +0 -3
  271. package/libs/ui/src/core/List/ListItem.d.ts +0 -3
  272. package/libs/ui/src/core/List/ListItemContent.d.ts +0 -6
  273. package/libs/ui/src/core/List/ListItemIcon.d.ts +0 -5
  274. package/libs/ui/src/core/List/ListItemText.d.ts +0 -7
  275. package/libs/ui/src/core/List/ListItemTitle.d.ts +0 -9
  276. package/libs/ui/src/core/List/index.d.ts +0 -7
  277. package/libs/ui/src/core/NavList/NavHorizontal.d.ts +0 -3
  278. package/libs/ui/src/core/NavList/NavHorizontalList.d.ts +0 -3
  279. package/libs/ui/src/core/NavList/NavHorizontalListItem.d.ts +0 -3
  280. package/libs/ui/src/core/NavList/NavList.d.ts +0 -4
  281. package/libs/ui/src/core/NavList/NavListBase.d.ts +0 -4
  282. package/libs/ui/src/core/NavList/NavListContext.d.ts +0 -20
  283. package/libs/ui/src/core/NavList/NavListItem.d.ts +0 -14
  284. package/libs/ui/src/core/NavList/NavListItemBase.d.ts +0 -17
  285. package/libs/ui/src/core/NavList/NavListSubMenu.d.ts +0 -8
  286. package/libs/ui/src/core/NavList/NavVertical.d.ts +0 -3
  287. package/libs/ui/src/core/NavList/NavVerticalItem.d.ts +0 -3
  288. package/libs/ui/src/core/NavList/index.d.ts +0 -10
  289. package/libs/ui/src/core/NavList/types.d.ts +0 -14
  290. package/libs/ui/src/core/NotificationBanner/index.d.ts +0 -18
  291. package/libs/ui/src/core/PhaseBanner/index.d.ts +0 -6
  292. package/libs/ui/src/core/ServiceBadge/index.d.ts +0 -8
  293. package/libs/ui/src/core/SkipLink/index.d.ts +0 -3
  294. package/libs/ui/src/core/SummaryList/index.d.ts +0 -7
  295. package/libs/ui/src/core/SvgIcon/index.d.ts +0 -10
  296. package/libs/ui/src/core/Table/TableFloatingScroll.d.ts +0 -2
  297. package/libs/ui/src/core/Table/index.d.ts +0 -10
  298. package/libs/ui/src/core/Tabs/index.d.ts +0 -16
  299. package/libs/ui/src/core/TextArea/index.d.ts +0 -3
  300. package/libs/ui/src/core/TextInput/index.d.ts +0 -3
  301. package/libs/ui/src/core/VisuallyHidden/index.d.ts +0 -3
  302. package/libs/ui/src/core/WarningText/index.d.ts +0 -3
  303. package/libs/ui/src/core/index.d.ts +0 -32
  304. package/libs/ui/src/hooks/useTogglableSections.d.ts +0 -19
  305. package/libs/ui/src/layouts/Grid/index.d.ts +0 -4
  306. package/libs/ui/src/locales/el.d.ts +0 -84
  307. package/libs/ui/src/router/index.d.ts +0 -9
  308. package/libs/ui/src/typography/Caption/index.d.ts +0 -8
  309. package/libs/ui/src/typography/NormalText/index.d.ts +0 -5
  310. package/libs/ui/src/typography/Paragraph/index.d.ts +0 -6
  311. package/libs/ui/src/typography/Title/index.d.ts +0 -10
  312. package/libs/ui/src/utils/withDeprecation.d.ts +0 -16
  313. package/libs-ui/react-core/src/Accordion/index.d.ts +0 -10
  314. package/libs-ui/react-core/src/AccordionControls/index.d.ts +0 -9
  315. package/libs-ui/react-core/src/AccordionSection/index.d.ts +0 -16
  316. package/libs-ui/react-core/src/AccordionSectionContent/index.d.ts +0 -10
  317. package/libs-ui/react-core/src/AccordionSectionHeader/index.d.ts +0 -9
  318. package/libs-ui/react-core/src/AccordionSectionSummary/index.d.ts +0 -10
  319. package/libs-ui/react-core/src/AccordionSectionSummaryHeading/index.d.ts +0 -9
  320. package/libs-ui/react-core/src/ArrowIcon/index.d.ts +0 -16
  321. package/libs-ui/react-core/src/Aside/index.d.ts +0 -10
  322. package/libs-ui/react-core/src/BackLink/index.d.ts +0 -13
  323. package/libs-ui/react-core/src/Base/index.d.ts +0 -43
  324. package/libs-ui/react-core/src/Blockquote/index.d.ts +0 -9
  325. package/libs-ui/react-core/src/Bottom/index.d.ts +0 -9
  326. package/libs-ui/react-core/src/Breadcrumbs/index.d.ts +0 -10
  327. package/libs-ui/react-core/src/BreadcrumbsList/index.d.ts +0 -9
  328. package/libs-ui/react-core/src/BreadcrumbsListItem/index.d.ts +0 -14
  329. package/libs-ui/react-core/src/BurgerIcon/index.d.ts +0 -28
  330. package/libs-ui/react-core/src/Button/index.d.ts +0 -25
  331. package/libs-ui/react-core/src/ButtonGroup/index.d.ts +0 -9
  332. package/libs-ui/react-core/src/ButtonLink/index.d.ts +0 -17
  333. package/libs-ui/react-core/src/CallToAction/index.d.ts +0 -10
  334. package/libs-ui/react-core/src/Card/index.d.ts +0 -29
  335. package/libs-ui/react-core/src/CardAction/index.d.ts +0 -11
  336. package/libs-ui/react-core/src/CardHeading/index.d.ts +0 -10
  337. package/libs-ui/react-core/src/CardText/index.d.ts +0 -10
  338. package/libs-ui/react-core/src/CaretIcon/index.d.ts +0 -16
  339. package/libs-ui/react-core/src/CheckIcon/index.d.ts +0 -15
  340. package/libs-ui/react-core/src/Checkbox/index.d.ts +0 -11
  341. package/libs-ui/react-core/src/CheckboxConditional/index.d.ts +0 -11
  342. package/libs-ui/react-core/src/CheckboxItem/index.d.ts +0 -19
  343. package/libs-ui/react-core/src/CloseIcon/index.d.ts +0 -16
  344. package/libs-ui/react-core/src/Confirmation/index.d.ts +0 -9
  345. package/libs-ui/react-core/src/ConfirmationBody/index.d.ts +0 -9
  346. package/libs-ui/react-core/src/ConfirmationTitle/index.d.ts +0 -9
  347. package/libs-ui/react-core/src/Container/index.d.ts +0 -17
  348. package/libs-ui/react-core/src/Copyright/index.d.ts +0 -10
  349. package/libs-ui/react-core/src/DateInput/index.d.ts +0 -12
  350. package/libs-ui/react-core/src/DateInputItem/index.d.ts +0 -25
  351. package/libs-ui/react-core/src/Details/index.d.ts +0 -10
  352. package/libs-ui/react-core/src/DetailsContent/index.d.ts +0 -10
  353. package/libs-ui/react-core/src/DetailsSummary/index.d.ts +0 -9
  354. package/libs-ui/react-core/src/ErrorMessage/index.d.ts +0 -11
  355. package/libs-ui/react-core/src/ErrorSummary/index.d.ts +0 -9
  356. package/libs-ui/react-core/src/Field/index.d.ts +0 -13
  357. package/libs-ui/react-core/src/Fieldset/index.d.ts +0 -10
  358. package/libs-ui/react-core/src/FieldsetLegend/index.d.ts +0 -19
  359. package/libs-ui/react-core/src/FileUpload/index.d.ts +0 -22
  360. package/libs-ui/react-core/src/FileUploadContainer/index.d.ts +0 -14
  361. package/libs-ui/react-core/src/Footer/index.d.ts +0 -9
  362. package/libs-ui/react-core/src/FooterContainer/index.d.ts +0 -16
  363. package/libs-ui/react-core/src/FooterContent/index.d.ts +0 -10
  364. package/libs-ui/react-core/src/FooterContentLogos/index.d.ts +0 -11
  365. package/libs-ui/react-core/src/FooterHeading/index.d.ts +0 -15
  366. package/libs-ui/react-core/src/FooterImage/index.d.ts +0 -15
  367. package/libs-ui/react-core/src/FooterInlineList/index.d.ts +0 -11
  368. package/libs-ui/react-core/src/FooterInlineListItem/index.d.ts +0 -9
  369. package/libs-ui/react-core/src/FooterLink/index.d.ts +0 -13
  370. package/libs-ui/react-core/src/FooterList/index.d.ts +0 -15
  371. package/libs-ui/react-core/src/FooterListItem/index.d.ts +0 -10
  372. package/libs-ui/react-core/src/FooterMeta/index.d.ts +0 -11
  373. package/libs-ui/react-core/src/FooterMetaItem/index.d.ts +0 -14
  374. package/libs-ui/react-core/src/FooterNavigation/index.d.ts +0 -11
  375. package/libs-ui/react-core/src/FooterSection/index.d.ts +0 -11
  376. package/libs-ui/react-core/src/Form/index.d.ts +0 -11
  377. package/libs-ui/react-core/src/GovGRFooter/index.d.ts +0 -9
  378. package/libs-ui/react-core/src/GovGRLogo/govgr-logo-base64.d.ts +0 -2
  379. package/libs-ui/react-core/src/GovGRLogo/index.d.ts +0 -9
  380. package/libs-ui/react-core/src/Grid/index.d.ts +0 -20
  381. package/libs-ui/react-core/src/Header/index.d.ts +0 -10
  382. package/libs-ui/react-core/src/HeaderContent/index.d.ts +0 -9
  383. package/libs-ui/react-core/src/HeaderLogo/index.d.ts +0 -21
  384. package/libs-ui/react-core/src/HeaderSecondaryLogo/index.d.ts +0 -21
  385. package/libs-ui/react-core/src/HeaderSection/index.d.ts +0 -9
  386. package/libs-ui/react-core/src/HeaderSubtitle/index.d.ts +0 -9
  387. package/libs-ui/react-core/src/HeaderTitle/index.d.ts +0 -13
  388. package/libs-ui/react-core/src/Heading/index.d.ts +0 -21
  389. package/libs-ui/react-core/src/HeadingCaption/index.d.ts +0 -15
  390. package/libs-ui/react-core/src/HellenicRepublicLogo/index.d.ts +0 -20
  391. package/libs-ui/react-core/src/HellenicRepublicLogo/logo-el.d.ts +0 -2
  392. package/libs-ui/react-core/src/HellenicRepublicLogo/logo-en.d.ts +0 -2
  393. package/libs-ui/react-core/src/Hidden/index.d.ts +0 -17
  394. package/libs-ui/react-core/src/Hint/index.d.ts +0 -14
  395. package/libs-ui/react-core/src/Label/index.d.ts +0 -9
  396. package/libs-ui/react-core/src/LabelTitle/index.d.ts +0 -19
  397. package/libs-ui/react-core/src/Layout/index.d.ts +0 -10
  398. package/libs-ui/react-core/src/Link/index.d.ts +0 -14
  399. package/libs-ui/react-core/src/List/index.d.ts +0 -18
  400. package/libs-ui/react-core/src/ListItem/index.d.ts +0 -9
  401. package/libs-ui/react-core/src/Main/index.d.ts +0 -9
  402. package/libs-ui/react-core/src/Masthead/index.d.ts +0 -9
  403. package/libs-ui/react-core/src/MastheadBody/index.d.ts +0 -9
  404. package/libs-ui/react-core/src/MoreVertIcon/index.d.ts +0 -15
  405. package/libs-ui/react-core/src/NavHorizontal/index.d.ts +0 -16
  406. package/libs-ui/react-core/src/NavHorizontalList/index.d.ts +0 -10
  407. package/libs-ui/react-core/src/NavHorizontalListItem/index.d.ts +0 -18
  408. package/libs-ui/react-core/src/NavVertical/index.d.ts +0 -11
  409. package/libs-ui/react-core/src/NavVerticalItem/index.d.ts +0 -14
  410. package/libs-ui/react-core/src/NormalText/index.d.ts +0 -28
  411. package/libs-ui/react-core/src/NotificationBanner/index.d.ts +0 -17
  412. package/libs-ui/react-core/src/NotificationBannerContent/index.d.ts +0 -12
  413. package/libs-ui/react-core/src/NotificationBannerHeader/index.d.ts +0 -11
  414. package/libs-ui/react-core/src/NotificationBannerHeading/index.d.ts +0 -11
  415. package/libs-ui/react-core/src/NotificationBannerLink/index.d.ts +0 -15
  416. package/libs-ui/react-core/src/PageTitle/index.d.ts +0 -9
  417. package/libs-ui/react-core/src/PageTitleCaption/index.d.ts +0 -14
  418. package/libs-ui/react-core/src/PageTitleHeading/index.d.ts +0 -13
  419. package/libs-ui/react-core/src/PageTitleSection/index.d.ts +0 -10
  420. package/libs-ui/react-core/src/Paragraph/index.d.ts +0 -26
  421. package/libs-ui/react-core/src/PhaseBanner/index.d.ts +0 -15
  422. package/libs-ui/react-core/src/PhaseBannerHeaderContainer/index.d.ts +0 -8
  423. package/libs-ui/react-core/src/PhaseBannerTag/index.d.ts +0 -9
  424. package/libs-ui/react-core/src/PhaseBannerText/index.d.ts +0 -11
  425. package/libs-ui/react-core/src/Radio/index.d.ts +0 -14
  426. package/libs-ui/react-core/src/RadioConditional/index.d.ts +0 -11
  427. package/libs-ui/react-core/src/RadioItem/index.d.ts +0 -18
  428. package/libs-ui/react-core/src/SectionBreak/index.d.ts +0 -18
  429. package/libs-ui/react-core/src/Select/index.d.ts +0 -14
  430. package/libs-ui/react-core/src/SelectOption/index.d.ts +0 -18
  431. package/libs-ui/react-core/src/ServiceBadge/index.d.ts +0 -11
  432. package/libs-ui/react-core/src/SkipLink/index.d.ts +0 -10
  433. package/libs-ui/react-core/src/SummaryList/index.d.ts +0 -16
  434. package/libs-ui/react-core/src/SummaryListItem/index.d.ts +0 -10
  435. package/libs-ui/react-core/src/SummaryListItemAction/index.d.ts +0 -10
  436. package/libs-ui/react-core/src/SummaryListItemKey/index.d.ts +0 -10
  437. package/libs-ui/react-core/src/SummaryListItemValue/index.d.ts +0 -9
  438. package/libs-ui/react-core/src/SvgIcon/index.d.ts +0 -20
  439. package/libs-ui/react-core/src/Table/index.d.ts +0 -34
  440. package/libs-ui/react-core/src/TableBody/index.d.ts +0 -9
  441. package/libs-ui/react-core/src/TableCaption/index.d.ts +0 -15
  442. package/libs-ui/react-core/src/TableContainer/index.d.ts +0 -13
  443. package/libs-ui/react-core/src/TableDataCell/index.d.ts +0 -15
  444. package/libs-ui/react-core/src/TableHead/index.d.ts +0 -9
  445. package/libs-ui/react-core/src/TableHeadCell/index.d.ts +0 -21
  446. package/libs-ui/react-core/src/TableNoDataRow/index.d.ts +0 -10
  447. package/libs-ui/react-core/src/TableRow/index.d.ts +0 -9
  448. package/libs-ui/react-core/src/Tabs/index.d.ts +0 -10
  449. package/libs-ui/react-core/src/TabsHeading/index.d.ts +0 -15
  450. package/libs-ui/react-core/src/TabsList/index.d.ts +0 -10
  451. package/libs-ui/react-core/src/TabsListItem/index.d.ts +0 -20
  452. package/libs-ui/react-core/src/TabsPanel/index.d.ts +0 -16
  453. package/libs-ui/react-core/src/TextArea/index.d.ts +0 -23
  454. package/libs-ui/react-core/src/TextInput/index.d.ts +0 -28
  455. package/libs-ui/react-core/src/Top/index.d.ts +0 -9
  456. package/libs-ui/react-core/src/UncheckIcon/index.d.ts +0 -15
  457. package/libs-ui/react-core/src/VisuallyHidden/index.d.ts +0 -10
  458. package/libs-ui/react-core/src/WarningText/index.d.ts +0 -11
  459. package/libs-ui/react-core/src/index.d.ts +0 -141
@@ -0,0 +1,515 @@
1
+ ---
2
+ id: create-simple-form
3
+ title: Create a simple Digigov Form
4
+ sidebar_label: Creating simple forms
5
+ ---
6
+
7
+ import LeadText from "@site/src/components/LeadText";
8
+
9
+ <LeadText>This guide walks through building a simple form page, complete with
10
+ validation and data serialisation.</LeadText>
11
+
12
+ ## What we are building
13
+
14
+ Before we start diving into more advanced usecases, let's first create a form
15
+ asking users for their personal information.
16
+
17
+ * First name
18
+ * Last name
19
+ * AFM (Greek tax number)
20
+ * Telephone number
21
+ * Marital status
22
+
23
+ As you can see, this form is pretty basic. But even for a basic form like this
24
+ we want to implement features that will help our users submit their data. We
25
+ should add basic input validations and get any data from those inputs, assuming
26
+ that these validation checks passed. These features are not rocket science, but
27
+ even though they are used all the time, there is a lot of boilerplate code that
28
+ can be abstracted away.
29
+
30
+ Let's see how Digigov Form helps us build forms in no time.
31
+
32
+ ## Create your first form component
33
+
34
+ Let's start by creating a form in plain HTML. In this example, the first element
35
+ we use is a `<form>` followed by `<label>` and `<input>` elements. These are
36
+ primitive elements.
37
+
38
+ ```jsx
39
+ import React from 'react';
40
+
41
+ export default function SimpleForm() {
42
+ return <form>
43
+ <label>
44
+ Name:
45
+ <input type="text" name="name" />
46
+ </label>
47
+ <input type="submit" value="Submit" />
48
+ </form>
49
+ }
50
+ ```
51
+
52
+ In Digigov Form, we use the same primitive elements under the hood but we add a
53
+ lot of built-in functionality. Let's take a quick look on how we can transform
54
+ the same form using Digigov Form.
55
+
56
+ The default export of `@digigov/form` package is a React component that can be
57
+ used for wrapping Field components. The component is the same as
58
+ `@digigov/form/FormBuilder` and it can be used in two distinct ways. We will
59
+ talk about that in a more advanced guide.
60
+
61
+ ```jsx
62
+ import React from 'react';
63
+ // highlight-next-line
64
+ import Form from '@digigov/form';
65
+
66
+ export default function SimpleForm() {
67
+ // highlight-start
68
+ return <Form>
69
+ {/* this is where the fields are going to be placed */}
70
+ </Form>
71
+ // highlight-end
72
+ }
73
+ ```
74
+
75
+ ## Adding the first field
76
+
77
+ In this state, the form is just an empty shell waiting for us to define its
78
+ fields. According to our initial requirements set in the beginning of this
79
+ guide, we should create a new field with label ‘First name‘.
80
+
81
+ Let's go ahead and import the `Field` component and use it to render an input
82
+ field and a label. This component creates and manages any necessary React
83
+ components transparently. All you need to do is describe a few React props.
84
+
85
+ * `key`
86
+ * `name`
87
+ * `type`
88
+ * `label`
89
+ * `required`
90
+
91
+ These props can be then passed down the `Field` component which will be rendered
92
+ by `FormBuilder`.
93
+
94
+ Take a look at this live example. You can also use the live editor to play
95
+ around with the example code.
96
+
97
+ ```jsx
98
+ import React from 'react';
99
+ // highlight-next-line
100
+ import Form, { Field } from '@digigov/form';
101
+
102
+ export default function SimpleForm() {
103
+ return <Form>
104
+ // highlight-start
105
+ <Field
106
+ key="firstName"
107
+ name="firstName"
108
+ label={{ primary: "First name" }}
109
+ type="string"
110
+ required
111
+ />
112
+ // highlight-end
113
+ </Form>
114
+ }
115
+ ```
116
+
117
+ Hooray! 🎉
118
+
119
+ It looks like the first two fields of our awesome form are working as
120
+ expected. They are pretty basic, string inputs, accepting data input but they
121
+ don't seem to submit data or do any validation in their current state.
122
+
123
+ ```jsx live
124
+ import React from 'react';
125
+ import Form, { Field } from '@digigov/form';
126
+
127
+ export default function SimpleForm() {
128
+ return <Form>
129
+ <Field
130
+ key="firstName"
131
+ name="firstName"
132
+ label={{ primary: "First name" }}
133
+ type="string"
134
+ required
135
+ />
136
+ <Field
137
+ key="lastName"
138
+ name="lastName"
139
+ label={{ primary: "Last name" }}
140
+ type="string"
141
+ required
142
+ />
143
+ </Form>
144
+ }
145
+ ```
146
+
147
+ ## Adding a submit button
148
+
149
+ Before we proceed with adding the rest of the fields, we should first make sure
150
+ that the form is working, validating and submitting data.
151
+
152
+ Let's modify the previous example and use a `@digigov/ui/form/Button` to submit
153
+ data. First we should import the button component and use it right at the
154
+ bottom of our form.
155
+
156
+ It is important to note that you should make sure the Button has a
157
+ `type="submit"` prop. In any other case, the button will not exhibit the correct
158
+ behaviour when users try to submit data using their keyboard (eg. hitting the
159
+ enter key) or using any other tools eg. screen readers.
160
+
161
+ ```jsx
162
+ import React from 'react';
163
+ import Form, { Field } from '@digigov/form';
164
+ // highlight-next-line
165
+ import Button from '@digigov/ui/core/Button';
166
+
167
+ export default function SimpleForm() {
168
+ return <Form>
169
+ {/* this is where the fields are going to be placed */}
170
+ <Field
171
+ key="firstName"
172
+ name="firstName"
173
+ label={{ primary: "First name" }}
174
+ type="string"
175
+ required
176
+ />
177
+ <Field
178
+ key="lastName"
179
+ name="lastName"
180
+ label={{ primary: "Last name" }}
181
+ type="string"
182
+ required
183
+ />
184
+ // highlight-next-line
185
+ <Button type="submit">Continue</Button>
186
+ </Form>
187
+ }
188
+ ```
189
+
190
+ The code now looks fine. You can go ahead and test that the fields are
191
+ validating as we have instructed them. The form should display red errors when
192
+ you try to submit it with empty values.
193
+
194
+ Go ahead and try it in the live example below. You can also remove the
195
+ `required` prop from one of the fields in the live editor, and see how that
196
+ affects the submit behaviour.
197
+
198
+ ```jsx live
199
+ import React from 'react';
200
+ import Form, { Field } from '@digigov/form';
201
+ import Button from '@digigov/ui/core/Button';
202
+
203
+ export default function SimpleForm() {
204
+ return <Form>
205
+ {/* this is where the fields are going to be placed */}
206
+ <Field
207
+ key="firstName"
208
+ name="firstName"
209
+ label={{ primary: "First name" }}
210
+ type="string"
211
+ required
212
+ />
213
+ <Field
214
+ key="lastName"
215
+ name="lastName"
216
+ label={{ primary: "Last name" }}
217
+ type="string"
218
+ required
219
+ />
220
+ <Button type="submit">Continue</Button>
221
+ </Form>
222
+ }
223
+ ```
224
+
225
+ Straightaway, the form is actually doing something and it is validating our
226
+ inputs with almost zero coding needed.
227
+
228
+ That's good. But we have yet to gather data in our code when users submit the form.
229
+
230
+ ## Handling onSubmit events
231
+
232
+ Naturally, when we get data from HTML forms, we make use of the `submit` events
233
+ that are bubbling up. In React, we follow the convention of naming event
234
+ handlers like `onChange` and `onSubmit`.
235
+
236
+ We use the same familiar pattern as many other libraries. We get data inside an
237
+ event handler function and we can render this information in our application or
238
+ choose to send it to a remote server via an API.
239
+
240
+ In our case, we need a quick and dirty way to display the actual values we have
241
+ just entered to a form right back to us and render them for debugging purposes.
242
+
243
+ We will use the `useState` hook inside our functional component. This will let
244
+ us react to a `submit` event and locally save the form data as key-value pairs
245
+ in our state. Then we can call `JSON.stringify` and render the raw JSON
246
+ information.
247
+
248
+ ```jsx
249
+ // highlight-next-line
250
+ import React, { useState } from 'react';
251
+ import Form, { Field } from '@digigov/form';
252
+ import Button from '@digigov/ui/core/Button';
253
+
254
+ export default function SimpleForm() {
255
+ // highlight-start
256
+ const [submittedData, setSubmittedData] = useState({})
257
+ const handleSubmit = (data) => {
258
+ setSubmittedData(data);
259
+ }
260
+ return <>
261
+ <Form onSubmit={handleSubmit}>
262
+ // highlight-end
263
+ {/* this is where the fields are going to be placed */}
264
+ <Field
265
+ key="firstName"
266
+ name="firstName"
267
+ label={{ primary: "First name" }}
268
+ type="string"
269
+ required
270
+ />
271
+ <Field
272
+ key="lastName"
273
+ name="lastName"
274
+ label={{ primary: "Last name" }}
275
+ type="string"
276
+ required
277
+ />
278
+ <Button type="submit">Continue</Button>
279
+ </Form>
280
+ // highlight-start
281
+ {<>
282
+ You submitted the following values
283
+ <pre><code>
284
+ {JSON.stringify(submittedData)}
285
+ </code></pre>
286
+ </>}
287
+ // highlight-end
288
+ </>
289
+ }
290
+ ```
291
+
292
+ As you can see in the live example when the form first loads, the submitted data
293
+ is an empty object, which is actually the default value we have given the
294
+ `useState` hook when we declare it.
295
+
296
+ Go ahead and fill the inputs with your first and last name. Then click the
297
+ button or press enter and see what happens.
298
+
299
+ ```jsx live
300
+ import React, { useState } from 'react';
301
+ import Form, { Field } from '@digigov/form';
302
+ import Button from '@digigov/ui/core/Button';
303
+ import Paragraph from '@digigov/ui/typography/Paragraph';
304
+
305
+ export default function SimpleForm() {
306
+ const [submittedData, setSubmittedData] = useState({})
307
+ const handleSubmit = (data) => {
308
+ setSubmittedData(data);
309
+ }
310
+ return <>
311
+ <Form onSubmit={handleSubmit}>
312
+ {/* this is where the fields are going to be placed */}
313
+ <Field
314
+ key="firstName"
315
+ name="firstName"
316
+ label={{ primary: "First name" }}
317
+ type="string"
318
+ required
319
+ />
320
+ <Field
321
+ key="lastName"
322
+ name="lastName"
323
+ label={{ primary: "Last name" }}
324
+ type="string"
325
+ required
326
+ />
327
+ <Button type="submit">Continue</Button>
328
+ </Form>
329
+ {<Paragraph>
330
+ You have submitted the following values
331
+ <pre><code>
332
+ {JSON.stringify(submittedData)}
333
+ </code></pre>
334
+ </Paragraph>}
335
+ </>
336
+ }
337
+ ```
338
+
339
+ That's great, now we have a form that's actually interactive in some way. The
340
+ inputs are validating data entered and it kindly provides us the submitted data.
341
+
342
+ We're so close to achieve our original goal of a simple working form.
343
+
344
+ ## Adding miscellaneous fields
345
+
346
+ It is time to expand our little form and make it render a few more advanced
347
+ fields. We want to get the AFM number, which is used by Greek tax authorities
348
+ and a telephone number. Both of these need custom validations that ensure the
349
+ correct format for user input. Also, we want to get the marital status of our
350
+ users.
351
+
352
+ ### AFM & Phone number with validation
353
+
354
+ For these two fields, we can follow exactly the same pattern we have used for
355
+ `firstName` and `lastName` before.
356
+
357
+ In the case of the AFM, the `type` prop will have a value of `afm`. This prop
358
+ will apply the appropriate validation in the Field.
359
+
360
+ Also, please note the use of the `secondary` value in the `label` prop. It is
361
+ used to provide explanation for each field. We can use it to inform users about
362
+ the format of this tax number
363
+
364
+ ```jsx
365
+ <Field
366
+ key="taxNumber"
367
+ name="taxNumber"
368
+ type="afm"
369
+ label={{
370
+ primary: "Tax number",
371
+ secondary: "Tax number is your AFM number, given to you by AADE"
372
+ }}
373
+ required
374
+ />
375
+ ```
376
+
377
+ A similar field can be used for the phone number. You can use the
378
+ `type="phone_number"` to validate this field.
379
+
380
+ ```jsx
381
+ <Field
382
+ key="phoneNumber"
383
+ name="phoneNumber"
384
+ type="phone_number"
385
+ label={{
386
+ primary: "Phone number",
387
+ secondary: "You can enter any landline phone number."
388
+ }}
389
+ required
390
+ />
391
+ ```
392
+
393
+ ### Marital status as a radio group
394
+
395
+ Last but not least, we should create a single choice field, which will be
396
+ rendered as a radio group of answers.
397
+
398
+
399
+ ```jsx
400
+ <Field
401
+ key="maritalStatus"
402
+ name="maritalStatus"
403
+ type="choice:single"
404
+ label={{primary: "Marital status"}}
405
+ required
406
+ extra={{
407
+ options: [
408
+ {
409
+ label: {primary: "Married"},
410
+ value: 'married',
411
+ },
412
+ {
413
+ label: {primary: "Cohabitation agreement"},
414
+ value: 'cohabitation',
415
+ },
416
+ {
417
+ label: {primary: "Prefer not to answer"},
418
+ value: 'wontanswer',
419
+ }
420
+ ]
421
+ }}
422
+ />
423
+ ```
424
+
425
+ ## Final form
426
+
427
+ Finally, we have the code almost ready. Let's put it all together by adding the
428
+ few last fields right above the submit button.
429
+
430
+ Feel free to fill the form in the example and submit it.
431
+
432
+ ```jsx live
433
+ import React, { useState } from 'react';
434
+ import Form, { Field } from '@digigov/form';
435
+ import Button from '@digigov/ui/core/Button';
436
+ import Paragraph from '@digigov/ui/typography/Paragraph';
437
+
438
+ export default function SimpleForm() {
439
+ const [submittedData, setSubmittedData] = useState({})
440
+ const handleSubmit = (data) => {
441
+ setSubmittedData(data);
442
+ }
443
+ return <>
444
+ <Form onSubmit={handleSubmit}>
445
+ {/* this is where the fields are going to be placed */}
446
+ <Field
447
+ key="firstName"
448
+ name="firstName"
449
+ label={{ primary: "First name" }}
450
+ type="string"
451
+ required
452
+ />
453
+ <Field
454
+ key="lastName"
455
+ name="lastName"
456
+ label={{ primary: "Last name" }}
457
+ type="string"
458
+ required
459
+ />
460
+ <Field
461
+ key="taxNumber"
462
+ name="taxNumber"
463
+ type="afm"
464
+ label={{
465
+ primary: "Tax number",
466
+ secondary: "Tax number is your AFM number, given to you by AADE"
467
+ }}
468
+ required
469
+ />
470
+ <Field
471
+ key="phoneNumber"
472
+ name="phoneNumber"
473
+ type="phone_number"
474
+ label={{
475
+ primary: "Phone number",
476
+ secondary: "You can enter any landline phone number."
477
+ }}
478
+ required
479
+ />
480
+ <Field
481
+ key="maritalStatus"
482
+ name="maritalStatus"
483
+ type="choice:single"
484
+ label={{primary: "Marital status"}}
485
+ required
486
+ extra={{
487
+ options: [
488
+ {
489
+ label: {primary: "Married"},
490
+ value: 'married',
491
+ },
492
+ {
493
+ label: {primary: "Cohabitation agreement"},
494
+ value: 'cohabitation',
495
+ },
496
+ {
497
+ label: {primary: "Prefer not to answer"},
498
+ value: 'wontanswer',
499
+ }
500
+ ]
501
+ }}
502
+ />
503
+ <Button type="submit">Continue</Button>
504
+ </Form>
505
+ {<Paragraph>
506
+ You have submitted the following values
507
+ <pre><code>
508
+ {JSON.stringify(submittedData)}
509
+ </code></pre>
510
+ </Paragraph>}
511
+ </>
512
+ }
513
+ ```
514
+
515
+ Perfect! We now have a finished form, complete with field validation.