@researchdatabox/sails-ng-common 5.0.2 → 5.0.4-beta.12498

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/src/config/component/checkbox-input.model.d.ts +1 -0
  2. package/dist/src/config/component/checkbox-input.model.js +2 -1
  3. package/dist/src/config/component/checkbox-input.outline.d.ts +2 -1
  4. package/dist/src/config/component/checkbox-input.outline.js +1 -1
  5. package/dist/src/config/component/data-location.outline.d.ts +1 -0
  6. package/dist/src/config/component/file-upload.outline.d.ts +2 -0
  7. package/dist/src/config/component/file-upload.outline.js +1 -1
  8. package/dist/src/config/component/related-object-data.model.d.ts +45 -0
  9. package/dist/src/config/component/related-object-data.model.js +39 -0
  10. package/dist/src/config/component/related-object-data.outline.d.ts +59 -0
  11. package/dist/src/config/component/related-object-data.outline.js +5 -0
  12. package/dist/src/config/component/save-button.model.d.ts +1 -0
  13. package/dist/src/config/component/save-button.model.js +2 -1
  14. package/dist/src/config/component/save-button.outline.d.ts +5 -0
  15. package/dist/src/config/component/save-status.model.d.ts +4 -0
  16. package/dist/src/config/component/save-status.model.js +5 -1
  17. package/dist/src/config/component/save-status.outline.d.ts +20 -0
  18. package/dist/src/config/component/workspace.model.d.ts +44 -0
  19. package/dist/src/config/component/workspace.model.js +44 -0
  20. package/dist/src/config/component/workspace.outline.d.ts +62 -0
  21. package/dist/src/config/component/workspace.outline.js +5 -0
  22. package/dist/src/config/dictionary.model.d.ts +28 -4
  23. package/dist/src/config/dictionary.model.js +7 -1
  24. package/dist/src/config/dictionary.outline.d.ts +5 -3
  25. package/dist/src/config/form-behaviour.outline.d.ts +120 -7
  26. package/dist/src/config/form-behaviour.outline.js +13 -5
  27. package/dist/src/config/form-component.model.d.ts +1 -0
  28. package/dist/src/config/form-component.model.js +2 -1
  29. package/dist/src/config/form-component.outline.d.ts +14 -0
  30. package/dist/src/config/form-config.model.d.ts +3 -0
  31. package/dist/src/config/form-config.model.js +2 -1
  32. package/dist/src/config/form-config.outline.d.ts +10 -0
  33. package/dist/src/config/form-override.model.js +4 -3
  34. package/dist/src/config/visitor/base.model.d.ts +6 -0
  35. package/dist/src/config/visitor/base.model.js +13 -1
  36. package/dist/src/config/visitor/base.outline.d.ts +6 -0
  37. package/dist/src/config/visitor/common.model.js +2 -1
  38. package/dist/src/index.d.ts +9 -0
  39. package/dist/src/index.js +10 -1
  40. package/dist/src/internal/plain-record.d.ts +11 -0
  41. package/dist/src/internal/plain-record.js +21 -0
  42. package/dist/src/jsonata-helpers.d.ts +15 -0
  43. package/dist/src/jsonata-helpers.js +49 -13
  44. package/dist/src/jsonata-parity.fixtures.d.ts +9 -0
  45. package/dist/src/jsonata-parity.fixtures.js +25 -0
  46. package/dist/src/record-concurrency.model.d.ts +118 -0
  47. package/dist/src/record-concurrency.model.js +199 -0
  48. package/dist/src/record-diff.d.ts +69 -0
  49. package/dist/src/record-diff.js +298 -0
  50. package/dist/src/record-save.model.d.ts +154 -0
  51. package/dist/src/record-save.model.js +289 -0
  52. package/dist/src/testing.d.ts +3 -0
  53. package/dist/src/testing.js +20 -0
  54. package/dist/src/validation/record-validation.model.d.ts +84 -0
  55. package/dist/src/validation/record-validation.model.js +53 -0
  56. package/dist/src/validation/validation-groups.d.ts +29 -0
  57. package/dist/src/validation/validation-groups.fixtures.d.ts +20 -0
  58. package/dist/src/validation/validation-groups.fixtures.js +83 -0
  59. package/dist/src/validation/validation-groups.js +82 -0
  60. package/package.json +16 -11
@@ -10,8 +10,10 @@ const group_model_1 = require("./component/group.model");
10
10
  const save_button_model_1 = require("./component/save-button.model");
11
11
  const save_status_model_1 = require("./component/save-status.model");
12
12
  const integration_status_model_1 = require("./component/integration-status.model");
13
+ const workspace_model_1 = require("./component/workspace.model");
13
14
  const text_area_model_1 = require("./component/text-area.model");
14
15
  const content_model_1 = require("./component/content.model");
16
+ const related_object_data_model_1 = require("./component/related-object-data.model");
15
17
  const simple_input_model_1 = require("./component/simple-input.model");
16
18
  const validation_summary_model_1 = require("./component/validation-summary.model");
17
19
  const suggested_validation_summary_model_1 = require("./component/suggested-validation-summary.model");
