@digigov/form 0.6.9 → 0.7.1

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 (307) hide show
  1. package/CHANGELOG.md +24 -1
  2. package/Field/FieldBase.js +110 -0
  3. package/Field/{ConditionalField.js → FieldConditional.js} +9 -29
  4. package/Field/FieldContainer.js +62 -0
  5. package/Field/index.js +11 -251
  6. package/Field/types.js +5 -0
  7. package/Field/utils.js +146 -0
  8. package/Fieldset/FieldsetWithContext.js +63 -0
  9. package/Fieldset/index.js +4 -63
  10. package/Fieldset/types.js +5 -0
  11. package/FormBuilder.js +178 -0
  12. package/FormContext.js +14 -0
  13. package/Questions/Questions.js +105 -0
  14. package/Questions/QuestionsContext.js +20 -0
  15. package/Questions/Step/ReviewStep.js +11 -7
  16. package/Questions/Step/Step.js +93 -0
  17. package/Questions/Step/StepArrayReview.js +79 -0
  18. package/Questions/Step/StepContext.js +37 -0
  19. package/Questions/Step/StepDescription.js +2 -2
  20. package/Questions/Step/StepForm.js +10 -6
  21. package/Questions/Step/StepTitle.js +2 -2
  22. package/Questions/Step/getAddMoreFields.js +31 -0
  23. package/Questions/Step/index.js +81 -200
  24. package/Questions/Step/types.js +5 -0
  25. package/Questions/__snapshots__/index.spec.tsx.snap +461 -2499
  26. package/Questions/getNextStep.js +30 -0
  27. package/Questions/index.js +4 -150
  28. package/Questions/types.js +5 -0
  29. package/es/Field/FieldBase.js +93 -0
  30. package/es/Field/{ConditionalField.js → FieldConditional.js} +5 -28
  31. package/es/Field/FieldContainer.js +40 -0
  32. package/es/Field/index.js +8 -233
  33. package/es/Field/types.js +1 -0
  34. package/es/Field/utils.js +122 -0
  35. package/es/Fieldset/FieldsetWithContext.js +41 -0
  36. package/es/Fieldset/index.js +3 -51
  37. package/es/Fieldset/types.js +1 -0
  38. package/es/FormBuilder.js +148 -0
  39. package/es/FormContext.js +5 -0
  40. package/es/Questions/Questions.js +84 -0
  41. package/es/Questions/QuestionsContext.js +11 -0
  42. package/es/Questions/Step/ReviewStep.js +5 -3
  43. package/es/Questions/Step/Step.js +69 -0
  44. package/es/Questions/Step/StepArrayReview.js +50 -0
  45. package/es/Questions/Step/StepContext.js +27 -0
  46. package/es/Questions/Step/StepDescription.js +1 -1
  47. package/es/Questions/Step/StepForm.js +4 -2
  48. package/es/Questions/Step/StepTitle.js +1 -1
  49. package/es/Questions/Step/getAddMoreFields.js +22 -0
  50. package/es/Questions/Step/index.js +13 -165
  51. package/es/Questions/Step/types.js +1 -0
  52. package/es/Questions/__snapshots__/index.spec.tsx.snap +461 -2499
  53. package/es/Questions/getNextStep.js +23 -0
  54. package/es/Questions/index.js +2 -119
  55. package/es/Questions/index.spec.js +2 -1
  56. package/es/Questions/types.js +1 -0
  57. package/es/index.js +2 -153
  58. package/es/inputs/index.js +5 -4
  59. package/es/internal.js +31 -0
  60. package/es/types.js +1 -0
  61. package/es/utils.js +5 -3
  62. package/es/validators/index.js +155 -0
  63. package/es/validators/types.js +1 -0
  64. package/es/validators/utils/afm.js +35 -0
  65. package/es/validators/utils/file.js +52 -0
  66. package/es/validators/utils/iban.js +123 -0
  67. package/es/validators/utils/index.js +105 -0
  68. package/es/validators/utils/phone.js +122 -0
  69. package/es/validators/utils/postal_code.js +29 -0
  70. package/es/validators/utils/uuid4.js +20 -0
  71. package/{esm → es/validators}/validators.spec.js +1 -1
  72. package/esm/Field/FieldBase.js +93 -0
  73. package/esm/Field/{ConditionalField.js → FieldConditional.js} +5 -28
  74. package/esm/Field/FieldContainer.js +40 -0
  75. package/esm/Field/index.js +8 -233
  76. package/esm/Field/types.js +1 -0
  77. package/esm/Field/utils.js +122 -0
  78. package/esm/Fieldset/FieldsetWithContext.js +41 -0
  79. package/esm/Fieldset/index.js +3 -51
  80. package/esm/Fieldset/types.js +1 -0
  81. package/esm/FormBuilder.js +148 -0
  82. package/esm/FormContext.js +5 -0
  83. package/esm/Questions/Questions.js +84 -0
  84. package/esm/Questions/QuestionsContext.js +11 -0
  85. package/esm/Questions/Step/ReviewStep.js +5 -3
  86. package/esm/Questions/Step/Step.js +69 -0
  87. package/esm/Questions/Step/StepArrayReview.js +50 -0
  88. package/esm/Questions/Step/StepContext.js +27 -0
  89. package/esm/Questions/Step/StepDescription.js +1 -1
  90. package/esm/Questions/Step/StepForm.js +4 -2
  91. package/esm/Questions/Step/StepTitle.js +1 -1
  92. package/esm/Questions/Step/getAddMoreFields.js +22 -0
  93. package/esm/Questions/Step/index.js +13 -165
  94. package/esm/Questions/Step/types.js +1 -0
  95. package/esm/Questions/__snapshots__/index.spec.tsx.snap +461 -2499
  96. package/esm/Questions/getNextStep.js +23 -0
  97. package/esm/Questions/index.js +2 -119
  98. package/esm/Questions/index.spec.js +2 -1
  99. package/esm/Questions/types.js +1 -0
  100. package/esm/index.js +3 -154
  101. package/esm/inputs/index.js +5 -4
  102. package/esm/internal.js +31 -0
  103. package/esm/types.js +1 -0
  104. package/esm/utils.js +5 -3
  105. package/esm/validators/index.js +155 -0
  106. package/esm/validators/types.js +1 -0
  107. package/esm/validators/utils/afm.js +35 -0
  108. package/esm/validators/utils/file.js +52 -0
  109. package/esm/validators/utils/iban.js +123 -0
  110. package/esm/validators/utils/index.js +105 -0
  111. package/esm/validators/utils/phone.js +122 -0
  112. package/esm/validators/utils/postal_code.js +29 -0
  113. package/esm/validators/utils/uuid4.js +20 -0
  114. package/{es → esm/validators}/validators.spec.js +1 -1
  115. package/index.js +8 -191
  116. package/inputs/index.js +13 -5
  117. package/internal.js +356 -0
  118. package/libs/form/src/Field/FieldBase.d.ts +3 -0
  119. package/libs/form/src/Field/FieldConditional.d.ts +4 -0
  120. package/libs/form/src/Field/FieldContainer.d.ts +4 -0
  121. package/libs/form/src/Field/index.d.ts +1 -62
  122. package/libs/form/src/Field/types.d.ts +75 -0
  123. package/libs/form/src/Field/utils.d.ts +5 -0
  124. package/libs/form/src/Fieldset/FieldsetWithContext.d.ts +4 -0
  125. package/libs/form/src/Fieldset/index.d.ts +2 -12
  126. package/libs/form/src/Fieldset/types.d.ts +6 -0
  127. package/libs/form/src/FormBuilder.d.ts +5 -0
  128. package/libs/form/src/FormContext.d.ts +3 -0
  129. package/libs/form/src/Questions/Questions.d.ts +8 -0
  130. package/libs/form/src/Questions/QuestionsContext.d.ts +3 -0
  131. package/libs/form/src/Questions/Step/ReviewStep.d.ts +1 -0
  132. package/libs/form/src/Questions/Step/Step.d.ts +9 -0
  133. package/libs/form/src/Questions/Step/StepArrayReview.d.ts +4 -0
  134. package/libs/form/src/Questions/Step/StepContext.d.ts +4 -0
  135. package/libs/form/src/Questions/Step/StepForm.d.ts +2 -1
  136. package/libs/form/src/Questions/Step/getAddMoreFields.d.ts +3 -0
  137. package/libs/form/src/Questions/Step/index.d.ts +12 -47
  138. package/libs/form/src/Questions/Step/types.d.ts +31 -0
  139. package/libs/form/src/Questions/getNextStep.d.ts +2 -0
  140. package/libs/form/src/Questions/index.d.ts +1 -28
  141. package/libs/form/src/Questions/types.d.ts +19 -0
  142. package/libs/form/src/index.d.ts +2 -73
  143. package/libs/form/src/inputs/Checkboxes/index.d.ts +1 -1
  144. package/libs/form/src/inputs/DateInput/index.d.ts +1 -2
  145. package/libs/form/src/inputs/FileInput/index.d.ts +1 -1
  146. package/libs/form/src/inputs/Input/index.d.ts +1 -1
  147. package/libs/form/src/inputs/Label/index.d.ts +2 -1
  148. package/libs/form/src/inputs/Radio/index.d.ts +1 -1
  149. package/libs/form/src/inputs/Select/index.d.ts +1 -1
  150. package/libs/form/src/inputs/index.d.ts +4 -3
  151. package/libs/form/src/internal.d.ts +31 -0
  152. package/libs/form/src/types.d.ts +70 -0
  153. package/libs/form/src/validators/index.d.ts +8 -0
  154. package/libs/form/src/validators/types.d.ts +2 -0
  155. package/libs/form/src/validators/utils/afm.d.ts +6 -0
  156. package/libs/form/src/validators/utils/file.d.ts +1 -0
  157. package/libs/form/src/validators/utils/iban.d.ts +2 -0
  158. package/libs/form/src/validators/utils/index.d.ts +12 -0
  159. package/libs/form/src/validators/utils/phone.d.ts +9 -0
  160. package/libs/form/src/validators/utils/postal_code.d.ts +2 -0
  161. package/libs/form/src/validators/utils/uuid4.d.ts +6 -0
  162. package/libs/form/src/{validators.spec.d.ts → validators/validators.spec.d.ts} +0 -0
  163. package/libs/ui/src/core/Accordion/index.d.ts +3 -3
  164. package/libs/ui/src/core/Base/index.d.ts +3 -0
  165. package/libs/ui/src/core/Blockquote/index.d.ts +1 -1
  166. package/libs/ui/src/core/Button/BackButton.d.ts +1 -1
  167. package/libs/ui/src/core/Button/ButtonLink.d.ts +1 -1
  168. package/libs/ui/src/core/Button/index.d.ts +1 -1
  169. package/libs/ui/src/core/Divider/index.d.ts +1 -1
  170. package/libs/ui/src/core/Form/index.d.ts +3 -0
  171. package/libs/ui/src/core/Label/index.d.ts +4 -0
  172. package/libs/ui/src/core/Link/index.d.ts +1 -0
  173. package/libs/ui/src/core/NavList/NavHorizontal.d.ts +3 -0
  174. package/libs/ui/src/core/NavList/NavHorizontalList.d.ts +3 -0
  175. package/libs/ui/src/core/NavList/NavHorizontalListItem.d.ts +3 -0
  176. package/libs/ui/src/core/NavList/NavList.d.ts +1 -14
  177. package/libs/ui/src/core/NavList/NavListBase.d.ts +4 -0
  178. package/libs/ui/src/core/NavList/NavListItem.d.ts +1 -0
  179. package/libs/ui/src/core/NavList/NavListItemBase.d.ts +2 -1
  180. package/libs/ui/src/core/NavList/NavListSubMenu.d.ts +1 -1
  181. package/libs/ui/src/core/NavList/NavVertical.d.ts +3 -0
  182. package/libs/ui/src/core/NavList/NavVerticalItem.d.ts +3 -0
  183. package/libs/ui/src/core/NavList/index.d.ts +5 -0
  184. package/libs/ui/src/core/NavList/types.d.ts +14 -0
  185. package/libs/ui/src/core/SkipLink/index.d.ts +3 -0
  186. package/libs/ui/src/core/SvgIcon/index.d.ts +1 -0
  187. package/libs/ui/src/core/Table/TableFloatingScroll.d.ts +2 -0
  188. package/libs/ui/src/core/Table/index.d.ts +1 -0
  189. package/libs/ui/src/core/index.d.ts +4 -0
  190. package/libs/ui/src/layouts/Grid/index.d.ts +1 -0
  191. package/libs/ui/src/typography/Caption/index.d.ts +3 -2
  192. package/libs/ui/src/typography/Title/index.d.ts +2 -1
  193. package/libs-ui/react-core/src/Accordion/index.d.ts +3 -3
  194. package/libs-ui/react-core/src/AccordionControls/index.d.ts +3 -3
  195. package/libs-ui/react-core/src/AccordionSection/index.d.ts +3 -3
  196. package/libs-ui/react-core/src/AccordionSectionContent/index.d.ts +3 -3
  197. package/libs-ui/react-core/src/AccordionSectionHeader/index.d.ts +3 -3
  198. package/libs-ui/react-core/src/AccordionSectionSummary/index.d.ts +4 -3
  199. package/libs-ui/react-core/src/AccordionSectionSummaryHeading/index.d.ts +3 -3
  200. package/libs-ui/react-core/src/BackLink/index.d.ts +3 -3
  201. package/libs-ui/react-core/src/Base/index.d.ts +43 -0
  202. package/libs-ui/react-core/src/Blockquote/index.d.ts +3 -3
  203. package/libs-ui/react-core/src/Breadcrumbs/index.d.ts +3 -3
  204. package/libs-ui/react-core/src/BreadcrumbsList/index.d.ts +3 -3
  205. package/libs-ui/react-core/src/BreadcrumbsListItem/index.d.ts +3 -3
  206. package/libs-ui/react-core/src/Button/index.d.ts +3 -3
  207. package/libs-ui/react-core/src/ButtonGroup/index.d.ts +3 -3
  208. package/libs-ui/react-core/src/ButtonLink/index.d.ts +3 -3
  209. package/libs-ui/react-core/src/CallToAction/index.d.ts +1 -1
  210. package/libs-ui/react-core/src/Card/index.d.ts +3 -3
  211. package/libs-ui/react-core/src/CardAction/index.d.ts +3 -3
  212. package/libs-ui/react-core/src/CardHeading/index.d.ts +3 -3
  213. package/libs-ui/react-core/src/CardText/index.d.ts +3 -3
  214. package/libs-ui/react-core/src/CheckIcon/index.d.ts +15 -0
  215. package/libs-ui/react-core/src/Checkbox/index.d.ts +3 -3
  216. package/libs-ui/react-core/src/CheckboxItem/index.d.ts +3 -3
  217. package/libs-ui/react-core/src/Confirmation/index.d.ts +3 -3
  218. package/libs-ui/react-core/src/ConfirmationBody/index.d.ts +3 -3
  219. package/libs-ui/react-core/src/ConfirmationTitle/index.d.ts +3 -3
  220. package/libs-ui/react-core/src/DateInput/index.d.ts +3 -3
  221. package/libs-ui/react-core/src/DateInputItem/index.d.ts +3 -3
  222. package/libs-ui/react-core/src/Details/index.d.ts +3 -3
  223. package/libs-ui/react-core/src/DetailsContent/index.d.ts +3 -3
  224. package/libs-ui/react-core/src/DetailsSummary/index.d.ts +3 -3
  225. package/libs-ui/react-core/src/ErrorMessage/index.d.ts +3 -3
  226. package/libs-ui/react-core/src/ErrorSummary/index.d.ts +3 -3
  227. package/libs-ui/react-core/src/Field/index.d.ts +3 -3
  228. package/libs-ui/react-core/src/Fieldset/index.d.ts +3 -3
  229. package/libs-ui/react-core/src/FieldsetLegend/index.d.ts +3 -3
  230. package/libs-ui/react-core/src/FileUpload/index.d.ts +3 -3
  231. package/libs-ui/react-core/src/Form/index.d.ts +11 -0
  232. package/libs-ui/react-core/src/Grid/index.d.ts +3 -3
  233. package/libs-ui/react-core/src/Heading/index.d.ts +3 -3
  234. package/libs-ui/react-core/src/HeadingCaption/index.d.ts +3 -3
  235. package/libs-ui/react-core/src/Hidden/index.d.ts +3 -3
  236. package/libs-ui/react-core/src/Hint/index.d.ts +3 -3
  237. package/libs-ui/react-core/src/Label/index.d.ts +3 -3
  238. package/libs-ui/react-core/src/LabelTitle/index.d.ts +7 -7
  239. package/libs-ui/react-core/src/Link/index.d.ts +3 -3
  240. package/libs-ui/react-core/src/List/index.d.ts +3 -3
  241. package/libs-ui/react-core/src/ListItem/index.d.ts +3 -3
  242. package/libs-ui/react-core/src/NavHorizontal/index.d.ts +16 -0
  243. package/libs-ui/react-core/src/NavHorizontalList/index.d.ts +10 -0
  244. package/libs-ui/react-core/src/NavHorizontalListItem/index.d.ts +18 -0
  245. package/libs-ui/react-core/src/NavVertical/index.d.ts +11 -0
  246. package/libs-ui/react-core/src/NavVerticalItem/index.d.ts +14 -0
  247. package/libs-ui/react-core/src/NormalText/index.d.ts +3 -3
  248. package/libs-ui/react-core/src/NotificationBanner/index.d.ts +3 -3
  249. package/libs-ui/react-core/src/NotificationBannerContent/index.d.ts +3 -3
  250. package/libs-ui/react-core/src/NotificationBannerHeader/index.d.ts +3 -3
  251. package/libs-ui/react-core/src/NotificationBannerHeading/index.d.ts +3 -3
  252. package/libs-ui/react-core/src/NotificationBannerLink/index.d.ts +3 -3
  253. package/libs-ui/react-core/src/Paragraph/index.d.ts +3 -3
  254. package/libs-ui/react-core/src/PhaseBanner/index.d.ts +3 -3
  255. package/libs-ui/react-core/src/PhaseBannerHeaderContainer/index.d.ts +3 -3
  256. package/libs-ui/react-core/src/PhaseBannerTag/index.d.ts +3 -3
  257. package/libs-ui/react-core/src/PhaseBannerText/index.d.ts +3 -3
  258. package/libs-ui/react-core/src/Radio/index.d.ts +3 -3
  259. package/libs-ui/react-core/src/RadioItem/index.d.ts +3 -3
  260. package/libs-ui/react-core/src/SectionBreak/index.d.ts +3 -3
  261. package/libs-ui/react-core/src/Select/index.d.ts +3 -3
  262. package/libs-ui/react-core/src/SelectOption/index.d.ts +3 -3
  263. package/libs-ui/react-core/src/SkipLink/index.d.ts +10 -0
  264. package/libs-ui/react-core/src/SummaryList/index.d.ts +3 -3
  265. package/libs-ui/react-core/src/SummaryListItem/index.d.ts +3 -3
  266. package/libs-ui/react-core/src/SummaryListItemAction/index.d.ts +3 -3
  267. package/libs-ui/react-core/src/SummaryListItemKey/index.d.ts +3 -3
  268. package/libs-ui/react-core/src/SummaryListItemValue/index.d.ts +3 -3
  269. package/libs-ui/react-core/src/SvgIcon/index.d.ts +3 -3
  270. package/libs-ui/react-core/src/Table/index.d.ts +3 -3
  271. package/libs-ui/react-core/src/TableBody/index.d.ts +3 -3
  272. package/libs-ui/react-core/src/TableCaption/index.d.ts +3 -3
  273. package/libs-ui/react-core/src/TableContainer/index.d.ts +3 -3
  274. package/libs-ui/react-core/src/TableDataCell/index.d.ts +3 -3
  275. package/libs-ui/react-core/src/TableHead/index.d.ts +3 -3
  276. package/libs-ui/react-core/src/TableHeadCell/index.d.ts +3 -3
  277. package/libs-ui/react-core/src/TableNoDataRow/index.d.ts +3 -3
  278. package/libs-ui/react-core/src/TableRow/index.d.ts +3 -3
  279. package/libs-ui/react-core/src/Tabs/index.d.ts +3 -3
  280. package/libs-ui/react-core/src/TabsHeading/index.d.ts +3 -3
  281. package/libs-ui/react-core/src/TabsList/index.d.ts +3 -3
  282. package/libs-ui/react-core/src/TabsListItem/index.d.ts +3 -3
  283. package/libs-ui/react-core/src/TabsPanel/index.d.ts +3 -3
  284. package/libs-ui/react-core/src/TextArea/index.d.ts +3 -3
  285. package/libs-ui/react-core/src/TextInput/index.d.ts +3 -3
  286. package/libs-ui/react-core/src/UncheckIcon/index.d.ts +4 -4
  287. package/libs-ui/react-core/src/VisuallyHidden/index.d.ts +3 -3
  288. package/libs-ui/react-core/src/WarningText/index.d.ts +3 -3
  289. package/package.json +3 -2
  290. package/types.js +5 -0
  291. package/utils.js +6 -4
  292. package/validators/index.js +181 -0
  293. package/validators/types.js +5 -0
  294. package/validators/utils/afm.js +45 -0
  295. package/validators/utils/file.js +62 -0
  296. package/validators/utils/iban.js +134 -0
  297. package/validators/utils/index.js +210 -0
  298. package/validators/utils/phone.js +144 -0
  299. package/validators/utils/postal_code.js +40 -0
  300. package/validators/utils/uuid4.js +30 -0
  301. package/validators/validators.spec.js +88 -0
  302. package/es/validators.js +0 -626
  303. package/esm/validators.js +0 -626
  304. package/libs/form/src/Field/ConditionalField.d.ts +0 -17
  305. package/libs/form/src/validators.d.ts +0 -14
  306. package/validators.js +0 -662
  307. package/validators.spec.js +0 -88
