import { AfterContentInit, AfterViewInit, ElementRef, EventEmitter, OnInit, QueryList } from '@angular/core'; import { FormArray, FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { FormModel } from '../../models/form.model'; import { FieldConfig } from '../../models/field-config.model'; import { FormGrid } from '../../models/form-grid.model'; import { DynamicFormFieldDirective } from '../../directives/dynamic-form-field/dynamic-form-field.directive'; import { AlignType, IconButton, CheckboxOption } from '@ieeesa-npm/models'; import { SelectedDate } from '../../models/selected-date.model'; import { SelectedTime } from '../../models/selected-time.model'; import { LinkEventEmitType } from '../../models/event-emit-type.model'; import { SlideToggleOption } from '../../models/slide-toggle-options.model'; import { SelectOpenedState } from '../../models/select-opened-state.model'; import { RadioOption } from '../../models/radio-option.model'; import { AutoCompleteOption } from '../../models/autocomplete-option.model'; import { FileUploadStatus } from '../../models/file-upload-status.model'; import { FileDownloadAndDeleteConfig } from '../../models/file-download-config.model'; import * as i0 from "@angular/core"; /** * Creates a reactive form dynamically based on the passed form field configuration and handles the form events. * @export * @class DynamicFormComponent * @implements {OnInit} * @implements {AfterContentInit} */ export declare class DynamicFormComponent implements OnInit, AfterContentInit, AfterViewInit { private fb; private elementRef; formFields: QueryList; private _formGroups; /** * FormGroups passed an an input and which contains configuration information of every form fields. * @memberof DynamicFormComponent */ set formGroups(value: FormModel); get formGroups(): FormModel; private _submitResponse; /** * Sets submit response on form submit * @memberof DynamicFormComponent */ set submitResponse(value: any); get submitResponse(): any; private _searchResponse; /** * Sets search response on form search event * @memberof DynamicFormComponent */ set searchResponse(value: any); get searchResponse(): any; private _fileUploadStatus; get fileUploadStatus(): FileUploadStatus; set fileUploadStatus(value: FileUploadStatus); colWidth: FormGrid; isLegendVisible: boolean; rightButtonLabel: string; leftButtonLabel: string; isSubmitButtonDisabled: boolean; isLeftButtonDisabled: boolean; isLeftButtonNeeded: boolean; isRightButtonNeeded: boolean; actionButtonAlign: AlignType; private _fileDownloadAndDeleteConfig; set fileDownloadAndDeleteConfig(value: FileDownloadAndDeleteConfig); get fileDownloadAndDeleteConfig(): FileDownloadAndDeleteConfig; alignmentType: typeof AlignType; formSubmit: EventEmitter; formChange: EventEmitter; formInput: EventEmitter; formLeftButtonClicked: EventEmitter; formSearchApply: EventEmitter; formGroupsReference: EventEmitter[]>; dropdownChange: EventEmitter; formCheckboxSelection: EventEmitter; formDateSelected: EventEmitter; formSelectSearch: EventEmitter<{ searchEvent: Event; controlName: string; }>; formControlChange: EventEmitter; formAutoCompleteSearch: EventEmitter; formAutoCompleteClearSearchValue: EventEmitter; autoCompleteOptionSelected: EventEmitter[]>; formAfterContentInit: EventEmitter[]>; formSelectedDateRange: EventEmitter<{ startDate: string; endDate: string; }>; addFormGroup: EventEmitter; formTimeSelected: EventEmitter; supportTextLinkClick: EventEmitter; formSlideToggleChange: EventEmitter; formFileUpload: EventEmitter; dropdownOpenedChange: EventEmitter; formColorPickerChange: EventEmitter; formRadioOptionSelected: EventEmitter; ctaButtonClick: EventEmitter; formMultiSelectAutoCompleteSearch: EventEmitter; formMultiSelectAutoCompleteClearSearchValue: EventEmitter; multiSelectAutoCompleteOptionsSelected: EventEmitter; formRichTextEditorContentChange: EventEmitter; form: FormGroup; formGroupArray: FormGroup[]; formControlArray: any[]; legendsArray: string[]; constructor(fb: FormBuilder, elementRef: ElementRef); /** * Implementation of ngOnInit lifecycle hook method to create form group * @memberof DynamicFormComponent */ ngOnInit(): void; /** * Emit generated form reference on ngAfterContentInit lifecycle hook. * @memberof DynamicFormComponent */ ngAfterContentInit(): void; /** * Sets the focus to the first field. * @memberof DynamicFormComponent */ ngAfterViewInit(): void; /** * Creates form group on the basis of formGroups configuration input * @return {void} * @memberof DynamicFormComponent */ createFormGroupArray(): void; /** * Incrementally adds a single control to an existing form group at the given * group index WITHOUT rebuilding the whole form. This preserves every other * live control (including controls that are not part of the static config, * e.g. dynamically-populated dropdowns) along with their current values and * options. * @param {number} groupIndex - Index of the target form group. * @param {FieldConfig} control - Field configuration of the control to add. * @param {number} [position] - Optional position within the group's controls; * defaults to appending at the end. * @return {void} * @memberof DynamicFormComponent */ addControlToGroup(groupIndex: number, control: FieldConfig, position?: number): void; /** * Incrementally removes a single control from an existing form group by its * control name WITHOUT rebuilding the whole form. Other live controls and * their values/options are left untouched. * @param {number} groupIndex - Index of the target form group. * @param {string} controlName - Name of the control to remove. * @return {void} * @memberof DynamicFormComponent */ removeControlFromGroup(groupIndex: number, controlName: string): void; /** * Returns true when the live form group at the given index currently contains * a control with the given name. Reflects the rendered form state (including * controls added/removed incrementally), not the static config. * @param {number} groupIndex - Index of the target form group. * @param {string} controlName - Name of the control to look for. * @return {boolean} Whether the control exists in the rendered group. * @memberof DynamicFormComponent */ hasControlInGroup(groupIndex: number, controlName: string): boolean; /** * Creates form group using form builder * @param {any[]} controls * @return {FormGroup} * @memberof DynamicFormComponent */ createGroup(controls: any[]): FormGroup; /** * Creates form array for Checkbox group and returns. * @param {FieldConfig} controls * @return {FormArray} * @memberof DynamicFormComponent */ createFormArray(controls: FieldConfig): FormArray; /** * Custom validator to set required filed validation error for the checkbox field type based on the number of configured minimum checkbox options to be selected whenever the filed configured with required. * @param {number} [minSelectionRequired=1] * @return {*} * @memberof DynamicFormComponent */ checkboxSelectionRequiredValidator(minSelectionRequired?: number): any; /** * Creates form control based on form field configuration * @param {FieldConfig} control * @return {FormControl} * @memberof DynamicFormComponent */ createControl(control: FieldConfig): FormControl; /** * Emits formGroupArray * @memberof DynamicFormComponent */ onFormSubmit(): void; /** * Emits formGroupArray * @memberof DynamicFormComponent */ onLeftButtonClicked(): void; /** * Emits formGroupArray * @memberof DynamicFormComponent */ onFormChange(): void; /** * Handles form field select type drop down selection event * @memberof DynamicFormComponent */ onDropdownChange(): void; /** * Handles form input change event * @param {Event} event * @memberof DynamicFormComponent */ formInputChange(event: Event): void; /** * Handles form field search apply event * @param {Event} event * @memberof DynamicFormComponent */ onSearchApply(event: Event): void; /** * Handles search event inside form field select * @param {Event} event * @memberof DynamicFormComponent */ onSelectSearch(event: { searchEvent: Event; controlName: string; }): void; /** * Takes the index and the formGroup as arguments and needs to return the unique identifier for this formGroup. * @param {number} index * @param {FormGroup} formGroup * @memberof DynamicFormComponent */ trackByFormGroup(index: number, formGroup: FormGroup): { [key: string]: import("@angular/forms").AbstractControl; }; /** * Handles form date selection event * @param {SelectedDate} selectedDate * @memberof DynamicFormComponent */ onDateSelected(selectedDate: SelectedDate): void; /** * Handles form time selection event * @param {SelectedTime} selectedTime * @memberof DynamicFormComponent */ onTimeSelected(selectedTime: SelectedTime): void; /** * Emits selected form date range * @param {{startDate: string, endDate: string}} dateRange * @memberof DynamicFormComponent */ onSelectedDateRange(dateRange: { startDate: string; endDate: string; }): void; /** * Handles form field auto complete search event * @param {string} event * @memberof DynamicFormComponent */ onAutoCompleteSearch(event: string): void; /** * Handles form field auto complete search clear event * @param {string} event * @memberof DynamicFormComponent */ onAutoCompleteClearSearchValue(event: string): void; /** * Handles form field checkbox selection event * @param {CheckboxOption} option * @memberof DynamicFormComponent */ onCheckboxSelection(option: CheckboxOption): void; /** * Handles form field auto complete option selection event * @memberof DynamicFormComponent */ onAutoCompleteOptionSelected(): void; /** * * Listens form field multi select auto complete search event and emits formMultiSelectAutoCompleteSearch event. * @param {string} event * @memberof DynamicFormComponent */ onMultiSelectAutoCompleteSearch(event: string): void; /** * Listens form field multi select auto complete search clear event and emits formMultiSelectAutoCompleteClearSearchValue event. * @param {string} event * @memberof DynamicFormComponent */ onMultiSelectAutoCompleteClearSearchValue(event: string): void; /** * Listens form field multi select auto complete option selection event and emits multiSelectAutoCompleteOptionSelected event. * @param {AutoCompleteOption[]} event * @memberof DynamicFormComponent */ onMultiSelectAutoCompleteOptionsSelected(event: AutoCompleteOption[]): void; /** * Handles form slide toggle event and emits formSlideToggleChange event. * @param {SlideToggleOption} toggle * @memberof DynamicFormComponent */ onFormSlideToggleChange(toggle: SlideToggleOption): void; /** * Handles form color picker event and emits formColorPickerChange event. * @param {string} colorCode * @memberof DynamicFormComponent */ onFormColorPickerChange(colorCode: string): void; /** * Handles form rich text editor event and emits formRichTextEditorContentChange event. * @param {string} htmlMarkupText * @memberof DynamicFormComponent */ onFormRichTextEditorContentChange(htmlMarkupText: string): void; /** * Handles file upload event and emits formFileUpload event * @param {(File | FileList)} file * @memberof DynamicFormComponent */ onFileUpload(file: File | FileList): void; /** * Handles form field radio button selection event * @param {RadioOption} option * @memberof DynamicFormComponent */ onRadioOptionSelection(option: RadioOption): void; /** * Converts passed control name in hyphenated css class name * @param {string} className * @return {string} * @memberof DynamicFormComponent */ getRowClassName(className: string): string; /** * Emits the addFormGroup event * @param {Event} event * @memberof DynamicFormComponent */ onAddFormGroup(event: Event): void; /** * Emits supportTextLinkClick event on click of form support text link * @param {LinkEventEmitType} event * @memberof DynamicFormComponent */ onSupportTextLinkClick(event: LinkEventEmitType): void; /** * Listens select form field dropdownOpenedChange event and emits dropdownOpenedChange event. * @memberof DynamicFormComponent * @param {SelectOpenedState} event * @memberof DynamicFormComponent */ onDropdownOpenedChange(event: SelectOpenedState): void; /** * Emits ctaButtonClick event along with clicked button information. * @param {IconButton} event * @memberof DynamicFormComponent */ onCheckboxCTAButtonClick(event: IconButton): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }