@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.
- package/CHANGELOG.md +24 -1
- package/Field/FieldBase.js +110 -0
- package/Field/{ConditionalField.js → FieldConditional.js} +9 -29
- package/Field/FieldContainer.js +62 -0
- package/Field/index.js +11 -251
- package/Field/types.js +5 -0
- package/Field/utils.js +146 -0
- package/Fieldset/FieldsetWithContext.js +63 -0
- package/Fieldset/index.js +4 -63
- package/Fieldset/types.js +5 -0
- package/FormBuilder.js +178 -0
- package/FormContext.js +14 -0
- package/Questions/Questions.js +105 -0
- package/Questions/QuestionsContext.js +20 -0
- package/Questions/Step/ReviewStep.js +11 -7
- package/Questions/Step/Step.js +93 -0
- package/Questions/Step/StepArrayReview.js +79 -0
- package/Questions/Step/StepContext.js +37 -0
- package/Questions/Step/StepDescription.js +2 -2
- package/Questions/Step/StepForm.js +10 -6
- package/Questions/Step/StepTitle.js +2 -2
- package/Questions/Step/getAddMoreFields.js +31 -0
- package/Questions/Step/index.js +81 -200
- package/Questions/Step/types.js +5 -0
- package/Questions/__snapshots__/index.spec.tsx.snap +461 -2499
- package/Questions/getNextStep.js +30 -0
- package/Questions/index.js +4 -150
- package/Questions/types.js +5 -0
- package/es/Field/FieldBase.js +93 -0
- package/es/Field/{ConditionalField.js → FieldConditional.js} +5 -28
- package/es/Field/FieldContainer.js +40 -0
- package/es/Field/index.js +8 -233
- package/es/Field/types.js +1 -0
- package/es/Field/utils.js +122 -0
- package/es/Fieldset/FieldsetWithContext.js +41 -0
- package/es/Fieldset/index.js +3 -51
- package/es/Fieldset/types.js +1 -0
- package/es/FormBuilder.js +148 -0
- package/es/FormContext.js +5 -0
- package/es/Questions/Questions.js +84 -0
- package/es/Questions/QuestionsContext.js +11 -0
- package/es/Questions/Step/ReviewStep.js +5 -3
- package/es/Questions/Step/Step.js +69 -0
- package/es/Questions/Step/StepArrayReview.js +50 -0
- package/es/Questions/Step/StepContext.js +27 -0
- package/es/Questions/Step/StepDescription.js +1 -1
- package/es/Questions/Step/StepForm.js +4 -2
- package/es/Questions/Step/StepTitle.js +1 -1
- package/es/Questions/Step/getAddMoreFields.js +22 -0
- package/es/Questions/Step/index.js +13 -165
- package/es/Questions/Step/types.js +1 -0
- package/es/Questions/__snapshots__/index.spec.tsx.snap +461 -2499
- package/es/Questions/getNextStep.js +23 -0
- package/es/Questions/index.js +2 -119
- package/es/Questions/index.spec.js +2 -1
- package/es/Questions/types.js +1 -0
- package/es/index.js +2 -153
- package/es/inputs/index.js +5 -4
- package/es/internal.js +31 -0
- package/es/types.js +1 -0
- package/es/utils.js +5 -3
- package/es/validators/index.js +155 -0
- package/es/validators/types.js +1 -0
- package/es/validators/utils/afm.js +35 -0
- package/es/validators/utils/file.js +52 -0
- package/es/validators/utils/iban.js +123 -0
- package/es/validators/utils/index.js +105 -0
- package/es/validators/utils/phone.js +122 -0
- package/es/validators/utils/postal_code.js +29 -0
- package/es/validators/utils/uuid4.js +20 -0
- package/{esm → es/validators}/validators.spec.js +1 -1
- package/esm/Field/FieldBase.js +93 -0
- package/esm/Field/{ConditionalField.js → FieldConditional.js} +5 -28
- package/esm/Field/FieldContainer.js +40 -0
- package/esm/Field/index.js +8 -233
- package/esm/Field/types.js +1 -0
- package/esm/Field/utils.js +122 -0
- package/esm/Fieldset/FieldsetWithContext.js +41 -0
- package/esm/Fieldset/index.js +3 -51
- package/esm/Fieldset/types.js +1 -0
- package/esm/FormBuilder.js +148 -0
- package/esm/FormContext.js +5 -0
- package/esm/Questions/Questions.js +84 -0
- package/esm/Questions/QuestionsContext.js +11 -0
- package/esm/Questions/Step/ReviewStep.js +5 -3
- package/esm/Questions/Step/Step.js +69 -0
- package/esm/Questions/Step/StepArrayReview.js +50 -0
- package/esm/Questions/Step/StepContext.js +27 -0
- package/esm/Questions/Step/StepDescription.js +1 -1
- package/esm/Questions/Step/StepForm.js +4 -2
- package/esm/Questions/Step/StepTitle.js +1 -1
- package/esm/Questions/Step/getAddMoreFields.js +22 -0
- package/esm/Questions/Step/index.js +13 -165
- package/esm/Questions/Step/types.js +1 -0
- package/esm/Questions/__snapshots__/index.spec.tsx.snap +461 -2499
- package/esm/Questions/getNextStep.js +23 -0
- package/esm/Questions/index.js +2 -119
- package/esm/Questions/index.spec.js +2 -1
- package/esm/Questions/types.js +1 -0
- package/esm/index.js +3 -154
- package/esm/inputs/index.js +5 -4
- package/esm/internal.js +31 -0
- package/esm/types.js +1 -0
- package/esm/utils.js +5 -3
- package/esm/validators/index.js +155 -0
- package/esm/validators/types.js +1 -0
- package/esm/validators/utils/afm.js +35 -0
- package/esm/validators/utils/file.js +52 -0
- package/esm/validators/utils/iban.js +123 -0
- package/esm/validators/utils/index.js +105 -0
- package/esm/validators/utils/phone.js +122 -0
- package/esm/validators/utils/postal_code.js +29 -0
- package/esm/validators/utils/uuid4.js +20 -0
- package/{es → esm/validators}/validators.spec.js +1 -1
- package/index.js +8 -191
- package/inputs/index.js +13 -5
- package/internal.js +356 -0
- package/libs/form/src/Field/FieldBase.d.ts +3 -0
- package/libs/form/src/Field/FieldConditional.d.ts +4 -0
- package/libs/form/src/Field/FieldContainer.d.ts +4 -0
- package/libs/form/src/Field/index.d.ts +1 -62
- package/libs/form/src/Field/types.d.ts +75 -0
- package/libs/form/src/Field/utils.d.ts +5 -0
- package/libs/form/src/Fieldset/FieldsetWithContext.d.ts +4 -0
- package/libs/form/src/Fieldset/index.d.ts +2 -12
- package/libs/form/src/Fieldset/types.d.ts +6 -0
- package/libs/form/src/FormBuilder.d.ts +5 -0
- package/libs/form/src/FormContext.d.ts +3 -0
- package/libs/form/src/Questions/Questions.d.ts +8 -0
- package/libs/form/src/Questions/QuestionsContext.d.ts +3 -0
- package/libs/form/src/Questions/Step/ReviewStep.d.ts +1 -0
- package/libs/form/src/Questions/Step/Step.d.ts +9 -0
- package/libs/form/src/Questions/Step/StepArrayReview.d.ts +4 -0
- package/libs/form/src/Questions/Step/StepContext.d.ts +4 -0
- package/libs/form/src/Questions/Step/StepForm.d.ts +2 -1
- package/libs/form/src/Questions/Step/getAddMoreFields.d.ts +3 -0
- package/libs/form/src/Questions/Step/index.d.ts +12 -47
- package/libs/form/src/Questions/Step/types.d.ts +31 -0
- package/libs/form/src/Questions/getNextStep.d.ts +2 -0
- package/libs/form/src/Questions/index.d.ts +1 -28
- package/libs/form/src/Questions/types.d.ts +19 -0
- package/libs/form/src/index.d.ts +2 -73
- package/libs/form/src/inputs/Checkboxes/index.d.ts +1 -1
- package/libs/form/src/inputs/DateInput/index.d.ts +1 -2
- package/libs/form/src/inputs/FileInput/index.d.ts +1 -1
- package/libs/form/src/inputs/Input/index.d.ts +1 -1
- package/libs/form/src/inputs/Label/index.d.ts +2 -1
- package/libs/form/src/inputs/Radio/index.d.ts +1 -1
- package/libs/form/src/inputs/Select/index.d.ts +1 -1
- package/libs/form/src/inputs/index.d.ts +4 -3
- package/libs/form/src/internal.d.ts +31 -0
- package/libs/form/src/types.d.ts +70 -0
- package/libs/form/src/validators/index.d.ts +8 -0
- package/libs/form/src/validators/types.d.ts +2 -0
- package/libs/form/src/validators/utils/afm.d.ts +6 -0
- package/libs/form/src/validators/utils/file.d.ts +1 -0
- package/libs/form/src/validators/utils/iban.d.ts +2 -0
- package/libs/form/src/validators/utils/index.d.ts +12 -0
- package/libs/form/src/validators/utils/phone.d.ts +9 -0
- package/libs/form/src/validators/utils/postal_code.d.ts +2 -0
- package/libs/form/src/validators/utils/uuid4.d.ts +6 -0
- package/libs/form/src/{validators.spec.d.ts → validators/validators.spec.d.ts} +0 -0
- package/libs/ui/src/core/Accordion/index.d.ts +3 -3
- package/libs/ui/src/core/Base/index.d.ts +3 -0
- package/libs/ui/src/core/Blockquote/index.d.ts +1 -1
- package/libs/ui/src/core/Button/BackButton.d.ts +1 -1
- package/libs/ui/src/core/Button/ButtonLink.d.ts +1 -1
- package/libs/ui/src/core/Button/index.d.ts +1 -1
- package/libs/ui/src/core/Divider/index.d.ts +1 -1
- package/libs/ui/src/core/Form/index.d.ts +3 -0
- package/libs/ui/src/core/Label/index.d.ts +4 -0
- package/libs/ui/src/core/Link/index.d.ts +1 -0
- package/libs/ui/src/core/NavList/NavHorizontal.d.ts +3 -0
- package/libs/ui/src/core/NavList/NavHorizontalList.d.ts +3 -0
- package/libs/ui/src/core/NavList/NavHorizontalListItem.d.ts +3 -0
- package/libs/ui/src/core/NavList/NavList.d.ts +1 -14
- package/libs/ui/src/core/NavList/NavListBase.d.ts +4 -0
- package/libs/ui/src/core/NavList/NavListItem.d.ts +1 -0
- package/libs/ui/src/core/NavList/NavListItemBase.d.ts +2 -1
- package/libs/ui/src/core/NavList/NavListSubMenu.d.ts +1 -1
- package/libs/ui/src/core/NavList/NavVertical.d.ts +3 -0
- package/libs/ui/src/core/NavList/NavVerticalItem.d.ts +3 -0
- package/libs/ui/src/core/NavList/index.d.ts +5 -0
- package/libs/ui/src/core/NavList/types.d.ts +14 -0
- package/libs/ui/src/core/SkipLink/index.d.ts +3 -0
- package/libs/ui/src/core/SvgIcon/index.d.ts +1 -0
- package/libs/ui/src/core/Table/TableFloatingScroll.d.ts +2 -0
- package/libs/ui/src/core/Table/index.d.ts +1 -0
- package/libs/ui/src/core/index.d.ts +4 -0
- package/libs/ui/src/layouts/Grid/index.d.ts +1 -0
- package/libs/ui/src/typography/Caption/index.d.ts +3 -2
- package/libs/ui/src/typography/Title/index.d.ts +2 -1
- package/libs-ui/react-core/src/Accordion/index.d.ts +3 -3
- package/libs-ui/react-core/src/AccordionControls/index.d.ts +3 -3
- package/libs-ui/react-core/src/AccordionSection/index.d.ts +3 -3
- package/libs-ui/react-core/src/AccordionSectionContent/index.d.ts +3 -3
- package/libs-ui/react-core/src/AccordionSectionHeader/index.d.ts +3 -3
- package/libs-ui/react-core/src/AccordionSectionSummary/index.d.ts +4 -3
- package/libs-ui/react-core/src/AccordionSectionSummaryHeading/index.d.ts +3 -3
- package/libs-ui/react-core/src/BackLink/index.d.ts +3 -3
- package/libs-ui/react-core/src/Base/index.d.ts +43 -0
- package/libs-ui/react-core/src/Blockquote/index.d.ts +3 -3
- package/libs-ui/react-core/src/Breadcrumbs/index.d.ts +3 -3
- package/libs-ui/react-core/src/BreadcrumbsList/index.d.ts +3 -3
- package/libs-ui/react-core/src/BreadcrumbsListItem/index.d.ts +3 -3
- package/libs-ui/react-core/src/Button/index.d.ts +3 -3
- package/libs-ui/react-core/src/ButtonGroup/index.d.ts +3 -3
- package/libs-ui/react-core/src/ButtonLink/index.d.ts +3 -3
- package/libs-ui/react-core/src/CallToAction/index.d.ts +1 -1
- package/libs-ui/react-core/src/Card/index.d.ts +3 -3
- package/libs-ui/react-core/src/CardAction/index.d.ts +3 -3
- package/libs-ui/react-core/src/CardHeading/index.d.ts +3 -3
- package/libs-ui/react-core/src/CardText/index.d.ts +3 -3
- package/libs-ui/react-core/src/CheckIcon/index.d.ts +15 -0
- package/libs-ui/react-core/src/Checkbox/index.d.ts +3 -3
- package/libs-ui/react-core/src/CheckboxItem/index.d.ts +3 -3
- package/libs-ui/react-core/src/Confirmation/index.d.ts +3 -3
- package/libs-ui/react-core/src/ConfirmationBody/index.d.ts +3 -3
- package/libs-ui/react-core/src/ConfirmationTitle/index.d.ts +3 -3
- package/libs-ui/react-core/src/DateInput/index.d.ts +3 -3
- package/libs-ui/react-core/src/DateInputItem/index.d.ts +3 -3
- package/libs-ui/react-core/src/Details/index.d.ts +3 -3
- package/libs-ui/react-core/src/DetailsContent/index.d.ts +3 -3
- package/libs-ui/react-core/src/DetailsSummary/index.d.ts +3 -3
- package/libs-ui/react-core/src/ErrorMessage/index.d.ts +3 -3
- package/libs-ui/react-core/src/ErrorSummary/index.d.ts +3 -3
- package/libs-ui/react-core/src/Field/index.d.ts +3 -3
- package/libs-ui/react-core/src/Fieldset/index.d.ts +3 -3
- package/libs-ui/react-core/src/FieldsetLegend/index.d.ts +3 -3
- package/libs-ui/react-core/src/FileUpload/index.d.ts +3 -3
- package/libs-ui/react-core/src/Form/index.d.ts +11 -0
- package/libs-ui/react-core/src/Grid/index.d.ts +3 -3
- package/libs-ui/react-core/src/Heading/index.d.ts +3 -3
- package/libs-ui/react-core/src/HeadingCaption/index.d.ts +3 -3
- package/libs-ui/react-core/src/Hidden/index.d.ts +3 -3
- package/libs-ui/react-core/src/Hint/index.d.ts +3 -3
- package/libs-ui/react-core/src/Label/index.d.ts +3 -3
- package/libs-ui/react-core/src/LabelTitle/index.d.ts +7 -7
- package/libs-ui/react-core/src/Link/index.d.ts +3 -3
- package/libs-ui/react-core/src/List/index.d.ts +3 -3
- package/libs-ui/react-core/src/ListItem/index.d.ts +3 -3
- package/libs-ui/react-core/src/NavHorizontal/index.d.ts +16 -0
- package/libs-ui/react-core/src/NavHorizontalList/index.d.ts +10 -0
- package/libs-ui/react-core/src/NavHorizontalListItem/index.d.ts +18 -0
- package/libs-ui/react-core/src/NavVertical/index.d.ts +11 -0
- package/libs-ui/react-core/src/NavVerticalItem/index.d.ts +14 -0
- package/libs-ui/react-core/src/NormalText/index.d.ts +3 -3
- package/libs-ui/react-core/src/NotificationBanner/index.d.ts +3 -3
- package/libs-ui/react-core/src/NotificationBannerContent/index.d.ts +3 -3
- package/libs-ui/react-core/src/NotificationBannerHeader/index.d.ts +3 -3
- package/libs-ui/react-core/src/NotificationBannerHeading/index.d.ts +3 -3
- package/libs-ui/react-core/src/NotificationBannerLink/index.d.ts +3 -3
- package/libs-ui/react-core/src/Paragraph/index.d.ts +3 -3
- package/libs-ui/react-core/src/PhaseBanner/index.d.ts +3 -3
- package/libs-ui/react-core/src/PhaseBannerHeaderContainer/index.d.ts +3 -3
- package/libs-ui/react-core/src/PhaseBannerTag/index.d.ts +3 -3
- package/libs-ui/react-core/src/PhaseBannerText/index.d.ts +3 -3
- package/libs-ui/react-core/src/Radio/index.d.ts +3 -3
- package/libs-ui/react-core/src/RadioItem/index.d.ts +3 -3
- package/libs-ui/react-core/src/SectionBreak/index.d.ts +3 -3
- package/libs-ui/react-core/src/Select/index.d.ts +3 -3
- package/libs-ui/react-core/src/SelectOption/index.d.ts +3 -3
- package/libs-ui/react-core/src/SkipLink/index.d.ts +10 -0
- package/libs-ui/react-core/src/SummaryList/index.d.ts +3 -3
- package/libs-ui/react-core/src/SummaryListItem/index.d.ts +3 -3
- package/libs-ui/react-core/src/SummaryListItemAction/index.d.ts +3 -3
- package/libs-ui/react-core/src/SummaryListItemKey/index.d.ts +3 -3
- package/libs-ui/react-core/src/SummaryListItemValue/index.d.ts +3 -3
- package/libs-ui/react-core/src/SvgIcon/index.d.ts +3 -3
- package/libs-ui/react-core/src/Table/index.d.ts +3 -3
- package/libs-ui/react-core/src/TableBody/index.d.ts +3 -3
- package/libs-ui/react-core/src/TableCaption/index.d.ts +3 -3
- package/libs-ui/react-core/src/TableContainer/index.d.ts +3 -3
- package/libs-ui/react-core/src/TableDataCell/index.d.ts +3 -3
- package/libs-ui/react-core/src/TableHead/index.d.ts +3 -3
- package/libs-ui/react-core/src/TableHeadCell/index.d.ts +3 -3
- package/libs-ui/react-core/src/TableNoDataRow/index.d.ts +3 -3
- package/libs-ui/react-core/src/TableRow/index.d.ts +3 -3
- package/libs-ui/react-core/src/Tabs/index.d.ts +3 -3
- package/libs-ui/react-core/src/TabsHeading/index.d.ts +3 -3
- package/libs-ui/react-core/src/TabsList/index.d.ts +3 -3
- package/libs-ui/react-core/src/TabsListItem/index.d.ts +3 -3
- package/libs-ui/react-core/src/TabsPanel/index.d.ts +3 -3
- package/libs-ui/react-core/src/TextArea/index.d.ts +3 -3
- package/libs-ui/react-core/src/TextInput/index.d.ts +3 -3
- package/libs-ui/react-core/src/UncheckIcon/index.d.ts +4 -4
- package/libs-ui/react-core/src/VisuallyHidden/index.d.ts +3 -3
- package/libs-ui/react-core/src/WarningText/index.d.ts +3 -3
- package/package.json +3 -2
- package/types.js +5 -0
- package/utils.js +6 -4
- package/validators/index.js +181 -0
- package/validators/types.js +5 -0
- package/validators/utils/afm.js +45 -0
- package/validators/utils/file.js +62 -0
- package/validators/utils/iban.js +134 -0
- package/validators/utils/index.js +210 -0
- package/validators/utils/phone.js +144 -0
- package/validators/utils/postal_code.js +40 -0
- package/validators/utils/uuid4.js +30 -0
- package/validators/validators.spec.js +88 -0
- package/es/validators.js +0 -626
- package/esm/validators.js +0 -626
- package/libs/form/src/Field/ConditionalField.d.ts +0 -17
- package/libs/form/src/validators.d.ts +0 -14
- package/validators.js +0 -662
- package/validators.spec.js +0 -88
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import { useContext, useMemo } from 'react';
|
|
3
|
+
import Input from '@digigov/form/inputs/Input';
|
|
4
|
+
import Checkboxes from '@digigov/form/inputs/Checkboxes';
|
|
5
|
+
import Radio from '@digigov/form/inputs/Radio';
|
|
6
|
+
import Select from '@digigov/form/inputs/Select';
|
|
7
|
+
import FileInput from '@digigov/form/inputs/FileInput';
|
|
8
|
+
import DateInput from '@digigov/form/inputs/DateInput';
|
|
9
|
+
import { FormContext } from '@digigov/form/FormContext';
|
|
10
|
+
var FIELD_COMPONENTS = {
|
|
11
|
+
text: {
|
|
12
|
+
component: Input
|
|
13
|
+
},
|
|
14
|
+
string: {
|
|
15
|
+
component: Input
|
|
16
|
+
},
|
|
17
|
+
file: {
|
|
18
|
+
wrapper: 'fieldset',
|
|
19
|
+
component: FileInput
|
|
20
|
+
},
|
|
21
|
+
date: {
|
|
22
|
+
wrapper: 'fieldset',
|
|
23
|
+
controlled: true,
|
|
24
|
+
component: DateInput
|
|
25
|
+
},
|
|
26
|
+
'choice:multiple': {
|
|
27
|
+
wrapper: 'fieldset',
|
|
28
|
+
controlled: true,
|
|
29
|
+
component: Checkboxes
|
|
30
|
+
},
|
|
31
|
+
'choice:single': {
|
|
32
|
+
wrapper: 'fieldset',
|
|
33
|
+
controlled: false,
|
|
34
|
+
component: Radio
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
var ALTERNATIVE_COMPONENTS = {
|
|
38
|
+
Select: {
|
|
39
|
+
component: Select,
|
|
40
|
+
controlled: false
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
export function calculateField(children, field, componentRegistry) {
|
|
44
|
+
var _field$extra;
|
|
45
|
+
|
|
46
|
+
var calculatedField = _extends({}, field);
|
|
47
|
+
|
|
48
|
+
var fieldComponentRegistry = _extends({}, FIELD_COMPONENTS, componentRegistry);
|
|
49
|
+
|
|
50
|
+
if (children) {
|
|
51
|
+
calculatedField.component = children;
|
|
52
|
+
} else if (typeof field.component === 'function') {// leave as is
|
|
53
|
+
} else if (!field.component && !field.type) {
|
|
54
|
+
var _fieldComponentRegist;
|
|
55
|
+
|
|
56
|
+
calculatedField.component = fieldComponentRegistry.string.component;
|
|
57
|
+
calculatedField.controlled = ((_fieldComponentRegist = fieldComponentRegistry.string) === null || _fieldComponentRegist === void 0 ? void 0 : _fieldComponentRegist.controlled) || false;
|
|
58
|
+
} 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]) {
|
|
59
|
+
var _ALTERNATIVE_COMPONEN;
|
|
60
|
+
|
|
61
|
+
calculatedField.controlled = ((_ALTERNATIVE_COMPONEN = ALTERNATIVE_COMPONENTS[field.extra.component]) === null || _ALTERNATIVE_COMPONEN === void 0 ? void 0 : _ALTERNATIVE_COMPONEN.controlled) || false;
|
|
62
|
+
calculatedField.component = ALTERNATIVE_COMPONENTS[field.extra.component].component;
|
|
63
|
+
} else if (!field.component && field.type && fieldComponentRegistry[field.type]) {
|
|
64
|
+
var _fieldComponentRegist2;
|
|
65
|
+
|
|
66
|
+
calculatedField.component = fieldComponentRegistry[field.type].component;
|
|
67
|
+
calculatedField.wrapper = fieldComponentRegistry[field.type].wrapper;
|
|
68
|
+
calculatedField.controlled = ((_fieldComponentRegist2 = fieldComponentRegistry[field.type]) === null || _fieldComponentRegist2 === void 0 ? void 0 : _fieldComponentRegist2.controlled) || false;
|
|
69
|
+
} else {
|
|
70
|
+
var _fieldComponentRegist3;
|
|
71
|
+
|
|
72
|
+
calculatedField.component = fieldComponentRegistry.string.component;
|
|
73
|
+
calculatedField.controlled = ((_fieldComponentRegist3 = fieldComponentRegistry.string) === null || _fieldComponentRegist3 === void 0 ? void 0 : _fieldComponentRegist3.controlled) || false;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return calculatedField;
|
|
77
|
+
}
|
|
78
|
+
export var useField = function useField(name, customField) {
|
|
79
|
+
var _useContext = useContext(FormContext),
|
|
80
|
+
fieldsMap = _useContext.fieldsMap,
|
|
81
|
+
control = _useContext.control,
|
|
82
|
+
register = _useContext.register,
|
|
83
|
+
errors = _useContext.errors,
|
|
84
|
+
registerField = _useContext.registerField,
|
|
85
|
+
componentRegistry = _useContext.componentRegistry;
|
|
86
|
+
|
|
87
|
+
useMemo(function () {
|
|
88
|
+
return (customField === null || customField === void 0 ? void 0 : customField.type) && registerField(_extends({}, customField, {
|
|
89
|
+
key: name
|
|
90
|
+
}));
|
|
91
|
+
}, [customField, name, registerField]);
|
|
92
|
+
return {
|
|
93
|
+
field: customField || fieldsMap[name],
|
|
94
|
+
control: control,
|
|
95
|
+
register: register,
|
|
96
|
+
componentRegistry: componentRegistry,
|
|
97
|
+
error: errors[name]
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
export function evaluateFieldWithConditions(field, variables) {
|
|
101
|
+
var newField = _extends({}, field);
|
|
102
|
+
|
|
103
|
+
if (variables) {
|
|
104
|
+
for (var key in variables) {
|
|
105
|
+
if (field.condition[key] && field.condition[key].is === variables[key]) {
|
|
106
|
+
var then = field.condition[key].then || {};
|
|
107
|
+
|
|
108
|
+
for (var attr in then) {
|
|
109
|
+
newField[attr] = then[attr];
|
|
110
|
+
}
|
|
111
|
+
} else if (field.condition[key]) {
|
|
112
|
+
var otherwise = field.condition[key]["else"] || {};
|
|
113
|
+
|
|
114
|
+
for (var _attr in otherwise) {
|
|
115
|
+
newField[_attr] = otherwise[_attr];
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return newField;
|
|
122
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React, { useContext, useMemo } from 'react';
|
|
2
|
+
import { FormContext } from '@digigov/form/FormContext';
|
|
3
|
+
import Field from '@digigov/form/Field';
|
|
4
|
+
import { useTranslation } from '@digigov/ui/app/i18n';
|
|
5
|
+
import { Fieldset, FieldsetLabel, FieldsetCaption, FieldsetBody } from '@digigov/form/Fieldset/';
|
|
6
|
+
export var FieldsetWithContext = function FieldsetWithContext(_ref) {
|
|
7
|
+
var name = _ref.name;
|
|
8
|
+
|
|
9
|
+
var _useFieldset = useFieldset(name),
|
|
10
|
+
label = _useFieldset.label,
|
|
11
|
+
body = _useFieldset.body,
|
|
12
|
+
fields = _useFieldset.fields;
|
|
13
|
+
|
|
14
|
+
var _useTranslation = useTranslation(),
|
|
15
|
+
t = _useTranslation.t;
|
|
16
|
+
|
|
17
|
+
var _ref2 = /*#__PURE__*/React.createElement(FieldsetBody, null, body);
|
|
18
|
+
|
|
19
|
+
return useMemo(function () {
|
|
20
|
+
return /*#__PURE__*/React.createElement(Fieldset, null, (label === null || label === void 0 ? void 0 : label.primary) && /*#__PURE__*/React.createElement(FieldsetLabel, null, t(label.primary)), (label === null || label === void 0 ? void 0 : label.secondary) && /*#__PURE__*/React.createElement(FieldsetCaption, null, t(label.secondary)), body && _ref2, fields.map(function (field) {
|
|
21
|
+
return /*#__PURE__*/React.createElement(Field, {
|
|
22
|
+
key: field,
|
|
23
|
+
name: field
|
|
24
|
+
});
|
|
25
|
+
}));
|
|
26
|
+
}, [label === null || label === void 0 ? void 0 : label.primary, label === null || label === void 0 ? void 0 : label.secondary, body, fields]);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
var useFieldset = function useFieldset(name) {
|
|
30
|
+
var _useContext = useContext(FormContext),
|
|
31
|
+
fieldsetsMap = _useContext.fieldsetsMap;
|
|
32
|
+
|
|
33
|
+
if (fieldsetsMap && fieldsetsMap[name]) {
|
|
34
|
+
return useMemo(function () {
|
|
35
|
+
return fieldsetsMap[name];
|
|
36
|
+
}, [name]);
|
|
37
|
+
} else {
|
|
38
|
+
if (!fieldsetsMap) throw new Error("Fieldsets is not defined");
|
|
39
|
+
throw new Error("No fieldset with name ".concat(name, " found"));
|
|
40
|
+
}
|
|
41
|
+
};
|
package/es/Fieldset/index.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import Grid from '@digigov/ui/layouts/Grid';
|
|
3
3
|
import CoreFieldset from '@digigov/react-core/Fieldset';
|
|
4
4
|
import FieldsetLegend from '@digigov/react-core/FieldsetLegend';
|
|
5
5
|
import Hint from '@digigov/react-core/Hint';
|
|
6
|
-
import { FormContext } from '@digigov/form';
|
|
7
|
-
import Field from '@digigov/form/Field';
|
|
8
6
|
import NormalText from '@digigov/ui/typography/NormalText';
|
|
9
|
-
import { useTranslation } from '@digigov/ui/app/i18n';
|
|
10
7
|
export var FieldsetLabel = function FieldsetLabel(_ref) {
|
|
11
8
|
var children = _ref.children;
|
|
12
9
|
return /*#__PURE__*/React.createElement(FieldsetLegend, {
|
|
@@ -25,53 +22,8 @@ export var FieldsetBody = function FieldsetBody(_ref3) {
|
|
|
25
22
|
xs: 12
|
|
26
23
|
}, /*#__PURE__*/React.createElement(NormalText, null, children));
|
|
27
24
|
};
|
|
28
|
-
|
|
29
|
-
var
|
|
30
|
-
var _useContext = useContext(FormContext),
|
|
31
|
-
fieldsetsMap = _useContext.fieldsetsMap;
|
|
32
|
-
|
|
33
|
-
if (fieldsetsMap && fieldsetsMap[name]) {
|
|
34
|
-
return useMemo(function () {
|
|
35
|
-
return fieldsetsMap[name];
|
|
36
|
-
}, [name]);
|
|
37
|
-
} else {
|
|
38
|
-
if (!fieldsetsMap) throw new Error("Fieldsets is not defined");
|
|
39
|
-
throw new Error("No fieldset with name ".concat(name, " found"));
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
export var FieldsetWithContext = function FieldsetWithContext(_ref4) {
|
|
44
|
-
var name = _ref4.name;
|
|
45
|
-
|
|
46
|
-
var _useFieldset = useFieldset(name),
|
|
47
|
-
label = _useFieldset.label,
|
|
48
|
-
body = _useFieldset.body,
|
|
49
|
-
fields = _useFieldset.fields;
|
|
50
|
-
|
|
51
|
-
var _useTranslation = useTranslation(),
|
|
52
|
-
t = _useTranslation.t;
|
|
53
|
-
|
|
54
|
-
var _ref5 = /*#__PURE__*/React.createElement(FieldsetBody, null, body);
|
|
55
|
-
|
|
56
|
-
return useMemo(function () {
|
|
57
|
-
return /*#__PURE__*/React.createElement(Fieldset, null, (label === null || label === void 0 ? void 0 : label.primary) && /*#__PURE__*/React.createElement(FieldsetLabel, null, t(label.primary)), (label === null || label === void 0 ? void 0 : label.secondary) && /*#__PURE__*/React.createElement(FieldsetCaption, null, t(label.secondary)), body && _ref5, fields.map(function (field) {
|
|
58
|
-
return /*#__PURE__*/React.createElement(Field, {
|
|
59
|
-
key: field,
|
|
60
|
-
name: field
|
|
61
|
-
});
|
|
62
|
-
}));
|
|
63
|
-
}, [label === null || label === void 0 ? void 0 : label.primary, label === null || label === void 0 ? void 0 : label.secondary, body, fields]);
|
|
64
|
-
};
|
|
65
|
-
export var Fieldset = function Fieldset(_ref6) {
|
|
66
|
-
var name = _ref6.name,
|
|
67
|
-
children = _ref6.children;
|
|
68
|
-
|
|
69
|
-
if (name && !children) {
|
|
70
|
-
return /*#__PURE__*/React.createElement(FieldsetWithContext, {
|
|
71
|
-
name: name
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
|
|
25
|
+
export var Fieldset = function Fieldset(_ref4) {
|
|
26
|
+
var children = _ref4.children;
|
|
75
27
|
return /*#__PURE__*/React.createElement(CoreFieldset, null, children);
|
|
76
28
|
};
|
|
77
29
|
export default Fieldset;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
3
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
4
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
5
|
+
var _excluded = ["onSubmit", "children", "registerField", "fieldsMap", "fieldsetsMap", "resolver", "mode", "initial", "reValidateMode", "shouldFocusError", "criteriaMode", "componentRegistry", "grid"],
|
|
6
|
+
_excluded2 = ["fields", "fieldsets", "initial", "onSubmit", "children", "reValidateMode", "mode", "shouldFocusError", "criteriaMode", "auto", "validatorRegistry", "componentRegistry", "grid"];
|
|
7
|
+
|
|
8
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
9
|
+
import React, { useCallback, useRef } from 'react';
|
|
10
|
+
import { useForm } from 'react-hook-form';
|
|
11
|
+
import { yupResolver } from '@digigov/form/utils';
|
|
12
|
+
import { useValidationSchema } from '@digigov/form/validators';
|
|
13
|
+
import Fieldset from '@digigov/form/Fieldset';
|
|
14
|
+
import Field from '@digigov/form/Field';
|
|
15
|
+
import { FormContext } from '@digigov/form/FormContext';
|
|
16
|
+
import { Form } from '@digigov/react-core/Form';
|
|
17
|
+
export var FormBase = /*#__PURE__*/React.forwardRef(function FormBase(_ref, ref) {
|
|
18
|
+
var onSubmit = _ref.onSubmit,
|
|
19
|
+
children = _ref.children,
|
|
20
|
+
registerField = _ref.registerField,
|
|
21
|
+
fieldsMap = _ref.fieldsMap,
|
|
22
|
+
fieldsetsMap = _ref.fieldsetsMap,
|
|
23
|
+
resolver = _ref.resolver,
|
|
24
|
+
mode = _ref.mode,
|
|
25
|
+
initial = _ref.initial,
|
|
26
|
+
reValidateMode = _ref.reValidateMode,
|
|
27
|
+
shouldFocusError = _ref.shouldFocusError,
|
|
28
|
+
criteriaMode = _ref.criteriaMode,
|
|
29
|
+
componentRegistry = _ref.componentRegistry,
|
|
30
|
+
grid = _ref.grid,
|
|
31
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
32
|
+
|
|
33
|
+
var form = useForm({
|
|
34
|
+
resolver: resolver,
|
|
35
|
+
mode: mode,
|
|
36
|
+
defaultValues: initial,
|
|
37
|
+
reValidateMode: reValidateMode,
|
|
38
|
+
shouldFocusError: shouldFocusError,
|
|
39
|
+
criteriaMode: criteriaMode
|
|
40
|
+
});
|
|
41
|
+
var handleSubmit = useCallback(function (data) {
|
|
42
|
+
var errors = onSubmit && onSubmit(data);
|
|
43
|
+
|
|
44
|
+
if (errors) {
|
|
45
|
+
for (var key in errors) {
|
|
46
|
+
form.setError(key, errors[key]);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}, [onSubmit]);
|
|
50
|
+
var ctx = {
|
|
51
|
+
fieldsMap: fieldsMap,
|
|
52
|
+
fieldsetsMap: fieldsetsMap,
|
|
53
|
+
control: form.control,
|
|
54
|
+
register: form.register,
|
|
55
|
+
registerField: registerField,
|
|
56
|
+
errors: form.errors,
|
|
57
|
+
reset: form.reset,
|
|
58
|
+
componentRegistry: componentRegistry
|
|
59
|
+
};
|
|
60
|
+
return /*#__PURE__*/React.createElement(FormContext.Provider, {
|
|
61
|
+
value: ctx
|
|
62
|
+
}, /*#__PURE__*/React.createElement(Form, _extends({
|
|
63
|
+
grid: grid,
|
|
64
|
+
onSubmit: form.handleSubmit(handleSubmit),
|
|
65
|
+
ref: ref
|
|
66
|
+
}, props), children));
|
|
67
|
+
});
|
|
68
|
+
export var FormBuilder = /*#__PURE__*/React.forwardRef(function FormBuilder(_ref2, ref) {
|
|
69
|
+
var _ref2$fields = _ref2.fields,
|
|
70
|
+
fields = _ref2$fields === void 0 ? [] : _ref2$fields,
|
|
71
|
+
fieldsets = _ref2.fieldsets,
|
|
72
|
+
_ref2$initial = _ref2.initial,
|
|
73
|
+
initial = _ref2$initial === void 0 ? {} : _ref2$initial,
|
|
74
|
+
onSubmit = _ref2.onSubmit,
|
|
75
|
+
children = _ref2.children,
|
|
76
|
+
_ref2$reValidateMode = _ref2.reValidateMode,
|
|
77
|
+
reValidateMode = _ref2$reValidateMode === void 0 ? 'onSubmit' : _ref2$reValidateMode,
|
|
78
|
+
_ref2$mode = _ref2.mode,
|
|
79
|
+
mode = _ref2$mode === void 0 ? 'onSubmit' : _ref2$mode,
|
|
80
|
+
_ref2$shouldFocusErro = _ref2.shouldFocusError,
|
|
81
|
+
shouldFocusError = _ref2$shouldFocusErro === void 0 ? true : _ref2$shouldFocusErro,
|
|
82
|
+
_ref2$criteriaMode = _ref2.criteriaMode,
|
|
83
|
+
criteriaMode = _ref2$criteriaMode === void 0 ? 'firstError' : _ref2$criteriaMode,
|
|
84
|
+
_ref2$auto = _ref2.auto,
|
|
85
|
+
auto = _ref2$auto === void 0 ? false : _ref2$auto,
|
|
86
|
+
validatorRegistry = _ref2.validatorRegistry,
|
|
87
|
+
componentRegistry = _ref2.componentRegistry,
|
|
88
|
+
_ref2$grid = _ref2.grid,
|
|
89
|
+
grid = _ref2$grid === void 0 ? false : _ref2$grid,
|
|
90
|
+
props = _objectWithoutProperties(_ref2, _excluded2);
|
|
91
|
+
|
|
92
|
+
var fieldsState = useRef(fields);
|
|
93
|
+
var setFieldsState = useCallback(function (newFields) {
|
|
94
|
+
fieldsState.current = newFields;
|
|
95
|
+
}, []);
|
|
96
|
+
var schema = useValidationSchema(fieldsState, validatorRegistry);
|
|
97
|
+
var registerField = useCallback(function (field) {
|
|
98
|
+
setFieldsState([].concat(_toConsumableArray(fieldsState.current), [field]));
|
|
99
|
+
}, []);
|
|
100
|
+
var resolver;
|
|
101
|
+
var fieldsMap;
|
|
102
|
+
var fieldsetsMap;
|
|
103
|
+
var fieldChildren;
|
|
104
|
+
|
|
105
|
+
if (schema) {
|
|
106
|
+
resolver = yupResolver(schema);
|
|
107
|
+
fieldsMap = fields ? fields.reduce(function (map, field) {
|
|
108
|
+
return _extends({}, map, _defineProperty({}, field.key, field));
|
|
109
|
+
}, {}) : {};
|
|
110
|
+
fieldsetsMap = fieldsets && fieldsets.reduce(function (map, fieldset) {
|
|
111
|
+
return _extends({}, map, _defineProperty({}, fieldset.key, fieldset));
|
|
112
|
+
}, {});
|
|
113
|
+
|
|
114
|
+
if (auto) {
|
|
115
|
+
if (fieldsets) {
|
|
116
|
+
fieldChildren = fieldsets.map(function (fieldset) {
|
|
117
|
+
return /*#__PURE__*/React.createElement(Fieldset, {
|
|
118
|
+
key: fieldset.key
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
} else if (fields) {
|
|
122
|
+
fieldChildren = fields.map(function (field) {
|
|
123
|
+
return /*#__PURE__*/React.createElement(Field, {
|
|
124
|
+
key: field.key,
|
|
125
|
+
name: field.key
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return /*#__PURE__*/React.createElement(FormBase, _extends({
|
|
133
|
+
resolver: resolver,
|
|
134
|
+
fieldsetsMap: fieldsetsMap,
|
|
135
|
+
fieldsMap: fieldsMap,
|
|
136
|
+
registerField: registerField,
|
|
137
|
+
initial: initial,
|
|
138
|
+
reValidateMode: reValidateMode,
|
|
139
|
+
mode: mode,
|
|
140
|
+
shouldFocusError: shouldFocusError,
|
|
141
|
+
criteriaMode: criteriaMode,
|
|
142
|
+
onSubmit: onSubmit,
|
|
143
|
+
componentRegistry: componentRegistry,
|
|
144
|
+
ref: ref,
|
|
145
|
+
grid: grid
|
|
146
|
+
}, props), fieldChildren, children);
|
|
147
|
+
});
|
|
148
|
+
export default FormBuilder;
|
|
@@ -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
|
+
};
|
|
@@ -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
|
|
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) {
|