@@ -0,0 +1,84 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import React, { useState, useEffect } from 'react';
3
+ import { QuestionsContext } from '@digigov/form/Questions/QuestionsContext';
4
+ import { getNextStep } from '@digigov/form/Questions/getNextStep';
5
+ var isBrowser = typeof window !== 'undefined';
6
+ /**
7
+ * The Question component accepts question data as props
8
+ * uses composable components to provide a wholesome UX
9
+ *
10
+ */
11
+
12
+ export var Questions = function Questions(_ref) {
13
+ var name = _ref.name,
14
+ steps = _ref.steps,
15
+ _ref$initialData = _ref.initialData,
16
+ initialData = _ref$initialData === void 0 ? {} : _ref$initialData,
17
+ onChange = _ref.onChange,
18
+ onSubmit = _ref.onSubmit,
19
+ onActiveStep = _ref.onActiveStep,
20
+ forceStepName = _ref.forceStepName,
21
+ _ref$localDraft = _ref.localDraft,
22
+ localDraft = _ref$localDraft === void 0 ? false : _ref$localDraft,
23
+ children = _ref.children;
24
+
25
+ var _useState = useState({
26
+ name: ''
27
+ }),
28
+ _useState2 = _slicedToArray(_useState, 2),
29
+ currentStep = _useState2[0],
30
+ setCurrentStep = _useState2[1];
31
+
32
+ useEffect(function () {
33
+ if (!forceStepName) {
34
+ setCurrentStep(steps[0]);
35
+ }
36
+ }, [forceStepName, steps]);
37
+ useEffect(function () {
38
+ if (forceStepName !== currentStep.name) {
39
+ var forceStep = steps.find(function (_ref2) {
40
+ var name = _ref2.name;
41
+ return name === forceStepName;
42
+ });
43
+ forceStep && setCurrentStep(forceStep);
44
+ }
45
+ }, [forceStepName]);
46
+ var localData = isBrowser && localDraft && window.localStorage.getItem("questions-".concat(name));
47
+
48
+ var _useState3 = useState(localData && JSON.parse(localData) || initialData),
49
+ _useState4 = _slicedToArray(_useState3, 2),
50
+ data = _useState4[0],
51
+ setData = _useState4[1];
52
+
53
+ var submitStep = function submitStep(stepName, stepData) {
54
+ data[stepName] = stepData;
55
+
56
+ if (localDraft) {
57
+ isBrowser && window.localStorage.setItem("questions-".concat(name), JSON.stringify(data));
58
+ }
59
+
60
+ if (onChange) {
61
+ onChange && onChange(data);
62
+ }
63
+
64
+ setData(data);
65
+ var nextStep = getNextStep(currentStep, steps, data);
66
+
67
+ if (nextStep) {
68
+ onActiveStep && onActiveStep(nextStep);
69
+ setCurrentStep(nextStep);
70
+ } else {
71
+ onSubmit(data);
72
+ }
73
+ };
74
+
75
+ return /*#__PURE__*/React.createElement(QuestionsContext.Provider, {
76
+ value: {
77
+ steps: steps,
78
+ currentStep: currentStep,
79
+ submitStep: submitStep,
80
+ data: data,
81
+ onActiveStep: onActiveStep
82
+ }
83
+ }, children);
84
+ };
@@ -0,0 +1,11 @@
1
+ import { createContext } from 'react';
2
+ var defaultStep = {
3
+ name: ''
4
+ };
5
+ export var QuestionsContext = /*#__PURE__*/createContext({
6
+ currentStep: defaultStep,
7
+ steps: [],
8
+ submitStep: function submitStep() {
9
+ return null;
10
+ }
11
+ });
@@ -2,8 +2,9 @@ import React, { useContext } from 'react';
2
2
  import { SummaryList, SummaryListItem, SummaryListItemKey, SummaryListItemValue, SummaryListItemAction } from '@digigov/ui/core/SummaryList';
