@digigov/form 0.6.8 → 0.7.0

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 (298) hide show
  1. package/CHANGELOG.md +26 -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 +5 -64
  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 +4 -52
  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 +4 -52
  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 -1
  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/BackLink/index.d.ts +3 -0
  165. package/libs/ui/src/core/Blockquote/index.d.ts +1 -1
  166. package/libs/ui/src/core/Breadcrumbs/index.d.ts +2 -0
  167. package/libs/ui/src/core/Button/BackButton.d.ts +1 -1
  168. package/libs/ui/src/core/Button/ButtonLink.d.ts +1 -1
  169. package/libs/ui/src/core/Button/index.d.ts +1 -1
  170. package/libs/ui/src/core/Confirmation/index.d.ts +5 -0
  171. package/libs/ui/src/core/Divider/index.d.ts +1 -1
  172. package/libs/ui/src/core/NavList/NavList.d.ts +1 -14
  173. package/libs/ui/src/core/NavList/NavListBase.d.ts +4 -0
  174. package/libs/ui/src/core/NavList/NavListItem.d.ts +2 -1
  175. package/libs/ui/src/core/NavList/NavListItemBase.d.ts +2 -1
  176. package/libs/ui/src/core/NavList/NavListSubMenu.d.ts +1 -1
  177. package/libs/ui/src/core/NavList/types.d.ts +14 -0
  178. package/libs/ui/src/core/NotificationBanner/index.d.ts +1 -1
  179. package/libs/ui/src/core/PhaseBanner/index.d.ts +6 -0
  180. package/libs/ui/src/core/Table/TableFloatingScroll.d.ts +3 -0
  181. package/libs/ui/src/core/Table/index.d.ts +1 -0
  182. package/libs/ui/src/core/TextArea/index.d.ts +3 -0
  183. package/libs/ui/src/core/TextInput/index.d.ts +3 -0
  184. package/libs/ui/src/core/VisuallyHidden/index.d.ts +2 -0
  185. package/libs/ui/src/core/index.d.ts +8 -2
  186. package/libs/ui/src/hooks/useTogglableSections.d.ts +3 -2
  187. package/libs/ui/src/layouts/Grid/index.d.ts +4 -0
  188. package/libs/ui/src/locales/el.d.ts +1 -0
  189. package/libs/ui/src/typography/{Caption.d.ts → Caption/index.d.ts} +1 -1
  190. package/libs/ui/src/typography/{NormalText.d.ts → NormalText/index.d.ts} +0 -0
  191. package/libs/ui/src/typography/{Paragraph.d.ts → Paragraph/index.d.ts} +0 -0
  192. package/libs/ui/src/typography/{Title.d.ts → Title/index.d.ts} +0 -0
  193. package/libs-ui/react-core/src/Accordion/index.d.ts +1 -1
  194. package/libs-ui/react-core/src/AccordionControls/index.d.ts +1 -1
  195. package/libs-ui/react-core/src/AccordionSection/index.d.ts +1 -1
  196. package/libs-ui/react-core/src/AccordionSectionContent/index.d.ts +1 -1
  197. package/libs-ui/react-core/src/AccordionSectionHeader/index.d.ts +1 -1
  198. package/libs-ui/react-core/src/AccordionSectionSummary/index.d.ts +2 -1
  199. package/libs-ui/react-core/src/AccordionSectionSummaryHeading/index.d.ts +1 -1
  200. package/libs-ui/react-core/src/BackLink/index.d.ts +1 -1
  201. package/libs-ui/react-core/src/Blockquote/index.d.ts +1 -1
  202. package/libs-ui/react-core/src/Breadcrumbs/index.d.ts +1 -1
  203. package/libs-ui/react-core/src/BreadcrumbsList/index.d.ts +1 -1
  204. package/libs-ui/react-core/src/BreadcrumbsListItem/index.d.ts +1 -1
  205. package/libs-ui/react-core/src/Button/index.d.ts +1 -1
  206. package/libs-ui/react-core/src/ButtonGroup/index.d.ts +1 -1
  207. package/libs-ui/react-core/src/ButtonLink/index.d.ts +1 -1
  208. package/libs-ui/react-core/src/CallToAction/index.d.ts +1 -1
  209. package/libs-ui/react-core/src/Card/index.d.ts +1 -1
  210. package/libs-ui/react-core/src/CardAction/index.d.ts +1 -1
  211. package/libs-ui/react-core/src/CardHeading/index.d.ts +1 -1
  212. package/libs-ui/react-core/src/CardText/index.d.ts +1 -1
  213. package/libs-ui/react-core/src/Checkbox/index.d.ts +1 -1
  214. package/libs-ui/react-core/src/CheckboxItem/index.d.ts +1 -1
  215. package/libs-ui/react-core/src/Confirmation/index.d.ts +9 -0
  216. package/libs-ui/react-core/src/ConfirmationBody/index.d.ts +9 -0
  217. package/libs-ui/react-core/src/ConfirmationTitle/index.d.ts +9 -0
  218. package/libs-ui/react-core/src/DateInput/index.d.ts +1 -1
  219. package/libs-ui/react-core/src/DateInputItem/index.d.ts +1 -1
  220. package/libs-ui/react-core/src/Details/index.d.ts +1 -1
  221. package/libs-ui/react-core/src/DetailsContent/index.d.ts +1 -1
  222. package/libs-ui/react-core/src/DetailsSummary/index.d.ts +1 -1
  223. package/libs-ui/react-core/src/ErrorMessage/index.d.ts +1 -1
  224. package/libs-ui/react-core/src/ErrorSummary/index.d.ts +1 -1
  225. package/libs-ui/react-core/src/Field/index.d.ts +3 -3
  226. package/libs-ui/react-core/src/Fieldset/index.d.ts +1 -1
  227. package/libs-ui/react-core/src/FieldsetLegend/index.d.ts +1 -1
  228. package/libs-ui/react-core/src/FileUpload/index.d.ts +1 -1
  229. package/libs-ui/react-core/src/Form/index.d.ts +11 -0
  230. package/libs-ui/react-core/src/Grid/index.d.ts +20 -0
  231. package/libs-ui/react-core/src/Heading/index.d.ts +1 -1
  232. package/libs-ui/react-core/src/HeadingCaption/index.d.ts +1 -1
  233. package/libs-ui/react-core/src/Hidden/index.d.ts +1 -1
  234. package/libs-ui/react-core/src/Hint/index.d.ts +1 -1
  235. package/libs-ui/react-core/src/Label/index.d.ts +1 -1
  236. package/libs-ui/react-core/src/LabelTitle/index.d.ts +1 -1
  237. package/libs-ui/react-core/src/Link/index.d.ts +1 -1
  238. package/libs-ui/react-core/src/List/index.d.ts +1 -1
  239. package/libs-ui/react-core/src/ListItem/index.d.ts +1 -1
  240. package/libs-ui/react-core/src/NormalText/index.d.ts +1 -1
  241. package/libs-ui/react-core/src/NotificationBanner/index.d.ts +1 -1
  242. package/libs-ui/react-core/src/NotificationBannerContent/index.d.ts +1 -1
  243. package/libs-ui/react-core/src/NotificationBannerHeader/index.d.ts +1 -1
  244. package/libs-ui/react-core/src/NotificationBannerHeading/index.d.ts +1 -1
  245. package/libs-ui/react-core/src/NotificationBannerLink/index.d.ts +1 -1
  246. package/libs-ui/react-core/src/Paragraph/index.d.ts +1 -1
  247. package/libs-ui/react-core/src/PhaseBanner/index.d.ts +1 -1
  248. package/libs-ui/react-core/src/PhaseBannerHeaderContainer/index.d.ts +8 -0
  249. package/libs-ui/react-core/src/PhaseBannerTag/index.d.ts +1 -1
  250. package/libs-ui/react-core/src/PhaseBannerText/index.d.ts +1 -1
  251. package/libs-ui/react-core/src/Radio/index.d.ts +5 -1
  252. package/libs-ui/react-core/src/RadioItem/index.d.ts +1 -1
  253. package/libs-ui/react-core/src/SectionBreak/index.d.ts +1 -1
  254. package/libs-ui/react-core/src/Select/index.d.ts +1 -1
  255. package/libs-ui/react-core/src/SelectOption/index.d.ts +1 -1
  256. package/libs-ui/react-core/src/SummaryList/index.d.ts +7 -1
  257. package/libs-ui/react-core/src/SummaryListItem/index.d.ts +1 -1
  258. package/libs-ui/react-core/src/SummaryListItemAction/index.d.ts +1 -1
  259. package/libs-ui/react-core/src/SummaryListItemKey/index.d.ts +1 -1
  260. package/libs-ui/react-core/src/SummaryListItemValue/index.d.ts +1 -1
  261. package/libs-ui/react-core/src/SvgIcon/index.d.ts +1 -1
  262. package/libs-ui/react-core/src/Table/index.d.ts +1 -1
  263. package/libs-ui/react-core/src/TableBody/index.d.ts +1 -1
  264. package/libs-ui/react-core/src/TableCaption/index.d.ts +1 -1
  265. package/libs-ui/react-core/src/TableContainer/index.d.ts +1 -1
  266. package/libs-ui/react-core/src/TableDataCell/index.d.ts +1 -1
  267. package/libs-ui/react-core/src/TableHead/index.d.ts +1 -1
  268. package/libs-ui/react-core/src/TableHeadCell/index.d.ts +1 -1
  269. package/libs-ui/react-core/src/TableNoDataRow/index.d.ts +1 -1
  270. package/libs-ui/react-core/src/TableRow/index.d.ts +1 -1
  271. package/libs-ui/react-core/src/Tabs/index.d.ts +1 -1
  272. package/libs-ui/react-core/src/TabsHeading/index.d.ts +1 -1
  273. package/libs-ui/react-core/src/TabsList/index.d.ts +1 -1
  274. package/libs-ui/react-core/src/TabsListItem/index.d.ts +1 -1
  275. package/libs-ui/react-core/src/TabsPanel/index.d.ts +1 -1
  276. package/libs-ui/react-core/src/TextArea/index.d.ts +1 -1
  277. package/libs-ui/react-core/src/TextInput/index.d.ts +1 -1
  278. package/libs-ui/react-core/src/VisuallyHidden/index.d.ts +1 -1
  279. package/libs-ui/react-core/src/WarningText/index.d.ts +1 -1
  280. package/package.json +3 -4
  281. package/types.js +5 -0
  282. package/utils.js +6 -4
  283. package/validators/index.js +181 -0
  284. package/validators/types.js +5 -0
  285. package/validators/utils/afm.js +45 -0
  286. package/validators/utils/file.js +62 -0
  287. package/validators/utils/iban.js +134 -0
  288. package/validators/utils/index.js +210 -0
  289. package/validators/utils/phone.js +144 -0
  290. package/validators/utils/postal_code.js +40 -0
  291. package/validators/utils/uuid4.js +30 -0
  292. package/validators/validators.spec.js +88 -0
  293. package/es/validators.js +0 -626
  294. package/esm/validators.js +0 -626
  295. package/libs/form/src/Field/ConditionalField.d.ts +0 -17
  296. package/libs/form/src/validators.d.ts +0 -14
  297. package/validators.js +0 -662
  298. package/validators.spec.js +0 -88
