import { AnimationEvent } from '@angular/animations';
import { Platform } from '@angular/cdk/platform';
import { AfterContentChecked, ElementRef, EventEmitter, NgZone, OnDestroy, Renderer2 } from '@angular/core';
import { Observable, Subject } from 'rxjs';
/**
* Result of the toggle promise that indicates the state of the drawer.
*/
export declare type TsDrawerToggleResult = 'open' | 'close';
/**
* Type of drawer display mode
*/
export declare type TsDrawerModes = 'overlay' | 'push';
/**
* Type of drawer position
*/
export declare type TsDrawerPosition = 'start' | 'end';
export declare const TS_DRAWER_DEFAULT_COLLAPSE_SIZE = "3.75rem";
export declare const TS_DRAWER_DEFAULT_EXPAND_SIZE = "12.5rem";
/**
* This drawer component corresponds to a drawer that is nested inside a {@link TsDrawerContainerComponent}
*
* @example
*
*
* https://getterminus.github.io/ui-demos-release/components/drawer
*/
export declare class TsDrawerComponent implements AfterContentChecked, OnDestroy {
elementRef: ElementRef;
private platform;
private ngZone;
renderer: Renderer2;
/**
* Define animation state, defaults to void state
*/
animationState: 'open-instant' | 'open' | 'void' | 'void-shadow';
/**
* Emits whenever the drawer has started animating.
*/
animationStarted: Subject;
/**
* Emits whenever the drawer is done animating.
*/
animationEnd: Subject;
/**
* Emits when the component is destroyed.
*/
private readonly destroyed;
/**
* Whether the drawer is initialized. Used for disabling the initial animation.
*/
private enableAnimations;
/**
* An observable that emits when the drawer mode changes. This is used by the drawer container to
* to know when the mode changes so it can adapt the margins on the content.
*/
readonly modeChanged: Subject;
/**
* Collapsed drawer width
*
* @param value
*/
set collapsedSize(value: string);
get collapsedSize(): string;
_collapsedSize: string;
/**
* Expanded drawer width
*
* @param value
*/
set expandedSize(value: string);
get expandedSize(): string;
_expandedSize: string;
/**
* Hide shadow when drawer is collapsed
*
* @param value
*/
set hideShadowWhenCollapsed(value: boolean);
get hideShadowWhenCollapsed(): boolean;
private _hideShadowWhenCollapsed;
/**
* Define whether the drawer is open
*
* @param value
*/
set isExpanded(value: boolean);
get isExpanded(): boolean;
private _isExpanded;
/**
* Mode of the drawer, overlay or push
*
* @param value
*/
set mode(value: TsDrawerModes);
get mode(): TsDrawerModes;
private _mode;
/**
* The side that the drawer is attached to.
*
* @param value
*/
set position(value: TsDrawerPosition);
get position(): TsDrawerPosition;
private _position;
/**
* Define the aria role label, default to nothing
*/
role: string;
/**
* Event emitted when the drawer open state is changed.
*
* NOTE: This has to be async in order to avoid some issues with two-way bindings - setting isAsync to true.
*/
readonly expandedChange: EventEmitter;
/**
* Event emitted when the drawer has been expanded.
*/
get expandedStream(): Observable;
/**
* Event emitted when the drawer has started expanding.
*/
get expandedStart(): Observable;
/**
* Event emitted when the drawer has been collapsed.
*/
get collapsedStream(): Observable;
/**
* Event emitted when the drawer has started collapsing.
*/
get collapsedStart(): Observable;
/**
* Event emitted when the drawer's position changes.
*/
readonly positionChanged: EventEmitter;
constructor(elementRef: ElementRef, platform: Platform, ngZone: NgZone, renderer: Renderer2);
/**
* Enable the animations after the lifecycle hooks have run, in order to avoid animating drawers that are open by default.
*/
ngAfterContentChecked(): void;
/**
* Complete the observable on destroy
*/
ngOnDestroy(): void;
/**
* Expand the drawer.
*
* @returns Promise
*/
expand(): Promise;
/**
* Collapse the drawer.
*
* @returns Promise
*/
collapse(): Promise;
/**
* Toggle this drawer.
*
* @param isOpen - whether the drawer should be open.
* @returns Promise
*/
toggle(isOpen?: boolean): Promise;
/**
* We have to use a `HostListener` here in order to support both Ivy and ViewEngine.
* In Ivy the `host` bindings will be merged when this class is extended, whereas in
* ViewEngine they're overwritten.
* TODO: we move this back into `host` once Ivy is turned on by default.
*
* @param event
*/
animationStartListener(event: AnimationEvent): void;
/**
* We have to use a `HostListener` here in order to support both Ivy and ViewEngine.
* In Ivy the `host` bindings will be merged when this class is extended, whereas in
* ViewEngine they're overwritten.
* TODO: move this back into `host` once Ivy is turned on by default.
*
* @param event
*/
animationDoneListener(event: AnimationEvent): void;
}