| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913 |
- import * as i1$1 from '@angular/cdk/overlay';
- import { Overlay, OverlayModule } from '@angular/cdk/overlay';
- import * as i2 from '@angular/common';
- import { DOCUMENT } from '@angular/common';
- import * as i0 from '@angular/core';
- import { EventEmitter, Component, Optional, Inject, ViewEncapsulation, ChangeDetectionStrategy, InjectionToken, Injectable, ANIMATION_MODULE_TYPE as ANIMATION_MODULE_TYPE$1, SkipSelf, Directive, Input, NgModule } from '@angular/core';
- import * as i1 from '@angular/cdk/a11y';
- import { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';
- import { CdkDialogContainer, Dialog, DialogConfig, DialogModule } from '@angular/cdk/dialog';
- import { coerceNumberProperty } from '@angular/cdk/coercion';
- import * as i4 from '@angular/cdk/portal';
- import { PortalModule } from '@angular/cdk/portal';
- import { Subject, merge, defer } from 'rxjs';
- import { filter, take, startWith } from 'rxjs/operators';
- import { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';
- import { MatCommonModule } from '@angular/material/core';
- import { trigger, state, style, transition, group, animate, query, animateChild } from '@angular/animations';
- /**
- * Configuration for opening a modal dialog with the MatDialog service.
- */
- class MatDialogConfig {
- constructor() {
- /** The ARIA role of the dialog element. */
- this.role = 'dialog';
- /** Custom class for the overlay pane. */
- this.panelClass = '';
- /** Whether the dialog has a backdrop. */
- this.hasBackdrop = true;
- /** Custom class for the backdrop. */
- this.backdropClass = '';
- /** Whether the user can use escape or clicking on the backdrop to close the modal. */
- this.disableClose = false;
- /** Width of the dialog. */
- this.width = '';
- /** Height of the dialog. */
- this.height = '';
- /** Max-width of the dialog. If a number is provided, assumes pixel units. Defaults to 80vw. */
- this.maxWidth = '80vw';
- /** Data being injected into the child component. */
- this.data = null;
- /** ID of the element that describes the dialog. */
- this.ariaDescribedBy = null;
- /** ID of the element that labels the dialog. */
- this.ariaLabelledBy = null;
- /** Aria label to assign to the dialog element. */
- this.ariaLabel = null;
- /** Whether this is a modal dialog. Used to set the `aria-modal` attribute. */
- this.ariaModal = true;
- /**
- * Where the dialog should focus on open.
- * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or
- * AutoFocusTarget instead.
- */
- this.autoFocus = 'first-tabbable';
- /**
- * Whether the dialog should restore focus to the
- * previously-focused element, after it's closed.
- */
- this.restoreFocus = true;
- /** Whether to wait for the opening animation to finish before trapping focus. */
- this.delayFocusTrap = true;
- /**
- * Whether the dialog should close when the user goes backwards/forwards in history.
- * Note that this usually doesn't include clicking on links (unless the user is using
- * the `HashLocationStrategy`).
- */
- this.closeOnNavigation = true;
- // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling.
- }
- }
- /** Class added when the dialog is open. */
- const OPEN_CLASS = 'mdc-dialog--open';
- /** Class added while the dialog is opening. */
- const OPENING_CLASS = 'mdc-dialog--opening';
- /** Class added while the dialog is closing. */
- const CLOSING_CLASS = 'mdc-dialog--closing';
- /** Duration of the opening animation in milliseconds. */
- const OPEN_ANIMATION_DURATION = 150;
- /** Duration of the closing animation in milliseconds. */
- const CLOSE_ANIMATION_DURATION = 75;
- /**
- * Base class for the `MatDialogContainer`. The base class does not implement
- * animations as these are left to implementers of the dialog container.
- */
- // tslint:disable-next-line:validate-decorators
- class _MatDialogContainerBase extends CdkDialogContainer {
- constructor(elementRef, focusTrapFactory, _document, dialogConfig, interactivityChecker, ngZone, overlayRef, focusMonitor) {
- super(elementRef, focusTrapFactory, _document, dialogConfig, interactivityChecker, ngZone, overlayRef, focusMonitor);
- /** Emits when an animation state changes. */
- this._animationStateChanged = new EventEmitter();
- }
- _captureInitialFocus() {
- if (!this._config.delayFocusTrap) {
- this._trapFocus();
- }
- }
- /**
- * Callback for when the open dialog animation has finished. Intended to
- * be called by sub-classes that use different animation implementations.
- */
- _openAnimationDone(totalTime) {
- if (this._config.delayFocusTrap) {
- this._trapFocus();
- }
- this._animationStateChanged.next({ state: 'opened', totalTime });
- }
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: _MatDialogContainerBase, deps: [{ token: i0.ElementRef }, { token: i1.FocusTrapFactory }, { token: DOCUMENT, optional: true }, { token: MatDialogConfig }, { token: i1.InteractivityChecker }, { token: i0.NgZone }, { token: i1$1.OverlayRef }, { token: i1.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component }); }
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: _MatDialogContainerBase, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
- }
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: _MatDialogContainerBase, decorators: [{
- type: Component,
- args: [{ template: '' }]
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FocusTrapFactory }, { type: undefined, decorators: [{
- type: Optional
- }, {
- type: Inject,
- args: [DOCUMENT]
- }] }, { type: MatDialogConfig }, { type: i1.InteractivityChecker }, { type: i0.NgZone }, { type: i1$1.OverlayRef }, { type: i1.FocusMonitor }]; } });
- const TRANSITION_DURATION_PROPERTY = '--mat-dialog-transition-duration';
- // TODO(mmalerba): Remove this function after animation durations are required
- // to be numbers.
- /**
- * Converts a CSS time string to a number in ms. If the given time is already a
- * number, it is assumed to be in ms.
- */
- function parseCssTime(time) {
- if (time == null) {
- return null;
- }
- if (typeof time === 'number') {
- return time;
- }
- if (time.endsWith('ms')) {
- return coerceNumberProperty(time.substring(0, time.length - 2));
- }
- if (time.endsWith('s')) {
- return coerceNumberProperty(time.substring(0, time.length - 1)) * 1000;
- }
- if (time === '0') {
- return 0;
- }
- return null; // anything else is invalid.
- }
- /**
- * Internal component that wraps user-provided dialog content in a MDC dialog.
- * @docs-private
- */
- class MatDialogContainer extends _MatDialogContainerBase {
- constructor(elementRef, focusTrapFactory, document, dialogConfig, checker, ngZone, overlayRef, _animationMode, focusMonitor) {
- super(elementRef, focusTrapFactory, document, dialogConfig, checker, ngZone, overlayRef, focusMonitor);
- this._animationMode = _animationMode;
- /** Whether animations are enabled. */
- this._animationsEnabled = this._animationMode !== 'NoopAnimations';
- /** Host element of the dialog container component. */
- this._hostElement = this._elementRef.nativeElement;
- /** Duration of the dialog open animation. */
- this._openAnimationDuration = this._animationsEnabled
- ? parseCssTime(this._config.enterAnimationDuration) ?? OPEN_ANIMATION_DURATION
- : 0;
- /** Duration of the dialog close animation. */
- this._closeAnimationDuration = this._animationsEnabled
- ? parseCssTime(this._config.exitAnimationDuration) ?? CLOSE_ANIMATION_DURATION
- : 0;
- /** Current timer for dialog animations. */
- this._animationTimer = null;
- /**
- * Completes the dialog open by clearing potential animation classes, trapping
- * focus and emitting an opened event.
- */
- this._finishDialogOpen = () => {
- this._clearAnimationClasses();
- this._openAnimationDone(this._openAnimationDuration);
- };
- /**
- * Completes the dialog close by clearing potential animation classes, restoring
- * focus and emitting a closed event.
- */
- this._finishDialogClose = () => {
- this._clearAnimationClasses();
- this._animationStateChanged.emit({ state: 'closed', totalTime: this._closeAnimationDuration });
- };
- }
- _contentAttached() {
- // Delegate to the original dialog-container initialization (i.e. saving the
- // previous element, setting up the focus trap and moving focus to the container).
- super._contentAttached();
- // Note: Usually we would be able to use the MDC dialog foundation here to handle
- // the dialog animation for us, but there are a few reasons why we just leverage
- // their styles and not use the runtime foundation code:
- // 1. Foundation does not allow us to disable animations.
- // 2. Foundation contains unnecessary features we don't need and aren't
- // tree-shakeable. e.g. background scrim, keyboard event handlers for ESC button.
- // 3. Foundation uses unnecessary timers for animations to work around limitations
- // in React's `setState` mechanism.
- // https://github.com/material-components/material-components-web/pull/3682.
- this._startOpenAnimation();
- }
- ngOnDestroy() {
- super.ngOnDestroy();
- if (this._animationTimer !== null) {
- clearTimeout(this._animationTimer);
- }
- }
- /** Starts the dialog open animation if enabled. */
- _startOpenAnimation() {
- this._animationStateChanged.emit({ state: 'opening', totalTime: this._openAnimationDuration });
- if (this._animationsEnabled) {
- this._hostElement.style.setProperty(TRANSITION_DURATION_PROPERTY, `${this._openAnimationDuration}ms`);
- // We need to give the `setProperty` call from above some time to be applied.
- // One would expect that the open class is added once the animation finished, but MDC
- // uses the open class in combination with the opening class to start the animation.
- this._requestAnimationFrame(() => this._hostElement.classList.add(OPENING_CLASS, OPEN_CLASS));
- this._waitForAnimationToComplete(this._openAnimationDuration, this._finishDialogOpen);
- }
- else {
- this._hostElement.classList.add(OPEN_CLASS);
- // Note: We could immediately finish the dialog opening here with noop animations,
- // but we defer until next tick so that consumers can subscribe to `afterOpened`.
- // Executing this immediately would mean that `afterOpened` emits synchronously
- // on `dialog.open` before the consumer had a change to subscribe to `afterOpened`.
- Promise.resolve().then(() => this._finishDialogOpen());
- }
- }
- /**
- * Starts the exit animation of the dialog if enabled. This method is
- * called by the dialog ref.
- */
- _startExitAnimation() {
- this._animationStateChanged.emit({ state: 'closing', totalTime: this._closeAnimationDuration });
- this._hostElement.classList.remove(OPEN_CLASS);
- if (this._animationsEnabled) {
- this._hostElement.style.setProperty(TRANSITION_DURATION_PROPERTY, `${this._openAnimationDuration}ms`);
- // We need to give the `setProperty` call from above some time to be applied.
- this._requestAnimationFrame(() => this._hostElement.classList.add(CLOSING_CLASS));
- this._waitForAnimationToComplete(this._closeAnimationDuration, this._finishDialogClose);
- }
- else {
- // This subscription to the `OverlayRef#backdropClick` observable in the `DialogRef` is
- // set up before any user can subscribe to the backdrop click. The subscription triggers
- // the dialog close and this method synchronously. If we'd synchronously emit the `CLOSED`
- // animation state event if animations are disabled, the overlay would be disposed
- // immediately and all other subscriptions to `DialogRef#backdropClick` would be silently
- // skipped. We work around this by waiting with the dialog close until the next tick when
- // all subscriptions have been fired as expected. This is not an ideal solution, but
- // there doesn't seem to be any other good way. Alternatives that have been considered:
- // 1. Deferring `DialogRef.close`. This could be a breaking change due to a new microtask.
- // Also this issue is specific to the MDC implementation where the dialog could
- // technically be closed synchronously. In the non-MDC one, Angular animations are used
- // and closing always takes at least a tick.
- // 2. Ensuring that user subscriptions to `backdropClick`, `keydownEvents` in the dialog
- // ref are first. This would solve the issue, but has the risk of memory leaks and also
- // doesn't solve the case where consumers call `DialogRef.close` in their subscriptions.
- // Based on the fact that this is specific to the MDC-based implementation of the dialog
- // animations, the defer is applied here.
- Promise.resolve().then(() => this._finishDialogClose());
- }
- }
- /** Clears all dialog animation classes. */
- _clearAnimationClasses() {
- this._hostElement.classList.remove(OPENING_CLASS, CLOSING_CLASS);
- }
- _waitForAnimationToComplete(duration, callback) {
- if (this._animationTimer !== null) {
- clearTimeout(this._animationTimer);
- }
- // Note that we want this timer to run inside the NgZone, because we want
- // the related events like `afterClosed` to be inside the zone as well.
- this._animationTimer = setTimeout(callback, duration);
- }
- /** Runs a callback in `requestAnimationFrame`, if available. */
- _requestAnimationFrame(callback) {
- this._ngZone.runOutsideAngular(() => {
- if (typeof requestAnimationFrame === 'function') {
- requestAnimationFrame(callback);
- }
- else {
- callback();
- }
- });
- }
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MatDialogContainer, deps: [{ token: i0.ElementRef }, { token: i1.FocusTrapFactory }, { token: DOCUMENT, optional: true }, { token: MatDialogConfig }, { token: i1.InteractivityChecker }, { token: i0.NgZone }, { token: i1$1.OverlayRef }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: i1.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component }); }
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: MatDialogContainer, selector: "mat-dialog-container", host: { attributes: { "tabindex": "-1" }, properties: { "attr.aria-modal": "_config.ariaModal", "id": "_config.id", "attr.role": "_config.role", "attr.aria-labelledby": "_config.ariaLabel ? null : _ariaLabelledBy", "attr.aria-label": "_config.ariaLabel", "attr.aria-describedby": "_config.ariaDescribedBy || null", "class._mat-animation-noopable": "!_animationsEnabled" }, classAttribute: "mat-mdc-dialog-container mdc-dialog" }, usesInheritance: true, ngImport: i0, template: "<div class=\"mdc-dialog__container\">\n <div class=\"mat-mdc-dialog-surface mdc-dialog__surface\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n</div>\n", styles: [".mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-dialog,.mdc-dialog__scrim{position:fixed;top:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.mdc-dialog{display:none;z-index:var(--mdc-dialog-z-index, 7)}.mdc-dialog .mdc-dialog__content{padding:20px 24px 20px 24px}.mdc-dialog .mdc-dialog__surface{min-width:280px}@media(max-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:calc(100vw - 32px)}}@media(min-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:560px}}.mdc-dialog .mdc-dialog__surface{max-height:calc(100% - 32px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-width:none}@media(max-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px;width:560px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 112px)}}@media(max-width: 720px)and (min-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:560px}}@media(max-width: 720px)and (max-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:calc(100vh - 160px)}}@media(max-width: 720px)and (min-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px}}@media(max-width: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-height: 400px),(max-width: 600px),(min-width: 720px)and (max-height: 400px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{height:100%;max-height:100vh;max-width:100vw;width:100vw;border-radius:0}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{order:-1;left:-12px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__header{padding:0 16px 9px;justify-content:flex-start}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__title{margin-left:calc(16px - 2 * 12px)}}@media(min-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 400px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}.mdc-dialog.mdc-dialog__scrim--hidden .mdc-dialog__scrim{opacity:0}.mdc-dialog__scrim{opacity:0;z-index:-1}.mdc-dialog__container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;transform:scale(0.8);opacity:0;pointer-events:none}.mdc-dialog__surface{position:relative;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;max-width:100%;max-height:100%;pointer-events:auto;overflow-y:auto;outline:0}.mdc-dialog__surface .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}[dir=rtl] .mdc-dialog__surface,.mdc-dialog__surface[dir=rtl]{text-align:right}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-dialog__surface{outline:2px solid windowText}}.mdc-dialog__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:\"\";pointer-events:none}@media screen and (forced-colors: active){.mdc-dialog__surface::before{border-color:CanvasText}}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.mdc-dialog__surface::before{content:none}}.mdc-dialog__title{display:block;margin-top:0;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.mdc-dialog__title::before{display:inline-block;width:0;height:40px;content:\"\";vertical-align:0}[dir=rtl] .mdc-dialog__title,.mdc-dialog__title[dir=rtl]{text-align:right}.mdc-dialog--scrollable .mdc-dialog__title{margin-bottom:1px;padding-bottom:15px}.mdc-dialog--fullscreen .mdc-dialog__header{align-items:baseline;border-bottom:1px solid rgba(0,0,0,0);display:inline-flex;justify-content:space-between;padding:0 24px 9px;z-index:1}@media screen and (forced-colors: active){.mdc-dialog--fullscreen .mdc-dialog__header{border-bottom-color:CanvasText}}.mdc-dialog--fullscreen .mdc-dialog__header .mdc-dialog__close{right:-12px}.mdc-dialog--fullscreen .mdc-dialog__title{margin-bottom:0;padding:0;border-bottom:0}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__title{border-bottom:0;margin-bottom:0}.mdc-dialog--fullscreen .mdc-dialog__close{top:5px}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--fullscreen--titleless .mdc-dialog__close{margin-top:4px}.mdc-dialog--fullscreen--titleless.mdc-dialog--scrollable .mdc-dialog__close{margin-top:0}.mdc-dialog__content{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto}.mdc-dialog__content>:first-child{margin-top:0}.mdc-dialog__content>:last-child{margin-bottom:0}.mdc-dialog__title+.mdc-dialog__content,.mdc-dialog__header+.mdc-dialog__content{padding-top:0}.mdc-dialog--scrollable .mdc-dialog__title+.mdc-dialog__content{padding-top:8px;padding-bottom:8px}.mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:6px 0 0}.mdc-dialog--scrollable .mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:0}.mdc-dialog__actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--stacked .mdc-dialog__actions{flex-direction:column;align-items:flex-end}.mdc-dialog__button{margin-left:8px;margin-right:0;max-width:100%;text-align:right}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{margin-left:0;margin-right:8px}.mdc-dialog__button:first-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button:first-child,.mdc-dialog__button:first-child[dir=rtl]{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{text-align:left}.mdc-dialog--stacked .mdc-dialog__button:not(:first-child){margin-top:12px}.mdc-dialog--open,.mdc-dialog--opening,.mdc-dialog--closing{display:flex}.mdc-dialog--opening .mdc-dialog__scrim{transition:opacity 150ms linear}.mdc-dialog--opening .mdc-dialog__container{transition:opacity 75ms linear,transform 150ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-dialog--closing .mdc-dialog__scrim,.mdc-dialog--closing .mdc-dialog__container{transition:opacity 75ms linear}.mdc-dialog--closing .mdc-dialog__container{transform:none}.mdc-dialog--open .mdc-dialog__scrim{opacity:1}.mdc-dialog--open .mdc-dialog__container{transform:none;opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim{opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{transition:opacity 75ms linear}.mdc-dialog--open.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim{transition:opacity 150ms linear}.mdc-dialog__surface-scrim{display:none;opacity:0;position:absolute;width:100%;height:100%;z-index:1}.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{display:block}.mdc-dialog-scroll-lock{overflow:hidden}.mdc-dialog--no-content-padding .mdc-dialog__content{padding:0}.mdc-dialog--sheet .mdc-dialog__container .mdc-dialog__close{right:12px;top:9px;position:absolute;z-index:1}.mdc-dialog__scrim--removed{pointer-events:none}.mdc-dialog__scrim--removed .mdc-dialog__scrim,.mdc-dialog__scrim--removed .mdc-dialog__surface-scrim{display:none}.mat-mdc-dialog-content{max-height:65vh}.mat-mdc-dialog-container{position:static;display:block}.mat-mdc-dialog-container,.mat-mdc-dialog-container .mdc-dialog__container,.mat-mdc-dialog-container .mdc-dialog__surface{max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mat-mdc-dialog-container .mdc-dialog__surface{display:block;width:100%;height:100%}.mat-mdc-dialog-container{--mdc-dialog-container-elevation-shadow:0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);--mdc-dialog-container-shadow-color:#000;--mdc-dialog-container-shape:4px;--mdc-dialog-container-elevation: var(--mdc-dialog-container-elevation-shadow);outline:0}.mat-mdc-dialog-container .mdc-dialog__surface{background-color:var(--mdc-dialog-container-color, white)}.mat-mdc-dialog-container .mdc-dialog__surface{box-shadow:var(--mdc-dialog-container-elevation, 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12))}.mat-mdc-dialog-container .mdc-dialog__surface{border-radius:var(--mdc-dialog-container-shape, 4px)}.mat-mdc-dialog-container .mdc-dialog__title{font-family:var(--mdc-dialog-subhead-font, Roboto, sans-serif);line-height:var(--mdc-dialog-subhead-line-height, 1.5rem);font-size:var(--mdc-dialog-subhead-size, 1rem);font-weight:var(--mdc-dialog-subhead-weight, 400);letter-spacing:var(--mdc-dialog-subhead-tracking, 0.03125em)}.mat-mdc-dialog-container .mdc-dialog__title{color:var(--mdc-dialog-subhead-color, rgba(0, 0, 0, 0.87))}.mat-mdc-dialog-container .mdc-dialog__content{font-family:var(--mdc-dialog-supporting-text-font, Roboto, sans-serif);line-height:var(--mdc-dialog-supporting-text-line-height, 1.5rem);font-size:var(--mdc-dialog-supporting-text-size, 1rem);font-weight:var(--mdc-dialog-supporting-text-weight, 400);letter-spacing:var(--mdc-dialog-supporting-text-tracking, 0.03125em)}.mat-mdc-dialog-container .mdc-dialog__content{color:var(--mdc-dialog-supporting-text-color, rgba(0, 0, 0, 0.6))}.mat-mdc-dialog-container .mdc-dialog__container{transition-duration:var(--mat-dialog-transition-duration, 0ms)}.mat-mdc-dialog-container._mat-animation-noopable .mdc-dialog__container{transition:none}.mat-mdc-dialog-content{display:block}.mat-mdc-dialog-actions{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}"], dependencies: [{ kind: "directive", type: i4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
- }
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MatDialogContainer, decorators: [{
- type: Component,
- args: [{ selector: 'mat-dialog-container', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, host: {
- 'class': 'mat-mdc-dialog-container mdc-dialog',
- 'tabindex': '-1',
- '[attr.aria-modal]': '_config.ariaModal',
- '[id]': '_config.id',
- '[attr.role]': '_config.role',
- '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledBy',
- '[attr.aria-label]': '_config.ariaLabel',
- '[attr.aria-describedby]': '_config.ariaDescribedBy || null',
- '[class._mat-animation-noopable]': '!_animationsEnabled',
- }, template: "<div class=\"mdc-dialog__container\">\n <div class=\"mat-mdc-dialog-surface mdc-dialog__surface\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n</div>\n", styles: [".mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-dialog,.mdc-dialog__scrim{position:fixed;top:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.mdc-dialog{display:none;z-index:var(--mdc-dialog-z-index, 7)}.mdc-dialog .mdc-dialog__content{padding:20px 24px 20px 24px}.mdc-dialog .mdc-dialog__surface{min-width:280px}@media(max-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:calc(100vw - 32px)}}@media(min-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:560px}}.mdc-dialog .mdc-dialog__surface{max-height:calc(100% - 32px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-width:none}@media(max-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px;width:560px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 112px)}}@media(max-width: 720px)and (min-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:560px}}@media(max-width: 720px)and (max-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:calc(100vh - 160px)}}@media(max-width: 720px)and (min-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px}}@media(max-width: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-height: 400px),(max-width: 600px),(min-width: 720px)and (max-height: 400px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{height:100%;max-height:100vh;max-width:100vw;width:100vw;border-radius:0}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{order:-1;left:-12px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__header{padding:0 16px 9px;justify-content:flex-start}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__title{margin-left:calc(16px - 2 * 12px)}}@media(min-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 400px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}.mdc-dialog.mdc-dialog__scrim--hidden .mdc-dialog__scrim{opacity:0}.mdc-dialog__scrim{opacity:0;z-index:-1}.mdc-dialog__container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;transform:scale(0.8);opacity:0;pointer-events:none}.mdc-dialog__surface{position:relative;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;max-width:100%;max-height:100%;pointer-events:auto;overflow-y:auto;outline:0}.mdc-dialog__surface .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}[dir=rtl] .mdc-dialog__surface,.mdc-dialog__surface[dir=rtl]{text-align:right}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-dialog__surface{outline:2px solid windowText}}.mdc-dialog__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:\"\";pointer-events:none}@media screen and (forced-colors: active){.mdc-dialog__surface::before{border-color:CanvasText}}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.mdc-dialog__surface::before{content:none}}.mdc-dialog__title{display:block;margin-top:0;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.mdc-dialog__title::before{display:inline-block;width:0;height:40px;content:\"\";vertical-align:0}[dir=rtl] .mdc-dialog__title,.mdc-dialog__title[dir=rtl]{text-align:right}.mdc-dialog--scrollable .mdc-dialog__title{margin-bottom:1px;padding-bottom:15px}.mdc-dialog--fullscreen .mdc-dialog__header{align-items:baseline;border-bottom:1px solid rgba(0,0,0,0);display:inline-flex;justify-content:space-between;padding:0 24px 9px;z-index:1}@media screen and (forced-colors: active){.mdc-dialog--fullscreen .mdc-dialog__header{border-bottom-color:CanvasText}}.mdc-dialog--fullscreen .mdc-dialog__header .mdc-dialog__close{right:-12px}.mdc-dialog--fullscreen .mdc-dialog__title{margin-bottom:0;padding:0;border-bottom:0}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__title{border-bottom:0;margin-bottom:0}.mdc-dialog--fullscreen .mdc-dialog__close{top:5px}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--fullscreen--titleless .mdc-dialog__close{margin-top:4px}.mdc-dialog--fullscreen--titleless.mdc-dialog--scrollable .mdc-dialog__close{margin-top:0}.mdc-dialog__content{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto}.mdc-dialog__content>:first-child{margin-top:0}.mdc-dialog__content>:last-child{margin-bottom:0}.mdc-dialog__title+.mdc-dialog__content,.mdc-dialog__header+.mdc-dialog__content{padding-top:0}.mdc-dialog--scrollable .mdc-dialog__title+.mdc-dialog__content{padding-top:8px;padding-bottom:8px}.mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:6px 0 0}.mdc-dialog--scrollable .mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:0}.mdc-dialog__actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--stacked .mdc-dialog__actions{flex-direction:column;align-items:flex-end}.mdc-dialog__button{margin-left:8px;margin-right:0;max-width:100%;text-align:right}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{margin-left:0;margin-right:8px}.mdc-dialog__button:first-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button:first-child,.mdc-dialog__button:first-child[dir=rtl]{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{text-align:left}.mdc-dialog--stacked .mdc-dialog__button:not(:first-child){margin-top:12px}.mdc-dialog--open,.mdc-dialog--opening,.mdc-dialog--closing{display:flex}.mdc-dialog--opening .mdc-dialog__scrim{transition:opacity 150ms linear}.mdc-dialog--opening .mdc-dialog__container{transition:opacity 75ms linear,transform 150ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-dialog--closing .mdc-dialog__scrim,.mdc-dialog--closing .mdc-dialog__container{transition:opacity 75ms linear}.mdc-dialog--closing .mdc-dialog__container{transform:none}.mdc-dialog--open .mdc-dialog__scrim{opacity:1}.mdc-dialog--open .mdc-dialog__container{transform:none;opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim{opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{transition:opacity 75ms linear}.mdc-dialog--open.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim{transition:opacity 150ms linear}.mdc-dialog__surface-scrim{display:none;opacity:0;position:absolute;width:100%;height:100%;z-index:1}.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{display:block}.mdc-dialog-scroll-lock{overflow:hidden}.mdc-dialog--no-content-padding .mdc-dialog__content{padding:0}.mdc-dialog--sheet .mdc-dialog__container .mdc-dialog__close{right:12px;top:9px;position:absolute;z-index:1}.mdc-dialog__scrim--removed{pointer-events:none}.mdc-dialog__scrim--removed .mdc-dialog__scrim,.mdc-dialog__scrim--removed .mdc-dialog__surface-scrim{display:none}.mat-mdc-dialog-content{max-height:65vh}.mat-mdc-dialog-container{position:static;display:block}.mat-mdc-dialog-container,.mat-mdc-dialog-container .mdc-dialog__container,.mat-mdc-dialog-container .mdc-dialog__surface{max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mat-mdc-dialog-container .mdc-dialog__surface{display:block;width:100%;height:100%}.mat-mdc-dialog-container{--mdc-dialog-container-elevation-shadow:0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);--mdc-dialog-container-shadow-color:#000;--mdc-dialog-container-shape:4px;--mdc-dialog-container-elevation: var(--mdc-dialog-container-elevation-shadow);outline:0}.mat-mdc-dialog-container .mdc-dialog__surface{background-color:var(--mdc-dialog-container-color, white)}.mat-mdc-dialog-container .mdc-dialog__surface{box-shadow:var(--mdc-dialog-container-elevation, 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12))}.mat-mdc-dialog-container .mdc-dialog__surface{border-radius:var(--mdc-dialog-container-shape, 4px)}.mat-mdc-dialog-container .mdc-dialog__title{font-family:var(--mdc-dialog-subhead-font, Roboto, sans-serif);line-height:var(--mdc-dialog-subhead-line-height, 1.5rem);font-size:var(--mdc-dialog-subhead-size, 1rem);font-weight:var(--mdc-dialog-subhead-weight, 400);letter-spacing:var(--mdc-dialog-subhead-tracking, 0.03125em)}.mat-mdc-dialog-container .mdc-dialog__title{color:var(--mdc-dialog-subhead-color, rgba(0, 0, 0, 0.87))}.mat-mdc-dialog-container .mdc-dialog__content{font-family:var(--mdc-dialog-supporting-text-font, Roboto, sans-serif);line-height:var(--mdc-dialog-supporting-text-line-height, 1.5rem);font-size:var(--mdc-dialog-supporting-text-size, 1rem);font-weight:var(--mdc-dialog-supporting-text-weight, 400);letter-spacing:var(--mdc-dialog-supporting-text-tracking, 0.03125em)}.mat-mdc-dialog-container .mdc-dialog__content{color:var(--mdc-dialog-supporting-text-color, rgba(0, 0, 0, 0.6))}.mat-mdc-dialog-container .mdc-dialog__container{transition-duration:var(--mat-dialog-transition-duration, 0ms)}.mat-mdc-dialog-container._mat-animation-noopable .mdc-dialog__container{transition:none}.mat-mdc-dialog-content{display:block}.mat-mdc-dialog-actions{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}"] }]
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FocusTrapFactory }, { type: undefined, decorators: [{
- type: Optional
- }, {
- type: Inject,
- args: [DOCUMENT]
- }] }, { type: MatDialogConfig }, { type: i1.InteractivityChecker }, { type: i0.NgZone }, { type: i1$1.OverlayRef }, { type: undefined, decorators: [{
- type: Optional
- }, {
- type: Inject,
- args: [ANIMATION_MODULE_TYPE]
- }] }, { type: i1.FocusMonitor }]; } });
- /**
- * Reference to a dialog opened via the MatDialog service.
- */
- class MatDialogRef {
- constructor(_ref, config, _containerInstance) {
- this._ref = _ref;
- this._containerInstance = _containerInstance;
- /** Subject for notifying the user that the dialog has finished opening. */
- this._afterOpened = new Subject();
- /** Subject for notifying the user that the dialog has started closing. */
- this._beforeClosed = new Subject();
- /** Current state of the dialog. */
- this._state = 0 /* MatDialogState.OPEN */;
- this.disableClose = config.disableClose;
- this.id = _ref.id;
- // Emit when opening animation completes
- _containerInstance._animationStateChanged
- .pipe(filter(event => event.state === 'opened'), take(1))
- .subscribe(() => {
- this._afterOpened.next();
- this._afterOpened.complete();
- });
- // Dispose overlay when closing animation is complete
- _containerInstance._animationStateChanged
- .pipe(filter(event => event.state === 'closed'), take(1))
- .subscribe(() => {
- clearTimeout(this._closeFallbackTimeout);
- this._finishDialogClose();
- });
- _ref.overlayRef.detachments().subscribe(() => {
- this._beforeClosed.next(this._result);
- this._beforeClosed.complete();
- this._finishDialogClose();
- });
- merge(this.backdropClick(), this.keydownEvents().pipe(filter(event => event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)))).subscribe(event => {
- if (!this.disableClose) {
- event.preventDefault();
- _closeDialogVia(this, event.type === 'keydown' ? 'keyboard' : 'mouse');
- }
- });
- }
- /**
- * Close the dialog.
- * @param dialogResult Optional result to return to the dialog opener.
- */
- close(dialogResult) {
- this._result = dialogResult;
- // Transition the backdrop in parallel to the dialog.
- this._containerInstance._animationStateChanged
- .pipe(filter(event => event.state === 'closing'), take(1))
- .subscribe(event => {
- this._beforeClosed.next(dialogResult);
- this._beforeClosed.complete();
- this._ref.overlayRef.detachBackdrop();
- // The logic that disposes of the overlay depends on the exit animation completing, however
- // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback
- // timeout which will clean everything up if the animation hasn't fired within the specified
- // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the
- // vast majority of cases the timeout will have been cleared before it has the chance to fire.
- this._closeFallbackTimeout = setTimeout(() => this._finishDialogClose(), event.totalTime + 100);
- });
- this._state = 1 /* MatDialogState.CLOSING */;
- this._containerInstance._startExitAnimation();
- }
- /**
- * Gets an observable that is notified when the dialog is finished opening.
- */
- afterOpened() {
- return this._afterOpened;
- }
- /**
- * Gets an observable that is notified when the dialog is finished closing.
- */
- afterClosed() {
- return this._ref.closed;
- }
- /**
- * Gets an observable that is notified when the dialog has started closing.
- */
- beforeClosed() {
- return this._beforeClosed;
- }
- /**
- * Gets an observable that emits when the overlay's backdrop has been clicked.
- */
- backdropClick() {
- return this._ref.backdropClick;
- }
- /**
- * Gets an observable that emits when keydown events are targeted on the overlay.
- */
- keydownEvents() {
- return this._ref.keydownEvents;
- }
- /**
- * Updates the dialog's position.
- * @param position New dialog position.
- */
- updatePosition(position) {
- let strategy = this._ref.config.positionStrategy;
- if (position && (position.left || position.right)) {
- position.left ? strategy.left(position.left) : strategy.right(position.right);
- }
- else {
- strategy.centerHorizontally();
- }
- if (position && (position.top || position.bottom)) {
- position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);
- }
- else {
- strategy.centerVertically();
- }
- this._ref.updatePosition();
- return this;
- }
- /**
- * Updates the dialog's width and height.
- * @param width New width of the dialog.
- * @param height New height of the dialog.
- */
- updateSize(width = '', height = '') {
- this._ref.updateSize(width, height);
- return this;
- }
- /** Add a CSS class or an array of classes to the overlay pane. */
- addPanelClass(classes) {
- this._ref.addPanelClass(classes);
- return this;
- }
- /** Remove a CSS class or an array of classes from the overlay pane. */
- removePanelClass(classes) {
- this._ref.removePanelClass(classes);
- return this;
- }
- /** Gets the current state of the dialog's lifecycle. */
- getState() {
- return this._state;
- }
- /**
- * Finishes the dialog close by updating the state of the dialog
- * and disposing the overlay.
- */
- _finishDialogClose() {
- this._state = 2 /* MatDialogState.CLOSED */;
- this._ref.close(this._result, { focusOrigin: this._closeInteractionType });
- this.componentInstance = null;
- }
- }
- /**
- * Closes the dialog with the specified interaction type. This is currently not part of
- * `MatDialogRef` as that would conflict with custom dialog ref mocks provided in tests.
- * More details. See: https://github.com/angular/components/pull/9257#issuecomment-651342226.
- */
- // TODO: Move this back into `MatDialogRef` when we provide an official mock dialog ref.
- function _closeDialogVia(ref, interactionType, result) {
- ref._closeInteractionType = interactionType;
- return ref.close(result);
- }
- /** Injection token that can be used to access the data that was passed in to a dialog. */
- const MAT_DIALOG_DATA = new InjectionToken('MatMdcDialogData');
- /** Injection token that can be used to specify default dialog options. */
- const MAT_DIALOG_DEFAULT_OPTIONS = new InjectionToken('mat-mdc-dialog-default-options');
- /** Injection token that determines the scroll handling while the dialog is open. */
- const MAT_DIALOG_SCROLL_STRATEGY = new InjectionToken('mat-mdc-dialog-scroll-strategy');
- /** @docs-private */
- function MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {
- return () => overlay.scrollStrategies.block();
- }
- /** @docs-private */
- const MAT_DIALOG_SCROLL_STRATEGY_PROVIDER = {
- provide: MAT_DIALOG_SCROLL_STRATEGY,
- deps: [Overlay],
- useFactory: MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY,
- };
- /** @docs-private */
- function MAT_DIALOG_SCROLL_STRATEGY_FACTORY(overlay) {
- return () => overlay.scrollStrategies.block();
- }
- // Counter for unique dialog ids.
- let uniqueId = 0;
- /**
- * Base class for dialog services. The base dialog service allows
- * for arbitrary dialog refs and dialog container components.
- */
- class _MatDialogBase {
- /** Keeps track of the currently-open dialogs. */
- get openDialogs() {
- return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;
- }
- /** Stream that emits when a dialog has been opened. */
- get afterOpened() {
- return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;
- }
- _getAfterAllClosed() {
- const parent = this._parentDialog;
- return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;
- }
- constructor(_overlay, injector, _defaultOptions, _parentDialog,
- /**
- * @deprecated No longer used. To be removed.
- * @breaking-change 15.0.0
- */
- _overlayContainer, scrollStrategy, _dialogRefConstructor, _dialogContainerType, _dialogDataToken,
- /**
- * @deprecated No longer used. To be removed.
- * @breaking-change 14.0.0
- */
- _animationMode) {
- this._overlay = _overlay;
- this._defaultOptions = _defaultOptions;
- this._parentDialog = _parentDialog;
- this._dialogRefConstructor = _dialogRefConstructor;
- this._dialogContainerType = _dialogContainerType;
- this._dialogDataToken = _dialogDataToken;
- this._openDialogsAtThisLevel = [];
- this._afterAllClosedAtThisLevel = new Subject();
- this._afterOpenedAtThisLevel = new Subject();
- this._idPrefix = 'mat-dialog-';
- this.dialogConfigClass = MatDialogConfig;
- /**
- * Stream that emits when all open dialog have finished closing.
- * Will emit on subscribe if there are no open dialogs to begin with.
- */
- this.afterAllClosed = defer(() => this.openDialogs.length
- ? this._getAfterAllClosed()
- : this._getAfterAllClosed().pipe(startWith(undefined)));
- this._scrollStrategy = scrollStrategy;
- this._dialog = injector.get(Dialog);
- }
- open(componentOrTemplateRef, config) {
- let dialogRef;
- config = { ...(this._defaultOptions || new MatDialogConfig()), ...config };
- config.id = config.id || `${this._idPrefix}${uniqueId++}`;
- config.scrollStrategy = config.scrollStrategy || this._scrollStrategy();
- const cdkRef = this._dialog.open(componentOrTemplateRef, {
- ...config,
- positionStrategy: this._overlay.position().global().centerHorizontally().centerVertically(),
- // Disable closing since we need to sync it up to the animation ourselves.
- disableClose: true,
- // Disable closing on destroy, because this service cleans up its open dialogs as well.
- // We want to do the cleanup here, rather than the CDK service, because the CDK destroys
- // the dialogs immediately whereas we want it to wait for the animations to finish.
- closeOnDestroy: false,
- // Disable closing on detachments so that we can sync up the animation.
- // The Material dialog ref handles this manually.
- closeOnOverlayDetachments: false,
- container: {
- type: this._dialogContainerType,
- providers: () => [
- // Provide our config as the CDK config as well since it has the same interface as the
- // CDK one, but it contains the actual values passed in by the user for things like
- // `disableClose` which we disable for the CDK dialog since we handle it ourselves.
- { provide: this.dialogConfigClass, useValue: config },
- { provide: DialogConfig, useValue: config },
- ],
- },
- templateContext: () => ({ dialogRef }),
- providers: (ref, cdkConfig, dialogContainer) => {
- dialogRef = new this._dialogRefConstructor(ref, config, dialogContainer);
- dialogRef.updatePosition(config?.position);
- return [
- { provide: this._dialogContainerType, useValue: dialogContainer },
- { provide: this._dialogDataToken, useValue: cdkConfig.data },
- { provide: this._dialogRefConstructor, useValue: dialogRef },
- ];
- },
- });
- // This can't be assigned in the `providers` callback, because
- // the instance hasn't been assigned to the CDK ref yet.
- dialogRef.componentInstance = cdkRef.componentInstance;
- this.openDialogs.push(dialogRef);
- this.afterOpened.next(dialogRef);
- dialogRef.afterClosed().subscribe(() => {
- const index = this.openDialogs.indexOf(dialogRef);
- if (index > -1) {
- this.openDialogs.splice(index, 1);
- if (!this.openDialogs.length) {
- this._getAfterAllClosed().next();
- }
- }
- });
- return dialogRef;
- }
- /**
- * Closes all of the currently-open dialogs.
- */
- closeAll() {
- this._closeDialogs(this.openDialogs);
- }
- /**
- * Finds an open dialog by its id.
- * @param id ID to use when looking up the dialog.
- */
- getDialogById(id) {
- return this.openDialogs.find(dialog => dialog.id === id);
- }
- ngOnDestroy() {
- // Only close the dialogs at this level on destroy
- // since the parent service may still be active.
- this._closeDialogs(this._openDialogsAtThisLevel);
- this._afterAllClosedAtThisLevel.complete();
- this._afterOpenedAtThisLevel.complete();
- }
- _closeDialogs(dialogs) {
- let i = dialogs.length;
- while (i--) {
- dialogs[i].close();
- }
- }
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: _MatDialogBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: _MatDialogBase }); }
- }
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: _MatDialogBase, decorators: [{
- type: Injectable
- }], ctorParameters: function () { return [{ type: i1$1.Overlay }, { type: i0.Injector }, { type: undefined }, { type: undefined }, { type: i1$1.OverlayContainer }, { type: undefined }, { type: i0.Type }, { type: i0.Type }, { type: i0.InjectionToken }, { type: undefined }]; } });
- /**
- * Service to open Material Design modal dialogs.
- */
- class MatDialog extends _MatDialogBase {
- constructor(overlay, injector,
- /**
- * @deprecated `_location` parameter to be removed.
- * @breaking-change 10.0.0
- */
- location, defaultOptions, scrollStrategy, parentDialog,
- /**
- * @deprecated No longer used. To be removed.
- * @breaking-change 15.0.0
- */
- overlayContainer,
- /**
- * @deprecated No longer used. To be removed.
- * @breaking-change 14.0.0
- */
- animationMode) {
- super(overlay, injector, defaultOptions, parentDialog, overlayContainer, scrollStrategy, MatDialogRef, MatDialogContainer, MAT_DIALOG_DATA, animationMode);
- this._idPrefix = 'mat-mdc-dialog-';
- }
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MatDialog, deps: [{ token: i1$1.Overlay }, { token: i0.Injector }, { token: i2.Location, optional: true }, { token: MAT_DIALOG_DEFAULT_OPTIONS, optional: true }, { token: MAT_DIALOG_SCROLL_STRATEGY }, { token: MatDialog, optional: true, skipSelf: true }, { token: i1$1.OverlayContainer }, { token: ANIMATION_MODULE_TYPE$1, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MatDialog }); }
- }
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MatDialog, decorators: [{
- type: Injectable
- }], ctorParameters: function () { return [{ type: i1$1.Overlay }, { type: i0.Injector }, { type: i2.Location, decorators: [{
- type: Optional
- }] }, { type: MatDialogConfig, decorators: [{
- type: Optional
- }, {
- type: Inject,
- args: [MAT_DIALOG_DEFAULT_OPTIONS]
- }] }, { type: undefined, decorators: [{
- type: Inject,
- args: [MAT_DIALOG_SCROLL_STRATEGY]
- }] }, { type: MatDialog, decorators: [{
- type: Optional
- }, {
- type: SkipSelf
- }] }, { type: i1$1.OverlayContainer }, { type: undefined, decorators: [{
- type: Optional
- }, {
- type: Inject,
- args: [ANIMATION_MODULE_TYPE$1]
- }] }]; } });
- /** Counter used to generate unique IDs for dialog elements. */
- let dialogElementUid = 0;
- /**
- * Button that will close the current dialog.
- */
- class MatDialogClose {
- constructor(
- // The dialog title directive is always used in combination with a `MatDialogRef`.
- // tslint:disable-next-line: lightweight-tokens
- dialogRef, _elementRef, _dialog) {
- this.dialogRef = dialogRef;
- this._elementRef = _elementRef;
- this._dialog = _dialog;
- /** Default to "button" to prevents accidental form submits. */
- this.type = 'button';
- }
- ngOnInit() {
- if (!this.dialogRef) {
- // When this directive is included in a dialog via TemplateRef (rather than being
- // in a Component), the DialogRef isn't available via injection because embedded
- // views cannot be given a custom injector. Instead, we look up the DialogRef by
- // ID. This must occur in `onInit`, as the ID binding for the dialog container won't
- // be resolved at constructor time.
- this.dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs);
- }
- }
- ngOnChanges(changes) {
- const proxiedChange = changes['_matDialogClose'] || changes['_matDialogCloseResult'];
- if (proxiedChange) {
- this.dialogResult = proxiedChange.currentValue;
- }
- }
- _onButtonClick(event) {
- // Determinate the focus origin using the click event, because using the FocusMonitor will
- // result in incorrect origins. Most of the time, close buttons will be auto focused in the
- // dialog, and therefore clicking the button won't result in a focus change. This means that
- // the FocusMonitor won't detect any origin change, and will always output `program`.
- _closeDialogVia(this.dialogRef, event.screenX === 0 && event.screenY === 0 ? 'keyboard' : 'mouse', this.dialogResult);
- }
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MatDialogClose, deps: [{ token: MatDialogRef, optional: true }, { token: i0.ElementRef }, { token: MatDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: { ariaLabel: ["aria-label", "ariaLabel"], type: "type", dialogResult: ["mat-dialog-close", "dialogResult"], _matDialogClose: ["matDialogClose", "_matDialogClose"] }, host: { listeners: { "click": "_onButtonClick($event)" }, properties: { "attr.aria-label": "ariaLabel || null", "attr.type": "type" } }, exportAs: ["matDialogClose"], usesOnChanges: true, ngImport: i0 }); }
- }
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MatDialogClose, decorators: [{
- type: Directive,
- args: [{
- selector: '[mat-dialog-close], [matDialogClose]',
- exportAs: 'matDialogClose',
- host: {
- '(click)': '_onButtonClick($event)',
- '[attr.aria-label]': 'ariaLabel || null',
- '[attr.type]': 'type',
- },
- }]
- }], ctorParameters: function () { return [{ type: MatDialogRef, decorators: [{
- type: Optional
- }] }, { type: i0.ElementRef }, { type: MatDialog }]; }, propDecorators: { ariaLabel: [{
- type: Input,
- args: ['aria-label']
- }], type: [{
- type: Input
- }], dialogResult: [{
- type: Input,
- args: ['mat-dialog-close']
- }], _matDialogClose: [{
- type: Input,
- args: ['matDialogClose']
- }] } });
- /**
- * Title of a dialog element. Stays fixed to the top of the dialog when scrolling.
- */
- class MatDialogTitle {
- constructor(
- // The dialog title directive is always used in combination with a `MatDialogRef`.
- // tslint:disable-next-line: lightweight-tokens
- _dialogRef, _elementRef, _dialog) {
- this._dialogRef = _dialogRef;
- this._elementRef = _elementRef;
- this._dialog = _dialog;
- this.id = `mat-mdc-dialog-title-${dialogElementUid++}`;
- }
- ngOnInit() {
- if (!this._dialogRef) {
- this._dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs);
- }
- if (this._dialogRef) {
- Promise.resolve().then(() => {
- const container = this._dialogRef._containerInstance;
- if (container && !container._ariaLabelledBy) {
- container._ariaLabelledBy = this.id;
- }
- });
- }
- }
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MatDialogTitle, deps: [{ token: MatDialogRef, optional: true }, { token: i0.ElementRef }, { token: MatDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: { id: "id" }, host: { properties: { "id": "id" }, classAttribute: "mat-mdc-dialog-title mdc-dialog__title" }, exportAs: ["matDialogTitle"], ngImport: i0 }); }
- }
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MatDialogTitle, decorators: [{
- type: Directive,
- args: [{
- selector: '[mat-dialog-title], [matDialogTitle]',
- exportAs: 'matDialogTitle',
- host: {
- 'class': 'mat-mdc-dialog-title mdc-dialog__title',
- '[id]': 'id',
- },
- }]
- }], ctorParameters: function () { return [{ type: MatDialogRef, decorators: [{
- type: Optional
- }] }, { type: i0.ElementRef }, { type: MatDialog }]; }, propDecorators: { id: [{
- type: Input
- }] } });
- /**
- * Scrollable content container of a dialog.
- */
- class MatDialogContent {
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MatDialogContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]", host: { classAttribute: "mat-mdc-dialog-content mdc-dialog__content" }, ngImport: i0 }); }
- }
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MatDialogContent, decorators: [{
- type: Directive,
- args: [{
- selector: `[mat-dialog-content], mat-dialog-content, [matDialogContent]`,
- host: { 'class': 'mat-mdc-dialog-content mdc-dialog__content' },
- }]
- }] });
- /**
- * Container for the bottom action buttons in a dialog.
- * Stays fixed to the bottom when scrolling.
- */
- class MatDialogActions {
- constructor() {
- /**
- * Horizontal alignment of action buttons.
- */
- this.align = 'start';
- }
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MatDialogActions, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: { align: "align" }, host: { properties: { "class.mat-mdc-dialog-actions-align-center": "align === \"center\"", "class.mat-mdc-dialog-actions-align-end": "align === \"end\"" }, classAttribute: "mat-mdc-dialog-actions mdc-dialog__actions" }, ngImport: i0 }); }
- }
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MatDialogActions, decorators: [{
- type: Directive,
- args: [{
- selector: `[mat-dialog-actions], mat-dialog-actions, [matDialogActions]`,
- host: {
- 'class': 'mat-mdc-dialog-actions mdc-dialog__actions',
- '[class.mat-mdc-dialog-actions-align-center]': 'align === "center"',
- '[class.mat-mdc-dialog-actions-align-end]': 'align === "end"',
- },
- }]
- }], propDecorators: { align: [{
- type: Input
- }] } });
- /**
- * Finds the closest MatDialogRef to an element by looking at the DOM.
- * @param element Element relative to which to look for a dialog.
- * @param openDialogs References to the currently-open dialogs.
- */
- function getClosestDialog(element, openDialogs) {
- let parent = element.nativeElement.parentElement;
- while (parent && !parent.classList.contains('mat-mdc-dialog-container')) {
- parent = parent.parentElement;
- }
- return parent ? openDialogs.find(dialog => dialog.id === parent.id) : null;
- }
- class MatDialogModule {
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MatDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: MatDialogModule, declarations: [MatDialogContainer,
- MatDialogClose,
- MatDialogTitle,
- MatDialogActions,
- MatDialogContent], imports: [DialogModule, OverlayModule, PortalModule, MatCommonModule], exports: [MatDialogContainer,
- MatDialogClose,
- MatDialogTitle,
- MatDialogContent,
- MatDialogActions,
- MatCommonModule] }); }
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MatDialogModule, providers: [MatDialog, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER], imports: [DialogModule, OverlayModule, PortalModule, MatCommonModule, MatCommonModule] }); }
- }
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: MatDialogModule, decorators: [{
- type: NgModule,
- args: [{
- imports: [DialogModule, OverlayModule, PortalModule, MatCommonModule],
- exports: [
- MatDialogContainer,
- MatDialogClose,
- MatDialogTitle,
- MatDialogContent,
- MatDialogActions,
- MatCommonModule,
- ],
- declarations: [
- MatDialogContainer,
- MatDialogClose,
- MatDialogTitle,
- MatDialogActions,
- MatDialogContent,
- ],
- providers: [MatDialog, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER],
- }]
- }] });
- /**
- * Default parameters for the animation for backwards compatibility.
- * @docs-private
- */
- const _defaultParams = {
- params: { enterAnimationDuration: '150ms', exitAnimationDuration: '75ms' },
- };
- /**
- * Animations used by MatDialog.
- * @docs-private
- */
- const matDialogAnimations = {
- /** Animation that is applied on the dialog container by default. */
- dialogContainer: trigger('dialogContainer', [
- // Note: The `enter` animation transitions to `transform: none`, because for some reason
- // specifying the transform explicitly, causes IE both to blur the dialog content and
- // decimate the animation performance. Leaving it as `none` solves both issues.
- state('void, exit', style({ opacity: 0, transform: 'scale(0.7)' })),
- state('enter', style({ transform: 'none' })),
- transition('* => enter', group([
- animate('{{enterAnimationDuration}} cubic-bezier(0, 0, 0.2, 1)', style({ transform: 'none', opacity: 1 })),
- query('@*', animateChild(), { optional: true }),
- ]), _defaultParams),
- transition('* => void, * => exit', group([
- animate('{{exitAnimationDuration}} cubic-bezier(0.4, 0.0, 0.2, 1)', style({ opacity: 0 })),
- query('@*', animateChild(), { optional: true }),
- ]), _defaultParams),
- ]),
- };
- /**
- * Generated bundle index. Do not edit.
- */
- export { MAT_DIALOG_DATA, MAT_DIALOG_DEFAULT_OPTIONS, MAT_DIALOG_SCROLL_STRATEGY, MAT_DIALOG_SCROLL_STRATEGY_FACTORY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, MatDialog, MatDialogActions, MatDialogClose, MatDialogConfig, MatDialogContainer, MatDialogContent, MatDialogModule, MatDialogRef, MatDialogTitle, _MatDialogBase, _MatDialogContainerBase, _closeDialogVia, _defaultParams, matDialogAnimations };
- //# sourceMappingURL=dialog.mjs.map
|