package/Field/utils.js ADDED
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.calculateField = calculateField;
9
+ exports.evaluateFieldWithConditions = evaluateFieldWithConditions;
10
+ exports.useField = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _react = require("react");
15
+
16
+ var _Input = _interopRequireDefault(require("@digigov/form/inputs/Input"));
17
+
18
+ var _Checkboxes = _interopRequireDefault(require("@digigov/form/inputs/Checkboxes"));
19
+
20
+ var _Radio = _interopRequireDefault(require("@digigov/form/inputs/Radio"));
21
+
22
+ var _Select = _interopRequireDefault(require("@digigov/form/inputs/Select"));
23
+
24
+ var _FileInput = _interopRequireDefault(require("@digigov/form/inputs/FileInput"));
25
+
26
+ var _DateInput = _interopRequireDefault(require("@digigov/form/inputs/DateInput"));
27
+
28
+ var _FormContext = require("@digigov/form/FormContext");
29
+
30
+ var FIELD_COMPONENTS = {
31
+ text: {
32
+ component: _Input["default"]
33
+ },
34
+ string: {
35
+ component: _Input["default"]
36
+ },
37
+ file: {
38
+ wrapper: 'fieldset',
39
+ component: _FileInput["default"]
40
+ },
41
+ date: {
42
+ wrapper: 'fieldset',
43
+ controlled: true,
44
+ component: _DateInput["default"]
45
+ },
46
+ 'choice:multiple': {
47
+ wrapper: 'fieldset',
48
+ controlled: true,
49
+ component: _Checkboxes["default"]
50
+ },
51
+ 'choice:single': {
52
+ wrapper: 'fieldset',
53
+ controlled: false,
54
+ component: _Radio["default"]
55
+ }
56
+ };
57
+ var ALTERNATIVE_COMPONENTS = {
58
+ Select: {
59
+ component: _Select["default"],
60
+ controlled: false
61
+ }
62
+ };
63
+
64
+ function calculateField(children, field, componentRegistry) {
65
+ var _field$extra;
66
+
67
+ var calculatedField = (0, _extends2["default"])({}, field);
68
+ var fieldComponentRegistry = (0, _extends2["default"])({}, FIELD_COMPONENTS, componentRegistry);
69
+
70
+ if (children) {
71
+ calculatedField.component = children;
72
+ } else if (typeof field.component === 'function') {// leave as is
73
+ } else if (!field.component && !field.type) {
74
+ var _fieldComponentRegist;
75
+
76
+ calculatedField.component = fieldComponentRegistry.string.component;
77
+ calculatedField.controlled = ((_fieldComponentRegist = fieldComponentRegistry.string) === null || _fieldComponentRegist === void 0 ? void 0 : _fieldComponentRegist.controlled) || false;
78
+ } else if (typeof (field === null || field === void 0 ? void 0 : (_field$extra = field.extra) === null || _field$extra === void 0 ? void 0 : _field$extra.component) === 'string' && ALTERNATIVE_COMPONENTS[field.extra.component]) {
79
+ var _ALTERNATIVE_COMPONEN;
80
+
81
+ calculatedField.controlled = ((_ALTERNATIVE_COMPONEN = ALTERNATIVE_COMPONENTS[field.extra.component]) === null || _ALTERNATIVE_COMPONEN === void 0 ? void 0 : _ALTERNATIVE_COMPONEN.controlled) || false;
82
+ calculatedField.component = ALTERNATIVE_COMPONENTS[field.extra.component].component;
83
+ } else if (!field.component && field.type && fieldComponentRegistry[field.type]) {
84
+ var _fieldComponentRegist2;
85
+
86
+ calculatedField.component = fieldComponentRegistry[field.type].component;
87
+ calculatedField.wrapper = fieldComponentRegistry[field.type].wrapper;
88
+ calculatedField.controlled = ((_fieldComponentRegist2 = fieldComponentRegistry[field.type]) === null || _fieldComponentRegist2 === void 0 ? void 0 : _fieldComponentRegist2.controlled) || false;
89
+ } else {
90
+ var _fieldComponentRegist3;
91
+
92
+ calculatedField.component = fieldComponentRegistry.string.component;
93
+ calculatedField.controlled = ((_fieldComponentRegist3 = fieldComponentRegistry.string) === null || _fieldComponentRegist3 === void 0 ? void 0 : _fieldComponentRegist3.controlled) || false;
94
+ }
95
+
96
+ return calculatedField;
97
+ }
98
+
99
+ var useField = function useField(name, customField) {
100
+ var _useContext = (0, _react.useContext)(_FormContext.FormContext),
101
+ fieldsMap = _useContext.fieldsMap,
102
+ control = _useContext.control,
103
+ register = _useContext.register,
104
+ errors = _useContext.errors,
105
+ registerField = _useContext.registerField,
106
+ componentRegistry = _useContext.componentRegistry;
107
+
108
+ (0, _react.useMemo)(function () {
109
+ return (customField === null || customField === void 0 ? void 0 : customField.type) && registerField((0, _extends2["default"])({}, customField, {
110
+ key: name
111
+ }));
112
+ }, [customField, name, registerField]);
113
+ return {
114
+ field: customField || fieldsMap[name],
115
+ control: control,
116
+ register: register,
117
+ componentRegistry: componentRegistry,
118
+ error: errors[name]
119
+ };
120
+ };
121
+
122
+ exports.useField = useField;
123
+
124
+ function evaluateFieldWithConditions(field, variables) {
125
+ var newField = (0, _extends2["default"])({}, field);
126
+
127
+ if (variables) {
128
+ for (var key in variables) {
129
+ if (field.condition[key] && field.condition[key].is === variables[key]) {
130
+ var then = field.condition[key].then || {};
131
+
132
+ for (var attr in then) {
133
+ newField[attr] = then[attr];
134
+ }
135
+ } else if (field.condition[key]) {
136
+ var otherwise = field.condition[key]["else"] || {};
137
+
138
+ for (var _attr in otherwise) {
139
+ newField[_attr] = otherwise[_attr];
140
+ }
141
+ }
142
+ }
143
+ }
144
+
145
+ return newField;
146
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.FieldsetWithContext = void 0;
11
+
12
+ var _react = _interopRequireWildcard(require("react"));
13
+
14
+ var _FormContext = require("@digigov/form/FormContext");
15
+
16
+ var _Field = _interopRequireDefault(require("@digigov/form/Field"));
17
+
18
+ var _i18n = require("@digigov/ui/app/i18n");
19
+
20
+ var _Fieldset = require("@digigov/form/Fieldset/");
21
+
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
+
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+
26
+ var FieldsetWithContext = function FieldsetWithContext(_ref) {
27
+ var name = _ref.name;
28
+
29
+ var _useFieldset = useFieldset(name),
30
+ label = _useFieldset.label,
31
+ body = _useFieldset.body,
32
+ fields = _useFieldset.fields;
33
+
34
+ var _useTranslation = (0, _i18n.useTranslation)(),
35
+ t = _useTranslation.t;
36
+
37
+ var _ref2 = /*#__PURE__*/_react["default"].createElement(_Fieldset.FieldsetBody, null, body);
38
+
39
+ return (0, _react.useMemo)(function () {
40
+ return /*#__PURE__*/_react["default"].createElement(_Fieldset.Fieldset, null, (label === null || label === void 0 ? void 0 : label.primary) && /*#__PURE__*/_react["default"].createElement(_Fieldset.FieldsetLabel, null, t(label.primary)), (label === null || label === void 0 ? void 0 : label.secondary) && /*#__PURE__*/_react["default"].createElement(_Fieldset.FieldsetCaption, null, t(label.secondary)), body && _ref2, fields.map(function (field) {
41
+ return /*#__PURE__*/_react["default"].createElement(_Field["default"], {
42
+ key: field,
43
+ name: field
44
+ });
45
+ }));
46
+ }, [label === null || label === void 0 ? void 0 : label.primary, label === null || label === void 0 ? void 0 : label.secondary, body, fields]);
47
+ };
48
+
49
+ exports.FieldsetWithContext = FieldsetWithContext;
50
+
51
+ var useFieldset = function useFieldset(name) {
52
+ var _useContext = (0, _react.useContext)(_FormContext.FormContext),
53
+ fieldsetsMap = _useContext.fieldsetsMap;
54
+
55
+ if (fieldsetsMap && fieldsetsMap[name]) {
56
+ return (0, _react.useMemo)(function () {
57
+ return fieldsetsMap[name];
58
+ }, [name]);
59
+ } else {
60
+ if (!fieldsetsMap) throw new Error("Fieldsets is not defined");
61
+ throw new Error("No fieldset with name ".concat(name, " found"));
62
+ }
63
+ };
package/Fieldset/index.js CHANGED
@@ -2,16 +2,14 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
- exports["default"] = exports.FieldsetWithContext = exports.FieldsetLabel = exports.FieldsetCaption = exports.FieldsetBody = exports.Fieldset = void 0;
8
+ exports["default"] = exports.FieldsetLabel = exports.FieldsetCaption = exports.FieldsetBody = exports.Fieldset = void 0;
11
9
 
12
- var _react = _interopRequireWildcard(require("react"));
10
+ var _react = _interopRequireDefault(require("react"));
13
11
 
14
- var _Grid = _interopRequireDefault(require("@material-ui/core/Grid"));
12
+ var _Grid = _interopRequireDefault(require("@digigov/ui/layouts/Grid"));
15
13
 
16
14
  var _Fieldset = _interopRequireDefault(require("@digigov/react-core/Fieldset"));
17
15
 
@@ -19,18 +17,8 @@ var _FieldsetLegend = _interopRequireDefault(require("@digigov/react-core/Fields
19
17
 
20
18
  var _Hint = _interopRequireDefault(require("@digigov/react-core/Hint"));
21
19
 
22
- var _form = require("@digigov/form");
23
-
24
- var _Field = _interopRequireDefault(require("@digigov/form/Field"));
25
-
26
20
  var _NormalText = _interopRequireDefault(require("@digigov/ui/typography/NormalText"));
27
21
 
28
- var _i18n = require("@digigov/ui/app/i18n");
29
-
30
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
-
32
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
-
34
22
  var FieldsetLabel = function FieldsetLabel(_ref) {
35
23
  var children = _ref.children;
36
24
  return /*#__PURE__*/_react["default"].createElement(_FieldsetLegend["default"], {
@@ -58,55 +46,8 @@ var FieldsetBody = function FieldsetBody(_ref3) {
58
46
 
59
47
  exports.FieldsetBody = FieldsetBody;
60
48
 
61
- var useFieldset = function useFieldset(name) {
62
- var _useContext = (0, _react.useContext)(_form.FormContext),
63
- fieldsetsMap = _useContext.fieldsetsMap;
64
-
65
- if (fieldsetsMap && fieldsetsMap[name]) {
66
- return (0, _react.useMemo)(function () {
67
- return fieldsetsMap[name];
68
- }, [name]);
69
- } else {
70
- if (!fieldsetsMap) throw new Error("Fieldsets is not defined");
71
- throw new Error("No fieldset with name ".concat(name, " found"));
72
- }
73
- };
74
-
75
- var FieldsetWithContext = function FieldsetWithContext(_ref4) {
76
- var name = _ref4.name;
77
-
78
- var _useFieldset = useFieldset(name),
79
- label = _useFieldset.label,
80
- body = _useFieldset.body,
81
- fields = _useFieldset.fields;
82
-
83
- var _useTranslation = (0, _i18n.useTranslation)(),
84
- t = _useTranslation.t;
85
-
86
- var _ref5 = /*#__PURE__*/_react["default"].createElement(FieldsetBody, null, body);
87
-
88
- return (0, _react.useMemo)(function () {
89
- return /*#__PURE__*/_react["default"].createElement(Fieldset, null, (label === null || label === void 0 ? void 0 : label.primary) && /*#__PURE__*/_react["default"].createElement(FieldsetLabel, null, t(label.primary)), (label === null || label === void 0 ? void 0 : label.secondary) && /*#__PURE__*/_react["default"].createElement(FieldsetCaption, null, t(label.secondary)), body && _ref5, fields.map(function (field) {
90
- return /*#__PURE__*/_react["default"].createElement(_Field["default"], {
91
- key: field,
92
- name: field
93
- });
94
- }));
95
- }, [label === null || label === void 0 ? void 0 : label.primary, label === null || label === void 0 ? void 0 : label.secondary, body, fields]);
96
- };
97
-
98
- exports.FieldsetWithContext = FieldsetWithContext;
99
-
100
- var Fieldset = function Fieldset(_ref6) {
101
- var name = _ref6.name,
102
- children = _ref6.children;
103
-
104
- if (name && !children) {
105
- return /*#__PURE__*/_react["default"].createElement(FieldsetWithContext, {
106
- name: name
107
- });
108
- }
109
-
49
+ var Fieldset = function Fieldset(_ref4) {
50
+ var children = _ref4.children;
110
51
  return /*#__PURE__*/_react["default"].createElement(_Fieldset["default"], null, children);
111
52
  };
112
53
 
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
package/FormBuilder.js ADDED
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = exports.FormBuilder = exports.FormBase = void 0;
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
+
16
+ var _extends4 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
17
+
18
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
21
+
22
+ var _reactHookForm = require("react-hook-form");
23
+
24
+ var _utils = require("@digigov/form/utils");
25
+
26
+ var _validators = require("@digigov/form/validators");
27
+
28
+ var _Fieldset = _interopRequireDefault(require("@digigov/form/Fieldset"));
29
+
30
+ var _Field = _interopRequireDefault(require("@digigov/form/Field"));
31
+
32
+ var _FormContext = require("@digigov/form/FormContext");
33
+
34
+ var _Form = require("@digigov/react-core/Form");
35
+
36
+ var _excluded = ["onSubmit", "children", "registerField", "fieldsMap", "fieldsetsMap", "resolver", "mode", "initial", "reValidateMode", "shouldFocusError", "criteriaMode", "componentRegistry", "grid"],
37
+ _excluded2 = ["fields", "fieldsets", "initial", "onSubmit", "children", "reValidateMode", "mode", "shouldFocusError", "criteriaMode", "auto", "validatorRegistry", "componentRegistry", "grid"];
38
+
39
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
40
+
41
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
42
+
43
+ var FormBase = /*#__PURE__*/_react["default"].forwardRef(function FormBase(_ref, ref) {
44
+ var onSubmit = _ref.onSubmit,
45
+ children = _ref.children,
46
+ registerField = _ref.registerField,
47
+ fieldsMap = _ref.fieldsMap,
48
+ fieldsetsMap = _ref.fieldsetsMap,
49
+ resolver = _ref.resolver,
50
+ mode = _ref.mode,
51
+ initial = _ref.initial,
52
+ reValidateMode = _ref.reValidateMode,
53
+ shouldFocusError = _ref.shouldFocusError,
54
+ criteriaMode = _ref.criteriaMode,
55
+ componentRegistry = _ref.componentRegistry,
56
+ grid = _ref.grid,
57
+ props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
58
+ var form = (0, _reactHookForm.useForm)({
59
+ resolver: resolver,
60
+ mode: mode,
61
+ defaultValues: initial,
62
+ reValidateMode: reValidateMode,
63
+ shouldFocusError: shouldFocusError,
64
+ criteriaMode: criteriaMode
65
+ });
66
+ var handleSubmit = (0, _react.useCallback)(function (data) {
67
+ var errors = onSubmit && onSubmit(data);
68
+
69
+ if (errors) {
70
+ for (var key in errors) {
71
+ form.setError(key, errors[key]);
72
+ }
73
+ }
74
+ }, [onSubmit]);
75
+ var ctx = {
76
+ fieldsMap: fieldsMap,
77
+ fieldsetsMap: fieldsetsMap,
78
+ control: form.control,
79
+ register: form.register,
80
+ registerField: registerField,
81
+ errors: form.errors,
82
+ reset: form.reset,
83
+ componentRegistry: componentRegistry
84
+ };
85
+ return /*#__PURE__*/_react["default"].createElement(_FormContext.FormContext.Provider, {
86
+ value: ctx
87
+ }, /*#__PURE__*/_react["default"].createElement(_Form.Form, (0, _extends4["default"])({
88
+ grid: grid,
89
+ onSubmit: form.handleSubmit(handleSubmit),
90
+ ref: ref
91
+ }, props), children));
92
+ });
93
+
94
+ exports.FormBase = FormBase;
95
+
96
+ var FormBuilder = /*#__PURE__*/_react["default"].forwardRef(function FormBuilder(_ref2, ref) {
97
+ var _ref2$fields = _ref2.fields,
98
+ fields = _ref2$fields === void 0 ? [] : _ref2$fields,
99
+ fieldsets = _ref2.fieldsets,
100
+ _ref2$initial = _ref2.initial,
101
+ initial = _ref2$initial === void 0 ? {} : _ref2$initial,
102
+ onSubmit = _ref2.onSubmit,
103
+ children = _ref2.children,
104
+ _ref2$reValidateMode = _ref2.reValidateMode,
105
+ reValidateMode = _ref2$reValidateMode === void 0 ? 'onSubmit' : _ref2$reValidateMode,
106
+ _ref2$mode = _ref2.mode,
107
+ mode = _ref2$mode === void 0 ? 'onSubmit' : _ref2$mode,
108
+ _ref2$shouldFocusErro = _ref2.shouldFocusError,
109
+ shouldFocusError = _ref2$shouldFocusErro === void 0 ? true : _ref2$shouldFocusErro,
110
+ _ref2$criteriaMode = _ref2.criteriaMode,
111
+ criteriaMode = _ref2$criteriaMode === void 0 ? 'firstError' : _ref2$criteriaMode,
112
+ _ref2$auto = _ref2.auto,
113
+ auto = _ref2$auto === void 0 ? false : _ref2$auto,
114
+ validatorRegistry = _ref2.validatorRegistry,
115
+ componentRegistry = _ref2.componentRegistry,
116
+ _ref2$grid = _ref2.grid,
117
+ grid = _ref2$grid === void 0 ? false : _ref2$grid,
118
+ props = (0, _objectWithoutProperties2["default"])(_ref2, _excluded2);
119
+ var fieldsState = (0, _react.useRef)(fields);
120
+ var setFieldsState = (0, _react.useCallback)(function (newFields) {
121
+ fieldsState.current = newFields;
122
+ }, []);
123
+ var schema = (0, _validators.useValidationSchema)(fieldsState, validatorRegistry);
124
+ var registerField = (0, _react.useCallback)(function (field) {
125
+ setFieldsState([].concat((0, _toConsumableArray2["default"])(fieldsState.current), [field]));
126
+ }, []);
127
+ var resolver;
128
+ var fieldsMap;
129
+ var fieldsetsMap;
130
+ var fieldChildren;
131
+
132
+ if (schema) {
133
+ resolver = (0, _utils.yupResolver)(schema);
134
+ fieldsMap = fields ? fields.reduce(function (map, field) {
135
+ return (0, _extends4["default"])({}, map, (0, _defineProperty2["default"])({}, field.key, field));
136
+ }, {}) : {};
137
+ fieldsetsMap = fieldsets && fieldsets.reduce(function (map, fieldset) {
138
+ return (0, _extends4["default"])({}, map, (0, _defineProperty2["default"])({}, fieldset.key, fieldset));
139
+ }, {});
140
+
141
+ if (auto) {
142
+ if (fieldsets) {
143
+ fieldChildren = fieldsets.map(function (fieldset) {
144
+ return /*#__PURE__*/_react["default"].createElement(_Fieldset["default"], {
145
+ key: fieldset.key
146
+ });
147
+ });
148
+ } else if (fields) {
149
+ fieldChildren = fields.map(function (field) {
150
+ return /*#__PURE__*/_react["default"].createElement(_Field["default"], {
151
+ key: field.key,
152
+ name: field.key
153
+ });
154
+ });
155
+ }
156
+ }
157
+ }
158
+
159
+ return /*#__PURE__*/_react["default"].createElement(FormBase, (0, _extends4["default"])({
160
+ resolver: resolver,
161
+ fieldsetsMap: fieldsetsMap,
162
+ fieldsMap: fieldsMap,
163
+ registerField: registerField,
164
+ initial: initial,
165
+ reValidateMode: reValidateMode,
166
+ mode: mode,
167
+ shouldFocusError: shouldFocusError,
168
+ criteriaMode: criteriaMode,
169
+ onSubmit: onSubmit,
170
+ componentRegistry: componentRegistry,
171
+ ref: ref,
172
+ grid: grid
173
+ }, props), fieldChildren, children);
174
+ });
175
+
176
+ exports.FormBuilder = FormBuilder;
177
+ var _default = FormBuilder;
178
+ exports["default"] = _default;
package/FormContext.js ADDED
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FormContext = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var FormContext = /*#__PURE__*/(0, _react.createContext)({
11
+ fieldsMap: {},
12
+ fieldsetsMap: {}
13
+ });
14
+ exports.FormContext = FormContext;
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.Questions = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _QuestionsContext = require("@digigov/form/Questions/QuestionsContext");
17
+
18
+ var _getNextStep = require("@digigov/form/Questions/getNextStep");
19
+
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+
24
+ var isBrowser = typeof window !== 'undefined';
25
+ /**
26
+ * The Question component accepts question data as props
27
+ * uses composable components to provide a wholesome UX
28
+ *
29
+ */
30
+
31
+ var Questions = function Questions(_ref) {
32
+ var name = _ref.name,
33
+ steps = _ref.steps,
34
+ _ref$initialData = _ref.initialData,
35
+ initialData = _ref$initialData === void 0 ? {} : _ref$initialData,
36
+ onChange = _ref.onChange,
37
+ onSubmit = _ref.onSubmit,
38
+ onActiveStep = _ref.onActiveStep,
39
+ forceStepName = _ref.forceStepName,
40
+ _ref$localDraft = _ref.localDraft,
41
+ localDraft = _ref$localDraft === void 0 ? false : _ref$localDraft,
42
+ children = _ref.children;
43
+
44
+ var _useState = (0, _react.useState)({
45
+ name: ''
46
+ }),
47
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
48
+ currentStep = _useState2[0],
49
+ setCurrentStep = _useState2[1];
50
+
51
+ (0, _react.useEffect)(function () {
52
+ if (!forceStepName) {
53
+ setCurrentStep(steps[0]);
54
+ }
55
+ }, [forceStepName, steps]);
56
+ (0, _react.useEffect)(function () {
57
+ if (forceStepName !== currentStep.name) {
58
+ var forceStep = steps.find(function (_ref2) {
59
+ var name = _ref2.name;
60
+ return name === forceStepName;
61
+ });
62
+ forceStep && setCurrentStep(forceStep);
63
+ }
64
+ }, [forceStepName]);
65
+ var localData = isBrowser && localDraft && window.localStorage.getItem("questions-".concat(name));
66
+
67
+ var _useState3 = (0, _react.useState)(localData && JSON.parse(localData) || initialData),
68
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
69
+ data = _useState4[0],
70
+ setData = _useState4[1];
71
+
72
+ var submitStep = function submitStep(stepName, stepData) {
73
+ data[stepName] = stepData;
74
+
75
+ if (localDraft) {
76
+ isBrowser && window.localStorage.setItem("questions-".concat(name), JSON.stringify(data));
77
+ }
78
+
79
+ if (onChange) {
80
+ onChange && onChange(data);
81
+ }
82
+
83
+ setData(data);
84
+ var nextStep = (0, _getNextStep.getNextStep)(currentStep, steps, data);
85
+
86
+ if (nextStep) {
87
+ onActiveStep && onActiveStep(nextStep);
88
+ setCurrentStep(nextStep);
89
+ } else {
90
+ onSubmit(data);
91
+ }
92
+ };
93
+
94
+ return /*#__PURE__*/_react["default"].createElement(_QuestionsContext.QuestionsContext.Provider, {
95
+ value: {
96
+ steps: steps,
97
+ currentStep: currentStep,
98
+ submitStep: submitStep,
99
+ data: data,
100
+ onActiveStep: onActiveStep
101
+ }
102
+ }, children);
103
+ };
104
+
105
+ exports.Questions = Questions;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.QuestionsContext = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var defaultStep = {
11
+ name: ''
12
+ };
13
+ var QuestionsContext = /*#__PURE__*/(0, _react.createContext)({
14
+ currentStep: defaultStep,
15
+ steps: [],
16
+ submitStep: function submitStep() {
17
+ return null;
18
+ }
19
+ });
20
+ exports.QuestionsContext = QuestionsContext;