@uides/stepwise 2.0.0-32ae417f → 2.0.0-385c7994
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/LICENSE +0 -0
- package/generators/componentExtractor.d.mts +1 -0
- package/generators/componentReducer.d.mts +1 -0
- package/generators/templateGenerator.d.mts +1 -0
- package/index.d.ts +2 -0
- package/index.js +7 -0
- package/package.json +6 -21
- package/schemas/action.d.ts +2366 -0
- package/schemas/action.js +196 -0
- package/schemas/application.d.ts +19 -0
- package/schemas/application.js +14 -0
- package/schemas/attributes.d.ts +16 -0
- package/schemas/attributes.js +14 -0
- package/schemas/common.d.ts +25 -0
- package/schemas/common.js +41 -0
- package/schemas/document.d.ts +395 -0
- package/schemas/document.js +79 -0
- package/schemas/edupass-healthstate.d.ts +77 -0
- package/schemas/edupass-healthstate.js +76 -0
- package/schemas/field/afm/index.d.ts +52 -0
- package/schemas/field/afm/index.js +20 -0
- package/schemas/field/amka/index.d.ts +60 -0
- package/schemas/field/amka/index.js +21 -0
- package/schemas/field/attachment/index.d.ts +68 -0
- package/schemas/field/attachment/index.js +38 -0
- package/schemas/field/captcha/index.d.ts +48 -0
- package/schemas/field/captcha/index.js +15 -0
- package/schemas/field/choice/index.d.ts +73 -0
- package/schemas/field/choice/index.js +32 -0
- package/schemas/field/common.d.ts +82 -0
- package/schemas/field/common.js +63 -0
- package/schemas/field/consent-content/index.d.ts +68 -0
- package/schemas/field/consent-content/index.js +19 -0
- package/schemas/field/date/index.d.ts +90 -0
- package/schemas/field/date/index.js +42 -0
- package/schemas/field/doc_subtitle/index.d.ts +51 -0
- package/schemas/field/doc_subtitle/index.js +14 -0
- package/schemas/field/doc_title/index.d.ts +60 -0
- package/schemas/field/doc_title/index.js +21 -0
- package/schemas/field/dynamically-filled-text/index.d.ts +85 -0
- package/schemas/field/dynamically-filled-text/index.js +36 -0
- package/schemas/field/email/index.d.ts +60 -0
- package/schemas/field/email/index.js +21 -0
- package/schemas/field/fillable-string/index.d.ts +64 -0
- package/schemas/field/fillable-string/index.js +25 -0
- package/schemas/field/five-block-date/index.d.ts +48 -0
- package/schemas/field/five-block-date/index.js +15 -0
- package/schemas/field/hidden/index.d.ts +59 -0
- package/schemas/field/hidden/index.js +25 -0
- package/schemas/field/hierarchical-selector/index.d.ts +89 -0
- package/schemas/field/hierarchical-selector/index.js +35 -0
- package/schemas/field/iban/index.d.ts +58 -0
- package/schemas/field/iban/index.js +19 -0
- package/schemas/field/image/index.d.ts +68 -0
- package/schemas/field/image/index.js +36 -0
- package/schemas/field/image-crop/index.d.ts +59 -0
- package/schemas/field/image-crop/index.js +19 -0
- package/schemas/field/index.d.ts +48 -0
- package/schemas/field/index.js +167 -0
- package/schemas/field/int/index.d.ts +60 -0
- package/schemas/field/int/index.js +21 -0
- package/schemas/field/intl_mobile_phone/index.d.ts +49 -0
- package/schemas/field/intl_mobile_phone/index.js +15 -0
- package/schemas/field/lab-results/index.d.ts +49 -0
- package/schemas/field/lab-results/index.js +12 -0
- package/schemas/field/landline_phone/index.d.ts +48 -0
- package/schemas/field/landline_phone/index.js +14 -0
- package/schemas/field/link/index.d.ts +50 -0
- package/schemas/field/link/index.js +16 -0
- package/schemas/field/mobile_phone/index.d.ts +51 -0
- package/schemas/field/mobile_phone/index.js +18 -0
- package/schemas/field/multiple-choice/index.d.ts +70 -0
- package/schemas/field/multiple-choice/index.js +31 -0
- package/schemas/field/password/index.d.ts +48 -0
- package/schemas/field/password/index.js +15 -0
- package/schemas/field/pdf-image/index.d.ts +66 -0
- package/schemas/field/pdf-image/index.js +27 -0
- package/schemas/field/phone/index.d.ts +48 -0
- package/schemas/field/phone/index.js +14 -0
- package/schemas/field/postal_code/index.d.ts +50 -0
- package/schemas/field/postal_code/index.js +17 -0
- package/schemas/field/preference-multiple-choice/index.d.ts +90 -0
- package/schemas/field/preference-multiple-choice/index.js +31 -0
- package/schemas/field/qrcode/index.d.ts +71 -0
- package/schemas/field/qrcode/index.js +30 -0
- package/schemas/field/quote/index.d.ts +63 -0
- package/schemas/field/quote/index.js +30 -0
- package/schemas/field/radio-choice/index.d.ts +67 -0
- package/schemas/field/radio-choice/index.js +31 -0
- package/schemas/field/rate/index.d.ts +60 -0
- package/schemas/field/rate/index.js +18 -0
- package/schemas/field/recipient/index.d.ts +51 -0
- package/schemas/field/recipient/index.js +20 -0
- package/schemas/field/redirect/index.d.ts +52 -0
- package/schemas/field/redirect/index.js +15 -0
- package/schemas/field/refcode/index.d.ts +68 -0
- package/schemas/field/refcode/index.js +29 -0
- package/schemas/field/string/index.d.ts +135 -0
- package/schemas/field/string/index.js +80 -0
- package/schemas/field/text/index.d.ts +85 -0
- package/schemas/field/text/index.js +45 -0
- package/schemas/field/three-block-date/index.d.ts +64 -0
- package/schemas/field/three-block-date/index.js +26 -0
- package/schemas/field/url-param/index.d.ts +57 -0
- package/schemas/field/url-param/index.js +14 -0
- package/schemas/fieldset/component-params.d.ts +102 -0
- package/schemas/fieldset/component-params.js +63 -0
- package/schemas/fieldset/display-components.d.ts +353 -0
- package/schemas/fieldset/display-components.js +36 -0
- package/schemas/fieldset/enums.d.ts +32 -0
- package/schemas/fieldset/enums.js +21 -0
- package/schemas/fieldset/index.d.ts +180 -0
- package/schemas/fieldset/index.js +11 -0
- package/schemas/index.d.ts +15 -0
- package/schemas/index.js +15 -0
- package/schemas/layout.d.ts +91 -0
- package/schemas/layout.js +43 -0
- package/schemas/outputs.d.ts +44 -0
- package/schemas/outputs.js +15 -0
- package/schemas/resolve.d.ts +5 -0
- package/schemas/resolve.js +13 -0
- package/schemas/resource/enums.d.ts +58 -0
- package/schemas/resource/enums.js +41 -0
- package/schemas/resource/field.d.ts +15 -0
- package/schemas/resource/field.js +12 -0
- package/schemas/resource/index.d.ts +5 -0
- package/schemas/resource/index.js +5 -0
- package/schemas/resource/object-action.d.ts +30 -0
- package/schemas/resource/object-action.js +24 -0
- package/schemas/resource/resource-action.d.ts +35 -0
- package/schemas/resource/resource-action.js +29 -0
- package/schemas/resource/resource.d.ts +133 -0
- package/schemas/resource/resource.js +31 -0
- package/schemas/step.d.ts +592 -0
- package/schemas/step.js +115 -0
- package/schemas/template/index.d.ts +2 -0
- package/schemas/template/index.js +2 -0
- package/schemas/template/template-base.d.ts +53 -0
- package/schemas/template/template-base.js +15 -0
- package/schemas/template/template-source.d.ts +50 -0
- package/schemas/template/template-source.js +14 -0
- package/schemas/template/template.d.ts +54 -0
- package/schemas/template/template.js +22 -0
- package/schemas/validation-context/enums.d.ts +10 -0
- package/schemas/validation-context/enums.js +7 -0
- package/schemas/validation-context/index.d.ts +2 -0
- package/schemas/validation-context/index.js +2 -0
- package/schemas/validation-context/validation-context.d.ts +131 -0
- package/schemas/validation-context/validation-context.js +55 -0
- package/src/schemas/action.ts +15 -0
- package/src/schemas/common.ts +16 -0
- package/src/schemas/field/afm/index.ts +2 -18
- package/src/schemas/field/amka/index.ts +7 -2
- package/src/schemas/field/attachment/index.ts +12 -24
- package/src/schemas/field/choice/index.ts +2 -13
- package/src/schemas/field/common.ts +75 -51
- package/src/schemas/field/consent-content/index.ts +28 -0
- package/src/schemas/field/date/index.ts +5 -32
- package/src/schemas/field/doc_subtitle/index.ts +1 -0
- package/src/schemas/field/doc_title/index.ts +9 -16
- package/src/schemas/field/dynamically-filled-text/index.ts +4 -5
- package/src/schemas/field/email/index.ts +6 -9
- package/src/schemas/field/fillable-string/index.ts +1 -1
- package/src/schemas/field/hidden/index.ts +4 -43
- package/src/schemas/field/hierarchical-selector/index.ts +3 -9
- package/src/schemas/field/image/index.ts +5 -24
- package/src/schemas/field/image-crop/index.ts +25 -0
- package/src/schemas/field/index.spec.ts +0 -42
- package/src/schemas/field/index.ts +64 -12
- package/src/schemas/field/int/index.ts +2 -0
- package/src/schemas/field/intl_mobile_phone/index.ts +19 -0
- package/src/schemas/field/lab-results/index.ts +1 -2
- package/src/schemas/field/link/index.ts +20 -0
- package/src/schemas/field/mobile_phone/index.ts +1 -12
- package/src/schemas/field/multiple-choice/index.ts +4 -3
- package/src/schemas/field/password/index.ts +18 -0
- package/src/schemas/field/pdf-image/index.ts +3 -15
- package/src/schemas/field/phone/index.ts +18 -0
- package/src/schemas/field/postal_code/index.ts +1 -1
- package/src/schemas/field/preference-multiple-choice/index.ts +41 -0
- package/src/schemas/field/qrcode/index.ts +1 -0
- package/src/schemas/field/quote/index.ts +2 -19
- package/src/schemas/field/radio-choice/index.ts +1 -7
- package/src/schemas/field/rate/index.ts +1 -9
- package/src/schemas/field/recipient/index.ts +2 -2
- package/src/schemas/field/redirect/index.ts +4 -13
- package/src/schemas/field/refcode/index.ts +10 -15
- package/src/schemas/field/string/index.ts +13 -0
- package/src/schemas/field/text/index.ts +4 -18
- package/src/schemas/field/url-param/index.ts +23 -0
- package/src/schemas/resolve.ts +3 -0
- package/src/schemas/step.ts +2 -0
- package/src/schemas/template/index.ts +0 -1
- package/src/schemas/template/template-base.ts +0 -10
- package/src/schemas/template/template.ts +1 -2
- package/src/schemas/validation-context/enums.ts +0 -16
- package/src/schemas/validation-context/validation-context.ts +2 -4
- package/src/utils/index.ts +10 -1
- package/utils/index.d.ts +6 -0
- package/utils/index.js +55 -0
- package/.prettierrc.js +0 -1
- package/.rush/temp/chunked-rush-logs/stepwise.build.chunks.jsonl +0 -6
- package/.rush/temp/package-deps_build.json +0 -185
- package/.rush/temp/shrinkwrap-deps.json +0 -303
- package/eslint.config.mjs +0 -3
- package/rush-logs/stepwise.build.log +0 -6
- package/src/schemas/field/green-pass-qrcode/index.ts +0 -27
- package/src/schemas/template/enums.ts +0 -22
- package/tsconfig.json +0 -25
|
@@ -4,15 +4,20 @@ import { createFieldDisplay } from '@uides/stepwise/schemas/field/common';
|
|
|
4
4
|
const AmkaDisplaySchema = createFieldDisplay(
|
|
5
5
|
v.strictObject({
|
|
6
6
|
component: v.literal('amka'),
|
|
7
|
+
'component-params': v.nullish(
|
|
8
|
+
v.strictObject({
|
|
9
|
+
textColor: v.nullish(v.string()),
|
|
10
|
+
})
|
|
11
|
+
),
|
|
7
12
|
})
|
|
8
13
|
);
|
|
9
14
|
|
|
10
15
|
const AmkaSchema = v.strictObject({
|
|
11
16
|
'user-input-mode': v.picklist(['noinput', 'optional', 'required']),
|
|
12
|
-
|
|
13
|
-
attribute: v.optional(v.null_()),
|
|
17
|
+
attribute: v.nullish(v.string()),
|
|
14
18
|
display: AmkaDisplaySchema,
|
|
15
19
|
datatype: v.nullish(v.literal('amka')),
|
|
20
|
+
'default-value': v.nullish(v.string()),
|
|
16
21
|
});
|
|
17
22
|
|
|
18
23
|
export type AmkaType = v.InferOutput<typeof AmkaSchema>;
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import * as v from 'valibot';
|
|
2
2
|
import { createFieldDisplay } from '@uides/stepwise/schemas/field/common';
|
|
3
3
|
|
|
4
|
+
const CommonAttachmentComponentParamsSchema = v.strictObject({
|
|
5
|
+
filetype: v.nullish(v.picklist(['pdf', 'pdf-for-mark'])),
|
|
6
|
+
'file-max-size': v.nullish(v.number()),
|
|
7
|
+
});
|
|
8
|
+
|
|
4
9
|
const AttachmentDisplaySchema = createFieldDisplay(
|
|
5
10
|
v.strictObject({
|
|
6
11
|
component: v.literal('attachment'),
|
|
7
12
|
'component-params': v.nullish(
|
|
8
13
|
v.strictObject({
|
|
9
|
-
|
|
10
|
-
|
|
14
|
+
...CommonAttachmentComponentParamsSchema.entries,
|
|
15
|
+
multiplicity: v.nullish(v.number()),
|
|
11
16
|
})
|
|
12
17
|
),
|
|
13
18
|
}),
|
|
@@ -16,38 +21,21 @@ const AttachmentDisplaySchema = createFieldDisplay(
|
|
|
16
21
|
'component-params': v.nullish(
|
|
17
22
|
// TODO: Make pdf component-params also inherit default component-params
|
|
18
23
|
v.strictObject({
|
|
19
|
-
|
|
20
|
-
'file-max-size': v.nullish(v.number()),
|
|
24
|
+
...CommonAttachmentComponentParamsSchema.entries,
|
|
21
25
|
coordinates: v.nullish(v.array(v.nullable(v.number()))),
|
|
22
26
|
})
|
|
23
27
|
),
|
|
24
28
|
})
|
|
25
29
|
);
|
|
26
30
|
|
|
27
|
-
const AttachmentAttributeSchema = v.nullish(
|
|
28
|
-
v.picklist([
|
|
29
|
-
'cert_registry:pdf',
|
|
30
|
-
'cert_registry_v2:certificate',
|
|
31
|
-
'document_submission:uploaded_attachments/fieldatt1',
|
|
32
|
-
'document_submission:uploaded_attachments/fieldatt2',
|
|
33
|
-
'file_for_pdfmark:attachment',
|
|
34
|
-
'find_idiotiko_sym:attachment',
|
|
35
|
-
'find_idiotiko_sym_service:attachments/attachment',
|
|
36
|
-
'find_yde:attachment',
|
|
37
|
-
'gov_wallet_crop_id_photo:cropped_police_id_photo',
|
|
38
|
-
'gov_wallet_id_photo:original_police_id_photo',
|
|
39
|
-
'medcert_bebaiosi:pdf',
|
|
40
|
-
'find_evaluation_b:agreement',
|
|
41
|
-
'find_evaluation_b:first_meeting_objections',
|
|
42
|
-
'find_evaluation_b:second_meeting_objections',
|
|
43
|
-
])
|
|
44
|
-
);
|
|
45
|
-
|
|
46
31
|
const AttachmentSchema = v.strictObject({
|
|
47
32
|
'user-input-mode': v.picklist(['noinput', 'optional', 'required', 'display']),
|
|
48
33
|
datatype: v.nullish(v.literal('attachment')),
|
|
49
|
-
attribute:
|
|
34
|
+
attribute: v.nullish(v.string()),
|
|
50
35
|
display: AttachmentDisplaySchema,
|
|
36
|
+
sources: v.nullish(v.string()),
|
|
37
|
+
'value-constructor': v.nullish(v.string()),
|
|
38
|
+
'validation-download-attachment-fn': v.nullish(v.string()),
|
|
51
39
|
});
|
|
52
40
|
|
|
53
41
|
export type AttachmentType = v.InferOutput<typeof AttachmentSchema>;
|
|
@@ -16,23 +16,12 @@ const ChoiceDisplaySchema = createFieldDisplay(
|
|
|
16
16
|
})
|
|
17
17
|
);
|
|
18
18
|
|
|
19
|
-
const ChoicesSourceFnSchema = v.nullish(
|
|
20
|
-
v.picklist([
|
|
21
|
-
'dilosi.applications.deddie.claims.common.get_groups',
|
|
22
|
-
'dilosi.applications.diplomas.claims.common.get_didactic_years',
|
|
23
|
-
'dilosi.applications.labdata_results.claims.common.get_exam_choices',
|
|
24
|
-
'dilosi.applications.vevaiosi_nosileias.claims.common.get_domes_choices',
|
|
25
|
-
'dilosi.interop_logic.covid_self_tests.common.get_test_choices',
|
|
26
|
-
'dilosi.interop_logic.certs.get_child_choices',
|
|
27
|
-
])
|
|
28
|
-
);
|
|
29
|
-
|
|
30
19
|
const ChoiceSchema = v.strictObject({
|
|
31
20
|
'user-input-mode': v.picklist(['noinput', 'optional', 'required']),
|
|
32
21
|
display: ChoiceDisplaySchema,
|
|
33
22
|
'default-value': v.nullish(v.string()),
|
|
34
|
-
'choices-source-fn':
|
|
35
|
-
attribute: v.nullish(v.
|
|
23
|
+
'choices-source-fn': v.nullish(v.string()),
|
|
24
|
+
attribute: v.nullish(v.string()),
|
|
36
25
|
datatype: v.nullish(v.picklist(['choice', 'string'])),
|
|
37
26
|
});
|
|
38
27
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
1
2
|
import * as v from 'valibot';
|
|
2
3
|
import {
|
|
3
4
|
DisplayLang,
|
|
@@ -5,6 +6,7 @@ import {
|
|
|
5
6
|
DisplayLangSchema as BaseDisplayLangSchema,
|
|
6
7
|
} from '@uides/stepwise/schemas/common';
|
|
7
8
|
import { resolveDisplay } from '@uides/stepwise/schemas/resolve';
|
|
9
|
+
import { isFailureDataset } from '@uides/stepwise/utils';
|
|
8
10
|
|
|
9
11
|
// TODO: Make default lang mandatory?
|
|
10
12
|
const FieldDisplayLangSchema = v.pipe(
|
|
@@ -54,14 +56,41 @@ export interface DisplayType<
|
|
|
54
56
|
}
|
|
55
57
|
|
|
56
58
|
// TODO: Is type too big?
|
|
59
|
+
/**
|
|
60
|
+
* Creates a field display schema with specified default and PDF display properties.
|
|
61
|
+
*
|
|
62
|
+
* Defaults are:
|
|
63
|
+
* - title
|
|
64
|
+
* - title_md
|
|
65
|
+
* - value_md
|
|
66
|
+
* - hint
|
|
67
|
+
* - hint_md
|
|
68
|
+
* - template_hint
|
|
69
|
+
* - layout
|
|
70
|
+
* - md
|
|
71
|
+
* - example
|
|
72
|
+
*/
|
|
57
73
|
export function createFieldDisplay<
|
|
58
74
|
D extends v.ObjectEntries,
|
|
59
75
|
P extends v.ObjectEntries = never,
|
|
60
76
|
>(
|
|
61
|
-
DefaultDisplay:
|
|
62
|
-
|
|
77
|
+
DefaultDisplay:
|
|
78
|
+
| v.StrictObjectSchema<D, undefined>
|
|
79
|
+
| v.LooseObjectSchema<D, undefined>,
|
|
80
|
+
// TODO: Add PDF validation
|
|
81
|
+
|
|
82
|
+
// @ts-expect-error value not used
|
|
83
|
+
PdfDisplay?:
|
|
84
|
+
| v.StrictObjectSchema<P, undefined>
|
|
85
|
+
| v.LooseObjectSchema<P, undefined>
|
|
63
86
|
) {
|
|
64
|
-
|
|
87
|
+
// Base schema for display modes
|
|
88
|
+
// Use loose or strict object based on DefaultDisplay schema type
|
|
89
|
+
const baseObjectSchema = (isLooseObject(DefaultDisplay)
|
|
90
|
+
? v.looseObject
|
|
91
|
+
: v.strictObject) as unknown as typeof v.object;
|
|
92
|
+
|
|
93
|
+
const defaultDisplayContent = baseObjectSchema({
|
|
65
94
|
...FieldDisplayModeBaseSchema.entries,
|
|
66
95
|
...DefaultDisplay.entries,
|
|
67
96
|
});
|
|
@@ -70,76 +99,71 @@ export function createFieldDisplay<
|
|
|
70
99
|
v.record(v.string(), defaultDisplayContent)
|
|
71
100
|
);
|
|
72
101
|
|
|
73
|
-
const pdfDisplayContent = v.strictObject({
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
});
|
|
78
|
-
const pdfDisplaySchema = v.record(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
);
|
|
102
|
+
// const pdfDisplayContent = v.strictObject({
|
|
103
|
+
// ...FieldDisplayModeBaseSchema.entries,
|
|
104
|
+
// ...v.partial(DefaultDisplay).entries,
|
|
105
|
+
// ...PdfDisplay?.entries,
|
|
106
|
+
// });
|
|
107
|
+
// const pdfDisplaySchema = v.record(
|
|
108
|
+
// v.string(),
|
|
109
|
+
// v.record(v.string(), pdfDisplayContent)
|
|
110
|
+
// );
|
|
82
111
|
|
|
83
112
|
const DisplaySchema = v.pipe(
|
|
84
|
-
v.record(v.string(), v.any()),
|
|
113
|
+
v.record(v.string(), v.any()),
|
|
85
114
|
v.rawCheck<
|
|
86
115
|
DisplayType<
|
|
87
116
|
typeof defaultDisplayContent,
|
|
88
117
|
typeof defaultDisplayContent,
|
|
89
|
-
typeof
|
|
118
|
+
typeof defaultDisplayContent
|
|
90
119
|
>
|
|
91
120
|
>(({ addIssue, dataset }) => {
|
|
121
|
+
if (isFailureDataset(dataset)) return;
|
|
92
122
|
const display = dataset.value;
|
|
93
|
-
if (!(display && typeof display === 'object')) {
|
|
94
|
-
addIssue({
|
|
95
|
-
message: 'Display must be an object.',
|
|
96
|
-
});
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
123
|
|
|
100
124
|
DisplayModeSchema.options.forEach((displayMode) => {
|
|
101
125
|
if (
|
|
102
|
-
!(
|
|
103
|
-
|
|
104
|
-
display[displayMode as keyof typeof display]
|
|
105
|
-
)
|
|
126
|
+
!(displayMode in display && display[displayMode]) ||
|
|
127
|
+
displayMode === 'pdf' // TODO: Add PDF validation
|
|
106
128
|
)
|
|
107
129
|
return;
|
|
108
|
-
Object.keys(display[displayMode
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
received: issue.received,
|
|
131
|
-
label: 'Display schema',
|
|
132
|
-
});
|
|
130
|
+
Object.keys(display[displayMode]).forEach((displayLang) => {
|
|
131
|
+
const resolvedDisplay = resolveDisplay(
|
|
132
|
+
displayMode,
|
|
133
|
+
displayLang as DisplayLang,
|
|
134
|
+
display
|
|
135
|
+
);
|
|
136
|
+
const displaySchema = defaultDisplaySchema;
|
|
137
|
+
const result = v.safeParse(displaySchema, {
|
|
138
|
+
[displayMode]: {
|
|
139
|
+
[displayLang]: resolvedDisplay,
|
|
140
|
+
},
|
|
141
|
+
});
|
|
142
|
+
if (result.issues) {
|
|
143
|
+
// TODO: Add subissues
|
|
144
|
+
result.issues.forEach((issue) => {
|
|
145
|
+
addIssue({
|
|
146
|
+
message: issue.message,
|
|
147
|
+
path: issue.path,
|
|
148
|
+
input: issue.input,
|
|
149
|
+
expected: issue.expected ?? undefined,
|
|
150
|
+
received: issue.received,
|
|
151
|
+
label: 'Display schema',
|
|
133
152
|
});
|
|
134
|
-
}
|
|
153
|
+
});
|
|
135
154
|
}
|
|
136
|
-
);
|
|
155
|
+
});
|
|
137
156
|
});
|
|
138
157
|
})
|
|
139
158
|
);
|
|
140
159
|
return DisplaySchema;
|
|
141
160
|
}
|
|
142
161
|
|
|
162
|
+
const isLooseObject = <T extends v.ObjectEntries>(
|
|
163
|
+
schema: v.StrictObjectSchema<T, undefined> | v.LooseObjectSchema<T, undefined>
|
|
164
|
+
): schema is v.LooseObjectSchema<T, undefined> =>
|
|
165
|
+
schema.type === 'loose_object';
|
|
166
|
+
|
|
143
167
|
const FieldDisplayModeBaseSchema = v.strictObject({
|
|
144
168
|
title: v.nullish(v.string()),
|
|
145
169
|
title_md: v.nullish(v.number()),
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as v from 'valibot';
|
|
2
|
+
import { createFieldDisplay } from '@uides/stepwise/schemas/field/common';
|
|
3
|
+
|
|
4
|
+
const ConsentContentDisplaySchema = createFieldDisplay(
|
|
5
|
+
v.strictObject({
|
|
6
|
+
component: v.literal('consent-content'),
|
|
7
|
+
'component-params': v.nullish(
|
|
8
|
+
v.strictObject({
|
|
9
|
+
'display-values': v.nullish(v.boolean()),
|
|
10
|
+
'data-label': v.nullish(v.string()),
|
|
11
|
+
'recipient-label': v.nullish(v.string()),
|
|
12
|
+
'transaction-label': v.nullish(v.string()),
|
|
13
|
+
})
|
|
14
|
+
),
|
|
15
|
+
})
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
const ConsentContentSchema = v.strictObject({
|
|
19
|
+
'user-input-mode': v.literal('display'),
|
|
20
|
+
display: ConsentContentDisplaySchema,
|
|
21
|
+
sources: v.nullish(v.string()),
|
|
22
|
+
'value-constructor': v.nullish(v.string()),
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export type ConsentContentType = v.InferOutput<typeof ConsentContentSchema>;
|
|
26
|
+
export type ConsentContentSchemaType = v.GenericSchema<ConsentContentType>;
|
|
27
|
+
|
|
28
|
+
export default ConsentContentSchema as ConsentContentSchemaType;
|
|
@@ -23,40 +23,13 @@ const DateDisplaySchema = createFieldDisplay(
|
|
|
23
23
|
})
|
|
24
24
|
);
|
|
25
25
|
|
|
26
|
-
const DateAttributeSchema = v.nullish(
|
|
27
|
-
v.picklist([
|
|
28
|
-
'covid19_negative_test_2:birthDate',
|
|
29
|
-
'covid19_negative_test_2:dateOfResult',
|
|
30
|
-
'covid19_rat:birthDate',
|
|
31
|
-
'covid19_rat:dateOfResult',
|
|
32
|
-
'covid19_recovery_2:birthDate',
|
|
33
|
-
'covid19_recovery_2:dateOfResult',
|
|
34
|
-
'covid_vaccine:first_shot_date',
|
|
35
|
-
'covid_vaccine:second_shot_date',
|
|
36
|
-
'covid_vaccine_3:event_1_date',
|
|
37
|
-
'covid_vaccine_3:event_2_date',
|
|
38
|
-
'covid_vaccine_3:event_3_date',
|
|
39
|
-
'covid_vaccine_3:event_4_date',
|
|
40
|
-
'covid_vaccine_3:event_5_date',
|
|
41
|
-
'covid_vaccine_3:event_6_date',
|
|
42
|
-
'yme_kteo:ImerominiaOraDTE',
|
|
43
|
-
'birth_date',
|
|
44
|
-
])
|
|
45
|
-
);
|
|
46
|
-
|
|
47
26
|
const DateSchema = v.strictObject({
|
|
48
|
-
'user-input-mode': v.picklist(['noinput', 'required']),
|
|
27
|
+
'user-input-mode': v.picklist(['noinput', 'required', 'optional']),
|
|
49
28
|
display: DateDisplaySchema,
|
|
50
|
-
attribute:
|
|
51
|
-
sources: v.nullish(v.
|
|
52
|
-
datatype: v.nullish(v.
|
|
53
|
-
'value-constructor': v.nullish(
|
|
54
|
-
v.picklist([
|
|
55
|
-
'dilosi.interop_logic.common.get_local_date',
|
|
56
|
-
'dilosi.interop_logic.common.get_local_date_time',
|
|
57
|
-
'dilosi.interop_logic.common.get_local_date_time_sec',
|
|
58
|
-
])
|
|
59
|
-
),
|
|
29
|
+
attribute: v.nullish(v.string()),
|
|
30
|
+
sources: v.nullish(v.string()),
|
|
31
|
+
datatype: v.nullish(v.literal('date')),
|
|
32
|
+
'value-constructor': v.nullish(v.string()),
|
|
60
33
|
value: v.nullish(v.string()),
|
|
61
34
|
'is-display-field': v.nullish(v.boolean()),
|
|
62
35
|
});
|
|
@@ -12,6 +12,7 @@ const DocSubtitleSchema = v.strictObject({
|
|
|
12
12
|
'user-input-mode': v.literal('noinput'),
|
|
13
13
|
value: v.nullish(v.string()),
|
|
14
14
|
datatype: v.nullish(v.literal('string')),
|
|
15
|
+
attribute: v.nullish(v.string()),
|
|
15
16
|
});
|
|
16
17
|
|
|
17
18
|
export type DocSubtitleType = v.InferOutput<typeof DocSubtitleSchema>;
|
|
@@ -1,36 +1,29 @@
|
|
|
1
1
|
import * as v from 'valibot';
|
|
2
2
|
import { createFieldDisplay } from '@uides/stepwise/schemas/field/common';
|
|
3
3
|
|
|
4
|
+
const CommonDocTitleParamsSchema = v.nullish(
|
|
5
|
+
v.strictObject({
|
|
6
|
+
leading: v.nullish(v.number()),
|
|
7
|
+
})
|
|
8
|
+
);
|
|
9
|
+
|
|
4
10
|
const DocTitleDisplaySchema = createFieldDisplay(
|
|
5
11
|
v.strictObject({
|
|
6
12
|
component: v.literal('doc_title'),
|
|
13
|
+
'component-params': CommonDocTitleParamsSchema,
|
|
7
14
|
}),
|
|
8
15
|
v.strictObject({
|
|
9
16
|
component: v.literal('doc_title'),
|
|
10
|
-
'component-params':
|
|
11
|
-
v.strictObject({
|
|
12
|
-
leading: v.nullish(v.number()),
|
|
13
|
-
})
|
|
14
|
-
),
|
|
17
|
+
'component-params': CommonDocTitleParamsSchema,
|
|
15
18
|
})
|
|
16
19
|
);
|
|
17
20
|
|
|
18
|
-
const DocTitleAttributeSchema = v.nullish(
|
|
19
|
-
v.picklist([
|
|
20
|
-
'chosen_degree:pdf_title',
|
|
21
|
-
'digital_diploma:pdfTitle',
|
|
22
|
-
'vevaiosi_nosileias:doc_title',
|
|
23
|
-
])
|
|
24
|
-
);
|
|
25
|
-
|
|
26
21
|
const DocTitleSchema = v.strictObject({
|
|
27
22
|
display: DocTitleDisplaySchema,
|
|
28
23
|
'user-input-mode': v.literal('noinput'),
|
|
29
24
|
value: v.nullish(v.string()),
|
|
30
25
|
'default-value': v.nullish(v.string()),
|
|
31
|
-
|
|
32
|
-
sources: v.nullish(v.string()),
|
|
33
|
-
attribute: DocTitleAttributeSchema,
|
|
26
|
+
attribute: v.nullish(v.string()),
|
|
34
27
|
});
|
|
35
28
|
|
|
36
29
|
export type DocTitleType = v.InferOutput<typeof DocTitleSchema>;
|
|
@@ -24,12 +24,11 @@ const DynamicallyFilledTextSchema = v.strictObject({
|
|
|
24
24
|
display: DynamicallyFilledTextDisplaySchema,
|
|
25
25
|
'user-input-mode': v.picklist(['noinput', 'display']),
|
|
26
26
|
'default-value': v.nullish(v.string()),
|
|
27
|
-
sources: v.nullish(v.
|
|
28
|
-
'value-constructor': v.nullish(
|
|
29
|
-
v.literal('dilosi.interop_logic.metavivasi_akinitou.get_page_3_text')
|
|
30
|
-
),
|
|
31
|
-
'is-display-field': v.nullish(v.boolean()),
|
|
27
|
+
sources: v.nullish(v.string()),
|
|
28
|
+
'value-constructor': v.nullish(v.string()),
|
|
32
29
|
attribute: v.nullish(v.string()),
|
|
30
|
+
datatype: v.nullish(v.literal('string')),
|
|
31
|
+
'is-display-field': v.nullish(v.boolean()),
|
|
33
32
|
});
|
|
34
33
|
|
|
35
34
|
export type DynamicallyFilledTextType = v.InferOutput<
|
|
@@ -4,21 +4,18 @@ import { createFieldDisplay } from '@uides/stepwise/schemas/field/common';
|
|
|
4
4
|
const EmailDisplaySchema = createFieldDisplay(
|
|
5
5
|
v.strictObject({
|
|
6
6
|
component: v.literal('email'),
|
|
7
|
+
'component-params': v.nullish(
|
|
8
|
+
v.strictObject({
|
|
9
|
+
multiplicity: v.nullish(v.number()),
|
|
10
|
+
})
|
|
11
|
+
),
|
|
7
12
|
})
|
|
8
13
|
);
|
|
9
14
|
|
|
10
|
-
const EmailAttributeSchema = v.nullish(
|
|
11
|
-
v.picklist([
|
|
12
|
-
'civil_registry:email',
|
|
13
|
-
'find_onomatodosia:email',
|
|
14
|
-
'kep:entity_email',
|
|
15
|
-
])
|
|
16
|
-
);
|
|
17
|
-
|
|
18
15
|
const EmailSchema = v.strictObject({
|
|
19
16
|
'user-input-mode': v.picklist(['noinput', 'optional', 'required']),
|
|
20
17
|
display: EmailDisplaySchema,
|
|
21
|
-
attribute:
|
|
18
|
+
attribute: v.nullish(v.string()),
|
|
22
19
|
'default-value': v.nullish(v.string()),
|
|
23
20
|
datatype: v.nullish(v.literal('email')),
|
|
24
21
|
});
|
|
@@ -13,7 +13,7 @@ const FillableStringDisplaySchema = createFieldDisplay(
|
|
|
13
13
|
);
|
|
14
14
|
|
|
15
15
|
const FillableStringSchema = v.strictObject({
|
|
16
|
-
'user-input-mode': v.picklist(['noinput', 'display']),
|
|
16
|
+
'user-input-mode': v.picklist(['noinput', 'display', 'optional']),
|
|
17
17
|
display: FillableStringDisplaySchema,
|
|
18
18
|
attribute: v.nullish(v.string()),
|
|
19
19
|
'default-value': v.nullish(v.string()),
|
|
@@ -1,24 +1,10 @@
|
|
|
1
1
|
import * as v from 'valibot';
|
|
2
2
|
import { createFieldDisplay } from '@uides/stepwise/schemas/field/common';
|
|
3
3
|
|
|
4
|
-
// const DatasetSchema = v.nullish(
|
|
5
|
-
// v.picklist([
|
|
6
|
-
// '/api/datasets/aako',
|
|
7
|
-
// '/api/datasets/dimos-lixiarcheio-all',
|
|
8
|
-
// '/api/datasets/dogma_to_codes',
|
|
9
|
-
// '/api/datasets/ekab',
|
|
10
|
-
// '/api/datasets/lixiarheia',
|
|
11
|
-
// '/api/datasets/troxaia',
|
|
12
|
-
// '/api/datasets/vas',
|
|
13
|
-
// '/api/datasets/police-hierarchy',
|
|
14
|
-
// '/api/datasets/dimos-dimotologio-all',
|
|
15
|
-
// '/api/datasets/ianos-hierarchy',
|
|
16
|
-
// ])
|
|
17
|
-
// );
|
|
18
|
-
|
|
19
4
|
const HiddenDisplaySchema = createFieldDisplay(
|
|
20
|
-
v.
|
|
5
|
+
v.looseObject({
|
|
21
6
|
component: v.literal('hidden'),
|
|
7
|
+
'component-params': v.nullish(v.object({})),
|
|
22
8
|
// choices: v.nullish(v.record(v.string())),
|
|
23
9
|
// 'choices-order': v.nullish(v.string()),
|
|
24
10
|
// 'component-params': v.nullish(
|
|
@@ -48,32 +34,7 @@ const HiddenDisplaySchema = createFieldDisplay(
|
|
|
48
34
|
})
|
|
49
35
|
);
|
|
50
36
|
|
|
51
|
-
|
|
52
|
-
// v.picklist([
|
|
53
|
-
// 'attachment',
|
|
54
|
-
// 'entity_recipient',
|
|
55
|
-
// 'multiple-choice',
|
|
56
|
-
// 'postal_code',
|
|
57
|
-
// 'string',
|
|
58
|
-
// ])
|
|
59
|
-
// );
|
|
60
|
-
|
|
61
|
-
// [
|
|
62
|
-
// v.custom((values) => {
|
|
63
|
-
// const datatype = values.datatype;
|
|
64
|
-
// const display = values.display;
|
|
65
|
-
// if (!datatype) {
|
|
66
|
-
// if (display.default?.el) {
|
|
67
|
-
// const node = display.default.el;
|
|
68
|
-
// if (node.component === 'hidden') {
|
|
69
|
-
// return false;
|
|
70
|
-
// }
|
|
71
|
-
// }
|
|
72
|
-
// }
|
|
73
|
-
// return true;
|
|
74
|
-
// }, "Component 'hidden' with datatype not set"),
|
|
75
|
-
// ]
|
|
76
|
-
const HiddenSchema = v.strictObject({
|
|
37
|
+
const HiddenSchema = v.looseObject({
|
|
77
38
|
'user-input-mode': v.picklist(['noinput', 'optional', 'required', 'display']),
|
|
78
39
|
display: HiddenDisplaySchema,
|
|
79
40
|
datatype: v.nullish(v.string()),
|
|
@@ -82,8 +43,8 @@ const HiddenSchema = v.strictObject({
|
|
|
82
43
|
value: v.nullish(v.string()),
|
|
83
44
|
attribute: v.nullish(v.string()),
|
|
84
45
|
'default-value': v.nullish(v.string()),
|
|
85
|
-
'dataset-source-fn': v.nullish(v.string()),
|
|
86
46
|
'is-display-field': v.nullish(v.boolean()),
|
|
47
|
+
'default-on-empty': v.nullish(v.string()),
|
|
87
48
|
});
|
|
88
49
|
|
|
89
50
|
export type HiddenType = v.InferOutput<typeof HiddenSchema>;
|
|
@@ -27,16 +27,10 @@ const HierarchicalSelectorSchema = v.strictObject({
|
|
|
27
27
|
'user-input-mode': v.picklist(['noinput', 'optional', 'required']),
|
|
28
28
|
display: HierarchicalSelectorDisplaySchema,
|
|
29
29
|
attribute: v.nullish(v.string()),
|
|
30
|
-
sources: v.nullish(v.
|
|
31
|
-
'value-constructor': v.nullish(
|
|
32
|
-
v.literal(
|
|
33
|
-
'dilosi.applications.pistopoiitiko_polyteknias.claims.common.prefill_syllogos_choice'
|
|
34
|
-
)
|
|
35
|
-
),
|
|
30
|
+
sources: v.nullish(v.string()),
|
|
31
|
+
'value-constructor': v.nullish(v.string()),
|
|
36
32
|
datatype: v.nullish(v.picklist(['entity_recipient', 'string'])),
|
|
37
|
-
'dataset-source-fn': v.nullish(
|
|
38
|
-
v.literal('dilosi.applications.foreis.claims.common.get_dimos_dataset')
|
|
39
|
-
),
|
|
33
|
+
'dataset-source-fn': v.nullish(v.string()),
|
|
40
34
|
});
|
|
41
35
|
|
|
42
36
|
export type HierarchicalSelectorType = v.InferOutput<
|
|
@@ -6,7 +6,7 @@ const ImageDisplaySchema = createFieldDisplay(
|
|
|
6
6
|
component: v.literal('image'),
|
|
7
7
|
'component-params': v.nullish(
|
|
8
8
|
v.strictObject({
|
|
9
|
-
attachment_retrieval: v.nullish(v.
|
|
9
|
+
attachment_retrieval: v.nullish(v.picklist(['content', 'content-uri'])),
|
|
10
10
|
position: v.nullish(v.picklist(['left', 'right', 'center', 'justify'])),
|
|
11
11
|
coordinates: v.nullish(v.array(v.nullable(v.number()))),
|
|
12
12
|
})
|
|
@@ -14,33 +14,14 @@ const ImageDisplaySchema = createFieldDisplay(
|
|
|
14
14
|
})
|
|
15
15
|
);
|
|
16
16
|
|
|
17
|
-
const ImageAttributeSchema = v.nullish(
|
|
18
|
-
v.picklist([
|
|
19
|
-
'amea_card_crop_photo:cropped_amea_card_photo',
|
|
20
|
-
'gov_wallet_academic_id_full_photo:photo',
|
|
21
|
-
'gov_wallet_amea_card:amea_card/ameaCardPhoto',
|
|
22
|
-
'gov_wallet_karta_aimodoti:karta_aimodoti/karta_aimodoti_photo',
|
|
23
|
-
'gov_wallet_crop_id_photo:cropped_police_id_photo',
|
|
24
|
-
])
|
|
25
|
-
);
|
|
26
|
-
|
|
27
17
|
const ImageSchema = v.strictObject({
|
|
28
|
-
'user-input-mode': v.picklist(['noinput', 'required']),
|
|
18
|
+
'user-input-mode': v.picklist(['noinput', 'required', 'display']),
|
|
29
19
|
display: ImageDisplaySchema,
|
|
30
20
|
datatype: v.nullish(v.picklist(['attachment', 'string'])),
|
|
31
|
-
attribute:
|
|
21
|
+
attribute: v.nullish(v.string()),
|
|
32
22
|
value: v.nullish(v.string()),
|
|
33
|
-
'value-constructor': v.nullish(
|
|
34
|
-
|
|
35
|
-
'dilosi.applications.pistopoiitiko_spoudon.claims.branching.get_institution_logo_asset_path'
|
|
36
|
-
)
|
|
37
|
-
),
|
|
38
|
-
sources: v.nullish(
|
|
39
|
-
v.picklist([
|
|
40
|
-
'ref:gov_wallet_id:field:id_photo',
|
|
41
|
-
'declaration:template_refname field:institution_choice field:locale',
|
|
42
|
-
])
|
|
43
|
-
),
|
|
23
|
+
'value-constructor': v.nullish(v.string()),
|
|
24
|
+
sources: v.nullish(v.string()),
|
|
44
25
|
});
|
|
45
26
|
|
|
46
27
|
export type ImageType = v.InferOutput<typeof ImageSchema>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as v from 'valibot';
|
|
2
|
+
import { createFieldDisplay } from '@uides/stepwise/schemas/field/common';
|
|
3
|
+
|
|
4
|
+
const ImageCropDisplaySchema = createFieldDisplay(
|
|
5
|
+
v.strictObject({
|
|
6
|
+
component: v.literal('image-crop'),
|
|
7
|
+
'component-params': v.nullish(
|
|
8
|
+
v.strictObject({
|
|
9
|
+
'image-src-field-name': v.nullish(v.string()),
|
|
10
|
+
})
|
|
11
|
+
),
|
|
12
|
+
})
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
const ImageCropSchema = v.strictObject({
|
|
16
|
+
'user-input-mode': v.picklist(['noinput', 'required']),
|
|
17
|
+
display: ImageCropDisplaySchema,
|
|
18
|
+
datatype: v.nullish(v.literal('image-crop')),
|
|
19
|
+
attribute: v.nullish(v.string()),
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
export type ImageCropType = v.InferOutput<typeof ImageCropSchema>;
|
|
23
|
+
export type ImageCropSchemaType = v.GenericSchema<ImageCropType>;
|
|
24
|
+
|
|
25
|
+
export default ImageCropSchema as ImageCropSchemaType;
|