@digigov/form 2.0.0-d0adc9fb → 2.0.0-d2ffc726
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/Field/ErrorGroup/index.js +48 -0
- package/{inputs/inputsScenarios → Field/ErrorGroup}/package.json +1 -1
- package/Field/ErrorGroup.d.ts +15 -0
- package/Field/ErrorGroup.js.map +7 -0
- package/Field/FieldBase/index.js +37 -26
- package/Field/FieldBase.d.ts +1 -1
- package/Field/FieldBase.js.map +2 -2
- package/Field/FieldBaseContainer/index.js +37 -17
- package/Field/FieldBaseContainer.d.ts +2 -2
- package/Field/FieldBaseContainer.js.map +2 -2
- package/Field/FieldConditional/index.js +4 -0
- package/Field/FieldConditional.d.ts +1 -1
- package/Field/FieldConditional.js.map +2 -2
- package/Field/index.d.ts +1 -1
- package/Field/index.js +24 -28
- package/Field/index.js.map +2 -2
- package/Field/types.d.ts +23 -12
- package/Field/utils/evaluateFieldWithConditions.d.ts +2 -2
- package/Field/utils/evaluateFieldWithConditions.js.map +2 -2
- package/Field/utils/resolveField/index.js +35 -0
- package/Field/utils/{calculateField → resolveField}/package.json +1 -1
- package/Field/utils/resolveField.d.ts +3 -0
- package/Field/utils/resolveField.js.map +7 -0
- package/Field/utils/useField/index.js +12 -3
- package/Field/utils/useField.d.ts +1 -1
- package/Field/utils/useField.js.map +2 -2
- package/FieldArray/BaseFieldArray/index.js +76 -0
- package/FieldArray/BaseFieldArray/package.json +6 -0
- package/FieldArray/BaseFieldArray.d.ts +5 -0
- package/FieldArray/BaseFieldArray.js.map +7 -0
- package/FieldArray/FieldArray.stories.d.ts +2 -0
- package/FieldArray/FormDialog/ArrayDisplay/ArrayContainerDisplay/index.js +23 -0
- package/FieldArray/FormDialog/ArrayDisplay/ArrayContainerDisplay/package.json +6 -0
- package/FieldArray/FormDialog/ArrayDisplay/ArrayContainerDisplay.d.ts +9 -0
- package/FieldArray/FormDialog/ArrayDisplay/ArrayContainerDisplay.js.map +7 -0
- package/FieldArray/FormDialog/ArrayDisplay/ArrayDisplay.stories.d.ts +13 -0
- package/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay/index.js +184 -0
- package/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay/package.json +6 -0
- package/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay.d.ts +26 -0
- package/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay.js.map +7 -0
- package/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader/index.js +11 -0
- package/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader/package.json +6 -0
- package/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader.d.ts +5 -0
- package/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader.js.map +7 -0
- package/FieldArray/FormDialog/ArrayDisplay/__stories__/Cards.d.ts +2 -0
- package/FieldArray/FormDialog/ArrayDisplay/__stories__/Default.d.ts +2 -0
- package/FieldArray/FormDialog/ArrayDisplay/__stories__/ReadOnly.d.ts +2 -0
- package/FieldArray/FormDialog/ArrayDisplay/__stories__/ReadOnlyCards.d.ts +2 -0
- package/FieldArray/FormDialog/ArrayDisplay/__stories__/Sortable.d.ts +2 -0
- package/FieldArray/FormDialog/ArrayDisplay/__stories__/SortableCards.d.ts +2 -0
- package/FieldArray/FormDialog/ArrayDisplay/index.d.ts +15 -0
- package/FieldArray/FormDialog/ArrayDisplay/index.js +57 -0
- package/FieldArray/FormDialog/ArrayDisplay/index.js.map +7 -0
- package/{inputs/Input/inputsInputScenarios → FieldArray/FormDialog/ArrayDisplay}/package.json +1 -1
- package/FieldArray/FormDialog/ArrayEditModal/index.js +158 -0
- package/FieldArray/FormDialog/ArrayEditModal/package.json +6 -0
- package/FieldArray/FormDialog/ArrayEditModal.d.ts +26 -0
- package/FieldArray/FormDialog/ArrayEditModal.js.map +7 -0
- package/FieldArray/FormDialog/index.d.ts +19 -0
- package/FieldArray/FormDialog/index.js +213 -257
- package/FieldArray/FormDialog/index.js.map +7 -0
- package/FieldArray/__stories__/CardsWithError.d.ts +15 -0
- package/FieldArray/__stories__/Default.d.ts +1 -1
- package/FieldArray/__stories__/WithExactLength.d.ts +1 -1
- package/FieldArray/__stories__/WithModal.d.ts +2 -0
- package/FieldArray/index.d.ts +5 -2
- package/FieldArray/index.js +41 -57
- package/FieldArray/index.js.map +2 -2
- package/FieldObject/index.d.ts +7 -4
- package/FieldObject/index.js +30 -27
- package/FieldObject/index.js.map +2 -2
- package/Fieldset/FieldsetWithContext.js.map +1 -1
- package/Fieldset/index.d.ts +1 -1
- package/Fieldset/index.js.map +1 -1
- package/Fieldset/types.d.ts +2 -2
- package/FormBuilder/FormBuilder.stories.d.ts +4 -0
- package/FormBuilder/__stories__/AutoErrorGrouping.d.ts +3 -0
- package/FormBuilder/__stories__/Default.d.ts +1 -1
- package/FormBuilder/__stories__/ErrorGrouping.d.ts +3 -0
- package/FormBuilder/index.d.ts +2 -2
- package/FormBuilder/index.js +186 -80
- package/FormBuilder/index.js.map +2 -2
- package/FormContext/index.js +6 -2
- package/FormContext.d.ts +3 -2
- package/FormContext.js.map +2 -2
- package/MultiplicityField/MultiplicityField.stories.d.ts +2 -0
- package/MultiplicityField/__stories__/Default.d.ts +1 -1
- package/MultiplicityField/__stories__/PreviewDisplay.d.ts +1 -1
- package/MultiplicityField/__stories__/WithExactLength.d.ts +1 -1
- package/MultiplicityField/__stories__/WithMaxLength.d.ts +1 -1
- package/MultiplicityField/__stories__/WithMinAndMaxLength.d.ts +1 -1
- package/MultiplicityField/__stories__/WithMinLength.d.ts +1 -1
- package/MultiplicityField/add-objects/index.js +12 -19
- package/MultiplicityField/add-objects.d.ts +1 -1
- package/MultiplicityField/add-objects.js.map +2 -2
- package/MultiplicityField/index.d.ts +2 -2
- package/MultiplicityField/index.js +6 -2
- package/MultiplicityField/index.js.map +2 -2
- package/MultiplicityField/types.d.ts +3 -2
- package/Questions/Questions.d.ts +1 -1
- package/Questions/Questions.js.map +1 -1
- package/Questions/Questions.stories.d.ts +2 -0
- package/Questions/QuestionsContext.d.ts +1 -1
- package/Questions/QuestionsContext.js.map +1 -1
- package/Questions/Step/Step.d.ts +1 -1
- package/Questions/Step/Step.js.map +1 -1
- package/Questions/Step/StepArrayReview.d.ts +1 -1
- package/Questions/Step/StepArrayReview.js.map +1 -1
- package/Questions/Step/StepContext.d.ts +1 -1
- package/Questions/Step/StepContext.js.map +1 -1
- package/Questions/Step/StepDescription.d.ts +1 -1
- package/Questions/Step/StepDescription.js.map +2 -2
- package/Questions/Step/StepForm.d.ts +2 -2
- package/Questions/Step/StepForm.js.map +1 -1
- package/Questions/Step/StepQuote.d.ts +1 -1
- package/Questions/Step/StepQuote.js.map +2 -2
- package/Questions/Step/StepTitle.d.ts +1 -1
- package/Questions/Step/StepTitle.js.map +2 -2
- package/Questions/Step/getAddMoreFields.d.ts +2 -2
- package/Questions/Step/getAddMoreFields.js.map +1 -1
- package/Questions/Step/types.d.ts +1 -1
- package/Questions/__stories__/Default.d.ts +1 -1
- package/Questions/getNextStep.d.ts +1 -1
- package/Questions/getNextStep.js.map +1 -1
- package/Questions/types.d.ts +1 -1
- package/cjs/Field/ErrorGroup/index.js +82 -0
- package/cjs/Field/ErrorGroup.js.map +7 -0
- package/cjs/Field/FieldBase/index.js +36 -25
- package/cjs/Field/FieldBase.js.map +2 -2
- package/cjs/Field/FieldBaseContainer/index.js +36 -16
- package/cjs/Field/FieldBaseContainer.js.map +3 -3
- package/cjs/Field/FieldConditional/index.js +4 -0
- package/cjs/Field/FieldConditional.js.map +2 -2
- package/cjs/Field/index.js +24 -25
- package/cjs/Field/index.js.map +2 -2
- package/cjs/Field/types.js.map +1 -1
- package/cjs/Field/utils/evaluateFieldWithConditions.js.map +2 -2
- package/cjs/Field/utils/resolveField/index.js +55 -0
- package/cjs/Field/utils/resolveField.js.map +7 -0
- package/cjs/Field/utils/useField/index.js +12 -3
- package/cjs/Field/utils/useField.js.map +2 -2
- package/cjs/FieldArray/BaseFieldArray/index.js +109 -0
- package/cjs/FieldArray/BaseFieldArray.js.map +7 -0
- package/cjs/FieldArray/FormDialog/ArrayDisplay/ArrayContainerDisplay/index.js +56 -0
- package/cjs/FieldArray/FormDialog/ArrayDisplay/ArrayContainerDisplay.js.map +7 -0
- package/cjs/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay/index.js +209 -0
- package/cjs/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay.js.map +7 -0
- package/cjs/{locales/el → FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader}/index.js +16 -7
- package/cjs/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader.js.map +7 -0
- package/cjs/FieldArray/FormDialog/ArrayDisplay/index.js +90 -0
- package/cjs/FieldArray/FormDialog/ArrayDisplay/index.js.map +7 -0
- package/cjs/FieldArray/FormDialog/ArrayEditModal/index.js +186 -0
- package/cjs/FieldArray/FormDialog/ArrayEditModal.js.map +7 -0
- package/cjs/FieldArray/FormDialog/index.js +204 -243
- package/cjs/FieldArray/FormDialog/index.js.map +7 -0
- package/cjs/FieldArray/index.js +40 -56
- package/cjs/FieldArray/index.js.map +3 -3
- package/cjs/FieldObject/index.js +30 -24
- package/cjs/FieldObject/index.js.map +2 -2
- package/cjs/Fieldset/FieldsetWithContext.js.map +1 -1
- package/cjs/Fieldset/index.js.map +1 -1
- package/cjs/Fieldset/types.js.map +1 -1
- package/cjs/FormBuilder/index.js +188 -82
- package/cjs/FormBuilder/index.js.map +3 -3
- package/cjs/FormContext/index.js +7 -2
- package/cjs/FormContext.js.map +2 -2
- package/cjs/MultiplicityField/add-objects/index.js +11 -13
- package/cjs/MultiplicityField/add-objects.js.map +2 -2
- package/cjs/MultiplicityField/index.js +6 -2
- package/cjs/MultiplicityField/index.js.map +2 -2
- package/cjs/MultiplicityField/types.js.map +1 -1
- package/cjs/Questions/Questions.js.map +1 -1
- package/cjs/Questions/QuestionsContext.js.map +1 -1
- package/cjs/Questions/Step/Step.js.map +1 -1
- package/cjs/Questions/Step/StepArrayReview.js.map +1 -1
- package/cjs/Questions/Step/StepContext.js.map +1 -1
- package/cjs/Questions/Step/StepDescription.js.map +2 -2
- package/cjs/Questions/Step/StepForm.js.map +1 -1
- package/cjs/Questions/Step/StepQuote.js.map +2 -2
- package/cjs/Questions/Step/StepTitle.js.map +2 -2
- package/cjs/Questions/Step/getAddMoreFields.js.map +1 -1
- package/cjs/Questions/Step/types.js.map +1 -1
- package/cjs/Questions/getNextStep.js.map +1 -1
- package/cjs/Questions/types.js.map +1 -1
- package/cjs/hooks/useFieldFocusManager/index.js +135 -0
- package/cjs/hooks/useFieldFocusManager.js.map +7 -0
- package/cjs/hooks/utils/index.js +98 -0
- package/cjs/hooks/utils.js.map +7 -0
- package/cjs/inputs/AutoCompleteInput/index.js.map +2 -2
- package/cjs/inputs/Checkboxes/index.js +67 -62
- package/cjs/inputs/Checkboxes/index.js.map +2 -2
- package/cjs/inputs/DateInput/index.js +54 -19
- package/cjs/inputs/DateInput/index.js.map +2 -2
- package/cjs/inputs/DateTimeInput/index.js +83 -39
- package/cjs/inputs/DateTimeInput/index.js.map +2 -2
- package/cjs/inputs/FileInput/index.js +68 -30
- package/cjs/inputs/FileInput/index.js.map +2 -2
- package/cjs/inputs/ImageInput/__stories__/logo.d/index.js +1 -0
- package/cjs/inputs/ImageInput/__stories__/logo.d.js.map +7 -0
- package/cjs/inputs/ImageInput/index.js +42 -10
- package/cjs/inputs/ImageInput/index.js.map +2 -2
- package/cjs/inputs/Input/index.js +55 -55
- package/cjs/inputs/Input/index.js.map +2 -2
- package/cjs/inputs/Label/index.js.map +1 -1
- package/cjs/inputs/OtpInput/index.js +36 -30
- package/cjs/inputs/OtpInput/index.js.map +2 -2
- package/cjs/inputs/Radio/index.js +5 -4
- package/cjs/inputs/Radio/index.js.map +3 -3
- package/cjs/inputs/Select/index.js +5 -3
- package/cjs/inputs/Select/index.js.map +2 -2
- package/cjs/{Field/utils → inputs/registry}/index.js +7 -5
- package/cjs/inputs/registry.js.map +7 -0
- package/cjs/lazy/index.js +16 -10
- package/cjs/lazy.js.map +2 -2
- package/cjs/registry/index.js +31 -15
- package/cjs/registry.js.map +2 -2
- package/cjs/types.js.map +1 -1
- package/cjs/utils/index.js +20 -6
- package/cjs/utils.js.map +2 -2
- package/cjs/validators/index.js +33 -19
- package/cjs/validators/index.js.map +2 -2
- package/cjs/validators/types.js.map +1 -1
- package/cjs/validators/utils/amka/index.js +60 -0
- package/cjs/validators/utils/amka.js.map +7 -0
- package/cjs/validators/utils/date/index.js +26 -3
- package/cjs/validators/utils/date.js.map +2 -2
- package/cjs/validators/utils/datetime/index.js +118 -24
- package/cjs/validators/utils/datetime.js.map +2 -2
- package/cjs/validators/utils/email/index.js +39 -0
- package/cjs/validators/utils/email.js.map +7 -0
- package/cjs/validators/utils/file/index.js +30 -17
- package/cjs/validators/utils/file.js.map +2 -2
- package/cjs/validators/utils/iban.js.map +1 -1
- package/cjs/validators/utils/image.js.map +1 -1
- package/cjs/validators/utils/index.js +5 -1
- package/cjs/validators/utils/index.js.map +2 -2
- package/cjs/validators/utils/int/index.js +1 -1
- package/cjs/validators/utils/int.js.map +2 -2
- package/cjs/validators/utils/number/index.js +1 -1
- package/cjs/validators/utils/number.js.map +2 -2
- package/cjs/validators/utils/otp.js.map +1 -1
- package/cjs/validators/utils/phone.js.map +1 -1
- package/cjs/validators/utils/postal_code.js.map +1 -1
- package/cjs/validators/utils/text_limit.js.map +1 -1
- package/hooks/useFieldFocusManager/index.js +116 -0
- package/hooks/useFieldFocusManager/package.json +6 -0
- package/hooks/useFieldFocusManager.d.ts +25 -0
- package/hooks/useFieldFocusManager.js.map +7 -0
- package/hooks/utils/index.js +73 -0
- package/{Field → hooks}/utils/package.json +1 -1
- package/hooks/utils.d.ts +18 -0
- package/hooks/utils.js.map +7 -0
- package/index.js +1 -1
- package/inputs/AutoCompleteInput/AutoComplete.stories.d.ts +2 -0
- package/inputs/AutoCompleteInput/__stories__/Default.d.ts +1 -1
- package/inputs/AutoCompleteInput/__stories__/Multiple.d.ts +1 -1
- package/inputs/AutoCompleteInput/index.d.ts +3 -3
- package/inputs/AutoCompleteInput/index.js +1 -3
- package/inputs/AutoCompleteInput/index.js.map +2 -2
- package/inputs/Checkboxes/Checkboxes.stories.d.ts +2 -0
- package/inputs/Checkboxes/__stories__/Conditional.d.ts +1 -1
- package/inputs/Checkboxes/__stories__/Default.d.ts +1 -1
- package/inputs/Checkboxes/__stories__/WithDivider.d.ts +1 -1
- package/inputs/Checkboxes/index.d.ts +3 -3
- package/inputs/Checkboxes/index.js +67 -62
- package/inputs/Checkboxes/index.js.map +2 -2
- package/inputs/DateInput/DateInput.stories.d.ts +6 -0
- package/inputs/DateInput/__stories__/Default.d.ts +1 -1
- package/inputs/DateInput/__stories__/WithDefaultValue.d.ts +3 -0
- package/inputs/DateInput/__stories__/WithInitialValue.d.ts +3 -0
- package/inputs/DateInput/__stories__/WithWrongDefaultValue.d.ts +3 -0
- package/inputs/DateInput/__stories__/WithWrongInitialValue.d.ts +3 -0
- package/inputs/DateInput/index.d.ts +2 -5
- package/inputs/DateInput/index.js +55 -20
- package/inputs/DateInput/index.js.map +2 -2
- package/inputs/DateTimeInput/DateTimeInput.stories.d.ts +10 -3
- package/inputs/DateTimeInput/__stories__/Default.d.ts +1 -1
- package/inputs/DateTimeInput/__stories__/WithDefaultValue.d.ts +3 -0
- package/inputs/DateTimeInput/__stories__/WithInitialValue.d.ts +3 -0
- package/inputs/DateTimeInput/__stories__/WithWrongDefaultValue.d.ts +3 -0
- package/inputs/DateTimeInput/__stories__/WithWrongInitialValue.d.ts +3 -0
- package/inputs/DateTimeInput/index.d.ts +2 -5
- package/inputs/DateTimeInput/index.js +84 -40
- package/inputs/DateTimeInput/index.js.map +2 -2
- package/inputs/FileInput/FileInput.stories.d.ts +3 -0
- package/inputs/FileInput/__stories__/Default.d.ts +1 -1
- package/inputs/FileInput/__stories__/WithBorderAndLink.d.ts +3 -0
- package/inputs/FileInput/index.d.ts +18 -2
- package/inputs/FileInput/index.js +69 -31
- package/inputs/FileInput/index.js.map +2 -2
- package/inputs/ImageInput/ImageInput.stories.d.ts +4 -1
- package/inputs/ImageInput/__stories__/Default.d.ts +1 -1
- package/inputs/ImageInput/__stories__/MaxSize.d.ts +1 -1
- package/inputs/ImageInput/__stories__/WithInitialValues.d.ts +3 -0
- package/inputs/ImageInput/__stories__/WithInvalidImageDimension.d.ts +1 -1
- package/inputs/ImageInput/__stories__/logo.d/index.js +1 -0
- package/inputs/ImageInput/__stories__/logo.d/package.json +6 -0
- package/inputs/ImageInput/__stories__/logo.d.js.map +7 -0
- package/inputs/ImageInput/index.d.ts +10 -2
- package/inputs/ImageInput/index.js +43 -11
- package/inputs/ImageInput/index.js.map +2 -2
- package/inputs/Input/Input.stories.d.ts +5 -0
- package/inputs/Input/__stories__/AFM.d.ts +1 -1
- package/inputs/Input/__stories__/AMKA.d.ts +3 -0
- package/inputs/Input/__stories__/Boolean.d.ts +1 -1
- package/inputs/Input/__stories__/Email.d.ts +3 -0
- package/inputs/Input/__stories__/IBAN.d.ts +1 -1
- package/inputs/Input/__stories__/Integer.d.ts +1 -1
- package/inputs/Input/__stories__/LandlineNumber.d.ts +1 -1
- package/inputs/Input/__stories__/MobilePhone.d.ts +1 -1
- package/inputs/Input/__stories__/PhoneNumber.d.ts +1 -1
- package/inputs/Input/__stories__/PostalCode.d.ts +1 -1
- package/inputs/Input/__stories__/String.d.ts +1 -1
- package/inputs/Input/__stories__/StringWithTrimValidation.d.ts +3 -0
- package/inputs/Input/__stories__/TextWithLimit.d.ts +1 -1
- package/inputs/Input/index.d.ts +4 -3
- package/inputs/Input/index.js +55 -55
- package/inputs/Input/index.js.map +2 -2
- package/inputs/Label/Label.stories.d.ts +2 -0
- package/inputs/Label/__stories__/Default.d.ts +1 -1
- package/inputs/Label/index.d.ts +1 -1
- package/inputs/Label/index.js.map +1 -1
- package/inputs/OtpInput/OtpInput.stories.d.ts +2 -0
- package/inputs/OtpInput/__stories__/Default.d.ts +1 -1
- package/inputs/OtpInput/index.d.ts +1 -5
- package/inputs/OtpInput/index.js +36 -30
- package/inputs/OtpInput/index.js.map +2 -2
- package/inputs/Radio/Radio.stories.d.ts +2 -0
- package/inputs/Radio/__stories__/Conditional.d.ts +1 -1
- package/inputs/Radio/__stories__/Default.d.ts +1 -1
- package/inputs/Radio/__stories__/WithDivider.d.ts +1 -1
- package/inputs/Radio/index.d.ts +4 -4
- package/inputs/Radio/index.js +5 -4
- package/inputs/Radio/index.js.map +3 -3
- package/inputs/Select/Select.stories.d.ts +2 -0
- package/inputs/Select/__stories__/Default.d.ts +1 -1
- package/inputs/Select/index.d.ts +4 -3
- package/inputs/Select/index.js +5 -3
- package/inputs/Select/index.js.map +2 -2
- package/{Field/utils → inputs/registry}/index.js +4 -2
- package/{locales/el → inputs/registry}/package.json +1 -1
- package/{Field/utils/index.d.ts → inputs/registry.d.ts} +2 -1
- package/inputs/registry.js.map +7 -0
- package/lazy/index.js +16 -10
- package/package.json +8 -8
- package/registry/index.js +31 -15
- package/src/Field/ErrorGroup.tsx +84 -0
- package/src/Field/FieldBase.tsx +40 -26
- package/src/Field/FieldBaseContainer.tsx +69 -47
- package/src/Field/FieldConditional.tsx +5 -1
- package/src/Field/doc.mdx +202 -1
- package/src/Field/index.tsx +27 -37
- package/src/Field/types.tsx +24 -14
- package/src/Field/utils/evaluateFieldWithConditions.ts +5 -2
- package/src/Field/utils/resolveField.ts +58 -0
- package/src/Field/utils/useField.ts +12 -2
- package/src/FieldArray/BaseFieldArray.tsx +97 -0
- package/src/FieldArray/FieldArray.stories.js +2 -0
- package/src/FieldArray/FormDialog/ArrayDisplay/ArrayContainerDisplay.tsx +45 -0
- package/src/FieldArray/FormDialog/ArrayDisplay/ArrayDisplay.stories.js +14 -0
- package/src/FieldArray/FormDialog/ArrayDisplay/ArrayItemDisplay.tsx +335 -0
- package/src/FieldArray/FormDialog/ArrayDisplay/ArrayItemHeader.tsx +15 -0
- package/src/FieldArray/FormDialog/ArrayDisplay/__stories__/Cards.tsx +88 -0
- package/src/FieldArray/FormDialog/ArrayDisplay/__stories__/Default.tsx +93 -0
- package/src/FieldArray/FormDialog/ArrayDisplay/__stories__/ReadOnly.tsx +79 -0
- package/src/FieldArray/FormDialog/ArrayDisplay/__stories__/ReadOnlyCards.tsx +75 -0
- package/src/FieldArray/FormDialog/ArrayDisplay/__stories__/Sortable.tsx +93 -0
- package/src/FieldArray/FormDialog/ArrayDisplay/__stories__/SortableCards.tsx +88 -0
- package/src/FieldArray/FormDialog/ArrayDisplay/index.test.tsx +44 -0
- package/src/FieldArray/FormDialog/ArrayDisplay/index.tsx +67 -0
- package/src/FieldArray/FormDialog/ArrayEditModal.tsx +243 -0
- package/src/FieldArray/FormDialog/index.tsx +304 -0
- package/src/FieldArray/__stories__/CardsWithError.tsx +124 -0
- package/src/FieldArray/__stories__/Default.tsx +1 -1
- package/src/FieldArray/__stories__/WithExactLength.tsx +15 -78
- package/src/FieldArray/__stories__/WithModal.tsx +160 -0
- package/src/FieldArray/__tests__/fieldset-multiplicity.spec.tsx +271 -0
- package/src/FieldArray/__tests__/multiplicity-attachment.spec.tsx +280 -0
- package/src/FieldArray/__tests__/multiplicity-optional.spec.tsx +232 -0
- package/src/FieldArray/__tests__/multiplicity-required.spec.tsx +170 -0
- package/src/FieldArray/__tests__/nested-fieldset-multiplicity.spec.tsx +627 -0
- package/src/FieldArray/__tests__/preference-multiple-choice.spec.tsx +222 -0
- package/src/FieldArray/index.spec.tsx +355 -0
- package/src/FieldArray/index.test.tsx +12 -0
- package/src/FieldArray/index.tsx +49 -72
- package/src/FieldObject/index.tsx +40 -34
- package/src/Fieldset/FieldsetWithContext.tsx +1 -1
- package/src/Fieldset/index.tsx +1 -1
- package/src/Fieldset/types.tsx +2 -2
- package/src/FormBuilder/FormBuilder.stories.js +5 -0
- package/src/FormBuilder/__stories__/AutoErrorGrouping.tsx +63 -0
- package/src/FormBuilder/__stories__/Default.tsx +1 -1
- package/src/FormBuilder/__stories__/ErrorGrouping.tsx +43 -0
- package/src/FormBuilder/doc.mdx +9 -4
- package/src/FormBuilder/index.test.tsx +12 -0
- package/src/FormBuilder/index.tsx +223 -89
- package/src/FormBuilder/interaction.test.tsx +40 -0
- package/src/FormBuilder/scenarios.test.tsx +1002 -129
- package/src/FormContext.tsx +7 -2
- package/src/MultiplicityField/MultiplicityField.stories.js +3 -0
- package/src/MultiplicityField/__stories__/Default.tsx +1 -1
- package/src/MultiplicityField/__stories__/PreviewDisplay.tsx +1 -1
- package/src/MultiplicityField/__stories__/WithExactLength.tsx +1 -1
- package/src/MultiplicityField/__stories__/WithMaxLength.tsx +1 -1
- package/src/MultiplicityField/__stories__/WithMinAndMaxLength.tsx +1 -1
- package/src/MultiplicityField/__stories__/WithMinLength.tsx +1 -1
- package/src/MultiplicityField/add-objects.tsx +14 -21
- package/src/MultiplicityField/doc.mdx +101 -83
- package/src/MultiplicityField/index.test.tsx +4 -0
- package/src/MultiplicityField/index.tsx +8 -3
- package/src/MultiplicityField/types.ts +6 -2
- package/src/Questions/Questions.stories.js +3 -0
- package/src/Questions/Questions.tsx +2 -2
- package/src/Questions/QuestionsContext.tsx +1 -1
- package/src/Questions/Step/Step.tsx +1 -1
- package/src/Questions/Step/StepArrayReview.tsx +2 -2
- package/src/Questions/Step/StepContext.tsx +1 -1
- package/src/Questions/Step/StepDescription.tsx +2 -1
- package/src/Questions/Step/StepForm.tsx +2 -2
- package/src/Questions/Step/StepQuote.tsx +2 -1
- package/src/Questions/Step/StepTitle.tsx +2 -1
- package/src/Questions/Step/getAddMoreFields.tsx +2 -2
- package/src/Questions/Step/types.tsx +1 -1
- package/src/Questions/__snapshots__/index.spec.tsx.snap +3 -1
- package/src/Questions/__stories__/Default.tsx +1 -1
- package/src/Questions/doc.mdx +21 -41
- package/src/Questions/getNextStep.tsx +1 -1
- package/src/Questions/index.spec.tsx +8 -0
- package/src/Questions/index.test.tsx +4 -0
- package/src/Questions/types.tsx +1 -1
- package/src/doc.mdx +26 -11
- package/src/hooks/__tests__/useFieldFocusManager.spec.tsx +1079 -0
- package/src/hooks/__tests__/utils.spec.ts +568 -0
- package/src/hooks/useFieldFocusManager.ts +162 -0
- package/src/hooks/utils.ts +122 -0
- package/src/inputs/AutoCompleteInput/AutoComplete.stories.js +3 -0
- package/src/inputs/AutoCompleteInput/__stories__/Default.tsx +1 -1
- package/src/inputs/AutoCompleteInput/__stories__/Multiple.tsx +1 -1
- package/src/inputs/AutoCompleteInput/index.test.tsx +4 -0
- package/src/inputs/AutoCompleteInput/index.tsx +4 -6
- package/src/inputs/Checkboxes/Checkboxes.stories.js +3 -0
- package/src/inputs/Checkboxes/__stories__/Conditional.tsx +1 -1
- package/src/inputs/Checkboxes/__stories__/Default.tsx +1 -1
- package/src/inputs/Checkboxes/__stories__/WithDivider.tsx +1 -1
- package/src/inputs/Checkboxes/index.test.tsx +4 -0
- package/src/inputs/Checkboxes/index.tsx +95 -90
- package/src/inputs/DateInput/DateInput.stories.js +7 -0
- package/src/inputs/DateInput/__stories__/Default.tsx +1 -1
- package/src/inputs/DateInput/__stories__/WithDefaultValue.tsx +26 -0
- package/src/inputs/DateInput/__stories__/WithInitialValue.tsx +28 -0
- package/src/inputs/DateInput/__stories__/WithWrongDefaultValue.tsx +26 -0
- package/src/inputs/DateInput/__stories__/WithWrongInitialValue.tsx +28 -0
- package/src/inputs/DateInput/index.test.tsx +20 -0
- package/src/inputs/DateInput/index.tsx +68 -20
- package/src/inputs/DateTimeInput/DateTimeInput.stories.js +12 -6
- package/src/inputs/DateTimeInput/__stories__/Default.tsx +1 -1
- package/src/inputs/DateTimeInput/__stories__/WithDefaultValue.tsx +26 -0
- package/src/inputs/DateTimeInput/__stories__/WithInitialValue.tsx +28 -0
- package/src/inputs/DateTimeInput/__stories__/WithWrongDefaultValue.tsx +26 -0
- package/src/inputs/DateTimeInput/__stories__/WithWrongInitialValue.tsx +28 -0
- package/src/inputs/DateTimeInput/index.test.tsx +27 -5
- package/src/inputs/DateTimeInput/index.tsx +97 -40
- package/src/inputs/FileInput/FileInput.stories.js +4 -0
- package/src/inputs/FileInput/__stories__/Default.tsx +1 -1
- package/src/inputs/FileInput/__stories__/WithBorderAndLink.tsx +34 -0
- package/src/inputs/FileInput/index.test.tsx +8 -0
- package/src/inputs/FileInput/index.tsx +106 -38
- package/src/inputs/ImageInput/ImageInput.stories.js +5 -1
- package/src/inputs/ImageInput/__stories__/Default.tsx +1 -1
- package/src/inputs/ImageInput/__stories__/MaxSize.tsx +3 -2
- package/src/inputs/ImageInput/__stories__/{WithInvalidImageSize.tsx → WithInitialValues.tsx} +12 -3
- package/src/inputs/ImageInput/__stories__/WithInvalidImageDimension.tsx +1 -1
- package/src/inputs/ImageInput/__stories__/logo.d.ts +4 -0
- package/src/inputs/ImageInput/__stories__/logo.png +0 -0
- package/src/inputs/ImageInput/index.test.tsx +8 -4
- package/src/inputs/ImageInput/index.tsx +101 -48
- package/src/inputs/Input/Input.stories.js +6 -0
- package/src/inputs/Input/__stories__/AFM.tsx +1 -1
- package/src/inputs/Input/__stories__/AMKA.tsx +23 -0
- package/src/inputs/Input/__stories__/Boolean.tsx +1 -1
- package/src/inputs/Input/__stories__/Email.tsx +23 -0
- package/src/inputs/Input/__stories__/IBAN.tsx +1 -1
- package/src/inputs/Input/__stories__/Integer.tsx +1 -1
- package/src/inputs/Input/__stories__/LandlineNumber.tsx +1 -1
- package/src/inputs/Input/__stories__/MobilePhone.tsx +1 -1
- package/src/inputs/Input/__stories__/PhoneNumber.tsx +1 -1
- package/src/inputs/Input/__stories__/PostalCode.tsx +1 -1
- package/src/inputs/Input/__stories__/String.tsx +1 -1
- package/src/inputs/Input/__stories__/StringWithTrimValidation.tsx +26 -0
- package/src/inputs/Input/__stories__/TextWithLimit.tsx +2 -1
- package/src/inputs/Input/index.test.tsx +16 -0
- package/src/inputs/Input/index.tsx +76 -71
- package/src/inputs/Label/Label.stories.js +3 -0
- package/src/inputs/Label/__stories__/Default.tsx +1 -1
- package/src/inputs/Label/index.test.tsx +4 -0
- package/src/inputs/Label/index.tsx +1 -1
- package/src/inputs/OtpInput/OtpInput.stories.js +3 -0
- package/src/inputs/OtpInput/__stories__/Default.tsx +1 -1
- package/src/inputs/OtpInput/index.test.tsx +4 -0
- package/src/inputs/OtpInput/index.tsx +43 -33
- package/src/inputs/Radio/Radio.stories.js +3 -0
- package/src/inputs/Radio/__stories__/Conditional.tsx +1 -1
- package/src/inputs/Radio/__stories__/Default.tsx +1 -1
- package/src/inputs/Radio/__stories__/WithDivider.tsx +1 -1
- package/src/inputs/Radio/index.test.tsx +4 -0
- package/src/inputs/Radio/index.tsx +29 -21
- package/src/inputs/Select/Select.stories.js +3 -0
- package/src/inputs/Select/__stories__/Default.tsx +1 -1
- package/src/inputs/Select/index.test.tsx +4 -0
- package/src/inputs/Select/index.tsx +10 -6
- package/src/{Field/utils/index.ts → inputs/registry.ts} +5 -1
- package/src/lazy.js +16 -10
- package/src/registry.js +31 -15
- package/src/types.tsx +14 -5
- package/src/utils.ts +30 -8
- package/src/validators/index.ts +68 -28
- package/src/validators/types.ts +1 -1
- package/src/validators/utils/amka.ts +39 -0
- package/src/validators/utils/date.ts +30 -6
- package/src/validators/utils/datetime.ts +123 -31
- package/src/validators/utils/email.ts +11 -0
- package/src/validators/utils/file.ts +35 -21
- package/src/validators/utils/iban.ts +2 -2
- package/src/validators/utils/image.ts +2 -2
- package/src/validators/utils/index.ts +6 -3
- package/src/validators/utils/int.ts +2 -2
- package/src/validators/utils/number.ts +2 -2
- package/src/validators/utils/otp.ts +2 -2
- package/src/validators/utils/phone.ts +2 -2
- package/src/validators/utils/postal_code.ts +2 -2
- package/src/validators/utils/text_limit.ts +2 -2
- package/types.d.ts +10 -4
- package/types.js.map +1 -1
- package/utils/index.js +20 -6
- package/utils.d.ts +3 -1
- package/utils.js.map +2 -2
- package/validators/index.d.ts +6 -6
- package/validators/index.js +34 -19
- package/validators/index.js.map +2 -2
- package/validators/types.d.ts +1 -1
- package/validators/utils/amka/index.js +36 -0
- package/validators/utils/amka/package.json +6 -0
- package/validators/utils/amka.d.ts +6 -0
- package/validators/utils/amka.js.map +7 -0
- package/validators/utils/date/index.js +26 -3
- package/validators/utils/date.d.ts +3 -3
- package/validators/utils/date.js.map +2 -2
- package/validators/utils/datetime/index.js +118 -24
- package/validators/utils/datetime.d.ts +3 -3
- package/validators/utils/datetime.js.map +2 -2
- package/validators/utils/email/index.js +16 -0
- package/validators/utils/email/package.json +6 -0
- package/validators/utils/email.d.ts +5 -0
- package/validators/utils/email.js.map +7 -0
- package/validators/utils/file/index.js +30 -17
- package/validators/utils/file.d.ts +2 -2
- package/validators/utils/file.js.map +2 -2
- package/validators/utils/iban.d.ts +2 -2
- package/validators/utils/iban.js.map +1 -1
- package/validators/utils/image.d.ts +2 -2
- package/validators/utils/image.js.map +1 -1
- package/validators/utils/index.d.ts +3 -2
- package/validators/utils/index.js +4 -1
- package/validators/utils/index.js.map +2 -2
- package/validators/utils/int/index.js +1 -1
- package/validators/utils/int.d.ts +1 -1
- package/validators/utils/int.js.map +2 -2
- package/validators/utils/number/index.js +1 -1
- package/validators/utils/number.d.ts +1 -1
- package/validators/utils/number.js.map +2 -2
- package/validators/utils/otp.d.ts +2 -2
- package/validators/utils/otp.js.map +1 -1
- package/validators/utils/phone.d.ts +2 -2
- package/validators/utils/phone.js.map +1 -1
- package/validators/utils/postal_code.d.ts +2 -2
- package/validators/utils/postal_code.js.map +1 -1
- package/validators/utils/text_limit.d.ts +2 -2
- package/validators/utils/text_limit.js.map +1 -1
- package/Field/utils/calculateField/index.js +0 -27
- package/Field/utils/calculateField.d.ts +0 -2
- package/Field/utils/calculateField.js.map +0 -7
- package/Field/utils/index.js.map +0 -7
- package/FieldArray/FormDialog.d.ts +0 -53
- package/FieldArray/FormDialog.js.map +0 -7
- package/FormBuilder/index.test.d.ts +0 -1
- package/FormBuilder/scenarios.test.d.ts +0 -88
- package/MultiplicityField/index.test.d.ts +0 -1
- package/Questions/index.spec.d.ts +0 -1
- package/Questions/index.test.d.ts +0 -1
- package/cjs/Field/utils/calculateField/index.js +0 -50
- package/cjs/Field/utils/calculateField.js.map +0 -7
- package/cjs/Field/utils/index.js.map +0 -7
- package/cjs/FieldArray/FormDialog.js.map +0 -7
- package/cjs/inputs/Input/inputsInputScenarios/index.js +0 -439
- package/cjs/inputs/Input/inputsInputScenarios.js.map +0 -7
- package/cjs/inputs/inputsScenarios/index.js +0 -533
- package/cjs/inputs/inputsScenarios.js.map +0 -7
- package/cjs/locales/el.js.map +0 -7
- package/inputs/AutoCompleteInput/index.test.d.ts +0 -1
- package/inputs/Checkboxes/index.test.d.ts +0 -1
- package/inputs/DateInput/index.test.d.ts +0 -1
- package/inputs/DateTimeInput/index.test.d.ts +0 -1
- package/inputs/FileInput/index.test.d.ts +0 -1
- package/inputs/ImageInput/__stories__/WithInvalidImageSize.d.ts +0 -3
- package/inputs/ImageInput/index.test.d.ts +0 -1
- package/inputs/Input/index.test.d.ts +0 -1
- package/inputs/Input/inputsInputScenarios/index.js +0 -406
- package/inputs/Input/inputsInputScenarios.d.ts +0 -57
- package/inputs/Input/inputsInputScenarios.js.map +0 -7
- package/inputs/Label/index.test.d.ts +0 -1
- package/inputs/OtpInput/index.test.d.ts +0 -1
- package/inputs/Radio/index.test.d.ts +0 -1
- package/inputs/Select/index.test.d.ts +0 -1
- package/inputs/inputsScenarios/index.js +0 -499
- package/inputs/inputsScenarios.d.ts +0 -296
- package/inputs/inputsScenarios.js.map +0 -7
- package/locales/el/index.js +0 -6
- package/locales/el.d.ts +0 -2
- package/locales/el.js.map +0 -7
- package/src/Field/utils/calculateField.ts +0 -49
- package/src/FieldArray/FormDialog.tsx +0 -379
- package/src/inputs/Input/inputsInputScenarios.ts +0 -404
- package/src/inputs/inputsScenarios.ts +0 -496
- package/src/locales/el.ts +0 -3
- /package/{FieldArray/index.test.d.ts → hooks/__tests__/utils.spec.d.ts} +0 -0
package/src/FormContext.tsx
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import React
|
|
2
|
-
import {
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import { createContext, useContext } from 'react';
|
|
3
|
+
import type { FormContextProps } from '@digigov/form/types';
|
|
3
4
|
|
|
4
5
|
export const FormContext: React.Context<FormContextProps> = createContext({
|
|
5
6
|
fieldsMap: {},
|
|
6
7
|
fieldsetsMap: {},
|
|
7
8
|
} as FormContextProps);
|
|
9
|
+
|
|
10
|
+
export const useFormContext = () => {
|
|
11
|
+
return useContext(FormContext);
|
|
12
|
+
};
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import MultiplicityField from '@digigov/form/MultiplicityField';
|
|
2
|
+
import doc from './doc.mdx?raw';
|
|
2
3
|
export default {
|
|
3
4
|
title: 'Digigov Form/MultiplicityField',
|
|
4
5
|
component: MultiplicityField,
|
|
6
|
+
tags: ['autodocs'],
|
|
7
|
+
markdown: doc,
|
|
5
8
|
displayName: 'MultiplicityField',
|
|
6
9
|
};
|
|
7
10
|
export { Default } from '@digigov/form/MultiplicityField/__stories__/Default';
|
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
import React, { useEffect, useMemo } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import type {
|
|
3
3
|
ErrorOption,
|
|
4
4
|
FieldArrayWithId,
|
|
5
5
|
UseFieldArrayReturn,
|
|
6
|
-
useWatch,
|
|
7
6
|
} from 'react-hook-form';
|
|
7
|
+
import { useWatch } from 'react-hook-form';
|
|
8
8
|
import { FieldBase } from '@digigov/form/Field/FieldBase';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
FIELD_COMPONENTS,
|
|
12
|
-
ALTERNATIVE_COMPONENTS,
|
|
13
|
-
} from '@digigov/form/Field/utils';
|
|
14
|
-
import { calculateField } from '@digigov/form/Field/utils/calculateField';
|
|
9
|
+
import { resolveField } from '@digigov/form/Field/utils/resolveField';
|
|
15
10
|
import { useField } from '@digigov/form/Field/utils/useField';
|
|
16
11
|
import { FieldObject } from '@digigov/form/FieldObject';
|
|
17
12
|
import { Fieldset } from '@digigov/form/Fieldset';
|
|
@@ -19,7 +14,7 @@ import type {
|
|
|
19
14
|
MultiplicityProps,
|
|
20
15
|
StashedObject,
|
|
21
16
|
} from '@digigov/form/MultiplicityField/types';
|
|
22
|
-
import { FieldSpec } from '@digigov/form/types';
|
|
17
|
+
import type { FieldSpec } from '@digigov/form/types';
|
|
23
18
|
import { Button } from '@digigov/ui/form/Button';
|
|
24
19
|
import { RadioConditional } from '@digigov/ui/form/RadioContainer';
|
|
25
20
|
|
|
@@ -47,6 +42,7 @@ export const AddObjects: React.FC<AddObjectsProps> = ({
|
|
|
47
42
|
setValue,
|
|
48
43
|
stashedObjects,
|
|
49
44
|
getValues,
|
|
45
|
+
resetField,
|
|
50
46
|
onStash,
|
|
51
47
|
error,
|
|
52
48
|
Field,
|
|
@@ -136,11 +132,7 @@ export const AddObjects: React.FC<AddObjectsProps> = ({
|
|
|
136
132
|
error: needsMoreError,
|
|
137
133
|
} = useField(radioField.key, radioField?.type ? radioField : null);
|
|
138
134
|
|
|
139
|
-
const
|
|
140
|
-
() =>
|
|
141
|
-
calculateField(children, field, FIELD_COMPONENTS, ALTERNATIVE_COMPONENTS),
|
|
142
|
-
[field]
|
|
143
|
-
);
|
|
135
|
+
const resolvedField = useMemo(() => resolveField(children, field), [field]);
|
|
144
136
|
const needsMore = useWatch({ name: field.key, control });
|
|
145
137
|
|
|
146
138
|
useEffect(() => {
|
|
@@ -155,25 +147,25 @@ export const AddObjects: React.FC<AddObjectsProps> = ({
|
|
|
155
147
|
|
|
156
148
|
// TODO: Refactor types so that label is always required, the following
|
|
157
149
|
// assignment is a temp fix for typescript build to run
|
|
158
|
-
|
|
150
|
+
resolvedField.label = resolvedField.label || {};
|
|
159
151
|
if (extra?.length) {
|
|
160
|
-
|
|
152
|
+
resolvedField.label.secondary = `Έχετε προσθέσει ${
|
|
161
153
|
stashedObjects.length
|
|
162
154
|
} εγγραφές και σας απομένουν ακόμα ${
|
|
163
155
|
extra.length - stashedObjects.length
|
|
164
156
|
} εγγραφές.`;
|
|
165
157
|
} else if (extra?.min && extra?.max) {
|
|
166
|
-
|
|
158
|
+
resolvedField.label.secondary = `Το πεδίο πρέπει να έχει ακόμα ${
|
|
167
159
|
extra?.min - stashedObjects.length
|
|
168
160
|
} και το μέγιστο ${
|
|
169
161
|
extra?.max
|
|
170
162
|
} εγγραφές. Προσθέστε μια ακόμα επιλέγοντας την απάντηση «Ναι» στην επόμενη ερώτηση.`;
|
|
171
163
|
} else if (extra?.min) {
|
|
172
|
-
|
|
164
|
+
resolvedField.label.secondary = `Το πεδίο πρέπει να έχει ακόμα ${
|
|
173
165
|
extra?.min - stashedObjects.length
|
|
174
166
|
} εγγραφές. Προσθέστε μια ακόμα επιλέγοντας την απάντηση «Ναι» στην επόμενη ερώτηση.`;
|
|
175
167
|
} else if (extra?.max) {
|
|
176
|
-
|
|
168
|
+
resolvedField.label.secondary = ` Έχετε προσθέσει ${
|
|
177
169
|
stashedObjects.length
|
|
178
170
|
} εγγραφές και σας απομένουν ${
|
|
179
171
|
extra.max - stashedObjects.length
|
|
@@ -182,11 +174,12 @@ export const AddObjects: React.FC<AddObjectsProps> = ({
|
|
|
182
174
|
return (
|
|
183
175
|
<Fieldset>
|
|
184
176
|
<FieldBase
|
|
185
|
-
{...
|
|
186
|
-
name={
|
|
177
|
+
{...resolvedField}
|
|
178
|
+
name={resolvedField.key}
|
|
187
179
|
control={control}
|
|
188
180
|
register={register}
|
|
189
181
|
reset={reset}
|
|
182
|
+
resetField={resetField}
|
|
190
183
|
Field={Field}
|
|
191
184
|
error={
|
|
192
185
|
extra?.max - stashedObjects.length === 0 ||
|
|
@@ -3,6 +3,8 @@ id: ask-users-recursive
|
|
|
3
3
|
title: Ask users for recursive data
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
# MultiplicityField
|
|
7
|
+
|
|
6
8
|
Multiplicity & FieldArray fields allow users to input data described by a
|
|
7
9
|
particular schema for an arbitrary number of times until they are done. It can
|
|
8
10
|
be used to input a fixed, a minimum, and a maximum length of instances.
|
|
@@ -28,7 +30,7 @@ properties for a data entity like a citizen and their personal details, and it
|
|
|
28
30
|
can be reused internally multiple times by `@digigov/form` to generate data
|
|
29
31
|
objects based on this schema.
|
|
30
32
|
|
|
31
|
-
## Accessibility &
|
|
33
|
+
## Accessibility & Usability
|
|
32
34
|
|
|
33
35
|
We aim to have semantically correct and valid forms, and as a result we cannot
|
|
34
36
|
mix form-related HTML elements, like `form`, `input`, `label` with generic ones,
|
|
@@ -109,38 +111,40 @@ import React from 'react';
|
|
|
109
111
|
import Form, { Field } from '@digigov/form';
|
|
110
112
|
import Button from '@digigov/ui/form/Button';
|
|
111
113
|
|
|
112
|
-
export
|
|
114
|
+
export function SimpleForm() {
|
|
113
115
|
return (
|
|
114
116
|
<Form>
|
|
115
117
|
<Field
|
|
116
118
|
key="vehicles"
|
|
117
119
|
name="vehicles"
|
|
118
|
-
|
|
120
|
+
multiplicity={true}
|
|
121
|
+
label={{ primary: 'Οχήματα' }}
|
|
119
122
|
type="array"
|
|
120
123
|
extra={{
|
|
121
124
|
border: true,
|
|
122
125
|
label: {
|
|
123
126
|
object: {
|
|
124
|
-
title: '
|
|
125
|
-
title_added: '
|
|
126
|
-
add: '
|
|
127
|
-
delete: '
|
|
127
|
+
title: 'Οχήματα',
|
|
128
|
+
title_added: 'Τα οχήματα που έχετε που έχετε προσθέσει',
|
|
129
|
+
add: 'Προσθήκη',
|
|
130
|
+
delete: 'Αφαίρεση',
|
|
128
131
|
},
|
|
129
132
|
question: {
|
|
130
|
-
title: '
|
|
133
|
+
title: 'Θέλετε να προσθέσετε και άλλα οχήματα;',
|
|
131
134
|
objectLabel: {
|
|
132
|
-
primary: '
|
|
133
|
-
secondary:
|
|
135
|
+
primary: 'Προσθέστε άλλο ένα όχημα',
|
|
136
|
+
secondary:
|
|
137
|
+
'Συμπληρώστε τα παρακάτω πεδία και πατήστε "Προσθήκη".',
|
|
134
138
|
},
|
|
135
|
-
yes: '
|
|
136
|
-
no: '
|
|
139
|
+
yes: 'Ναι',
|
|
140
|
+
no: 'Όχι',
|
|
137
141
|
},
|
|
138
142
|
},
|
|
139
143
|
of: {
|
|
140
144
|
type: 'object',
|
|
141
145
|
label: {
|
|
142
|
-
primary: '
|
|
143
|
-
secondary: '
|
|
146
|
+
primary: 'Περιγραφή Οχήματος',
|
|
147
|
+
secondary: 'Αλλάξτε τα στοιχεία του οχήματος',
|
|
144
148
|
},
|
|
145
149
|
extra: {
|
|
146
150
|
fields: [
|
|
@@ -148,14 +152,14 @@ export default function SimpleForm() {
|
|
|
148
152
|
key: 'registration_date',
|
|
149
153
|
type: 'date',
|
|
150
154
|
required: true,
|
|
151
|
-
label: { primary: '
|
|
155
|
+
label: { primary: 'Ημερομηνία Κυκλοφορίας' },
|
|
152
156
|
},
|
|
153
157
|
{
|
|
154
158
|
key: 'make',
|
|
155
159
|
type: 'string',
|
|
156
160
|
required: true,
|
|
157
161
|
label: {
|
|
158
|
-
primary: '
|
|
162
|
+
primary: 'Κατασκευαστής',
|
|
159
163
|
},
|
|
160
164
|
},
|
|
161
165
|
{
|
|
@@ -163,7 +167,7 @@ export default function SimpleForm() {
|
|
|
163
167
|
type: 'string',
|
|
164
168
|
required: true,
|
|
165
169
|
label: {
|
|
166
|
-
primary: '
|
|
170
|
+
primary: 'Μοντέλο',
|
|
167
171
|
},
|
|
168
172
|
},
|
|
169
173
|
],
|
|
@@ -172,10 +176,11 @@ export default function SimpleForm() {
|
|
|
172
176
|
}}
|
|
173
177
|
required
|
|
174
178
|
/>
|
|
175
|
-
<Button type="submit"
|
|
179
|
+
<Button type="submit">Συνέχεια</Button>
|
|
176
180
|
</Form>
|
|
177
181
|
);
|
|
178
182
|
}
|
|
183
|
+
export default SimpleForm;
|
|
179
184
|
```
|
|
180
185
|
|
|
181
186
|
### How to use it
|
|
@@ -192,7 +197,7 @@ export default function MultiplicityForm() {
|
|
|
192
197
|
return (
|
|
193
198
|
<Form>
|
|
194
199
|
{/* this is where all fields will eventually be rendered */}
|
|
195
|
-
<Button type="submit"
|
|
200
|
+
<Button type="submit">Συνέχεια</Button>
|
|
196
201
|
</Form>
|
|
197
202
|
);
|
|
198
203
|
}
|
|
@@ -209,7 +214,7 @@ props.
|
|
|
209
214
|
<Field
|
|
210
215
|
key="vehicles"
|
|
211
216
|
name="vehicles"
|
|
212
|
-
label={{ primary: '
|
|
217
|
+
label={{ primary: 'Οχήματα' }}
|
|
213
218
|
type="array"
|
|
214
219
|
required
|
|
215
220
|
/>
|
|
@@ -234,8 +239,8 @@ key describing the field props for all inputs needed.
|
|
|
234
239
|
of: {
|
|
235
240
|
type: 'object',
|
|
236
241
|
label: {
|
|
237
|
-
primary: '
|
|
238
|
-
secondary: '
|
|
242
|
+
primary: 'Περιγραφή Οχήματος',
|
|
243
|
+
secondary: 'Αλλάξτε τα στοιχεία του οχήματος',
|
|
239
244
|
},
|
|
240
245
|
extra: {
|
|
241
246
|
fields: [
|
|
@@ -243,14 +248,16 @@ key describing the field props for all inputs needed.
|
|
|
243
248
|
key: 'registration_date',
|
|
244
249
|
type: 'date',
|
|
245
250
|
required: true,
|
|
246
|
-
label: {
|
|
251
|
+
label: {
|
|
252
|
+
primary: 'Ημερομηνία Κυκλοφορίας'
|
|
253
|
+
},
|
|
247
254
|
},
|
|
248
255
|
{
|
|
249
256
|
key: 'make',
|
|
250
257
|
type: 'string',
|
|
251
258
|
required: true,
|
|
252
259
|
label: {
|
|
253
|
-
primary: '
|
|
260
|
+
primary: 'Κατασκευαστής',
|
|
254
261
|
},
|
|
255
262
|
},
|
|
256
263
|
{
|
|
@@ -258,7 +265,7 @@ key describing the field props for all inputs needed.
|
|
|
258
265
|
type: 'string',
|
|
259
266
|
required: true,
|
|
260
267
|
label: {
|
|
261
|
-
primary: '
|
|
268
|
+
primary: 'Μοντέλο',
|
|
262
269
|
},
|
|
263
270
|
},
|
|
264
271
|
],
|
|
@@ -283,14 +290,14 @@ FieldArray instead of the Multiplicity, is to explicitly disable the
|
|
|
283
290
|
multiplicity functionality, by using the `multiplicity={false}` prop.
|
|
284
291
|
|
|
285
292
|
As a result, if you learn how to use one, you can easily use the other, and
|
|
286
|
-
naturally, you can also change their
|
|
293
|
+
naturally, you can also change their behavior by changing a single prop in your
|
|
287
294
|
React code.
|
|
288
295
|
|
|
289
296
|
```jsx pure
|
|
290
297
|
<Field
|
|
291
298
|
key="vehicles"
|
|
292
299
|
name="vehicles"
|
|
293
|
-
label={{ primary: '
|
|
300
|
+
label={{ primary: 'Οχήματα' }}
|
|
294
301
|
type="array"
|
|
295
302
|
// highlight-next-line
|
|
296
303
|
multiplicity={false}
|
|
@@ -306,40 +313,41 @@ import React from 'react';
|
|
|
306
313
|
import Form, { Field } from '@digigov/form';
|
|
307
314
|
import Button from '@digigov/ui/form/Button';
|
|
308
315
|
|
|
309
|
-
export
|
|
316
|
+
export function SimpleForm() {
|
|
310
317
|
return (
|
|
311
318
|
<Form>
|
|
312
319
|
<Field
|
|
313
320
|
key="vehicles"
|
|
314
321
|
name="vehicles"
|
|
315
|
-
label={{ primary: 'Vehicles' }}
|
|
316
|
-
type="array"
|
|
317
322
|
multiplicity={false}
|
|
323
|
+
editable={true}
|
|
324
|
+
label={{ primary: 'Οχήματα' }}
|
|
325
|
+
type="array"
|
|
318
326
|
extra={{
|
|
319
327
|
border: true,
|
|
320
328
|
label: {
|
|
321
329
|
object: {
|
|
322
|
-
title: '
|
|
323
|
-
title_added: '
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
delete: 'Remove',
|
|
330
|
+
title: 'Οχήματα',
|
|
331
|
+
title_added: 'Τα οχήματα που έχετε που έχετε προσθέσει',
|
|
332
|
+
add: 'Προσθήκη',
|
|
333
|
+
delete: 'Αφαίρεση',
|
|
327
334
|
},
|
|
328
335
|
question: {
|
|
329
|
-
title: '
|
|
336
|
+
title: 'Θέλετε να προσθέσετε και άλλα οχήματα;',
|
|
330
337
|
objectLabel: {
|
|
331
|
-
primary: '
|
|
332
|
-
secondary:
|
|
338
|
+
primary: 'Προσθέστε άλλο ένα όχημα',
|
|
339
|
+
secondary:
|
|
340
|
+
'Συμπληρώστε τα παρακάτω πεδία και πατήστε "Προσθήκη".',
|
|
333
341
|
},
|
|
334
|
-
yes: '
|
|
335
|
-
no: '
|
|
342
|
+
yes: 'Ναι',
|
|
343
|
+
no: 'Όχι',
|
|
336
344
|
},
|
|
337
345
|
},
|
|
338
346
|
of: {
|
|
339
347
|
type: 'object',
|
|
340
348
|
label: {
|
|
341
|
-
primary: '
|
|
342
|
-
secondary: '
|
|
349
|
+
primary: 'Περιγραφή Οχήματος',
|
|
350
|
+
secondary: 'Αλλάξτε τα στοιχεία του οχήματος',
|
|
343
351
|
},
|
|
344
352
|
extra: {
|
|
345
353
|
fields: [
|
|
@@ -347,14 +355,14 @@ export default function SimpleForm() {
|
|
|
347
355
|
key: 'registration_date',
|
|
348
356
|
type: 'date',
|
|
349
357
|
required: true,
|
|
350
|
-
label: { primary: '
|
|
358
|
+
label: { primary: 'Ημερομηνία Κυκλοφορίας' },
|
|
351
359
|
},
|
|
352
360
|
{
|
|
353
361
|
key: 'make',
|
|
354
362
|
type: 'string',
|
|
355
363
|
required: true,
|
|
356
364
|
label: {
|
|
357
|
-
primary: '
|
|
365
|
+
primary: 'Κατασκευαστής',
|
|
358
366
|
},
|
|
359
367
|
},
|
|
360
368
|
{
|
|
@@ -362,7 +370,7 @@ export default function SimpleForm() {
|
|
|
362
370
|
type: 'string',
|
|
363
371
|
required: true,
|
|
364
372
|
label: {
|
|
365
|
-
primary: '
|
|
373
|
+
primary: 'Μοντέλο',
|
|
366
374
|
},
|
|
367
375
|
},
|
|
368
376
|
],
|
|
@@ -371,10 +379,11 @@ export default function SimpleForm() {
|
|
|
371
379
|
}}
|
|
372
380
|
required
|
|
373
381
|
/>
|
|
374
|
-
<Button type="submit"
|
|
382
|
+
<Button type="submit">Συνέχεια</Button>
|
|
375
383
|
</Form>
|
|
376
384
|
);
|
|
377
385
|
}
|
|
386
|
+
export default SimpleForm;
|
|
378
387
|
```
|
|
379
388
|
|
|
380
389
|
## Validating form data
|
|
@@ -410,40 +419,42 @@ import React from 'react';
|
|
|
410
419
|
import Form, { Field } from '@digigov/form';
|
|
411
420
|
import Button from '@digigov/ui/form/Button';
|
|
412
421
|
|
|
413
|
-
export
|
|
422
|
+
export function SimpleForm() {
|
|
414
423
|
return (
|
|
415
424
|
<Form>
|
|
416
425
|
<Field
|
|
417
426
|
key="vehicles"
|
|
418
427
|
name="vehicles"
|
|
419
|
-
label={{ primary: '
|
|
428
|
+
label={{ primary: 'Οχήματα' }}
|
|
420
429
|
type="array"
|
|
421
430
|
multiplicity={true}
|
|
422
431
|
extra={{
|
|
432
|
+
length: 2,
|
|
423
433
|
border: true,
|
|
424
|
-
length: 3,
|
|
425
434
|
label: {
|
|
426
435
|
object: {
|
|
427
|
-
title: '
|
|
428
|
-
title_added: '
|
|
429
|
-
|
|
430
|
-
|
|
436
|
+
title: 'Οχήματα',
|
|
437
|
+
title_added: 'Τα οχήματα που έχετε προσθέσει',
|
|
438
|
+
nothing_added: 'Δεν έχετε προσθέσει κανένα όχημα ακόμα.',
|
|
439
|
+
add: 'Προσθήκη οχήματος',
|
|
440
|
+
delete: 'Αφαίρεση',
|
|
431
441
|
},
|
|
432
442
|
question: {
|
|
433
|
-
title: '
|
|
443
|
+
title: 'Θέλετε να προσθέσετε περισσότερα οχήματα;',
|
|
434
444
|
objectLabel: {
|
|
435
|
-
primary: '
|
|
436
|
-
secondary:
|
|
445
|
+
primary: 'Προσθέστε ακόμα ένα από τα οχήματά σας',
|
|
446
|
+
secondary:
|
|
447
|
+
'Συμπληρώστε τα παρακάτω πεδία και πατήστε "Προσθήκη".',
|
|
437
448
|
},
|
|
438
|
-
yes: '
|
|
439
|
-
no: '
|
|
449
|
+
yes: 'Ναι',
|
|
450
|
+
no: 'Όχι',
|
|
440
451
|
},
|
|
441
452
|
},
|
|
442
453
|
of: {
|
|
443
454
|
type: 'object',
|
|
444
455
|
label: {
|
|
445
|
-
primary: '
|
|
446
|
-
secondary: '
|
|
456
|
+
primary: 'Περιγραφή Οχήματος',
|
|
457
|
+
secondary: 'Αλλάξτε τα στοιχεία του οχήματος',
|
|
447
458
|
},
|
|
448
459
|
extra: {
|
|
449
460
|
fields: [
|
|
@@ -451,14 +462,16 @@ export default function SimpleForm() {
|
|
|
451
462
|
key: 'registration_date',
|
|
452
463
|
type: 'date',
|
|
453
464
|
required: true,
|
|
454
|
-
label: {
|
|
465
|
+
label: {
|
|
466
|
+
primary: 'Ημερομηνία Κυκλοφορίας',
|
|
467
|
+
},
|
|
455
468
|
},
|
|
456
469
|
{
|
|
457
470
|
key: 'make',
|
|
458
471
|
type: 'string',
|
|
459
472
|
required: true,
|
|
460
473
|
label: {
|
|
461
|
-
primary: '
|
|
474
|
+
primary: 'Κατασκευαστής',
|
|
462
475
|
},
|
|
463
476
|
},
|
|
464
477
|
{
|
|
@@ -466,7 +479,7 @@ export default function SimpleForm() {
|
|
|
466
479
|
type: 'string',
|
|
467
480
|
required: true,
|
|
468
481
|
label: {
|
|
469
|
-
primary: '
|
|
482
|
+
primary: 'Μοντέλο',
|
|
470
483
|
},
|
|
471
484
|
},
|
|
472
485
|
],
|
|
@@ -475,10 +488,11 @@ export default function SimpleForm() {
|
|
|
475
488
|
}}
|
|
476
489
|
required
|
|
477
490
|
/>
|
|
478
|
-
<Button type="submit"
|
|
491
|
+
<Button type="submit">Συνέχεια</Button>
|
|
479
492
|
</Form>
|
|
480
493
|
);
|
|
481
494
|
}
|
|
495
|
+
export default SimpleForm;
|
|
482
496
|
```
|
|
483
497
|
|
|
484
498
|
### Min or max length
|
|
@@ -512,42 +526,43 @@ import React from 'react';
|
|
|
512
526
|
import Form, { Field } from '@digigov/form';
|
|
513
527
|
import Button from '@digigov/ui/form/Button';
|
|
514
528
|
|
|
515
|
-
export
|
|
529
|
+
export function SimpleForm() {
|
|
516
530
|
return (
|
|
517
531
|
<Form>
|
|
518
532
|
<Field
|
|
519
533
|
key="vehicles"
|
|
520
534
|
name="vehicles"
|
|
521
|
-
label={{ primary: '
|
|
535
|
+
label={{ primary: 'Οχήματα' }}
|
|
522
536
|
type="array"
|
|
523
537
|
multiplicity={true}
|
|
524
538
|
extra={{
|
|
525
|
-
border: true,
|
|
526
539
|
min: 2,
|
|
527
540
|
max: 5,
|
|
541
|
+
border: true,
|
|
528
542
|
label: {
|
|
529
543
|
object: {
|
|
530
|
-
title: '
|
|
531
|
-
title_added: '
|
|
532
|
-
nothing_added: '
|
|
533
|
-
add: '
|
|
534
|
-
delete: '
|
|
544
|
+
title: 'Οχήματα',
|
|
545
|
+
title_added: 'Τα οχήματα που έχετε προσθέσει',
|
|
546
|
+
nothing_added: 'Δεν έχετε προσθέσει κανένα όχημα ακόμα.',
|
|
547
|
+
add: 'Προσθήκη οχήματος',
|
|
548
|
+
delete: 'Αφαίρεση',
|
|
535
549
|
},
|
|
536
550
|
question: {
|
|
537
|
-
title: '
|
|
551
|
+
title: 'Θέλετε να προσθέσετε περισσότερα οχήματα;',
|
|
538
552
|
objectLabel: {
|
|
539
|
-
primary: '
|
|
540
|
-
secondary:
|
|
553
|
+
primary: 'Προσθέστε ακόμα ένα από τα οχήματά σας',
|
|
554
|
+
secondary:
|
|
555
|
+
'Συμπληρώστε τα παρακάτω πεδία και πατήστε "Προσθήκη".',
|
|
541
556
|
},
|
|
542
|
-
yes: '
|
|
543
|
-
no: '
|
|
557
|
+
yes: 'Ναι',
|
|
558
|
+
no: 'Όχι',
|
|
544
559
|
},
|
|
545
560
|
},
|
|
546
561
|
of: {
|
|
547
562
|
type: 'object',
|
|
548
563
|
label: {
|
|
549
|
-
primary: '
|
|
550
|
-
secondary: '
|
|
564
|
+
primary: 'Περιγραφή Οχήματος',
|
|
565
|
+
secondary: 'Αλλάξτε τα στοιχεία του οχήματος',
|
|
551
566
|
},
|
|
552
567
|
extra: {
|
|
553
568
|
fields: [
|
|
@@ -555,14 +570,16 @@ export default function SimpleForm() {
|
|
|
555
570
|
key: 'registration_date',
|
|
556
571
|
type: 'date',
|
|
557
572
|
required: true,
|
|
558
|
-
label: {
|
|
573
|
+
label: {
|
|
574
|
+
primary: 'Ημερομηνία Κυκλοφορίας',
|
|
575
|
+
},
|
|
559
576
|
},
|
|
560
577
|
{
|
|
561
578
|
key: 'make',
|
|
562
579
|
type: 'string',
|
|
563
580
|
required: true,
|
|
564
581
|
label: {
|
|
565
|
-
primary: '
|
|
582
|
+
primary: 'Κατασκευαστής',
|
|
566
583
|
},
|
|
567
584
|
},
|
|
568
585
|
{
|
|
@@ -570,7 +587,7 @@ export default function SimpleForm() {
|
|
|
570
587
|
type: 'string',
|
|
571
588
|
required: true,
|
|
572
589
|
label: {
|
|
573
|
-
primary: '
|
|
590
|
+
primary: 'Μοντέλο',
|
|
574
591
|
},
|
|
575
592
|
},
|
|
576
593
|
],
|
|
@@ -579,8 +596,9 @@ export default function SimpleForm() {
|
|
|
579
596
|
}}
|
|
580
597
|
required
|
|
581
598
|
/>
|
|
582
|
-
<Button type="submit"
|
|
599
|
+
<Button type="submit">Συνέχεια</Button>
|
|
583
600
|
</Form>
|
|
584
601
|
);
|
|
585
602
|
}
|
|
603
|
+
export default SimpleForm;
|
|
586
604
|
```
|
|
@@ -34,6 +34,10 @@ test('renders the All MultiplicityField variants', async ({ mount, page }) => {
|
|
|
34
34
|
)
|
|
35
35
|
await page.evaluate(() => document.fonts.ready);
|
|
36
36
|
|
|
37
|
+
// Move the mouse to the top-left corner to avoid random hover issues
|
|
38
|
+
await page.mouse.move(0, 0);
|
|
39
|
+
|
|
40
|
+
|
|
37
41
|
const screenshot = await page.screenshot({ fullPage: true, animations: 'disabled' });
|
|
38
42
|
expect(screenshot).toMatchSnapshot();
|
|
39
43
|
});
|