blob: faed964f3c5e1974a5aa06015cf0f7195665baf9 [file] [log] [blame]
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import { AnimationEvent } from '@angular/animations';
import { FocusMonitor, FocusOrigin, FocusTrapFactory } from '@angular/cdk/a11y';
import { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, DomPortal, TemplatePortal } from '@angular/cdk/portal';
import { ChangeDetectorRef, ComponentRef, ElementRef, EmbeddedViewRef, EventEmitter } from '@angular/core';
import { MatDialogConfig } from './dialog-config';
/** Event that captures the state of dialog container animations. */
interface DialogAnimationEvent {
state: 'opened' | 'opening' | 'closing' | 'closed';
totalTime: number;
}
/**
* Throws an exception for the case when a ComponentPortal is
* attached to a DomPortalOutlet without an origin.
* @docs-private
*/
export declare function throwMatDialogContentAlreadyAttachedError(): void;
/**
* Base class for the `MatDialogContainer`. The base class does not implement
* animations as these are left to implementers of the dialog container.
*/
export declare abstract class _MatDialogContainerBase extends BasePortalOutlet {
protected _elementRef: ElementRef;
protected _focusTrapFactory: FocusTrapFactory;
protected _changeDetectorRef: ChangeDetectorRef;
/** The dialog configuration. */
_config: MatDialogConfig;
private _focusMonitor?;
protected _document: Document;
/** The portal outlet inside of this container into which the dialog content will be loaded. */
_portalOutlet: CdkPortalOutlet;
/** The class that traps and manages focus within the dialog. */
private _focusTrap;
/** Emits when an animation state changes. */
_animationStateChanged: EventEmitter<DialogAnimationEvent>;
/** Element that was focused before the dialog was opened. Save this to restore upon close. */
private _elementFocusedBeforeDialogWasOpened;
/**
* Type of interaction that led to the dialog being closed. This is used to determine
* whether the focus style will be applied when returning focus to its original location
* after the dialog is closed.
*/
_closeInteractionType: FocusOrigin | null;
/** ID of the element that should be considered as the dialog's label. */
_ariaLabelledBy: string | null;
/** ID for the container DOM element. */
_id: string;
constructor(_elementRef: ElementRef, _focusTrapFactory: FocusTrapFactory, _changeDetectorRef: ChangeDetectorRef, _document: any,
/** The dialog configuration. */
_config: MatDialogConfig, _focusMonitor?: FocusMonitor | undefined);
/** Starts the dialog exit animation. */
abstract _startExitAnimation(): void;
/** Initializes the dialog container with the attached content. */
_initializeWithAttachedContent(): void;
/**
* Attach a ComponentPortal as content to this dialog container.
* @param portal Portal to be attached as the dialog content.
*/
attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T>;
/**
* Attach a TemplatePortal as content to this dialog container.
* @param portal Portal to be attached as the dialog content.
*/
attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C>;
/**
* Attaches a DOM portal to the dialog container.
* @param portal Portal to be attached.
* @deprecated To be turned into a method.
* @breaking-change 10.0.0
*/
attachDomPortal: (portal: DomPortal) => void;
/** Moves focus back into the dialog if it was moved out. */
_recaptureFocus(): void;
/** Moves the focus inside the focus trap. */
protected _trapFocus(): void;
/** Restores focus to the element that was focused before the dialog opened. */
protected _restoreFocus(): void;
/** Sets up the focus trap. */
private _setupFocusTrap;
/** Captures the element that was focused before the dialog was opened. */
private _capturePreviouslyFocusedElement;
/** Focuses the dialog container. */
private _focusDialogContainer;
/** Returns whether focus is inside the dialog. */
private _containsFocus;
/** Gets the currently-focused element on the page. */
private _getActiveElement;
}
/**
* Internal component that wraps user-provided dialog content.
* Animation is based on https://material.io/guidelines/motion/choreography.html.
* @docs-private
*/
export declare class MatDialogContainer extends _MatDialogContainerBase {
/** State of the dialog animation. */
_state: 'void' | 'enter' | 'exit';
/** Callback, invoked whenever an animation on the host completes. */
_onAnimationDone({ toState, totalTime }: AnimationEvent): void;
/** Callback, invoked when an animation on the host starts. */
_onAnimationStart({ toState, totalTime }: AnimationEvent): void;
/** Starts the dialog exit animation. */
_startExitAnimation(): void;
}
export {};