3
3
  import Title from '@digigov/ui/typography/Title';
4
4
  import { Button } from '@digigov/ui/core';
5
- import { QuestionsContext } from '@digigov/form/Questions/';
6
- import { StepTitleBase, StepContext } from '@digigov/form/Questions/Step';
5
+ import { QuestionsContext } from '@digigov/form/Questions/QuestionsContext';
6
+ import { StepTitleBase } from '@digigov/form/Questions/Step/StepTitle';
7
+ import { StepContext } from '@digigov/form/Questions/Step/StepContext';
7
8
  import { useTranslation } from '@digigov/ui/app/i18n';
8
9
  export var ReviewStep = function ReviewStep() {
9
10
  var _useTranslation = useTranslation(),
@@ -48,4 +49,5 @@ export var ReviewStep = function ReviewStep() {
48
49
  return submitStep && submitStep();
49
50
  }
50
51
  }, t('button.submit')));
51
- };
52
+ };
53
+ export default ReviewStep;
@@ -0,0 +1,69 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
+ import React, { useContext, useState } from 'react';
5
+ import { QuestionsContext } from '@digigov/form/Questions/QuestionsContext';
6
+ import { StepContext } from '@digigov/form/Questions/Step/StepContext';
7
+ import { StepArrayReview } from '@digigov/form/Questions/Step/StepArrayReview';
8
+
9
+ /**
10
+ * The Step component accepts Step data as props
11
+ * uses composable components to provide a wholesome UX
12
+ *
13
+ */
14
+ export var Step = function Step(props) {
15
+ // or return all Questions and currentStepName
16
+ // or return a specific Step object
17
+ var _useContext = useContext(QuestionsContext),
18
+ currentStep = _useContext.currentStep,
19
+ submitStep = _useContext.submitStep,
20
+ data = _useContext.data;
21
+
22
+ var _useState = useState([]),
23
+ _useState2 = _slicedToArray(_useState, 2),
24
+ stepData = _useState2[0],
25
+ setStepData = _useState2[1];
26
+
27
+ var _useState3 = useState(false),
28
+ _useState4 = _slicedToArray(_useState3, 2),
29
+ reviewActive = _useState4[0],
30
+ setReviewActive = _useState4[1];
31
+
32
+ var handleArraySubmit = function handleArraySubmit(_name, data) {
33
+ setStepData([].concat(_toConsumableArray(stepData), [data]));
34
+ setReviewActive(true);
35
+ };
36
+
37
+ var handleArrayDeleteItem = function handleArrayDeleteItem(deleteIndex) {
38
+ var nextStepData = stepData.filter(function (_item, stepIndex) {
39
+ return stepIndex !== deleteIndex;
40
+ });
41
+ setStepData(nextStepData);
42
+
43
+ if (nextStepData.length === 0) {
44
+ setReviewActive(false);
45
+ }
46
+ };
47
+
48
+ var handleArrayReviewStep = function handleArrayReviewStep(data) {
49
+ if (data.addMore === 'yes') {
50
+ setReviewActive(false);
51
+ } else if (data.addMore === 'no') {
52
+ submitStep(currentStep.name, stepData);
53
+ }
54
+ };
55
+
56
+ if (!currentStep || props.name !== currentStep.name) return null; // then provide the currentStep object
57
+
58
+ return /*#__PURE__*/React.createElement(StepContext.Provider, {
59
+ value: _extends({}, currentStep, {
60
+ submitStep: currentStep.type === 'array' ? handleArraySubmit : submitStep,
61
+ initial: data[props.name]
62
+ })
63
+ }, reviewActive ? /*#__PURE__*/React.createElement(StepArrayReview, {
64
+ array: stepData,
65
+ handleSubmit: handleArrayReviewStep,
66
+ handleDelete: handleArrayDeleteItem
67
+ }) : props.children);
68
+ };
69
+ export default Step;
@@ -0,0 +1,50 @@
1
+ import React, { useContext } from 'react';
2
+ import { QuestionsContext } from '@digigov/form/Questions/QuestionsContext';
3
+ import PageTitle, { PageTitleHeading } from '@digigov/ui/app/PageTitle';
4
+ import Button from '@digigov/ui/core/Button';
5
+ import { FormBuilder } from '@digigov/form/FormBuilder';
6
+ import { Field } from '@digigov/form/Field';
7
+ import { Fieldset } from '@digigov/form/Fieldset';
8
+ import Label from '@digigov/form/inputs/Label';
9
+ import { SummaryList, SummaryListItem, SummaryListItemKey, SummaryListItemValue, SummaryListItemAction } from '@digigov/ui/core/SummaryList';
10
+ import { useTranslation } from '@digigov/ui/app/i18n';
11
+ import { getAddMoreFields } from '@digigov/form/Questions/Step/getAddMoreFields';
12
+ export var StepArrayReview = function StepArrayReview(props) {
13
+ var _currentStep$review2, _currentStep$review3, _currentStep$review4;
14
+
15
+ var _useTranslation = useTranslation(),
16
+ t = _useTranslation.t;
17
+
18
+ var _useContext = useContext(QuestionsContext),
19
+ currentStep = _useContext.currentStep;
20
+
21
+ var fields = getAddMoreFields(currentStep);
22
+ var primaryField = currentStep.fields.find(function (field) {
23
+ var _currentStep$review;
24
+
25
+ return field.key === ((_currentStep$review = currentStep.review) === null || _currentStep$review === void 0 ? void 0 : _currentStep$review.primaryFieldKey);
26
+ }) || {};
27
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(PageTitle, null, /*#__PURE__*/React.createElement(PageTitleHeading, null, ((_currentStep$review2 = currentStep.review) === null || _currentStep$review2 === void 0 ? void 0 : _currentStep$review2.title) && t((_currentStep$review3 = currentStep.review) === null || _currentStep$review3 === void 0 ? void 0 : _currentStep$review3.title))), /*#__PURE__*/React.createElement(SummaryList, null, props.array.map(function (item, idx) {
28
+ return /*#__PURE__*/React.createElement(SummaryListItem, {
29
+ key: idx
30
+ }, /*#__PURE__*/React.createElement(SummaryListItemKey, null, t(primaryField.label.primary)), /*#__PURE__*/React.createElement(SummaryListItemValue, null, item[primaryField.key]), /*#__PURE__*/React.createElement(SummaryListItemAction, {
31
+ onClick: function onClick() {
32
+ return props.handleDelete(idx);
33
+ }
34
+ }, t('button.delete')));
35
+ })), /*#__PURE__*/React.createElement(FormBuilder, {
36
+ key: "addmore",
37
+ fields: fields,
38
+ onSubmit: props.handleSubmit
39
+ }, /*#__PURE__*/React.createElement(Fieldset, null, /*#__PURE__*/React.createElement(Label, {
40
+ label: (_currentStep$review4 = currentStep.review) === null || _currentStep$review4 === void 0 ? void 0 : _currentStep$review4.addMore.title
41
+ }), fields.map(function (field) {
42
+ return /*#__PURE__*/React.createElement(Field, {
43
+ key: field.key,
44
+ name: field.key
45
+ });
46
+ })), /*#__PURE__*/React.createElement(Button, {
47
+ type: "submit"
48
+ }, t('button.submit'))));
49
+ };
50
+ export default StepArrayReview;
@@ -0,0 +1,27 @@
1
+ import { createContext } from 'react';
2
+ export var StepContext = /*#__PURE__*/createContext({
3
+ name: '',
4
+ fields: [],
5
+ initial: [],
6
+ errorLabels: [],
7
+ submitStep: '',
8
+ review: {
9
+ title: '',
10
+ primaryFieldKey: '',
11
+ addMore: {
12
+ title: {
13
+ primary: ''
14
+ },
15
+ answers: {
16
+ positive: {
17
+ primary: 'Yes'
18
+ },
19
+ negative: {
20
+ primary: 'No'
21
+ }
22
+ }
23
+ }
24
+ },
25
+ type: 'object'
26
+ });
27
+ export default StepContext;
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  var _excluded = ["children", "description"];
4
4
  import React, { useContext } from 'react';
