@uides/stepwise 2.0.0-a594a958 → 2.0.0-a64dc016

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.
Files changed (209) hide show
  1. package/LICENSE +0 -0
  2. package/generators/componentExtractor.d.mts +1 -0
  3. package/generators/componentReducer.d.mts +1 -0
  4. package/generators/templateGenerator.d.mts +1 -0
  5. package/index.d.ts +2 -0
  6. package/index.js +7 -0
  7. package/package.json +6 -21
  8. package/schemas/action.d.ts +2366 -0
  9. package/schemas/action.js +196 -0
  10. package/schemas/application.d.ts +19 -0
  11. package/schemas/application.js +14 -0
  12. package/schemas/attributes.d.ts +16 -0
  13. package/schemas/attributes.js +14 -0
  14. package/schemas/common.d.ts +25 -0
  15. package/schemas/common.js +41 -0
  16. package/schemas/document.d.ts +395 -0
  17. package/schemas/document.js +79 -0
  18. package/schemas/edupass-healthstate.d.ts +77 -0
  19. package/schemas/edupass-healthstate.js +76 -0
  20. package/schemas/field/afm/index.d.ts +52 -0
  21. package/schemas/field/afm/index.js +20 -0
  22. package/schemas/field/amka/index.d.ts +60 -0
  23. package/schemas/field/amka/index.js +21 -0
  24. package/schemas/field/attachment/index.d.ts +68 -0
  25. package/schemas/field/attachment/index.js +38 -0
  26. package/schemas/field/captcha/index.d.ts +48 -0
  27. package/schemas/field/captcha/index.js +15 -0
  28. package/schemas/field/choice/index.d.ts +73 -0
  29. package/schemas/field/choice/index.js +32 -0
  30. package/schemas/field/common.d.ts +82 -0
  31. package/schemas/field/common.js +63 -0
  32. package/schemas/field/consent-content/index.d.ts +68 -0
  33. package/schemas/field/consent-content/index.js +19 -0
  34. package/schemas/field/date/index.d.ts +90 -0
  35. package/schemas/field/date/index.js +42 -0
  36. package/schemas/field/doc_subtitle/index.d.ts +51 -0
  37. package/schemas/field/doc_subtitle/index.js +14 -0
  38. package/schemas/field/doc_title/index.d.ts +60 -0
  39. package/schemas/field/doc_title/index.js +21 -0
  40. package/schemas/field/dynamically-filled-text/index.d.ts +85 -0
  41. package/schemas/field/dynamically-filled-text/index.js +36 -0
  42. package/schemas/field/email/index.d.ts +60 -0
  43. package/schemas/field/email/index.js +21 -0
  44. package/schemas/field/fillable-string/index.d.ts +64 -0
  45. package/schemas/field/fillable-string/index.js +25 -0
  46. package/schemas/field/five-block-date/index.d.ts +48 -0
  47. package/schemas/field/five-block-date/index.js +15 -0
  48. package/schemas/field/hidden/index.d.ts +59 -0
  49. package/schemas/field/hidden/index.js +25 -0
  50. package/schemas/field/hierarchical-selector/index.d.ts +89 -0
  51. package/schemas/field/hierarchical-selector/index.js +35 -0
  52. package/schemas/field/iban/index.d.ts +58 -0
  53. package/schemas/field/iban/index.js +19 -0
  54. package/schemas/field/image/index.d.ts +68 -0
  55. package/schemas/field/image/index.js +36 -0
  56. package/schemas/field/image-crop/index.d.ts +59 -0
  57. package/schemas/field/image-crop/index.js +19 -0
  58. package/schemas/field/index.d.ts +48 -0
  59. package/schemas/field/index.js +167 -0
  60. package/schemas/field/int/index.d.ts +60 -0
  61. package/schemas/field/int/index.js +21 -0
  62. package/schemas/field/intl_mobile_phone/index.d.ts +49 -0
  63. package/schemas/field/intl_mobile_phone/index.js +15 -0
  64. package/schemas/field/lab-results/index.d.ts +49 -0
  65. package/schemas/field/lab-results/index.js +12 -0
  66. package/schemas/field/landline_phone/index.d.ts +48 -0
  67. package/schemas/field/landline_phone/index.js +14 -0
  68. package/schemas/field/link/index.d.ts +50 -0
  69. package/schemas/field/link/index.js +16 -0
  70. package/schemas/field/mobile_phone/index.d.ts +51 -0
  71. package/schemas/field/mobile_phone/index.js +18 -0
  72. package/schemas/field/multiple-choice/index.d.ts +70 -0
  73. package/schemas/field/multiple-choice/index.js +31 -0
  74. package/schemas/field/password/index.d.ts +48 -0
  75. package/schemas/field/password/index.js +15 -0
  76. package/schemas/field/pdf-image/index.d.ts +66 -0
  77. package/schemas/field/pdf-image/index.js +27 -0
  78. package/schemas/field/phone/index.d.ts +48 -0
  79. package/schemas/field/phone/index.js +14 -0
  80. package/schemas/field/postal_code/index.d.ts +50 -0
  81. package/schemas/field/postal_code/index.js +17 -0
  82. package/schemas/field/preference-multiple-choice/index.d.ts +90 -0
  83. package/schemas/field/preference-multiple-choice/index.js +31 -0
  84. package/schemas/field/qrcode/index.d.ts +71 -0
  85. package/schemas/field/qrcode/index.js +30 -0
  86. package/schemas/field/quote/index.d.ts +63 -0
  87. package/schemas/field/quote/index.js +30 -0
  88. package/schemas/field/radio-choice/index.d.ts +67 -0
  89. package/schemas/field/radio-choice/index.js +31 -0
  90. package/schemas/field/rate/index.d.ts +60 -0
  91. package/schemas/field/rate/index.js +18 -0
  92. package/schemas/field/recipient/index.d.ts +51 -0
  93. package/schemas/field/recipient/index.js +20 -0
  94. package/schemas/field/redirect/index.d.ts +52 -0
  95. package/schemas/field/redirect/index.js +15 -0
  96. package/schemas/field/refcode/index.d.ts +68 -0
  97. package/schemas/field/refcode/index.js +29 -0
  98. package/schemas/field/string/index.d.ts +135 -0
  99. package/schemas/field/string/index.js +80 -0
  100. package/schemas/field/text/index.d.ts +85 -0
  101. package/schemas/field/text/index.js +45 -0
  102. package/schemas/field/three-block-date/index.d.ts +64 -0
  103. package/schemas/field/three-block-date/index.js +26 -0
  104. package/schemas/field/url-param/index.d.ts +57 -0
  105. package/schemas/field/url-param/index.js +14 -0
  106. package/schemas/fieldset/component-params.d.ts +102 -0
  107. package/schemas/fieldset/component-params.js +63 -0
  108. package/schemas/fieldset/display-components.d.ts +353 -0
  109. package/schemas/fieldset/display-components.js +36 -0
  110. package/schemas/fieldset/enums.d.ts +32 -0
  111. package/schemas/fieldset/enums.js +21 -0
  112. package/schemas/fieldset/index.d.ts +180 -0
  113. package/schemas/fieldset/index.js +11 -0
  114. package/schemas/index.d.ts +15 -0
  115. package/schemas/index.js +15 -0
  116. package/schemas/layout.d.ts +91 -0
  117. package/schemas/layout.js +43 -0
  118. package/schemas/outputs.d.ts +44 -0
  119. package/schemas/outputs.js +15 -0
  120. package/schemas/resolve.d.ts +5 -0
  121. package/schemas/resolve.js +13 -0
  122. package/schemas/resource/enums.d.ts +58 -0
  123. package/schemas/resource/enums.js +41 -0
  124. package/schemas/resource/field.d.ts +15 -0
  125. package/schemas/resource/field.js +12 -0
  126. package/schemas/resource/index.d.ts +5 -0
  127. package/schemas/resource/index.js +5 -0
  128. package/schemas/resource/object-action.d.ts +30 -0
  129. package/schemas/resource/object-action.js +24 -0
  130. package/schemas/resource/resource-action.d.ts +35 -0
  131. package/schemas/resource/resource-action.js +29 -0
  132. package/schemas/resource/resource.d.ts +133 -0
  133. package/schemas/resource/resource.js +31 -0
  134. package/schemas/step.d.ts +592 -0
  135. package/schemas/step.js +115 -0
  136. package/schemas/template/index.d.ts +2 -0
  137. package/schemas/template/index.js +2 -0
  138. package/schemas/template/template-base.d.ts +53 -0
  139. package/schemas/template/template-base.js +15 -0
  140. package/schemas/template/template-source.d.ts +50 -0
  141. package/schemas/template/template-source.js +14 -0
  142. package/schemas/template/template.d.ts +54 -0
  143. package/schemas/template/template.js +22 -0
  144. package/schemas/validation-context/enums.d.ts +10 -0
  145. package/schemas/validation-context/enums.js +7 -0
  146. package/schemas/validation-context/index.d.ts +2 -0
  147. package/schemas/validation-context/index.js +2 -0
  148. package/schemas/validation-context/validation-context.d.ts +131 -0
  149. package/schemas/validation-context/validation-context.js +55 -0
  150. package/src/schemas/action.ts +15 -0
  151. package/src/schemas/common.ts +16 -0
  152. package/src/schemas/field/afm/index.ts +2 -18
  153. package/src/schemas/field/amka/index.ts +7 -2
  154. package/src/schemas/field/attachment/index.ts +12 -24
  155. package/src/schemas/field/choice/index.ts +2 -13
  156. package/src/schemas/field/common.ts +75 -51
  157. package/src/schemas/field/consent-content/index.ts +28 -0
  158. package/src/schemas/field/date/index.ts +5 -32
  159. package/src/schemas/field/doc_subtitle/index.ts +1 -0
  160. package/src/schemas/field/doc_title/index.ts +9 -16
  161. package/src/schemas/field/dynamically-filled-text/index.ts +4 -5
  162. package/src/schemas/field/email/index.ts +6 -9
  163. package/src/schemas/field/fillable-string/index.ts +1 -1
  164. package/src/schemas/field/hidden/index.ts +4 -43
  165. package/src/schemas/field/hierarchical-selector/index.ts +3 -9
  166. package/src/schemas/field/image/index.ts +5 -24
  167. package/src/schemas/field/image-crop/index.ts +25 -0
  168. package/src/schemas/field/index.spec.ts +0 -42
  169. package/src/schemas/field/index.ts +64 -12
  170. package/src/schemas/field/int/index.ts +2 -0
  171. package/src/schemas/field/intl_mobile_phone/index.ts +19 -0
  172. package/src/schemas/field/lab-results/index.ts +1 -2
  173. package/src/schemas/field/link/index.ts +20 -0
  174. package/src/schemas/field/mobile_phone/index.ts +1 -12
  175. package/src/schemas/field/multiple-choice/index.ts +4 -3
  176. package/src/schemas/field/password/index.ts +18 -0
  177. package/src/schemas/field/pdf-image/index.ts +3 -15
  178. package/src/schemas/field/phone/index.ts +18 -0
  179. package/src/schemas/field/postal_code/index.ts +1 -1
  180. package/src/schemas/field/preference-multiple-choice/index.ts +41 -0
  181. package/src/schemas/field/qrcode/index.ts +1 -0
  182. package/src/schemas/field/quote/index.ts +2 -19
  183. package/src/schemas/field/radio-choice/index.ts +1 -7
  184. package/src/schemas/field/rate/index.ts +1 -9
  185. package/src/schemas/field/recipient/index.ts +2 -2
  186. package/src/schemas/field/redirect/index.ts +4 -13
  187. package/src/schemas/field/refcode/index.ts +10 -15
  188. package/src/schemas/field/string/index.ts +13 -0
  189. package/src/schemas/field/text/index.ts +4 -18
  190. package/src/schemas/field/url-param/index.ts +23 -0
  191. package/src/schemas/resolve.ts +3 -0
  192. package/src/schemas/step.ts +2 -0
  193. package/src/schemas/template/index.ts +0 -1
  194. package/src/schemas/template/template-base.ts +0 -10
  195. package/src/schemas/template/template.ts +1 -2
  196. package/src/schemas/validation-context/enums.ts +0 -16
  197. package/src/schemas/validation-context/validation-context.ts +2 -4
  198. package/src/utils/index.ts +10 -1
  199. package/utils/index.d.ts +6 -0
  200. package/utils/index.js +55 -0
  201. package/.prettierrc.js +0 -1
  202. package/.rush/temp/chunked-rush-logs/stepwise.build.chunks.jsonl +0 -6
  203. package/.rush/temp/package-deps_build.json +0 -185
  204. package/.rush/temp/shrinkwrap-deps.json +0 -303
  205. package/eslint.config.mjs +0 -3
  206. package/rush-logs/stepwise.build.log +0 -6
  207. package/src/schemas/field/green-pass-qrcode/index.ts +0 -27
  208. package/src/schemas/template/enums.ts +0 -22
  209. 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
