import { AbstractControl, FormControl, FormGroup } from '@angular/forms'; import { DateRange } from '../../models/form/item/date'; import { Form as WebForm, FormItem, FormItemGroup, FormItemImpl, OptionGroupItemImpl, RepeatableItem, TableItem, ValueItem } from '../../models/index'; /** Types of Validators that can be set on a FormControl */ export declare type ValidatorType = 'required' | 'requiredTrue' | 'email'; export declare type ValidatorWithNumberType = 'minLength' | 'maxLength' | 'min' | 'max'; /** * Generates a new FormGroup with FormControls & possible nested FormGroups * @param formItem WebForm, Section, Group, or RepeatableItem used to create a FormGroup * @param customFormItemConditional boolean function for any custom FormItems * @param customControlGenerator FormControl generator function for any custom FormItems */ export declare function serializeFormItems(formItem: WebForm | FormItemGroup | RepeatableItem, customFormItemConditional?: (item: FormItem) => boolean, customControlGenerator?: (item: FormItem) => FormControl | FormGroup): FormGroup; /** * Returns a tailored FormControl with validators for a FormItem * @param formItem The FormItem requesting a tailored FormControl * @internal Creating the form control and then calling setValidators force a validation pass, * see https://github.com/angular/angular/issues/19622#issuecomment-341547884 * Better to gather the validators and put them in the constructor of the form control. */ export declare function serializeFormItem(formItem: FormItemImpl): AbstractControl; /** * Builds controls for any form items nested inside a parent items options * @param formItem The FormItem with an 'options' property * @param customFormItemConditional conditional function from parent 'serializeFormItems' function * @param customControlGenerator FormControl generator from parent 'serializeFormItems' function */ export declare function serializeNestedOptionFormItems(formItem: OptionGroupItemImpl, customFormItemConditional?: (item: FormItem) => boolean, customControlGenerator?: (item: FormItem) => FormControl | FormGroup): FormGroup; /** * Build FormControls for a TableItem * @param item TableItem requiring FormControls * @param customFormItemConditional Conditional function for custom any FormItems * @param customControlGenerator FormControl generator for custom any FormItems */ export declare function serializeTableItem(item: TableItem, customFormItemConditional?: (item: FormItem) => boolean, customControlGenerator?: (item: FormItem) => FormControl | FormGroup): FormGroup; /** * Returns the appropriate function for the caller to use. * * @param formItem FormItem requiring serialization * @param customFormItemConditional Conditional for a custom FormItem * @param customControlGenerator Serializer for a custom FormItem */ export declare function determineSerializeFunctionToUse(formItem: FormItemImpl | WebForm, customFormItemConditional?: (item: FormItem) => boolean, customControlGenerator?: (item: FormItem) => FormControl | FormGroup): AbstractControl; /** * Builds a FormGroup for a range item * @param formItem FormItem for a DateRange of Date | YearQuarter */ export declare function serializeRangeItem(formItem: FormItemImpl>): FormGroup; export declare function serializeYearQuarterRangeItem(formItem: FormItemImpl>): FormGroup; /** * Returns an array of Formitems with new values inserted. * * @param section The old Form or Form Section * @param ngFormValue ngForm JSON values * @param customFormItemConditional boolean function for any custom FormItems * @param customFormItemBuilder function to handle custom FormItems * @returns new FormItem array */ export declare function insertFormItemValues(section: WebForm | FormItemGroup | RepeatableItem, ngFormValue: any, disabledState: { [instanceId: string]: boolean; }, customFormItemConditional?: (item: FormItem) => boolean, customFormItemBuilder?: (section: WebForm | FormItemGroup | RepeatableItem, item: FormItem, rfValue: any, disabledState: { [instanceId: string]: boolean; }) => ValueItem): Array; /** * Returns a copied TableItem, with each row FormItem having new inserted values. * @param item TableItem to insert values * @param ngFormValue ngForm value of the TableItem * @param customFormItemConditional boolean function for any custom FormItem * @param customFormItemBuilder function to handle custom FormItem value insertion */ export declare function insertTableItemValues(item: TableItem, ngFormValue: any, disabledState: { [instanceId: string]: boolean; }, customFormItemConditional?: (item: FormItem) => boolean, customFormItemBuilder?: (section: WebForm | FormItemGroup | RepeatableItem, item: FormItem, rfValue: any, disabledState: { [instanceId: string]: boolean; }) => ValueItem): TableItem; /** * Determines if a FormItem has an OptionItemMap with at least 1 item, which require their own FormControl(s) * @param formItem FormItem to check */ export declare function hasNestedFormItems(formItem: any): boolean;