@opencrvs/toolkit 2.0.0-rc.fef9d21 → 2.0.0-rc.ff1424b
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/create-countryconfig/index.js +103 -0
- package/create-countryconfig/package.json +21 -0
- package/dist/application-config/index.js +312 -130
- package/dist/cli.js +548 -178
- package/dist/commons/api/router.d.ts +3390 -241
- package/dist/commons/application-config/index.d.ts +17 -4
- package/dist/commons/conditionals/conditionals.d.ts +360 -10
- package/dist/commons/conditionals/validate.d.ts +52 -2
- package/dist/commons/events/ActionConfig.d.ts +28 -2
- package/dist/commons/events/ActionDocument.d.ts +6 -0
- package/dist/commons/events/ActionInput.d.ts +114 -0
- package/dist/commons/events/AdvancedSearchConfig.d.ts +342 -0
- package/dist/commons/events/Draft.d.ts +4 -2
- package/dist/commons/events/EventDocument.d.ts +3 -0
- package/dist/commons/events/EventIndex.d.ts +0 -3
- package/dist/commons/events/EventMetadata.d.ts +0 -7
- package/dist/commons/events/FieldConfig.d.ts +388 -50
- package/dist/commons/events/FieldType.d.ts +1 -0
- package/dist/commons/events/FieldTypeMapping.d.ts +1 -1
- package/dist/commons/events/FieldValue.d.ts +6 -0
- package/dist/commons/events/WorkqueueConfig.d.ts +150 -150
- package/dist/commons/events/field.d.ts +53 -1
- package/dist/commons/events/index.d.ts +2 -0
- package/dist/commons/events/locations.d.ts +38 -1
- package/dist/commons/events/mocks.test.utils.d.ts +19 -0
- package/dist/commons/events/scopes.d.ts +24 -1
- package/dist/commons/events/state/flags.d.ts +16 -0
- package/dist/commons/events/state/index.d.ts +0 -4
- package/dist/commons/events/state/utils.d.ts +12 -289
- package/dist/commons/events/utils.d.ts +13 -2
- package/dist/conditionals/index.js +92 -9
- package/dist/events/index.js +1204 -290
- package/dist/migrations/v2.0/add-birth-certificate-issuance-flag.d.ts.map +1 -1
- package/dist/migrations/v2.0/add-birth-certificate-issuance-flag.js +60 -35
- package/dist/migrations/v2.0/checkout-upstream-files.d.ts +1 -1
- package/dist/migrations/v2.0/checkout-upstream-files.d.ts.map +1 -1
- package/dist/migrations/v2.0/checkout-upstream-files.js +1 -2
- package/dist/migrations/v2.0/delete-infrastructure-directory.d.ts +9 -1
- package/dist/migrations/v2.0/delete-infrastructure-directory.d.ts.map +1 -1
- package/dist/migrations/v2.0/delete-infrastructure-directory.js +66 -20
- package/dist/migrations/v2.0/fix-accept-requested-registration-function-type.d.ts +3 -0
- package/dist/migrations/v2.0/fix-accept-requested-registration-function-type.d.ts.map +1 -0
- package/dist/migrations/v2.0/fix-accept-requested-registration-function-type.js +110 -0
- package/dist/migrations/v2.0/index.d.ts +5 -3
- package/dist/migrations/v2.0/index.d.ts.map +1 -1
- package/dist/migrations/v2.0/index.js +546 -176
- package/dist/migrations/v2.0/make-built-in-validate-actions-custom.d.ts.map +1 -1
- package/dist/migrations/v2.0/make-built-in-validate-actions-custom.js +90 -1
- package/dist/migrations/v2.0/merge-infrastructure-directory.d.ts +11 -1
- package/dist/migrations/v2.0/merge-infrastructure-directory.d.ts.map +1 -1
- package/dist/migrations/v2.0/merge-infrastructure-directory.js +17 -16
- package/dist/migrations/v2.0/migrate-scopes.d.ts.map +1 -1
- package/dist/migrations/v2.0/migrate-scopes.js +54 -30
- package/dist/migrations/v2.0/migrate-workqueue-configs.d.ts.map +1 -1
- package/dist/migrations/v2.0/migrate-workqueue-configs.js +140 -59
- package/dist/notification/index.js +936 -162
- package/dist/scopes/index.d.ts +91 -16
- package/dist/scopes/index.js +55 -12
- package/opencrvs-toolkit-2.0.0-rc.ff1424b.tgz +0 -0
- package/package.json +6 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/opencrvs-toolkit-2.0.0-rc.fef9d21.tgz +0 -0
|
@@ -75,7 +75,10 @@ var ActionConditional = z.discriminatedUnion("type", [
|
|
|
75
75
|
ShowConditional,
|
|
76
76
|
// Action can be shown to the user in the list but as disabled
|
|
77
77
|
EnableConditional
|
|
78
|
-
])
|
|
78
|
+
]).meta({
|
|
79
|
+
id: "ActionConditional",
|
|
80
|
+
description: "Conditional gating whether an action is shown (SHOW) or enabled (ENABLE). When omitted from an action, the action is shown and enabled for everyone."
|
|
81
|
+
});
|
|
79
82
|
var DisplayOnReviewConditional = z.object({
|
|
80
83
|
type: z.literal(ConditionalType.DISPLAY_ON_REVIEW),
|
|
81
84
|
conditional: Conditional
|
|
@@ -90,8 +93,8 @@ var FieldConditional = z.discriminatedUnion("type", [
|
|
|
90
93
|
// Field output can be shown / hidden on the review page
|
|
91
94
|
DisplayOnReviewConditional
|
|
92
95
|
]).meta({
|
|
93
|
-
|
|
94
|
-
|
|
96
|
+
id: "FieldConditional",
|
|
97
|
+
description: "Conditional gating whether a form field is shown (SHOW), enabled (ENABLE), or displayed on the review page (DISPLAY_ON_REVIEW). When omitted, the field is shown and enabled for everyone, and is displayed on review whenever it has a value."
|
|
95
98
|
});
|
|
96
99
|
|
|
97
100
|
// ../commons/src/events/TranslationConfig.ts
|
|
@@ -203,6 +206,11 @@ var FieldTypesToHideInReview = [
|
|
|
203
206
|
FieldType.ALPHA_PRINT_BUTTON,
|
|
204
207
|
FieldType.ALPHA_HIDDEN
|
|
205
208
|
];
|
|
209
|
+
var HiddenFieldTypes = [
|
|
210
|
+
FieldType.HTTP,
|
|
211
|
+
FieldType.QUERY_PARAM_READER,
|
|
212
|
+
FieldType.ALPHA_HIDDEN
|
|
213
|
+
];
|
|
206
214
|
|
|
207
215
|
// ../commons/src/events/FieldValue.ts
|
|
208
216
|
var z7 = __toESM(require("zod/v4"));
|
|
@@ -321,7 +329,7 @@ var PlainDate = import_zod.z.string().date().brand("PlainDate").describe("Date i
|
|
|
321
329
|
// ../commons/src/events/FieldValue.ts
|
|
322
330
|
var TextValue = z7.string();
|
|
323
331
|
var HiddenFieldValue = z7.string();
|
|
324
|
-
var NonEmptyTextValue =
|
|
332
|
+
var NonEmptyTextValue = z7.string().trim().min(1);
|
|
325
333
|
var DateValue = z7.iso.date().describe("Date in the format YYYY-MM-DD");
|
|
326
334
|
var AgeValue = z7.object({
|
|
327
335
|
age: z7.number(),
|
|
@@ -350,6 +358,7 @@ var DateRangeFieldValue = z7.object({
|
|
|
350
358
|
var EmailValue = z7.email();
|
|
351
359
|
var CheckboxFieldValue = z7.boolean();
|
|
352
360
|
var NumberFieldValue = z7.number();
|
|
361
|
+
var SignatureFieldValue = FileFieldValue;
|
|
353
362
|
var ButtonFieldValue = z7.number();
|
|
354
363
|
var VerificationStatusValue = z7.enum([
|
|
355
364
|
"verified",
|
|
@@ -418,28 +427,20 @@ function schemaPriority(schema) {
|
|
|
418
427
|
return idx === -1 ? 9999 : idx;
|
|
419
428
|
}
|
|
420
429
|
function safeUnion(schemas) {
|
|
430
|
+
const sortedSchemas = [...schemas].sort(
|
|
431
|
+
(a, b) => schemaPriority(a) - schemaPriority(b)
|
|
432
|
+
);
|
|
421
433
|
return z7.any().superRefine((val, ctx) => {
|
|
422
|
-
const
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
if (successful.length === 0) {
|
|
427
|
-
ctx.addIssue({
|
|
428
|
-
code: "invalid_type",
|
|
429
|
-
expected: "custom",
|
|
430
|
-
message: "Value does not match any schema"
|
|
431
|
-
});
|
|
432
|
-
return;
|
|
433
|
-
}
|
|
434
|
-
successful.sort((a, b) => schemaPriority(a) - schemaPriority(b));
|
|
435
|
-
const best = successful[0];
|
|
436
|
-
if (!best.safeParse(val).success) {
|
|
437
|
-
ctx.addIssue({
|
|
438
|
-
expected: "custom",
|
|
439
|
-
code: "invalid_type",
|
|
440
|
-
message: "Value did not match the best schema"
|
|
441
|
-
});
|
|
434
|
+
for (const schema of sortedSchemas) {
|
|
435
|
+
if (schema.safeParse(val).success) {
|
|
436
|
+
return;
|
|
437
|
+
}
|
|
442
438
|
}
|
|
439
|
+
ctx.addIssue({
|
|
440
|
+
code: "invalid_type",
|
|
441
|
+
expected: "custom",
|
|
442
|
+
message: "Value does not match any schema"
|
|
443
|
+
});
|
|
443
444
|
}).meta({
|
|
444
445
|
description: "Value that matches exactly one of the possible schema types (TextValue, DateValue, DateRangeFieldValue). The best matching schema is chosen by priority."
|
|
445
446
|
});
|
|
@@ -656,6 +657,10 @@ var scopeByEvent = z11.preprocess(
|
|
|
656
657
|
(val) => val === void 0 ? void 0 : [val].flat(),
|
|
657
658
|
z11.array(z11.string()).optional()
|
|
658
659
|
).describe("Event type, e.g. birth, death");
|
|
660
|
+
var userRole = z11.preprocess(
|
|
661
|
+
(val) => val === void 0 ? void 0 : [val].flat(),
|
|
662
|
+
z11.array(z11.string()).optional()
|
|
663
|
+
).describe("User role, e.g. admin, field agent");
|
|
659
664
|
var scopeOptionsPlaceEvent = z11.object({
|
|
660
665
|
event: scopeByEvent,
|
|
661
666
|
placeOfEvent: JurisdictionFilter.optional()
|
|
@@ -679,6 +684,9 @@ var CustomActionScopeOptions = AllRecordScopeOptions.extend({
|
|
|
679
684
|
var AccessLevelOptions = z11.object({
|
|
680
685
|
accessLevel: JurisdictionFilter.optional()
|
|
681
686
|
});
|
|
687
|
+
var AllUserScopeOptions = AccessLevelOptions.extend({
|
|
688
|
+
role: userRole.optional()
|
|
689
|
+
});
|
|
682
690
|
var WorkqueueOrDashboardOptions = z11.object({
|
|
683
691
|
ids: z11.preprocess(
|
|
684
692
|
(val) => val === void 0 ? void 0 : [val].flat(),
|
|
@@ -688,6 +696,7 @@ var WorkqueueOrDashboardOptions = z11.object({
|
|
|
688
696
|
var AllScopeOptions = z11.object({
|
|
689
697
|
...AllRecordScopeOptions.shape,
|
|
690
698
|
...AccessLevelOptions.shape,
|
|
699
|
+
...AllUserScopeOptions.shape,
|
|
691
700
|
...WorkqueueOrDashboardOptions.shape
|
|
692
701
|
});
|
|
693
702
|
var ScopeOptionKey = AllScopeOptions.keyof();
|
|
@@ -760,6 +769,30 @@ var RecordScopeV2 = z11.discriminatedUnion("type", [
|
|
|
760
769
|
]).describe(
|
|
761
770
|
"Scopes used to check user's permission to perform actions on a record."
|
|
762
771
|
);
|
|
772
|
+
var SystemScopeType = z11.enum([
|
|
773
|
+
"organisation.read-locations",
|
|
774
|
+
"user.read",
|
|
775
|
+
"user.create",
|
|
776
|
+
"user.edit",
|
|
777
|
+
"user.search"
|
|
778
|
+
]);
|
|
779
|
+
var UserScopeType = SystemScopeType.extract([
|
|
780
|
+
"user.read",
|
|
781
|
+
"user.create",
|
|
782
|
+
"user.edit",
|
|
783
|
+
"user.search"
|
|
784
|
+
]);
|
|
785
|
+
var ScopesWithRoleOption = UserScopeType.extract(["user.edit", "user.create"]);
|
|
786
|
+
var UserScopeV2 = z11.discriminatedUnion("type", [
|
|
787
|
+
z11.object({
|
|
788
|
+
type: ScopesWithRoleOption,
|
|
789
|
+
options: AllUserScopeOptions.optional()
|
|
790
|
+
}),
|
|
791
|
+
z11.object({
|
|
792
|
+
type: UserScopeType.extract(["user.read", "user.search"]),
|
|
793
|
+
options: AccessLevelOptions.optional()
|
|
794
|
+
})
|
|
795
|
+
]);
|
|
763
796
|
var ResolvedRecordScopeV2 = z11.discriminatedUnion("type", [
|
|
764
797
|
z11.object({
|
|
765
798
|
type: ScopesWithPlaceEventOptions,
|
|
@@ -780,16 +813,14 @@ var ResolvedRecordScopeV2 = z11.discriminatedUnion("type", [
|
|
|
780
813
|
}).optional()
|
|
781
814
|
})
|
|
782
815
|
]).describe("Resolved scope with location/user IDs instead of filters.");
|
|
783
|
-
var SystemScopeType = z11.enum([
|
|
784
|
-
"organisation.read-locations",
|
|
785
|
-
"user.read",
|
|
786
|
-
"user.create",
|
|
787
|
-
"user.edit"
|
|
788
|
-
]);
|
|
789
816
|
var Scope = z11.discriminatedUnion("type", [
|
|
790
817
|
z11.object({ type: PlainScopeType }),
|
|
791
818
|
...RecordScopeV2.options,
|
|
792
|
-
|
|
819
|
+
...UserScopeV2.options,
|
|
820
|
+
z11.object({
|
|
821
|
+
type: z11.literal("organisation.read-locations"),
|
|
822
|
+
options: AccessLevelOptions.optional()
|
|
823
|
+
}),
|
|
793
824
|
z11.object({
|
|
794
825
|
type: z11.literal("workqueue"),
|
|
795
826
|
options: WorkqueueOrDashboardOptions
|
|
@@ -809,7 +840,9 @@ var ScopeType = z11.enum([
|
|
|
809
840
|
var EncodedScope = z11.string().brand("EncodedScope");
|
|
810
841
|
var DEFAULT_SCOPE_OPTIONS = {
|
|
811
842
|
placeOfEvent: JurisdictionFilter.enum.all,
|
|
812
|
-
accessLevel: JurisdictionFilter.enum.all
|
|
843
|
+
accessLevel: JurisdictionFilter.enum.all,
|
|
844
|
+
registeredIn: JurisdictionFilter.enum.all,
|
|
845
|
+
declaredIn: JurisdictionFilter.enum.all
|
|
813
846
|
};
|
|
814
847
|
|
|
815
848
|
// ../commons/src/authentication.ts
|
|
@@ -962,8 +995,9 @@ var RequestedCorrectionAction = ActionBase.extend(
|
|
|
962
995
|
var ApprovedCorrectionAction = ActionBase.extend(
|
|
963
996
|
z13.object({
|
|
964
997
|
type: z13.literal(ActionType.APPROVE_CORRECTION),
|
|
965
|
-
requestId: z13.string()
|
|
998
|
+
requestId: z13.string(),
|
|
966
999
|
// TODO move into 'content' property
|
|
1000
|
+
content: z13.object({ immediateCorrection: z13.boolean().optional() }).optional()
|
|
967
1001
|
}).shape
|
|
968
1002
|
);
|
|
969
1003
|
var RejectedCorrectionAction = ActionBase.extend(
|
|
@@ -1055,6 +1089,9 @@ var FlagConfig = z14.object({
|
|
|
1055
1089
|
"Indicates if this flag expects an action to be performed to be cleared."
|
|
1056
1090
|
),
|
|
1057
1091
|
label: TranslationConfig.describe("Human readable label of the flag.")
|
|
1092
|
+
}).meta({
|
|
1093
|
+
id: "FlagConfig",
|
|
1094
|
+
description: "Configuration for a custom flag that can be added to or removed from records by event actions."
|
|
1058
1095
|
});
|
|
1059
1096
|
var ActionFlagConfig = z14.object({
|
|
1060
1097
|
id: Flag,
|
|
@@ -1062,6 +1099,9 @@ var ActionFlagConfig = z14.object({
|
|
|
1062
1099
|
conditional: Conditional.optional().describe(
|
|
1063
1100
|
"When conditional is met, the operation is performed on the flag. If not provided, the operation is performed unconditionally."
|
|
1064
1101
|
)
|
|
1102
|
+
}).meta({
|
|
1103
|
+
id: "ActionFlagConfig",
|
|
1104
|
+
description: "Add or remove operation applied to a flag when the parent action is accepted. Optionally gated by a conditional."
|
|
1065
1105
|
});
|
|
1066
1106
|
|
|
1067
1107
|
// ../commons/src/events/EventMetadata.ts
|
|
@@ -1083,8 +1123,7 @@ var ActionCreationMetadata = z15.object({
|
|
|
1083
1123
|
),
|
|
1084
1124
|
createdByUserType: z15.enum(["user", "system"]).nullish().describe("Whether the user is a normal user or a system."),
|
|
1085
1125
|
acceptedAt: z15.iso.datetime().describe("Timestamp when the action request was accepted."),
|
|
1086
|
-
createdByRole: z15.string().optional().describe("Role of the user at the time of action request creation.")
|
|
1087
|
-
createdBySignature: z15.string().nullish().describe("Signature of the user who created the action request.")
|
|
1126
|
+
createdByRole: z15.string().optional().describe("Role of the user at the time of action request creation.")
|
|
1088
1127
|
});
|
|
1089
1128
|
var RegistrationCreationMetadata = ActionCreationMetadata.extend({
|
|
1090
1129
|
registrationNumber: z15.string().describe(
|
|
@@ -1112,9 +1151,6 @@ var EventMetadata = z15.object({
|
|
|
1112
1151
|
createdAtLocation: UUID.nullish().describe(
|
|
1113
1152
|
"Location of the user who created the event."
|
|
1114
1153
|
),
|
|
1115
|
-
createdBySignature: DocumentPath.nullish().describe(
|
|
1116
|
-
"Signature of the user who created the event."
|
|
1117
|
-
),
|
|
1118
1154
|
updatedAtLocation: UUID.nullish().describe(
|
|
1119
1155
|
"Location of the user who last changed the status."
|
|
1120
1156
|
),
|
|
@@ -1378,14 +1414,31 @@ var FieldId = import_v43.default.string().superRefine((val, ctx) => {
|
|
|
1378
1414
|
}
|
|
1379
1415
|
}).describe("Unique identifier for the field");
|
|
1380
1416
|
var FieldReference = import_v43.default.object({
|
|
1381
|
-
$$field: FieldId,
|
|
1417
|
+
$$field: FieldId.describe("Id of the field to reference"),
|
|
1382
1418
|
$$subfield: import_v43.default.array(import_v43.default.string()).optional().default([]).describe(
|
|
1383
1419
|
'If the FieldValue is an object, subfield can be used to refer to e.g. `["foo", "bar"]` in `{ foo: { bar: 3 } }`'
|
|
1420
|
+
),
|
|
1421
|
+
$$code: import_v43.default.string().optional().describe(
|
|
1422
|
+
"Serialised client-side function body. When present the expression is evaluated rather than dereferenced."
|
|
1384
1423
|
)
|
|
1385
|
-
}).describe(
|
|
1424
|
+
}).describe(
|
|
1425
|
+
"Reference to a field value, with an optional client-side computation applied."
|
|
1426
|
+
);
|
|
1427
|
+
var ComputedDefaultValue = import_v43.default.object({
|
|
1428
|
+
$$code: import_v43.default.string().describe(
|
|
1429
|
+
"Serialised client-side function body. Receives (undefined, context) where context includes $now, $online, and system variables."
|
|
1430
|
+
)
|
|
1431
|
+
}).describe("A context-only computation used as a field default value.");
|
|
1386
1432
|
var ValidationConfig = import_v43.default.object({
|
|
1387
|
-
validator: Conditional
|
|
1388
|
-
|
|
1433
|
+
validator: Conditional.describe(
|
|
1434
|
+
"Conditional expression that must hold for the field value to be considered valid."
|
|
1435
|
+
),
|
|
1436
|
+
message: TranslationConfig.describe(
|
|
1437
|
+
"Error message displayed when the validator does not hold."
|
|
1438
|
+
)
|
|
1439
|
+
}).meta({
|
|
1440
|
+
id: "ValidationConfig",
|
|
1441
|
+
description: "Validation rule applied to a form field. The validator is a conditional expression that must hold for the field value to be considered valid."
|
|
1389
1442
|
});
|
|
1390
1443
|
var requiredSchema = import_v43.default.union([
|
|
1391
1444
|
import_v43.default.boolean(),
|
|
@@ -1416,7 +1469,7 @@ var BaseField = import_v43.default.object({
|
|
|
1416
1469
|
"Indicates whether the field can be modified during record correction."
|
|
1417
1470
|
),
|
|
1418
1471
|
value: FieldReference.or(import_v43.default.array(FieldReference)).optional().describe(
|
|
1419
|
-
"Reference to the source field or fields. When a value is defined, it is copied from the parent field when changed. If multiple references are provided, the first truthy value is used."
|
|
1472
|
+
"Reference to the source field or fields. When a value is defined, it is copied from the parent field when changed. If multiple references are provided, the first truthy value is used. A FieldReference with $$code computes the value via a custom client-side function."
|
|
1420
1473
|
),
|
|
1421
1474
|
analytics: import_v43.default.boolean().default(false).optional().describe(
|
|
1422
1475
|
"Indicates whether the field is included in analytics. When enabled, its value becomes available in the analytics dashboard."
|
|
@@ -1424,30 +1477,40 @@ var BaseField = import_v43.default.object({
|
|
|
1424
1477
|
}).describe("Common properties shared across all field types.");
|
|
1425
1478
|
var Divider = BaseField.extend({
|
|
1426
1479
|
type: import_v43.default.literal(FieldType.DIVIDER)
|
|
1480
|
+
}).meta({
|
|
1481
|
+
description: "A horizontal line divider",
|
|
1482
|
+
id: "Divider"
|
|
1427
1483
|
});
|
|
1428
1484
|
var TextField = BaseField.extend({
|
|
1429
1485
|
type: import_v43.default.literal(FieldType.TEXT),
|
|
1430
|
-
defaultValue: import_v43.default.union([NonEmptyTextValue, SerializedUserField]).optional(),
|
|
1486
|
+
defaultValue: import_v43.default.union([NonEmptyTextValue, SerializedUserField, ComputedDefaultValue]).optional(),
|
|
1431
1487
|
configuration: import_v43.default.object({
|
|
1432
1488
|
maxLength: import_v43.default.number().optional().describe("Maximum length of the text"),
|
|
1433
1489
|
type: import_v43.default.enum(["text", "password"]).optional(),
|
|
1434
1490
|
prefix: TranslationConfig.optional(),
|
|
1435
1491
|
postfix: TranslationConfig.optional()
|
|
1436
1492
|
}).default({ type: "text" }).optional()
|
|
1437
|
-
}).
|
|
1493
|
+
}).meta({
|
|
1494
|
+
description: "A text input field",
|
|
1495
|
+
id: "TextField"
|
|
1496
|
+
});
|
|
1438
1497
|
var NumberField = BaseField.extend({
|
|
1439
1498
|
type: import_v43.default.literal(FieldType.NUMBER),
|
|
1440
|
-
defaultValue: NumberFieldValue.optional(),
|
|
1499
|
+
defaultValue: NumberFieldValue.or(ComputedDefaultValue).optional(),
|
|
1441
1500
|
configuration: import_v43.default.object({
|
|
1442
1501
|
min: import_v43.default.number().optional().describe("Minimum value"),
|
|
1443
1502
|
max: import_v43.default.number().optional().describe("Maximum value"),
|
|
1503
|
+
integer: import_v43.default.boolean().optional().describe("When true, only whole numbers are allowed"),
|
|
1444
1504
|
prefix: TranslationConfig.optional(),
|
|
1445
1505
|
postfix: TranslationConfig.optional()
|
|
1446
1506
|
}).optional()
|
|
1447
|
-
}).
|
|
1507
|
+
}).meta({
|
|
1508
|
+
description: "A number input field",
|
|
1509
|
+
id: "NumberField"
|
|
1510
|
+
});
|
|
1448
1511
|
var TextAreaField = BaseField.extend({
|
|
1449
1512
|
type: import_v43.default.literal(FieldType.TEXTAREA),
|
|
1450
|
-
defaultValue: NonEmptyTextValue.optional(),
|
|
1513
|
+
defaultValue: NonEmptyTextValue.or(ComputedDefaultValue).optional(),
|
|
1451
1514
|
configuration: import_v43.default.object({
|
|
1452
1515
|
maxLength: import_v43.default.number().optional().describe("Maximum length of the text"),
|
|
1453
1516
|
rows: import_v43.default.number().optional().describe("Number of visible text lines"),
|
|
@@ -1455,7 +1518,10 @@ var TextAreaField = BaseField.extend({
|
|
|
1455
1518
|
prefix: TranslationConfig.optional(),
|
|
1456
1519
|
postfix: TranslationConfig.optional()
|
|
1457
1520
|
}).default({ rows: 4 }).optional()
|
|
1458
|
-
}).
|
|
1521
|
+
}).meta({
|
|
1522
|
+
description: "A multiline text input",
|
|
1523
|
+
id: "TextAreaField"
|
|
1524
|
+
});
|
|
1459
1525
|
var ImageMimeType = import_v43.default.enum([
|
|
1460
1526
|
"image/png",
|
|
1461
1527
|
"image/jpg",
|
|
@@ -1478,58 +1544,76 @@ var SignatureField = BaseField.extend({
|
|
|
1478
1544
|
signaturePromptLabel: TranslationConfig.describe(
|
|
1479
1545
|
"Title of the signature modal"
|
|
1480
1546
|
),
|
|
1481
|
-
defaultValue:
|
|
1547
|
+
defaultValue: SignatureFieldValue.or(ComputedDefaultValue).optional(),
|
|
1482
1548
|
configuration: import_v43.default.object({
|
|
1483
1549
|
maxFileSize: import_v43.default.number().describe("Maximum file size in bytes").default(DEFAULT_MAX_FILE_SIZE_BYTES),
|
|
1484
1550
|
acceptedFileTypes: MimeType.array().optional().describe("List of allowed file formats for the signature")
|
|
1485
1551
|
}).default({
|
|
1486
1552
|
maxFileSize: DEFAULT_MAX_FILE_SIZE_BYTES
|
|
1487
1553
|
})
|
|
1488
|
-
}).
|
|
1554
|
+
}).meta({
|
|
1555
|
+
description: "A signature input field",
|
|
1556
|
+
id: "SignatureField"
|
|
1557
|
+
});
|
|
1489
1558
|
var EmailField = BaseField.extend({
|
|
1490
1559
|
type: import_v43.default.literal(FieldType.EMAIL),
|
|
1491
1560
|
configuration: import_v43.default.object({
|
|
1492
1561
|
maxLength: import_v43.default.number().optional().describe("Maximum length of the text")
|
|
1493
1562
|
}).default({ maxLength: 255 }).optional(),
|
|
1494
|
-
defaultValue: NonEmptyTextValue.optional()
|
|
1563
|
+
defaultValue: NonEmptyTextValue.or(ComputedDefaultValue).optional()
|
|
1564
|
+
}).meta({
|
|
1565
|
+
description: "An email input field",
|
|
1566
|
+
id: "EmailField"
|
|
1495
1567
|
});
|
|
1496
1568
|
var DateField = BaseField.extend({
|
|
1497
1569
|
type: import_v43.default.literal(FieldType.DATE),
|
|
1498
|
-
defaultValue: SerializedNowDateTime.or(PlainDate).optional().describe("Default date value(yyyy-MM-dd)"),
|
|
1570
|
+
defaultValue: SerializedNowDateTime.or(PlainDate).or(ComputedDefaultValue).optional().describe("Default date value(yyyy-MM-dd)"),
|
|
1499
1571
|
configuration: import_v43.default.object({
|
|
1500
1572
|
notice: TranslationConfig.describe(
|
|
1501
1573
|
"Text to display above the date input"
|
|
1502
1574
|
).optional()
|
|
1503
1575
|
}).optional()
|
|
1504
|
-
}).
|
|
1576
|
+
}).meta({
|
|
1577
|
+
description: "A date input (yyyy-MM-dd)",
|
|
1578
|
+
id: "DateField"
|
|
1579
|
+
});
|
|
1505
1580
|
var AgeField = BaseField.extend({
|
|
1506
1581
|
type: import_v43.default.literal(FieldType.AGE),
|
|
1507
|
-
defaultValue: NumberFieldValue.optional(),
|
|
1582
|
+
defaultValue: NumberFieldValue.or(ComputedDefaultValue).optional(),
|
|
1508
1583
|
configuration: import_v43.default.object({
|
|
1509
1584
|
asOfDate: FieldReference,
|
|
1510
1585
|
prefix: TranslationConfig.optional(),
|
|
1511
1586
|
postfix: TranslationConfig.optional()
|
|
1512
1587
|
})
|
|
1513
|
-
}).
|
|
1588
|
+
}).meta({
|
|
1589
|
+
description: "An age input field which uses the current date as the asOfDate",
|
|
1590
|
+
id: "AgeField"
|
|
1591
|
+
});
|
|
1514
1592
|
var TimeField = BaseField.extend({
|
|
1515
1593
|
type: import_v43.default.literal(FieldType.TIME),
|
|
1516
|
-
defaultValue: SerializedNowDateTime.or(TimeValue).optional().describe("Default time value (HH-mm)"),
|
|
1594
|
+
defaultValue: SerializedNowDateTime.or(TimeValue).or(ComputedDefaultValue).optional().describe("Default time value (HH-mm)"),
|
|
1517
1595
|
configuration: import_v43.default.object({
|
|
1518
1596
|
use12HourFormat: import_v43.default.boolean().optional().describe("Whether to use 12-hour format"),
|
|
1519
1597
|
notice: TranslationConfig.describe(
|
|
1520
1598
|
"Text to display above the time input"
|
|
1521
1599
|
).optional()
|
|
1522
1600
|
}).optional()
|
|
1523
|
-
}).
|
|
1601
|
+
}).meta({
|
|
1602
|
+
description: "A single time input (HH-mm)",
|
|
1603
|
+
id: "TimeField"
|
|
1604
|
+
});
|
|
1524
1605
|
var DateRangeField = BaseField.extend({
|
|
1525
1606
|
type: import_v43.default.literal(FieldType.DATE_RANGE),
|
|
1526
|
-
defaultValue: DateRangeFieldValue.optional(),
|
|
1607
|
+
defaultValue: DateRangeFieldValue.or(ComputedDefaultValue).optional(),
|
|
1527
1608
|
configuration: import_v43.default.object({
|
|
1528
1609
|
notice: TranslationConfig.describe(
|
|
1529
1610
|
"Text to display above the date input"
|
|
1530
1611
|
).optional()
|
|
1531
1612
|
}).optional()
|
|
1532
|
-
}).
|
|
1613
|
+
}).meta({
|
|
1614
|
+
description: "A date range input ({ start: yyyy-MM-dd, end: yyyy-MM-dd })",
|
|
1615
|
+
id: "DateRangeField"
|
|
1616
|
+
});
|
|
1533
1617
|
var HtmlFontVariant = import_v43.default.enum([
|
|
1534
1618
|
"reg12",
|
|
1535
1619
|
"reg14",
|
|
@@ -1573,21 +1657,33 @@ var ImageViewField = BaseField.extend({
|
|
|
1573
1657
|
type: import_v43.default.literal(FieldType.IMAGE_VIEW),
|
|
1574
1658
|
defaultValue: NonEmptyTextValue.optional(),
|
|
1575
1659
|
configuration: ImageConfiguration
|
|
1576
|
-
}).
|
|
1660
|
+
}).meta({
|
|
1661
|
+
description: "A read-only image component for form pages",
|
|
1662
|
+
id: "ImageViewField"
|
|
1663
|
+
});
|
|
1577
1664
|
var Paragraph = BaseField.extend({
|
|
1578
1665
|
type: import_v43.default.literal(FieldType.PARAGRAPH),
|
|
1579
1666
|
configuration: ParagraphConfiguration
|
|
1580
|
-
}).
|
|
1667
|
+
}).meta({
|
|
1668
|
+
description: "A read-only HTML <p> paragraph",
|
|
1669
|
+
id: "Paragraph"
|
|
1670
|
+
});
|
|
1581
1671
|
var Heading = BaseField.extend({
|
|
1582
1672
|
type: import_v43.default.literal(FieldType.HEADING),
|
|
1583
1673
|
configuration: HeadingConfiguration
|
|
1584
|
-
}).
|
|
1674
|
+
}).meta({
|
|
1675
|
+
description: "A read-only heading component for form pages",
|
|
1676
|
+
id: "Heading"
|
|
1677
|
+
});
|
|
1585
1678
|
var PageHeader = BaseField.extend({
|
|
1586
1679
|
type: import_v43.default.literal(FieldType.PAGE_HEADER)
|
|
1587
|
-
}).
|
|
1680
|
+
}).meta({
|
|
1681
|
+
description: "A read-only header component for form pages",
|
|
1682
|
+
id: "PageHeader"
|
|
1683
|
+
});
|
|
1588
1684
|
var File = BaseField.extend({
|
|
1589
1685
|
type: import_v43.default.literal(FieldType.FILE),
|
|
1590
|
-
defaultValue: FileFieldValue.optional(),
|
|
1686
|
+
defaultValue: FileFieldValue.or(ComputedDefaultValue).optional(),
|
|
1591
1687
|
configuration: import_v43.default.object({
|
|
1592
1688
|
maxFileSize: import_v43.default.number().describe("Maximum file size in bytes").default(DEFAULT_MAX_FILE_SIZE_BYTES),
|
|
1593
1689
|
acceptedFileTypes: MimeType.array().optional().describe("List of allowed file formats for the signature"),
|
|
@@ -1603,7 +1699,10 @@ var File = BaseField.extend({
|
|
|
1603
1699
|
}).default({
|
|
1604
1700
|
maxFileSize: DEFAULT_MAX_FILE_SIZE_BYTES
|
|
1605
1701
|
})
|
|
1606
|
-
}).
|
|
1702
|
+
}).meta({
|
|
1703
|
+
description: "A file upload field",
|
|
1704
|
+
id: "File"
|
|
1705
|
+
});
|
|
1607
1706
|
var SelectOption = import_v43.default.object({
|
|
1608
1707
|
value: import_v43.default.string().describe("The value of the option"),
|
|
1609
1708
|
label: import_v43.default.union([import_v43.default.string(), TranslationConfig]).describe("The label of the option"),
|
|
@@ -1611,7 +1710,7 @@ var SelectOption = import_v43.default.object({
|
|
|
1611
1710
|
});
|
|
1612
1711
|
var NumberWithUnitField = BaseField.extend({
|
|
1613
1712
|
type: import_v43.default.literal(FieldType.NUMBER_WITH_UNIT),
|
|
1614
|
-
defaultValue: NumberWithUnitFieldValue.optional(),
|
|
1713
|
+
defaultValue: NumberWithUnitFieldValue.or(ComputedDefaultValue).optional(),
|
|
1615
1714
|
options: import_v43.default.array(SelectOption).describe("A list of options for the unit select"),
|
|
1616
1715
|
configuration: import_v43.default.object({
|
|
1617
1716
|
min: import_v43.default.number().optional().describe("Minimum value of the number field"),
|
|
@@ -1620,17 +1719,23 @@ var NumberWithUnitField = BaseField.extend({
|
|
|
1620
1719
|
"Placeholder for the number field"
|
|
1621
1720
|
)
|
|
1622
1721
|
}).optional()
|
|
1623
|
-
}).
|
|
1722
|
+
}).meta({
|
|
1723
|
+
description: "A number with unit input field",
|
|
1724
|
+
id: "NumberWithUnitField"
|
|
1725
|
+
});
|
|
1624
1726
|
var RadioGroup = BaseField.extend({
|
|
1625
1727
|
type: import_v43.default.literal(FieldType.RADIO_GROUP),
|
|
1626
|
-
defaultValue: TextValue.optional(),
|
|
1728
|
+
defaultValue: TextValue.or(ComputedDefaultValue).optional(),
|
|
1627
1729
|
options: import_v43.default.array(SelectOption).describe("A list of options"),
|
|
1628
1730
|
configuration: import_v43.default.object({
|
|
1629
1731
|
styles: import_v43.default.object({
|
|
1630
1732
|
size: import_v43.default.enum(["NORMAL", "LARGE"]).optional()
|
|
1631
1733
|
}).optional()
|
|
1632
1734
|
}).optional()
|
|
1633
|
-
}).
|
|
1735
|
+
}).meta({
|
|
1736
|
+
description: "A grouped radio button field",
|
|
1737
|
+
id: "RadioGroup"
|
|
1738
|
+
});
|
|
1634
1739
|
var BulletList = BaseField.extend({
|
|
1635
1740
|
type: import_v43.default.literal(FieldType.BULLET_LIST),
|
|
1636
1741
|
items: import_v43.default.array(TranslationConfig).describe("A list of items"),
|
|
@@ -1639,10 +1744,13 @@ var BulletList = BaseField.extend({
|
|
|
1639
1744
|
fontVariant: HtmlFontVariant.optional()
|
|
1640
1745
|
}).optional()
|
|
1641
1746
|
}).default({})
|
|
1642
|
-
}).
|
|
1747
|
+
}).meta({
|
|
1748
|
+
description: "A list of bullet points",
|
|
1749
|
+
id: "BulletList"
|
|
1750
|
+
});
|
|
1643
1751
|
var Select = BaseField.extend({
|
|
1644
1752
|
type: import_v43.default.literal(FieldType.SELECT),
|
|
1645
|
-
defaultValue: TextValue.optional(),
|
|
1753
|
+
defaultValue: TextValue.or(ComputedDefaultValue).optional(),
|
|
1646
1754
|
options: import_v43.default.array(SelectOption).describe("A list of options"),
|
|
1647
1755
|
noOptionsMessage: TranslationConfig.optional().describe(
|
|
1648
1756
|
`
|
|
@@ -1654,16 +1762,22 @@ var Select = BaseField.extend({
|
|
|
1654
1762
|
{ ..., defaultMessage: "'{input}' is not listed among the health facilities." }
|
|
1655
1763
|
`
|
|
1656
1764
|
)
|
|
1657
|
-
}).
|
|
1765
|
+
}).meta({
|
|
1766
|
+
description: "A select input field",
|
|
1767
|
+
id: "Select"
|
|
1768
|
+
});
|
|
1658
1769
|
var SelectDateRangeOption = import_v43.default.object({
|
|
1659
1770
|
value: SelectDateRangeValue.describe("The value of the option"),
|
|
1660
1771
|
label: TranslationConfig.describe("The label of the option")
|
|
1661
1772
|
});
|
|
1662
1773
|
var SelectDateRangeField = BaseField.extend({
|
|
1663
1774
|
type: import_v43.default.literal(FieldType.SELECT_DATE_RANGE),
|
|
1664
|
-
defaultValue: SelectDateRangeValue.optional(),
|
|
1775
|
+
defaultValue: SelectDateRangeValue.or(ComputedDefaultValue).optional(),
|
|
1665
1776
|
options: import_v43.default.array(SelectDateRangeOption).describe("A list of options")
|
|
1666
|
-
}).
|
|
1777
|
+
}).meta({
|
|
1778
|
+
description: "A date range selection field",
|
|
1779
|
+
id: "SelectDateRangeField"
|
|
1780
|
+
});
|
|
1667
1781
|
var NameConfig = import_v43.default.object({
|
|
1668
1782
|
firstname: import_v43.default.object({ required: requiredSchema, label: TranslationConfig.optional() }).optional(),
|
|
1669
1783
|
middlename: import_v43.default.object({ required: requiredSchema, label: TranslationConfig.optional() }).optional(),
|
|
@@ -1675,7 +1789,7 @@ var NameField = BaseField.extend({
|
|
|
1675
1789
|
firstname: SerializedUserField.or(NonEmptyTextValue).optional(),
|
|
1676
1790
|
middlename: SerializedUserField.or(NonEmptyTextValue).optional(),
|
|
1677
1791
|
surname: SerializedUserField.or(NonEmptyTextValue).optional()
|
|
1678
|
-
}).optional(),
|
|
1792
|
+
}).or(ComputedDefaultValue).optional(),
|
|
1679
1793
|
configuration: import_v43.default.object({
|
|
1680
1794
|
name: NameConfig.default({
|
|
1681
1795
|
firstname: { required: true },
|
|
@@ -1694,26 +1808,41 @@ var NameField = BaseField.extend({
|
|
|
1694
1808
|
surname: { required: true }
|
|
1695
1809
|
}
|
|
1696
1810
|
}).optional()
|
|
1697
|
-
}).
|
|
1811
|
+
}).meta({
|
|
1812
|
+
description: "A field for entering a persons name",
|
|
1813
|
+
id: "NameField"
|
|
1814
|
+
});
|
|
1698
1815
|
var PhoneField = BaseField.extend({
|
|
1699
|
-
defaultValue: NonEmptyTextValue.optional(),
|
|
1816
|
+
defaultValue: NonEmptyTextValue.or(ComputedDefaultValue).optional(),
|
|
1700
1817
|
type: import_v43.default.literal(FieldType.PHONE)
|
|
1701
|
-
}).
|
|
1818
|
+
}).meta({
|
|
1819
|
+
description: "A field for entering a phone number",
|
|
1820
|
+
id: "PhoneField"
|
|
1821
|
+
});
|
|
1702
1822
|
var IdField = BaseField.extend({
|
|
1703
|
-
defaultValue: NonEmptyTextValue.optional(),
|
|
1823
|
+
defaultValue: NonEmptyTextValue.or(ComputedDefaultValue).optional(),
|
|
1704
1824
|
type: import_v43.default.literal(FieldType.ID)
|
|
1705
|
-
}).
|
|
1825
|
+
}).meta({
|
|
1826
|
+
description: "A field for entering an ID",
|
|
1827
|
+
id: "IdField"
|
|
1828
|
+
});
|
|
1706
1829
|
var Checkbox = BaseField.extend({
|
|
1707
1830
|
type: import_v43.default.literal(FieldType.CHECKBOX),
|
|
1708
|
-
defaultValue: CheckboxFieldValue.default(false)
|
|
1709
|
-
}).
|
|
1831
|
+
defaultValue: CheckboxFieldValue.or(ComputedDefaultValue).default(false)
|
|
1832
|
+
}).meta({
|
|
1833
|
+
description: "A boolean checkbox field",
|
|
1834
|
+
id: "Checkbox"
|
|
1835
|
+
});
|
|
1710
1836
|
var Country = BaseField.extend({
|
|
1711
1837
|
type: import_v43.default.literal(FieldType.COUNTRY),
|
|
1712
|
-
defaultValue: NonEmptyTextValue.optional(),
|
|
1838
|
+
defaultValue: NonEmptyTextValue.or(ComputedDefaultValue).optional(),
|
|
1713
1839
|
optionOverrides: import_v43.default.array(SelectOption.omit({ label: true })).optional().describe(
|
|
1714
1840
|
"Conditionals for specific countries. Countries not listed are always shown and enabled."
|
|
1715
1841
|
)
|
|
1716
|
-
}).
|
|
1842
|
+
}).meta({
|
|
1843
|
+
description: "A field for selecting a country",
|
|
1844
|
+
id: "Country"
|
|
1845
|
+
});
|
|
1717
1846
|
var AllowedLocations = JurisdictionReference.optional().describe(
|
|
1718
1847
|
"Limits which location options are selectable depending on user jurisdiction and location."
|
|
1719
1848
|
);
|
|
@@ -1722,28 +1851,33 @@ var AdministrativeAreas = import_v43.default.enum([
|
|
|
1722
1851
|
"HEALTH_FACILITY",
|
|
1723
1852
|
"CRVS_OFFICE"
|
|
1724
1853
|
]);
|
|
1725
|
-
var AdministrativeAreaConfiguration = import_v43.default.object({
|
|
1726
|
-
partOf: FieldReference.optional().describe("Parent location"),
|
|
1727
|
-
type: AdministrativeAreas,
|
|
1728
|
-
allowedLocations: AllowedLocations
|
|
1729
|
-
}).describe("Administrative area options");
|
|
1730
1854
|
var AdministrativeAreaField = BaseField.extend({
|
|
1731
1855
|
type: import_v43.default.literal(FieldType.ADMINISTRATIVE_AREA),
|
|
1732
|
-
defaultValue: import_v43.default.union([NonEmptyTextValue, SerializedUserField]).optional(),
|
|
1733
|
-
configuration:
|
|
1734
|
-
|
|
1856
|
+
defaultValue: import_v43.default.union([NonEmptyTextValue, SerializedUserField, ComputedDefaultValue]).optional(),
|
|
1857
|
+
configuration: import_v43.default.object({
|
|
1858
|
+
partOf: FieldReference.optional().describe("Parent location"),
|
|
1859
|
+
type: AdministrativeAreas,
|
|
1860
|
+
allowedLocations: AllowedLocations
|
|
1861
|
+
}).describe("Administrative area options")
|
|
1862
|
+
}).meta({
|
|
1863
|
+
description: "Administrative area input field",
|
|
1864
|
+
id: "AdministrativeAreaField"
|
|
1865
|
+
});
|
|
1735
1866
|
var LocationInput = BaseField.extend({
|
|
1736
1867
|
type: import_v43.default.literal(FieldType.LOCATION),
|
|
1737
|
-
defaultValue: import_v43.default.union([NonEmptyTextValue, SerializedUserField]).optional(),
|
|
1868
|
+
defaultValue: import_v43.default.union([NonEmptyTextValue, SerializedUserField, ComputedDefaultValue]).optional(),
|
|
1738
1869
|
configuration: import_v43.default.object({
|
|
1739
1870
|
locationTypes: import_v43.default.array(import_v43.default.string()).optional().describe("Types of the locations that are available for selection."),
|
|
1740
1871
|
allowedLocations: AllowedLocations
|
|
1741
1872
|
}).optional()
|
|
1742
|
-
}).
|
|
1873
|
+
}).meta({
|
|
1874
|
+
description: "A field for selecting a location",
|
|
1875
|
+
id: "LocationInput"
|
|
1876
|
+
});
|
|
1743
1877
|
var FileUploadWithOptions = BaseField.extend({
|
|
1744
1878
|
type: import_v43.default.literal(FieldType.FILE_WITH_OPTIONS),
|
|
1745
1879
|
options: import_v43.default.array(SelectOption).describe("A list of options"),
|
|
1746
|
-
defaultValue: FileFieldWithOptionValue.optional(),
|
|
1880
|
+
defaultValue: FileFieldWithOptionValue.or(ComputedDefaultValue).optional(),
|
|
1747
1881
|
configuration: import_v43.default.object({
|
|
1748
1882
|
maxFileSize: import_v43.default.number().describe("Maximum file size in bytes").default(DEFAULT_MAX_FILE_SIZE_BYTES),
|
|
1749
1883
|
maxImageSize: import_v43.default.object({
|
|
@@ -1753,15 +1887,18 @@ var FileUploadWithOptions = BaseField.extend({
|
|
|
1753
1887
|
}).default({
|
|
1754
1888
|
maxFileSize: DEFAULT_MAX_FILE_SIZE_BYTES
|
|
1755
1889
|
})
|
|
1890
|
+
}).meta({
|
|
1891
|
+
description: "A field for uploading files with file type options",
|
|
1892
|
+
id: "FileUploadWithOptions"
|
|
1756
1893
|
});
|
|
1757
1894
|
var Facility = BaseField.extend({
|
|
1758
1895
|
type: import_v43.default.literal(FieldType.FACILITY),
|
|
1759
|
-
defaultValue: NonEmptyTextValue.optional(),
|
|
1896
|
+
defaultValue: NonEmptyTextValue.or(ComputedDefaultValue).optional(),
|
|
1760
1897
|
configuration: import_v43.default.object({ allowedLocations: AllowedLocations }).optional()
|
|
1761
1898
|
}).describe("Input field for a facility");
|
|
1762
1899
|
var Office = BaseField.extend({
|
|
1763
1900
|
type: import_v43.default.literal(FieldType.OFFICE),
|
|
1764
|
-
defaultValue: NonEmptyTextValue.optional(),
|
|
1901
|
+
defaultValue: NonEmptyTextValue.or(ComputedDefaultValue).optional(),
|
|
1765
1902
|
configuration: import_v43.default.object({ allowedLocations: AllowedLocations }).optional()
|
|
1766
1903
|
}).describe("Input field for an office");
|
|
1767
1904
|
var DefaultAddressFieldValue = DomesticAddressFieldValue.extend({
|
|
@@ -1797,8 +1934,11 @@ var Address = BaseField.extend({
|
|
|
1797
1934
|
).optional(),
|
|
1798
1935
|
allowedLocations: AllowedLocations
|
|
1799
1936
|
}).optional(),
|
|
1800
|
-
defaultValue: DefaultAddressFieldValue.optional()
|
|
1801
|
-
}).
|
|
1937
|
+
defaultValue: DefaultAddressFieldValue.or(ComputedDefaultValue).optional()
|
|
1938
|
+
}).meta({
|
|
1939
|
+
description: "Address input field \u2013 a combination of location and text fields",
|
|
1940
|
+
id: "Address"
|
|
1941
|
+
});
|
|
1802
1942
|
var StaticDataEntry = import_v43.default.object({
|
|
1803
1943
|
id: import_v43.default.string().describe("ID for the data entry."),
|
|
1804
1944
|
label: TranslationConfig,
|
|
@@ -1813,7 +1953,10 @@ var DataField = BaseField.extend({
|
|
|
1813
1953
|
subtitle: TranslationConfig.optional(),
|
|
1814
1954
|
data: import_v43.default.array(DataEntry)
|
|
1815
1955
|
})
|
|
1816
|
-
}).
|
|
1956
|
+
}).meta({
|
|
1957
|
+
description: "A field for displaying a table of read-only data",
|
|
1958
|
+
id: "DataField"
|
|
1959
|
+
});
|
|
1817
1960
|
var ButtonSize = import_v43.default.enum(["small", "medium", "large"]);
|
|
1818
1961
|
var ButtonType = import_v43.default.enum([
|
|
1819
1962
|
"primary",
|
|
@@ -1838,13 +1981,19 @@ var ButtonConfiguration = import_v43.default.object({
|
|
|
1838
1981
|
});
|
|
1839
1982
|
var ButtonField = BaseField.extend({
|
|
1840
1983
|
type: import_v43.default.literal(FieldType.BUTTON),
|
|
1841
|
-
defaultValue: ButtonFieldValue.optional(),
|
|
1984
|
+
defaultValue: ButtonFieldValue.or(ComputedDefaultValue).optional(),
|
|
1842
1985
|
configuration: ButtonConfiguration
|
|
1843
|
-
}).
|
|
1986
|
+
}).meta({
|
|
1987
|
+
description: "A generic button that can be used to trigger an action",
|
|
1988
|
+
id: "ButtonField"
|
|
1989
|
+
});
|
|
1844
1990
|
var FieldGroup = BaseField.extend({
|
|
1845
1991
|
type: import_v43.default.literal(FieldType.FIELD_GROUP),
|
|
1846
1992
|
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
1847
1993
|
fields: import_v43.default.lazy(() => import_v43.default.array(FieldConfig))
|
|
1994
|
+
}).meta({
|
|
1995
|
+
description: "A group of fields that are displayed together",
|
|
1996
|
+
id: "FieldGroup"
|
|
1848
1997
|
});
|
|
1849
1998
|
var AlphaPrintButton = BaseField.extend({
|
|
1850
1999
|
type: import_v43.default.literal(FieldType.ALPHA_PRINT_BUTTON),
|
|
@@ -1854,10 +2003,13 @@ var AlphaPrintButton = BaseField.extend({
|
|
|
1854
2003
|
"Label for the print button"
|
|
1855
2004
|
)
|
|
1856
2005
|
})
|
|
1857
|
-
}).
|
|
2006
|
+
}).meta({
|
|
2007
|
+
description: "An experimental print button field for printing certificates during the declaration process",
|
|
2008
|
+
id: "AlphaPrintButton"
|
|
2009
|
+
});
|
|
1858
2010
|
var HttpField = BaseField.extend({
|
|
1859
2011
|
type: import_v43.default.literal(FieldType.HTTP),
|
|
1860
|
-
defaultValue: HttpFieldValue.optional(),
|
|
2012
|
+
defaultValue: HttpFieldValue.or(ComputedDefaultValue).optional(),
|
|
1861
2013
|
configuration: import_v43.default.object({
|
|
1862
2014
|
trigger: FieldReference.optional().describe(
|
|
1863
2015
|
"Reference to the field that triggers the HTTP request when its value changes. If not provided, the HTTP request is triggered once on component mount."
|
|
@@ -1870,20 +2022,30 @@ var HttpField = BaseField.extend({
|
|
|
1870
2022
|
params: import_v43.default.record(import_v43.default.string(), import_v43.default.union([import_v43.default.string(), FieldReference])).optional(),
|
|
1871
2023
|
timeout: import_v43.default.number().default(15e3).describe("Request timeout in milliseconds")
|
|
1872
2024
|
})
|
|
1873
|
-
}).
|
|
2025
|
+
}).meta({
|
|
2026
|
+
description: "Makes a background HTTP request to an external service and stores the response so other fields can use it. Has no visible UI \u2014 pair with LOADER to show request status.",
|
|
2027
|
+
id: "HttpField"
|
|
2028
|
+
});
|
|
1874
2029
|
var AutocompleteField = BaseField.extend({
|
|
1875
2030
|
type: import_v43.default.literal(FieldType.AUTOCOMPLETE),
|
|
1876
2031
|
configuration: import_v43.default.object({
|
|
1877
|
-
url: import_v43.default.string().describe(
|
|
2032
|
+
url: import_v43.default.string().describe(
|
|
2033
|
+
"URL to fetch autocomplete suggestions from. This should be a country config server endpoint."
|
|
2034
|
+
).optional(),
|
|
1878
2035
|
method: import_v43.default.enum(["GET", "POST"]).default("GET").optional(),
|
|
1879
2036
|
defaultOptions: import_v43.default.array(
|
|
1880
2037
|
import_v43.default.object({
|
|
1881
2038
|
label: import_v43.default.string(),
|
|
1882
2039
|
value: import_v43.default.string()
|
|
1883
2040
|
})
|
|
1884
|
-
).optional()
|
|
2041
|
+
).optional().describe(
|
|
2042
|
+
"Manual entry is supported through configuration, allowing users to provide values not currently represented in the dataset."
|
|
2043
|
+
)
|
|
1885
2044
|
})
|
|
1886
|
-
}).
|
|
2045
|
+
}).meta({
|
|
2046
|
+
description: "Generic autocomplete component designed for use with large dictionary-based datasets. The component supports dynamic retrieval of options from configurable data sources and is intended for datasets that may contain tens or hundreds of thousands of records.",
|
|
2047
|
+
id: "AutocompleteField"
|
|
2048
|
+
});
|
|
1887
2049
|
var SearchField = HttpField.extend({
|
|
1888
2050
|
type: import_v43.default.literal(FieldType.SEARCH),
|
|
1889
2051
|
configuration: SearchQuery.pick({
|
|
@@ -1916,6 +2078,9 @@ var SearchField = HttpField.extend({
|
|
|
1916
2078
|
ok: TranslationConfig.optional()
|
|
1917
2079
|
}).optional()
|
|
1918
2080
|
})
|
|
2081
|
+
}).meta({
|
|
2082
|
+
description: "A search input field",
|
|
2083
|
+
id: "SearchField"
|
|
1919
2084
|
});
|
|
1920
2085
|
var LinkButtonField = BaseField.extend({
|
|
1921
2086
|
type: import_v43.default.literal(FieldType.LINK_BUTTON),
|
|
@@ -1924,28 +2089,35 @@ var LinkButtonField = BaseField.extend({
|
|
|
1924
2089
|
text: TranslationConfig.describe("Text to display on the button"),
|
|
1925
2090
|
icon: import_v43.default.string().optional().describe("Icon for the button. You can find icons from OpenCRVS UI-Kit.")
|
|
1926
2091
|
})
|
|
1927
|
-
}).
|
|
2092
|
+
}).meta({
|
|
2093
|
+
description: "A button that opens a URL link",
|
|
2094
|
+
id: "LinkButtonField"
|
|
2095
|
+
});
|
|
1928
2096
|
var VerificationStatus = BaseField.extend({
|
|
1929
2097
|
type: import_v43.default.literal(FieldType.VERIFICATION_STATUS),
|
|
1930
|
-
defaultValue: VerificationStatusValue.optional(),
|
|
2098
|
+
defaultValue: VerificationStatusValue.or(ComputedDefaultValue).optional(),
|
|
1931
2099
|
configuration: import_v43.default.object({
|
|
1932
2100
|
status: TranslationConfig.describe("Text to display on the status pill."),
|
|
1933
2101
|
description: TranslationConfig.describe(
|
|
1934
2102
|
"Explaining text on the banner in form."
|
|
1935
2103
|
)
|
|
1936
2104
|
})
|
|
2105
|
+
}).meta({
|
|
2106
|
+
description: "Displays a verification state (e.g. ID verified / pending). Often paired with ID_READER \u2014 it can read its value off an ID_READER rather than holding its own.",
|
|
2107
|
+
id: "VerificationStatus"
|
|
1937
2108
|
});
|
|
1938
2109
|
var QueryParamReaderField = BaseField.extend({
|
|
1939
2110
|
type: import_v43.default.literal(FieldType.QUERY_PARAM_READER),
|
|
1940
2111
|
configuration: import_v43.default.object({
|
|
1941
2112
|
pickParams: import_v43.default.array(import_v43.default.string()).describe("List of query parameters to read from the URL")
|
|
1942
2113
|
})
|
|
1943
|
-
}).
|
|
1944
|
-
"A field that maps URL query params into form values and clears them afterward"
|
|
1945
|
-
|
|
2114
|
+
}).meta({
|
|
2115
|
+
description: "A field that maps URL query params into form values and clears them afterward",
|
|
2116
|
+
id: "QueryParamReaderField"
|
|
2117
|
+
});
|
|
1946
2118
|
var QrReaderField = BaseField.extend({
|
|
1947
2119
|
type: import_v43.default.literal(FieldType.QR_READER),
|
|
1948
|
-
defaultValue: QrReaderFieldValue.optional(),
|
|
2120
|
+
defaultValue: QrReaderFieldValue.or(ComputedDefaultValue).optional(),
|
|
1949
2121
|
configuration: import_v43.default.object({
|
|
1950
2122
|
validator: import_v43.default.any().meta({
|
|
1951
2123
|
description: "JSON Schema to validate the scanned QR code data against before populating the form fields.",
|
|
@@ -1953,21 +2125,27 @@ var QrReaderField = BaseField.extend({
|
|
|
1953
2125
|
})
|
|
1954
2126
|
}).optional()
|
|
1955
2127
|
}).meta({
|
|
1956
|
-
description: "
|
|
2128
|
+
description: "QR code reader field, including optional JSON Schema validator.",
|
|
1957
2129
|
id: "QrReaderField"
|
|
1958
2130
|
});
|
|
1959
2131
|
var IdReaderField = BaseField.extend({
|
|
1960
2132
|
type: import_v43.default.literal(FieldType.ID_READER),
|
|
1961
|
-
defaultValue: IdReaderFieldValue.optional(),
|
|
2133
|
+
defaultValue: IdReaderFieldValue.or(ComputedDefaultValue).optional(),
|
|
1962
2134
|
methods: import_v43.default.array(
|
|
1963
2135
|
import_v43.default.union([QrReaderField, LinkButtonField]).describe("Methods for reading an ID")
|
|
1964
2136
|
)
|
|
2137
|
+
}).meta({
|
|
2138
|
+
description: "A wrapper around nested form fields, specifically QR_READER and LINK_BUTTON. It can hold the QR_READERs value.",
|
|
2139
|
+
id: "IdReaderField"
|
|
1965
2140
|
});
|
|
1966
2141
|
var CustomField = BaseField.extend({
|
|
1967
2142
|
type: import_v43.default.literal(FieldType._EXPERIMENTAL_CUSTOM),
|
|
1968
2143
|
defaultValue: CustomFieldValue.optional(),
|
|
1969
2144
|
src: import_v43.default.string().describe("Module source path for the custom field component"),
|
|
1970
2145
|
configuration: import_v43.default.unknown().optional()
|
|
2146
|
+
}).meta({
|
|
2147
|
+
description: "An expiremental custom field that is defined by a module source path",
|
|
2148
|
+
id: "CustomField"
|
|
1971
2149
|
});
|
|
1972
2150
|
var FieldStyleVariant = import_v43.default.enum(["default", "highlighted"]);
|
|
1973
2151
|
var LoaderField = BaseField.extend({
|
|
@@ -1977,22 +2155,25 @@ var LoaderField = BaseField.extend({
|
|
|
1977
2155
|
configuration: import_v43.default.object({
|
|
1978
2156
|
text: TranslationConfig.describe("Display text above the loading spinner")
|
|
1979
2157
|
})
|
|
1980
|
-
}).
|
|
1981
|
-
"A non-interactive field that indicates an in progress operation in form"
|
|
1982
|
-
|
|
2158
|
+
}).meta({
|
|
2159
|
+
description: "A non-interactive field that indicates an in progress operation in form",
|
|
2160
|
+
id: "LoaderField"
|
|
2161
|
+
});
|
|
1983
2162
|
var HiddenField = BaseField.extend({
|
|
1984
2163
|
type: import_v43.default.literal(FieldType.ALPHA_HIDDEN),
|
|
1985
2164
|
required: import_v43.default.boolean().default(false).optional(),
|
|
1986
2165
|
defaultValue: TextValue.optional()
|
|
1987
|
-
}).
|
|
1988
|
-
"A non-interactive, hidden field that only hold a value in the form"
|
|
1989
|
-
|
|
2166
|
+
}).meta({
|
|
2167
|
+
description: "A non-interactive, hidden field that only hold a value in the form",
|
|
2168
|
+
id: "HiddenField"
|
|
2169
|
+
});
|
|
1990
2170
|
var UserRoleField = BaseField.extend({
|
|
1991
2171
|
type: import_v43.default.literal(FieldType.USER_ROLE),
|
|
1992
2172
|
defaultValue: TextValue.optional()
|
|
1993
|
-
}).
|
|
1994
|
-
"A select dropdown that is automatically populated with available user roles"
|
|
1995
|
-
|
|
2173
|
+
}).meta({
|
|
2174
|
+
description: "A select dropdown that is automatically populated with available user roles",
|
|
2175
|
+
id: "UserRoleField"
|
|
2176
|
+
});
|
|
1996
2177
|
var FieldConfig = import_v43.default.discriminatedUnion("type", [
|
|
1997
2178
|
FieldGroup,
|
|
1998
2179
|
Address,
|
|
@@ -2078,8 +2259,8 @@ var ApplicationConfig = z20.object({
|
|
|
2078
2259
|
})
|
|
2079
2260
|
),
|
|
2080
2261
|
PHONE_NUMBER_PATTERN: z20.string().or(z20.instanceof(RegExp)),
|
|
2081
|
-
USER_NOTIFICATION_DELIVERY_METHOD: z20.
|
|
2082
|
-
INFORMANT_NOTIFICATION_DELIVERY_METHOD: z20.
|
|
2262
|
+
USER_NOTIFICATION_DELIVERY_METHOD: z20.enum(["email", "sms"]),
|
|
2263
|
+
INFORMANT_NOTIFICATION_DELIVERY_METHOD: z20.enum(["email", "sms"]),
|
|
2083
2264
|
SEARCH_DEFAULT_CRITERIA: SearchCriteria.optional().default("TRACKING_ID"),
|
|
2084
2265
|
ADDITIONAL_USER_FIELDS: z20.array(FieldConfig).optional().default([])
|
|
2085
2266
|
});
|
|
@@ -2097,8 +2278,8 @@ var BackgroundConfig = z20.object({
|
|
|
2097
2278
|
var LoginConfig = z20.object({
|
|
2098
2279
|
COUNTRY: z20.string(),
|
|
2099
2280
|
LANGUAGES: z20.array(z20.string()),
|
|
2100
|
-
USER_NOTIFICATION_DELIVERY_METHOD: z20.
|
|
2101
|
-
INFORMANT_NOTIFICATION_DELIVERY_METHOD: z20.
|
|
2281
|
+
USER_NOTIFICATION_DELIVERY_METHOD: z20.enum(["email", "sms"]),
|
|
2282
|
+
INFORMANT_NOTIFICATION_DELIVERY_METHOD: z20.enum(["email", "sms"]),
|
|
2102
2283
|
PHONE_NUMBER_PATTERN: z20.string().or(z20.instanceof(RegExp)),
|
|
2103
2284
|
LOGIN_BACKGROUND: BackgroundConfig,
|
|
2104
2285
|
SENTRY: z20.string().optional()
|
|
@@ -2110,6 +2291,7 @@ var ClientConfig = z20.object({
|
|
|
2110
2291
|
COUNTRY: z20.string(),
|
|
2111
2292
|
LANGUAGES: z20.array(z20.string()),
|
|
2112
2293
|
SENTRY: z20.string().optional(),
|
|
2294
|
+
LOGIN_URL: z20.string().optional(),
|
|
2113
2295
|
REGISTER_BACKGROUND: BackgroundConfig,
|
|
2114
2296
|
DASHBOARDS: z20.array(
|
|
2115
2297
|
z20.object({
|