@yourself.create/ngx-form-designer 0.0.11 → 0.0.13

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.
@@ -24,6 +24,7 @@ export declare class FormEventRunner {
24
24
  constructor(engine: FormEngine, loggerOrOptions?: FormEventLogger | FormEventRunnerOptions);
25
25
  dispose(): void;
26
26
  private handleEvent;
27
+ private clearInactiveApiBindingDatasources;
27
28
  private executeAction;
28
29
  private handleSetValue;
29
30
  private handleApiAction;
@@ -39,4 +40,5 @@ export declare class FormEventRunner {
39
40
  private collectSourceValues;
40
41
  private resolveDatasourceId;
41
42
  private normalizeRowsForDatasource;
43
+ private isEmptyEventValue;
42
44
  }
@@ -11,7 +11,7 @@ export interface Html5ValidationProps {
11
11
  pattern?: string;
12
12
  }
13
13
  export type LogicOperator = 'AND' | 'OR';
14
- export type ConditionOperator = 'eq' | 'neq' | 'gt' | 'lt' | 'gte' | 'lte' | 'contains' | 'startsWith' | 'endsWith' | 'empty' | 'notEmpty' | 'truthy';
14
+ export type ConditionOperator = 'eq' | 'neq' | 'gt' | 'lt' | 'gte' | 'lte' | 'contains' | 'startsWith' | 'endsWith' | 'empty' | 'notEmpty' | 'truthy' | 'notTruthy';
15
15
  export type ConditionValueSource = 'literal' | 'field';
16
16
  export type RuleAction = 'visible' | 'hidden' | 'enable' | 'disable' | 'required' | 'optional';
17
17
  export type RuleSeverity = 'error' | 'warn';
@@ -218,6 +218,8 @@ export declare class DesignerStateService {
218
218
  private sameScope;
219
219
  private isScopePrefix;
220
220
  private cloneValue;
221
+ private cloneFieldForDuplication;
222
+ private createEventDatasourceId;
221
223
  private clampIndex;
222
224
  private isLayoutNode;
223
225
  private detachNode;
@@ -17,7 +17,7 @@ export declare class WidgetInspectorComponent {
17
17
  private readonly readOnlyFieldSnapshot;
18
18
  readonly inspectorField: import("@angular/core").Signal<FieldSchema>;
19
19
  currentStyle: import("@angular/core").Signal<Partial<StyleTokenSet>>;
20
- dataConsumer: import("@angular/core").Signal<"image" | "value" | "none" | "list">;
20
+ dataConsumer: import("@angular/core").Signal<"image" | "none" | "value" | "list">;
21
21
  bindingShape: import("@angular/core").Signal<import("@uch-web/ngx-form-designer").DataShape | null>;
22
22
  dataTargetPath: import("@angular/core").Signal<string>;
23
23
  getWidgetIcon(): string;
@@ -1,5 +1,5 @@
1
1
  import { EventEmitter, SimpleChanges } from '@angular/core';
2
- import { JsonFormRendererComponent, FormValidationResult, FormValueMap, FormSubmitResult } from './json-form-renderer.component';
2
+ import { JsonFormRendererComponent, FormValidationResult, FormValueMap, FormSubmitResult, type SeverityEvaluationMode } from './json-form-renderer.component';
3
3
  import type { DesignerEventApiDefinition, FieldDisplayLabel, UploadedFileRef, WidgetEventApiExecutor } from '../form-core/models';
4
4
  import type { FormJourneyProject } from '../form-core/form-journey.models';
5
5
  import { type FieldDataAccessMap, type RuntimeFieldDataAccessApi } from '../data/runtime-field-data-access-registry.service';
@@ -8,6 +8,7 @@ export type JourneyFormDataByPage = Record<string, FormValueMap>;
8
8
  export declare class FormJourneyViewerComponent {
9
9
  journey: FormJourneyProject;
10
10
  viewOnly: boolean;
11
+ severityEvaluationMode: SeverityEvaluationMode;
11
12
  eventApis: DesignerEventApiDefinition[];
12
13
  eventApiExecutor?: WidgetEventApiExecutor;
13
14
  initialValues?: Record<string, unknown>;
@@ -16,6 +17,7 @@ export declare class FormJourneyViewerComponent {
16
17
  fieldDataAccessApi?: RuntimeFieldDataAccessApi;
17
18
  formContentId?: string;
18
19
  formContentVersion?: string;
20
+ refreshKey?: unknown;
19
21
  formDataChange: EventEmitter<FormValueMap>;
20
22
  formDataByPageChange: EventEmitter<JourneyFormDataByPage>;
21
23
  formValidationChange: EventEmitter<FormValidationResult>;
@@ -40,6 +42,7 @@ export declare class FormJourneyViewerComponent {
40
42
  onSubmit(result: FormSubmitResult): void;
41
43
  private normalizeInitialValues;
42
44
  private normalizeInitialFieldLabels;
45
+ private resetViewerState;
43
46
  private toValueScope;
44
47
  private toFieldLabelScope;
45
48
  private mergeValueScope;
@@ -47,5 +50,5 @@ export declare class FormJourneyViewerComponent {
47
50
  private toJourneyValueMapByPage;
48
51
  private flattenJourneyValueMapByPage;
49
52
  static ɵfac: i0.ɵɵFactoryDeclaration<FormJourneyViewerComponent, never>;
50
- static ɵcmp: i0.ɵɵComponentDeclaration<FormJourneyViewerComponent, "app-form-journey-viewer", never, { "journey": { "alias": "journey"; "required": true; }; "viewOnly": { "alias": "viewOnly"; "required": false; }; "eventApis": { "alias": "eventApis"; "required": false; }; "eventApiExecutor": { "alias": "eventApiExecutor"; "required": false; }; "initialValues": { "alias": "initialValues"; "required": false; }; "initialFieldLabels": { "alias": "initialFieldLabels"; "required": false; }; "fieldDataAccessMap": { "alias": "fieldDataAccessMap"; "required": false; }; "fieldDataAccessApi": { "alias": "fieldDataAccessApi"; "required": false; }; "formContentId": { "alias": "formContentId"; "required": false; }; "formContentVersion": { "alias": "formContentVersion"; "required": false; }; }, { "formDataChange": "formDataChange"; "formDataByPageChange": "formDataByPageChange"; "formValidationChange": "formValidationChange"; "uploadedFilesChange": "uploadedFilesChange"; "submit": "submit"; "activePageIdChange": "activePageIdChange"; }, never, never, true, never>;
53
+ static ɵcmp: i0.ɵɵComponentDeclaration<FormJourneyViewerComponent, "app-form-journey-viewer", never, { "journey": { "alias": "journey"; "required": true; }; "viewOnly": { "alias": "viewOnly"; "required": false; }; "severityEvaluationMode": { "alias": "severityEvaluationMode"; "required": false; }; "eventApis": { "alias": "eventApis"; "required": false; }; "eventApiExecutor": { "alias": "eventApiExecutor"; "required": false; }; "initialValues": { "alias": "initialValues"; "required": false; }; "initialFieldLabels": { "alias": "initialFieldLabels"; "required": false; }; "fieldDataAccessMap": { "alias": "fieldDataAccessMap"; "required": false; }; "fieldDataAccessApi": { "alias": "fieldDataAccessApi"; "required": false; }; "formContentId": { "alias": "formContentId"; "required": false; }; "formContentVersion": { "alias": "formContentVersion"; "required": false; }; "refreshKey": { "alias": "refreshKey"; "required": false; }; }, { "formDataChange": "formDataChange"; "formDataByPageChange": "formDataByPageChange"; "formValidationChange": "formValidationChange"; "uploadedFilesChange": "uploadedFilesChange"; "submit": "submit"; "activePageIdChange": "activePageIdChange"; }, never, never, true, never>;
51
54
  }
@@ -1,6 +1,6 @@
1
1
  import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
2
  import { DesignerEventApiDefinition, FieldDisplayLabel, FormSchema, UploadedFileRef, WidgetEventApiExecutor } from '../../form-core/models';
3
- import { JsonFormRendererComponent, FormSubmitResult, FormValidationResult, FormValueMap, GroupedFormValues, CombinedFormValues } from '../json-form-renderer.component';
3
+ import { JsonFormRendererComponent, FormSubmitResult, FormValidationResult, FormValueMap, GroupedFormValues, CombinedFormValues, type SeverityEvaluationMode } from '../json-form-renderer.component';
4
4
  import { FormJourneyViewerComponent, type JourneyFormDataByPage } from '../form-journey-viewer.component';
5
5
  import { type FieldDataAccessMap, type RuntimeFieldDataAccessApi } from '../../data/runtime-field-data-access-registry.service';
6
6
  import type { FormJourneyProject } from '../../form-core/form-journey.models';
@@ -20,12 +20,14 @@ export declare class FormViewerComponent implements OnInit, OnDestroy {
20
20
  get dataUsesFieldNameKeys(): boolean;
21
21
  options: FormViewerOptions;
22
22
  viewOnly: boolean;
23
+ severityEvaluationMode: SeverityEvaluationMode;
23
24
  eventApis: DesignerEventApiDefinition[];
24
25
  eventApiExecutor?: WidgetEventApiExecutor;
25
26
  fieldDataAccessMap?: FieldDataAccessMap;
26
27
  fieldDataAccessApi?: RuntimeFieldDataAccessApi;
27
28
  formContentId?: string;
28
29
  formContentVersion?: string;
30
+ refreshKey?: unknown;
29
31
  formDataChange: EventEmitter<FormValueMap>;
30
32
  formDataByPageChange: EventEmitter<JourneyFormDataByPage>;
31
33
  formValidationChange: EventEmitter<FormValidationResult>;
@@ -74,5 +76,5 @@ export declare class FormViewerComponent implements OnInit, OnDestroy {
74
76
  private isFieldIdValue;
75
77
  private isRecord;
76
78
  static ɵfac: i0.ɵɵFactoryDeclaration<FormViewerComponent, never>;
77
- static ɵcmp: i0.ɵɵComponentDeclaration<FormViewerComponent, "app-form-viewer", never, { "schema": { "alias": "schema"; "required": false; }; "journey": { "alias": "journey"; "required": false; }; "data": { "alias": "data"; "required": false; }; "dataUsesFieldNameKeys": { "alias": "dataUsesFieldNameKeys"; "required": false; }; "options": { "alias": "options"; "required": false; }; "viewOnly": { "alias": "viewOnly"; "required": false; }; "eventApis": { "alias": "eventApis"; "required": false; }; "eventApiExecutor": { "alias": "eventApiExecutor"; "required": false; }; "fieldDataAccessMap": { "alias": "fieldDataAccessMap"; "required": false; }; "fieldDataAccessApi": { "alias": "fieldDataAccessApi"; "required": false; }; "formContentId": { "alias": "formContentId"; "required": false; }; "formContentVersion": { "alias": "formContentVersion"; "required": false; }; }, { "formDataChange": "formDataChange"; "formDataByPageChange": "formDataByPageChange"; "formValidationChange": "formValidationChange"; "uploadedFilesChange": "uploadedFilesChange"; "submit": "submit"; "activePageIdChange": "activePageIdChange"; }, never, never, true, never>;
79
+ static ɵcmp: i0.ɵɵComponentDeclaration<FormViewerComponent, "app-form-viewer", never, { "schema": { "alias": "schema"; "required": false; }; "journey": { "alias": "journey"; "required": false; }; "data": { "alias": "data"; "required": false; }; "dataUsesFieldNameKeys": { "alias": "dataUsesFieldNameKeys"; "required": false; }; "options": { "alias": "options"; "required": false; }; "viewOnly": { "alias": "viewOnly"; "required": false; }; "severityEvaluationMode": { "alias": "severityEvaluationMode"; "required": false; }; "eventApis": { "alias": "eventApis"; "required": false; }; "eventApiExecutor": { "alias": "eventApiExecutor"; "required": false; }; "fieldDataAccessMap": { "alias": "fieldDataAccessMap"; "required": false; }; "fieldDataAccessApi": { "alias": "fieldDataAccessApi"; "required": false; }; "formContentId": { "alias": "formContentId"; "required": false; }; "formContentVersion": { "alias": "formContentVersion"; "required": false; }; "refreshKey": { "alias": "refreshKey"; "required": false; }; }, { "formDataChange": "formDataChange"; "formDataByPageChange": "formDataByPageChange"; "formValidationChange": "formValidationChange"; "uploadedFilesChange": "uploadedFilesChange"; "submit": "submit"; "activePageIdChange": "activePageIdChange"; }, never, never, true, never>;
78
80
  }
@@ -15,6 +15,7 @@ export interface FormFieldValue {
15
15
  export type FormValueMap = Record<string, FormFieldValue>;
16
16
  export type GroupedFormValues = Record<string, FormValueMap>;
17
17
  export type CombinedFormValues = Record<string, FormFieldValue | FormValueMap>;
18
+ export type SeverityEvaluationMode = 'rule-failed' | 'rule-matched';
18
19
  export interface FormValidationResult {
19
20
  errors: Record<string, string[]>;
20
21
  isValid: boolean;
@@ -37,6 +38,7 @@ export interface FormFieldValidatorState {
37
38
  source: 'required' | 'html5' | 'rule';
38
39
  active: boolean;
39
40
  valid: boolean;
41
+ isSeverityTriggered?: boolean;
40
42
  value?: unknown;
41
43
  message?: string;
42
44
  severity?: RuleSeverity;
@@ -68,10 +70,12 @@ export declare class JsonFormRendererComponent implements OnInit, OnChanges, OnD
68
70
  reason?: string;
69
71
  }>;
70
72
  uploadOnSubmit: boolean;
73
+ severityEvaluationMode: SeverityEvaluationMode;
71
74
  fieldDataAccessMap?: FieldDataAccessMap;
72
75
  fieldDataAccessApi?: RuntimeFieldDataAccessApi;
73
76
  formContentId?: string;
74
77
  formContentVersion?: string;
78
+ refreshKey?: unknown;
75
79
  valueChange: EventEmitter<FormValueMap>;
76
80
  groupedValueChange: EventEmitter<GroupedFormValues>;
77
81
  combinedValueChange: EventEmitter<CombinedFormValues>;
@@ -107,6 +111,7 @@ export declare class JsonFormRendererComponent implements OnInit, OnChanges, OnD
107
111
  private buildFieldValidationState;
108
112
  private describeFieldValidators;
109
113
  private hasRequiredValidation;
114
+ private isRuleSeverityTriggered;
110
115
  private getRuleOutcomes;
111
116
  private describeRuleName;
112
117
  private getRuleValidationMessage;
@@ -136,5 +141,5 @@ export declare class JsonFormRendererComponent implements OnInit, OnChanges, OnD
136
141
  private isGroupValue;
137
142
  private isUploadedFileRef;
138
143
  static ɵfac: i0.ɵɵFactoryDeclaration<JsonFormRendererComponent, never>;
139
- static ɵcmp: i0.ɵɵComponentDeclaration<JsonFormRendererComponent, "app-json-form-renderer", never, { "schema": { "alias": "schema"; "required": false; }; "initialValues": { "alias": "initialValues"; "required": false; }; "initialFieldLabels": { "alias": "initialFieldLabels"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "device": { "alias": "device"; "required": false; }; "showLayoutGuides": { "alias": "showLayoutGuides"; "required": false; }; "breakpoint": { "alias": "breakpoint"; "required": false; }; "eventLogger": { "alias": "eventLogger"; "required": false; }; "eventApis": { "alias": "eventApis"; "required": false; }; "eventApiExecutor": { "alias": "eventApiExecutor"; "required": false; }; "navigateToPage": { "alias": "navigateToPage"; "required": false; }; "uploadOnSubmit": { "alias": "uploadOnSubmit"; "required": false; }; "fieldDataAccessMap": { "alias": "fieldDataAccessMap"; "required": false; }; "fieldDataAccessApi": { "alias": "fieldDataAccessApi"; "required": false; }; "formContentId": { "alias": "formContentId"; "required": false; }; "formContentVersion": { "alias": "formContentVersion"; "required": false; }; }, { "valueChange": "valueChange"; "groupedValueChange": "groupedValueChange"; "combinedValueChange": "combinedValueChange"; "validationChange": "validationChange"; "uploadedFilesChange": "uploadedFilesChange"; "formSubmit": "formSubmit"; }, never, never, true, never>;
144
+ static ɵcmp: i0.ɵɵComponentDeclaration<JsonFormRendererComponent, "app-json-form-renderer", never, { "schema": { "alias": "schema"; "required": false; }; "initialValues": { "alias": "initialValues"; "required": false; }; "initialFieldLabels": { "alias": "initialFieldLabels"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "device": { "alias": "device"; "required": false; }; "showLayoutGuides": { "alias": "showLayoutGuides"; "required": false; }; "breakpoint": { "alias": "breakpoint"; "required": false; }; "eventLogger": { "alias": "eventLogger"; "required": false; }; "eventApis": { "alias": "eventApis"; "required": false; }; "eventApiExecutor": { "alias": "eventApiExecutor"; "required": false; }; "navigateToPage": { "alias": "navigateToPage"; "required": false; }; "uploadOnSubmit": { "alias": "uploadOnSubmit"; "required": false; }; "severityEvaluationMode": { "alias": "severityEvaluationMode"; "required": false; }; "fieldDataAccessMap": { "alias": "fieldDataAccessMap"; "required": false; }; "fieldDataAccessApi": { "alias": "fieldDataAccessApi"; "required": false; }; "formContentId": { "alias": "formContentId"; "required": false; }; "formContentVersion": { "alias": "formContentVersion"; "required": false; }; "refreshKey": { "alias": "refreshKey"; "required": false; }; }, { "valueChange": "valueChange"; "groupedValueChange": "groupedValueChange"; "combinedValueChange": "combinedValueChange"; "validationChange": "validationChange"; "uploadedFilesChange": "uploadedFilesChange"; "formSubmit": "formSubmit"; }, never, never, true, never>;
140
145
  }
@@ -53,6 +53,7 @@ export declare class TextFieldWidgetComponent implements OnInit, OnDestroy {
53
53
  get error(): string | null;
54
54
  private syncEnabledState;
55
55
  private refreshValueFromDataSource;
56
+ private hasResolvedRows;
56
57
  private clearResolvedValue;
57
58
  private hasSelectedRowMatch;
58
59
  private getDataConfigSignature;
@@ -26,6 +26,7 @@ export declare class InlineQuillEditorComponent implements AfterViewInit, OnChan
26
26
  private applyEditorAppearance;
27
27
  private focusToEnd;
28
28
  onEditorMouseDown(event: MouseEvent): void;
29
+ onEditorClick(event: MouseEvent): void;
29
30
  onEditorPointerDown(event: PointerEvent): void;
30
31
  onEditorTouchStart(event: TouchEvent): void;
31
32
  onEditorDragStart(event: DragEvent): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yourself.create/ngx-form-designer",
3
- "version": "0.0.11",
3
+ "version": "0.0.13",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.0.0",
6
6
  "@angular/core": "^19.0.0",