@@ -52,11 +54,13 @@ exports.AllDefs = [
52
54
  ...save_button_model_1.SaveButtonMap,
53
55
  ...save_status_model_1.SaveStatusMap,
54
56
  ...integration_status_model_1.IntegrationStatusMap,
57
+ ...workspace_model_1.WorkspaceMap,
55
58
  ...cancel_button_model_1.CancelButtonMap,
56
59
  ...delete_button_model_1.DeleteButtonMap,
57
60
  ...tab_nav_button_model_1.TabNavButtonMap,
58
61
  ...text_area_model_1.TextAreaMap,
59
62
  ...content_model_1.ContentMap,
63
+ ...related_object_data_model_1.RelatedObjectDataMap,
60
64
  ...simple_input_model_1.SimpleInputMap,
61
65
  ...validation_summary_model_1.ValidationSummaryMap,
62
66
  ...suggested_validation_summary_model_1.SuggestedValidationSummaryMap,
@@ -94,11 +98,13 @@ const RawDefaults = [
94
98
  save_button_model_1.SaveButtonDefaults,
95
99
  save_status_model_1.SaveStatusDefaults,
96
100
  integration_status_model_1.IntegrationStatusDefaults,
101
+ workspace_model_1.WorkspaceDefaults,
97
102
  cancel_button_model_1.CancelButtonDefaults,
98
103
  delete_button_model_1.DeleteButtonDefaults,
99
104
  tab_nav_button_model_1.TabNavButtonDefaults,
100
105
  text_area_model_1.TextAreaDefaults,
101
106
  content_model_1.ContentDefaults,
107
+ related_object_data_model_1.RelatedObjectDataDefaults,
102
108
  simple_input_model_1.SimpleInputDefaults,
103
109
  validation_summary_model_1.ValidationSummaryDefaults,
104
110
  suggested_validation_summary_model_1.SuggestedValidationSummaryDefaults,
@@ -178,4 +184,4 @@ exports.FieldComponentDefinitionMap = toClassDefMap(VisitorComponentDefs);
178
184
  exports.FieldModelDefinitionMap = toClassDefMap(ModelDefs);
179
185
  exports.FieldLayoutDefinitionMap = toClassDefMap(LayoutDefs);
180
186
  exports.FormComponentDefinitionMap = toClassDefMap(VisitorFormComponentDefs);
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGljdGlvbmFyeS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb25maWcvZGljdGlvbmFyeS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFLMEI7QUFFMUIsMkVBQTJGO0FBQzNGLGlGQUF5RTtBQUN6RSx5RUFBa0U7QUFDbEUsbUVBQWlGO0FBQ2pGLHlEQUFrRTtBQUNsRSxxRUFBa0Y7QUFDbEYscUVBQWtGO0FBQ2xGLG1GQUF1RztBQUN2RyxpRUFBNEU7QUFDNUUsNkRBQXdFO0FBQ3hFLHVFQUFxRjtBQUNyRixtRkFBdUc7QUFDdkcsdUdBR3dEO0FBQ3hELHFFQUFrRjtBQUNsRixxREFBNEQ7QUFDNUQsaUVBQThFO0FBQzlFLDJFQUEyRjtBQUMzRiwyRUFBMkY7QUFDM0YscUVBQWtGO0FBQ2xGLG1FQUErRTtBQUMvRSwrREFBMkU7QUFDM0UsbUVBQXFFO0FBQ3JFLHlFQUF3RjtBQUN4Rix5RUFBd0Y7QUFDeEYsNkVBQThGO0FBQzlGLDZFQUE4RjtBQUM5RiwrRUFBK0Y7QUFDL0YscURBQTREO0FBQzVELHFFQUFrRjtBQUNsRiwrREFBeUU7QUFDekUsaUdBR3FEO0FBQ3JELHlFQUF3RjtBQUN4Rix5R0FHeUQ7QUFDekQsMkdBRzBEO0FBQzFELHlFQUF3RjtBQUN4RiwyRUFBeUY7QUFDekYseUVBQXdGO0FBRXhGOzs7R0FHRztBQUNVLFFBQUEsT0FBTyxHQUFHO0lBQ3JCLEdBQUcsdUNBQWdCO0lBQ25CLEdBQUcsNENBQWtCO0lBQ3JCLEdBQUcscUNBQWU7SUFDbEIsR0FBRyxnQ0FBYTtJQUNoQixHQUFHLHNCQUFRO0lBQ1gsR0FBRyxpQ0FBYTtJQUNoQixHQUFHLGlDQUFhO0lBQ2hCLEdBQUcsK0NBQW9CO0lBQ3ZCLEdBQUcscUNBQWU7SUFDbEIsR0FBRyxxQ0FBZTtJQUNsQixHQUFHLHNDQUFlO0lBQ2xCLEdBQUcsNkJBQVc7SUFDZCxHQUFHLDBCQUFVO0lBQ2IsR0FBRyxtQ0FB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
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGljdGlvbmFyeS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb25maWcvZGljdGlvbmFyeS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFLMEI7QUFFMUIsMkVBQTJGO0FBQzNGLGlGQUF5RTtBQUN6RSx5RUFBa0U7QUFDbEUsbUVBQWlGO0FBQ2pGLHlEQUFrRTtBQUNsRSxxRUFBa0Y7QUFDbEYscUVBQWtGO0FBQ2xGLG1GQUF1RztBQUN2RyxpRUFBOEU7QUFDOUUsaUVBQTRFO0FBQzVFLDZEQUF3RTtBQUN4RSxxRkFBd0c7QUFDeEcsdUVBQXFGO0FBQ3JGLG1GQUF1RztBQUN2Ryx1R0FHd0Q7QUFDeEQscUVBQWtGO0FBQ2xGLHFEQUE0RDtBQUM1RCxpRUFBOEU7QUFDOUUsMkVBQTJGO0FBQzNGLDJFQUEyRjtBQUMzRixxRUFBa0Y7QUFDbEYsbUVBQStFO0FBQy9FLCtEQUEyRTtBQUMzRSxtRUFBcUU7QUFDckUseUVBQXdGO0FBQ3hGLHlFQUF3RjtBQUN4Riw2RUFBOEY7QUFDOUYsNkVBQThGO0FBQzlGLCtFQUErRjtBQUMvRixxREFBNEQ7QUFDNUQscUVBQWtGO0FBQ2xGLCtEQUF5RTtBQUN6RSxpR0FHcUQ7QUFDckQseUVBQXdGO0FBQ3hGLHlHQUd5RDtBQUN6RCwyR0FHMEQ7QUFDMUQseUVBQXdGO0FBQ3hGLDJFQUF5RjtBQUN6Rix5RUFBd0Y7QUFFeEY7OztHQUdHO0FBQ1UsUUFBQSxPQUFPLEdBQUc7SUFDckIsR0FBRyx1Q0FBZ0I7SUFDbkIsR0FBRyw0Q0FBa0I7SUFDckIsR0FBRyxxQ0FBZTtJQUNsQixHQUFHLGdDQUFhO0lBQ2hCLEdBQUcsc0JBQVE7SUFDWCxHQUFHLGlDQUFhO0lBQ2hCLEdBQUcsaUNBQWE7SUFDaEIsR0FBRywrQ0FBb0I7SUFDdkIsR0FBRyw4QkFBWTtJQUNmLEdBQUcscUNBQWU7SUFDbEIsR0FBRyxxQ0FBZTtJQUNsQixHQUFHLHNDQUFlO0lBQ2xC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
@@ -3,8 +3,10 @@ import { GroupTypes } from './component/group.outline';
3
3
  import { SaveButtonTypes } from './component/save-button.outline';
4
4
  import { SaveStatusTypes } from './component/save-status.outline';
5
5
  import { IntegrationStatusTypes } from './component/integration-status.outline';
6
+ import { WorkspaceTypes } from './component/workspace.outline';
6
7
  import { TextAreaTypes } from './component/text-area.outline';
7
8
  import { ContentTypes } from './component/content.outline';
9
+ import { RelatedObjectDataTypes } from './component/related-object-data.outline';
8
10
  import { SimpleInputTypes } from './component/simple-input.outline';
9
11
  import { ValidationSummaryTypes } from './component/validation-summary.outline';
10
12
  import { SuggestedValidationSummaryTypes } from './component/suggested-validation-summary.outline';
@@ -35,13 +37,13 @@ import { PublishDataLocationSelectorTypes } from './component/publish-data-locat
35
37
  import { CancelButtonTypes } from './component/cancel-button.outline';
36
38
  import { TabNavButtonTypes } from './component/tab-nav-button.outline';
37
39
  import { DeleteButtonTypes } from './component/delete-button.outline';
38
- import { FieldComponentDefinitionFrame } from "./field-component.outline";
39
- import { FieldLayoutDefinitionFrame } from "./field-layout.outline";
40
+ import { FieldComponentDefinitionFrame } from './field-component.outline';
41
+ import { FieldLayoutDefinitionFrame } from './field-layout.outline';
40
42
  /**
41
43
  * The static type union of all available interfaces that provides typing for the object literal and schema.
42
44
  * Other convenience mappings are built from this.
43
45
  */
44
- export type AllTypes = DefaultLayoutTypes | InlineLayoutTypes | ActionRowLayoutTypes | RepeatableTypes | GroupTypes | SaveButtonTypes | SaveStatusTypes | IntegrationStatusTypes | CancelButtonTypes | DeleteButtonTypes | TabNavButtonTypes | TextAreaTypes | ContentTypes | SimpleInputTypes | ValidationSummaryTypes | SuggestedValidationSummaryTypes | TabContentTypes | TabTypes | AccordionTypes | CheckboxInputTypes | DropdownInputTypes | RadioInputTypes | DateInputTypes | ReusableTypes | QuestionTreeTypes | CheckboxTreeTypes | RecordSelectorTypes | TypeaheadInputTypes | RichTextEditorTypes | MapTypes | FileUploadTypes | PDFListTypes | RecordMetadataRetrieverTypes | DataLocationTypes | PublishDataLocationRefreshTypes | PublishDataLocationSelectorTypes;
46
+ export type AllTypes = DefaultLayoutTypes | InlineLayoutTypes | ActionRowLayoutTypes | RepeatableTypes | GroupTypes | SaveButtonTypes | SaveStatusTypes | IntegrationStatusTypes | WorkspaceTypes | CancelButtonTypes | DeleteButtonTypes | TabNavButtonTypes | TextAreaTypes | ContentTypes | RelatedObjectDataTypes | SimpleInputTypes | ValidationSummaryTypes | SuggestedValidationSummaryTypes | TabContentTypes | TabTypes | AccordionTypes | CheckboxInputTypes | DropdownInputTypes | RadioInputTypes | DateInputTypes | ReusableTypes | QuestionTreeTypes | CheckboxTreeTypes | RecordSelectorTypes | TypeaheadInputTypes | RichTextEditorTypes | MapTypes | FileUploadTypes | PDFListTypes | RecordMetadataRetrieverTypes | DataLocationTypes | PublishDataLocationRefreshTypes | PublishDataLocationSelectorTypes;
45
47
  /**
46
48
  * The form component definition frames available for use in any list of form components.
47
49
  */
@@ -1,4 +1,4 @@
1
- import { ExpressionsConditionKindType } from './form-component.outline';
1
+ import { ExpressionsConditionKindType, FormExpressionsTargetType } from './form-component.outline';
2
2
  /**
3
3
  * Form behaviours are the v1 form-level automation primitive described in
4
4
  * `support/specs/form-behaviour/implementation_plan.md`.
@@ -9,14 +9,18 @@ import { ExpressionsConditionKindType } from './form-component.outline';
9
9
  * - keep the configuration serialisable so it can pass through the existing
10
10
  * Construct -> Template -> Client visitor pipeline
11
11
  *
12
- * Scope in v1:
12
+ * Scope:
13
13
  * - built-in processors only: `jsonataTransform`, `fetchMetadata`
14
- * - built-in actions only: `setValue`, `emitEvent`
14
+ * - built-in actions only: `setValue`, `setValues`, `emitEvent`, `runTemplate`,
15
+ * `setUIProperty`, `setUIProperties`
15
16
  * - event emission is intentionally limited to `field.value.changed`
17
+ * - UI-property actions reuse the expressions target vocabulary
18
+ * (`model.*`, `layout.*`, `component.*`, `field.visible`, `field.disabled`,
19
+ * `form.enabledValidationGroups`)
16
20
  *
17
- * Out of scope in v1:
21
+ * Out of scope:
18
22
  * - hook-registered/custom processors and actions
19
- * - UI-specific actions such as notifications or highlighting
23
+ * - UI feedback actions such as notifications or highlighting
20
24
  * - processor-level debounce controls
21
25
  *
22
26
  * These types are intentionally lightweight outlines rather than runtime
@@ -29,7 +33,11 @@ export declare const FormBehaviourProcessorType: {
29
33
  export type FormBehaviourProcessorTypeValue = (typeof FormBehaviourProcessorType)[keyof typeof FormBehaviourProcessorType];
30
34
  export declare const FormBehaviourActionType: {
31
35
  readonly SetValue: "setValue";
36
+ readonly SetValues: "setValues";
32
37
  readonly EmitEvent: "emitEvent";
38
+ readonly RunTemplate: "runTemplate";
39
+ readonly SetUIProperty: "setUIProperty";
40
+ readonly SetUIProperties: "setUIProperties";
33
41
  };
34
42
  export type FormBehaviourActionTypeValue = (typeof FormBehaviourActionType)[keyof typeof FormBehaviourActionType];
35
43
  export declare const FieldPathKind: {
@@ -88,17 +96,122 @@ export interface FormBehaviourEmitEventActionConfig {
88
96
  valueTemplate?: string;
89
97
  hasValueTemplate?: boolean;
90
98
  }
91
- export interface FormBehaviourActionConfigFrame<TConfig = FormBehaviourSetValueActionConfig | FormBehaviourEmitEventActionConfig> {
99
+ /**
100
+ * `setValues` applies several `setValue`-style assignments from one action.
101
+ *
102
+ * Each entry mirrors `FormBehaviourSetValueActionConfig` exactly, including
103
+ * `fieldPathKind` resolution modes and per-entry `valueTemplate`. Entries that
104
+ * fail to resolve are warn-and-skipped individually; the remaining entries
105
+ * still run. Entries apply in order, but their templates share the `formData`
106
+ * snapshot taken before this action. Use separate actions when a later
107
+ * template must read a value written by an earlier entry.
108
+ */
109
+ export interface FormBehaviourSetValuesActionConfig {
110
+ values: FormBehaviourSetValueActionConfig[];
111
+ }
112
+ /**
113
+ * `runTemplate` evaluates a JSONata template against the full behaviour
114
+ * pipeline context (`value`, `event`, `formData`, `requestParams`,
115
+ * `runtimeContext`, `querySource`, plus any context keys stored by earlier
116
+ * `runTemplate` actions in the same list execution).
117
+ *
118
+ * Result handling (both optional, may be combined):
119
+ * - `resultKey`: store the result in the pipeline context under this key so
120
+ * later actions and their value templates can read it. The key must match
121
+ * `[A-Za-z_][A-Za-z0-9_]*` and must not be one of the reserved context keys
122
+ * (`value`, `event`, `formData`, `requestParams`, `runtimeContext`,
123
+ * `querySource`); omitting `resultKey` is the explicit way to replace the
124
+ * pipeline `value`.
125
+ * - `applyResults`: treat the result as
126
+ * `FormBehaviourFieldAssignmentInstruction[]` (a single object is wrapped)
127
+ * and apply each instruction. Invalid instructions are warn-and-skipped.
128
+ *
129
+ * When neither is configured the result replaces the pipeline `value`. When
130
+ * `applyResults` is true and no `resultKey` is set, the pipeline `value` is
131
+ * left untouched because the result is consumed by instruction application.
132
+ */
133
+ export interface FormBehaviourRunTemplateActionConfig {
134
+ /** Raw JSONata source; compiled server-side and stripped by the client visitor. */
135
+ template?: string;
136
+ /** Client-side marker set after the raw template has been stripped. */
137
+ hasTemplate?: boolean;
138
+ resultKey?: string;
139
+ applyResults?: boolean;
140
+ }
141
+ /**
142
+ * One assignment produced by a `runTemplate` `applyResults` evaluation.
143
+ *
144
+ * `fieldPath` is a literal `angularComponentsJsonPointer` only — the JSONata
145
+ * template itself is the place to compute pointers. `target` defaults to
146
+ * `model.value`; `fieldPath` may be omitted only for the
147
+ * `form.enabledValidationGroups` target, which is form-scoped.
148
+ */
149
+ export interface FormBehaviourFieldAssignmentInstruction {
150
+ fieldPath?: string;
151
+ target?: FormExpressionsTargetType;
152
+ value: unknown;
153
+ }
154
+ /**
155
+ * Shared shape for `setUIProperty` config and `setUIProperties` entries.
156
+ *
157
+ * Value resolution precedence: `valueTemplate` (via `hasValueTemplate`) wins
158
+ * over a literal `value` (when the key is present), which wins over the
159
+ * pipeline `value`.
160
+ *
161
+ * In `setUIProperties` entries the fieldPath pair is all-or-nothing: an entry
162
+ * that provides `fieldPath` (or `hasFieldPathTemplate`) supplies its own
163
+ * `fieldPathKind` too; otherwise both fall back to the action-level defaults.
164
+ */
165
+ export interface FormBehaviourSetUIPropertyEntry {
166
+ /**
167
+ * Target field. Required except when `target` is
168
+ * `form.enabledValidationGroups`.
169
+ */
170
+ fieldPath?: string;
171
+ fieldPathKind?: FieldPathKindType;
172
+ hasFieldPathTemplate?: boolean;
173
+ target: FormExpressionsTargetType;
174
+ /** Literal value used when no `valueTemplate` is configured. */
175
+ value?: unknown;
176
+ valueTemplate?: string;
177
+ hasValueTemplate?: boolean;
178
+ }
179
+ export interface FormBehaviourSetUIPropertyActionConfig extends FormBehaviourSetUIPropertyEntry {
180
+ }
181
+ /**
182
+ * `setUIProperties` applies several UI-property assignments from one action.
183
+ * The action-level `fieldPath`/`fieldPathKind` act as defaults for entries
184
+ * that do not provide their own.
185
+ */
186
+ export interface FormBehaviourSetUIPropertiesActionConfig {
187
+ fieldPath?: string;
188
+ fieldPathKind?: FieldPathKindType;
189
+ hasFieldPathTemplate?: boolean;
190
+ properties: FormBehaviourSetUIPropertyEntry[];
191
+ }
192
+ export interface FormBehaviourActionConfigFrame<TConfig = FormBehaviourSetValueActionConfig | FormBehaviourSetValuesActionConfig | FormBehaviourEmitEventActionConfig | FormBehaviourRunTemplateActionConfig | FormBehaviourSetUIPropertyActionConfig | FormBehaviourSetUIPropertiesActionConfig> {
92
193
  type: FormBehaviourActionTypeValue;
93
194
  config: TConfig;
94
195
  }
95
196
  export type FormBehaviourSetValueAction = FormBehaviourActionConfigFrame<FormBehaviourSetValueActionConfig> & {
96
197
  type: typeof FormBehaviourActionType.SetValue;
97
198
  };
199
+ export type FormBehaviourSetValuesAction = FormBehaviourActionConfigFrame<FormBehaviourSetValuesActionConfig> & {
200
+ type: typeof FormBehaviourActionType.SetValues;
201
+ };
98
202
  export type FormBehaviourEmitEventAction = FormBehaviourActionConfigFrame<FormBehaviourEmitEventActionConfig> & {
99
203
  type: typeof FormBehaviourActionType.EmitEvent;
100
204
  };
101
- export type FormBehaviourActionConfig = FormBehaviourSetValueAction | FormBehaviourEmitEventAction;
205
+ export type FormBehaviourRunTemplateAction = FormBehaviourActionConfigFrame<FormBehaviourRunTemplateActionConfig> & {
206
+ type: typeof FormBehaviourActionType.RunTemplate;
207
+ };
208
+ export type FormBehaviourSetUIPropertyAction = FormBehaviourActionConfigFrame<FormBehaviourSetUIPropertyActionConfig> & {
209
+ type: typeof FormBehaviourActionType.SetUIProperty;
210
+ };
211
+ export type FormBehaviourSetUIPropertiesAction = FormBehaviourActionConfigFrame<FormBehaviourSetUIPropertiesActionConfig> & {
212
+ type: typeof FormBehaviourActionType.SetUIProperties;
213
+ };
214
+ export type FormBehaviourActionConfig = FormBehaviourSetValueAction | FormBehaviourSetValuesAction | FormBehaviourEmitEventAction | FormBehaviourRunTemplateAction | FormBehaviourSetUIPropertyAction | FormBehaviourSetUIPropertiesAction;
102
215
  /**
103
216
  * Top-level behaviour definition stored on `FormConfigFrame.behaviours`.
104
217
  *
@@ -11,14 +11,18 @@ exports.FieldPathKind = exports.FormBehaviourActionType = exports.FormBehaviourP
11
11
  * - keep the configuration serialisable so it can pass through the existing
12
12
  * Construct -> Template -> Client visitor pipeline
13
13
  *
14
- * Scope in v1:
14
+ * Scope:
15
15
  * - built-in processors only: `jsonataTransform`, `fetchMetadata`
16
- * - built-in actions only: `setValue`, `emitEvent`
16
+ * - built-in actions only: `setValue`, `setValues`, `emitEvent`, `runTemplate`,
17
+ * `setUIProperty`, `setUIProperties`
17
18
  * - event emission is intentionally limited to `field.value.changed`
19
+ * - UI-property actions reuse the expressions target vocabulary
20
+ * (`model.*`, `layout.*`, `component.*`, `field.visible`, `field.disabled`,
21
+ * `form.enabledValidationGroups`)
18
22
  *
19
- * Out of scope in v1:
23
+ * Out of scope:
20
24
  * - hook-registered/custom processors and actions
21
- * - UI-specific actions such as notifications or highlighting
25
+ * - UI feedback actions such as notifications or highlighting
22
26
  * - processor-level debounce controls
23
27
  *
24
28
  * These types are intentionally lightweight outlines rather than runtime
@@ -30,11 +34,15 @@ exports.FormBehaviourProcessorType = {
30
34
  };
31
35
  exports.FormBehaviourActionType = {
32
36
  SetValue: 'setValue',
37
+ SetValues: 'setValues',
33
38
  EmitEvent: 'emitEvent',
39
+ RunTemplate: 'runTemplate',
40
+ SetUIProperty: 'setUIProperty',
41
+ SetUIProperties: 'setUIProperties',
34
42
  };
35
43
  exports.FieldPathKind = {
36
44
  ComponentJsonPointer: 'componentJsonPointer',
37
45
  JSONata: 'jsonata',
38
46
  Logical: 'logical',
39
47
  };
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1iZWhhdmlvdXIub3V0bGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb25maWcvZm9ybS1iZWhhdmlvdXIub3V0bGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNVLFFBQUEsMEJBQTBCLEdBQUc7SUFDeEMsZ0JBQWdCLEVBQUUsa0JBQWtCO0lBQ3BDLGFBQWEsRUFBRSxlQUFlO0NBQ3RCLENBQUM7QUFLRSxRQUFBLHVCQUF1QixHQUFHO0lBQ3JDLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFNBQVMsRUFBRSxXQUFXO0NBQ2QsQ0FBQztBQUlFLFFBQUEsYUFBYSxHQUFHO0lBQzNCLG9CQUFvQixFQUFFLHNCQUFzQjtJQUM1QyxPQUFPLEVBQUUsU0FBUztJQUNsQixPQUFPLEVBQUUsU0FBUztDQUNWLENBQUMifQ==
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1iZWhhdmlvdXIub3V0bGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb25maWcvZm9ybS1iZWhhdmlvdXIub3V0bGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFDVSxRQUFBLDBCQUEwQixHQUFHO0lBQ3hDLGdCQUFnQixFQUFFLGtCQUFrQjtJQUNwQyxhQUFhLEVBQUUsZUFBZTtDQUN0QixDQUFDO0FBS0UsUUFBQSx1QkFBdUIsR0FBRztJQUNyQyxRQUFRLEVBQUUsVUFBVTtJQUNwQixTQUFTLEVBQUUsV0FBVztJQUN0QixTQUFTLEVBQUUsV0FBVztJQUN0QixXQUFXLEVBQUUsYUFBYTtJQUMxQixhQUFhLEVBQUUsZUFBZTtJQUM5QixlQUFlLEVBQUUsaUJBQWlCO0NBQzFCLENBQUM7QUFJRSxRQUFBLGFBQWEsR0FBRztJQUMzQixvQkFBb0IsRUFBRSxzQkFBc0I7SUFDNUMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsT0FBTyxFQUFFLFNBQVM7Q0FDVixDQUFDIn0=
@@ -21,6 +21,7 @@ export declare class FormConstraintConfig implements FormConstraintConfigOutline
21
21
  */
22
22
  export declare class FormConstraintAuthorizationConfig implements FormConstraintAuthorizationConfigOutline {
23
23
  allowRoles?: string[];
24
+ denyRoles?: string[];
24
25
  }
25
26
  /**
26
27
  * The form component abstract class is the base for each real component definition class.
@@ -20,6 +20,7 @@ exports.FormConstraintConfig = FormConstraintConfig;
20
20
  */
21
21
  class FormConstraintAuthorizationConfig {
22
22
  allowRoles;
23
+ denyRoles;
23
24
  }
24
25
  exports.FormConstraintAuthorizationConfig = FormConstraintAuthorizationConfig;
25
26
  /**
@@ -33,4 +34,4 @@ class FormComponentDefinition {
33
34
  overrides;
34
35
  }
35
36
  exports.FormComponentDefinition = FormComponentDefinition;
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb21wb25lbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL2Zvcm0tY29tcG9uZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWFBLE1BQWEscUJBQXFCO0lBQzlCLElBQUksR0FBVyxFQUFFLENBQUM7SUFDbEIsV0FBVyxDQUFVO0lBQ3JCLE1BQU0sR0FBMkMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUM7Q0FDckU7QUFKRCxzREFJQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxvQkFBb0I7SUFDN0IsYUFBYSxDQUFxQztJQUNsRCxVQUFVLENBQW9CO0NBQ2pDO0FBSEQsb0RBR0M7QUFFRDs7R0FFRztBQUNILE1BQWEsaUNBQWlDO0lBQzFDLFVBQVUsQ0FBWTtDQUN6QjtBQUZELDhFQUVDO0FBR0Q7O0dBRUc7QUFDSCxNQUFzQix1QkFBdUI7SUFDbEMsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUlsQixXQUFXLENBQWtDO0lBQzdDLE1BQU0sQ0FBVTtJQUNoQixXQUFXLENBQStCO0lBQzFDLFNBQVMsQ0FBMkI7Q0FHOUM7QUFYRCwwREFXQyJ9
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb21wb25lbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL2Zvcm0tY29tcG9uZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWFBLE1BQWEscUJBQXFCO0lBQzlCLElBQUksR0FBVyxFQUFFLENBQUM7SUFDbEIsV0FBVyxDQUFVO0lBQ3JCLE1BQU0sR0FBMkMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUM7Q0FDckU7QUFKRCxzREFJQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxvQkFBb0I7SUFDN0IsYUFBYSxDQUFxQztJQUNsRCxVQUFVLENBQW9CO0NBQ2pDO0FBSEQsb0RBR0M7QUFFRDs7R0FFRztBQUNILE1BQWEsaUNBQWlDO0lBQzFDLFVBQVUsQ0FBWTtJQUN0QixTQUFTLENBQVk7Q0FDeEI7QUFIRCw4RUFHQztBQUdEOztHQUVHO0FBQ0gsTUFBc0IsdUJBQXVCO0lBQ2xDLElBQUksR0FBVyxFQUFFLENBQUM7SUFJbEIsV0FBVyxDQUFrQztJQUM3QyxNQUFNLENBQVU7SUFDaEIsV0FBVyxDQUErQjtJQUMxQyxTQUFTLENBQTJCO0NBRzlDO0FBWEQsMERBV0MifQ==
@@ -135,6 +135,14 @@ interface FormExpressionsTargetValidationGroupsConfigFrame {
135
135
  */
136
136
  target: FormExpressionsTargetValidationGroupsType;
137
137
  }
138
+ /**
139
+ * Union of all expression target identifiers.
140
+ *
141
+ * Shared by the component-scoped expressions feature and the form-level
142
+ * behaviour actions (`setUIProperty` / `setUIProperties` / `runTemplate`
143
+ * instruction lists) so both use the same target vocabulary.
144
+ */
145
+ export type FormExpressionsTargetType = FormExpressionsTargetModelValueType | FormExpressionsTargetModelDisabledType | FormExpressionsTargetLayoutPropertyType | FormExpressionsTargetComponentPropertyType | FormExpressionsTargetFieldVisibleType | FormExpressionsTargetFieldDisabledType | FormExpressionsTargetValidationGroupsType;
138
146
  export interface FormExpressionsOperationNoTargetConfigFrame extends FormExpressionsBaseConfigFrame, FormExpressionsOperationConfigFrame {
139
147
  }
140
148
  export interface FormExpressionsTemplateNoTargetConfigFrame extends FormExpressionsBaseConfigFrame, FormExpressionsTemplateConfigFrame {
@@ -213,6 +221,12 @@ export interface FormConstraintAuthorizationConfigFrame {
213
221
  * e.g. allowRoles: ['Admin', 'Librarians'],
214
222
  */
215
223
  allowRoles?: string[];
224
+ /**
225
+ * The form field will be excluded if the current user has any of these roles.
226
+ *
227
+ * e.g. denyRoles: ['Admin', 'Librarians'],
228
+ */
229
+ denyRoles?: string[];
216
230
  }
217
231
  export interface FormConstraintAuthorizationConfigOutline extends FormConstraintAuthorizationConfigFrame {
218
232
  }
@@ -5,6 +5,7 @@ import { FormConfigVisitorOutline } from './visitor/base.outline';
5
5
  import { KeyValueStringNested, KeyValueStringProperty } from './shared.outline';
6
6
  import { FormExpressionsConfigOutline } from './form-component.outline';
7
7
  import { FormBehaviourConfigFrame } from './form-behaviour.outline';
8
+ import { ValidationOperationDefinition } from '../validation/record-validation.model';
8
9
  /**
9
10
  * The form definition.
10
11
  * */
@@ -20,6 +21,8 @@ export declare class FormConfig implements FormConfigOutline {
20
21
  enabledValidationGroups?: string[];
21
22
  validators: FormValidatorConfig[];
22
23
  validationGroups?: FormValidationGroups;
24
+ validationOperations?: Record<string, ValidationOperationDefinition>;
25
+ serverSyncOnSave: 'always' | 'preserveLocalEdits' | 'never';
23
26
  componentDefinitions: AvailableFormComponentDefinitionOutlines[];
24
27
  debugValue: boolean;
25
28
  expressions?: FormExpressionsConfigOutline[];
@@ -19,6 +19,7 @@ class FormConfig {
19
19
  all: { description: 'Validate all fields with validators.', initialMembership: 'all' },
20
20
  none: { description: 'Validate none of the fields.', initialMembership: 'none' },
21
21
  };
22
+ serverSyncOnSave = 'preserveLocalEdits';
22
23
  componentDefinitions = [];
23
24
  debugValue = false;
24
25
  expressions;
@@ -33,4 +34,4 @@ class FormConfig {
33
34
  }
34
35
  }
35
36
  exports.FormConfig = FormConfig;
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb25maWcubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL2Zvcm0tY29uZmlnLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVFBOztLQUVLO0FBQ0wsTUFBYSxVQUFVO0lBQ2QsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUNsQixJQUFJLENBQVU7SUFDZCxjQUFjLENBQVU7SUFDeEIsS0FBSyxDQUFVO0lBQ2YsY0FBYyxDQUEwQjtJQUN4QyxjQUFjLENBQTBCO0lBQ3hDLHNCQUFzQixDQUF3QjtJQUM5QyxzQkFBc0IsQ0FBVTtJQUNoQyx1QkFBdUIsR0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLFVBQVUsR0FBMEIsRUFBRSxDQUFDO0lBQ3ZDLGdCQUFnQixHQUEwQjtRQUMvQyxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsc0NBQXNDLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFO1FBQ3RGLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSw4QkFBOEIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUU7S0FDakYsQ0FBQztJQUNLLG9CQUFvQixHQUErQyxFQUFFLENBQUM7SUFDdEUsVUFBVSxHQUFZLEtBQUssQ0FBQztJQUM1QixXQUFXLENBQWtDO0lBQ3BEOzs7T0FHRztJQUNJLFVBQVUsQ0FBOEI7SUFFeEMsZ0JBQWdCLENBQVk7SUFFbkMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFpQztRQUM1QyxNQUFNLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUNGO0FBN0JELGdDQTZCQyJ9
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb25maWcubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL2Zvcm0tY29uZmlnLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVNBOztLQUVLO0FBQ0wsTUFBYSxVQUFVO0lBQ2QsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUNsQixJQUFJLENBQVU7SUFDZCxjQUFjLENBQVU7SUFDeEIsS0FBSyxDQUFVO0lBQ2YsY0FBYyxDQUEwQjtJQUN4QyxjQUFjLENBQTBCO0lBQ3hDLHNCQUFzQixDQUF3QjtJQUM5QyxzQkFBc0IsQ0FBVTtJQUNoQyx1QkFBdUIsR0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLFVBQVUsR0FBMEIsRUFBRSxDQUFDO0lBQ3ZDLGdCQUFnQixHQUEwQjtRQUMvQyxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsc0NBQXNDLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFO1FBQ3RGLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSw4QkFBOEIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUU7S0FDakYsQ0FBQztJQUVLLGdCQUFnQixHQUE4QyxvQkFBb0IsQ0FBQztJQUNuRixvQkFBb0IsR0FBK0MsRUFBRSxDQUFDO0lBQ3RFLFVBQVUsR0FBWSxLQUFLLENBQUM7SUFDNUIsV0FBVyxDQUFrQztJQUNwRDs7O09BR0c7SUFDSSxVQUFVLENBQThCO0lBRXhDLGdCQUFnQixDQUFZO0lBRW5DLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBaUM7UUFDNUMsTUFBTSxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7Q0FDRjtBQS9CRCxnQ0ErQkMifQ==
@@ -4,6 +4,7 @@ import { CanVisit } from './visitor/base.outline';
4
4
  import { KeyValueStringNested, KeyValueStringProperty } from './shared.outline';
5
5
  import { FormExpressionsConfigOutline } from './form-component.outline';
6
6
  import { FormBehaviourConfigFrame } from './form-behaviour.outline';
7
+ import { ValidationOperationDefinition } from '../validation/record-validation.model';
7
8
  /**
8
9
  * The top-level form config interface that provides typing for the object literal and schema.
9
10
  *
@@ -75,6 +76,15 @@ export interface FormConfigFrame {
75
76
  * These are the only validation group names that can be used in the validator config.
76
77
  */
77
78
  validationGroups?: FormValidationGroups;
79
+ /**
80
+ * Server-owned validation intents supported by this form, keyed by the
81
+ * case-sensitive operation name sent by save actions.
82
+ */
83
+ validationOperations?: Record<string, ValidationOperationDefinition>;
84
+ /**
85
+ * Controls how server-side metadata returned after save is applied to the form.
86
+ */
87
+ serverSyncOnSave?: 'always' | 'preserveLocalEdits' | 'never';
78
88
  /**
79
89
  * TODO: the default layout component
80
90
  */