5
- import { StepContext } from '@digigov/form/Questions/Step';
5
+ import { StepContext } from '@digigov/form/Questions/Step/StepContext';
6
6
  import Paragraph from '@digigov/ui/typography/Paragraph';
7
7
  import { useTranslation } from '@digigov/ui/app/i18n';
8
8
  export var StepDescriptionBase = function StepDescriptionBase(_ref) {
@@ -2,8 +2,10 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
2
2
  var _excluded = ["children", "submitButton"],
3
3
  _excluded2 = ["name", "submitStep"];
4
4
  import React, { useContext } from 'react';
5
- import { StepContext } from '@digigov/form/Questions/Step';
6
- import FormBuilder, { Fieldset, Field } from '@digigov/form';
5
+ import { StepContext } from '@digigov/form/Questions/Step/StepContext';
6
+ import FormBuilder from '@digigov/form/FormBuilder';
7
+ import Fieldset from '@digigov/form/Fieldset';
8
+ import Field from '@digigov/form/Field';
7
9
  import Button from '@digigov/ui/core/Button';
8
10
  import { useTranslation } from '@digigov/ui/app/i18n';
9
11
 
@@ -1,5 +1,5 @@
1
1
  import React, { useContext } from 'react';
2
- import { StepContext } from '@digigov/form/Questions/Step';
2
+ import { StepContext } from '@digigov/form/Questions/Step/StepContext';
3
3
  import PageTitle, { PageTitleHeading, PageTitleSection, PageTitleCaption } from '@digigov/ui/app/PageTitle';
4
4
  import BackButton from '@digigov/ui/core/Button/BackButton';
5
5
  import { useTranslation } from '@digigov/ui/app/i18n';
@@ -0,0 +1,22 @@
1
+ export var getAddMoreFields = function getAddMoreFields(currentStep) {
2
+ var _currentStep$review, _currentStep$review2;
3
+
4
+ return [{
5
+ key: 'addMore',
6
+ type: 'choice:single',
7
+ required: true,
8
+ extra: {
9
+ options: [{
10
+ label: ((_currentStep$review = currentStep.review) === null || _currentStep$review === void 0 ? void 0 : _currentStep$review.addMore.answers.positive) || {
11
+ primary: 'Yes'
12
+ },
13
+ value: 'yes'
14
+ }, {
15
+ label: ((_currentStep$review2 = currentStep.review) === null || _currentStep$review2 === void 0 ? void 0 : _currentStep$review2.addMore.answers.negative) || {
16
+ primary: 'No'
17
+ },
18
+ value: 'no'
19
+ }]
20
+ }
21
+ }];
22
+ };
@@ -1,165 +1,13 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
-
5
- /* eslint-disable @typescript-eslint/no-explicit-any */
6
- import React, { createContext, useContext, useState } from 'react';
7
- import { QuestionsContext } from '@digigov/form/Questions/';
8
- import PageTitle, { PageTitleHeading } from '@digigov/ui/app/PageTitle';
9
- import Button from '@digigov/ui/core/Button';
10
- import FormBuilder, { Fieldset, Field } from '@digigov/form';
11
- import Label from '@digigov/form/inputs/Label';
12
- import { SummaryList, SummaryListItem, SummaryListItemKey, SummaryListItemValue, SummaryListItemAction } from '@digigov/ui/core/SummaryList';
13
- import { useTranslation } from '@digigov/ui/app/i18n';
14
- export var StepContext = /*#__PURE__*/createContext({
15
- name: '',
16
- fields: [],
17
- initial: [],
18
- errorLabels: [],
19
- submitStep: '',
20
- review: {
21
- title: '',
22
- primaryFieldKey: '',
23
- addMore: {
24
- title: {
25
- primary: ''
26
- },
27
- answers: {
28
- positive: {
29
- primary: 'Yes'
30
- },
31
- negative: {
32
- primary: 'No'
33
- }
34
- }
35
- }
36
- },
37
- type: 'object'
38
- });
39
- /**
40
- * The Step component accepts Step data as props
41
- * uses composable components to provide a wholesome UX
42
- *
43
- */
44
-
45
- export var Step = function Step(props) {
46
- // or return all Questions and currentStepName
47
- // or return a specific Step object
48
- var _useContext = useContext(QuestionsContext),
49
- currentStep = _useContext.currentStep,
50
- submitStep = _useContext.submitStep,
51
- data = _useContext.data;
52
-
53
- var _useState = useState([]),
54
- _useState2 = _slicedToArray(_useState, 2),
55
- stepData = _useState2[0],
56
- setStepData = _useState2[1];
57
-
58
- var _useState3 = useState(false),
59
- _useState4 = _slicedToArray(_useState3, 2),
60
- reviewActive = _useState4[0],
61
- setReviewActive = _useState4[1];
62
-
63
- var handleArraySubmit = function handleArraySubmit(_name, data) {
64
- setStepData([].concat(_toConsumableArray(stepData), [data]));
65
- setReviewActive(true);
66
- };
67
-
68
- var handleArrayDeleteItem = function handleArrayDeleteItem(deleteIndex) {
69
- var nextStepData = stepData.filter(function (_item, stepIndex) {
70
- return stepIndex !== deleteIndex;
71
- });
72
- setStepData(nextStepData);
73
-
74
- if (nextStepData.length === 0) {
75
- setReviewActive(false);
76
- }
77
- };
78
-
79
- var handleArrayReviewStep = function handleArrayReviewStep(data) {
80
- if (data.addMore === 'yes') {
81
- setReviewActive(false);
82
- } else if (data.addMore === 'no') {
83
- submitStep(currentStep.name, stepData);
84
- }
85
- };
86
-
87
- if (!currentStep || props.name !== currentStep.name) return null; // then provide the currentStep object
88
-
89
- return /*#__PURE__*/React.createElement(StepContext.Provider, {
90
- value: _extends({}, currentStep, {
91
- submitStep: currentStep.type === 'array' ? handleArraySubmit : submitStep,
92
- initial: data[props.name]
93
- })
94
- }, reviewActive ? /*#__PURE__*/React.createElement(StepArrayReview, {
95
- array: stepData,
96
- handleSubmit: handleArrayReviewStep,
97
- handleDelete: handleArrayDeleteItem
98
- }) : props.children);
99
- };
100
- export var getAddMoreFields = function getAddMoreFields(currentStep) {
101
- var _currentStep$review, _currentStep$review2;
102
-
103
- return [{
104
- key: 'addMore',
105
- type: 'choice:single',
106
- required: true,
107
- extra: {
108
- options: [{
109
- label: ((_currentStep$review = currentStep.review) === null || _currentStep$review === void 0 ? void 0 : _currentStep$review.addMore.answers.positive) || {
110
- primary: 'Yes'
111
- },
112
- value: 'yes'
113
- }, {
114
- label: ((_currentStep$review2 = currentStep.review) === null || _currentStep$review2 === void 0 ? void 0 : _currentStep$review2.addMore.answers.negative) || {
115
- primary: 'No'
116
- },
117
- value: 'no'
118
- }]
119
- }
120
- }];
121
- };
122
- export var StepArrayReview = function StepArrayReview(props) {
123
- var _currentStep$review4, _currentStep$review5, _currentStep$review6;
124
-
125
- var _useTranslation = useTranslation(),
126
- t = _useTranslation.t;
127
-
128
- var _useContext2 = useContext(QuestionsContext),
129
- currentStep = _useContext2.currentStep;
130
-
131
- var fields = getAddMoreFields(currentStep);
132
- var primaryField = currentStep.fields.find(function (field) {
133
- var _currentStep$review3;
134
-
135
- return field.key === ((_currentStep$review3 = currentStep.review) === null || _currentStep$review3 === void 0 ? void 0 : _currentStep$review3.primaryFieldKey);
136
- }) || {};
137
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(PageTitle, null, /*#__PURE__*/React.createElement(PageTitleHeading, null, ((_currentStep$review4 = currentStep.review) === null || _currentStep$review4 === void 0 ? void 0 : _currentStep$review4.title) && t((_currentStep$review5 = currentStep.review) === null || _currentStep$review5 === void 0 ? void 0 : _currentStep$review5.title))), /*#__PURE__*/React.createElement(SummaryList, null, props.array.map(function (item, idx) {
138
- return /*#__PURE__*/React.createElement(SummaryListItem, {
139
- key: idx
140
- }, /*#__PURE__*/React.createElement(SummaryListItemKey, null, t(primaryField.label.primary)), /*#__PURE__*/React.createElement(SummaryListItemValue, null, item[primaryField.key]), /*#__PURE__*/React.createElement(SummaryListItemAction, {
141
- onClick: function onClick() {
142
- return props.handleDelete(idx);
143
- }
144
- }, t('button.delete')));
145
- })), /*#__PURE__*/React.createElement(FormBuilder, {
146
- key: "addmore",
147
- fields: fields,
148
- onSubmit: props.handleSubmit
149
- }, /*#__PURE__*/React.createElement(Fieldset, null, /*#__PURE__*/React.createElement(Label, {
150
- label: (_currentStep$review6 = currentStep.review) === null || _currentStep$review6 === void 0 ? void 0 : _currentStep$review6.addMore.title
151
- }), fields.map(function (field) {
152
- return /*#__PURE__*/React.createElement(Field, {
153
- key: field.key,
154
- name: field.key
155
- });
156
- })), /*#__PURE__*/React.createElement(Button, {
157
- type: "submit"
158
- }, t('button.submit'))));
159
- };
160
- export default Step;
161
- export * from '@digigov/form/Questions/Step/StepDescription';
162
- export * from '@digigov/form/Questions/Step/StepForm';
163
- export * from '@digigov/form/Questions/Step/StepQuote';
164
- export * from '@digigov/form/Questions/Step/StepTitle';
165
- export * from '@digigov/form/Questions/Step/ReviewStep';
1
+ export * from '@digigov/form/Questions/Step/ReviewStep';
2
+ export * from '@digigov/form/Questions/Step/Step';
3
+ export * from '@digigov/form/Questions/Step/StepArrayReview';
4
+ export * from '@digigov/form/Questions/Step/StepContext';
5
+ export { default as StepDescription } from '@digigov/form/Questions/Step/StepDescription';
6
+ export { default as StepForm } from '@digigov/form/Questions/Step/StepForm';
7
+ export { default as StepQuote } from '@digigov/form/Questions/Step/StepQuote';
8
+ export { default as StepTitle } from '@digigov/form/Questions/Step/StepTitle';
9
+ export * from '@digigov/form/Questions/Step/getAddMoreFields';
10
+ export * from '@digigov/form/Questions/Step/';
11
+ export * from '@digigov/form/Questions/Step/types';
12
+ import Step from '@digigov/form/Questions/Step/Step';
13
+ export default Step;
@@ -0,0 +1 @@
1
+ export {};