import { ComponentFactoryResolver, ComponentRef, NgZone, Type } from '@angular/core'; import { Subject, BehaviorSubject, Observable } from 'rxjs'; import { ElAdjustableConnectedPositionStrategy } from '../overlay-position'; import { ElRenderableContainer } from '../overlay-container'; import { ElOverlayContent, ElOverlayService } from '../overlay-service'; import { ElOverlayRef, ElOverlayContainer, ElOverlayConfig } from '../mapping'; export interface ElDynamicOverlayController { show(): any; hide(): any; toggle(): any; rebuild(): any; } export declare class ElDynamicOverlay { protected overlay: ElOverlayService; protected componentFactoryResolver: ComponentFactoryResolver; protected zone: NgZone; protected overlayContainer: ElOverlayContainer; protected ref: ElOverlayRef; protected container: ComponentRef; protected componentType: Type; protected context: Object; protected content: ElOverlayContent; protected positionStrategy: ElAdjustableConnectedPositionStrategy; protected overlayConfig: ElOverlayConfig; protected positionStrategyChange$: Subject<{}>; protected isShown$: BehaviorSubject; protected alive: boolean; readonly isAttached: boolean; readonly isShown: Observable; constructor(overlay: ElOverlayService, componentFactoryResolver: ComponentFactoryResolver, zone: NgZone, overlayContainer: ElOverlayContainer); create(componentType: Type, content: ElOverlayContent, context: Object, positionStrategy: ElAdjustableConnectedPositionStrategy, overlayConfig?: ElOverlayConfig): this; setContent(content: ElOverlayContent): void; setContext(context: Object): void; setContentAndContext(content: ElOverlayContent, context: Object): void; setComponent(componentType: Type): void; setPositionStrategy(positionStrategy: ElAdjustableConnectedPositionStrategy): void; setOverlayConfig(overlayConfig: ElOverlayConfig): void; show(): any; hide(): void; toggle(): void; dispose(): void; getContainer(): ComponentRef; protected createOverlay(): void; protected renderContainer(): void; protected updateContext(): void; protected createContainerContext(): Object; /** * Dimensions of the container may change after content update. So we listen to zone.stable event to * reposition the container. */ protected updatePositionWhenStable(): void; protected hasOverlayInContainer(): boolean; protected disposeOverlayRef(): void; }