@digigov/form 2.0.0-85c27c19 → 2.0.0-aefd0709
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/FieldBase/index.js +1 -0
- package/Field/FieldBase.js.map +2 -2
- package/Field/FieldBaseContainer/index.js +2 -2
- package/Field/FieldBaseContainer.js.map +2 -2
- package/Field/FieldConditional/index.js +7 -3
- package/Field/FieldConditional.js.map +2 -2
- package/Field/index.js +5 -2
- package/Field/index.js.map +2 -2
- package/Field/types.d.ts +10 -8
- package/Field/utils/index.d.ts +1 -0
- package/Field/utils/index.js +18 -1
- package/Field/utils/index.js.map +2 -2
- package/FieldArray/index.d.ts +1 -0
- package/FieldArray/index.js +7 -6
- package/FieldArray/index.js.map +2 -2
- package/FieldObject/index.d.ts +2 -0
- package/FieldObject/index.js +9 -5
- 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 -3
- package/FormBuilder/index.d.ts +8 -2
- package/FormBuilder/index.js +150 -6
- package/FormBuilder/index.js.map +3 -3
- package/FormContext.js.map +2 -2
- package/MultiplicityField/add-objects/index.js +11 -7
- package/MultiplicityField/add-objects.js.map +2 -2
- package/MultiplicityField/index.js +16 -12
- 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/QuestionsContext.d.ts +0 -1
- package/Questions/Step/StepArrayReview.js.map +2 -2
- package/Questions/Step/StepContext.d.ts +0 -1
- 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/Questions/Step/types.d.ts +0 -1
- package/Questions/types.d.ts +0 -1
- package/cjs/Field/FieldBase/index.js +1 -0
- package/cjs/Field/FieldBase.js.map +2 -2
- package/cjs/Field/FieldBaseContainer/index.js +4 -4
- package/cjs/Field/FieldBaseContainer.js.map +3 -3
- package/cjs/Field/FieldConditional/index.js +7 -3
- package/cjs/Field/FieldConditional.js.map +2 -2
- package/cjs/Field/index.js +5 -2
- package/cjs/Field/index.js.map +2 -2
- package/cjs/Field/types.js.map +1 -1
- package/cjs/Field/utils/index.js +18 -0
- package/cjs/Field/utils/index.js.map +2 -2
- package/cjs/FieldArray/index.js +8 -7
- package/cjs/FieldArray/index.js.map +3 -3
- package/cjs/FieldObject/index.js +10 -6
- 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 +165 -5
- 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 +15 -11
- package/cjs/MultiplicityField/add-objects.js.map +3 -3
- package/cjs/MultiplicityField/index.js +15 -16
- 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/index.js +11 -155
- package/cjs/index.js.map +4 -4
- 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 +10 -8
- package/cjs/inputs/AutoCompleteInput/index.js.map +3 -3
- package/cjs/inputs/Checkboxes/index.js +7 -9
- 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 +9 -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 +19 -6
- package/cjs/inputs/Input/index.js.map +3 -3
- 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/__stories__/Conditional.js.map +2 -2
- package/cjs/inputs/Radio/index.js +56 -10
- 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 -59
- 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.d.ts +5 -8
- package/index.js +9 -152
- package/index.js.map +4 -4
- 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 +12 -8
- package/inputs/AutoCompleteInput/index.js.map +2 -2
- package/inputs/Checkboxes/index.d.ts +1 -1
- package/inputs/Checkboxes/index.js +8 -6
- 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 +8 -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 +17 -4
- package/inputs/Input/index.js.map +3 -3
- 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/__stories__/Conditional.js.map +2 -2
- package/inputs/Radio/index.d.ts +5 -1
- package/inputs/Radio/index.js +57 -8
- 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 -59
- package/lazy.d.ts +17 -10
- 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/FieldBase.tsx +1 -0
- package/src/Field/FieldBaseContainer.tsx +2 -2
- package/src/Field/FieldConditional.tsx +4 -0
- package/src/Field/index.tsx +4 -1
- package/src/Field/types.tsx +10 -8
- package/src/Field/utils/index.ts +18 -1
- package/src/FieldArray/index.test.tsx +14 -13
- package/src/FieldArray/index.tsx +9 -6
- package/src/FieldObject/index.tsx +8 -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 +178 -7
- package/src/FormBuilder/scenarios.test.tsx +2 -2
- package/src/FormContext.tsx +1 -2
- package/src/MultiplicityField/add-objects.tsx +10 -8
- package/src/MultiplicityField/{MultiplicityField.mdx → doc.mdx} +12 -16
- package/src/MultiplicityField/index.test.tsx +26 -25
- package/src/MultiplicityField/index.tsx +15 -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/index.ts +6 -0
- 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 +36 -31
- 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 +10 -8
- 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 +32 -29
- 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/__stories__/Conditional.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 +76 -10
- 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 -62
- package/src/locales/el.ts +1 -1
- package/src/registry.js +121 -45
- package/src/types.tsx +3 -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 +3 -3
- 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/index.tsx +0 -178
- 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,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,11 +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
|
-
|
|
8
|
+
import { Hint } from '@digigov/ui/typography/Hint';
|
|
9
|
+
import { Base } from '@digigov/ui/utils/Base';
|
|
9
10
|
export interface AutoCompleteInputExtra
|
|
10
11
|
extends Omit<
|
|
11
12
|
UIAutoCompleteProps,
|
|
@@ -16,7 +17,7 @@ export interface AutoCompleteInputExtra
|
|
|
16
17
|
| 'onConfirm'
|
|
17
18
|
| 'dropdownArrow'
|
|
18
19
|
> {
|
|
19
|
-
options:
|
|
20
|
+
options: FieldOptionProps[];
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
export interface AutoCompleteInputProps
|
|
@@ -28,39 +29,43 @@ export interface AutoCompleteInputProps
|
|
|
28
29
|
|
|
29
30
|
export const AutoCompleteInput: React.FC<AutoCompleteInputProps> = ({
|
|
30
31
|
name,
|
|
31
|
-
|
|
32
|
+
type,
|
|
33
|
+
extra: { options },
|
|
32
34
|
onChange,
|
|
33
35
|
value,
|
|
34
|
-
error,
|
|
35
36
|
...props
|
|
36
37
|
}) => {
|
|
37
|
-
const suggest = useCallback(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
+
);
|
|
55
59
|
|
|
56
60
|
return (
|
|
57
|
-
<
|
|
58
|
-
multiple={multiple}
|
|
61
|
+
<AutoComplete
|
|
62
|
+
multiple={type === 'choice:multiple' ? true : false}
|
|
59
63
|
source={suggest}
|
|
60
64
|
onConfirm={(value) => {
|
|
61
65
|
if (Array.isArray(value)) {
|
|
62
|
-
const selectedValues = value.map(item => item.value);
|
|
63
|
-
selectedValues.length > 0
|
|
66
|
+
const selectedValues = value.map((item) => item.value);
|
|
67
|
+
if (selectedValues.length > 0) onChange(selectedValues);
|
|
68
|
+
else onChange(undefined);
|
|
64
69
|
} else {
|
|
65
70
|
onChange(value.value);
|
|
66
71
|
}
|
|
@@ -68,10 +73,10 @@ export const AutoCompleteInput: React.FC<AutoCompleteInputProps> = ({
|
|
|
68
73
|
templates={{
|
|
69
74
|
suggestion({ label, value }) {
|
|
70
75
|
return (
|
|
71
|
-
<div>
|
|
76
|
+
<Base as="div">
|
|
72
77
|
{(label && label.primary && label.primary) || value}
|
|
73
78
|
{label && label.secondary && <Hint>{label.secondary}</Hint>}
|
|
74
|
-
</
|
|
79
|
+
</Base>
|
|
75
80
|
);
|
|
76
81
|
},
|
|
77
82
|
inputValue: (option) => {
|
|
@@ -93,4 +98,4 @@ export const AutoCompleteInput: React.FC<AutoCompleteInputProps> = ({
|
|
|
93
98
|
);
|
|
94
99
|
};
|
|
95
100
|
|
|
96
|
-
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
|
}
|
|
@@ -23,7 +25,7 @@ export const Checkboxes: React.FC<CheckboxesProps> = ({
|
|
|
23
25
|
value,
|
|
24
26
|
extra: { options, className },
|
|
25
27
|
disabled,
|
|
26
|
-
|
|
28
|
+
Field,
|
|
27
29
|
...props
|
|
28
30
|
}) => {
|
|
29
31
|
if (!value) value = [];
|
|
@@ -56,7 +58,7 @@ export const Checkboxes: React.FC<CheckboxesProps> = ({
|
|
|
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';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import FormBuilder, { Field, Fieldset } from '@digigov/form';
|
|
3
|
+
import { FieldSpec } from '@digigov/form/types';
|
|
4
|
+
import { Button } from '@digigov/ui/form/Button';
|
|
5
|
+
const FIELDS: FieldSpec[] = [
|
|
6
|
+
{
|
|
7
|
+
key: 'image',
|
|
8
|
+
type: 'image',
|
|
9
|
+
required: true,
|
|
10
|
+
label: {
|
|
11
|
+
primary: 'Ανέβασμα φωτογραφίας',
|
|
12
|
+
secondary: 'Μέγιστο μέγεθος φωτογραφίας: 10KB.',
|
|
13
|
+
},
|
|
14
|
+
extra: {
|
|
15
|
+
limit: {
|
|
16
|
+
maxSize: 1000,
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
];
|
|
21
|
+
|
|
22
|
+
export const MaxSize = () => (
|
|
23
|
+
<FormBuilder
|
|
24
|
+
fields={FIELDS}
|
|
25
|
+
onSubmit={(data) => {
|
|
26
|
+
console.log(data);
|
|
27
|
+
}}
|
|
28
|
+
>
|
|
29
|
+
<Fieldset>
|
|
30
|
+
{FIELDS.map((field) => (
|
|
31
|
+
<Field key={field.key} name={field.key} />
|
|
32
|
+
))}
|
|
33
|
+
</Fieldset>
|
|
34
|
+
<Button type="submit">Συνέχεια</Button>
|
|
35
|
+
</FormBuilder>
|
|
36
|
+
);
|
|
37
|
+
export default MaxSize;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Image Input
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Image input
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Input element of type `image` defines an image as a submit button, i.e. submit buttons that take the form of an image rather than text.
|
|
10
|
+
|
|
11
|
+
## How to use
|
|
12
|
+
|
|
13
|
+
### Default
|
|
14
|
+
|
|
15
|
+
<code src="@digigov/form/inputs/ImageInput/__stories__/Default.tsx" />
|
|
16
|
+
|
|
17
|
+
### Display with max size
|
|
18
|
+
|
|
19
|
+
<code src="@digigov/form/inputs/ImageInput/__stories__/MaxSize.tsx" />
|
|
20
|
+
|
|
21
|
+
### Display with min and max image dimensions
|
|
22
|
+
|
|
23
|
+
<code src="@digigov/form/inputs/ImageInput/__stories__/WithInvalidImageDimension.tsx" />
|
|
@@ -1,28 +1,33 @@
|
|
|
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/ImageInput/__stories__/Default';
|
|
4
|
+
import { MaxSize } from '@digigov/form/inputs/ImageInput/__stories__/MaxSize';
|
|
5
5
|
import { WithInvalidImageDimension } from '@digigov/form/inputs/ImageInput/__stories__/WithInvalidImageDimension';
|
|
6
6
|
import { WithInvalidImageSize } from '@digigov/form/inputs/ImageInput/__stories__/WithInvalidImageSize';
|
|
7
|
+
import TestVariant from '@digigov/ui/utils/TestVariant';
|
|
7
8
|
|
|
8
9
|
test('renders the All ImageInput variants', async ({ mount, page }) => {
|
|
9
10
|
await mount(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
<div>
|
|
12
|
+
<TestVariant title="Default">
|
|
13
|
+
<Default />
|
|
14
|
+
</TestVariant>
|
|
15
|
+
<TestVariant title="MaxSize">
|
|
16
|
+
<MaxSize />
|
|
17
|
+
</TestVariant>
|
|
18
|
+
<TestVariant title="WithInvalidImageDimension">
|
|
19
|
+
<WithInvalidImageDimension />
|
|
20
|
+
</TestVariant>
|
|
21
|
+
<TestVariant title="WithInvalidImageSize">
|
|
22
|
+
<WithInvalidImageSize />
|
|
23
|
+
</TestVariant>
|
|
24
|
+
</div>
|
|
25
|
+
);
|
|
23
26
|
await page.evaluate(() => document.fonts.ready);
|
|
24
27
|
|
|
25
|
-
const screenshot = await page.screenshot({
|
|
28
|
+
const screenshot = await page.screenshot({
|
|
29
|
+
fullPage: true,
|
|
30
|
+
animations: 'disabled',
|
|
31
|
+
});
|
|
26
32
|
expect(screenshot).toMatchSnapshot();
|
|
27
33
|
});
|
|
28
|
-
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import React, { useState, useCallback } 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, { ButtonGroup } from '@digigov/ui/form/Button';
|
|
3
|
+
import { Button, ButtonGroup } from '@digigov/ui/form/Button';
|
|
4
|
+
import { FileUpload, FileUploadContainer } from '@digigov/ui/form/FileUpload';
|
|
7
5
|
import { useTranslation } from '@digigov/ui/i18n';
|
|
8
|
-
import
|
|
9
|
-
|
|
6
|
+
import { Hint } from '@digigov/ui/typography/Hint';
|
|
7
|
+
import { Paragraph } from '@digigov/ui/typography/Paragraph';
|
|
8
|
+
import { Base } from '@digigov/ui/utils/Base';
|
|
10
9
|
export interface ImageProps {
|
|
11
10
|
src?: any;
|
|
12
11
|
}
|
|
@@ -20,7 +19,7 @@ export interface Limit {
|
|
|
20
19
|
}
|
|
21
20
|
|
|
22
21
|
export const Image: React.FC<ImageProps> = React.memo(function Image({ src }) {
|
|
23
|
-
return <img src={src} className="ds-image--ratio" />;
|
|
22
|
+
return <Base as="img" src={src} className="ds-image--ratio" />;
|
|
24
23
|
});
|
|
25
24
|
export interface ImageInputProps extends Omit<UncontrolledFieldProps, 'extra'> {
|
|
26
25
|
extra?: {
|
|
@@ -34,10 +33,7 @@ export interface ImageInputProps extends Omit<UncontrolledFieldProps, 'extra'> {
|
|
|
34
33
|
}
|
|
35
34
|
|
|
36
35
|
export const ImageInput: React.FC<ImageInputProps> = React.forwardRef(
|
|
37
|
-
function ImageInput(
|
|
38
|
-
{ name, extra = {}, disabled, onChange, reset, ...props },
|
|
39
|
-
ref: any
|
|
40
|
-
) {
|
|
36
|
+
function ImageInput({ name, disabled, onChange, reset, ...props }, ref: any) {
|
|
41
37
|
const { t } = useTranslation();
|
|
42
38
|
const [selectedImage, setSelectedImage] = useState<File | null>(null);
|
|
43
39
|
const [imageUrl, setImageUrl] = useState<string | null>(null);
|
|
@@ -72,13 +68,12 @@ export const ImageInput: React.FC<ImageInputProps> = React.forwardRef(
|
|
|
72
68
|
{selectedImage !== null ? (
|
|
73
69
|
<>
|
|
74
70
|
<Paragraph>
|
|
75
|
-
<b>{t('upload.image')}:</
|
|
71
|
+
<Base as="b">{t('upload.image')}:</Base>{' '}
|
|
72
|
+
{`${selectedImage?.name}`}
|
|
76
73
|
</Paragraph>
|
|
77
74
|
</>
|
|
78
75
|
) : (
|
|
79
|
-
<
|
|
80
|
-
{t('upload.no_image')}
|
|
81
|
-
</CoreHint>
|
|
76
|
+
<Hint className="ds-dashed--border">{t('upload.no_image')}</Hint>
|
|
82
77
|
)}
|
|
83
78
|
<>
|
|
84
79
|
{selectedImage !== null && <Image src={imageUrl} />}
|