@digigov/form 2.0.0-113e6661 → 2.0.0-2177f152
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/FieldBaseContainer/index.js +1 -1
- package/Field/FieldBaseContainer.js.map +2 -2
- package/Field/FieldConditional.js.map +1 -1
- package/Field/types.d.ts +6 -7
- package/FieldArray/index.js +4 -5
- package/FieldArray/index.js.map +2 -2
- package/FieldObject/index.js +2 -2
- package/FieldObject/index.js.map +2 -2
- package/Fieldset/index.d.ts +1 -1
- package/Fieldset/index.js +5 -5
- package/Fieldset/index.js.map +2 -2
- package/Fieldset/types.d.ts +2 -2
- package/FormBuilder/index.js +4 -4
- package/FormBuilder/index.js.map +2 -2
- package/FormContext.js.map +2 -2
- package/MultiplicityField/add-objects/index.js +8 -6
- package/MultiplicityField/add-objects.js.map +2 -2
- package/MultiplicityField/index.js +12 -10
- package/MultiplicityField/index.js.map +2 -2
- package/MultiplicityField/types.d.ts +1 -2
- package/Questions/Questions/index.js +5 -4
- package/Questions/Questions.js.map +2 -2
- package/Questions/Step/StepArrayReview.js.map +2 -2
- package/Questions/Step/StepTitle/index.js +4 -3
- package/Questions/Step/StepTitle.d.ts +1 -1
- package/Questions/Step/StepTitle.js.map +2 -2
- package/cjs/Field/FieldBaseContainer/index.js +2 -2
- package/cjs/Field/FieldBaseContainer.js.map +3 -3
- package/cjs/Field/FieldConditional.js.map +1 -1
- package/cjs/Field/types.js.map +1 -1
- package/cjs/FieldArray/index.js +5 -6
- package/cjs/FieldArray/index.js.map +3 -3
- package/cjs/FieldObject/index.js +3 -3
- package/cjs/FieldObject/index.js.map +3 -3
- package/cjs/Fieldset/index.js +10 -10
- package/cjs/Fieldset/index.js.map +3 -3
- package/cjs/Fieldset/types.js.map +1 -1
- package/cjs/FormBuilder/index.js +6 -6
- package/cjs/FormBuilder/index.js.map +3 -3
- package/cjs/FormContext/index.js +2 -2
- package/cjs/FormContext.js.map +3 -3
- package/cjs/MultiplicityField/add-objects/index.js +12 -10
- package/cjs/MultiplicityField/add-objects.js.map +3 -3
- package/cjs/MultiplicityField/index.js +11 -14
- package/cjs/MultiplicityField/index.js.map +3 -3
- package/cjs/MultiplicityField/types.js.map +1 -1
- package/cjs/Questions/Questions/index.js +5 -4
- package/cjs/Questions/Questions.js.map +2 -2
- package/cjs/Questions/Step/StepArrayReview.js.map +2 -2
- package/cjs/Questions/Step/StepTitle/index.js +5 -5
- package/cjs/Questions/Step/StepTitle.js.map +3 -3
- package/cjs/inputs/AutoCompleteInput/__stories__/Default/index.js +1 -7
- package/cjs/inputs/AutoCompleteInput/__stories__/Default.js.map +2 -2
- package/cjs/inputs/AutoCompleteInput/__stories__/Multiple/index.js +1 -8
- package/cjs/inputs/AutoCompleteInput/__stories__/Multiple.js.map +2 -2
- package/cjs/inputs/AutoCompleteInput/index.js +9 -8
- package/cjs/inputs/AutoCompleteInput/index.js.map +3 -3
- package/cjs/inputs/Checkboxes/index.js +6 -8
- package/cjs/inputs/Checkboxes/index.js.map +3 -3
- package/cjs/inputs/DateInput/__stories__/Default/index.js +3 -8
- package/cjs/inputs/DateInput/__stories__/Default.js.map +2 -2
- package/cjs/inputs/DateInput/index.js +4 -5
- package/cjs/inputs/DateInput/index.js.map +3 -3
- package/cjs/inputs/FileInput/index.js +8 -9
- package/cjs/inputs/FileInput/index.js.map +3 -3
- package/cjs/inputs/ImageInput/ImageInput.stories/index.js +4 -4
- package/cjs/inputs/ImageInput/ImageInput.stories.js.map +2 -2
- package/cjs/inputs/ImageInput/__stories__/MaxSize/index.js +69 -0
- package/cjs/inputs/ImageInput/__stories__/MaxSize.js.map +7 -0
- package/cjs/inputs/ImageInput/__stories__/WithInvalidImageDimension/index.js +2 -1
- package/cjs/inputs/ImageInput/__stories__/WithInvalidImageDimension.js.map +2 -2
- package/cjs/inputs/ImageInput/index.js +8 -9
- package/cjs/inputs/ImageInput/index.js.map +3 -3
- package/cjs/inputs/Input/__stories__/LandlineNumber/index.js +1 -0
- package/cjs/inputs/Input/__stories__/LandlineNumber.js.map +2 -2
- package/cjs/inputs/Input/__stories__/MobilePhone/index.js +1 -0
- package/cjs/inputs/Input/__stories__/MobilePhone.js.map +2 -2
- package/cjs/inputs/Input/__stories__/PhoneNumber/index.js +1 -0
- package/cjs/inputs/Input/__stories__/PhoneNumber.js.map +2 -2
- package/cjs/inputs/Input/__stories__/PostalCode/index.js +1 -0
- package/cjs/inputs/Input/__stories__/PostalCode.js.map +2 -2
- package/cjs/inputs/Input/index.js +3 -3
- package/cjs/inputs/Input/index.js.map +2 -2
- package/cjs/inputs/Input/inputsInputScenarios.js.map +2 -2
- package/cjs/inputs/Label/index.js +3 -3
- package/cjs/inputs/Label/index.js.map +3 -3
- package/cjs/inputs/OtpInput/index.js.map +2 -2
- package/cjs/inputs/Radio/index.js +11 -13
- package/cjs/inputs/Radio/index.js.map +3 -3
- package/cjs/inputs/Select/index.js +3 -4
- package/cjs/inputs/Select/index.js.map +3 -3
- package/cjs/inputs/inputsScenarios/index.js +4 -11
- package/cjs/inputs/inputsScenarios.js.map +2 -2
- package/cjs/lazy/index.js +320 -61
- package/cjs/lazy.js.map +2 -2
- package/cjs/locales/el.js.map +1 -1
- package/cjs/registry/index.js +118 -38
- package/cjs/registry.js.map +2 -2
- package/cjs/types.js.map +1 -1
- package/cjs/utils/index.js +2 -1
- package/cjs/utils.js.map +2 -2
- package/cjs/validators/index.js +16 -66
- package/cjs/validators/index.js.map +3 -3
- package/cjs/validators/utils/date/index.js +138 -0
- package/cjs/validators/utils/date.js.map +7 -0
- package/cjs/validators/utils/file/index.js +1 -1
- package/cjs/validators/utils/file.js.map +2 -2
- package/cjs/validators/utils/index.js +3 -1
- package/cjs/validators/utils/index.js.map +2 -2
- package/cjs/validators/utils/phone.js.map +2 -2
- package/cjs/validators/utils/postal_code.js.map +1 -1
- package/cjs/validators/utils/uuid4.js.map +2 -2
- package/index.js +1 -1
- package/inputs/AutoCompleteInput/__stories__/Default/index.js +1 -7
- package/inputs/AutoCompleteInput/__stories__/Default.js.map +2 -2
- package/inputs/AutoCompleteInput/__stories__/Multiple/index.js +1 -8
- package/inputs/AutoCompleteInput/__stories__/Multiple.js.map +2 -2
- package/inputs/AutoCompleteInput/index.d.ts +1 -1
- package/inputs/AutoCompleteInput/index.js +11 -8
- package/inputs/AutoCompleteInput/index.js.map +2 -2
- package/inputs/Checkboxes/index.d.ts +1 -1
- package/inputs/Checkboxes/index.js +7 -5
- package/inputs/Checkboxes/index.js.map +2 -2
- package/inputs/DateInput/__stories__/Default/index.js +3 -8
- package/inputs/DateInput/__stories__/Default.js.map +2 -2
- package/inputs/DateInput/index.d.ts +1 -2
- package/inputs/DateInput/index.js +6 -4
- package/inputs/DateInput/index.js.map +2 -2
- package/inputs/FileInput/index.js +6 -7
- package/inputs/FileInput/index.js.map +2 -2
- package/inputs/ImageInput/ImageInput.stories/index.js +2 -2
- package/inputs/ImageInput/ImageInput.stories.d.ts +1 -1
- package/inputs/ImageInput/ImageInput.stories.js.map +2 -2
- package/inputs/ImageInput/__stories__/MaxSize/index.js +36 -0
- package/inputs/ImageInput/__stories__/MaxSize/package.json +6 -0
- package/inputs/ImageInput/__stories__/MaxSize.d.ts +3 -0
- package/inputs/ImageInput/__stories__/MaxSize.js.map +7 -0
- package/inputs/ImageInput/__stories__/WithInvalidImageDimension/index.js +2 -1
- package/inputs/ImageInput/__stories__/WithInvalidImageDimension.js.map +2 -2
- package/inputs/ImageInput/index.js +7 -8
- package/inputs/ImageInput/index.js.map +2 -2
- package/inputs/Input/__stories__/LandlineNumber/index.js +1 -0
- package/inputs/Input/__stories__/LandlineNumber.js.map +2 -2
- package/inputs/Input/__stories__/MobilePhone/index.js +1 -0
- package/inputs/Input/__stories__/MobilePhone.js.map +2 -2
- package/inputs/Input/__stories__/PhoneNumber/index.js +1 -0
- package/inputs/Input/__stories__/PhoneNumber.js.map +2 -2
- package/inputs/Input/__stories__/PostalCode/index.js +1 -0
- package/inputs/Input/__stories__/PostalCode.js.map +2 -2
- package/inputs/Input/index.js +3 -3
- package/inputs/Input/index.js.map +2 -2
- package/inputs/Input/inputsInputScenarios.js.map +2 -2
- package/inputs/Label/index.d.ts +0 -2
- package/inputs/Label/index.js +2 -2
- package/inputs/Label/index.js.map +2 -2
- package/inputs/OtpInput/index.js.map +2 -2
- package/inputs/Radio/index.d.ts +1 -1
- package/inputs/Radio/index.js +7 -5
- package/inputs/Radio/index.js.map +2 -2
- package/inputs/Select/index.d.ts +1 -1
- package/inputs/Select/index.js +4 -2
- package/inputs/Select/index.js.map +2 -2
- package/inputs/inputsScenarios/index.js +4 -11
- package/inputs/inputsScenarios.d.ts +0 -42
- package/inputs/inputsScenarios.js.map +2 -2
- package/lazy/index.js +320 -61
- package/lazy.d.ts +4 -2
- package/lazy.js.map +2 -2
- package/locales/el.js.map +1 -1
- package/package.json +4 -4
- package/registry/index.js +118 -38
- package/registry.d.ts +1 -0
- package/registry.js.map +2 -2
- package/src/Field/FieldBaseContainer.tsx +2 -2
- package/src/Field/FieldConditional.tsx +2 -2
- package/src/Field/types.tsx +25 -26
- package/src/FieldArray/index.test.tsx +14 -13
- package/src/FieldArray/index.tsx +9 -9
- package/src/FieldObject/index.tsx +2 -2
- package/src/Fieldset/index.tsx +5 -5
- package/src/Fieldset/types.tsx +2 -2
- package/src/FormBuilder/{FormBuilder.mdx → doc.mdx} +20 -33
- package/src/FormBuilder/index.test.tsx +11 -10
- package/src/FormBuilder/index.tsx +4 -5
- package/src/FormBuilder/scenarios.test.tsx +2 -2
- package/src/FormContext.tsx +1 -2
- package/src/MultiplicityField/add-objects.tsx +9 -9
- package/src/MultiplicityField/{MultiplicityField.mdx → doc.mdx} +12 -16
- package/src/MultiplicityField/index.test.tsx +26 -25
- package/src/MultiplicityField/index.tsx +13 -12
- package/src/MultiplicityField/types.ts +1 -2
- package/src/Questions/Questions.tsx +4 -4
- package/src/Questions/Step/StepArrayReview.tsx +1 -1
- package/src/Questions/Step/StepTitle.tsx +4 -3
- package/src/Questions/__snapshots__/index.spec.tsx.snap +8 -4
- package/src/Questions/{index.mdx → doc.mdx} +9 -12
- package/src/Questions/index.spec.tsx +6 -2
- package/src/Questions/index.test.tsx +11 -10
- package/src/create-simple-form.mdx +2 -6
- package/src/{index.mdx → doc.mdx} +4 -8
- package/src/inputs/AutoCompleteInput/__stories__/Default.tsx +2 -10
- package/src/inputs/AutoCompleteInput/__stories__/Multiple.tsx +1 -8
- package/src/inputs/AutoCompleteInput/{index.mdx → doc.mdx} +2 -13
- package/src/inputs/AutoCompleteInput/index.test.tsx +14 -13
- package/src/inputs/AutoCompleteInput/index.tsx +34 -30
- package/src/inputs/Checkboxes/{index.mdx → doc.mdx} +5 -15
- package/src/inputs/Checkboxes/index.test.tsx +17 -16
- package/src/inputs/Checkboxes/index.tsx +30 -28
- package/src/inputs/DateInput/__stories__/Default.tsx +7 -12
- package/src/inputs/DateInput/{index.mdx → doc.mdx} +1 -8
- package/src/inputs/DateInput/index.test.tsx +11 -10
- package/src/inputs/DateInput/index.tsx +6 -4
- package/src/inputs/FileInput/{index.mdx → doc.mdx} +1 -5
- package/src/inputs/FileInput/index.test.tsx +11 -10
- package/src/inputs/FileInput/index.tsx +7 -8
- package/src/inputs/ImageInput/ImageInput.stories.js +1 -1
- package/src/inputs/ImageInput/__stories__/MaxSize.tsx +37 -0
- package/src/inputs/ImageInput/__stories__/WithInvalidImageDimension.tsx +2 -0
- package/src/inputs/ImageInput/doc.mdx +23 -0
- package/src/inputs/ImageInput/index.test.tsx +21 -16
- package/src/inputs/ImageInput/index.tsx +10 -15
- package/src/inputs/Input/__stories__/LandlineNumber.tsx +2 -1
- package/src/inputs/Input/__stories__/MobilePhone.tsx +1 -0
- package/src/inputs/Input/__stories__/PhoneNumber.tsx +1 -0
- package/src/inputs/Input/__stories__/PostalCode.tsx +1 -0
- package/src/inputs/Input/doc.mdx +56 -0
- package/src/inputs/Input/index.test.tsx +38 -37
- package/src/inputs/Input/index.tsx +18 -10
- package/src/inputs/Input/inputsInputScenarios.ts +244 -245
- package/src/inputs/Label/doc.mdx +14 -0
- package/src/inputs/Label/index.test.tsx +11 -10
- package/src/inputs/Label/index.tsx +2 -6
- package/src/inputs/OtpInput/{index.mdx → doc.mdx} +1 -8
- package/src/inputs/OtpInput/index.test.tsx +11 -10
- package/src/inputs/OtpInput/index.tsx +2 -1
- package/src/inputs/Radio/{index.mdx → doc.mdx} +5 -15
- package/src/inputs/Radio/index.test.tsx +17 -16
- package/src/inputs/Radio/index.tsx +58 -56
- package/src/inputs/Select/{index.mdx → doc.mdx} +1 -5
- package/src/inputs/Select/index.test.tsx +11 -10
- package/src/inputs/Select/index.tsx +5 -3
- package/src/inputs/inputsScenarios.ts +174 -181
- package/src/installation.mdx +2 -5
- package/src/lazy.js +322 -64
- package/src/locales/el.ts +1 -1
- package/src/registry.js +121 -45
- package/src/types.tsx +2 -2
- package/src/utils.ts +2 -2
- package/src/validators/index.ts +33 -71
- package/src/validators/utils/date.ts +107 -0
- package/src/validators/utils/file.ts +5 -3
- package/src/validators/utils/index.ts +1 -0
- package/src/validators/utils/phone.ts +1 -1
- package/src/validators/utils/postal_code.ts +1 -1
- package/src/validators/utils/uuid4.ts +2 -1
- package/src/validators/validators.spec.ts +3 -3
- package/types.d.ts +2 -2
- package/types.js.map +1 -1
- package/utils/index.js +2 -1
- package/utils.js.map +2 -2
- package/validators/index.js +20 -67
- package/validators/index.js.map +2 -2
- package/validators/utils/date/index.js +103 -0
- package/validators/utils/date/package.json +6 -0
- package/validators/utils/date.d.ts +9 -0
- package/validators/utils/date.js.map +7 -0
- package/validators/utils/file/index.js +1 -1
- package/validators/utils/file.js.map +2 -2
- package/validators/utils/index.d.ts +1 -0
- package/validators/utils/index.js +1 -0
- package/validators/utils/index.js.map +2 -2
- package/validators/utils/phone.d.ts +1 -1
- package/validators/utils/phone.js.map +2 -2
- package/validators/utils/postal_code.d.ts +1 -1
- package/validators/utils/postal_code.js.map +1 -1
- package/validators/utils/uuid4.js.map +2 -2
- package/src/inputs/ImageInput/index.mdx +0 -19
- package/src/inputs/Input/index.mdx +0 -95
- package/src/inputs/Label/index.mdx +0 -0
- /package/src/Field/{index.mdx → doc.mdx} +0 -0
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { test, expect } from '@playwright/experimental-ct-react';
|
|
3
|
-
import TestVariant from '@digigov/ui/utils/TestVariant'
|
|
4
3
|
import { Default } from '@digigov/form/Questions/__stories__/Default';
|
|
4
|
+
import TestVariant from '@digigov/ui/utils/TestVariant';
|
|
5
5
|
|
|
6
6
|
test('renders the All Questions variants', async ({ mount, page }) => {
|
|
7
7
|
await mount(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
</
|
|
13
|
-
|
|
14
|
-
)
|
|
8
|
+
<div>
|
|
9
|
+
<TestVariant title="Default">
|
|
10
|
+
<Default />
|
|
11
|
+
</TestVariant>
|
|
12
|
+
</div>
|
|
13
|
+
);
|
|
15
14
|
await page.evaluate(() => document.fonts.ready);
|
|
16
15
|
|
|
17
|
-
const screenshot = await page.screenshot({
|
|
16
|
+
const screenshot = await page.screenshot({
|
|
17
|
+
fullPage: true,
|
|
18
|
+
animations: 'disabled',
|
|
19
|
+
});
|
|
18
20
|
expect(screenshot).toMatchSnapshot();
|
|
19
21
|
});
|
|
20
|
-
|
|
@@ -4,12 +4,8 @@ title: Create a simple Digigov Form
|
|
|
4
4
|
sidebar_label: Creating simple forms
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<LeadText>
|
|
10
|
-
This guide walks through building a simple form page, complete with validation
|
|
11
|
-
and data serialisation.
|
|
12
|
-
</LeadText>
|
|
7
|
+
This guide walks through building a simple form page, complete with validation
|
|
8
|
+
and data serialisation.
|
|
13
9
|
|
|
14
10
|
## What we are building
|
|
15
11
|
|
|
@@ -4,14 +4,10 @@ title: Digigov Form
|
|
|
4
4
|
sidebar_label: Introduction to Digigov Form
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
Reactjs. It supports flexible and multi-step forms and easy-to-use validation.
|
|
12
|
-
This page will guide you through everything you need to create accessible and
|
|
13
|
-
dynamic forms that can handle all sorts of user inputs.
|
|
14
|
-
</LeadText>
|
|
7
|
+
Digigov Form is an off-the-shelf solution for managing web forms using
|
|
8
|
+
Reactjs. It supports flexible and multi-step forms and easy-to-use validation.
|
|
9
|
+
This page will guide you through everything you need to create accessible and
|
|
10
|
+
dynamic forms that can handle all sorts of user inputs.
|
|
15
11
|
|
|
16
12
|
<img
|
|
17
13
|
src="/img/form.svg"
|
|
@@ -4,13 +4,7 @@ import FormBuilder from '@digigov/form/FormBuilder';
|
|
|
4
4
|
import { FieldSpec } from '@digigov/form/types';
|
|
5
5
|
import Button from '@digigov/ui/form/Button';
|
|
6
6
|
|
|
7
|
-
const results = [
|
|
8
|
-
'Αμερική',
|
|
9
|
-
'Ασία',
|
|
10
|
-
'Αυστραλία',
|
|
11
|
-
'Αφρική',
|
|
12
|
-
'Ευρώπη',
|
|
13
|
-
];
|
|
7
|
+
const results = ['Αμερική', 'Ασία', 'Αυστραλία', 'Αφρική', 'Ευρώπη'];
|
|
14
8
|
|
|
15
9
|
const fields: FieldSpec[] = [
|
|
16
10
|
{
|
|
@@ -36,7 +30,6 @@ const fields: FieldSpec[] = [
|
|
|
36
30
|
const initialValues = {};
|
|
37
31
|
|
|
38
32
|
export const Default = () => (
|
|
39
|
-
|
|
40
33
|
<FormBuilder
|
|
41
34
|
fields={fields}
|
|
42
35
|
onSubmit={(data) => {
|
|
@@ -49,6 +42,5 @@ export const Default = () => (
|
|
|
49
42
|
))}
|
|
50
43
|
<Button type="submit">Submit</Button>
|
|
51
44
|
</FormBuilder>
|
|
52
|
-
|
|
53
45
|
);
|
|
54
|
-
export default Default;
|
|
46
|
+
export default Default;
|
|
@@ -4,13 +4,7 @@ import FormBuilder from '@digigov/form/FormBuilder';
|
|
|
4
4
|
import { FieldSpec } from '@digigov/form/types';
|
|
5
5
|
import Button from '@digigov/ui/form/Button';
|
|
6
6
|
|
|
7
|
-
const results = [
|
|
8
|
-
'Αμερική',
|
|
9
|
-
'Ασία',
|
|
10
|
-
'Αυστραλία',
|
|
11
|
-
'Αφρική',
|
|
12
|
-
'Ευρώπη',
|
|
13
|
-
];
|
|
7
|
+
const results = ['Αμερική', 'Ασία', 'Αυστραλία', 'Αφρική', 'Ευρώπη'];
|
|
14
8
|
|
|
15
9
|
const fields: FieldSpec[] = [
|
|
16
10
|
{
|
|
@@ -20,7 +14,6 @@ const fields: FieldSpec[] = [
|
|
|
20
14
|
type: 'choice:multiple',
|
|
21
15
|
extra: {
|
|
22
16
|
component: 'AutoComplete',
|
|
23
|
-
multiple: true,
|
|
24
17
|
options: results.map((r) => {
|
|
25
18
|
return {
|
|
26
19
|
label: {
|
|
@@ -11,19 +11,8 @@ options as the users type and also let them select an option from the list.
|
|
|
11
11
|
|
|
12
12
|
### Default
|
|
13
13
|
|
|
14
|
-
<
|
|
15
|
-
packageName="@digigov/form"
|
|
16
|
-
component="inputs/AutoCompleteInput"
|
|
17
|
-
story="Default.tsx"
|
|
18
|
-
/>
|
|
14
|
+
<code src="@digigov/form/inputs/AutoCompleteInput/__stories__/Default.tsx" />
|
|
19
15
|
|
|
20
16
|
### Display multiple values
|
|
21
17
|
|
|
22
|
-
<
|
|
23
|
-
packageName="@digigov/form"
|
|
24
|
-
component="inputs/AutoCompleteInput"
|
|
25
|
-
story="Multiple.tsx"
|
|
26
|
-
/>
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
18
|
+
<code src="@digigov/form/inputs/AutoCompleteInput/__stories__/Multiple.tsx" />
|
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { test, expect } from '@playwright/experimental-ct-react';
|
|
3
|
-
import TestVariant from '@digigov/ui/utils/TestVariant'
|
|
4
3
|
import { Default } from '@digigov/form/inputs/AutoCompleteInput/__stories__/Default';
|
|
5
4
|
import { Multiple } from '@digigov/form/inputs/AutoCompleteInput/__stories__/Multiple';
|
|
5
|
+
import TestVariant from '@digigov/ui/utils/TestVariant';
|
|
6
6
|
|
|
7
7
|
test('renders the All AutoCompleteInput variants', async ({ mount, page }) => {
|
|
8
8
|
await mount(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
</
|
|
17
|
-
|
|
18
|
-
)
|
|
9
|
+
<div>
|
|
10
|
+
<TestVariant title="Default">
|
|
11
|
+
<Default />
|
|
12
|
+
</TestVariant>
|
|
13
|
+
<TestVariant title="Multiple">
|
|
14
|
+
<Multiple />
|
|
15
|
+
</TestVariant>
|
|
16
|
+
</div>
|
|
17
|
+
);
|
|
19
18
|
await page.evaluate(() => document.fonts.ready);
|
|
20
19
|
|
|
21
|
-
const screenshot = await page.screenshot({
|
|
20
|
+
const screenshot = await page.screenshot({
|
|
21
|
+
fullPage: true,
|
|
22
|
+
animations: 'disabled',
|
|
23
|
+
});
|
|
22
24
|
expect(screenshot).toMatchSnapshot();
|
|
23
25
|
});
|
|
24
|
-
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React, { useCallback } from 'react';
|
|
2
2
|
import { ControlledFieldProps } from '@digigov/form/Field/types';
|
|
3
3
|
import { FieldOptionProps } from '@digigov/form/inputs/Label';
|
|
4
|
-
import {
|
|
5
|
-
|
|
4
|
+
import {
|
|
5
|
+
AutoComplete,
|
|
6
6
|
AutoCompleteProps as UIAutoCompleteProps,
|
|
7
7
|
} from '@digigov/ui/form/AutoComplete';
|
|
8
|
-
import {
|
|
9
|
-
|
|
8
|
+
import { Hint } from '@digigov/ui/typography/Hint';
|
|
9
|
+
import { Base } from '@digigov/ui/utils/Base';
|
|
10
10
|
export interface AutoCompleteInputExtra
|
|
11
11
|
extends Omit<
|
|
12
12
|
UIAutoCompleteProps,
|
|
@@ -17,7 +17,7 @@ export interface AutoCompleteInputExtra
|
|
|
17
17
|
| 'onConfirm'
|
|
18
18
|
| 'dropdownArrow'
|
|
19
19
|
> {
|
|
20
|
-
options:
|
|
20
|
+
options: FieldOptionProps[];
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export interface AutoCompleteInputProps
|
|
@@ -29,39 +29,43 @@ export interface AutoCompleteInputProps
|
|
|
29
29
|
|
|
30
30
|
export const AutoCompleteInput: React.FC<AutoCompleteInputProps> = ({
|
|
31
31
|
name,
|
|
32
|
-
|
|
32
|
+
type,
|
|
33
|
+
extra: { options },
|
|
33
34
|
onChange,
|
|
34
35
|
value,
|
|
35
|
-
error,
|
|
36
36
|
...props
|
|
37
37
|
}) => {
|
|
38
|
-
const suggest = useCallback(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
38
|
+
const suggest = useCallback(
|
|
39
|
+
function suggest(
|
|
40
|
+
query: string,
|
|
41
|
+
syncResults: (options: any[]) => void
|
|
42
|
+
): void {
|
|
43
|
+
syncResults(
|
|
44
|
+
query
|
|
45
|
+
? options.filter(function (option) {
|
|
46
|
+
return (
|
|
47
|
+
`${option.value} ${option.label?.primary || ''} ${
|
|
48
|
+
option.label?.secondary || ''
|
|
49
|
+
}`
|
|
50
|
+
.toLowerCase()
|
|
51
|
+
.indexOf(query.toLowerCase()) !== -1
|
|
52
|
+
);
|
|
53
|
+
})
|
|
54
|
+
: options
|
|
55
|
+
);
|
|
56
|
+
},
|
|
57
|
+
[options]
|
|
58
|
+
);
|
|
56
59
|
|
|
57
60
|
return (
|
|
58
|
-
<
|
|
59
|
-
multiple={multiple}
|
|
61
|
+
<AutoComplete
|
|
62
|
+
multiple={type === 'choice:multiple' ? true : false}
|
|
60
63
|
source={suggest}
|
|
61
64
|
onConfirm={(value) => {
|
|
62
65
|
if (Array.isArray(value)) {
|
|
63
|
-
const selectedValues = value.map(item => item.value);
|
|
64
|
-
selectedValues.length > 0
|
|
66
|
+
const selectedValues = value.map((item) => item.value);
|
|
67
|
+
if (selectedValues.length > 0) onChange(selectedValues);
|
|
68
|
+
else onChange(undefined);
|
|
65
69
|
} else {
|
|
66
70
|
onChange(value.value);
|
|
67
71
|
}
|
|
@@ -94,4 +98,4 @@ export const AutoCompleteInput: React.FC<AutoCompleteInputProps> = ({
|
|
|
94
98
|
);
|
|
95
99
|
};
|
|
96
100
|
|
|
97
|
-
export default AutoCompleteInput;
|
|
101
|
+
export default AutoCompleteInput;
|
|
@@ -10,24 +10,14 @@ Checkboxes are used to let a user select one or more options of a limited number
|
|
|
10
10
|
|
|
11
11
|
### Default
|
|
12
12
|
|
|
13
|
-
<
|
|
14
|
-
|
|
15
|
-
component="inputs/Checkboxes"
|
|
16
|
-
story="Default.tsx"
|
|
17
|
-
/>
|
|
13
|
+
<code src="@digigov/form/inputs/Checkboxes/__stories__/Default.tsx" />
|
|
14
|
+
|
|
18
15
|
|
|
19
16
|
### Conditional
|
|
20
17
|
|
|
21
|
-
<
|
|
22
|
-
|
|
23
|
-
component="inputs/Checkboxes"
|
|
24
|
-
story="Conditional.tsx"
|
|
25
|
-
/>
|
|
18
|
+
<code src="@digigov/form/inputs/Checkboxes/__stories__/Conditional.tsx" />
|
|
19
|
+
|
|
26
20
|
|
|
27
21
|
### With divider
|
|
28
22
|
|
|
29
|
-
<
|
|
30
|
-
packageName="@digigov/form"
|
|
31
|
-
component="inputs/Checkboxes"
|
|
32
|
-
story="WithDivider.tsx"
|
|
33
|
-
/>
|
|
23
|
+
<code src="@digigov/form/inputs/Checkboxes/__stories__/WithDivider.tsx" />
|
|
@@ -1,28 +1,29 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { test, expect } from '@playwright/experimental-ct-react';
|
|
3
|
-
import TestVariant from '@digigov/ui/utils/TestVariant'
|
|
4
3
|
import { Conditional } from '@digigov/form/inputs/Checkboxes/__stories__/Conditional';
|
|
5
4
|
import { Default } from '@digigov/form/inputs/Checkboxes/__stories__/Default';
|
|
6
5
|
import { WithDivider } from '@digigov/form/inputs/Checkboxes/__stories__/WithDivider';
|
|
6
|
+
import TestVariant from '@digigov/ui/utils/TestVariant';
|
|
7
7
|
|
|
8
8
|
test('renders the All Checkboxes variants', async ({ mount, page }) => {
|
|
9
9
|
await mount(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
</
|
|
21
|
-
|
|
22
|
-
)
|
|
10
|
+
<div>
|
|
11
|
+
<TestVariant title="Conditional">
|
|
12
|
+
<Conditional />
|
|
13
|
+
</TestVariant>
|
|
14
|
+
<TestVariant title="Default">
|
|
15
|
+
<Default />
|
|
16
|
+
</TestVariant>
|
|
17
|
+
<TestVariant title="WithDivider">
|
|
18
|
+
<WithDivider />
|
|
19
|
+
</TestVariant>
|
|
20
|
+
</div>
|
|
21
|
+
);
|
|
23
22
|
await page.evaluate(() => document.fonts.ready);
|
|
24
23
|
|
|
25
|
-
const screenshot = await page.screenshot({
|
|
24
|
+
const screenshot = await page.screenshot({
|
|
25
|
+
fullPage: true,
|
|
26
|
+
animations: 'disabled',
|
|
27
|
+
});
|
|
26
28
|
expect(screenshot).toMatchSnapshot();
|
|
27
29
|
});
|
|
28
|
-
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
2
|
import { ControlledFieldProps } from '@digigov/form/Field/types';
|
|
3
3
|
import { FieldOptionProps } from '@digigov/form/inputs/Label';
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
import {
|
|
5
|
+
Checkbox,
|
|
6
|
+
CheckboxItem,
|
|
7
|
+
CheckboxConditional,
|
|
8
|
+
} from '@digigov/ui/form/Checkbox';
|
|
8
9
|
import { useTranslation } from '@digigov/ui/i18n';
|
|
10
|
+
import { Hint } from '@digigov/ui/typography/Hint';
|
|
9
11
|
|
|
10
12
|
export interface CheckboxesProps
|
|
11
13
|
extends Omit<ControlledFieldProps, 'extra' | 'value'> {
|
|
12
14
|
value?: string[];
|
|
13
15
|
extra: {
|
|
14
16
|
className?: string;
|
|
15
|
-
options:
|
|
17
|
+
options: FieldOptionProps[];
|
|
16
18
|
};
|
|
17
19
|
fieldComponent: React.FC<Omit<ControlledFieldProps, 'value' | 'onChange'>>;
|
|
18
20
|
}
|
|
@@ -29,34 +31,34 @@ export const Checkboxes: React.FC<CheckboxesProps> = ({
|
|
|
29
31
|
if (!value) value = [];
|
|
30
32
|
const handleChange =
|
|
31
33
|
(optionValue, idx, show) =>
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
34
|
+
(evt): void => {
|
|
35
|
+
let newValue;
|
|
36
|
+
if (evt.currentTarget.checked) {
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
38
|
+
// @ts-ignore
|
|
39
|
+
newValue = value.concat([optionValue]);
|
|
40
|
+
} else {
|
|
41
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
42
|
+
// @ts-ignore
|
|
43
|
+
newValue = value.filter((val) => val !== optionValue);
|
|
44
|
+
}
|
|
45
|
+
if (show && show.length > 0) {
|
|
46
|
+
setChecked((items) =>
|
|
47
|
+
items.map((item, index) => (index === idx ? !item : item))
|
|
48
|
+
);
|
|
49
|
+
}
|
|
48
50
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
// reset value to undefined instead of an empty array
|
|
52
|
+
// so the error state mechanism can throw validation errors
|
|
53
|
+
if (newValue.length === 0) newValue = undefined;
|
|
54
|
+
onChange(newValue);
|
|
55
|
+
};
|
|
54
56
|
const { t } = useTranslation();
|
|
55
57
|
const [checked, setChecked] = useState(
|
|
56
58
|
Array<boolean>(options.length).fill(false)
|
|
57
59
|
);
|
|
58
60
|
return (
|
|
59
|
-
<
|
|
61
|
+
<Checkbox className={className}>
|
|
60
62
|
{options.map(
|
|
61
63
|
(
|
|
62
64
|
{
|
|
@@ -103,7 +105,7 @@ export const Checkboxes: React.FC<CheckboxesProps> = ({
|
|
|
103
105
|
</React.Fragment>
|
|
104
106
|
)
|
|
105
107
|
)}
|
|
106
|
-
</
|
|
108
|
+
</Checkbox>
|
|
107
109
|
);
|
|
108
110
|
};
|
|
109
111
|
|
|
@@ -9,21 +9,16 @@ const fields = [
|
|
|
9
9
|
required: true,
|
|
10
10
|
label: {
|
|
11
11
|
primary: 'Πότε εκδόθηκε το διαβατήριο σας;',
|
|
12
|
-
secondary:
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
]
|
|
12
|
+
secondary: 'Για παράδειγμα, 05 11 2020',
|
|
13
|
+
},
|
|
14
|
+
} as const,
|
|
15
|
+
];
|
|
17
16
|
|
|
18
17
|
export const Default = () => (
|
|
19
18
|
<FormBuilder onSubmit={() => console.log('kati')}>
|
|
20
|
-
{fields.map((field) => {
|
|
21
|
-
return
|
|
22
|
-
|
|
23
|
-
<Field {...field} name={field.key} />
|
|
24
|
-
)
|
|
25
|
-
}
|
|
26
|
-
)}
|
|
19
|
+
{fields.map(({ key, ...field }) => {
|
|
20
|
+
return <Field {...field} name={key} key={key} />;
|
|
21
|
+
})}
|
|
27
22
|
<Button type="submit">Συνέχεια</Button>
|
|
28
23
|
</FormBuilder>
|
|
29
24
|
);
|
|
@@ -13,11 +13,4 @@ either with a textbox that validates the input or a special date picker interfac
|
|
|
13
13
|
|
|
14
14
|
### Default
|
|
15
15
|
|
|
16
|
-
<
|
|
17
|
-
packageName="@digigov/form"
|
|
18
|
-
component="inputs/DateInput"
|
|
19
|
-
story="Default.tsx"
|
|
20
|
-
/>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
16
|
+
<code src="@digigov/form/inputs/DateInput/__stories__/Default.tsx" />
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { test, expect } from '@playwright/experimental-ct-react';
|
|
3
|
-
import TestVariant from '@digigov/ui/utils/TestVariant'
|
|
4
3
|
import { Default } from '@digigov/form/inputs/DateInput/__stories__/Default';
|
|
4
|
+
import TestVariant from '@digigov/ui/utils/TestVariant';
|
|
5
5
|
|
|
6
6
|
test('renders the All DateInput variants', async ({ mount, page }) => {
|
|
7
7
|
await mount(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
</
|
|
13
|
-
|
|
14
|
-
)
|
|
8
|
+
<div>
|
|
9
|
+
<TestVariant title="Default">
|
|
10
|
+
<Default />
|
|
11
|
+
</TestVariant>
|
|
12
|
+
</div>
|
|
13
|
+
);
|
|
15
14
|
await page.evaluate(() => document.fonts.ready);
|
|
16
15
|
|
|
17
|
-
const screenshot = await page.screenshot({
|
|
16
|
+
const screenshot = await page.screenshot({
|
|
17
|
+
fullPage: true,
|
|
18
|
+
animations: 'disabled',
|
|
19
|
+
});
|
|
18
20
|
expect(screenshot).toMatchSnapshot();
|
|
19
21
|
});
|
|
20
|
-
|
|
@@ -2,8 +2,10 @@ import React, { useMemo, useState } from 'react';
|
|
|
2
2
|
import dayjs from 'dayjs';
|
|
3
3
|
import customParseFormat from 'dayjs/plugin/customParseFormat';
|
|
4
4
|
import { UncontrolledFieldProps } from '@digigov/form/Field/types';
|
|
5
|
-
import
|
|
6
|
-
|
|
5
|
+
import {
|
|
6
|
+
DateInputContainer,
|
|
7
|
+
DateInputItem,
|
|
8
|
+
} from '@digigov/ui/form/DateInputContainer';
|
|
7
9
|
import { useTranslation } from '@digigov/ui/i18n';
|
|
8
10
|
dayjs.extend(customParseFormat);
|
|
9
11
|
|
|
@@ -75,10 +77,10 @@ const makeDate = (val) => {
|
|
|
75
77
|
};
|
|
76
78
|
|
|
77
79
|
const DatePart = ({ label, ...props }) => {
|
|
78
|
-
return <
|
|
80
|
+
return <DateInputItem {...props}>{label}</DateInputItem>;
|
|
79
81
|
};
|
|
80
82
|
|
|
81
|
-
export const DateInput = ({ name,
|
|
83
|
+
export const DateInput = ({ name, ...props }) => {
|
|
82
84
|
const { t } = useTranslation();
|
|
83
85
|
const [initial] = useState(props.value);
|
|
84
86
|
const value = useMemo(() => {
|
|
@@ -12,8 +12,4 @@ Input element of type `file` let the user choose one or more files from their de
|
|
|
12
12
|
|
|
13
13
|
### Default
|
|
14
14
|
|
|
15
|
-
<
|
|
16
|
-
packageName="@digigov/form"
|
|
17
|
-
component="inputs/FileInput"
|
|
18
|
-
story="Default.tsx"
|
|
19
|
-
/>
|
|
15
|
+
<code src="@digigov/form/inputs/FileInput/__stories__/Default.tsx" />
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { test, expect } from '@playwright/experimental-ct-react';
|
|
3
|
-
import TestVariant from '@digigov/ui/utils/TestVariant'
|
|
4
3
|
import { Default } from '@digigov/form/inputs/FileInput/__stories__/Default';
|
|
4
|
+
import TestVariant from '@digigov/ui/utils/TestVariant';
|
|
5
5
|
|
|
6
6
|
test('renders the All FileInput variants', async ({ mount, page }) => {
|
|
7
7
|
await mount(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
</
|
|
13
|
-
|
|
14
|
-
)
|
|
8
|
+
<div>
|
|
9
|
+
<TestVariant title="Default">
|
|
10
|
+
<Default />
|
|
11
|
+
</TestVariant>
|
|
12
|
+
</div>
|
|
13
|
+
);
|
|
15
14
|
await page.evaluate(() => document.fonts.ready);
|
|
16
15
|
|
|
17
|
-
const screenshot = await page.screenshot({
|
|
16
|
+
const screenshot = await page.screenshot({
|
|
17
|
+
fullPage: true,
|
|
18
|
+
animations: 'disabled',
|
|
19
|
+
});
|
|
18
20
|
expect(screenshot).toMatchSnapshot();
|
|
19
21
|
});
|
|
20
|
-
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
2
|
import { UncontrolledFieldProps } from '@digigov/form/Field/types';
|
|
3
|
-
import
|
|
4
|
-
import FileUploadContainer from '@digigov/
|
|
5
|
-
import CoreHint from '@digigov/react-core/Hint';
|
|
6
|
-
import Button from '@digigov/ui/form/Button';
|
|
3
|
+
import { Button } from '@digigov/ui/form/Button';
|
|
4
|
+
import { FileUpload, FileUploadContainer } from '@digigov/ui/form/FileUpload';
|
|
7
5
|
import { useTranslation } from '@digigov/ui/i18n';
|
|
8
|
-
import
|
|
6
|
+
import { Hint } from '@digigov/ui/typography/Hint';
|
|
7
|
+
import { Paragraph } from '@digigov/ui/typography/Paragraph';
|
|
9
8
|
export interface FileInputProps extends Omit<UncontrolledFieldProps, 'extra'> {
|
|
10
9
|
extra?: {
|
|
11
10
|
className?: string;
|
|
@@ -19,11 +18,11 @@ export interface FileInputProps extends Omit<UncontrolledFieldProps, 'extra'> {
|
|
|
19
18
|
|
|
20
19
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
20
|
export const FileInput: React.FC<any> = React.forwardRef(function FileInput(
|
|
22
|
-
{ name,
|
|
21
|
+
{ name, disabled, reset, onChange, ...props },
|
|
23
22
|
ref: any
|
|
24
23
|
) {
|
|
25
24
|
const { t } = useTranslation();
|
|
26
|
-
const [files, setFiles] = useState<
|
|
25
|
+
const [files, setFiles] = useState<string[] | undefined>([]);
|
|
27
26
|
const handleChange = (e) => {
|
|
28
27
|
const target = e.target as HTMLInputElement;
|
|
29
28
|
const selectedFiles = Array.from(
|
|
@@ -44,7 +43,7 @@ export const FileInput: React.FC<any> = React.forwardRef(function FileInput(
|
|
|
44
43
|
</Paragraph>
|
|
45
44
|
</>
|
|
46
45
|
) : (
|
|
47
|
-
<
|
|
46
|
+
<Hint>{t('upload.no_file')}</Hint>
|
|
48
47
|
)}
|
|
49
48
|
<FileUpload
|
|
50
49
|
ref={ref}
|
|
@@ -5,5 +5,5 @@ export default {
|
|
|
5
5
|
displayName: 'ImageInput',
|
|
6
6
|
};
|
|
7
7
|
export { Default } from '@digigov/form/inputs/ImageInput/__stories__/Default';
|
|
8
|
-
export { WithInvalidImageSize } from '@digigov/form/inputs/ImageInput/__stories__/WithInvalidImageSize';
|
|
9
8
|
export { WithInvalidImageDimension } from '@digigov/form/inputs/ImageInput/__stories__/WithInvalidImageDimension';
|
|
9
|
+
export { MaxSize } from '@digigov/form/inputs/ImageInput/__stories__/MaxSize';
|