import { AfterContentChecked, AfterContentInit, AfterViewInit, ChangeDetectorRef, ElementRef, NgZone, OnDestroy, QueryList } from '@angular/core'; import { TsDocumentService } from '@terminus/ngx-tools/browser'; import { TsStyleThemeTypes } from '@terminus/ui/utilities'; import { TsFormFieldControl } from './form-field-control'; import { TsPrefixDirective } from './prefix.directive'; import { TsSuffixDirective } from './suffix.directive'; /** * The form-field UI Component. * * Used to wrap input components with form field functionality (hints, errors, labels etc) * * @example * * * https://goo.gl/ieUPaG */ export declare class TsFormFieldComponent implements AfterContentInit, AfterContentChecked, AfterViewInit, OnDestroy { elementRef: ElementRef; private changeDetectorRef; private documentService; private ngZone; /** * Store a reference to the document object */ private document; /** * Define the flex layout gap. Needed because hints/errors can appear at the same time */ flexGap: string; hintLabelId: string; /** * Unique id for the internal form field label */ labelId: string; /** * A flag to track when the outline gap should be recalculated */ outlineGapCalculationNeeded: boolean; /** * Override for the logic that disables the label animation in certain cases */ private showAlwaysAnimate; /** * Define the default component ID */ protected uid: string; /** * Return if the ngControl is currently in an errored state and has been touched */ get controlIsInErrorState(): boolean; /** * Access the container element */ containerElement: ElementRef; /** * Access the label container */ labelElement: ElementRef; /** * Access any prefix children */ prefixChildren: QueryList; /** * Access any suffix children */ suffixChildren: QueryList; /** * Let implementers pass the control in * * NOTE: Material uses injection for this, but it was not working and I had to move on. * NOTE: Using non-null-assertion as since the existence is verified by `confirmControlExists()` */ control: TsFormFieldControl; /** * Whether the label should always float or float as the user types * * @param value */ set floatLabel(value: 'always' | 'auto'); get floatLabel(): 'always' | 'auto'; private _floatLabel; /** * Define if a required marker should be hidden */ hideRequiredMarker: boolean; /** * Define a hint for the input * * @param value */ set hint(value: string | undefined); get hint(): string | undefined; private _hint; /** * Define an ID for the component * * @param value */ set id(value: string); get id(): string; protected _id: string; /** * Define whether form field needs a validation or a hint */ noValidationOrHint: boolean; /** * Define the component theme */ theme: TsStyleThemeTypes; /** * Define if validation messages should be shown immediately or on blur */ validateOnChange: boolean; constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, documentService: TsDocumentService, ngZone: NgZone); /** * Verify control existence and set up subscriptions */ ngAfterContentInit(): void; /** * Verify control existence and trigger outline gap update if needed */ ngAfterContentChecked(): void; /** * Enable animations */ ngAfterViewInit(): void; /** * Needed for `untilComponentDestroyed` */ ngOnDestroy(): void; /** * Throw an error if the form field's control is missing */ protected confirmControlExists(): void; /** * Whether the floating label should always float or not */ get shouldAlwaysFloat(): boolean; /** * Gets an ElementRef for the element that a overlay attached to the form-field should be * positioned relative to. * * NOTE: Used by the autocomplete functionality. */ getConnectedOverlayOrigin(): ElementRef; /** * Determines whether a class from the NgControl should be forwarded to the host element * * @param prop */ shouldForward(prop: string): boolean; /** * Determine if the label should float from the control's setting */ shouldLabelFloat(): boolean; /** * Animate the placeholder up and lock it in position * * NOTE: Used by autocomplete functionality */ animateAndLockLabel(): void; /** * Updates the width and position of the gap in the outline */ private updateOutlineGap; }