- 'default-value': v.nullish(v.string()),
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
- filetype: v.nullish(v.picklist(['pdf', 'pdf-for-mark'])),
10
- 'file-max-size': v.nullish(v.number()),
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
- filetype: v.nullish(v.picklist(['pdf', 'pdf-for-mark'])),
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: AttachmentAttributeSchema,
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': ChoicesSourceFnSchema,
35
- attribute: v.nullish(v.literal('find_onomatodosia:contact_confirm')),
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: v.StrictObjectSchema<D, undefined>,
62
- PdfDisplay?: v.StrictObjectSchema<P, undefined>
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
- const defaultDisplayContent = v.strictObject({
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
- ...FieldDisplayModeBaseSchema.entries,
75
- ...v.partial(DefaultDisplay).entries,
76
- ...PdfDisplay?.entries,
77
- });
78
- const pdfDisplaySchema = v.record(
79
- v.string(),
80
- v.record(v.string(), pdfDisplayContent)
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()), // TODO: Unnecessary?
113
+ v.record(v.string(), v.any()),
85
114
  v.rawCheck<
86
115
  DisplayType<
87
116
  typeof defaultDisplayContent,
88
117
  typeof defaultDisplayContent,
89
- typeof pdfDisplayContent
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
- displayMode in display &&
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 as keyof typeof display]).forEach(
109
- (displayLang) => {
110
- const resolvedDisplay = resolveDisplay(
111
- displayMode,
112
- displayLang as DisplayLang,
113
- display
114
- );
115
- const displaySchema =
116
- displayMode === 'pdf' ? pdfDisplaySchema : defaultDisplaySchema;
117
- const result = v.safeParse(displaySchema, {
118
- [displayMode]: {
119
- [displayLang]: resolvedDisplay,
120
- },
121
- });
122
- if (result.issues) {
123
- // TODO: Add subissues
124
- result.issues.forEach((issue) => {
125
- addIssue({
126
- message: issue.message,
127
- path: issue.path,
128
- input: issue.input,
129
- expected: issue.expected ?? undefined,
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: DateAttributeSchema,
51
- sources: v.nullish(v.literal('declaration:timestamp')),
52
- datatype: v.nullish(v.picklist(['date', 'string'])),
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': v.nullish(
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
- 'value-constructor': v.nullish(v.string()),
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.literal('field:page_3_year')),
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: EmailAttributeSchema,
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.strictObject({
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
- // const HiddenDatatypeSchema = v.nullish(
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.literal('field:operator_syllogos_choice')),
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.literal('content')),
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: ImageAttributeSchema,
21
+ attribute: v.nullish(v.string()),
32
22
  value: v.nullish(v.string()),
33
- 'value-constructor': v.nullish(
34
- v.literal(
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;