import { Component, EventEmitter, Inject, Input, Optional, Output, ViewChild } from "@angular/core"; import { FormGroup } from "@angular/forms"; import { MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, MatAutocomplete, MatAutocompleteDefaultOptions } from "@angular/material/autocomplete"; import { ErrorStateMatcher, LabelOptions, MAT_LABEL_GLOBAL_OPTIONS, MAT_RIPPLE_GLOBAL_OPTIONS, RippleGlobalOptions } from "@angular/material/core"; import { MatInput } from "@angular/material/input"; import { DynamicFormControlCustomEvent, DynamicFormLayout, DynamicFormLayoutService, DynamicFormValidationService, DynamicInputModel } from "@ng-dynamic-forms/core"; import { DynamicMaterialFormInputControlComponent } from "../dynamic-material-form-input-control.component"; @Component({ selector: "dynamic-material-input", templateUrl: "./dynamic-material-input.component.html" }) export class DynamicMaterialInputComponent extends DynamicMaterialFormInputControlComponent { @Input() group: FormGroup; @Input() layout: DynamicFormLayout; @Input() model: DynamicInputModel; @Output() blur: EventEmitter = new EventEmitter(); @Output() change: EventEmitter = new EventEmitter(); @Output() customEvent: EventEmitter = new EventEmitter(); @Output() focus: EventEmitter = new EventEmitter(); @ViewChild("matAutocomplete", { static: true }) matAutocomplete: MatAutocomplete; @ViewChild(MatInput, { static: true }) matInput: MatInput; constructor(protected layoutService: DynamicFormLayoutService, protected validationService: DynamicFormValidationService, @Inject(ErrorStateMatcher) public errorStateMatcher: ErrorStateMatcher, @Inject(MAT_AUTOCOMPLETE_DEFAULT_OPTIONS) public AUTOCOMPLETE_OPTIONS: MatAutocompleteDefaultOptions, @Inject(MAT_LABEL_GLOBAL_OPTIONS) @Optional() public LABEL_OPTIONS: LabelOptions, @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) @Optional() public RIPPLE_OPTIONS: RippleGlobalOptions) { super(layoutService, validationService); } }