ngx-t-forms-types 0.0.26 → 0.0.28
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/dist/interfaces/FormBuilder/DefaultEelement.js +23 -5
- package/dist/interfaces/FormBuilder/elementEditor.d.ts +13 -1
- package/dist/interfaces/FormBuilder/elementEditor.js +12 -0
- package/dist/interfaces/FormBuilder/inputConfig/ElementEditConfig.js +23 -190
- package/dist/interfaces/FormBuilder/postmanCollection.d.ts +12 -0
- package/dist/interfaces/environment/IStoreFunctions.d.ts +6 -0
- package/dist/interfaces/environment/environment.d.ts +33 -0
- package/dist/interfaces/formInput/APIDataFetchingConfigurationInterface.d.ts +110 -0
- package/dist/interfaces/formInput/ConditionalInputRule.d.ts +69 -4
- package/dist/interfaces/formInput/MinimumInputRequiredInterface.d.ts +5 -0
- package/dist/interfaces/formInput/MinimumInputRequiredInterface.js +5 -0
- package/dist/interfaces/formInput/index.d.ts +3 -2
- package/dist/interfaces/upgradeFunctions/interfaces/init-form.d.ts +6 -0
- package/dist/schemas/MatOptionsSchema.js +17 -0
- package/package.json +1 -1
- package/dist/interfaces/FormBuilder/ElementEditorTypes.d.ts +0 -31
- package/dist/interfaces/FormBuilder/ElementEditorTypes.js +0 -40
|
@@ -32,6 +32,7 @@ export const DefaultInputConfig = {
|
|
|
32
32
|
AllFormInputPrimaryKeys.Validators,
|
|
33
33
|
AllFormInputPrimaryKeys.HintLabel,
|
|
34
34
|
AllFormInputPrimaryKeys.MatOptions,
|
|
35
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
35
36
|
],
|
|
36
37
|
elementTemplate: {
|
|
37
38
|
element: ElementTypes.Input,
|
|
@@ -60,6 +61,7 @@ export const DefaultInputConfig = {
|
|
|
60
61
|
AllFormInputPrimaryKeys.Appearance,
|
|
61
62
|
AllFormInputPrimaryKeys.FormControlName,
|
|
62
63
|
AllFormInputPrimaryKeys.Validators, // Assuming Validators is also needed here
|
|
64
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
63
65
|
],
|
|
64
66
|
elementTemplate: {
|
|
65
67
|
element: ElementTypes.Location,
|
|
@@ -94,6 +96,7 @@ export const DefaultInputConfig = {
|
|
|
94
96
|
AllFormInputPrimaryKeys.Type,
|
|
95
97
|
AllFormInputPrimaryKeys.Value,
|
|
96
98
|
AllFormInputPrimaryKeys.MatOptions,
|
|
99
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
97
100
|
],
|
|
98
101
|
elementTemplate: {
|
|
99
102
|
element: ElementTypes.AutoCompleteInput,
|
|
@@ -130,6 +133,7 @@ export const DefaultInputConfig = {
|
|
|
130
133
|
AllFormInputPrimaryKeys.HintLabel,
|
|
131
134
|
AllFormInputPrimaryKeys.TrueLabel,
|
|
132
135
|
AllFormInputPrimaryKeys.FalseLabel,
|
|
136
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
133
137
|
],
|
|
134
138
|
elementTemplate: {
|
|
135
139
|
element: ElementTypes.Toggle,
|
|
@@ -176,6 +180,7 @@ export const DefaultInputConfig = {
|
|
|
176
180
|
SpecialElementKeys.MatOptionsApiCall,
|
|
177
181
|
AllFormInputPrimaryKeys.OptionSelectType,
|
|
178
182
|
AllFormInputPrimaryKeys.AllowMultipleSelection,
|
|
183
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
179
184
|
],
|
|
180
185
|
elementTemplate: {
|
|
181
186
|
element: ElementTypes.Select,
|
|
@@ -219,7 +224,8 @@ export const DefaultInputConfig = {
|
|
|
219
224
|
AllFormInputPrimaryKeys.DataType,
|
|
220
225
|
SpecialElementKeys.MatOptionsApiCall,
|
|
221
226
|
AllFormInputPrimaryKeys.AllowMultipleSelection,
|
|
222
|
-
AllFormInputPrimaryKeys.PaginationSelectionConfig
|
|
227
|
+
AllFormInputPrimaryKeys.PaginationSelectionConfig,
|
|
228
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
223
229
|
],
|
|
224
230
|
elementTemplate: {
|
|
225
231
|
element: ElementTypes.PaginatedSelectionTable,
|
|
@@ -253,6 +259,7 @@ export const DefaultInputConfig = {
|
|
|
253
259
|
AllFormInputPrimaryKeys.ColSize,
|
|
254
260
|
AllFormInputPrimaryKeys.Value,
|
|
255
261
|
AllFormInputPrimaryKeys.HintLabel,
|
|
262
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
256
263
|
],
|
|
257
264
|
elementTemplate: {
|
|
258
265
|
element: ElementTypes.IconSelect,
|
|
@@ -296,6 +303,7 @@ export const DefaultInputConfig = {
|
|
|
296
303
|
FormInputKeys.Autocomplete,
|
|
297
304
|
FormInputKeys.Placeholder,
|
|
298
305
|
AllFormInputPrimaryKeys.Wrap,
|
|
306
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
299
307
|
],
|
|
300
308
|
elementTemplate: {
|
|
301
309
|
element: ElementTypes.Textarea,
|
|
@@ -341,6 +349,7 @@ export const DefaultInputConfig = {
|
|
|
341
349
|
FormInputKeys.PrefixIcon,
|
|
342
350
|
FormInputKeys.PrefixText,
|
|
343
351
|
FormInputKeys.SuffixText,
|
|
352
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
344
353
|
],
|
|
345
354
|
elementTemplate: {
|
|
346
355
|
element: ElementTypes.DatePicker,
|
|
@@ -384,6 +393,7 @@ export const DefaultInputConfig = {
|
|
|
384
393
|
FormInputKeys.PrefixIcon,
|
|
385
394
|
FormInputKeys.PrefixText,
|
|
386
395
|
FormInputKeys.SuffixText,
|
|
396
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
387
397
|
],
|
|
388
398
|
elementTemplate: {
|
|
389
399
|
element: ElementTypes.DateRangePicker,
|
|
@@ -425,6 +435,7 @@ export const DefaultInputConfig = {
|
|
|
425
435
|
AllFormInputPrimaryKeys.Value,
|
|
426
436
|
AllFormInputPrimaryKeys.FileType,
|
|
427
437
|
FormInputKeys.Accept,
|
|
438
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
428
439
|
],
|
|
429
440
|
elementTemplate: {
|
|
430
441
|
element: ElementTypes.FileUpload,
|
|
@@ -459,6 +470,7 @@ export const DefaultInputConfig = {
|
|
|
459
470
|
AllFormInputPrimaryKeys.Validators,
|
|
460
471
|
AllFormInputPrimaryKeys.Required,
|
|
461
472
|
AllFormInputPrimaryKeys.Value,
|
|
473
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
462
474
|
],
|
|
463
475
|
elementTemplate: {
|
|
464
476
|
element: ElementTypes.Signature,
|
|
@@ -548,6 +560,7 @@ export const DefaultInputConfig = {
|
|
|
548
560
|
AllFormInputPrimaryKeys.Validators,
|
|
549
561
|
AllFormInputPrimaryKeys.Required,
|
|
550
562
|
AllFormInputPrimaryKeys.Value,
|
|
563
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
551
564
|
],
|
|
552
565
|
elementTemplate: {
|
|
553
566
|
element: ElementTypes.ImageCapture,
|
|
@@ -629,6 +642,7 @@ export const DefaultInputConfig = {
|
|
|
629
642
|
AllFormInputPrimaryKeys.HintLabel,
|
|
630
643
|
AllFormInputPrimaryKeys.WorkflowPickerConfig,
|
|
631
644
|
AllFormInputPrimaryKeys.AllowMultipleSelection,
|
|
645
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
632
646
|
],
|
|
633
647
|
elementTemplate: {
|
|
634
648
|
element: ElementTypes.WorkflowDocumentPicker,
|
|
@@ -663,7 +677,8 @@ export const DefaultInputConfig = {
|
|
|
663
677
|
AllFormInputPrimaryKeys.AdjudicationStep,
|
|
664
678
|
AllFormInputPrimaryKeys.AdjudicationPointTypes,
|
|
665
679
|
AllFormInputPrimaryKeys.MinLength,
|
|
666
|
-
AllFormInputPrimaryKeys.MaxLength
|
|
680
|
+
AllFormInputPrimaryKeys.MaxLength,
|
|
681
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
667
682
|
],
|
|
668
683
|
elementTemplate: {
|
|
669
684
|
element: ElementTypes.WorkflowAdjudication,
|
|
@@ -734,7 +749,8 @@ export const DefaultInputConfig = {
|
|
|
734
749
|
AllFormInputPrimaryKeys.MatOptions,
|
|
735
750
|
AllFormInputPrimaryKeys.FormInputs,
|
|
736
751
|
AllFormInputPrimaryKeys.HandleLabel,
|
|
737
|
-
SpecialElementKeys.MultipleInputAvailableOperations
|
|
752
|
+
SpecialElementKeys.MultipleInputAvailableOperations,
|
|
753
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
738
754
|
],
|
|
739
755
|
elementTemplate: {
|
|
740
756
|
element: ElementTypes.MultipleInput,
|
|
@@ -769,7 +785,8 @@ export const DefaultInputConfig = {
|
|
|
769
785
|
AllFormInputPrimaryKeys.Required,
|
|
770
786
|
AllFormInputPrimaryKeys.Value,
|
|
771
787
|
AllFormInputPrimaryKeys.HintLabel,
|
|
772
|
-
AllFormInputPrimaryKeys.RichTextEditorLibrary
|
|
788
|
+
AllFormInputPrimaryKeys.RichTextEditorLibrary,
|
|
789
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
773
790
|
],
|
|
774
791
|
elementTemplate: {
|
|
775
792
|
element: ElementTypes.Editor,
|
|
@@ -802,7 +819,8 @@ export const DefaultInputConfig = {
|
|
|
802
819
|
SpecialElementKeys.ShowAllMcoaSegments,
|
|
803
820
|
AllFormInputPrimaryKeys.TourContent,
|
|
804
821
|
AllFormInputPrimaryKeys.MatOptions,
|
|
805
|
-
AllFormInputPrimaryKeys.MscoaConfig
|
|
822
|
+
AllFormInputPrimaryKeys.MscoaConfig,
|
|
823
|
+
AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
806
824
|
],
|
|
807
825
|
elementTemplate: {
|
|
808
826
|
element: ElementTypes.MscoaSelection,
|
|
@@ -38,7 +38,19 @@ export declare enum ElementEditorTypes {
|
|
|
38
38
|
MapMatOptionsKeys = "mapMatOptionsKeys",
|
|
39
39
|
FormPayloadProjection = "formPayloadProjection",
|
|
40
40
|
/** Opt-in JSON body template ({@link PayloadTemplate}) for a POST value/options fetch. */
|
|
41
|
-
PayloadTemplate = "payloadTemplate"
|
|
41
|
+
PayloadTemplate = "payloadTemplate",
|
|
42
|
+
/** JSON request-header template ({@link HeaderTemplate}) for a value/options fetch (GET and POST alike). */
|
|
43
|
+
HeaderTemplate = "headerTemplate",
|
|
44
|
+
/** JSON query-parameter template ({@link QueryTemplate}) for a value/options fetch (GET and POST alike). */
|
|
45
|
+
QueryTemplate = "queryTemplate",
|
|
46
|
+
/**
|
|
47
|
+
* Composite editor owning a whole `matOptions.fetch.<slot>` API config:
|
|
48
|
+
* endpoint selection, query parameters, headers, body mapping/template and
|
|
49
|
+
* response mapping in one place. Replaces the seven per-slice rows in the
|
|
50
|
+
* default config; the individual editTypes above remain renderable for
|
|
51
|
+
* host-supplied custom `editorSections`.
|
|
52
|
+
*/
|
|
53
|
+
ApiEndpointConfig = "apiEndpointConfig"
|
|
42
54
|
}
|
|
43
55
|
export interface ElementEditorConfigInterface {
|
|
44
56
|
editorSections: Array<ElementEditorConfigSectionInterface>;
|
|
@@ -33,6 +33,18 @@ export var ElementEditorTypes;
|
|
|
33
33
|
ElementEditorTypes["FormPayloadProjection"] = "formPayloadProjection";
|
|
34
34
|
/** Opt-in JSON body template ({@link PayloadTemplate}) for a POST value/options fetch. */
|
|
35
35
|
ElementEditorTypes["PayloadTemplate"] = "payloadTemplate";
|
|
36
|
+
/** JSON request-header template ({@link HeaderTemplate}) for a value/options fetch (GET and POST alike). */
|
|
37
|
+
ElementEditorTypes["HeaderTemplate"] = "headerTemplate";
|
|
38
|
+
/** JSON query-parameter template ({@link QueryTemplate}) for a value/options fetch (GET and POST alike). */
|
|
39
|
+
ElementEditorTypes["QueryTemplate"] = "queryTemplate";
|
|
40
|
+
/**
|
|
41
|
+
* Composite editor owning a whole `matOptions.fetch.<slot>` API config:
|
|
42
|
+
* endpoint selection, query parameters, headers, body mapping/template and
|
|
43
|
+
* response mapping in one place. Replaces the seven per-slice rows in the
|
|
44
|
+
* default config; the individual editTypes above remain renderable for
|
|
45
|
+
* host-supplied custom `editorSections`.
|
|
46
|
+
*/
|
|
47
|
+
ElementEditorTypes["ApiEndpointConfig"] = "apiEndpointConfig";
|
|
36
48
|
})(ElementEditorTypes || (ElementEditorTypes = {}));
|
|
37
49
|
// interface TStringExpressionValidationTest{
|
|
38
50
|
// expression: string;
|
|
@@ -818,21 +818,26 @@ export var ElementConfig = {
|
|
|
818
818
|
id: "865658d5-6ba4-4402-952f-731cfaeefb76"
|
|
819
819
|
},
|
|
820
820
|
{
|
|
821
|
+
// The composite endpoint editor owns the WHOLE fetch slot:
|
|
822
|
+
// endpoint pick, query params, headers, body mapping/template
|
|
823
|
+
// and response mapping in one card. It replaced the seven
|
|
824
|
+
// per-slice rows (ApiCall, Header/Query templates, body-mode
|
|
825
|
+
// chip, RequiredInputs, PayloadTemplate, ApiValueAccessRules);
|
|
826
|
+
// those editTypes stay renderable for host-supplied custom
|
|
827
|
+
// editorSections. NO clearOnChange — the composite emits
|
|
828
|
+
// complete slot values and manages endpoint switching itself.
|
|
821
829
|
name: SpecialElementKeys.Default,
|
|
822
830
|
deepBind: ['matOptions', 'fetch', 'value'],
|
|
823
|
-
editType: ElementEditorTypes.
|
|
831
|
+
editType: ElementEditorTypes.ApiEndpointConfig,
|
|
824
832
|
additionalTest: [
|
|
825
833
|
{
|
|
826
834
|
expression: `source === ${DataSources.Api}`,
|
|
827
835
|
deepBind: ['matOptions', 'fetch', 'value', 'source'],
|
|
828
836
|
},
|
|
829
837
|
],
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
hint: `Select an API endpoint from your Postman collection to fetch values. Configure headers, payload format, and response mapping as needed.`,
|
|
834
|
-
label: 'Select API endpoint',
|
|
835
|
-
id: "95724e64-9d5b-4260-866c-4ada95670b46"
|
|
838
|
+
hint: `Select the API endpoint and configure the whole request in one place: query parameters, headers, body and response mapping.`,
|
|
839
|
+
label: 'API endpoint',
|
|
840
|
+
id: "c9e2f7a4-1b58-4d03-9a6e-2f84c1b0d597"
|
|
836
841
|
},
|
|
837
842
|
{
|
|
838
843
|
name: SpecialElementKeys.Default,
|
|
@@ -848,102 +853,6 @@ export var ElementConfig = {
|
|
|
848
853
|
label: 'Configure MongoDB pipeline',
|
|
849
854
|
id: "7b2989ae-2f54-4849-93d0-aff56ac12ef2"
|
|
850
855
|
},
|
|
851
|
-
{
|
|
852
|
-
name: SpecialElementKeys.Default,
|
|
853
|
-
deepBind: ['matOptions', 'fetch', 'value', 'backEndConfig', 'requestBodyMode'],
|
|
854
|
-
additionalTest: [
|
|
855
|
-
{
|
|
856
|
-
// Only once an API endpoint is configured for the value.
|
|
857
|
-
testType: 'exists',
|
|
858
|
-
deepBind: ['matOptions', 'fetch', 'value'],
|
|
859
|
-
},
|
|
860
|
-
],
|
|
861
|
-
editType: ElementEditorTypes.ChipSelect,
|
|
862
|
-
label: 'Request body configuration',
|
|
863
|
-
hint: 'Choose how the POST body is built: map required inputs, or author a JSON payload template. Only one is used.',
|
|
864
|
-
defaultValue: 'mappedInputs',
|
|
865
|
-
// NO clearOnChange. Both configurations are kept side by side —
|
|
866
|
-
// `requestBodyMode` alone decides which one the runtime uses, and the
|
|
867
|
-
// two editors below are shown/hidden by their `additionalTest`. Clearing
|
|
868
|
-
// here destroyed the author's work on every mode toggle, and — because
|
|
869
|
-
// the editor emits `defaultValue` on init when the bound key is absent —
|
|
870
|
-
// wiped `minimumInputRequired` merely on OPENING an existing POST fetch.
|
|
871
|
-
// A fetch left with no `minimumInputRequired` key then crashed
|
|
872
|
-
// `getAllFunctionTypes`, silently disabling the whole input.
|
|
873
|
-
options: [
|
|
874
|
-
{ label: 'Map inputs', value: 'mappedInputs' },
|
|
875
|
-
{ label: 'JSON template', value: 'template' },
|
|
876
|
-
],
|
|
877
|
-
id: "a1d2f3e4-5b6c-4d7e-8f90-1a2b3c4d5e6f"
|
|
878
|
-
},
|
|
879
|
-
{
|
|
880
|
-
name: SpecialElementKeys.Default,
|
|
881
|
-
deepBind: [
|
|
882
|
-
'matOptions',
|
|
883
|
-
'fetch',
|
|
884
|
-
'value',
|
|
885
|
-
'backEndConfig',
|
|
886
|
-
'minimumInputRequired',
|
|
887
|
-
],
|
|
888
|
-
additionalTest: [
|
|
889
|
-
{
|
|
890
|
-
testType: 'exists',
|
|
891
|
-
deepBind: [
|
|
892
|
-
'matOptions',
|
|
893
|
-
'fetch',
|
|
894
|
-
'value',
|
|
895
|
-
'backEndConfig',
|
|
896
|
-
'minimumInputRequired',
|
|
897
|
-
],
|
|
898
|
-
},
|
|
899
|
-
{
|
|
900
|
-
// Hidden while the author is using a payload template instead.
|
|
901
|
-
expression: 'requestBodyMode !== template',
|
|
902
|
-
deepBind: ['matOptions', 'fetch', 'value', 'backEndConfig', 'requestBodyMode'],
|
|
903
|
-
},
|
|
904
|
-
],
|
|
905
|
-
hint: `These are payload fields that are required to be filled in order to fetch data from the selected source`,
|
|
906
|
-
editType: ElementEditorTypes.RequiredInputs,
|
|
907
|
-
label: 'Set up required inputs',
|
|
908
|
-
id: "2d0f1e18-897b-4c28-97bc-3078be09f8ee"
|
|
909
|
-
},
|
|
910
|
-
{
|
|
911
|
-
name: SpecialElementKeys.Default,
|
|
912
|
-
deepBind: [
|
|
913
|
-
'matOptions',
|
|
914
|
-
'fetch',
|
|
915
|
-
'value',
|
|
916
|
-
'backEndConfig',
|
|
917
|
-
'payloadTemplate',
|
|
918
|
-
],
|
|
919
|
-
additionalTest: [
|
|
920
|
-
{
|
|
921
|
-
// Shown only when the author has chosen template mode.
|
|
922
|
-
expression: 'requestBodyMode === template',
|
|
923
|
-
deepBind: ['matOptions', 'fetch', 'value', 'backEndConfig', 'requestBodyMode'],
|
|
924
|
-
},
|
|
925
|
-
],
|
|
926
|
-
hint: `Author the POST request body as JSON. Type $ to insert a field as {{inputId}}; every other literal is a fixed default. This supersedes the required-input mapping.`,
|
|
927
|
-
editType: ElementEditorTypes.PayloadTemplate,
|
|
928
|
-
label: 'Payload template',
|
|
929
|
-
id: "b3f6a1c2-7d8e-4a90-8c11-2e5f0a9b7c34"
|
|
930
|
-
},
|
|
931
|
-
{
|
|
932
|
-
name: SpecialElementKeys.Default,
|
|
933
|
-
deepBind: ['matOptions', 'fetch', 'value', 'valueAccessRules'],
|
|
934
|
-
hint: `Map the fetched data to the input value. This is useful when the fetched data is an object and you want to map a specific field to the input value.It also allow data transformation before setting the value`,
|
|
935
|
-
fetchOptions: ['matOptions', 'fetch', 'value', '_id'],
|
|
936
|
-
additionalTest: [
|
|
937
|
-
{
|
|
938
|
-
testType: 'exists',
|
|
939
|
-
// Because only Api calls have value access rules
|
|
940
|
-
deepBind: ['matOptions', 'fetch', 'value'],
|
|
941
|
-
},
|
|
942
|
-
],
|
|
943
|
-
editType: ElementEditorTypes.ApiValueAccessRules,
|
|
944
|
-
label: 'Map value to fetched data',
|
|
945
|
-
id: "26939f46-e8ed-404c-886e-2838495d56e6"
|
|
946
|
-
},
|
|
947
856
|
]
|
|
948
857
|
},
|
|
949
858
|
{
|
|
@@ -1023,103 +932,20 @@ export var ElementConfig = {
|
|
|
1023
932
|
id: "4e31a786-ec96-4b42-8156-31357958c032"
|
|
1024
933
|
},
|
|
1025
934
|
{
|
|
935
|
+
// Composite endpoint editor — see the value-slot twin above.
|
|
1026
936
|
name: SpecialElementKeys.Default,
|
|
1027
937
|
deepBind: ['matOptions', 'fetch', 'options'],
|
|
938
|
+
editType: ElementEditorTypes.ApiEndpointConfig,
|
|
1028
939
|
additionalTest: [
|
|
1029
940
|
{
|
|
1030
941
|
expression: "source === api",
|
|
1031
942
|
deepBind: ['matOptions', 'fetch', 'options', 'source'],
|
|
1032
943
|
},
|
|
1033
944
|
],
|
|
1034
|
-
|
|
1035
|
-
label: '
|
|
945
|
+
hint: `Select the API endpoint and configure the whole request in one place: query parameters, headers, body and response mapping.`,
|
|
946
|
+
label: 'API endpoint',
|
|
1036
947
|
id: "df9e2a34-7bf5-411e-a265-14ca4f85166d"
|
|
1037
948
|
},
|
|
1038
|
-
{
|
|
1039
|
-
name: SpecialElementKeys.Default,
|
|
1040
|
-
deepBind: ['matOptions', 'fetch', 'options', 'backEndConfig', 'requestBodyMode'],
|
|
1041
|
-
additionalTest: [
|
|
1042
|
-
{
|
|
1043
|
-
testType: 'exists',
|
|
1044
|
-
deepBind: ['matOptions', 'fetch', 'options'],
|
|
1045
|
-
},
|
|
1046
|
-
],
|
|
1047
|
-
editType: ElementEditorTypes.ChipSelect,
|
|
1048
|
-
label: 'Request body configuration',
|
|
1049
|
-
hint: 'Choose how the POST body is built: map required inputs, or author a JSON payload template. Only one is used.',
|
|
1050
|
-
defaultValue: 'mappedInputs',
|
|
1051
|
-
// NO clearOnChange — see the value-slot twin above. This one cleared
|
|
1052
|
-
// ['matOptions','fetch','options'], i.e. the ENTIRE options fetch config
|
|
1053
|
-
// (endpoint, method, source and all), on the editor's init emit.
|
|
1054
|
-
options: [
|
|
1055
|
-
{ label: 'Map required inputs', value: 'mappedInputs' },
|
|
1056
|
-
{ label: 'Payload template (JSON)', value: 'template' },
|
|
1057
|
-
],
|
|
1058
|
-
id: "e2c4a6b8-1d3f-4a5b-9c7e-0f1a2b3c4d5e"
|
|
1059
|
-
},
|
|
1060
|
-
{
|
|
1061
|
-
name: SpecialElementKeys.Default,
|
|
1062
|
-
deepBind: [
|
|
1063
|
-
'matOptions',
|
|
1064
|
-
'fetch',
|
|
1065
|
-
'options',
|
|
1066
|
-
'backEndConfig',
|
|
1067
|
-
'minimumInputRequired',
|
|
1068
|
-
],
|
|
1069
|
-
additionalTest: [
|
|
1070
|
-
{
|
|
1071
|
-
testType: 'exists',
|
|
1072
|
-
deepBind: [
|
|
1073
|
-
'matOptions',
|
|
1074
|
-
'fetch',
|
|
1075
|
-
'options',
|
|
1076
|
-
'backEndConfig',
|
|
1077
|
-
'minimumInputRequired',
|
|
1078
|
-
],
|
|
1079
|
-
},
|
|
1080
|
-
{
|
|
1081
|
-
expression: 'requestBodyMode !== template',
|
|
1082
|
-
deepBind: ['matOptions', 'fetch', 'options', 'backEndConfig', 'requestBodyMode'],
|
|
1083
|
-
},
|
|
1084
|
-
],
|
|
1085
|
-
editType: ElementEditorTypes.RequiredInputs,
|
|
1086
|
-
label: 'Set up required inputs',
|
|
1087
|
-
id: "ce8f3b42-340d-4f3e-8d6a-13c93251173f"
|
|
1088
|
-
},
|
|
1089
|
-
{
|
|
1090
|
-
name: SpecialElementKeys.Default,
|
|
1091
|
-
deepBind: [
|
|
1092
|
-
'matOptions',
|
|
1093
|
-
'fetch',
|
|
1094
|
-
'options',
|
|
1095
|
-
'backEndConfig',
|
|
1096
|
-
'payloadTemplate',
|
|
1097
|
-
],
|
|
1098
|
-
additionalTest: [
|
|
1099
|
-
{
|
|
1100
|
-
expression: 'requestBodyMode === template',
|
|
1101
|
-
deepBind: ['matOptions', 'fetch', 'options', 'backEndConfig', 'requestBodyMode'],
|
|
1102
|
-
},
|
|
1103
|
-
],
|
|
1104
|
-
hint: `Author the POST request body as JSON. Type $ to insert a field as {{inputId}}; every other literal is a fixed default. This supersedes the required-input mapping.`,
|
|
1105
|
-
editType: ElementEditorTypes.PayloadTemplate,
|
|
1106
|
-
label: 'Payload template',
|
|
1107
|
-
id: "c7a2e4d1-9b0f-4e63-a5d8-71f3b2c6e089"
|
|
1108
|
-
},
|
|
1109
|
-
{
|
|
1110
|
-
name: SpecialElementKeys.Default,
|
|
1111
|
-
deepBind: ['matOptions', 'fetch', 'options', 'valueAccessRules'],
|
|
1112
|
-
fetchOptions: ['matOptions', 'fetch', 'options', '_id'],
|
|
1113
|
-
additionalTest: [
|
|
1114
|
-
{
|
|
1115
|
-
testType: 'exists',
|
|
1116
|
-
deepBind: ['matOptions', 'fetch', 'options'],
|
|
1117
|
-
},
|
|
1118
|
-
],
|
|
1119
|
-
editType: ElementEditorTypes.ApiValueAccessRules,
|
|
1120
|
-
label: 'Map option value to fetched data',
|
|
1121
|
-
id: "e24ce283-4cea-497e-b692-feeb4f3afbed"
|
|
1122
|
-
},
|
|
1123
949
|
]
|
|
1124
950
|
},
|
|
1125
951
|
{
|
|
@@ -1233,6 +1059,13 @@ export var ElementConfig = {
|
|
|
1233
1059
|
deepBind: ['validators'],
|
|
1234
1060
|
id: "babd1b19-aa49-41b6-bd06-1c34ea2b9fe0"
|
|
1235
1061
|
},
|
|
1062
|
+
{
|
|
1063
|
+
name: AllFormInputPrimaryKeys.ConditionalInputConfig,
|
|
1064
|
+
editType: ElementEditorTypes.ConditionalInputConfig,
|
|
1065
|
+
label: 'Conditional display',
|
|
1066
|
+
deepBind: ['conditionalInputConfig'],
|
|
1067
|
+
id: "3f2b1c74-9d6e-4a58-9b2f-27c5a1e4d803"
|
|
1068
|
+
},
|
|
1236
1069
|
],
|
|
1237
1070
|
},
|
|
1238
1071
|
],
|
|
@@ -26,10 +26,22 @@ export interface Body {
|
|
|
26
26
|
raw: string;
|
|
27
27
|
options: Option;
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* One query-string entry on a captured Postman request URL. Postman marks a
|
|
31
|
+
* param the author unticked with `disabled: true` — such entries are excluded
|
|
32
|
+
* when seeding a fetch config's `capturedQuery`.
|
|
33
|
+
*/
|
|
34
|
+
export interface IUrlQueryParam {
|
|
35
|
+
key: string;
|
|
36
|
+
value: string;
|
|
37
|
+
disabled?: boolean;
|
|
38
|
+
}
|
|
29
39
|
export interface Url {
|
|
30
40
|
raw: string;
|
|
31
41
|
host: string[];
|
|
32
42
|
path: string[];
|
|
43
|
+
/** Structured query params of the captured URL (absent when the URL has none). */
|
|
44
|
+
query?: IUrlQueryParam[];
|
|
33
45
|
}
|
|
34
46
|
export interface Request {
|
|
35
47
|
method: 'GET' | 'POST' | 'PUT' | 'DELETE';
|
|
@@ -97,6 +97,12 @@ export interface IStoreFunctions {
|
|
|
97
97
|
saveUserSignature: (signature: PointGroup[]) => Observable<void>;
|
|
98
98
|
httpPostDataFunction: (url: string, data: any, options?: any) => Observable<any>;
|
|
99
99
|
httpGetDataFunction: (url: string, options?: any) => Observable<any>;
|
|
100
|
+
/**
|
|
101
|
+
* Transport for a per-input value/options fetch whose `httpMethod` is `'PUT'`.
|
|
102
|
+
* Optional: when the host does not provide it, the library falls back to its
|
|
103
|
+
* own `HttpClient.put(url, data, options)` with the options bag forwarded.
|
|
104
|
+
*/
|
|
105
|
+
httpPutDataFunction?: (url: string, data: any, options?: any) => Observable<any>;
|
|
100
106
|
getCurrentStepMicroflowSubmissions: () => Observable<{
|
|
101
107
|
submissions: any[];
|
|
102
108
|
columnMapping: AdjResponseReviewColumnMapping;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IStoreFunctions } from "./IStoreFunctions.js";
|
|
2
2
|
import { Moment } from 'moment';
|
|
3
|
+
import type { FormSubmissionHandleInterface } from "../Form/formSubmissionHandleInterface.js";
|
|
3
4
|
export interface IFinancialCycles {
|
|
4
5
|
CURRENT_FINANCIAL_CYCLE: string;
|
|
5
6
|
CURRENT_FINANCIAL_CYCLE_START_DATE: Moment;
|
|
@@ -16,5 +17,37 @@ export interface IFinancialCycles {
|
|
|
16
17
|
export interface NgxTFormsConfig {
|
|
17
18
|
base_url?: string;
|
|
18
19
|
formBuilder: IStoreFunctions;
|
|
20
|
+
/**
|
|
21
|
+
* Submission configuration pre-inserted into every NEW form the builder creates.
|
|
22
|
+
*
|
|
23
|
+
* Applies ONLY at new-form creation. Forms loaded from storage keep whatever they
|
|
24
|
+
* already carry — including nothing — so an author can delete the pre-inserted
|
|
25
|
+
* endpoints and have that stick. Changing this value never rewrites existing forms.
|
|
26
|
+
*
|
|
27
|
+
* The value is deep-copied per form, so the builder editing one form's submission
|
|
28
|
+
* config can never mutate this object or leak into the next new form. API entry
|
|
29
|
+
* `_id`s are copied verbatim, so the same default yields the same ids across forms.
|
|
30
|
+
*
|
|
31
|
+
* Omit it and new forms start with `{ submissionAPI: [] }`, exactly as before.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* provideNgxTForms({
|
|
35
|
+
* formBuilder: myStoreFunctions,
|
|
36
|
+
* defaultSubmissionHandle: {
|
|
37
|
+
* innerComponentShowSubmitButton: false,
|
|
38
|
+
* submissionAPI: [{
|
|
39
|
+
* _id: '80eca6b1-923a-4c0e-a863-2f56a7e52a67',
|
|
40
|
+
* name: 'Generate/Update WF Document',
|
|
41
|
+
* httpEndPoint: '{{$iserve-back-end-url}}/api/form/generateWFFormValues',
|
|
42
|
+
* httpMethod: 'POST',
|
|
43
|
+
* postFormData: true,
|
|
44
|
+
* backEndConfig: { minimumInputRequired: [] },
|
|
45
|
+
* source: DataSources.Api,
|
|
46
|
+
* projectFormData: 'data:{$formValue}',
|
|
47
|
+
* }],
|
|
48
|
+
* },
|
|
49
|
+
* })
|
|
50
|
+
*/
|
|
51
|
+
defaultSubmissionHandle?: FormSubmissionHandleInterface;
|
|
19
52
|
[key: string]: string | Object | undefined;
|
|
20
53
|
}
|
|
@@ -65,6 +65,83 @@ export type PayloadTemplate = {
|
|
|
65
65
|
* configuration.
|
|
66
66
|
*/
|
|
67
67
|
export type RequestBodyMode = 'mappedInputs' | 'template';
|
|
68
|
+
/**
|
|
69
|
+
* A single header value in a {@link HeaderTemplate}.
|
|
70
|
+
*
|
|
71
|
+
* Scalars only — an HTTP header value is text on the wire, so a number/boolean
|
|
72
|
+
* literal is stringified at request time. Nesting is deliberately not expressible:
|
|
73
|
+
* a header has no structure to nest into.
|
|
74
|
+
*/
|
|
75
|
+
export type HeaderTemplateValue = string | number | boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Declarative request headers for a value/options fetch, authored in the same
|
|
78
|
+
* JSON editor as {@link PayloadTemplate} and resolved with the same
|
|
79
|
+
* `{{inputId}}` token syntax.
|
|
80
|
+
*
|
|
81
|
+
* A value that is EXACTLY `"{{inputId}}"` is replaced by that input's live value
|
|
82
|
+
* (stringified); a value that merely CONTAINS token(s) is interpolated
|
|
83
|
+
* (`"Bearer {{accessToken}}"`); every other literal is a fixed default. Header
|
|
84
|
+
* names are always literal.
|
|
85
|
+
*
|
|
86
|
+
* Applies to GET as well as POST — headers are a transport concern, not a body
|
|
87
|
+
* concern. The resolved map is merged into
|
|
88
|
+
* {@link APIDataFetchingConfigurationInterface.httpHeaderOptions}`.headers`
|
|
89
|
+
* (the template wins on a name collision) before the request is issued.
|
|
90
|
+
*
|
|
91
|
+
* Like a payload template, a token that resolves empty keeps the fetch **idle**:
|
|
92
|
+
* a request that would go out without its `Authorization`/tenant header is a
|
|
93
|
+
* request that fails, so the engine waits for the bound field instead of issuing
|
|
94
|
+
* a doomed call.
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* headerTemplate: {
|
|
98
|
+
* Authorization: 'Bearer {{accessToken}}',
|
|
99
|
+
* 'x-tenant-id': '{{municipality}}',
|
|
100
|
+
* 'Content-Type': 'application/json',
|
|
101
|
+
* }
|
|
102
|
+
*/
|
|
103
|
+
export type HeaderTemplate = {
|
|
104
|
+
[headerName: string]: HeaderTemplateValue;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* A single query-parameter value in a {@link QueryTemplate}.
|
|
108
|
+
*
|
|
109
|
+
* Scalars only — a URL query parameter is text on the wire, so a number/boolean
|
|
110
|
+
* literal is stringified at request time. The exact structural twin of
|
|
111
|
+
* {@link HeaderTemplateValue}.
|
|
112
|
+
*/
|
|
113
|
+
export type QueryTemplateValue = string | number | boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Declarative URL query parameters for a value/options fetch — the exact
|
|
116
|
+
* structural twin of {@link HeaderTemplate}, resolved with the same
|
|
117
|
+
* `{{inputId}}` token syntax.
|
|
118
|
+
*
|
|
119
|
+
* A value that is EXACTLY `"{{inputId}}"` is replaced by that input's live value
|
|
120
|
+
* (stringified); a value that merely CONTAINS token(s) is interpolated
|
|
121
|
+
* (`"za-{{province}}"`); every other literal is a fixed default. Parameter
|
|
122
|
+
* names are always literal.
|
|
123
|
+
*
|
|
124
|
+
* Applies to GET as well as POST — query parameters are a transport concern.
|
|
125
|
+
* The resolved map is merged into
|
|
126
|
+
* {@link APIDataFetchingConfigurationInterface.httpHeaderOptions}`.params`
|
|
127
|
+
* (the template wins on a name collision) before the request is issued; any
|
|
128
|
+
* literal query text already inside `httpEndPoint` is left untouched and the
|
|
129
|
+
* HTTP layer appends the params after it.
|
|
130
|
+
*
|
|
131
|
+
* Like a header template, a token that resolves empty keeps the fetch **idle**:
|
|
132
|
+
* a request missing a bound parameter would return the wrong data, so the
|
|
133
|
+
* engine waits for the bound field instead.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* queryTemplate: {
|
|
137
|
+
* financialYear: '{{financialYear}}',
|
|
138
|
+
* department: '{{departmentId}}',
|
|
139
|
+
* pageSize: 50,
|
|
140
|
+
* }
|
|
141
|
+
*/
|
|
142
|
+
export type QueryTemplate = {
|
|
143
|
+
[paramName: string]: QueryTemplateValue;
|
|
144
|
+
};
|
|
68
145
|
export interface APIDataFetchingConfigurationInterface extends DataFetchingBaseConfig {
|
|
69
146
|
_id: string;
|
|
70
147
|
name: string;
|
|
@@ -89,6 +166,39 @@ export interface APIDataFetchingConfigurationInterface extends DataFetchingBaseC
|
|
|
89
166
|
includeHeaders?: string[];
|
|
90
167
|
} | boolean;
|
|
91
168
|
};
|
|
169
|
+
/**
|
|
170
|
+
* Author-configured request headers, optionally bound to live form values (see
|
|
171
|
+
* {@link HeaderTemplate}). Merged over {@link httpHeaderOptions}`.headers` at
|
|
172
|
+
* request time; absent means "send exactly what `httpHeaderOptions` says",
|
|
173
|
+
* which is the historical behaviour.
|
|
174
|
+
*/
|
|
175
|
+
headerTemplate?: HeaderTemplate;
|
|
176
|
+
/**
|
|
177
|
+
* The headers captured from the selected endpoint (e.g. the Postman request's
|
|
178
|
+
* enabled headers). Persisted only to seed {@link headerTemplate}'s editor so
|
|
179
|
+
* it never opens blank; never sent on its own.
|
|
180
|
+
*/
|
|
181
|
+
capturedHeaders?: HeaderTemplate;
|
|
182
|
+
/**
|
|
183
|
+
* Author-configured URL query parameters, optionally bound to live form values
|
|
184
|
+
* (see {@link QueryTemplate}). Merged over {@link httpHeaderOptions}`.params`
|
|
185
|
+
* at request time; absent means "send exactly what `httpHeaderOptions` says",
|
|
186
|
+
* which is the historical behaviour.
|
|
187
|
+
*/
|
|
188
|
+
queryTemplate?: QueryTemplate;
|
|
189
|
+
/**
|
|
190
|
+
* The query parameters captured from the selected endpoint's URL (e.g. the
|
|
191
|
+
* Postman request's enabled `url.query` entries). Persisted only to seed
|
|
192
|
+
* {@link queryTemplate}'s editor so it never opens blank; never sent on its
|
|
193
|
+
* own — mirrors {@link capturedHeaders}.
|
|
194
|
+
*/
|
|
195
|
+
capturedQuery?: QueryTemplate;
|
|
196
|
+
/**
|
|
197
|
+
* The endpoint's documentation captured verbatim from the Postman request's
|
|
198
|
+
* `description`. Display-only (the editor's Docs tab); never sent, never
|
|
199
|
+
* interpreted — mirrors the other `captured*` seeds.
|
|
200
|
+
*/
|
|
201
|
+
capturedDocs?: string;
|
|
92
202
|
backEndConfig: {
|
|
93
203
|
/**
|
|
94
204
|
* The default/mapTo mapping that shapes the POST body in `'mappedInputs'` mode.
|
|
@@ -1,7 +1,72 @@
|
|
|
1
|
+
import { InputObservedForChange } from "./FormControlCustomValidatorsInterface.js";
|
|
2
|
+
/**
|
|
3
|
+
* One conditional-display rule declared on a form input's
|
|
4
|
+
* `conditionalInputConfig`.
|
|
5
|
+
*
|
|
6
|
+
* ### Two shapes, one field
|
|
7
|
+
*
|
|
8
|
+
* The interface carries an **expression** half (read by the engine) and a
|
|
9
|
+
* legacy **descriptive** half (read by external consumers that render authoring
|
|
10
|
+
* guidance). This mirrors `ConfigurationValidTestInterface`, which solved the
|
|
11
|
+
* same migration by making the legacy fields optional and adding `expression`
|
|
12
|
+
* alongside them.
|
|
13
|
+
*
|
|
14
|
+
* - A rule with an `expression` participates in the runtime visibility gate.
|
|
15
|
+
* - A rule without one is inert to the engine — it is descriptive metadata only,
|
|
16
|
+
* and the input stays visible as far as that rule is concerned.
|
|
17
|
+
*
|
|
18
|
+
* ### Combination
|
|
19
|
+
*
|
|
20
|
+
* Multiple rules combine with **AND**: the input is revealed only when every
|
|
21
|
+
* expression-bearing rule evaluates to `true`. This matches how every other
|
|
22
|
+
* show-gate in the form builder composes (`additionalTest` entries are all
|
|
23
|
+
* applied with `.every`). An absent or empty array means *always visible*.
|
|
24
|
+
*
|
|
25
|
+
* @example Reveal a phone-number field only when the contact method is 'phone'.
|
|
26
|
+
* ```ts
|
|
27
|
+
* conditionalInputConfig: [{
|
|
28
|
+
* id: 'reveal-phone',
|
|
29
|
+
* expression: 'contactMethod === "phone"',
|
|
30
|
+
* inputsObservedForChanges: [{ inputId: 'a1b2', variable: 'contactMethod' }],
|
|
31
|
+
* }]
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
1
34
|
export interface ConditionalInputRule {
|
|
2
|
-
|
|
3
|
-
label: string;
|
|
4
|
-
testType: string;
|
|
5
|
-
valueMatch: string;
|
|
35
|
+
/** Stable rule identifier. */
|
|
6
36
|
id: string;
|
|
37
|
+
/**
|
|
38
|
+
* Predicate expression over the observed inputs' values. Evaluating to
|
|
39
|
+
* `true` means the input is **REVEALED**.
|
|
40
|
+
*
|
|
41
|
+
* Same DSL as a custom validator's `expression`, with the opposite polarity:
|
|
42
|
+
* a validator's `true` means *invalid*, a rule's `true` means *shown*.
|
|
43
|
+
*/
|
|
44
|
+
expression?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Dependency list auto-derived from {@link ConditionalInputRule.expression},
|
|
47
|
+
* exactly as custom validators derive theirs. Each entry binds a variable
|
|
48
|
+
* name used in the expression to the input whose value supplies it.
|
|
49
|
+
*/
|
|
50
|
+
inputsObservedForChanges?: InputObservedForChange[];
|
|
51
|
+
/**
|
|
52
|
+
* @deprecated Legacy descriptive shape. Never read by the engine; retained
|
|
53
|
+
* because external consumers render it as authoring guidance. Author new
|
|
54
|
+
* rules with {@link ConditionalInputRule.expression}.
|
|
55
|
+
*/
|
|
56
|
+
formControlName?: string;
|
|
57
|
+
/**
|
|
58
|
+
* @deprecated Legacy descriptive shape — see
|
|
59
|
+
* {@link ConditionalInputRule.formControlName}.
|
|
60
|
+
*/
|
|
61
|
+
label?: string;
|
|
62
|
+
/**
|
|
63
|
+
* @deprecated Legacy descriptive shape — see
|
|
64
|
+
* {@link ConditionalInputRule.formControlName}.
|
|
65
|
+
*/
|
|
66
|
+
testType?: string;
|
|
67
|
+
/**
|
|
68
|
+
* @deprecated Legacy descriptive shape — see
|
|
69
|
+
* {@link ConditionalInputRule.formControlName}.
|
|
70
|
+
*/
|
|
71
|
+
valueMatch?: string;
|
|
7
72
|
}
|
|
@@ -3,6 +3,11 @@ export declare enum MinInputTypes {
|
|
|
3
3
|
Default = "default",
|
|
4
4
|
MapTo = "mapto",
|
|
5
5
|
MapDocFilter = "mapDocFilter",
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated Never implemented. No editor offers it, no runtime handles it —
|
|
8
|
+
* a `bind` entry leaves its fetch permanently idle. The runtime now surfaces a
|
|
9
|
+
* config error when it encounters one. Re-map the entry as {@link MapTo}.
|
|
10
|
+
*/
|
|
6
11
|
Bind = "bind"
|
|
7
12
|
}
|
|
8
13
|
export declare enum JsDataTypes {
|
|
@@ -3,6 +3,11 @@ export var MinInputTypes;
|
|
|
3
3
|
MinInputTypes["Default"] = "default";
|
|
4
4
|
MinInputTypes["MapTo"] = "mapto";
|
|
5
5
|
MinInputTypes["MapDocFilter"] = "mapDocFilter";
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated Never implemented. No editor offers it, no runtime handles it —
|
|
8
|
+
* a `bind` entry leaves its fetch permanently idle. The runtime now surfaces a
|
|
9
|
+
* config error when it encounters one. Re-map the entry as {@link MapTo}.
|
|
10
|
+
*/
|
|
6
11
|
MinInputTypes["Bind"] = "bind";
|
|
7
12
|
})(MinInputTypes || (MinInputTypes = {}));
|
|
8
13
|
export var JsDataTypes;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { IFolderItem, IPostmanCollection } from "../FormBuilder/postmanCollection.js";
|
|
2
2
|
import { IWorkflowDocListCols, IWorkflowStepOption } from "../FormBuilder/workflowSelectionConfig.js";
|
|
3
3
|
import { TreeNode } from "../FormSlide/accessTree.js";
|
|
4
|
-
import { APIDataFetchingConfigurationInterface, InputAPIDataId, MongoDbPipeLineConfigInterface, PayloadTemplate, PayloadTemplateValue, RequestBodyMode } from "./APIDataFetchingConfigurationInterface.js";
|
|
4
|
+
import { APIDataFetchingConfigurationInterface, HeaderTemplate, HeaderTemplateValue, InputAPIDataId, MongoDbPipeLineConfigInterface, PayloadTemplate, PayloadTemplateValue, QueryTemplate, QueryTemplateValue, RequestBodyMode } from "./APIDataFetchingConfigurationInterface.js";
|
|
5
5
|
import { AutocapitalizeOptions, AutocompleteOptions, ElementTypes, IBasicFormInput, IFormElementTemplate, InputDataTypes, InputPipeTypes, InputTypes, OptionSelectTypes } from "./BasicFormInputInterface.js";
|
|
6
|
+
import { ConditionalInputRule } from "./ConditionalInputRule.js";
|
|
6
7
|
import { IDateRangePickerInput } from "./DateRangePickerInput.js";
|
|
7
8
|
import { AllDocumentFileExtensions, AllImageFileExtensions, FileUploadInputValueInterface, IFileUploadInput, InputFileType, UploadTypes } from "./FileUploadInputInterface.js";
|
|
8
9
|
import { DraftFormControlCustomValidator, FormControlCustomValidatorsInterface, InputObservedForChange } from "./FormControlCustomValidatorsInterface.js";
|
|
@@ -25,4 +26,4 @@ import { CalculationFunctions, calculationVariableInterface } from "./calculatio
|
|
|
25
26
|
import { IRichTextEditor, RichTextEditorType } from "./RichTextEditorInput.js";
|
|
26
27
|
import { ValidationError, ValidationOptions } from "./schema.js";
|
|
27
28
|
import { IUserSignature } from "./userSignature.js";
|
|
28
|
-
export { ElementTypes, InputTypes, InputPipeTypes, AutocapitalizeOptions, AutocompleteOptions, InputDataTypes, MinInputTypes, IFormElementTemplate, IBasicFormInput, IFileUploadInput, IDateRangePickerInput, ITextareaProperties, IToggleInput, IMatrixInput, IMultiple, IMultipleInputCal, IScoaInput, TableConfigurationsInterface, TableColumnConfigInterface, FormControlCustomValidatorsInterface, InputObservedForChange, DraftFormControlCustomValidator, IFormValidationOverride, MinimumInputRequiredInterface, MinInputMapInput, CalculatedFieldRules, calculationVariableInterface, APIDataFetchingConfigurationInterface, PayloadTemplate, PayloadTemplateValue, RequestBodyMode, IGetTreeResponse, CalculationFunctions, TreeNode, IPostmanCollection, IFolderItem, FileUploadInputValueInterface, AllDocumentFileExtensions, AllImageFileExtensions, UploadTypes, InputFileType, IScoaAccount, IScoaInputConfig, ITableScoaSelectionRow, ScoaSegmentValue, ScoaSegmentValueBag, IIncludedSegmentConfig, AccountingBasis, ScoaAccountTree, IUserSignature, ValidationOptions, ValidationError, MatDataOptionsInterface, MongoDbPipeLineConfigInterface, InputAPIDataId, FormInputBasicOptionInterface, ScoaInterface, ScoaInnerInput, IAccountSegmentTreeKeys, IWorkflowDocumentPicker, IWorkflowDocumentPickerConfig, IWorkflowDocumentStepFilter, IDocumentPickerFilter, IDocumentPage, IDocumentQueryRequest, IDocumentReference, DocumentPickerFilterOperator, DocumentPickerFilterValueSource, DocumentPickerFilterValueType, DOCUMENT_PICKER_FILTER_OPERATORS, DOCUMENT_PICKER_FILTER_VALUE_SOURCES, DOCUMENT_PICKER_FILTER_VALUE_TYPES, workflowStepStatus, IWorkflowDocListCols, IWorkflowStepOption, JsDataTypes, AdjudicationSteps, IWorkflowAdjudicationInput, WorkflowAdjudicationScoreSheetValue, WorkflowAdjudicationMicroFlowReviewValue, WorkflowAdjudicationResponseElectedSupplierSelectionValue, ScoreSheetItem, AdjResponseReviewColumnMapping, OptionSelectTypes, ISelectInputInterface, MultipleInputAvailableOperations, RichTextEditorType, IRichTextEditor, };
|
|
29
|
+
export { ElementTypes, InputTypes, InputPipeTypes, AutocapitalizeOptions, AutocompleteOptions, InputDataTypes, MinInputTypes, IFormElementTemplate, IBasicFormInput, IFileUploadInput, ConditionalInputRule, IDateRangePickerInput, ITextareaProperties, IToggleInput, IMatrixInput, IMultiple, IMultipleInputCal, IScoaInput, TableConfigurationsInterface, TableColumnConfigInterface, FormControlCustomValidatorsInterface, InputObservedForChange, DraftFormControlCustomValidator, IFormValidationOverride, MinimumInputRequiredInterface, MinInputMapInput, CalculatedFieldRules, calculationVariableInterface, APIDataFetchingConfigurationInterface, PayloadTemplate, PayloadTemplateValue, RequestBodyMode, HeaderTemplate, HeaderTemplateValue, QueryTemplate, QueryTemplateValue, IGetTreeResponse, CalculationFunctions, TreeNode, IPostmanCollection, IFolderItem, FileUploadInputValueInterface, AllDocumentFileExtensions, AllImageFileExtensions, UploadTypes, InputFileType, IScoaAccount, IScoaInputConfig, ITableScoaSelectionRow, ScoaSegmentValue, ScoaSegmentValueBag, IIncludedSegmentConfig, AccountingBasis, ScoaAccountTree, IUserSignature, ValidationOptions, ValidationError, MatDataOptionsInterface, MongoDbPipeLineConfigInterface, InputAPIDataId, FormInputBasicOptionInterface, ScoaInterface, ScoaInnerInput, IAccountSegmentTreeKeys, IWorkflowDocumentPicker, IWorkflowDocumentPickerConfig, IWorkflowDocumentStepFilter, IDocumentPickerFilter, IDocumentPage, IDocumentQueryRequest, IDocumentReference, DocumentPickerFilterOperator, DocumentPickerFilterValueSource, DocumentPickerFilterValueType, DOCUMENT_PICKER_FILTER_OPERATORS, DOCUMENT_PICKER_FILTER_VALUE_SOURCES, DOCUMENT_PICKER_FILTER_VALUE_TYPES, workflowStepStatus, IWorkflowDocListCols, IWorkflowStepOption, JsDataTypes, AdjudicationSteps, IWorkflowAdjudicationInput, WorkflowAdjudicationScoreSheetValue, WorkflowAdjudicationMicroFlowReviewValue, WorkflowAdjudicationResponseElectedSupplierSelectionValue, ScoreSheetItem, AdjResponseReviewColumnMapping, OptionSelectTypes, ISelectInputInterface, MultipleInputAvailableOperations, RichTextEditorType, IRichTextEditor, };
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { IIncludedSegmentConfig } from "../../formInput/index.js";
|
|
2
2
|
/** Plain-union mirror of Angular Material's `MatFormFieldAppearance` (no `@angular/material` dependency). */
|
|
3
3
|
type MatFormFieldAppearance = 'fill' | 'outline';
|
|
4
|
+
/**
|
|
5
|
+
* FROZEN legacy snapshot of the pre-upgrade rule shape. Deliberately NOT kept in
|
|
6
|
+
* step with the canonical {@link ConditionalInputRule} — this module describes
|
|
7
|
+
* the *old* document a form is upgraded FROM, so widening it would misdescribe
|
|
8
|
+
* the input of the upgrade.
|
|
9
|
+
*/
|
|
4
10
|
interface conditionalInputRule {
|
|
5
11
|
formControlName: string;
|
|
6
12
|
label: string;
|
|
@@ -22,6 +22,10 @@ const minimumInputRequiredSchema = Joi.object({
|
|
|
22
22
|
activeChangeId: Joi.string().optional(),
|
|
23
23
|
primaryKey: Joi.boolean().optional()
|
|
24
24
|
});
|
|
25
|
+
/** A flat `header name → scalar value` map (see `HeaderTemplate`). */
|
|
26
|
+
const headerTemplateSchema = Joi.object().pattern(Joi.string(), Joi.alternatives().try(Joi.string().allow(''), Joi.number(), Joi.boolean()));
|
|
27
|
+
/** A flat `param name → scalar value` map (see `QueryTemplate`) — twin of the header schema. */
|
|
28
|
+
const queryTemplateSchema = Joi.object().pattern(Joi.string(), Joi.alternatives().try(Joi.string().allow(''), Joi.number(), Joi.boolean()));
|
|
25
29
|
const APIDataFetchingConfigurationSchema = Joi.object({
|
|
26
30
|
_id: Joi.string().required(),
|
|
27
31
|
name: Joi.string().required(),
|
|
@@ -42,6 +46,19 @@ const APIDataFetchingConfigurationSchema = Joi.object({
|
|
|
42
46
|
withCredentials: Joi.boolean().optional(),
|
|
43
47
|
transferCache: Joi.alternatives().try(Joi.object({ includeHeaders: Joi.array().items(Joi.string()).optional() }), Joi.boolean()).optional()
|
|
44
48
|
}).optional(),
|
|
49
|
+
// Author-configured headers, values optionally carrying {{inputId}} tokens bound to
|
|
50
|
+
// live form values. Flat by construction — a header value is text on the wire, so
|
|
51
|
+
// only scalars are accepted (numbers/booleans are stringified at request time).
|
|
52
|
+
headerTemplate: headerTemplateSchema.optional(),
|
|
53
|
+
// Headers captured from the selected endpoint; seeds the editor, never sent alone.
|
|
54
|
+
capturedHeaders: headerTemplateSchema.optional(),
|
|
55
|
+
// Author-configured URL query params, values optionally carrying {{inputId}} tokens.
|
|
56
|
+
// Flat scalars only — a query param is text on the wire.
|
|
57
|
+
queryTemplate: queryTemplateSchema.optional(),
|
|
58
|
+
// Query params captured from the endpoint's URL; seeds the editor, never sent alone.
|
|
59
|
+
capturedQuery: queryTemplateSchema.optional(),
|
|
60
|
+
// The endpoint's Postman description, verbatim; display-only (Docs tab).
|
|
61
|
+
capturedDocs: Joi.string().allow('').optional(),
|
|
45
62
|
backEndConfig: Joi.object({
|
|
46
63
|
// Optional: a 'template'-mode fetch shapes its body from payloadTemplate and
|
|
47
64
|
// carries no mapping; GET fetches never had one. Readers default it to [].
|
package/package.json
CHANGED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
declare enum EditType {
|
|
2
|
-
Input = "input",
|
|
3
|
-
Toggle = "toggle",
|
|
4
|
-
ChipSelect = "chipSelect",
|
|
5
|
-
OptionSelect = "optionSelect",
|
|
6
|
-
Range = "range",
|
|
7
|
-
MinMaxValue = "minMaxValue",
|
|
8
|
-
DocumentPropertyPicker = "documentPropertyPicker",
|
|
9
|
-
ManualDocumentPropertyPicker = "manualDocumentPropertyPicker",
|
|
10
|
-
FormInputSelector = "formInputSelector",
|
|
11
|
-
SelectAForm = "selectAForm",
|
|
12
|
-
WorkflowPicker = "workflowPicker",
|
|
13
|
-
WorkflowStepPicker = "workflowStepPicker",
|
|
14
|
-
WorkflowDocumentListLabels = "workflowDocumentListLabels",
|
|
15
|
-
DecisionGateSettings = "decisionGateSettings",
|
|
16
|
-
EscalateTask = "escalateTask",
|
|
17
|
-
AddMembers = "addMembers",
|
|
18
|
-
MultipleInputConfigurations = "multipleInputConfigurations",
|
|
19
|
-
TableConfigSetup = "tableConfigSetup",
|
|
20
|
-
SelectionOptions = "selectionOptions",
|
|
21
|
-
ApiValueAccessRules = "apiValueAccessRules",
|
|
22
|
-
RequiredInputs = "requiredInputs",
|
|
23
|
-
ChartAxis = "chartAxis",
|
|
24
|
-
Series = "series",
|
|
25
|
-
MongoPipelineBuilder = "mongoPipelineBuilder",
|
|
26
|
-
ApiCall = "apiCall",
|
|
27
|
-
ConfigMscoaSegments = "configMscoaSegments",
|
|
28
|
-
ConfigMscoaAdditionalInputs = "configMscoaAdditionalInputs",
|
|
29
|
-
Validators = "validators",
|
|
30
|
-
CalculatedFieldRules = "calculatedFieldRules"
|
|
31
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var EditType;
|
|
3
|
-
(function (EditType) {
|
|
4
|
-
// Basic Input Types
|
|
5
|
-
EditType["Input"] = "input";
|
|
6
|
-
EditType["Toggle"] = "toggle";
|
|
7
|
-
EditType["ChipSelect"] = "chipSelect";
|
|
8
|
-
EditType["OptionSelect"] = "optionSelect";
|
|
9
|
-
EditType["Range"] = "range";
|
|
10
|
-
EditType["MinMaxValue"] = "minMaxValue";
|
|
11
|
-
// Document/Form Pickers
|
|
12
|
-
EditType["DocumentPropertyPicker"] = "documentPropertyPicker";
|
|
13
|
-
EditType["ManualDocumentPropertyPicker"] = "manualDocumentPropertyPicker";
|
|
14
|
-
EditType["FormInputSelector"] = "formInputSelector";
|
|
15
|
-
EditType["SelectAForm"] = "selectAForm";
|
|
16
|
-
// Workflow Related
|
|
17
|
-
EditType["WorkflowPicker"] = "workflowPicker";
|
|
18
|
-
EditType["WorkflowStepPicker"] = "workflowStepPicker";
|
|
19
|
-
EditType["WorkflowDocumentListLabels"] = "workflowDocumentListLabels";
|
|
20
|
-
EditType["DecisionGateSettings"] = "decisionGateSettings";
|
|
21
|
-
EditType["EscalateTask"] = "escalateTask";
|
|
22
|
-
EditType["AddMembers"] = "addMembers";
|
|
23
|
-
// Multiple Configurations
|
|
24
|
-
EditType["MultipleInputConfigurations"] = "multipleInputConfigurations";
|
|
25
|
-
EditType["TableConfigSetup"] = "tableConfigSetup";
|
|
26
|
-
EditType["SelectionOptions"] = "selectionOptions";
|
|
27
|
-
EditType["ApiValueAccessRules"] = "apiValueAccessRules";
|
|
28
|
-
EditType["RequiredInputs"] = "requiredInputs";
|
|
29
|
-
// Chart/Report Related
|
|
30
|
-
EditType["ChartAxis"] = "chartAxis";
|
|
31
|
-
EditType["Series"] = "series";
|
|
32
|
-
EditType["MongoPipelineBuilder"] = "mongoPipelineBuilder";
|
|
33
|
-
EditType["ApiCall"] = "apiCall";
|
|
34
|
-
// MSCOA Related
|
|
35
|
-
EditType["ConfigMscoaSegments"] = "configMscoaSegments";
|
|
36
|
-
EditType["ConfigMscoaAdditionalInputs"] = "configMscoaAdditionalInputs";
|
|
37
|
-
// Validation/Rules
|
|
38
|
-
EditType["Validators"] = "validators";
|
|
39
|
-
EditType["CalculatedFieldRules"] = "calculatedFieldRules";
|
|
40
|
-
})(EditType || (EditType = {}));
|