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;
}