ui-core-abv 0.7.7 → 0.7.9

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.
@@ -14,6 +14,7 @@ export declare class UicDynamicFormComponent implements OnDestroy {
14
14
  private readonly fieldsSignal;
15
15
  private readonly formSignal;
16
16
  private readonly disabledSignal;
17
+ private readonly extValStatesSignal;
17
18
  private readonly formState;
18
19
  private readonly http;
19
20
  private readonly alertS;
@@ -31,6 +32,8 @@ export declare class UicDynamicFormComponent implements OnDestroy {
31
32
  get form(): FormGroup;
32
33
  set disabled(value: boolean);
33
34
  get disabled(): boolean;
35
+ set externalValidationStates(v: Record<string, 'loading' | 'valid' | 'invalid'> | undefined);
36
+ fieldBlur: import("@angular/core").OutputEmitterRef<string>;
34
37
  voiceToTextSilenceMs: number;
35
38
  cols: number;
36
39
  fileUidResolverFn?: (fileUid: string, fileName: string, fieldLabel: string) => void;
@@ -45,6 +48,7 @@ export declare class UicDynamicFormComponent implements OnDestroy {
45
48
  constructor(ngZone: NgZone);
46
49
  ngOnDestroy(): void;
47
50
  getGridColumn(field: FormField): string;
51
+ onFieldContainerFocusout(field: FormField, event: FocusEvent): void;
48
52
  private getValueByFieldName;
49
53
  private syncFieldEnabledState;
50
54
  private getClearValue;
@@ -75,6 +79,6 @@ export declare class UicDynamicFormComponent implements OnDestroy {
75
79
  private scheduleVoiceStop;
76
80
  voiceToText(target: HTMLTextAreaElement, fieldName: string): void;
77
81
  static ɵfac: i0.ɵɵFactoryDeclaration<UicDynamicFormComponent, never>;
78
- static ɵcmp: i0.ɵɵComponentDeclaration<UicDynamicFormComponent, "ui-dynamic-form", never, { "fields": { "alias": "fields"; "required": false; }; "isSubForm": { "alias": "isSubForm"; "required": false; }; "form": { "alias": "form"; "required": true; }; "disabled": { "alias": "disabled"; "required": false; }; "voiceToTextSilenceMs": { "alias": "voiceToTextSilenceMs"; "required": false; }; "cols": { "alias": "cols"; "required": false; }; "fileUidResolverFn": { "alias": "fileUidResolverFn"; "required": false; }; "selectOptionsResolver": { "alias": "selectOptionsResolver"; "required": false; }; "parentFormValues": { "alias": "parentFormValues"; "required": false; }; }, {}, never, never, true, never>;
82
+ static ɵcmp: i0.ɵɵComponentDeclaration<UicDynamicFormComponent, "ui-dynamic-form", never, { "fields": { "alias": "fields"; "required": false; }; "isSubForm": { "alias": "isSubForm"; "required": false; }; "form": { "alias": "form"; "required": true; }; "disabled": { "alias": "disabled"; "required": false; }; "externalValidationStates": { "alias": "externalValidationStates"; "required": false; }; "voiceToTextSilenceMs": { "alias": "voiceToTextSilenceMs"; "required": false; }; "cols": { "alias": "cols"; "required": false; }; "fileUidResolverFn": { "alias": "fileUidResolverFn"; "required": false; }; "selectOptionsResolver": { "alias": "selectOptionsResolver"; "required": false; }; "parentFormValues": { "alias": "parentFormValues"; "required": false; }; }, { "fieldBlur": "fieldBlur"; }, never, never, true, never>;
79
83
  }
80
84
  export {};
@@ -1,7 +1,7 @@
1
1
  import { EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
2
2
  import { FormGroup } from '@angular/forms';
3
3
  import { AppSelectOption } from '../../inputs/select/select.component';
4
- import { ComputedFieldResolver, FormField, FormResult, FormSchema, SelectOptionsResolver, SelectOptionsSource, uicFormValuesRecord } from '../form.models';
4
+ import { ComputedFieldResolver, ExternalValidatorResolver, FormField, FormResult, FormSchema, SelectOptionsResolver, SelectOptionsSource, uicFormValuesRecord } from '../form.models';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class UicFormWrapperComponent implements OnInit, OnChanges, OnDestroy {
7
7
  private readonly fb;
@@ -18,6 +18,7 @@ export declare class UicFormWrapperComponent implements OnInit, OnChanges, OnDes
18
18
  externalData: Record<string, AppSelectOption[]>;
19
19
  selectOptionsResolver?: SelectOptionsResolver;
20
20
  computedFieldResolver?: ComputedFieldResolver;
21
+ externalValidatorResolver?: ExternalValidatorResolver;
21
22
  loading: boolean;
22
23
  disabled: boolean;
23
24
  showButtons: boolean;
@@ -33,6 +34,9 @@ export declare class UicFormWrapperComponent implements OnInit, OnChanges, OnDes
33
34
  source: SelectOptionsSource;
34
35
  error: unknown;
35
36
  }>;
37
+ externalValidationStates: Record<string, 'loading' | 'valid' | 'invalid'>;
38
+ private readonly externalValidationSubs;
39
+ private readonly externalValidationLastValue;
36
40
  private formValueSub;
37
41
  private readonly optionSourceSubs;
38
42
  private readonly optionSourceDependencyValueByField;
@@ -80,6 +84,15 @@ export declare class UicFormWrapperComponent implements OnInit, OnChanges, OnDes
80
84
  private safeStringify;
81
85
  private clearOptionSourceSubscriptions;
82
86
  private clearComputedFieldSubs;
87
+ private clearExternalValidationSubs;
88
+ onFieldBlur(fieldName: string): void;
89
+ private cancelStaleExternalValidations;
90
+ private updateExternalValidationState;
91
+ private clearExternalValidationError;
92
+ private setExternalValidationError;
93
+ private enableFieldForCorrection;
94
+ private restoreFieldDisabledState;
95
+ private toValidationObservable;
83
96
  /**
84
97
  * Recalcula todos los campos autocalculados (computeFn o computedSource).
85
98
  * Se llama en cada valueChanges y al inicializar el formulario.
@@ -111,5 +124,5 @@ export declare class UicFormWrapperComponent implements OnInit, OnChanges, OnDes
111
124
  private setNestedValue;
112
125
  private syncEffectiveSchema;
113
126
  static ɵfac: i0.ɵɵFactoryDeclaration<UicFormWrapperComponent, never>;
114
- static ɵcmp: i0.ɵɵComponentDeclaration<UicFormWrapperComponent, "ui-form-wrapper", never, { "schema": { "alias": "schema"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "cols": { "alias": "cols"; "required": false; }; "externalData": { "alias": "externalData"; "required": false; }; "selectOptionsResolver": { "alias": "selectOptionsResolver"; "required": false; }; "computedFieldResolver": { "alias": "computedFieldResolver"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "showButtons": { "alias": "showButtons"; "required": false; }; "fillSelects": { "alias": "fillSelects"; "required": false; }; "initialValues": { "alias": "initialValues"; "required": false; }; "focusFieldName": { "alias": "focusFieldName"; "required": false; }; "focusFieldTrigger": { "alias": "focusFieldTrigger"; "required": false; }; "fileUidResolverFn": { "alias": "fileUidResolverFn"; "required": false; }; }, { "formSubmit": "formSubmit"; "formChange": "formChange"; "optionsSourceError": "optionsSourceError"; }, never, never, true, never>;
127
+ static ɵcmp: i0.ɵɵComponentDeclaration<UicFormWrapperComponent, "ui-form-wrapper", never, { "schema": { "alias": "schema"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "cols": { "alias": "cols"; "required": false; }; "externalData": { "alias": "externalData"; "required": false; }; "selectOptionsResolver": { "alias": "selectOptionsResolver"; "required": false; }; "computedFieldResolver": { "alias": "computedFieldResolver"; "required": false; }; "externalValidatorResolver": { "alias": "externalValidatorResolver"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "showButtons": { "alias": "showButtons"; "required": false; }; "fillSelects": { "alias": "fillSelects"; "required": false; }; "initialValues": { "alias": "initialValues"; "required": false; }; "focusFieldName": { "alias": "focusFieldName"; "required": false; }; "focusFieldTrigger": { "alias": "focusFieldTrigger"; "required": false; }; "fileUidResolverFn": { "alias": "fileUidResolverFn"; "required": false; }; }, { "formSubmit": "formSubmit"; "formChange": "formChange"; "optionsSourceError": "optionsSourceError"; }, never, never, true, never>;
115
128
  }
@@ -57,6 +57,14 @@ export interface ComputedFieldContext {
57
57
  * Puede retornar el valor directamente, una Promise o un Observable.
58
58
  */
59
59
  export type ComputedFieldResolver = (source: ComputedFieldSource, context: ComputedFieldContext) => any | Promise<any> | Observable<any>;
60
+ export interface ExternalValidationSource {
61
+ /** Clave del validador externo registrado por el consumidor */
62
+ key: string;
63
+ }
64
+ export type ExternalValidatorResolver = (source: ExternalValidationSource, ctx: {
65
+ value: any;
66
+ values: uicFormValuesRecord;
67
+ }) => boolean | string | null | Promise<boolean | string | null> | Observable<boolean | string | null>;
60
68
  export interface FormField {
61
69
  name: string;
62
70
  type: FieldType;
@@ -76,6 +84,7 @@ export interface FormField {
76
84
  internalColorScale?: number[];
77
85
  internalColorScaleOrder?: 'asc' | 'desc';
78
86
  selectSearchEnabled?: boolean;
87
+ showSubtitle?: boolean;
79
88
  selectNullable?: boolean;
80
89
  placeholder?: string;
81
90
  minLength?: number;
@@ -117,6 +126,7 @@ export interface FormField {
117
126
  * y retorna el valor calculado. No requiere `computedFieldResolver` en el wrapper.
118
127
  */
119
128
  computeFn?: (values: uicFormValuesRecord) => any;
129
+ externalValidation?: ExternalValidationSource;
120
130
  iaValidation?: boolean;
121
131
  iaValidationPrompt?: string;
122
132
  repeaterFields?: FormField[];
@@ -156,6 +166,7 @@ export interface FormResult {
156
166
  form: uicFormValuesRecord | null;
157
167
  }
158
168
  export type uicFormValuesRecord = Record<string, any>;
169
+ export declare const EXTERNAL_VALIDATION_FORM_FIELDS: FormField[];
159
170
  export declare const COMPUTED_FORM_FIELDS: FormField[];
160
171
  export declare const BASE_FORM_FIELDS: FormField[];
161
172
  export declare const LAYOUT_FORM_FIELDS: FormField[];
@@ -41,6 +41,10 @@ export declare class UicMultySelectComponent extends base {
41
41
  get isAllSelected(): boolean;
42
42
  get hasSelection(): boolean;
43
43
  get selectedSummaryText(): string;
44
+ get groupedOptions(): {
45
+ label: string | null;
46
+ options: AppSelectOption[];
47
+ }[];
44
48
  dropdownTemplate: TemplateRef<any>;
45
49
  private overlayRef;
46
50
  overlayPositions: ConnectedPosition[];
@@ -46,6 +46,13 @@ export declare class UicSelectComponent extends base {
46
46
  get filteredOptions(): AppSelectOption[];
47
47
  get showNullableOption(): boolean;
48
48
  get keyboardOptions(): (AppSelectOption | null)[];
49
+ get groupedFilteredOptions(): {
50
+ label: string | null;
51
+ options: {
52
+ option: AppSelectOption;
53
+ flatIndex: number;
54
+ }[];
55
+ }[];
49
56
  openList(): void;
50
57
  selectOption(option: AppSelectOption | null): void;
51
58
  closeList(): void;
@@ -76,5 +83,6 @@ export interface AppSelectOption {
76
83
  icon?: string;
77
84
  iconColor?: string;
78
85
  disabled?: boolean;
86
+ group?: string;
79
87
  }
80
88
  export {};
@@ -14,6 +14,7 @@ export declare class BlockEditorComponent {
14
14
  } | null>;
15
15
  selectedFieldId: import("@angular/core").InputSignal<string | null>;
16
16
  selectedSubFieldCode: import("@angular/core").InputSignal<string | null>;
17
+ selectedSubFieldParentCode: import("@angular/core").InputSignal<string | null>;
17
18
  visibilityParentFieldCodes: Set<string>;
18
19
  excludeSubFieldTypes: FieldType[];
19
20
  private expandedRepeaters;
@@ -30,6 +31,7 @@ export declare class BlockEditorComponent {
30
31
  private generateSubFieldCode;
31
32
  changeTitle(newTitle: string): void;
32
33
  changeSubtitle(newSubtitle: string): void;
34
+ changeMessage(newMessage: string): void;
33
35
  addField(newFieldType: FieldConfig): void;
34
36
  requestDeleteBlock(e: Event): void;
35
37
  deleteField(fieldCode: string, e: Event): void;
@@ -37,5 +39,5 @@ export declare class BlockEditorComponent {
37
39
  isBlockVisibilityParent(): boolean;
38
40
  reorderFields(event: CdkDragDrop<EditableField[]>): void;
39
41
  static ɵfac: i0.ɵɵFactoryDeclaration<BlockEditorComponent, never>;
40
- static ɵcmp: i0.ɵɵComponentDeclaration<BlockEditorComponent, "lib-block-editor", never, { "block": { "alias": "block"; "required": false; "isSignal": true; }; "selectedFieldId": { "alias": "selectedFieldId"; "required": false; "isSignal": true; }; "selectedSubFieldCode": { "alias": "selectedSubFieldCode"; "required": false; "isSignal": true; }; "visibilityParentFieldCodes": { "alias": "visibilityParentFieldCodes"; "required": false; }; }, { "blockChange": "blockChange"; "addFieldRequest": "addFieldRequest"; "deleteBlock": "deleteBlock"; "notifySelectedField": "notifySelectedField"; "notifySelectedSubField": "notifySelectedSubField"; }, never, never, true, never>;
42
+ static ɵcmp: i0.ɵɵComponentDeclaration<BlockEditorComponent, "lib-block-editor", never, { "block": { "alias": "block"; "required": false; "isSignal": true; }; "selectedFieldId": { "alias": "selectedFieldId"; "required": false; "isSignal": true; }; "selectedSubFieldCode": { "alias": "selectedSubFieldCode"; "required": false; "isSignal": true; }; "selectedSubFieldParentCode": { "alias": "selectedSubFieldParentCode"; "required": false; "isSignal": true; }; "visibilityParentFieldCodes": { "alias": "visibilityParentFieldCodes"; "required": false; }; }, { "blockChange": "blockChange"; "addFieldRequest": "addFieldRequest"; "deleteBlock": "deleteBlock"; "notifySelectedField": "notifySelectedField"; "notifySelectedSubField": "notifySelectedSubField"; }, never, never, true, never>;
41
43
  }
@@ -11,6 +11,7 @@ export declare class FieldEditorComponent {
11
11
  hasExternalOptionsSource: import("@angular/core").Signal<boolean>;
12
12
  isRepeater: import("@angular/core").Signal<boolean>;
13
13
  isComputed: import("@angular/core").Signal<boolean>;
14
+ hasExternalValidation: import("@angular/core").Signal<boolean>;
14
15
  config: import("@angular/core").InputSignal<EditableField>;
15
16
  focusRequiredField: import("@angular/core").InputSignal<boolean>;
16
17
  isSubField: import("@angular/core").InputSignal<boolean>;
@@ -19,6 +20,7 @@ export declare class FieldEditorComponent {
19
20
  editingRuleIndex: import("@angular/core").WritableSignal<number>;
20
21
  isAddingNewRule: import("@angular/core").WritableSignal<boolean>;
21
22
  fieldChange: import("@angular/core").OutputEmitterRef<FormField>;
23
+ nameManuallySet: import("@angular/core").OutputEmitterRef<void>;
22
24
  localField: import("@angular/core").WritableSignal<FormField>;
23
25
  requiredFields: FormField[];
24
26
  optionsSourceFields: import("@angular/core").Signal<FormField[]>;
@@ -27,6 +29,7 @@ export declare class FieldEditorComponent {
27
29
  styleFields: import("@angular/core").Signal<FormField[]>;
28
30
  branchDraftValues: import("@angular/core").WritableSignal<uicFormValuesRecord>;
29
31
  branchFields: import("@angular/core").Signal<FormField[]>;
32
+ externalValidationFields: import("@angular/core").Signal<FormField[]>;
30
33
  initialValues: import("@angular/core").Signal<FormField>;
31
34
  branchInitialValues: import("@angular/core").Signal<uicFormValuesRecord>;
32
35
  fieldType: import("@angular/core").Signal<import("ui-core-abv").FieldConfig | undefined>;
@@ -39,6 +42,7 @@ export declare class FieldEditorComponent {
39
42
  cancelEditingRule(): void;
40
43
  removeRule(index: number): void;
41
44
  private clearDraftRule;
45
+ private normalizeLabelToName;
42
46
  updateFieldValues(fr: uicFormValuesRecord): void;
43
47
  updateOptions(options: AppSelectOption[]): void;
44
48
  private getDependencyFieldLabel;
@@ -56,6 +60,7 @@ export declare class FieldEditorComponent {
56
60
  private ruleToBranchValues;
57
61
  private isValueLessVisibilityOperator;
58
62
  private buildComputedSourceFields;
63
+ private buildExternalValidationFields;
59
64
  static ɵfac: i0.ɵɵFactoryDeclaration<FieldEditorComponent, never>;
60
- static ɵcmp: i0.ɵɵComponentDeclaration<FieldEditorComponent, "lib-field-editor", never, { "config": { "alias": "config"; "required": true; "isSignal": true; }; "focusRequiredField": { "alias": "focusRequiredField"; "required": false; "isSignal": true; }; "isSubField": { "alias": "isSubField"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "fieldChange": "fieldChange"; }, never, never, true, never>;
65
+ static ɵcmp: i0.ɵɵComponentDeclaration<FieldEditorComponent, "lib-field-editor", never, { "config": { "alias": "config"; "required": true; "isSignal": true; }; "focusRequiredField": { "alias": "focusRequiredField"; "required": false; "isSignal": true; }; "isSubField": { "alias": "isSubField"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "fieldChange": "fieldChange"; "nameManuallySet": "nameManuallySet"; }, never, never, true, never>;
61
66
  }
@@ -1,4 +1,4 @@
1
- import { FieldConfig, FormField, FormSchema, SelectOptionsResolver, ComputedFieldResolver } from '../dynamic-form/form.models';
1
+ import { FieldConfig, FormField, FormSchema, SelectOptionsResolver, ComputedFieldResolver, ExternalValidatorResolver } from '../dynamic-form/form.models';
2
2
  import { AppSelectOption } from '../inputs/select/select.component';
3
3
  import * as i0 from "@angular/core";
4
4
  export type EditableField = {
@@ -9,6 +9,7 @@ export type EditableField = {
9
9
  field?: FieldConfig;
10
10
  fieldData: FormField;
11
11
  repeaterSubFields?: EditableField[];
12
+ nameManuallySet?: boolean;
12
13
  };
13
14
  export type EditableBlock = {
14
15
  id?: number | null;
@@ -16,6 +17,7 @@ export type EditableBlock = {
16
17
  order: number;
17
18
  title?: string;
18
19
  subtitle?: string;
20
+ message?: string;
19
21
  fields: EditableField[];
20
22
  };
21
23
  export type EditableForm = {
@@ -34,8 +36,10 @@ export declare class UicUserFormbuilderComponent {
34
36
  formTitle: string;
35
37
  optionSources: AppSelectOption[];
36
38
  computedSources: AppSelectOption[];
39
+ validationSources: AppSelectOption[];
37
40
  selectOptionsResolver?: SelectOptionsResolver;
38
41
  computedFieldResolver?: ComputedFieldResolver;
42
+ externalValidatorResolver?: ExternalValidatorResolver;
39
43
  readOnly: import("@angular/core").InputSignal<boolean>;
40
44
  editableFormInput: import("@angular/core").InputSignal<EditableForm>;
41
45
  submitFormRequest: import("@angular/core").OutputEmitterRef<EditableForm>;
@@ -73,11 +77,14 @@ export declare class UicUserFormbuilderComponent {
73
77
  parentCode: string;
74
78
  subField: EditableField;
75
79
  } | null): void;
80
+ onFieldNameManuallySet(): void;
81
+ onSubFieldNameManuallySet(): void;
76
82
  onSubFieldChange(updatedFieldData: FormField): void;
77
83
  startPropertiesResize(event: MouseEvent): void;
78
84
  onPropertiesResize(event: MouseEvent): void;
79
85
  stopPropertiesResize(): void;
80
86
  printForm(): void;
87
+ copySchemaToClipboard(): void;
81
88
  submitForm(): void;
82
89
  private getDuplicatedFieldName;
83
90
  enableEditMode(): void;
@@ -92,7 +99,7 @@ export declare class UicUserFormbuilderComponent {
92
99
  private prepareFieldDataForSubmit;
93
100
  private deepClone;
94
101
  static ɵfac: i0.ɵɵFactoryDeclaration<UicUserFormbuilderComponent, never>;
95
- static ɵcmp: i0.ɵɵComponentDeclaration<UicUserFormbuilderComponent, "ui-user-formbuilder", never, { "disabled": { "alias": "disabled"; "required": false; }; "formTitle": { "alias": "formTitle"; "required": false; }; "optionSources": { "alias": "optionSources"; "required": false; }; "computedSources": { "alias": "computedSources"; "required": false; }; "selectOptionsResolver": { "alias": "selectOptionsResolver"; "required": false; }; "computedFieldResolver": { "alias": "computedFieldResolver"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "editableFormInput": { "alias": "editableForm"; "required": false; "isSignal": true; }; }, { "submitFormRequest": "submitFormRequest"; }, never, never, true, never>;
102
+ static ɵcmp: i0.ɵɵComponentDeclaration<UicUserFormbuilderComponent, "ui-user-formbuilder", never, { "disabled": { "alias": "disabled"; "required": false; }; "formTitle": { "alias": "formTitle"; "required": false; }; "optionSources": { "alias": "optionSources"; "required": false; }; "computedSources": { "alias": "computedSources"; "required": false; }; "validationSources": { "alias": "validationSources"; "required": false; }; "selectOptionsResolver": { "alias": "selectOptionsResolver"; "required": false; }; "computedFieldResolver": { "alias": "computedFieldResolver"; "required": false; }; "externalValidatorResolver": { "alias": "externalValidatorResolver"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "editableFormInput": { "alias": "editableForm"; "required": false; "isSignal": true; }; }, { "submitFormRequest": "submitFormRequest"; }, never, never, true, never>;
96
103
  }
97
104
  export interface ComputedSourceOption {
98
105
  id: string | number;
@@ -157,6 +157,7 @@ export declare const DICTIONARY_EN: {
157
157
  readonly block_title: "Title";
158
158
  readonly add_new_field: "Add new field";
159
159
  readonly block_subtitle: "Subtitle";
160
+ readonly block_message: "Message";
160
161
  readonly add_block: "Add block";
161
162
  readonly delete_block: "Delete block";
162
163
  readonly delete_block_dependency_blocked: "This block cannot be deleted because it contains fields that other fields depend on";
@@ -270,6 +271,8 @@ export declare const DICTIONARY_EN: {
270
271
  readonly computedSourceKey_tip: "Identifier the consumer resolver will receive";
271
272
  readonly computedSourceDependsOn: "Depends on";
272
273
  readonly computedSourceDependsOn_tip: "Fields whose change triggers recalculation";
274
+ readonly externalValidationKey: "External validation";
275
+ readonly externalValidationKey_tip: "Key of the external validator to run on field blur";
273
276
  };
274
277
  readonly options_editor: {
275
278
  readonly title: "Options";
@@ -298,6 +301,7 @@ export declare const DICTIONARY_EN: {
298
301
  readonly show_advanced: "Show advanced";
299
302
  readonly hide_advanced: "Hide advanced";
300
303
  readonly subfields: "Sub-fields";
304
+ readonly external_validation_title: "External validation";
301
305
  };
302
306
  readonly visibility_operators: {
303
307
  readonly equals: "Equals";
@@ -332,6 +336,7 @@ export declare const DICTIONARY_EN: {
332
336
  readonly minlength: "{{field}} must have at least {{requiredLength}} characters.";
333
337
  readonly maxlength: "{{field}} cannot exceed {{requiredLength}} characters.";
334
338
  readonly pattern: "{{field}} has an invalid format.";
339
+ readonly external_invalid: "{{field}} is not valid.";
335
340
  };
336
341
  readonly clipboard: {
337
342
  readonly copy_error: "Could not copy:";
@@ -157,6 +157,7 @@ export declare const DICTIONARY_ES: {
157
157
  readonly block_title: "Título";
158
158
  readonly add_new_field: "Agregar nuevo campo";
159
159
  readonly block_subtitle: "Subtítulo";
160
+ readonly block_message: "Mensaje";
160
161
  readonly add_block: "Agregar bloque";
161
162
  readonly delete_block: "Eliminar bloque";
162
163
  readonly delete_block_dependency_blocked: "Este bloque no se puede eliminar porque contiene campos de los que dependen otros campos";
@@ -270,6 +271,8 @@ export declare const DICTIONARY_ES: {
270
271
  readonly computedSourceKey_tip: "Identificador que recibirá el resolver del consumidor";
271
272
  readonly computedSourceDependsOn: "Depende de";
272
273
  readonly computedSourceDependsOn_tip: "Campos cuyo cambio dispara el recálculo";
274
+ readonly externalValidationKey: "Validación externa";
275
+ readonly externalValidationKey_tip: "Clave del validador externo a ejecutar al salir del campo";
273
276
  };
274
277
  readonly options_editor: {
275
278
  readonly title: "Opciones";
@@ -298,6 +301,7 @@ export declare const DICTIONARY_ES: {
298
301
  readonly show_advanced: "Mostrar avanzado";
299
302
  readonly hide_advanced: "Ocultar avanzado";
300
303
  readonly subfields: "Sub-campos";
304
+ readonly external_validation_title: "Validación externa";
301
305
  };
302
306
  readonly visibility_operators: {
303
307
  readonly equals: "Es igual a";
@@ -332,6 +336,7 @@ export declare const DICTIONARY_ES: {
332
336
  readonly minlength: "{{field}} debe tener al menos {{requiredLength}} caracteres.";
333
337
  readonly maxlength: "{{field}} no puede superar {{requiredLength}} caracteres.";
334
338
  readonly pattern: "{{field}} no tiene el formato correcto.";
339
+ readonly external_invalid: "{{field}} no es válido.";
335
340
  };
336
341
  readonly clipboard: {
337
342
  readonly copy_error: "No se pudo copiar:";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ui-core-abv",
3
- "version": "0.7.7",
3
+ "version": "0.7.9",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=19.2.0 <21.0.0",
6
6
  "@angular/core": ">=19.2.0 <21.0.0",