@ngx-formly/core
Version:
Formly is a dynamic (JSON powered) form library for Angular that bring unmatched maintainability to your application's forms.
91 lines (90 loc) • 2.99 kB
TypeScript
import { Type } from '@angular/core';
import { ValidationErrors, AbstractControl } from '@angular/forms';
import { Observable } from 'rxjs';
import { FormlyFieldConfig } from './fieldconfig';
import { FieldType } from './../templates/field.type';
import { FieldWrapper } from '../templates/field.wrapper';
export interface FormlyExtension<F extends FormlyFieldConfig = FormlyFieldConfig> {
priority?: number;
prePopulate?(field: F): void;
onPopulate?(field: F): void;
postPopulate?(field: F): void;
}
export interface TypeOption {
name: string;
component?: Type<FieldType>;
wrappers?: string[];
extends?: string;
defaultOptions?: FormlyFieldConfig;
}
export interface WrapperOption {
name: string;
component: Type<FieldWrapper>;
types?: string[];
}
export type FieldValidatorFn = (c: AbstractControl, field: FormlyFieldConfig, options?: {
[id: string]: any;
}) => ValidationErrors | null;
export interface ValidatorOption {
name: string;
validation: FieldValidatorFn;
options?: {
[id: string]: any;
};
}
export interface ExtensionOption {
name: string;
extension: FormlyExtension;
priority?: number;
}
export interface ValidationMessageOption {
name: string;
message: string | ((error: any, field: FormlyFieldConfig) => string | Observable<string>);
}
export interface PresetOption {
name: string;
config: FormlyFieldConfig | FormlyFieldConfigPresetProvider;
}
export interface FormlyFieldConfigPresetProvider {
getConfiguration: () => FormlyFieldConfig;
}
export interface ConfigOption {
types?: TypeOption[];
wrappers?: WrapperOption[];
validators?: ValidatorOption[];
extensions?: ExtensionOption[];
validationMessages?: ValidationMessageOption[];
extras?: {
immutable?: boolean;
showError?: (field: FieldType) => boolean;
/**
* Defines the option which formly rely on to check field expression properties.
* - `modelChange`: perform a check when the value of the form control changes.
* - `changeDetectionCheck`: triggers an immediate check when `ngDoCheck` is called.
*
* Defaults to `modelChange`.
*/
checkExpressionOn?: 'modelChange' | 'changeDetectionCheck';
/**
* Whether to lazily render field components or not when marked as hidden.
* - `true`: lazily render field components.
* - `false`: render field components and use CSS to control their visibility.
*
* Defaults to `true`.
*/
lazyRender?: boolean;
/**
* When `true`, reset the value of a hidden field.
*
* Defaults to `true`.
*/
resetFieldOnHide?: boolean;
/**
* Whether to render fields inside <formly-field> component or not.
*
* Defaults to `true`.
*/
renderFormlyFieldElement?: boolean;
};
presets?: PresetOption[];
}