@digigov/form 0.6.10 → 0.8.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.
- package/CHANGELOG.md +24 -1
- package/Field/FieldBase.js +102 -0
- package/Field/FieldConditional.js +72 -0
- package/Field/FieldContainer.js +65 -0
- package/Field/index.js +50 -327
- package/Field/utils.js +162 -0
- package/FieldArray/FieldArray.stories.js +44 -0
- package/FieldArray/__stories__/Default.js +109 -0
- package/FieldArray/__stories__/WithExactLength.js +108 -0
- package/FieldArray/index.js +88 -0
- package/FieldObject/index.js +80 -0
- package/FormBuilder.js +34 -24
- package/MultiplicityField/MultiplicityField.stories.js +86 -0
- package/MultiplicityField/__stories__/Default.js +121 -0
- package/MultiplicityField/__stories__/WithExactLength.js +116 -0
- package/MultiplicityField/__stories__/WithMaxLength.js +119 -0
- package/MultiplicityField/__stories__/WithMinAndMaxLength.js +120 -0
- package/MultiplicityField/__stories__/WithMinLength.js +119 -0
- package/MultiplicityField/add-objects.js +180 -0
- package/MultiplicityField/index.js +146 -0
- package/Questions/__snapshots__/index.spec.tsx.snap +461 -2499
- package/es/Field/FieldBase.js +85 -0
- package/es/Field/FieldConditional.js +54 -0
- package/es/Field/FieldContainer.js +43 -0
- package/es/Field/index.js +46 -309
- package/es/Field/utils.js +138 -0
- package/es/FieldArray/FieldArray.stories.js +7 -0
- package/es/FieldArray/__stories__/Default.js +88 -0
- package/es/FieldArray/__stories__/WithExactLength.js +87 -0
- package/es/FieldArray/index.js +65 -0
- package/es/FieldObject/index.js +55 -0
- package/es/FormBuilder.js +33 -22
- package/es/MultiplicityField/MultiplicityField.stories.js +10 -0
- package/es/MultiplicityField/__stories__/Default.js +100 -0
- package/es/MultiplicityField/__stories__/WithExactLength.js +95 -0
- package/es/MultiplicityField/__stories__/WithMaxLength.js +98 -0
- package/es/MultiplicityField/__stories__/WithMinAndMaxLength.js +99 -0
- package/es/MultiplicityField/__stories__/WithMinLength.js +98 -0
- package/es/MultiplicityField/add-objects.js +156 -0
- package/es/MultiplicityField/index.js +116 -0
- package/es/Questions/__snapshots__/index.spec.tsx.snap +461 -2499
- package/es/inputs/Radio/index.js +8 -13
- package/es/internal.js +4 -0
- package/es/utils.js +65 -48
- package/es/validators/index.js +171 -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 +87 -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/es/{validators.spec.js → validators/validators.spec.js} +1 -1
- package/esm/Field/FieldBase.js +85 -0
- package/esm/Field/FieldConditional.js +54 -0
- package/esm/Field/FieldContainer.js +43 -0
- package/esm/Field/index.js +46 -309
- package/esm/Field/utils.js +138 -0
- package/esm/FieldArray/FieldArray.stories.js +7 -0
- package/esm/FieldArray/__stories__/Default.js +88 -0
- package/esm/FieldArray/__stories__/WithExactLength.js +87 -0
- package/esm/FieldArray/index.js +65 -0
- package/esm/FieldObject/index.js +55 -0
- package/esm/FormBuilder.js +33 -22
- package/esm/MultiplicityField/MultiplicityField.stories.js +10 -0
- package/esm/MultiplicityField/__stories__/Default.js +100 -0
- package/esm/MultiplicityField/__stories__/WithExactLength.js +95 -0
- package/esm/MultiplicityField/__stories__/WithMaxLength.js +98 -0
- package/esm/MultiplicityField/__stories__/WithMinAndMaxLength.js +99 -0
- package/esm/MultiplicityField/__stories__/WithMinLength.js +98 -0
- package/esm/MultiplicityField/add-objects.js +156 -0
- package/esm/MultiplicityField/index.js +116 -0
- package/esm/Questions/__snapshots__/index.spec.tsx.snap +461 -2499
- package/esm/index.js +1 -1
- package/esm/inputs/Radio/index.js +8 -13
- package/esm/internal.js +4 -0
- package/esm/utils.js +65 -48
- package/esm/validators/index.js +171 -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 +87 -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/esm/{validators.spec.js → validators/validators.spec.js} +1 -1
- package/inputs/Radio/index.js +8 -20
- package/internal.js +42 -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 -3
- package/libs/form/src/Field/types.d.ts +23 -15
- package/libs/form/src/Field/utils.d.ts +5 -0
- package/libs/form/src/FieldArray/FieldArray.stories.d.ts +8 -0
- package/libs/form/src/FieldArray/__stories__/Default.d.ts +1 -0
- package/libs/form/src/FieldArray/__stories__/WithExactLength.d.ts +1 -0
- package/libs/form/src/FieldArray/index.d.ts +11 -0
- package/libs/form/src/FieldObject/index.d.ts +20 -0
- package/libs/form/src/FormContext.d.ts +2 -2
- package/libs/form/src/MultiplicityField/MultiplicityField.stories.d.ts +11 -0
- package/libs/form/src/MultiplicityField/__stories__/Default.d.ts +1 -0
- package/libs/form/src/MultiplicityField/__stories__/WithExactLength.d.ts +1 -0
- package/libs/form/src/MultiplicityField/__stories__/WithMaxLength.d.ts +1 -0
- package/libs/form/src/MultiplicityField/__stories__/WithMinAndMaxLength.d.ts +1 -0
- package/libs/form/src/MultiplicityField/__stories__/WithMinLength.d.ts +1 -0
- package/libs/form/src/MultiplicityField/add-objects.d.ts +13 -0
- package/libs/form/src/MultiplicityField/index.d.ts +32 -0
- package/libs/form/src/inputs/DateInput/index.d.ts +0 -1
- package/libs/form/src/inputs/Label/index.d.ts +1 -0
- package/libs/form/src/internal.d.ts +4 -0
- package/libs/form/src/types.d.ts +22 -13
- package/libs/form/src/utils.d.ts +8 -3
- package/libs/form/src/validators/index.d.ts +9 -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 +3 -0
- package/libs/form/src/validators/utils/iban.d.ts +4 -0
- package/libs/form/src/validators/utils/index.d.ts +24 -0
- package/libs/form/src/validators/utils/phone.d.ts +11 -0
- package/libs/form/src/validators/utils/postal_code.d.ts +4 -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/app/i18n.d.ts +2 -2
- 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/NavListItem.d.ts +1 -0
- package/libs/ui/src/core/NavList/NavListItemBase.d.ts +2 -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 +1 -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 +0 -1
- package/libs/ui/src/core/index.d.ts +4 -0
- package/libs/ui/src/locales/el.d.ts +6 -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/Aside/index.d.ts +10 -0
- 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/Bottom/index.d.ts +9 -0
- 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/CheckboxConditional/index.d.ts +11 -0
- 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/Container/index.d.ts +17 -0
- package/libs-ui/react-core/src/Copyright/index.d.ts +10 -0
- 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/Footer/index.d.ts +9 -0
- package/libs-ui/react-core/src/FooterContainer/index.d.ts +16 -0
- package/libs-ui/react-core/src/FooterContent/index.d.ts +10 -0
- package/libs-ui/react-core/src/FooterContentLogos/index.d.ts +11 -0
- package/libs-ui/react-core/src/FooterHeading/index.d.ts +15 -0
- package/libs-ui/react-core/src/FooterImage/index.d.ts +15 -0
- package/libs-ui/react-core/src/FooterInlineList/index.d.ts +11 -0
- package/libs-ui/react-core/src/FooterInlineListItem/index.d.ts +9 -0
- package/libs-ui/react-core/src/FooterLink/index.d.ts +13 -0
- package/libs-ui/react-core/src/FooterList/index.d.ts +15 -0
- package/libs-ui/react-core/src/FooterListItem/index.d.ts +10 -0
- package/libs-ui/react-core/src/FooterMeta/index.d.ts +11 -0
- package/libs-ui/react-core/src/FooterMetaItem/index.d.ts +14 -0
- package/libs-ui/react-core/src/FooterNavigation/index.d.ts +11 -0
- package/libs-ui/react-core/src/FooterSection/index.d.ts +11 -0
- package/libs-ui/react-core/src/Form/index.d.ts +11 -0
- package/libs-ui/react-core/src/GovGRFooter/index.d.ts +9 -0
- package/libs-ui/react-core/src/GovGRLogo/index.d.ts +9 -0
- package/libs-ui/react-core/src/Grid/index.d.ts +3 -3
- package/libs-ui/react-core/src/Header/index.d.ts +10 -0
- package/libs-ui/react-core/src/HeaderContent/index.d.ts +9 -0
- package/libs-ui/react-core/src/HeaderLogo/index.d.ts +21 -0
- package/libs-ui/react-core/src/HeaderSecondaryLogo/index.d.ts +21 -0
- package/libs-ui/react-core/src/HeaderSection/index.d.ts +9 -0
- package/libs-ui/react-core/src/HeaderSubtitle/index.d.ts +9 -0
- package/libs-ui/react-core/src/HeaderTitle/index.d.ts +13 -0
- 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/HellenicRepublicLogo/index.d.ts +20 -0
- package/libs-ui/react-core/src/HellenicRepublicLogo/logo-el.d.ts +2 -0
- package/libs-ui/react-core/src/HellenicRepublicLogo/logo-en.d.ts +2 -0
- 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/Layout/index.d.ts +10 -0
- 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/Main/index.d.ts +9 -0
- package/libs-ui/react-core/src/Masthead/index.d.ts +9 -0
- package/libs-ui/react-core/src/MastheadBody/index.d.ts +9 -0
- 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/PageTitle/index.d.ts +9 -0
- package/libs-ui/react-core/src/PageTitleCaption/index.d.ts +14 -0
- package/libs-ui/react-core/src/PageTitleHeading/index.d.ts +13 -0
- package/libs-ui/react-core/src/PageTitleSection/index.d.ts +10 -0
- 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/RadioConditional/index.d.ts +11 -0
- 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/ServiceBadge/index.d.ts +11 -0
- 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/Top/index.d.ts +9 -0
- 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/libs-ui/react-core/src/index.d.ts +141 -0
- package/package.json +7 -5
- package/utils.js +64 -48
- package/validators/index.js +197 -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 +188 -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/validators.d.ts +0 -14
- package/validators.js +0 -662
- package/validators.spec.js +0 -88
|
@@ -0,0 +1,138 @@
|
|
|
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
|
+
trigger = _useContext.trigger,
|
|
84
|
+
clearErrors = _useContext.clearErrors,
|
|
85
|
+
errors = _useContext.errors,
|
|
86
|
+
registerField = _useContext.registerField,
|
|
87
|
+
watch = _useContext.watch,
|
|
88
|
+
componentRegistry = _useContext.componentRegistry,
|
|
89
|
+
getFieldState = _useContext.getFieldState,
|
|
90
|
+
setValue = _useContext.setValue,
|
|
91
|
+
getValues = _useContext.getValues,
|
|
92
|
+
unregister = _useContext.unregister,
|
|
93
|
+
formState = _useContext.formState;
|
|
94
|
+
|
|
95
|
+
useMemo(function () {
|
|
96
|
+
return (customField === null || customField === void 0 ? void 0 : customField.type) && registerField(_extends({}, customField, {
|
|
97
|
+
key: name
|
|
98
|
+
}));
|
|
99
|
+
}, [customField, name, registerField]);
|
|
100
|
+
return {
|
|
101
|
+
field: customField || fieldsMap[name],
|
|
102
|
+
control: control,
|
|
103
|
+
register: register,
|
|
104
|
+
trigger: trigger,
|
|
105
|
+
watch: watch,
|
|
106
|
+
componentRegistry: componentRegistry,
|
|
107
|
+
getFieldState: getFieldState,
|
|
108
|
+
setValue: setValue,
|
|
109
|
+
clearErrors: clearErrors,
|
|
110
|
+
getValues: getValues,
|
|
111
|
+
unregister: unregister,
|
|
112
|
+
formState: formState,
|
|
113
|
+
error: errors[name]
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
export function evaluateFieldWithConditions(field, variables) {
|
|
117
|
+
var newField = _extends({}, field);
|
|
118
|
+
|
|
119
|
+
if (variables) {
|
|
120
|
+
for (var key in variables) {
|
|
121
|
+
if (field.condition[key] && field.condition[key].is === variables[key]) {
|
|
122
|
+
var then = field.condition[key].then || {};
|
|
123
|
+
|
|
124
|
+
for (var attr in then) {
|
|
125
|
+
newField[attr] = then[attr];
|
|
126
|
+
}
|
|
127
|
+
} else if (field.condition[key]) {
|
|
128
|
+
var otherwise = field.condition[key]["else"] || {};
|
|
129
|
+
|
|
130
|
+
for (var _attr in otherwise) {
|
|
131
|
+
newField[_attr] = otherwise[_attr];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return newField;
|
|
138
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import FieldArray from '@digigov/form/FieldArray';
|
|
2
|
+
export default {
|
|
3
|
+
title: 'Digigov Form/FieldArray',
|
|
4
|
+
component: FieldArray
|
|
5
|
+
};
|
|
6
|
+
export * from '@digigov/form/FieldArray/__stories__/Default';
|
|
7
|
+
export * from '@digigov/form/FieldArray/__stories__/WithExactLength';
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import React, { Suspense } from 'react';
|
|
3
|
+
import FormBuilder, { Field } from '@digigov/form';
|
|
4
|
+
import { Button } from '@digigov/ui/core';
|
|
5
|
+
var fields = [{
|
|
6
|
+
key: 'string',
|
|
7
|
+
type: 'string',
|
|
8
|
+
label: {
|
|
9
|
+
primary: 'Πεδίο 1',
|
|
10
|
+
secondary: 'Το multiplicity field είναι ένα πεδίο οπότε φαίνεται και είναι μέρος της φόρμας'
|
|
11
|
+
}
|
|
12
|
+
}, {
|
|
13
|
+
key: 'multiplicity',
|
|
14
|
+
type: 'array',
|
|
15
|
+
label: {
|
|
16
|
+
primary: 'Συνυπογράφοντες',
|
|
17
|
+
secondary: 'Οι συνυπογράφοντες είναι άνθρωποι σαν και εμάς'
|
|
18
|
+
},
|
|
19
|
+
extra: {
|
|
20
|
+
label: {
|
|
21
|
+
question: {
|
|
22
|
+
title: 'Θέλετε να προσθέσετε επιπλέον συνυπογράφοντες;',
|
|
23
|
+
yes: 'Ναι',
|
|
24
|
+
no: 'Όχι'
|
|
25
|
+
},
|
|
26
|
+
edit: 'Επεξεργασία',
|
|
27
|
+
add: 'Προσθέστε τα στοιχεία του επόμενου συνυπογράφοντα',
|
|
28
|
+
"delete": 'Αφαίρεση συνυπογράφοντος',
|
|
29
|
+
save: 'Αποθήκευση'
|
|
30
|
+
},
|
|
31
|
+
min: 2,
|
|
32
|
+
max: 4,
|
|
33
|
+
of: {
|
|
34
|
+
type: 'object',
|
|
35
|
+
extra: {
|
|
36
|
+
fields: [{
|
|
37
|
+
key: 'afm',
|
|
38
|
+
type: 'afm',
|
|
39
|
+
required: true,
|
|
40
|
+
label: {
|
|
41
|
+
primary: 'ΑΦΜ'
|
|
42
|
+
}
|
|
43
|
+
}, {
|
|
44
|
+
key: 'firstName',
|
|
45
|
+
required: true,
|
|
46
|
+
type: 'string',
|
|
47
|
+
label: {
|
|
48
|
+
primary: 'Όνομα'
|
|
49
|
+
}
|
|
50
|
+
}, {
|
|
51
|
+
key: 'lastName',
|
|
52
|
+
required: true,
|
|
53
|
+
type: 'string',
|
|
54
|
+
label: {
|
|
55
|
+
primary: 'Επώνυμο'
|
|
56
|
+
}
|
|
57
|
+
}]
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}, {
|
|
62
|
+
key: 'phonenumber',
|
|
63
|
+
type: 'phone_number',
|
|
64
|
+
required: true,
|
|
65
|
+
label: {
|
|
66
|
+
primary: 'Πεδίο 2',
|
|
67
|
+
secondary: 'Το multiplicity field είναι ένα πεδίο οπότε φαίνεται και είναι μέρος της φόρμας'
|
|
68
|
+
}
|
|
69
|
+
}];
|
|
70
|
+
|
|
71
|
+
var _ref = /*#__PURE__*/React.createElement(Button, null, "\u03A3\u03C5\u03BD\u03AD\u03C7\u03B5\u03B9\u03B1");
|
|
72
|
+
|
|
73
|
+
export var Default = function Default() {
|
|
74
|
+
return /*#__PURE__*/React.createElement(Suspense, {
|
|
75
|
+
fallback: "loading"
|
|
76
|
+
}, /*#__PURE__*/React.createElement(FormBuilder, {
|
|
77
|
+
onSubmit: function onSubmit(data) {
|
|
78
|
+
debugger;
|
|
79
|
+
console.log(data);
|
|
80
|
+
}
|
|
81
|
+
}, /*#__PURE__*/React.createElement(Field, _extends({
|
|
82
|
+
name: "string"
|
|
83
|
+
}, fields[0])), /*#__PURE__*/React.createElement(Field, _extends({
|
|
84
|
+
name: "multiplicity"
|
|
85
|
+
}, fields[1])), /*#__PURE__*/React.createElement(Field, _extends({
|
|
86
|
+
name: "phonenumber"
|
|
87
|
+
}, fields[2])), _ref));
|
|
88
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import React, { Suspense } from 'react';
|
|
3
|
+
import FormBuilder, { Field } from '@digigov/form';
|
|
4
|
+
import { Button } from '@digigov/ui/core';
|
|
5
|
+
var fields = [{
|
|
6
|
+
key: 'string',
|
|
7
|
+
type: 'string',
|
|
8
|
+
label: {
|
|
9
|
+
primary: 'Πεδίο 1',
|
|
10
|
+
secondary: 'Το multiplicity field είναι ένα πεδίο οπότε φαίνεται και είναι μέρος της φόρμας'
|
|
11
|
+
}
|
|
12
|
+
}, {
|
|
13
|
+
key: 'multiplicity',
|
|
14
|
+
type: 'array',
|
|
15
|
+
label: {
|
|
16
|
+
primary: 'Συνυπογράφοντες',
|
|
17
|
+
secondary: 'Οι συνυπογράφοντες είναι άνθρωποι σαν και εμάς'
|
|
18
|
+
},
|
|
19
|
+
extra: {
|
|
20
|
+
label: {
|
|
21
|
+
question: {
|
|
22
|
+
title: 'Θέλετε να προσθέσετε επιπλέον συνυπογράφοντες;',
|
|
23
|
+
yes: 'Ναι',
|
|
24
|
+
no: 'Όχι'
|
|
25
|
+
},
|
|
26
|
+
edit: 'Επεξεργασία',
|
|
27
|
+
add: 'Προσθέστε τα στοιχεία του επόμενου συνυπογράφοντα',
|
|
28
|
+
"delete": 'Αφαίρεση συνυπογράφοντος',
|
|
29
|
+
save: 'Αποθήκευση'
|
|
30
|
+
},
|
|
31
|
+
length: 2,
|
|
32
|
+
of: {
|
|
33
|
+
type: 'object',
|
|
34
|
+
extra: {
|
|
35
|
+
fields: [{
|
|
36
|
+
key: 'afm',
|
|
37
|
+
type: 'afm',
|
|
38
|
+
required: true,
|
|
39
|
+
label: {
|
|
40
|
+
primary: 'ΑΦΜ'
|
|
41
|
+
}
|
|
42
|
+
}, {
|
|
43
|
+
key: 'firstName',
|
|
44
|
+
required: true,
|
|
45
|
+
type: 'string',
|
|
46
|
+
label: {
|
|
47
|
+
primary: 'Όνομα'
|
|
48
|
+
}
|
|
49
|
+
}, {
|
|
50
|
+
key: 'lastName',
|
|
51
|
+
required: true,
|
|
52
|
+
type: 'string',
|
|
53
|
+
label: {
|
|
54
|
+
primary: 'Επώνυμο'
|
|
55
|
+
}
|
|
56
|
+
}]
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}, {
|
|
61
|
+
key: 'phonenumber',
|
|
62
|
+
type: 'phone_number',
|
|
63
|
+
required: true,
|
|
64
|
+
label: {
|
|
65
|
+
primary: 'Πεδίο 2',
|
|
66
|
+
secondary: 'Το multiplicity field είναι ένα πεδίο οπότε φαίνεται και είναι μέρος της φόρμας'
|
|
67
|
+
}
|
|
68
|
+
}];
|
|
69
|
+
|
|
70
|
+
var _ref = /*#__PURE__*/React.createElement(Button, null, "\u03A3\u03C5\u03BD\u03AD\u03C7\u03B5\u03B9\u03B1");
|
|
71
|
+
|
|
72
|
+
export var WithExactLength = function WithExactLength() {
|
|
73
|
+
return /*#__PURE__*/React.createElement(Suspense, {
|
|
74
|
+
fallback: "loading"
|
|
75
|
+
}, /*#__PURE__*/React.createElement(FormBuilder, {
|
|
76
|
+
onSubmit: function onSubmit(data) {
|
|
77
|
+
debugger;
|
|
78
|
+
console.log(data);
|
|
79
|
+
}
|
|
80
|
+
}, /*#__PURE__*/React.createElement(Field, _extends({
|
|
81
|
+
name: "string"
|
|
82
|
+
}, fields[0])), /*#__PURE__*/React.createElement(Field, _extends({
|
|
83
|
+
name: "multiplicity"
|
|
84
|
+
}, fields[1])), /*#__PURE__*/React.createElement(Field, _extends({
|
|
85
|
+
name: "phonenumber"
|
|
86
|
+
}, fields[2])), _ref));
|
|
87
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["name", "register", "control", "formState", "error", "layout", "label"];
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { DevTool } from '@hookform/devtools';
|
|
6
|
+
import { useFieldArray } from 'react-hook-form';
|
|
7
|
+
import FieldObject from '@digigov/form/FieldObject';
|
|
8
|
+
import { Button, Card } from '@digigov/ui/core';
|
|
9
|
+
import { FieldsetLabel } from '@digigov/form/Fieldset';
|
|
10
|
+
import Fieldset from '@digigov/react-core/Fieldset';
|
|
11
|
+
import FieldContainer from '@digigov/form/Field/FieldContainer';
|
|
12
|
+
export var FieldArray = function FieldArray(_ref) {
|
|
13
|
+
var name = _ref.name,
|
|
14
|
+
register = _ref.register,
|
|
15
|
+
control = _ref.control,
|
|
16
|
+
formState = _ref.formState,
|
|
17
|
+
error = _ref.error,
|
|
18
|
+
layout = _ref.layout,
|
|
19
|
+
label = _ref.label,
|
|
20
|
+
customField = _objectWithoutProperties(_ref, _excluded);
|
|
21
|
+
|
|
22
|
+
var _useFieldArray = useFieldArray({
|
|
23
|
+
control: control,
|
|
24
|
+
name: name
|
|
25
|
+
}),
|
|
26
|
+
fields = _useFieldArray.fields,
|
|
27
|
+
append = _useFieldArray.append,
|
|
28
|
+
remove = _useFieldArray.remove;
|
|
29
|
+
|
|
30
|
+
return /*#__PURE__*/React.createElement(FieldContainer, {
|
|
31
|
+
label: label,
|
|
32
|
+
layout: layout,
|
|
33
|
+
error: formState.isSubmitted && !formState.isSubmitting && error !== null && error !== void 0 && error.message && error ? error : undefined,
|
|
34
|
+
wrapper: "fieldset",
|
|
35
|
+
name: name
|
|
36
|
+
}, /*#__PURE__*/React.createElement(DevTool, {
|
|
37
|
+
control: control
|
|
38
|
+
}), fields.map(function (field, index) {
|
|
39
|
+
var _customField$extra;
|
|
40
|
+
|
|
41
|
+
return /*#__PURE__*/React.createElement(Card, {
|
|
42
|
+
variant: "border",
|
|
43
|
+
key: field.id
|
|
44
|
+
}, /*#__PURE__*/React.createElement(Fieldset, null, /*#__PURE__*/React.createElement(FieldsetLabel, null, "\u03A3\u03C5\u03BD\u03C5\u03C0\u03BF\u03B3\u03C1\u03AC\u03C6\u03BF\u03BD\u03C4\u03B1\u03C2 ", index + 1), /*#__PURE__*/React.createElement(FieldObject, _extends({
|
|
45
|
+
name: "".concat(name, ".").concat(index),
|
|
46
|
+
error: Array.isArray(error) && error[index],
|
|
47
|
+
register: register,
|
|
48
|
+
control: control
|
|
49
|
+
}, (_customField$extra = customField.extra) === null || _customField$extra === void 0 ? void 0 : _customField$extra.of)), /*#__PURE__*/React.createElement(Button, {
|
|
50
|
+
type: "button",
|
|
51
|
+
color: "warning",
|
|
52
|
+
onClick: function onClick() {
|
|
53
|
+
return remove(index);
|
|
54
|
+
}
|
|
55
|
+
}, "Remove")));
|
|
56
|
+
}), /*#__PURE__*/React.createElement(Button, {
|
|
57
|
+
type: "button",
|
|
58
|
+
color: "secondary",
|
|
59
|
+
onClick: function onClick(ev) {
|
|
60
|
+
ev.preventDefault();
|
|
61
|
+
append({});
|
|
62
|
+
}
|
|
63
|
+
}, "\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C3\u03C5\u03BD\u03C5\u03C0\u03BF\u03B3\u03C1\u03AC\u03C6\u03BF\u03BD\u03C4\u03B1"));
|
|
64
|
+
};
|
|
65
|
+
export default FieldArray;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import React, { useMemo } from 'react';
|
|
3
|
+
import Fieldset, { FieldsetCaption } from '@digigov/form/Fieldset';
|
|
4
|
+
import { useTranslation } from '@digigov/ui/app/i18n';
|
|
5
|
+
import { FieldBase } from '@digigov/form/Field/FieldBase';
|
|
6
|
+
import { calculateField } from '@digigov/form/Field/utils';
|
|
7
|
+
import { FieldsetLegend } from '@digigov/react-core';
|
|
8
|
+
export var FieldObject = function FieldObject(_ref) {
|
|
9
|
+
var name = _ref.name,
|
|
10
|
+
label = _ref.label,
|
|
11
|
+
extra = _ref.extra,
|
|
12
|
+
error = _ref.error,
|
|
13
|
+
control = _ref.control,
|
|
14
|
+
register = _ref.register,
|
|
15
|
+
formState = _ref.formState;
|
|
16
|
+
|
|
17
|
+
var _useTranslation = useTranslation(),
|
|
18
|
+
t = _useTranslation.t;
|
|
19
|
+
|
|
20
|
+
return /*#__PURE__*/React.createElement(Fieldset, null, (label === null || label === void 0 ? void 0 : label.primary) && /*#__PURE__*/React.createElement(FieldsetLegend, {
|
|
21
|
+
size: "s"
|
|
22
|
+
}, t(label.primary)), (label === null || label === void 0 ? void 0 : label.secondary) && /*#__PURE__*/React.createElement(FieldsetCaption, null, t(label.secondary)), extra === null || extra === void 0 ? void 0 : extra.fields.map(function (field) {
|
|
23
|
+
return /*#__PURE__*/React.createElement(FieldObjectItem, {
|
|
24
|
+
key: "".concat(name, ".").concat(field.key),
|
|
25
|
+
name: "".concat(name, ".").concat(field.key),
|
|
26
|
+
control: control,
|
|
27
|
+
register: register,
|
|
28
|
+
field: field,
|
|
29
|
+
error: error && error[field.key],
|
|
30
|
+
formState: formState
|
|
31
|
+
});
|
|
32
|
+
}));
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
var FieldObjectItem = function FieldObjectItem(_ref2) {
|
|
36
|
+
var name = _ref2.name,
|
|
37
|
+
children = _ref2.children,
|
|
38
|
+
field = _ref2.field,
|
|
39
|
+
error = _ref2.error,
|
|
40
|
+
control = _ref2.control,
|
|
41
|
+
formState = _ref2.formState,
|
|
42
|
+
register = _ref2.register;
|
|
43
|
+
var calculatedField = useMemo(function () {
|
|
44
|
+
return calculateField(children, field);
|
|
45
|
+
}, [field]);
|
|
46
|
+
var customError = error ? error : formState === null || formState === void 0 ? void 0 : formState.errors[name];
|
|
47
|
+
return /*#__PURE__*/React.createElement(FieldBase, _extends({}, calculatedField, {
|
|
48
|
+
name: name,
|
|
49
|
+
control: control,
|
|
50
|
+
register: register,
|
|
51
|
+
error: customError
|
|
52
|
+
}));
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export default FieldObject;
|
package/es/FormBuilder.js
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
3
2
|
import _extends from "@babel/runtime/helpers/extends";
|
|
4
3
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
5
|
-
var _excluded = ["onSubmit", "children", "registerField", "fieldsMap", "fieldsetsMap", "resolver", "mode", "initial", "reValidateMode", "shouldFocusError", "criteriaMode", "componentRegistry"],
|
|
6
|
-
_excluded2 = ["fields", "fieldsets", "initial", "onSubmit", "children", "reValidateMode", "mode", "shouldFocusError", "criteriaMode", "auto", "validatorRegistry", "componentRegistry"];
|
|
4
|
+
var _excluded = ["onSubmit", "children", "registerField", "fieldsMap", "fieldsetsMap", "resolver", "mode", "initial", "reValidateMode", "shouldFocusError", "criteriaMode", "componentRegistry", "grid"],
|
|
5
|
+
_excluded2 = ["fields", "fieldsets", "initial", "onSubmit", "children", "reValidateMode", "mode", "shouldFocusError", "criteriaMode", "auto", "validatorRegistry", "componentRegistry", "grid"];
|
|
7
6
|
|
|
8
7
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
9
8
|
import React, { useCallback, useRef } from 'react';
|
|
10
9
|
import { useForm } from 'react-hook-form';
|
|
11
10
|
import { yupResolver } from '@digigov/form/utils';
|
|
12
|
-
import Grid from '@digigov/ui/layouts/Grid';
|
|
13
11
|
import { useValidationSchema } from '@digigov/form/validators';
|
|
14
12
|
import Fieldset from '@digigov/form/Fieldset';
|
|
15
13
|
import Field from '@digigov/form/Field';
|
|
16
14
|
import { FormContext } from '@digigov/form/FormContext';
|
|
15
|
+
import { Form } from '@digigov/react-core/Form';
|
|
17
16
|
export var FormBase = /*#__PURE__*/React.forwardRef(function FormBase(_ref, ref) {
|
|
18
17
|
var onSubmit = _ref.onSubmit,
|
|
19
18
|
children = _ref.children,
|
|
@@ -27,6 +26,7 @@ export var FormBase = /*#__PURE__*/React.forwardRef(function FormBase(_ref, ref)
|
|
|
27
26
|
shouldFocusError = _ref.shouldFocusError,
|
|
28
27
|
criteriaMode = _ref.criteriaMode,
|
|
29
28
|
componentRegistry = _ref.componentRegistry,
|
|
29
|
+
grid = _ref.grid,
|
|
30
30
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
31
31
|
|
|
32
32
|
var form = useForm({
|
|
@@ -38,35 +38,33 @@ export var FormBase = /*#__PURE__*/React.forwardRef(function FormBase(_ref, ref)
|
|
|
38
38
|
criteriaMode: criteriaMode
|
|
39
39
|
});
|
|
40
40
|
var handleSubmit = useCallback(function (data) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (errors) {
|
|
44
|
-
for (var key in errors) {
|
|
45
|
-
form.setError(key, errors[key]);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
41
|
+
onSubmit && onSubmit(data);
|
|
48
42
|
}, [onSubmit]);
|
|
49
43
|
var ctx = {
|
|
50
44
|
fieldsMap: fieldsMap,
|
|
51
45
|
fieldsetsMap: fieldsetsMap,
|
|
52
46
|
control: form.control,
|
|
53
47
|
register: form.register,
|
|
48
|
+
watch: form.watch,
|
|
54
49
|
registerField: registerField,
|
|
55
|
-
errors: form.errors,
|
|
50
|
+
errors: form.formState.errors,
|
|
51
|
+
formState: form.formState,
|
|
56
52
|
reset: form.reset,
|
|
53
|
+
trigger: form.trigger,
|
|
54
|
+
getFieldState: form.getFieldState,
|
|
55
|
+
setValue: form.setValue,
|
|
56
|
+
clearErrors: form.clearErrors,
|
|
57
|
+
getValues: form.getValues,
|
|
58
|
+
unregister: form.unregister,
|
|
57
59
|
componentRegistry: componentRegistry
|
|
58
60
|
};
|
|
59
61
|
return /*#__PURE__*/React.createElement(FormContext.Provider, {
|
|
60
62
|
value: ctx
|
|
61
|
-
}, /*#__PURE__*/React.createElement(
|
|
63
|
+
}, /*#__PURE__*/React.createElement(Form, _extends({
|
|
64
|
+
grid: grid,
|
|
62
65
|
onSubmit: form.handleSubmit(handleSubmit),
|
|
63
66
|
ref: ref
|
|
64
|
-
}, props),
|
|
65
|
-
container: true
|
|
66
|
-
}, /*#__PURE__*/React.createElement(Grid, {
|
|
67
|
-
item: true,
|
|
68
|
-
xs: 12
|
|
69
|
-
}, children))));
|
|
67
|
+
}, props), children));
|
|
70
68
|
});
|
|
71
69
|
export var FormBuilder = /*#__PURE__*/React.forwardRef(function FormBuilder(_ref2, ref) {
|
|
72
70
|
var _ref2$fields = _ref2.fields,
|
|
@@ -83,11 +81,13 @@ export var FormBuilder = /*#__PURE__*/React.forwardRef(function FormBuilder(_ref
|
|
|
83
81
|
_ref2$shouldFocusErro = _ref2.shouldFocusError,
|
|
84
82
|
shouldFocusError = _ref2$shouldFocusErro === void 0 ? true : _ref2$shouldFocusErro,
|
|
85
83
|
_ref2$criteriaMode = _ref2.criteriaMode,
|
|
86
|
-
criteriaMode = _ref2$criteriaMode === void 0 ? '
|
|
84
|
+
criteriaMode = _ref2$criteriaMode === void 0 ? 'all' : _ref2$criteriaMode,
|
|
87
85
|
_ref2$auto = _ref2.auto,
|
|
88
86
|
auto = _ref2$auto === void 0 ? false : _ref2$auto,
|
|
89
87
|
validatorRegistry = _ref2.validatorRegistry,
|
|
90
88
|
componentRegistry = _ref2.componentRegistry,
|
|
89
|
+
_ref2$grid = _ref2.grid,
|
|
90
|
+
grid = _ref2$grid === void 0 ? false : _ref2$grid,
|
|
91
91
|
props = _objectWithoutProperties(_ref2, _excluded2);
|
|
92
92
|
|
|
93
93
|
var fieldsState = useRef(fields);
|
|
@@ -96,7 +96,17 @@ export var FormBuilder = /*#__PURE__*/React.forwardRef(function FormBuilder(_ref
|
|
|
96
96
|
}, []);
|
|
97
97
|
var schema = useValidationSchema(fieldsState, validatorRegistry);
|
|
98
98
|
var registerField = useCallback(function (field) {
|
|
99
|
-
|
|
99
|
+
var fieldIndex = fieldsState.current.findIndex(function (f) {
|
|
100
|
+
return f.key === field.key;
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
if (fieldIndex > -1) {
|
|
104
|
+
fieldsState.current[fieldIndex] = field;
|
|
105
|
+
} else {
|
|
106
|
+
fieldsState.current.push(field);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
setFieldsState(fieldsState.current);
|
|
100
110
|
}, []);
|
|
101
111
|
var resolver;
|
|
102
112
|
var fieldsMap;
|
|
@@ -142,7 +152,8 @@ export var FormBuilder = /*#__PURE__*/React.forwardRef(function FormBuilder(_ref
|
|
|
142
152
|
criteriaMode: criteriaMode,
|
|
143
153
|
onSubmit: onSubmit,
|
|
144
154
|
componentRegistry: componentRegistry,
|
|
145
|
-
ref: ref
|
|
155
|
+
ref: ref,
|
|
156
|
+
grid: grid
|
|
146
157
|
}, props), fieldChildren, children);
|
|
147
158
|
});
|
|
148
159
|
export default FormBuilder;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import MultiplicityField from '@digigov/form/MultiplicityField';
|
|
2
|
+
export default {
|
|
3
|
+
title: 'Digigov Form/MultiplicityField',
|
|
4
|
+
component: MultiplicityField
|
|
5
|
+
};
|
|
6
|
+
export * from '@digigov/form/MultiplicityField/__stories__/Default';
|
|
7
|
+
export * from '@digigov/form/MultiplicityField/__stories__/WithMinLength';
|
|
8
|
+
export * from '@digigov/form/MultiplicityField/__stories__/WithMaxLength';
|
|
9
|
+
export * from '@digigov/form/MultiplicityField/__stories__/WithMinAndMaxLength';
|
|
10
|
+
export * from '@digigov/form/MultiplicityField/__stories__/WithExactLength';
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import React, { Suspense } from 'react';
|
|
3
|
+
import FormBuilder, { Field } from '@digigov/form';
|
|
4
|
+
import { Button } from '@digigov/ui/core';
|
|
5
|
+
var fields = [{
|
|
6
|
+
key: 'string',
|
|
7
|
+
type: 'string',
|
|
8
|
+
label: {
|
|
9
|
+
primary: 'Πεδίο 1',
|
|
10
|
+
secondary: 'Το multiplicity field είναι ένα πεδίο οπότε φαίνεται και είναι μέρος της φόρμας'
|
|
11
|
+
}
|
|
12
|
+
}, {
|
|
13
|
+
key: 'multiplicity',
|
|
14
|
+
type: 'array',
|
|
15
|
+
multiplicity: true,
|
|
16
|
+
label: {
|
|
17
|
+
primary: 'Συνυπογράφοντες',
|
|
18
|
+
secondary: 'Οι συνυπογράφοντες είναι άνθρωποι σαν και εμάς'
|
|
19
|
+
},
|
|
20
|
+
extra: {
|
|
21
|
+
border: true,
|
|
22
|
+
label: {
|
|
23
|
+
object: {
|
|
24
|
+
title: 'Συνυπογράφοντας',
|
|
25
|
+
title_added: 'Οι συνυπογράφοντες που έχετε προσθέσει',
|
|
26
|
+
add: 'Προσθήκη',
|
|
27
|
+
"delete": 'Αφαίρεση συνυπογράφοντος'
|
|
28
|
+
},
|
|
29
|
+
question: {
|
|
30
|
+
title: 'Θέλετε να προσθέσετε επιπλέον συνυπογράφοντες;',
|
|
31
|
+
objectLabel: {
|
|
32
|
+
primary: 'Προσθήκη νέου συνυπογράφοντα',
|
|
33
|
+
secondary: 'Συμπληρώστε τα στοιχεία και μετά πατήστε «Προσθήκη»'
|
|
34
|
+
},
|
|
35
|
+
yes: 'Ναι',
|
|
36
|
+
no: 'Όχι'
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
of: {
|
|
40
|
+
type: 'object',
|
|
41
|
+
label: {
|
|
42
|
+
primary: 'Στοιχεία συνυπογράφοντα',
|
|
43
|
+
secondary: 'Δείτε και αλλάξτε τα στοιχεία του συνυπογράφοντα'
|
|
44
|
+
},
|
|
45
|
+
extra: {
|
|
46
|
+
fields: [{
|
|
47
|
+
key: 'afm',
|
|
48
|
+
type: 'afm',
|
|
49
|
+
required: true,
|
|
50
|
+
label: {
|
|
51
|
+
primary: 'ΑΦΜ'
|
|
52
|
+
}
|
|
53
|
+
}, {
|
|
54
|
+
key: 'firstName',
|
|
55
|
+
required: true,
|
|
56
|
+
type: 'string',
|
|
57
|
+
label: {
|
|
58
|
+
primary: 'Όνομα'
|
|
59
|
+
}
|
|
60
|
+
}, {
|
|
61
|
+
key: 'lastName',
|
|
62
|
+
required: true,
|
|
63
|
+
type: 'string',
|
|
64
|
+
label: {
|
|
65
|
+
primary: 'Επώνυμο'
|
|
66
|
+
}
|
|
67
|
+
}]
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}, {
|
|
72
|
+
key: 'phonenumber',
|
|
73
|
+
type: 'phone_number',
|
|
74
|
+
required: true,
|
|
75
|
+
label: {
|
|
76
|
+
primary: 'Πεδίο 2',
|
|
77
|
+
secondary: 'Το multiplicity field είναι ένα πεδίο οπότε φαίνεται και είναι μέρος της φόρμας'
|
|
78
|
+
}
|
|
79
|
+
}];
|
|
80
|
+
|
|
81
|
+
var _ref = /*#__PURE__*/React.createElement(Button, {
|
|
82
|
+
type: "submit"
|
|
83
|
+
}, "\u03A3\u03C5\u03BD\u03AD\u03C7\u03B5\u03B9\u03B1");
|
|
84
|
+
|
|
85
|
+
export var Default = function Default() {
|
|
86
|
+
return /*#__PURE__*/React.createElement(Suspense, {
|
|
87
|
+
fallback: "loading"
|
|
88
|
+
}, /*#__PURE__*/React.createElement(FormBuilder, {
|
|
89
|
+
onSubmit: function onSubmit(data) {
|
|
90
|
+
debugger;
|
|
91
|
+
console.log(data);
|
|
92
|
+
}
|
|
93
|
+
}, /*#__PURE__*/React.createElement(Field, _extends({
|
|
94
|
+
name: "string"
|
|
95
|
+
}, fields[0])), /*#__PURE__*/React.createElement(Field, _extends({
|
|
96
|
+
name: "multiplicity"
|
|
97
|
+
}, fields[1])), /*#__PURE__*/React.createElement(Field, _extends({
|
|
98
|
+
name: "phonenumber"
|
|
99
|
+
}, fields[2])), _ref));
|
|
100
|
+
};
|