@ng-formworks/core
Version:
Angular ng-formworks - JSON Schema Form builder core
151 lines (150 loc) • 5.69 kB
TypeScript
import { OnDestroy, Signal } from '@angular/core';
import { AbstractControl, UntypedFormArray, UntypedFormGroup } from '@angular/forms';
import Ajv2019, { ErrorObject, Options, ValidateFunction } from 'ajv/dist/2019';
import { Subject, Subscription } from 'rxjs';
import * as i0 from "@angular/core";
export type WidgetContext = {
formControl?: AbstractControl;
layoutNode?: Signal<any>;
layoutIndex?: Signal<number[]>;
dataIndex?: Signal<number[]>;
options?: any;
controlValue?: any;
boundControl?: boolean;
controlName?: string;
controlDisabled?: boolean;
};
export type AJVRegistryItem = {
[name: string]: {
name: string;
ajvInstance: Ajv2019;
ajvValidator: ValidateFunction;
};
};
export interface TitleMapItem {
name?: string;
value?: any;
checked?: boolean;
group?: string;
items?: TitleMapItem[];
}
export interface ErrorMessages {
[control_name: string]: {
message: string | Function | Object;
code: string;
}[];
}
export declare class JsonSchemaFormService implements OnDestroy {
JsonFormCompatibility: boolean;
ReactJsonSchemaFormCompatibility: boolean;
AngularSchemaFormCompatibility: boolean;
tpldata: any;
ajvOptions: Options;
ajv: any;
validateFormData: any;
formValues: any;
data: any;
schema: any;
layout: any[];
formGroupTemplate: any;
formGroup: any;
framework: any;
formOptions: any;
validData: any;
isValid: boolean;
ajvErrors: ErrorObject[];
validationErrors: any;
dataErrors: any;
formValueSubscription: any;
dataChanges: Subject<any>;
isValidChanges: Subject<any>;
validationErrorChanges: Subject<any>;
arrayMap: Map<string, number>;
dataMap: Map<string, any>;
dataRecursiveRefMap: Map<string, string>;
schemaRecursiveRefMap: Map<string, string>;
schemaRefLibrary: any;
layoutRefLibrary: any;
templateRefLibrary: any;
hasRootReference: boolean;
language: string;
defaultFormOptions: any;
fcValueChangesSubs: Subscription;
fcStatusChangesSubs: Subscription;
private draggableStateSubject;
draggableState$: import("rxjs").Observable<boolean>;
setDraggableState(value: boolean): void;
private sortableOptionsSubject;
sortableOptions$: import("rxjs").Observable<any>;
setSortableOptions(value: any): void;
createAjvInstance(ajvOptions: any): Ajv2019;
createAndRegisterAjvInstance(ajvOptions: any, name?: string): {
name: string;
ajvInstance: Ajv2019;
ajvValidator: ValidateFunction;
};
ajvRegistry: AJVRegistryItem;
getAjvInstance(name?: string): Ajv2019;
getAjvValidator(name?: string): ValidateFunction<unknown>;
constructor();
ngOnDestroy(): void;
setLanguage(language?: string): void;
getData(): any;
getSchema(): any;
getLayout(): any[];
resetAllValues(): void;
/**
* 'buildRemoteError' function
*
* Example errors:
* {
* last_name: [ {
* message: 'Last name must by start with capital letter.',
* code: 'capital_letter'
* } ],
* email: [ {
* message: 'Email must be from example.com domain.',
* code: 'special_domain'
* }, {
* message: 'Email must contain an @ symbol.',
* code: 'at_symbol'
* } ]
* }
* //{ErrorMessages} errors
*/
buildRemoteError(errors: ErrorMessages): void;
validateData(newValue: any, updateSubscriptions?: boolean, ajvInstanceName?: string): void;
buildFormGroupTemplate(formValues?: any, setValues?: boolean): void;
buildFormGroup(ajvInstanceName?: string): void;
buildLayout(widgetLibrary: any): void;
setOptions(newOptions: any): void;
compileAjvSchema(ajvInstanceName?: string): void;
buildSchemaFromData(data?: any, requireAllFields?: boolean): any;
buildSchemaFromLayout(layout?: any): any;
setTpldata(newTpldata?: any): void;
parseText(text?: string, value?: any, values?: any, key?: number | string): string;
parseExpression(expression?: string, value?: any, values?: any, key?: number | string, tpldata?: any): any;
setArrayItemTitle(parentCtx?: any, childNode?: any, index?: number): string;
setItemTitle(ctx: WidgetContext): string;
evaluateCondition(layoutNode: any, dataIndex: number[]): boolean;
initializeControl(ctx: WidgetContext, bind?: boolean): boolean;
formatErrors(errors: any, validationMessages?: any): string;
updateValue(ctx: WidgetContext, value: any): void;
updateArrayCheckboxList(ctx: WidgetContext, checkboxList: TitleMapItem[]): void;
updateArrayMultiSelectList(ctx: WidgetContext, selectList: TitleMapItem[]): void;
getFormControl(ctx: WidgetContext): AbstractControl;
setFormControl(ctx: WidgetContext, control: AbstractControl): AbstractControl;
getFormControlValue(ctx: WidgetContext): AbstractControl;
getFormControlGroup(ctx: WidgetContext): UntypedFormArray | UntypedFormGroup;
getFormControlName(ctx: WidgetContext): string;
getLayoutArray(ctx: WidgetContext): any[];
getParentNode(ctx: WidgetContext): any;
getDataPointer(ctx: WidgetContext): string;
getLayoutPointer(ctx: WidgetContext): string;
isControlBound(ctx: WidgetContext): boolean;
addItem(ctx: WidgetContext, name?: string): boolean;
moveArrayItem(ctx: WidgetContext, oldIndex: number, newIndex: number, moveLayout?: boolean): boolean;
removeItem(ctx: WidgetContext): boolean;
static ɵfac: i0.ɵɵFactoryDeclaration<JsonSchemaFormService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<JsonSchemaFormService>;
}