@researchdatabox/sails-ng-common 0.0.1-beta.10213 → 0.0.1-beta.10760

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.
@@ -4,9 +4,9 @@ import { FormConfigVisitorOutline } from "../visitor/base.outline";
4
4
  import { FieldComponentConfig, FieldComponentDefinition } from "../field-component.model";
5
5
  import { AvailableFieldLayoutDefinitionOutlines } from "../dictionary.outline";
6
6
  import type { HistoricalVocabMode } from "./dropdown-input.outline";
7
- import { TypeaheadInputFieldComponentConfigOutline, TypeaheadInputFieldComponentDefinitionOutline, TypeaheadInputFieldModelConfigOutline, TypeaheadInputFieldModelDefinitionOutline, TypeaheadInputFormComponentDefinitionOutline, TypeaheadInputModelValueType, TypeaheadOption } from "./typeahead-input.outline";
8
- export declare class TypeaheadInputFieldComponentConfig extends FieldComponentConfig implements TypeaheadInputFieldComponentConfigOutline {
9
- sourceType: "static" | "vocabulary" | "namedQuery" | "external" | "service";
7
+ import { TypeaheadInputFieldComponentConfigOutline, TypeaheadInputFieldComponentDefinitionOutline, TypeaheadInputFieldModelConfigOutline, TypeaheadInputFieldModelDefinitionOutline, TypeaheadInputFormComponentDefinitionOutline, TypeaheadInputPermissiveFieldComponentConfigOutline, TypeaheadInputModelValueType, TypeaheadOption, TypeaheadSourceType, TypeaheadValueMode } from "./typeahead-input.outline";
8
+ export declare class TypeaheadInputFieldComponentConfig extends FieldComponentConfig implements TypeaheadInputPermissiveFieldComponentConfigOutline {
9
+ sourceType: TypeaheadSourceType;
10
10
  staticOptions: TypeaheadOption[];
11
11
  vocabRef?: string;
12
12
  queryId?: string;
@@ -20,7 +20,8 @@ export declare class TypeaheadInputFieldComponentConfig extends FieldComponentCo
20
20
  debounceMs: number;
21
21
  maxResults: number;
22
22
  requireSelection: boolean;
23
- valueMode: "value" | "optionObject";
23
+ valueMode: TypeaheadValueMode;
24
+ optionObjectFields?: Record<string, string>;
24
25
  cacheResults: boolean;
25
26
  multiSelect: boolean;
26
27
  placeholder?: string;
@@ -23,6 +23,9 @@ class TypeaheadInputFieldComponentConfig extends field_component_model_1.FieldCo
23
23
  maxResults = 25;
24
24
  requireSelection = false;
25
25
  valueMode = "value";
26
+ // Optional projection used by optionObject mode when forms need a custom
27
+ // stored object instead of label/value/sourceType.
28
+ optionObjectFields;
26
29
  cacheResults = true;
27
30
  multiSelect = false;
28
31
  placeholder;
@@ -90,4 +93,4 @@ exports.TypeaheadInputDefaults = {
90
93
  },
91
94
  },
92
95
  };
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLWlucHV0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbmZpZy9jb21wb25lbnQvdHlwZWFoZWFkLWlucHV0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDREQUE4RTtBQUM5RSxrRUFBa0U7QUFFbEUsc0RBTTJCO0FBQzNCLG9FQUEwRjtBQUcxRix1RUFVbUM7QUFFbkMsK0JBQStCO0FBRS9CLE1BQWEsa0NBQW1DLFNBQVEsNENBQW9CO0lBQ3hFLFVBQVUsR0FBb0UsUUFBUSxDQUFDO0lBQ3ZGLGFBQWEsR0FBc0IsRUFBRSxDQUFDO0lBQ3RDLFFBQVEsQ0FBVTtJQUNsQixPQUFPLENBQVU7SUFDakIsU0FBUyxDQUFVO0lBQ25CLFFBQVEsQ0FBVTtJQUNsQixtQkFBbUIsQ0FBVTtJQUM3QixVQUFVLENBQVU7SUFDcEIsYUFBYSxDQUFVO0lBQ3ZCLFVBQVUsQ0FBVTtJQUNwQixRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsVUFBVSxHQUFHLEdBQUcsQ0FBQztJQUNqQixVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUN6QixTQUFTLEdBQTZCLE9BQU8sQ0FBQztJQUM5QyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDcEIsV0FBVyxDQUFVO0lBQ3JCLG1CQUFtQixDQUFXO0lBQzlCLG1CQUFtQixDQUF1QjtJQUUxQztRQUNJLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNKO0FBekJELGdGQXlCQztBQUVELE1BQWEsc0NBQXVDLFNBQVEsZ0RBQXdCO0lBQ2hGLEtBQUssR0FBRyxxREFBMkIsQ0FBQztJQUNwQyxNQUFNLENBQTZDO0lBRW5EO1FBQ0ksS0FBSyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFpQztRQUMxQyxNQUFNLE9BQU8sQ0FBQywyQ0FBMkMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0o7QUFYRCx3RkFXQztBQUVELDJCQUEyQjtBQUUzQixNQUFhLDhCQUErQixTQUFRLG9DQUE4QztJQUM5RjtRQUNJLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNKO0FBSkQsd0VBSUM7QUFFRCxNQUFhLGtDQUFtQyxTQUFRLHdDQUFrRDtJQUN0RyxLQUFLLEdBQUcsaURBQXVCLENBQUM7SUFDaEMsTUFBTSxDQUF5QztJQUUvQztRQUNJLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBaUM7UUFDMUMsTUFBTSxPQUFPLENBQUMsdUNBQXVDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNKO0FBWEQsZ0ZBV0M7QUFFRCxvQ0FBb0M7QUFFcEMsTUFBYSxxQ0FBc0MsU0FBUSw4Q0FBdUI7SUFDdkUsU0FBUyxDQUFpRDtJQUMxRCxLQUFLLENBQTZDO0lBQ2xELE1BQU0sQ0FBMEM7SUFFdkQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQWlDO1FBQzFDLE1BQU0sT0FBTyxDQUFDLDBDQUEwQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDSjtBQVpELHNGQVlDO0FBRVksUUFBQSxpQkFBaUIsR0FBRztJQUM3QixFQUFFLElBQUksRUFBRSx5Q0FBd0IsRUFBRSxHQUFHLEVBQUUsa0NBQWtDLEVBQUU7SUFDM0UsRUFBRSxJQUFJLEVBQUUsNkNBQTRCLEVBQUUsR0FBRyxFQUFFLHNDQUFzQyxFQUFFLEtBQUssRUFBRSxxREFBMkIsRUFBRTtJQUN2SCxFQUFFLElBQUksRUFBRSxxQ0FBb0IsRUFBRSxHQUFHLEVBQUUsOEJBQThCLEVBQUU7SUFDbkUsRUFBRSxJQUFJLEVBQUUseUNBQXdCLEVBQUUsR0FBRyxFQUFFLGtDQUFrQyxFQUFFLEtBQUssRUFBRSxpREFBdUIsRUFBRTtJQUMzRyxFQUFFLElBQUksRUFBRSw0Q0FBMkIsRUFBRSxHQUFHLEVBQUUscUNBQXFDLEVBQUUsS0FBSyxFQUFFLHFEQUEyQixFQUFFO0NBQ3hILENBQUM7QUFFVyxRQUFBLHNCQUFzQixHQUFHO0lBQ2xDLENBQUMsNENBQTJCLENBQUMsRUFBRTtRQUMzQixDQUFDLHFEQUEyQixDQUFDLEVBQUU7WUFDM0IsQ0FBQyw2Q0FBNEIsQ0FBQyxFQUFFLHFEQUEyQjtZQUMzRCxDQUFDLHlDQUF3QixDQUFDLEVBQUUsaURBQXVCO1NBQ3REO0tBQ0o7Q0FDSixDQUFDIn0=
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLWlucHV0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbmZpZy9jb21wb25lbnQvdHlwZWFoZWFkLWlucHV0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDREQUE4RTtBQUM5RSxrRUFBa0U7QUFFbEUsc0RBTTJCO0FBQzNCLG9FQUEwRjtBQUcxRix1RUFhbUM7QUFFbkMsK0JBQStCO0FBRS9CLE1BQWEsa0NBQW1DLFNBQVEsNENBQW9CO0lBQ3hFLFVBQVUsR0FBd0IsUUFBUSxDQUFDO0lBQzNDLGFBQWEsR0FBc0IsRUFBRSxDQUFDO0lBQ3RDLFFBQVEsQ0FBVTtJQUNsQixPQUFPLENBQVU7SUFDakIsU0FBUyxDQUFVO0lBQ25CLFFBQVEsQ0FBVTtJQUNsQixtQkFBbUIsQ0FBVTtJQUM3QixVQUFVLENBQVU7SUFDcEIsYUFBYSxDQUFVO0lBQ3ZCLFVBQVUsQ0FBVTtJQUNwQixRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsVUFBVSxHQUFHLEdBQUcsQ0FBQztJQUNqQixVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUN6QixTQUFTLEdBQXVCLE9BQU8sQ0FBQztJQUN4Qyx5RUFBeUU7SUFDekUsbURBQW1EO0lBQ25ELGtCQUFrQixDQUEwQjtJQUM1QyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDcEIsV0FBVyxDQUFVO0lBQ3JCLG1CQUFtQixDQUFXO0lBQzlCLG1CQUFtQixDQUF1QjtJQUUxQztRQUNJLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNKO0FBNUJELGdGQTRCQztBQUVELE1BQWEsc0NBQXVDLFNBQVEsZ0RBQXdCO0lBQ2hGLEtBQUssR0FBRyxxREFBMkIsQ0FBQztJQUNwQyxNQUFNLENBQTZDO0lBRW5EO1FBQ0ksS0FBSyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFpQztRQUMxQyxNQUFNLE9BQU8sQ0FBQywyQ0FBMkMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0o7QUFYRCx3RkFXQztBQUVELDJCQUEyQjtBQUUzQixNQUFhLDhCQUErQixTQUFRLG9DQUE4QztJQUM5RjtRQUNJLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNKO0FBSkQsd0VBSUM7QUFFRCxNQUFhLGtDQUFtQyxTQUFRLHdDQUFrRDtJQUN0RyxLQUFLLEdBQUcsaURBQXVCLENBQUM7SUFDaEMsTUFBTSxDQUF5QztJQUUvQztRQUNJLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBaUM7UUFDMUMsTUFBTSxPQUFPLENBQUMsdUNBQXVDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNKO0FBWEQsZ0ZBV0M7QUFFRCxvQ0FBb0M7QUFFcEMsTUFBYSxxQ0FBc0MsU0FBUSw4Q0FBdUI7SUFDdkUsU0FBUyxDQUFpRDtJQUMxRCxLQUFLLENBQTZDO0lBQ2xELE1BQU0sQ0FBMEM7SUFFdkQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQWlDO1FBQzFDLE1BQU0sT0FBTyxDQUFDLDBDQUEwQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDSjtBQVpELHNGQVlDO0FBRVksUUFBQSxpQkFBaUIsR0FBRztJQUM3QixFQUFFLElBQUksRUFBRSx5Q0FBd0IsRUFBRSxHQUFHLEVBQUUsa0NBQWtDLEVBQUU7SUFDM0UsRUFBRSxJQUFJLEVBQUUsNkNBQTRCLEVBQUUsR0FBRyxFQUFFLHNDQUFzQyxFQUFFLEtBQUssRUFBRSxxREFBMkIsRUFBRTtJQUN2SCxFQUFFLElBQUksRUFBRSxxQ0FBb0IsRUFBRSxHQUFHLEVBQUUsOEJBQThCLEVBQUU7SUFDbkUsRUFBRSxJQUFJLEVBQUUseUNBQXdCLEVBQUUsR0FBRyxFQUFFLGtDQUFrQyxFQUFFLEtBQUssRUFBRSxpREFBdUIsRUFBRTtJQUMzRyxFQUFFLElBQUksRUFBRSw0Q0FBMkIsRUFBRSxHQUFHLEVBQUUscUNBQXFDLEVBQUUsS0FBSyxFQUFFLHFEQUEyQixFQUFFO0NBQ3hILENBQUM7QUFFVyxRQUFBLHNCQUFzQixHQUFHO0lBQ2xDLENBQUMsNENBQTJCLENBQUMsRUFBRTtRQUMzQixDQUFDLHFEQUEyQixDQUFDLEVBQUU7WUFDM0IsQ0FBQyw2Q0FBNEIsQ0FBQyxFQUFFLHFEQUEyQjtZQUMzRCxDQUFDLHlDQUF3QixDQUFDLEVBQUUsaURBQXVCO1NBQ3REO0tBQ0o7Q0FDSixDQUFDIn0=
@@ -6,9 +6,17 @@ import { AvailableFieldLayoutDefinitionFrames, AvailableFieldLayoutDefinitionOut
6
6
  import type { HistoricalVocabMode } from "./dropdown-input.outline";
7
7
  export declare const TypeaheadInputComponentName: "TypeaheadInputComponent";
8
8
  export type TypeaheadInputComponentNameType = typeof TypeaheadInputComponentName;
9
- export type TypeaheadSourceType = "static" | "vocabulary" | "namedQuery" | "external" | "service";
9
+ export declare const TypeaheadSourceTypes: readonly ["static", "vocabulary", "namedQuery", "external", "service"];
10
+ export type TypeaheadSourceType = typeof TypeaheadSourceTypes[number];
10
11
  export type TypeaheadValueMode = "value" | "optionObject";
11
12
  export type TypeaheadStoredSourceType = TypeaheadSourceType | "freeText";
13
+ /**
14
+ * Maps stored object property names to paths on the selected option/raw result.
15
+ * Use this only with valueMode: "optionObject" when a form needs a domain-specific
16
+ * stored object, for example { dc_title: "dc_title", grant_number: "grant_number" }.
17
+ * When omitted, optionObject mode keeps the legacy label/value/sourceType shape.
18
+ */
19
+ export type TypeaheadOptionObjectFields = Record<string, string>;
12
20
  export interface TypeaheadOption {
13
21
  label: string;
14
22
  value: string;
@@ -26,14 +34,12 @@ export interface TypeaheadOption {
26
34
  disabled?: boolean;
27
35
  raw?: unknown;
28
36
  }
29
- export interface TypeaheadInputFieldComponentConfigFrame extends FieldComponentConfigFrame {
30
- sourceType?: TypeaheadSourceType;
37
+ export interface TypeaheadInputFieldComponentConfigCommonFrame extends FieldComponentConfigFrame {
38
+ /**
39
+ * Static options are required for sourceType: "static"; remote configs may
40
+ * still carry an empty array from older defaults, so this remains common.
41
+ */
31
42
  staticOptions?: TypeaheadOption[];
32
- vocabRef?: string;
33
- queryId?: string;
34
- serviceId?: string;
35
- provider?: string;
36
- resultArrayProperty?: string;
37
43
  labelField?: string;
38
44
  labelTemplate?: string;
39
45
  valueField?: string;
@@ -41,14 +47,69 @@ export interface TypeaheadInputFieldComponentConfigFrame extends FieldComponentC
41
47
  debounceMs?: number;
42
48
  maxResults?: number;
43
49
  requireSelection?: boolean;
50
+ /**
51
+ * "value" stores the selected option value as a string.
52
+ * "optionObject" stores an object. Without optionObjectFields that object is
53
+ * { label, value, sourceType }; with optionObjectFields it uses the configured
54
+ * persisted property names and source paths.
55
+ */
44
56
  valueMode?: TypeaheadValueMode;
57
+ optionObjectFields?: TypeaheadOptionObjectFields;
45
58
  cacheResults?: boolean;
46
59
  multiSelect?: boolean;
47
60
  placeholder?: string;
48
61
  readOnlyAfterSelect?: boolean;
49
62
  historicalVocabMode?: HistoricalVocabMode;
50
63
  }
51
- export interface TypeaheadInputFieldComponentConfigOutline extends TypeaheadInputFieldComponentConfigFrame, FieldComponentConfigOutline {
64
+ export interface TypeaheadStaticSourceConfigFrame extends TypeaheadInputFieldComponentConfigCommonFrame {
65
+ sourceType?: "static";
66
+ }
67
+ export interface TypeaheadVocabularySourceConfigFrame extends TypeaheadInputFieldComponentConfigCommonFrame {
68
+ sourceType: "vocabulary";
69
+ vocabRef?: string;
70
+ }
71
+ export interface TypeaheadNamedQuerySourceConfigFrame extends TypeaheadInputFieldComponentConfigCommonFrame {
72
+ sourceType: "namedQuery";
73
+ queryId?: string;
74
+ /**
75
+ * Some existing hooks use vocabRef as the domain identifier for namedQuery
76
+ * typeaheads, for example ROR-backed lookups. Runtime validation still keys
77
+ * namedQuery sources from queryId, but the frame accepts vocabRef so those
78
+ * configs remain type-safe and can be migrated without blocking compilation.
79
+ */
80
+ vocabRef?: string;
81
+ }
82
+ export interface TypeaheadExternalSourceConfigFrame extends TypeaheadInputFieldComponentConfigCommonFrame {
83
+ sourceType: "external";
84
+ provider?: string;
85
+ resultArrayProperty?: string;
86
+ }
87
+ export interface TypeaheadServiceSourceConfigFrame extends TypeaheadInputFieldComponentConfigCommonFrame {
88
+ sourceType: "service";
89
+ serviceId?: string;
90
+ }
91
+ /**
92
+ * Source-specific config shape for TypeScript-authored forms. The source-specific
93
+ * IDs remain optional so runtime validator tests can still exercise missing config.
94
+ */
95
+ export type TypeaheadInputSourceConfigFrame = TypeaheadStaticSourceConfigFrame | TypeaheadVocabularySourceConfigFrame | TypeaheadNamedQuerySourceConfigFrame | TypeaheadExternalSourceConfigFrame | TypeaheadServiceSourceConfigFrame;
96
+ /**
97
+ * The public config frame uses sourceType as a discriminant while keeping required
98
+ * source values runtime-validated for JSON, migrated, and intentionally invalid forms.
99
+ */
100
+ export type TypeaheadInputFieldComponentConfigFrame = TypeaheadInputSourceConfigFrame;
101
+ export type TypeaheadInputFieldComponentConfigOutline = TypeaheadInputFieldComponentConfigFrame & FieldComponentConfigOutline;
102
+ /**
103
+ * Runtime defaults stay permissive because the constructed config class has to
104
+ * carry every possible source property before a concrete sourceType is known.
105
+ */
106
+ export interface TypeaheadInputPermissiveFieldComponentConfigOutline extends TypeaheadInputFieldComponentConfigCommonFrame, FieldComponentConfigOutline {
107
+ sourceType?: TypeaheadSourceType;
108
+ vocabRef?: string;
109
+ queryId?: string;
110
+ serviceId?: string;
111
+ provider?: string;
112
+ resultArrayProperty?: string;
52
113
  }
53
114
  export interface TypeaheadInputFieldComponentDefinitionFrame extends FieldComponentDefinitionFrame {
54
115
  class: TypeaheadInputComponentNameType;
@@ -61,9 +122,14 @@ export interface TypeaheadInputFieldComponentDefinitionOutline extends Typeahead
61
122
  export declare const TypeaheadInputModelName: "TypeaheadInputModel";
62
123
  export type TypeaheadInputModelNameType = typeof TypeaheadInputModelName;
63
124
  export interface TypeaheadInputModelOptionValue {
64
- label: string;
65
- value: string;
125
+ label?: string;
126
+ value?: string;
66
127
  sourceType?: TypeaheadStoredSourceType;
128
+ /**
129
+ * Allows configured object-mode fields such as dc_title/grant_number while
130
+ * keeping backwards compatibility with legacy label/value/sourceType objects.
131
+ */
132
+ [key: string]: unknown;
67
133
  }
68
134
  export type TypeaheadInputModelValueType = string | TypeaheadInputModelOptionValue | null;
69
135
  export interface TypeaheadInputFieldModelConfigFrame extends FieldModelConfigFrame<TypeaheadInputModelValueType> {
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TypeaheadInputModelName = exports.TypeaheadInputComponentName = void 0;
3
+ exports.TypeaheadInputModelName = exports.TypeaheadSourceTypes = exports.TypeaheadInputComponentName = void 0;
4
4
  /* Typeahead Input Component */
5
5
  exports.TypeaheadInputComponentName = "TypeaheadInputComponent";
6
+ exports.TypeaheadSourceTypes = ["static", "vocabulary", "namedQuery", "external", "service"];
6
7
  /* Typeahead Input Model */
7
8
  exports.TypeaheadInputModelName = "TypeaheadInputModel";
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLWlucHV0Lm91dGxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29uZmlnL2NvbXBvbmVudC90eXBlYWhlYWQtaW5wdXQub3V0bGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE0QkEsK0JBQStCO0FBQ2xCLFFBQUEsMkJBQTJCLEdBQUcseUJBQWtDLENBQUM7QUE2RDlFLDJCQUEyQjtBQUNkLFFBQUEsdUJBQXVCLEdBQUcscUJBQThCLENBQUMifQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLWlucHV0Lm91dGxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29uZmlnL2NvbXBvbmVudC90eXBlYWhlYWQtaW5wdXQub3V0bGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE0QkEsK0JBQStCO0FBQ2xCLFFBQUEsMkJBQTJCLEdBQUcseUJBQWtDLENBQUM7QUFHakUsUUFBQSxvQkFBb0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQVUsQ0FBQztBQXFJM0csMkJBQTJCO0FBQ2QsUUFBQSx1QkFBdUIsR0FBRyxxQkFBOEIsQ0FBQyJ9
@@ -223,6 +223,14 @@ export type FormOverrideModeClassesConfig = {
223
223
  component?: ComponentClassNamesType;
224
224
  model?: ModelClassNamesType;
225
225
  layout?: LayoutClassNamesType;
226
+ /**
227
+ * When the mode's transform produces a ContentComponent, this Handlebars template replaces the generated one.
228
+ * It renders with the client content-component context (`content` = the field's pruned value, plus `formData`,
229
+ * `branding`, `portal`, `oid`, `workflow`). The transformed component is made visible so edit-mode visibility
230
+ * defaults do not suppress the custom view. A layout hidden for edit mode is shown when transformed content is
231
+ * non-empty and remains hidden when it is empty. It is ignored when no transform to ContentComponent occurs.
232
+ */
233
+ template?: string;
226
234
  };
227
235
  /**
228
236
  * The form mode to class name mapping.
@@ -11,6 +11,7 @@ export declare class FormOverride {
11
11
  private activeReusableFormDefs;
12
12
  private readonly reusableFragmentSlotNames;
13
13
  private readonly reusableViewTemplateKeys;
14
+ private readonly linkLeafFallbackTemplate;
14
15
  private readonly dataLocationLeafFallbackTemplate;
15
16
  private readonly pdfListLeafFallbackTemplate;
16
17
  private readonly publishDataLocationSelectorLeafFallbackTemplate;
@@ -29,6 +30,7 @@ export declare class FormOverride {
29
30
  */
30
31
  private defaultTransforms;
31
32
  private readonly tableCompatibleLeafComponentNames;
33
+ hasDefaultViewTransform(className: string | undefined): boolean;
32
34
  /**
33
35
  * Apply any reusable form configs in the form component definitions.
34
36
  * @param items The form component definitions.
@@ -47,11 +49,16 @@ export declare class FormOverride {
47
49
  * Apply any overrides that transform a component into another component.
48
50
  * @param source The original component.
49
51
  * @param formMode The current form mode.
52
+ * @param options Additional options for applying override transforms.
53
+ * @param options.phase The phase of the form config processing to run.
54
+ * @param options.reusableFormDefs The available reusable form definitions.
55
+ * @param options.removeOverrides True to remove all overrides, false to retain the overrides that the client visitor might use.
50
56
  * @returns The transformed form component.
51
57
  */
52
58
  applyOverrideTransform(source: AllFormComponentDefinitionOutlines, formMode: FormModesConfig, options?: {
53
59
  phase?: 'construct' | 'client';
54
60
  reusableFormDefs?: ReusableFormDefinitions;
61
+ removeOverrides?: boolean;
55
62
  }): AllFormComponentDefinitionOutlines;
56
63
  /**
57
64
  * Create reusable components from the question tree questions DSL.
@@ -77,7 +84,14 @@ export declare class FormOverride {
77
84
  private sourceRadioInputComponentTargetContentComponent;
78
85
  private sourceDateInputComponentTargetContentComponent;
79
86
  private sourceTypeaheadInputComponentTargetContentComponent;
87
+ private resolveTypeaheadContentValue;
88
+ private getConfiguredTypeaheadStoredValue;
89
+ private getTypeaheadOptionObjectFields;
90
+ private isConfiguredTypeaheadLabelField;
91
+ private isConfiguredTypeaheadValueField;
80
92
  private sourceRichTextEditorComponentTargetContentComponent;
93
+ private resolveDateInputFormat;
94
+ private resolveRichTextOutputFormat;
81
95
  private sourceFileUploadComponentTargetContentComponent;
82
96
  private sourceDataLocationComponentTargetContentComponent;
83
97
  private sourcePDFListComponentTargetContentComponent;
@@ -92,15 +106,19 @@ export declare class FormOverride {
92
106
  private resolveQuestionTreeAnswerLabelFromConfig;
93
107
  private sourceRepeatableComponentTargetContentComponent;
94
108
  private extractDescendantValues;
109
+ private pruneGroupValue;
95
110
  private sourceGroupComponentTargetContentComponent;
96
111
  private generateTemplateForComponent;
97
112
  private generateRepeatableTemplate;
98
113
  private generateGroupTemplate;
99
114
  private renderRepeatableTable;
100
115
  private renderRepeatableFallback;
116
+ private effectiveViewTargetsContentComponent;
101
117
  private renderComponentBody;
102
118
  private renderLabelValueRow;
103
119
  private renderLeafValue;
120
+ private renderDateInputValue;
121
+ private renderRichTextEditorValue;
104
122
  private renderTypeaheadValue;
105
123
  private renderTypeaheadScalarValue;
106
124
  private renderDisplayValue;