@angular/material 12.2.7 → 12.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/bundles/material-bottom-sheet.umd.js.map +1 -1
  2. package/bundles/material-core.umd.js +2 -2
  3. package/bundles/material-core.umd.js.map +1 -1
  4. package/bundles/material-datepicker.umd.js +2 -2
  5. package/bundles/material-datepicker.umd.js.map +1 -1
  6. package/bundles/material-dialog.umd.js.map +1 -1
  7. package/bundles/material-expansion.umd.js +1 -1
  8. package/bundles/material-input.umd.js +6 -0
  9. package/bundles/material-input.umd.js.map +1 -1
  10. package/bundles/material-snack-bar.umd.js.map +1 -1
  11. package/bundles/material-sort.umd.js +46 -8
  12. package/bundles/material-sort.umd.js.map +1 -1
  13. package/bundles/material-stepper.umd.js +7 -3
  14. package/bundles/material-stepper.umd.js.map +1 -1
  15. package/bundles/material-tooltip.umd.js.map +1 -1
  16. package/core/index.metadata.json +1 -1
  17. package/core/typography/_typography.scss +7 -2
  18. package/datepicker/_datepicker-theme.scss +1 -1
  19. package/datepicker/index.metadata.json +1 -1
  20. package/esm2015/bottom-sheet/bottom-sheet-ref.js +1 -1
  21. package/esm2015/core/common-behaviors/common-module.js +1 -1
  22. package/esm2015/core/version.js +1 -1
  23. package/esm2015/datepicker/calendar.js +3 -3
  24. package/esm2015/dialog/dialog-ref.js +1 -1
  25. package/esm2015/expansion/expansion-panel-header.js +1 -1
  26. package/esm2015/input/input.js +7 -1
  27. package/esm2015/snack-bar/snack-bar-container.js +1 -1
  28. package/esm2015/snack-bar/snack-bar-ref.js +1 -1
  29. package/esm2015/sort/sort-header-intl.js +1 -3
  30. package/esm2015/sort/sort-header.js +42 -6
  31. package/esm2015/stepper/step-header.js +3 -3
  32. package/esm2015/stepper/stepper-intl.js +5 -1
  33. package/esm2015/stepper/stepper.js +1 -1
  34. package/esm2015/tooltip/tooltip.js +1 -1
  35. package/expansion/index.metadata.json +1 -1
  36. package/fesm2015/bottom-sheet.js.map +1 -1
  37. package/fesm2015/core.js +2 -2
  38. package/fesm2015/core.js.map +1 -1
  39. package/fesm2015/datepicker.js +2 -2
  40. package/fesm2015/datepicker.js.map +1 -1
  41. package/fesm2015/dialog.js.map +1 -1
  42. package/fesm2015/expansion.js +1 -1
  43. package/fesm2015/input.js +6 -0
  44. package/fesm2015/input.js.map +1 -1
  45. package/fesm2015/snack-bar.js.map +1 -1
  46. package/fesm2015/sort.js +40 -6
  47. package/fesm2015/sort.js.map +1 -1
  48. package/fesm2015/stepper.js +7 -3
  49. package/fesm2015/stepper.js.map +1 -1
  50. package/fesm2015/tooltip.js.map +1 -1
  51. package/input/_input-theme.scss +8 -6
  52. package/input/index.metadata.json +1 -1
  53. package/input/input.d.ts +2 -0
  54. package/package.json +2 -2
  55. package/prebuilt-themes/deeppurple-amber.css +1 -1
  56. package/prebuilt-themes/indigo-pink.css +1 -1
  57. package/prebuilt-themes/pink-bluegrey.css +1 -1
  58. package/prebuilt-themes/purple-green.css +1 -1
  59. package/schematics/ng-add/index.js +1 -1
  60. package/schematics/ng-add/index.mjs +1 -1
  61. package/sort/index.metadata.json +1 -1
  62. package/sort/sort-header-intl.d.ts +0 -2
  63. package/sort/sort-header.d.ts +20 -3
  64. package/stepper/index.metadata.json +1 -1
  65. package/stepper/stepper-intl.d.ts +4 -0
  66. package/tabs/_tabs-theme.scss +6 -2
  67. package/tooltip/tooltip.d.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.js","sources":["../../../../../../src/material/dialog/dialog-config.ts","../../../../../../src/material/dialog/dialog-animations.ts","../../../../../../src/material/dialog/dialog-container.ts","../../../../../../src/material/dialog/dialog-ref.ts","../../../../../../src/material/dialog/dialog.ts","../../../../../../src/material/dialog/dialog-content-directives.ts","../../../../../../src/material/dialog/dialog-module.ts","../../../../../../src/material/dialog/public-api.ts","../../../../../../src/material/dialog/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ViewContainerRef, ComponentFactoryResolver} from '@angular/core';\nimport {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\n\n/** Valid ARIA roles for a dialog element. */\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** Possible overrides for a dialog's position. */\nexport interface DialogPosition {\n /** Override for the dialog's top position. */\n top?: string;\n\n /** Override for the dialog's bottom position. */\n bottom?: string;\n\n /** Override for the dialog's left position. */\n left?: string;\n\n /** Override for the dialog's right position. */\n right?: string;\n}\n\n/**\n * Configuration for opening a modal dialog with the MatDialog service.\n */\nexport class MatDialogConfig<D = any> {\n\n /**\n * Where the attached component should live in Angular's *logical* component tree.\n * This affects what is available for injection and the change detection order for the\n * component instantiated inside of the dialog. This does not affect where the dialog\n * content will be rendered.\n */\n viewContainerRef?: ViewContainerRef;\n\n /** ID for the dialog. If omitted, a unique one will be generated. */\n id?: string;\n\n /** The ARIA role of the dialog element. */\n role?: DialogRole = 'dialog';\n\n /** Custom class for the overlay pane. */\n panelClass?: string | string[] = '';\n\n /** Whether the dialog has a backdrop. */\n hasBackdrop?: boolean = true;\n\n /** Custom class for the backdrop. */\n backdropClass?: string | string[] = '';\n\n /** Whether the user can use escape or clicking on the backdrop to close the modal. */\n disableClose?: boolean = false;\n\n /** Width of the dialog. */\n width?: string = '';\n\n /** Height of the dialog. */\n height?: string = '';\n\n /** Min-width of the dialog. If a number is provided, assumes pixel units. */\n minWidth?: number | string;\n\n /** Min-height of the dialog. If a number is provided, assumes pixel units. */\n minHeight?: number | string;\n\n /** Max-width of the dialog. If a number is provided, assumes pixel units. Defaults to 80vw. */\n maxWidth?: number | string = '80vw';\n\n /** Max-height of the dialog. If a number is provided, assumes pixel units. */\n maxHeight?: number | string;\n\n /** Position overrides. */\n position?: DialogPosition;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** Layout direction for the dialog's content. */\n direction?: Direction;\n\n /** ID of the element that describes the dialog. */\n ariaDescribedBy?: string | null = null;\n\n /** ID of the element that labels the dialog. */\n ariaLabelledBy?: string | null = null;\n\n /** Aria label to assign to the dialog element. */\n ariaLabel?: string | null = null;\n\n /** Whether the dialog should focus the first focusable element on open. */\n autoFocus?: boolean = true;\n\n /**\n * Whether the dialog should restore focus to the\n * previously-focused element, after it's closed.\n */\n restoreFocus?: boolean = true;\n\n /** Scroll strategy to be used for the dialog. */\n scrollStrategy?: ScrollStrategy;\n\n /**\n * Whether the dialog should close when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n closeOnNavigation?: boolean = true;\n\n /** Alternate `ComponentFactoryResolver` to use when resolving the associated component. */\n componentFactoryResolver?: ComponentFactoryResolver;\n\n // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling.\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by MatDialog.\n * @docs-private\n */\nexport const matDialogAnimations: {\n readonly dialogContainer: AnimationTriggerMetadata;\n} = {\n /** Animation that is applied on the dialog container by default. */\n dialogContainer: trigger('dialogContainer', [\n // Note: The `enter` animation transitions to `transform: none`, because for some reason\n // specifying the transform explicitly, causes IE both to blur the dialog content and\n // decimate the animation performance. Leaving it as `none` solves both issues.\n state('void, exit', style({opacity: 0, transform: 'scale(0.7)'})),\n state('enter', style({transform: 'none'})),\n transition('* => enter', animate('150ms cubic-bezier(0, 0, 0.2, 1)',\n style({transform: 'none', opacity: 1}))),\n transition('* => void, * => exit',\n animate('75ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({opacity: 0}))),\n ])\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AnimationEvent} from '@angular/animations';\nimport {FocusMonitor, FocusOrigin, FocusTrap, FocusTrapFactory} from '@angular/cdk/a11y';\nimport {_getFocusedElementPierceShadowDom} from '@angular/cdk/platform';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n ComponentPortal,\n DomPortal,\n TemplatePortal\n} from '@angular/cdk/portal';\nimport {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Inject,\n Optional,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {matDialogAnimations} from './dialog-animations';\nimport {MatDialogConfig} from './dialog-config';\n\n/** Event that captures the state of dialog container animations. */\ninterface DialogAnimationEvent {\n state: 'opened' | 'opening' | 'closing' | 'closed';\n totalTime: number;\n}\n\n/**\n * Throws an exception for the case when a ComponentPortal is\n * attached to a DomPortalOutlet without an origin.\n * @docs-private\n */\nexport function throwMatDialogContentAlreadyAttachedError() {\n throw Error('Attempting to attach dialog content after content is already attached');\n}\n\n/**\n * Base class for the `MatDialogContainer`. The base class does not implement\n * animations as these are left to implementers of the dialog container.\n */\n@Directive()\nexport abstract class _MatDialogContainerBase extends BasePortalOutlet {\n protected _document: Document;\n\n /** The portal outlet inside of this container into which the dialog content will be loaded. */\n @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\n\n /** The class that traps and manages focus within the dialog. */\n private _focusTrap: FocusTrap;\n\n /** Emits when an animation state changes. */\n _animationStateChanged = new EventEmitter<DialogAnimationEvent>();\n\n /** Element that was focused before the dialog was opened. Save this to restore upon close. */\n private _elementFocusedBeforeDialogWasOpened: HTMLElement | null = null;\n\n /**\n * Type of interaction that led to the dialog being closed. This is used to determine\n * whether the focus style will be applied when returning focus to its original location\n * after the dialog is closed.\n */\n _closeInteractionType: FocusOrigin|null = null;\n\n /** ID of the element that should be considered as the dialog's label. */\n _ariaLabelledBy: string | null;\n\n /** ID for the container DOM element. */\n _id: string;\n\n constructor(\n protected _elementRef: ElementRef,\n protected _focusTrapFactory: FocusTrapFactory,\n protected _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(DOCUMENT) _document: any,\n /** The dialog configuration. */\n public _config: MatDialogConfig,\n private _focusMonitor?: FocusMonitor) {\n\n super();\n this._ariaLabelledBy = _config.ariaLabelledBy || null;\n this._document = _document;\n }\n\n /** Starts the dialog exit animation. */\n abstract _startExitAnimation(): void;\n\n /** Initializes the dialog container with the attached content. */\n _initializeWithAttachedContent() {\n this._setupFocusTrap();\n // Save the previously focused element. This element will be re-focused\n // when the dialog closes.\n this._capturePreviouslyFocusedElement();\n // Move focus onto the dialog immediately in order to prevent the user\n // from accidentally opening multiple dialogs at the same time.\n this._focusDialogContainer();\n }\n\n /**\n * Attach a ComponentPortal as content to this dialog container.\n * @param portal Portal to be attached as the dialog content.\n */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n\n return this._portalOutlet.attachComponentPortal(portal);\n }\n\n /**\n * Attach a TemplatePortal as content to this dialog container.\n * @param portal Portal to be attached as the dialog content.\n */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n\n /**\n * Attaches a DOM portal to the dialog container.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n override attachDomPortal = (portal: DomPortal) => {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n\n return this._portalOutlet.attachDomPortal(portal);\n }\n\n /** Moves focus back into the dialog if it was moved out. */\n _recaptureFocus() {\n if (!this._containsFocus()) {\n const focusContainer = !this._config.autoFocus || !this._focusTrap.focusInitialElement();\n\n if (focusContainer) {\n this._elementRef.nativeElement.focus();\n }\n }\n }\n\n /** Moves the focus inside the focus trap. */\n protected _trapFocus() {\n // If we were to attempt to focus immediately, then the content of the dialog would not yet be\n // ready in instances where change detection has to run first. To deal with this, we simply\n // wait for the microtask queue to be empty.\n if (this._config.autoFocus) {\n this._focusTrap.focusInitialElementWhenReady();\n } else if (!this._containsFocus()) {\n // Otherwise ensure that focus is on the dialog container. It's possible that a different\n // component tried to move focus while the open animation was running. See:\n // https://github.com/angular/components/issues/16215. Note that we only want to do this\n // if the focus isn't inside the dialog already, because it's possible that the consumer\n // turned off `autoFocus` in order to move focus themselves.\n this._elementRef.nativeElement.focus();\n }\n }\n\n /** Restores focus to the element that was focused before the dialog opened. */\n protected _restoreFocus() {\n const previousElement = this._elementFocusedBeforeDialogWasOpened;\n\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (this._config.restoreFocus && previousElement &&\n typeof previousElement.focus === 'function') {\n const activeElement = _getFocusedElementPierceShadowDom();\n const element = this._elementRef.nativeElement;\n\n // Make sure that focus is still inside the dialog or is on the body (usually because a\n // non-focusable element like the backdrop was clicked) before moving it. It's possible that\n // the consumer moved it themselves before the animation was done, in which case we shouldn't\n // do anything.\n if (!activeElement || activeElement === this._document.body || activeElement === element ||\n element.contains(activeElement)) {\n if (this._focusMonitor) {\n this._focusMonitor.focusVia(previousElement, this._closeInteractionType);\n this._closeInteractionType = null;\n } else {\n previousElement.focus();\n }\n }\n }\n\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n }\n\n /** Sets up the focus trap. */\n private _setupFocusTrap() {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n }\n\n /** Captures the element that was focused before the dialog was opened. */\n private _capturePreviouslyFocusedElement() {\n if (this._document) {\n this._elementFocusedBeforeDialogWasOpened = _getFocusedElementPierceShadowDom();\n }\n }\n\n /** Focuses the dialog container. */\n private _focusDialogContainer() {\n // Note that there is no focus method when rendering on the server.\n if (this._elementRef.nativeElement.focus) {\n this._elementRef.nativeElement.focus();\n }\n }\n\n /** Returns whether focus is inside the dialog. */\n private _containsFocus() {\n const element = this._elementRef.nativeElement;\n const activeElement = _getFocusedElementPierceShadowDom();\n return element === activeElement || element.contains(activeElement);\n }\n}\n\n/**\n * Internal component that wraps user-provided dialog content.\n * Animation is based on https://material.io/guidelines/motion/choreography.html.\n * @docs-private\n */\n@Component({\n selector: 'mat-dialog-container',\n templateUrl: 'dialog-container.html',\n styleUrls: ['dialog.css'],\n encapsulation: ViewEncapsulation.None,\n // Using OnPush for dialogs caused some G3 sync issues. Disabled until we can track them down.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n animations: [matDialogAnimations.dialogContainer],\n host: {\n 'class': 'mat-dialog-container',\n 'tabindex': '-1',\n 'aria-modal': 'true',\n '[id]': '_id',\n '[attr.role]': '_config.role',\n '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledBy',\n '[attr.aria-label]': '_config.ariaLabel',\n '[attr.aria-describedby]': '_config.ariaDescribedBy || null',\n '[@dialogContainer]': '_state',\n '(@dialogContainer.start)': '_onAnimationStart($event)',\n '(@dialogContainer.done)': '_onAnimationDone($event)',\n },\n})\nexport class MatDialogContainer extends _MatDialogContainerBase {\n /** State of the dialog animation. */\n _state: 'void' | 'enter' | 'exit' = 'enter';\n\n /** Callback, invoked whenever an animation on the host completes. */\n _onAnimationDone({toState, totalTime}: AnimationEvent) {\n if (toState === 'enter') {\n this._trapFocus();\n this._animationStateChanged.next({state: 'opened', totalTime});\n } else if (toState === 'exit') {\n this._restoreFocus();\n this._animationStateChanged.next({state: 'closed', totalTime});\n }\n }\n\n /** Callback, invoked when an animation on the host starts. */\n _onAnimationStart({toState, totalTime}: AnimationEvent) {\n if (toState === 'enter') {\n this._animationStateChanged.next({state: 'opening', totalTime});\n } else if (toState === 'exit' || toState === 'void') {\n this._animationStateChanged.next({state: 'closing', totalTime});\n }\n }\n\n /** Starts the dialog exit animation. */\n _startExitAnimation(): void {\n this._state = 'exit';\n\n // Mark the container for check so it can react if the\n // view container is using OnPush change detection.\n this._changeDetectorRef.markForCheck();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {FocusOrigin} from '@angular/cdk/a11y';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {GlobalPositionStrategy, OverlayRef} from '@angular/cdk/overlay';\nimport {Observable, Subject} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {DialogPosition} from './dialog-config';\nimport {_MatDialogContainerBase} from './dialog-container';\n\n\n// TODO(jelbourn): resizing\n\n// Counter for unique dialog ids.\nlet uniqueId = 0;\n\n/** Possible states of the lifecycle of a dialog. */\nexport const enum MatDialogState {OPEN, CLOSING, CLOSED}\n\n/**\n * Reference to a dialog opened via the MatDialog service.\n */\nexport class MatDialogRef<T, R = any> {\n /** The instance of component opened into the dialog. */\n componentInstance: T;\n\n /** Whether the user is allowed to close the dialog. */\n disableClose: boolean | undefined = this._containerInstance._config.disableClose;\n\n /** Subject for notifying the user that the dialog has finished opening. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Subject for notifying the user that the dialog has finished closing. */\n private readonly _afterClosed = new Subject<R | undefined>();\n\n /** Subject for notifying the user that the dialog has started closing. */\n private readonly _beforeClosed = new Subject<R | undefined>();\n\n /** Result to be passed to afterClosed. */\n private _result: R | undefined;\n\n /** Handle to the timeout that's running as a fallback in case the exit animation doesn't fire. */\n private _closeFallbackTimeout: number;\n\n /** Current state of the dialog. */\n private _state = MatDialogState.OPEN;\n\n constructor(\n private _overlayRef: OverlayRef,\n public _containerInstance: _MatDialogContainerBase,\n /** Id of the dialog. */\n readonly id: string = `mat-dialog-${uniqueId++}`) {\n\n // Pass the id along to the container.\n _containerInstance._id = id;\n\n // Emit when opening animation completes\n _containerInstance._animationStateChanged.pipe(\n filter(event => event.state === 'opened'),\n take(1)\n )\n .subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n\n // Dispose overlay when closing animation is complete\n _containerInstance._animationStateChanged.pipe(\n filter(event => event.state === 'closed'),\n take(1)\n ).subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n this._finishDialogClose();\n });\n\n _overlayRef.detachments().subscribe(() => {\n this._beforeClosed.next(this._result);\n this._beforeClosed.complete();\n this._afterClosed.next(this._result);\n this._afterClosed.complete();\n this.componentInstance = null!;\n this._overlayRef.dispose();\n });\n\n _overlayRef.keydownEvents()\n .pipe(filter(event => {\n return event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event);\n }))\n .subscribe(event => {\n event.preventDefault();\n _closeDialogVia(this, 'keyboard');\n });\n\n _overlayRef.backdropClick().subscribe(() => {\n if (this.disableClose) {\n this._containerInstance._recaptureFocus();\n } else {\n _closeDialogVia(this, 'mouse');\n }\n });\n }\n\n /**\n * Close the dialog.\n * @param dialogResult Optional result to return to the dialog opener.\n */\n close(dialogResult?: R): void {\n this._result = dialogResult;\n\n // Transition the backdrop in parallel to the dialog.\n this._containerInstance._animationStateChanged.pipe(\n filter(event => event.state === 'closing'),\n take(1)\n )\n .subscribe(event => {\n this._beforeClosed.next(dialogResult);\n this._beforeClosed.complete();\n this._overlayRef.detachBackdrop();\n\n // The logic that disposes of the overlay depends on the exit animation completing, however\n // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback\n // timeout which will clean everything up if the animation hasn't fired within the specified\n // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the\n // vast majority of cases the timeout will have been cleared before it has the chance to fire.\n this._closeFallbackTimeout = setTimeout(() => this._finishDialogClose(),\n event.totalTime + 100);\n });\n\n this._state = MatDialogState.CLOSING;\n this._containerInstance._startExitAnimation();\n }\n\n /**\n * Gets an observable that is notified when the dialog is finished opening.\n */\n afterOpened(): Observable<void> {\n return this._afterOpened;\n }\n\n /**\n * Gets an observable that is notified when the dialog is finished closing.\n */\n afterClosed(): Observable<R | undefined> {\n return this._afterClosed;\n }\n\n /**\n * Gets an observable that is notified when the dialog has started closing.\n */\n beforeClosed(): Observable<R | undefined> {\n return this._beforeClosed;\n }\n\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n backdropClick(): Observable<MouseEvent> {\n return this._overlayRef.backdropClick();\n }\n\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n keydownEvents(): Observable<KeyboardEvent> {\n return this._overlayRef.keydownEvents();\n }\n\n /**\n * Updates the dialog's position.\n * @param position New dialog position.\n */\n updatePosition(position?: DialogPosition): this {\n let strategy = this._getPositionStrategy();\n\n if (position && (position.left || position.right)) {\n position.left ? strategy.left(position.left) : strategy.right(position.right);\n } else {\n strategy.centerHorizontally();\n }\n\n if (position && (position.top || position.bottom)) {\n position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\n } else {\n strategy.centerVertically();\n }\n\n this._overlayRef.updatePosition();\n\n return this;\n }\n\n /**\n * Updates the dialog's width and height.\n * @param width New width of the dialog.\n * @param height New height of the dialog.\n */\n updateSize(width: string = '', height: string = ''): this {\n this._overlayRef.updateSize({width, height});\n this._overlayRef.updatePosition();\n return this;\n }\n\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes: string | string[]): this {\n this._overlayRef.addPanelClass(classes);\n return this;\n }\n\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes: string | string[]): this {\n this._overlayRef.removePanelClass(classes);\n return this;\n }\n\n /** Gets the current state of the dialog's lifecycle. */\n getState(): MatDialogState {\n return this._state;\n }\n\n /**\n * Finishes the dialog close by updating the state of the dialog\n * and disposing the overlay.\n */\n private _finishDialogClose() {\n this._state = MatDialogState.CLOSED;\n this._overlayRef.dispose();\n }\n\n /** Fetches the position strategy object from the overlay ref. */\n private _getPositionStrategy(): GlobalPositionStrategy {\n return this._overlayRef.getConfig().positionStrategy as GlobalPositionStrategy;\n }\n}\n\n/**\n * Closes the dialog with the specified interaction type. This is currently not part of\n * `MatDialogRef` as that would conflict with custom dialog ref mocks provided in tests.\n * More details. See: https://github.com/angular/components/pull/9257#issuecomment-651342226.\n */\n// TODO: TODO: Move this back into `MatDialogRef` when we provide an official mock dialog ref.\nexport function _closeDialogVia<R>(ref: MatDialogRef<R>, interactionType: FocusOrigin, result?: R) {\n // Some mock dialog ref instances in tests do not have the `_containerInstance` property.\n // For those, we keep the behavior as is and do not deal with the interaction type.\n if (ref._containerInstance !== undefined) {\n ref._containerInstance._closeInteractionType = interactionType;\n }\n return ref.close(result);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n Overlay,\n OverlayConfig,\n OverlayContainer,\n OverlayRef,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, TemplatePortal} from '@angular/cdk/portal';\nimport {Location} from '@angular/common';\nimport {\n Directive,\n Inject,\n Injectable,\n InjectFlags,\n InjectionToken,\n Injector,\n OnDestroy,\n Optional,\n SkipSelf,\n StaticProvider,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport {defer, Observable, of as observableOf, Subject} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\nimport {MatDialogConfig} from './dialog-config';\nimport {MatDialogContainer, _MatDialogContainerBase} from './dialog-container';\nimport {MatDialogRef} from './dialog-ref';\n\n\n/** Injection token that can be used to access the data that was passed in to a dialog. */\nexport const MAT_DIALOG_DATA = new InjectionToken<any>('MatDialogData');\n\n/** Injection token that can be used to specify default dialog options. */\nexport const MAT_DIALOG_DEFAULT_OPTIONS =\n new InjectionToken<MatDialogConfig>('mat-dialog-default-options');\n\n/** Injection token that determines the scroll handling while the dialog is open. */\nexport const MAT_DIALOG_SCROLL_STRATEGY =\n new InjectionToken<() => ScrollStrategy>('mat-dialog-scroll-strategy');\n\n/** @docs-private */\nexport function MAT_DIALOG_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.block();\n}\n\n/** @docs-private */\nexport function MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay: Overlay):\n () => ScrollStrategy {\n return () => overlay.scrollStrategies.block();\n}\n\n/** @docs-private */\nexport const MAT_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_DIALOG_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n/**\n * Base class for dialog services. The base dialog service allows\n * for arbitrary dialog refs and dialog container components.\n */\n@Directive()\nexport abstract class _MatDialogBase<C extends _MatDialogContainerBase> implements OnDestroy {\n private _openDialogsAtThisLevel: MatDialogRef<any>[] = [];\n private readonly _afterAllClosedAtThisLevel = new Subject<void>();\n private readonly _afterOpenedAtThisLevel = new Subject<MatDialogRef<any>>();\n private _ariaHiddenElements = new Map<Element, string|null>();\n private _scrollStrategy: () => ScrollStrategy;\n\n /** Keeps track of the currently-open dialogs. */\n get openDialogs(): MatDialogRef<any>[] {\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\n }\n\n /** Stream that emits when a dialog has been opened. */\n get afterOpened(): Subject<MatDialogRef<any>> {\n return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;\n }\n\n _getAfterAllClosed(): Subject<void> {\n const parent = this._parentDialog;\n return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;\n }\n\n // TODO (jelbourn): tighten the typing right-hand side of this expression.\n /**\n * Stream that emits when all open dialog have finished closing.\n * Will emit on subscribe if there are no open dialogs to begin with.\n */\n readonly afterAllClosed: Observable<void> = defer(() => this.openDialogs.length ?\n this._getAfterAllClosed() :\n this._getAfterAllClosed().pipe(startWith(undefined))) as Observable<any>;\n\n constructor(\n private _overlay: Overlay,\n private _injector: Injector,\n private _defaultOptions: MatDialogConfig|undefined,\n private _parentDialog: _MatDialogBase<C>|undefined,\n private _overlayContainer: OverlayContainer,\n scrollStrategy: any,\n private _dialogRefConstructor: Type<MatDialogRef<any>>,\n private _dialogContainerType: Type<C>,\n private _dialogDataToken: InjectionToken<any>) {\n this._scrollStrategy = scrollStrategy;\n }\n\n /**\n * Opens a modal dialog containing the given component.\n * @param component Type of the component to load into the dialog.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened dialog.\n */\n open<T, D = any, R = any>(component: ComponentType<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n /**\n * Opens a modal dialog containing the given template.\n * @param template TemplateRef to instantiate as the dialog content.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened dialog.\n */\n open<T, D = any, R = any>(template: TemplateRef<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n open<T, D = any, R = any>(template: ComponentType<T> | TemplateRef<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n open<T, D = any, R = any>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T, R> {\n config = _applyConfigDefaults(config, this._defaultOptions || new MatDialogConfig());\n\n if (config.id && this.getDialogById(config.id) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`);\n }\n\n const overlayRef = this._createOverlay(config);\n const dialogContainer = this._attachDialogContainer(overlayRef, config);\n const dialogRef = this._attachDialogContent<T, R>(componentOrTemplateRef,\n dialogContainer,\n overlayRef,\n config);\n\n // If this is the first dialog that we're opening, hide all the non-overlay content.\n if (!this.openDialogs.length) {\n this._hideNonDialogContentFromAssistiveTechnology();\n }\n\n this.openDialogs.push(dialogRef);\n dialogRef.afterClosed().subscribe(() => this._removeOpenDialog(dialogRef));\n this.afterOpened.next(dialogRef);\n\n // Notify the dialog container that the content has been attached.\n dialogContainer._initializeWithAttachedContent();\n\n return dialogRef;\n }\n\n /**\n * Closes all of the currently-open dialogs.\n */\n closeAll(): void {\n this._closeDialogs(this.openDialogs);\n }\n\n /**\n * Finds an open dialog by its id.\n * @param id ID to use when looking up the dialog.\n */\n getDialogById(id: string): MatDialogRef<any> | undefined {\n return this.openDialogs.find(dialog => dialog.id === id);\n }\n\n ngOnDestroy() {\n // Only close the dialogs at this level on destroy\n // since the parent service may still be active.\n this._closeDialogs(this._openDialogsAtThisLevel);\n this._afterAllClosedAtThisLevel.complete();\n this._afterOpenedAtThisLevel.complete();\n }\n\n /**\n * Creates the overlay into which the dialog will be loaded.\n * @param config The dialog configuration.\n * @returns A promise resolving to the OverlayRef for the created overlay.\n */\n private _createOverlay(config: MatDialogConfig): OverlayRef {\n const overlayConfig = this._getOverlayConfig(config);\n return this._overlay.create(overlayConfig);\n }\n\n /**\n * Creates an overlay config from a dialog config.\n * @param dialogConfig The dialog configuration.\n * @returns The overlay configuration.\n */\n private _getOverlayConfig(dialogConfig: MatDialogConfig): OverlayConfig {\n const state = new OverlayConfig({\n positionStrategy: this._overlay.position().global(),\n scrollStrategy: dialogConfig.scrollStrategy || this._scrollStrategy(),\n panelClass: dialogConfig.panelClass,\n hasBackdrop: dialogConfig.hasBackdrop,\n direction: dialogConfig.direction,\n minWidth: dialogConfig.minWidth,\n minHeight: dialogConfig.minHeight,\n maxWidth: dialogConfig.maxWidth,\n maxHeight: dialogConfig.maxHeight,\n disposeOnNavigation: dialogConfig.closeOnNavigation\n });\n\n if (dialogConfig.backdropClass) {\n state.backdropClass = dialogConfig.backdropClass;\n }\n\n return state;\n }\n\n /**\n * Attaches a dialog container to a dialog's already-created overlay.\n * @param overlay Reference to the dialog's underlying overlay.\n * @param config The dialog configuration.\n * @returns A promise resolving to a ComponentRef for the attached container.\n */\n private _attachDialogContainer(overlay: OverlayRef, config: MatDialogConfig): C {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{provide: MatDialogConfig, useValue: config}]\n });\n\n const containerPortal = new ComponentPortal(this._dialogContainerType,\n config.viewContainerRef, injector, config.componentFactoryResolver);\n const containerRef = overlay.attach<C>(containerPortal);\n\n return containerRef.instance;\n }\n\n /**\n * Attaches the user-provided component to the already-created dialog container.\n * @param componentOrTemplateRef The type of component being loaded into the dialog,\n * or a TemplateRef to instantiate as the content.\n * @param dialogContainer Reference to the wrapping dialog container.\n * @param overlayRef Reference to the overlay in which the dialog resides.\n * @param config The dialog configuration.\n * @returns A promise resolving to the MatDialogRef that should be returned to the user.\n */\n private _attachDialogContent<T, R>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n dialogContainer: C,\n overlayRef: OverlayRef,\n config: MatDialogConfig): MatDialogRef<T, R> {\n\n // Create a reference to the dialog we're creating in order to give the user a handle\n // to modify and close it.\n const dialogRef = new this._dialogRefConstructor(overlayRef, dialogContainer, config.id);\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n dialogContainer.attachTemplatePortal(\n new TemplatePortal<T>(componentOrTemplateRef, null!,\n <any>{$implicit: config.data, dialogRef}));\n } else {\n const injector = this._createInjector<T>(config, dialogRef, dialogContainer);\n const contentRef = dialogContainer.attachComponentPortal<T>(\n new ComponentPortal(componentOrTemplateRef, config.viewContainerRef, injector));\n dialogRef.componentInstance = contentRef.instance;\n }\n\n dialogRef\n .updateSize(config.width, config.height)\n .updatePosition(config.position);\n\n return dialogRef;\n }\n\n /**\n * Creates a custom injector to be used inside the dialog. This allows a component loaded inside\n * of a dialog to close itself and, optionally, to return a value.\n * @param config Config object that is used to construct the dialog.\n * @param dialogRef Reference to the dialog.\n * @param dialogContainer Dialog container element that wraps all of the contents.\n * @returns The custom injector that can be used inside the dialog.\n */\n private _createInjector<T>(\n config: MatDialogConfig,\n dialogRef: MatDialogRef<T>,\n dialogContainer: C): Injector {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n // The dialog container should be provided as the dialog container and the dialog's\n // content are created out of the same `ViewContainerRef` and as such, are siblings\n // for injector purposes. To allow the hierarchy that is expected, the dialog\n // container is explicitly provided in the injector.\n const providers: StaticProvider[] = [\n {provide: this._dialogContainerType, useValue: dialogContainer},\n {provide: this._dialogDataToken, useValue: config.data},\n {provide: this._dialogRefConstructor, useValue: dialogRef}\n ];\n\n if (config.direction && (!userInjector ||\n !userInjector.get<Directionality | null>(Directionality, null, InjectFlags.Optional))) {\n providers.push({\n provide: Directionality,\n useValue: {value: config.direction, change: observableOf()}\n });\n }\n\n return Injector.create({parent: userInjector || this._injector, providers});\n }\n\n /**\n * Removes a dialog from the array of open dialogs.\n * @param dialogRef Dialog to be removed.\n */\n private _removeOpenDialog(dialogRef: MatDialogRef<any>) {\n const index = this.openDialogs.indexOf(dialogRef);\n\n if (index > -1) {\n this.openDialogs.splice(index, 1);\n\n // If all the dialogs were closed, remove/restore the `aria-hidden`\n // to a the siblings and emit to the `afterAllClosed` stream.\n if (!this.openDialogs.length) {\n this._ariaHiddenElements.forEach((previousValue, element) => {\n if (previousValue) {\n element.setAttribute('aria-hidden', previousValue);\n } else {\n element.removeAttribute('aria-hidden');\n }\n });\n\n this._ariaHiddenElements.clear();\n this._getAfterAllClosed().next();\n }\n }\n }\n\n /**\n * Hides all of the content that isn't an overlay from assistive technology.\n */\n private _hideNonDialogContentFromAssistiveTechnology() {\n const overlayContainer = this._overlayContainer.getContainerElement();\n\n // Ensure that the overlay container is attached to the DOM.\n if (overlayContainer.parentElement) {\n const siblings = overlayContainer.parentElement.children;\n\n for (let i = siblings.length - 1; i > -1; i--) {\n let sibling = siblings[i];\n\n if (sibling !== overlayContainer &&\n sibling.nodeName !== 'SCRIPT' &&\n sibling.nodeName !== 'STYLE' &&\n !sibling.hasAttribute('aria-live')) {\n\n this._ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));\n sibling.setAttribute('aria-hidden', 'true');\n }\n }\n }\n }\n\n /** Closes all of the dialogs in an array. */\n private _closeDialogs(dialogs: MatDialogRef<any>[]) {\n let i = dialogs.length;\n\n while (i--) {\n // The `_openDialogs` property isn't updated after close until the rxjs subscription\n // runs on the next microtask, in addition to modifying the array as we're going\n // through it. We loop through all of them and call close without assuming that\n // they'll be removed from the list instantaneously.\n dialogs[i].close();\n }\n }\n\n}\n\n/**\n * Service to open Material Design modal dialogs.\n */\n@Injectable()\nexport class MatDialog extends _MatDialogBase<MatDialogContainer> {\n constructor(\n overlay: Overlay,\n injector: Injector,\n /**\n * @deprecated `_location` parameter to be removed.\n * @breaking-change 10.0.0\n */\n @Optional() location: Location,\n @Optional() @Inject(MAT_DIALOG_DEFAULT_OPTIONS) defaultOptions: MatDialogConfig,\n @Inject(MAT_DIALOG_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() @SkipSelf() parentDialog: MatDialog,\n overlayContainer: OverlayContainer) {\n super(overlay, injector, defaultOptions, parentDialog, overlayContainer, scrollStrategy,\n MatDialogRef, MatDialogContainer, MAT_DIALOG_DATA);\n }\n}\n\n/**\n * Applies default options to the dialog config.\n * @param config Config to be modified.\n * @param defaultOptions Default options provided.\n * @returns The new configuration object.\n */\nfunction _applyConfigDefaults(\n config?: MatDialogConfig, defaultOptions?: MatDialogConfig): MatDialogConfig {\n return {...defaultOptions, ...config};\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n Directive,\n Input,\n OnChanges,\n OnInit,\n Optional,\n SimpleChanges,\n ElementRef,\n} from '@angular/core';\nimport {MatDialog} from './dialog';\nimport {_closeDialogVia, MatDialogRef} from './dialog-ref';\n\n/** Counter used to generate unique IDs for dialog elements. */\nlet dialogElementUid = 0;\n\n/**\n * Button that will close the current dialog.\n */\n@Directive({\n selector: '[mat-dialog-close], [matDialogClose]',\n exportAs: 'matDialogClose',\n host: {\n '(click)': '_onButtonClick($event)',\n '[attr.aria-label]': 'ariaLabel || null',\n '[attr.type]': 'type',\n }\n})\nexport class MatDialogClose implements OnInit, OnChanges {\n /** Screenreader label for the button. */\n @Input('aria-label') ariaLabel: string;\n\n /** Default to \"button\" to prevents accidental form submits. */\n @Input() type: 'submit' | 'button' | 'reset' = 'button';\n\n /** Dialog close input. */\n @Input('mat-dialog-close') dialogResult: any;\n\n @Input('matDialogClose') _matDialogClose: any;\n\n constructor(\n\n /**\n * Reference to the containing dialog.\n * @deprecated `dialogRef` property to become private.\n * @breaking-change 13.0.0\n */\n // The dialog title directive is always used in combination with a `MatDialogRef`.\n // tslint:disable-next-line: lightweight-tokens\n @Optional() public dialogRef: MatDialogRef<any>,\n private _elementRef: ElementRef<HTMLElement>,\n private _dialog: MatDialog) {}\n\n ngOnInit() {\n if (!this.dialogRef) {\n // When this directive is included in a dialog via TemplateRef (rather than being\n // in a Component), the DialogRef isn't available via injection because embedded\n // views cannot be given a custom injector. Instead, we look up the DialogRef by\n // ID. This must occur in `onInit`, as the ID binding for the dialog container won't\n // be resolved at constructor time.\n this.dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const proxiedChange = changes['_matDialogClose'] || changes['_matDialogCloseResult'];\n\n if (proxiedChange) {\n this.dialogResult = proxiedChange.currentValue;\n }\n }\n\n _onButtonClick(event: MouseEvent) {\n // Determinate the focus origin using the click event, because using the FocusMonitor will\n // result in incorrect origins. Most of the time, close buttons will be auto focused in the\n // dialog, and therefore clicking the button won't result in a focus change. This means that\n // the FocusMonitor won't detect any origin change, and will always output `program`.\n _closeDialogVia(this.dialogRef,\n event.screenX === 0 && event.screenY === 0 ? 'keyboard' : 'mouse', this.dialogResult);\n }\n}\n\n/**\n * Title of a dialog element. Stays fixed to the top of the dialog when scrolling.\n */\n@Directive({\n selector: '[mat-dialog-title], [matDialogTitle]',\n exportAs: 'matDialogTitle',\n host: {\n 'class': 'mat-dialog-title',\n '[id]': 'id',\n },\n})\nexport class MatDialogTitle implements OnInit {\n /** Unique id for the dialog title. If none is supplied, it will be auto-generated. */\n @Input() id: string = `mat-dialog-title-${dialogElementUid++}`;\n\n constructor(\n // The dialog title directive is always used in combination with a `MatDialogRef`.\n // tslint:disable-next-line: lightweight-tokens\n @Optional() private _dialogRef: MatDialogRef<any>,\n private _elementRef: ElementRef<HTMLElement>,\n private _dialog: MatDialog) {}\n\n ngOnInit() {\n if (!this._dialogRef) {\n this._dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\n }\n\n if (this._dialogRef) {\n Promise.resolve().then(() => {\n const container = this._dialogRef._containerInstance;\n\n if (container && !container._ariaLabelledBy) {\n container._ariaLabelledBy = this.id;\n }\n });\n }\n }\n}\n\n\n/**\n * Scrollable content container of a dialog.\n */\n@Directive({\n selector: `[mat-dialog-content], mat-dialog-content, [matDialogContent]`,\n host: {'class': 'mat-dialog-content'}\n})\nexport class MatDialogContent {}\n\n\n/**\n * Container for the bottom action buttons in a dialog.\n * Stays fixed to the bottom when scrolling.\n */\n@Directive({\n selector: `[mat-dialog-actions], mat-dialog-actions, [matDialogActions]`,\n host: {'class': 'mat-dialog-actions'}\n})\nexport class MatDialogActions {}\n\n\n/**\n * Finds the closest MatDialogRef to an element by looking at the DOM.\n * @param element Element relative to which to look for a dialog.\n * @param openDialogs References to the currently-open dialogs.\n */\nfunction getClosestDialog(element: ElementRef<HTMLElement>, openDialogs: MatDialogRef<any>[]) {\n let parent: HTMLElement | null = element.nativeElement.parentElement;\n\n while (parent && !parent.classList.contains('mat-dialog-container')) {\n parent = parent.parentElement;\n }\n\n return parent ? openDialogs.find(dialog => dialog.id === parent!.id) : null;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MatDialog} from './dialog';\nimport {MatDialogContainer} from './dialog-container';\nimport {\n MatDialogActions,\n MatDialogClose,\n MatDialogContent,\n MatDialogTitle,\n} from './dialog-content-directives';\n\n\n@NgModule({\n imports: [\n OverlayModule,\n PortalModule,\n MatCommonModule,\n ],\n exports: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatCommonModule,\n ],\n declarations: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogActions,\n MatDialogContent,\n ],\n providers: [\n MatDialog,\n MAT_DIALOG_SCROLL_STRATEGY_PROVIDER,\n ],\n entryComponents: [MatDialogContainer],\n})\nexport class MatDialogModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './dialog-module';\nexport * from './dialog';\nexport * from './dialog-container';\nexport * from './dialog-content-directives';\nexport * from './dialog-config';\nexport * from './dialog-ref';\nexport * from './dialog-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["observableOf"],"mappings":"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"}
1
+ {"version":3,"file":"dialog.js","sources":["../../../../../../src/material/dialog/dialog-config.ts","../../../../../../src/material/dialog/dialog-animations.ts","../../../../../../src/material/dialog/dialog-container.ts","../../../../../../src/material/dialog/dialog-ref.ts","../../../../../../src/material/dialog/dialog.ts","../../../../../../src/material/dialog/dialog-content-directives.ts","../../../../../../src/material/dialog/dialog-module.ts","../../../../../../src/material/dialog/public-api.ts","../../../../../../src/material/dialog/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ViewContainerRef, ComponentFactoryResolver} from '@angular/core';\nimport {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\n\n/** Valid ARIA roles for a dialog element. */\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** Possible overrides for a dialog's position. */\nexport interface DialogPosition {\n /** Override for the dialog's top position. */\n top?: string;\n\n /** Override for the dialog's bottom position. */\n bottom?: string;\n\n /** Override for the dialog's left position. */\n left?: string;\n\n /** Override for the dialog's right position. */\n right?: string;\n}\n\n/**\n * Configuration for opening a modal dialog with the MatDialog service.\n */\nexport class MatDialogConfig<D = any> {\n\n /**\n * Where the attached component should live in Angular's *logical* component tree.\n * This affects what is available for injection and the change detection order for the\n * component instantiated inside of the dialog. This does not affect where the dialog\n * content will be rendered.\n */\n viewContainerRef?: ViewContainerRef;\n\n /** ID for the dialog. If omitted, a unique one will be generated. */\n id?: string;\n\n /** The ARIA role of the dialog element. */\n role?: DialogRole = 'dialog';\n\n /** Custom class for the overlay pane. */\n panelClass?: string | string[] = '';\n\n /** Whether the dialog has a backdrop. */\n hasBackdrop?: boolean = true;\n\n /** Custom class for the backdrop. */\n backdropClass?: string | string[] = '';\n\n /** Whether the user can use escape or clicking on the backdrop to close the modal. */\n disableClose?: boolean = false;\n\n /** Width of the dialog. */\n width?: string = '';\n\n /** Height of the dialog. */\n height?: string = '';\n\n /** Min-width of the dialog. If a number is provided, assumes pixel units. */\n minWidth?: number | string;\n\n /** Min-height of the dialog. If a number is provided, assumes pixel units. */\n minHeight?: number | string;\n\n /** Max-width of the dialog. If a number is provided, assumes pixel units. Defaults to 80vw. */\n maxWidth?: number | string = '80vw';\n\n /** Max-height of the dialog. If a number is provided, assumes pixel units. */\n maxHeight?: number | string;\n\n /** Position overrides. */\n position?: DialogPosition;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** Layout direction for the dialog's content. */\n direction?: Direction;\n\n /** ID of the element that describes the dialog. */\n ariaDescribedBy?: string | null = null;\n\n /** ID of the element that labels the dialog. */\n ariaLabelledBy?: string | null = null;\n\n /** Aria label to assign to the dialog element. */\n ariaLabel?: string | null = null;\n\n /** Whether the dialog should focus the first focusable element on open. */\n autoFocus?: boolean = true;\n\n /**\n * Whether the dialog should restore focus to the\n * previously-focused element, after it's closed.\n */\n restoreFocus?: boolean = true;\n\n /** Scroll strategy to be used for the dialog. */\n scrollStrategy?: ScrollStrategy;\n\n /**\n * Whether the dialog should close when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n closeOnNavigation?: boolean = true;\n\n /** Alternate `ComponentFactoryResolver` to use when resolving the associated component. */\n componentFactoryResolver?: ComponentFactoryResolver;\n\n // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling.\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by MatDialog.\n * @docs-private\n */\nexport const matDialogAnimations: {\n readonly dialogContainer: AnimationTriggerMetadata;\n} = {\n /** Animation that is applied on the dialog container by default. */\n dialogContainer: trigger('dialogContainer', [\n // Note: The `enter` animation transitions to `transform: none`, because for some reason\n // specifying the transform explicitly, causes IE both to blur the dialog content and\n // decimate the animation performance. Leaving it as `none` solves both issues.\n state('void, exit', style({opacity: 0, transform: 'scale(0.7)'})),\n state('enter', style({transform: 'none'})),\n transition('* => enter', animate('150ms cubic-bezier(0, 0, 0.2, 1)',\n style({transform: 'none', opacity: 1}))),\n transition('* => void, * => exit',\n animate('75ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({opacity: 0}))),\n ])\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AnimationEvent} from '@angular/animations';\nimport {FocusMonitor, FocusOrigin, FocusTrap, FocusTrapFactory} from '@angular/cdk/a11y';\nimport {_getFocusedElementPierceShadowDom} from '@angular/cdk/platform';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n ComponentPortal,\n DomPortal,\n TemplatePortal\n} from '@angular/cdk/portal';\nimport {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Inject,\n Optional,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {matDialogAnimations} from './dialog-animations';\nimport {MatDialogConfig} from './dialog-config';\n\n/** Event that captures the state of dialog container animations. */\ninterface DialogAnimationEvent {\n state: 'opened' | 'opening' | 'closing' | 'closed';\n totalTime: number;\n}\n\n/**\n * Throws an exception for the case when a ComponentPortal is\n * attached to a DomPortalOutlet without an origin.\n * @docs-private\n */\nexport function throwMatDialogContentAlreadyAttachedError() {\n throw Error('Attempting to attach dialog content after content is already attached');\n}\n\n/**\n * Base class for the `MatDialogContainer`. The base class does not implement\n * animations as these are left to implementers of the dialog container.\n */\n@Directive()\nexport abstract class _MatDialogContainerBase extends BasePortalOutlet {\n protected _document: Document;\n\n /** The portal outlet inside of this container into which the dialog content will be loaded. */\n @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\n\n /** The class that traps and manages focus within the dialog. */\n private _focusTrap: FocusTrap;\n\n /** Emits when an animation state changes. */\n _animationStateChanged = new EventEmitter<DialogAnimationEvent>();\n\n /** Element that was focused before the dialog was opened. Save this to restore upon close. */\n private _elementFocusedBeforeDialogWasOpened: HTMLElement | null = null;\n\n /**\n * Type of interaction that led to the dialog being closed. This is used to determine\n * whether the focus style will be applied when returning focus to its original location\n * after the dialog is closed.\n */\n _closeInteractionType: FocusOrigin|null = null;\n\n /** ID of the element that should be considered as the dialog's label. */\n _ariaLabelledBy: string | null;\n\n /** ID for the container DOM element. */\n _id: string;\n\n constructor(\n protected _elementRef: ElementRef,\n protected _focusTrapFactory: FocusTrapFactory,\n protected _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(DOCUMENT) _document: any,\n /** The dialog configuration. */\n public _config: MatDialogConfig,\n private _focusMonitor?: FocusMonitor) {\n\n super();\n this._ariaLabelledBy = _config.ariaLabelledBy || null;\n this._document = _document;\n }\n\n /** Starts the dialog exit animation. */\n abstract _startExitAnimation(): void;\n\n /** Initializes the dialog container with the attached content. */\n _initializeWithAttachedContent() {\n this._setupFocusTrap();\n // Save the previously focused element. This element will be re-focused\n // when the dialog closes.\n this._capturePreviouslyFocusedElement();\n // Move focus onto the dialog immediately in order to prevent the user\n // from accidentally opening multiple dialogs at the same time.\n this._focusDialogContainer();\n }\n\n /**\n * Attach a ComponentPortal as content to this dialog container.\n * @param portal Portal to be attached as the dialog content.\n */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n\n return this._portalOutlet.attachComponentPortal(portal);\n }\n\n /**\n * Attach a TemplatePortal as content to this dialog container.\n * @param portal Portal to be attached as the dialog content.\n */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n\n /**\n * Attaches a DOM portal to the dialog container.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n override attachDomPortal = (portal: DomPortal) => {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n\n return this._portalOutlet.attachDomPortal(portal);\n }\n\n /** Moves focus back into the dialog if it was moved out. */\n _recaptureFocus() {\n if (!this._containsFocus()) {\n const focusContainer = !this._config.autoFocus || !this._focusTrap.focusInitialElement();\n\n if (focusContainer) {\n this._elementRef.nativeElement.focus();\n }\n }\n }\n\n /** Moves the focus inside the focus trap. */\n protected _trapFocus() {\n // If we were to attempt to focus immediately, then the content of the dialog would not yet be\n // ready in instances where change detection has to run first. To deal with this, we simply\n // wait for the microtask queue to be empty.\n if (this._config.autoFocus) {\n this._focusTrap.focusInitialElementWhenReady();\n } else if (!this._containsFocus()) {\n // Otherwise ensure that focus is on the dialog container. It's possible that a different\n // component tried to move focus while the open animation was running. See:\n // https://github.com/angular/components/issues/16215. Note that we only want to do this\n // if the focus isn't inside the dialog already, because it's possible that the consumer\n // turned off `autoFocus` in order to move focus themselves.\n this._elementRef.nativeElement.focus();\n }\n }\n\n /** Restores focus to the element that was focused before the dialog opened. */\n protected _restoreFocus() {\n const previousElement = this._elementFocusedBeforeDialogWasOpened;\n\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (this._config.restoreFocus && previousElement &&\n typeof previousElement.focus === 'function') {\n const activeElement = _getFocusedElementPierceShadowDom();\n const element = this._elementRef.nativeElement;\n\n // Make sure that focus is still inside the dialog or is on the body (usually because a\n // non-focusable element like the backdrop was clicked) before moving it. It's possible that\n // the consumer moved it themselves before the animation was done, in which case we shouldn't\n // do anything.\n if (!activeElement || activeElement === this._document.body || activeElement === element ||\n element.contains(activeElement)) {\n if (this._focusMonitor) {\n this._focusMonitor.focusVia(previousElement, this._closeInteractionType);\n this._closeInteractionType = null;\n } else {\n previousElement.focus();\n }\n }\n }\n\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n }\n\n /** Sets up the focus trap. */\n private _setupFocusTrap() {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n }\n\n /** Captures the element that was focused before the dialog was opened. */\n private _capturePreviouslyFocusedElement() {\n if (this._document) {\n this._elementFocusedBeforeDialogWasOpened = _getFocusedElementPierceShadowDom();\n }\n }\n\n /** Focuses the dialog container. */\n private _focusDialogContainer() {\n // Note that there is no focus method when rendering on the server.\n if (this._elementRef.nativeElement.focus) {\n this._elementRef.nativeElement.focus();\n }\n }\n\n /** Returns whether focus is inside the dialog. */\n private _containsFocus() {\n const element = this._elementRef.nativeElement;\n const activeElement = _getFocusedElementPierceShadowDom();\n return element === activeElement || element.contains(activeElement);\n }\n}\n\n/**\n * Internal component that wraps user-provided dialog content.\n * Animation is based on https://material.io/guidelines/motion/choreography.html.\n * @docs-private\n */\n@Component({\n selector: 'mat-dialog-container',\n templateUrl: 'dialog-container.html',\n styleUrls: ['dialog.css'],\n encapsulation: ViewEncapsulation.None,\n // Using OnPush for dialogs caused some G3 sync issues. Disabled until we can track them down.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n animations: [matDialogAnimations.dialogContainer],\n host: {\n 'class': 'mat-dialog-container',\n 'tabindex': '-1',\n 'aria-modal': 'true',\n '[id]': '_id',\n '[attr.role]': '_config.role',\n '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledBy',\n '[attr.aria-label]': '_config.ariaLabel',\n '[attr.aria-describedby]': '_config.ariaDescribedBy || null',\n '[@dialogContainer]': '_state',\n '(@dialogContainer.start)': '_onAnimationStart($event)',\n '(@dialogContainer.done)': '_onAnimationDone($event)',\n },\n})\nexport class MatDialogContainer extends _MatDialogContainerBase {\n /** State of the dialog animation. */\n _state: 'void' | 'enter' | 'exit' = 'enter';\n\n /** Callback, invoked whenever an animation on the host completes. */\n _onAnimationDone({toState, totalTime}: AnimationEvent) {\n if (toState === 'enter') {\n this._trapFocus();\n this._animationStateChanged.next({state: 'opened', totalTime});\n } else if (toState === 'exit') {\n this._restoreFocus();\n this._animationStateChanged.next({state: 'closed', totalTime});\n }\n }\n\n /** Callback, invoked when an animation on the host starts. */\n _onAnimationStart({toState, totalTime}: AnimationEvent) {\n if (toState === 'enter') {\n this._animationStateChanged.next({state: 'opening', totalTime});\n } else if (toState === 'exit' || toState === 'void') {\n this._animationStateChanged.next({state: 'closing', totalTime});\n }\n }\n\n /** Starts the dialog exit animation. */\n _startExitAnimation(): void {\n this._state = 'exit';\n\n // Mark the container for check so it can react if the\n // view container is using OnPush change detection.\n this._changeDetectorRef.markForCheck();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {FocusOrigin} from '@angular/cdk/a11y';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {GlobalPositionStrategy, OverlayRef} from '@angular/cdk/overlay';\nimport {Observable, Subject} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {DialogPosition} from './dialog-config';\nimport {_MatDialogContainerBase} from './dialog-container';\n\n\n// TODO(jelbourn): resizing\n\n// Counter for unique dialog ids.\nlet uniqueId = 0;\n\n/** Possible states of the lifecycle of a dialog. */\nexport const enum MatDialogState {OPEN, CLOSING, CLOSED}\n\n/**\n * Reference to a dialog opened via the MatDialog service.\n */\nexport class MatDialogRef<T, R = any> {\n /** The instance of component opened into the dialog. */\n componentInstance: T;\n\n /** Whether the user is allowed to close the dialog. */\n disableClose: boolean | undefined = this._containerInstance._config.disableClose;\n\n /** Subject for notifying the user that the dialog has finished opening. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Subject for notifying the user that the dialog has finished closing. */\n private readonly _afterClosed = new Subject<R | undefined>();\n\n /** Subject for notifying the user that the dialog has started closing. */\n private readonly _beforeClosed = new Subject<R | undefined>();\n\n /** Result to be passed to afterClosed. */\n private _result: R | undefined;\n\n /** Handle to the timeout that's running as a fallback in case the exit animation doesn't fire. */\n private _closeFallbackTimeout: any;\n\n /** Current state of the dialog. */\n private _state = MatDialogState.OPEN;\n\n constructor(\n private _overlayRef: OverlayRef,\n public _containerInstance: _MatDialogContainerBase,\n /** Id of the dialog. */\n readonly id: string = `mat-dialog-${uniqueId++}`) {\n\n // Pass the id along to the container.\n _containerInstance._id = id;\n\n // Emit when opening animation completes\n _containerInstance._animationStateChanged.pipe(\n filter(event => event.state === 'opened'),\n take(1)\n )\n .subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n\n // Dispose overlay when closing animation is complete\n _containerInstance._animationStateChanged.pipe(\n filter(event => event.state === 'closed'),\n take(1)\n ).subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n this._finishDialogClose();\n });\n\n _overlayRef.detachments().subscribe(() => {\n this._beforeClosed.next(this._result);\n this._beforeClosed.complete();\n this._afterClosed.next(this._result);\n this._afterClosed.complete();\n this.componentInstance = null!;\n this._overlayRef.dispose();\n });\n\n _overlayRef.keydownEvents()\n .pipe(filter(event => {\n return event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event);\n }))\n .subscribe(event => {\n event.preventDefault();\n _closeDialogVia(this, 'keyboard');\n });\n\n _overlayRef.backdropClick().subscribe(() => {\n if (this.disableClose) {\n this._containerInstance._recaptureFocus();\n } else {\n _closeDialogVia(this, 'mouse');\n }\n });\n }\n\n /**\n * Close the dialog.\n * @param dialogResult Optional result to return to the dialog opener.\n */\n close(dialogResult?: R): void {\n this._result = dialogResult;\n\n // Transition the backdrop in parallel to the dialog.\n this._containerInstance._animationStateChanged.pipe(\n filter(event => event.state === 'closing'),\n take(1)\n )\n .subscribe(event => {\n this._beforeClosed.next(dialogResult);\n this._beforeClosed.complete();\n this._overlayRef.detachBackdrop();\n\n // The logic that disposes of the overlay depends on the exit animation completing, however\n // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback\n // timeout which will clean everything up if the animation hasn't fired within the specified\n // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the\n // vast majority of cases the timeout will have been cleared before it has the chance to fire.\n this._closeFallbackTimeout = setTimeout(() => this._finishDialogClose(),\n event.totalTime + 100);\n });\n\n this._state = MatDialogState.CLOSING;\n this._containerInstance._startExitAnimation();\n }\n\n /**\n * Gets an observable that is notified when the dialog is finished opening.\n */\n afterOpened(): Observable<void> {\n return this._afterOpened;\n }\n\n /**\n * Gets an observable that is notified when the dialog is finished closing.\n */\n afterClosed(): Observable<R | undefined> {\n return this._afterClosed;\n }\n\n /**\n * Gets an observable that is notified when the dialog has started closing.\n */\n beforeClosed(): Observable<R | undefined> {\n return this._beforeClosed;\n }\n\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n backdropClick(): Observable<MouseEvent> {\n return this._overlayRef.backdropClick();\n }\n\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n keydownEvents(): Observable<KeyboardEvent> {\n return this._overlayRef.keydownEvents();\n }\n\n /**\n * Updates the dialog's position.\n * @param position New dialog position.\n */\n updatePosition(position?: DialogPosition): this {\n let strategy = this._getPositionStrategy();\n\n if (position && (position.left || position.right)) {\n position.left ? strategy.left(position.left) : strategy.right(position.right);\n } else {\n strategy.centerHorizontally();\n }\n\n if (position && (position.top || position.bottom)) {\n position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\n } else {\n strategy.centerVertically();\n }\n\n this._overlayRef.updatePosition();\n\n return this;\n }\n\n /**\n * Updates the dialog's width and height.\n * @param width New width of the dialog.\n * @param height New height of the dialog.\n */\n updateSize(width: string = '', height: string = ''): this {\n this._overlayRef.updateSize({width, height});\n this._overlayRef.updatePosition();\n return this;\n }\n\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes: string | string[]): this {\n this._overlayRef.addPanelClass(classes);\n return this;\n }\n\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes: string | string[]): this {\n this._overlayRef.removePanelClass(classes);\n return this;\n }\n\n /** Gets the current state of the dialog's lifecycle. */\n getState(): MatDialogState {\n return this._state;\n }\n\n /**\n * Finishes the dialog close by updating the state of the dialog\n * and disposing the overlay.\n */\n private _finishDialogClose() {\n this._state = MatDialogState.CLOSED;\n this._overlayRef.dispose();\n }\n\n /** Fetches the position strategy object from the overlay ref. */\n private _getPositionStrategy(): GlobalPositionStrategy {\n return this._overlayRef.getConfig().positionStrategy as GlobalPositionStrategy;\n }\n}\n\n/**\n * Closes the dialog with the specified interaction type. This is currently not part of\n * `MatDialogRef` as that would conflict with custom dialog ref mocks provided in tests.\n * More details. See: https://github.com/angular/components/pull/9257#issuecomment-651342226.\n */\n// TODO: TODO: Move this back into `MatDialogRef` when we provide an official mock dialog ref.\nexport function _closeDialogVia<R>(ref: MatDialogRef<R>, interactionType: FocusOrigin, result?: R) {\n // Some mock dialog ref instances in tests do not have the `_containerInstance` property.\n // For those, we keep the behavior as is and do not deal with the interaction type.\n if (ref._containerInstance !== undefined) {\n ref._containerInstance._closeInteractionType = interactionType;\n }\n return ref.close(result);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n Overlay,\n OverlayConfig,\n OverlayContainer,\n OverlayRef,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, TemplatePortal} from '@angular/cdk/portal';\nimport {Location} from '@angular/common';\nimport {\n Directive,\n Inject,\n Injectable,\n InjectFlags,\n InjectionToken,\n Injector,\n OnDestroy,\n Optional,\n SkipSelf,\n StaticProvider,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport {defer, Observable, of as observableOf, Subject} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\nimport {MatDialogConfig} from './dialog-config';\nimport {MatDialogContainer, _MatDialogContainerBase} from './dialog-container';\nimport {MatDialogRef} from './dialog-ref';\n\n\n/** Injection token that can be used to access the data that was passed in to a dialog. */\nexport const MAT_DIALOG_DATA = new InjectionToken<any>('MatDialogData');\n\n/** Injection token that can be used to specify default dialog options. */\nexport const MAT_DIALOG_DEFAULT_OPTIONS =\n new InjectionToken<MatDialogConfig>('mat-dialog-default-options');\n\n/** Injection token that determines the scroll handling while the dialog is open. */\nexport const MAT_DIALOG_SCROLL_STRATEGY =\n new InjectionToken<() => ScrollStrategy>('mat-dialog-scroll-strategy');\n\n/** @docs-private */\nexport function MAT_DIALOG_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.block();\n}\n\n/** @docs-private */\nexport function MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay: Overlay):\n () => ScrollStrategy {\n return () => overlay.scrollStrategies.block();\n}\n\n/** @docs-private */\nexport const MAT_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_DIALOG_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n/**\n * Base class for dialog services. The base dialog service allows\n * for arbitrary dialog refs and dialog container components.\n */\n@Directive()\nexport abstract class _MatDialogBase<C extends _MatDialogContainerBase> implements OnDestroy {\n private _openDialogsAtThisLevel: MatDialogRef<any>[] = [];\n private readonly _afterAllClosedAtThisLevel = new Subject<void>();\n private readonly _afterOpenedAtThisLevel = new Subject<MatDialogRef<any>>();\n private _ariaHiddenElements = new Map<Element, string|null>();\n private _scrollStrategy: () => ScrollStrategy;\n\n /** Keeps track of the currently-open dialogs. */\n get openDialogs(): MatDialogRef<any>[] {\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\n }\n\n /** Stream that emits when a dialog has been opened. */\n get afterOpened(): Subject<MatDialogRef<any>> {\n return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;\n }\n\n _getAfterAllClosed(): Subject<void> {\n const parent = this._parentDialog;\n return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;\n }\n\n // TODO (jelbourn): tighten the typing right-hand side of this expression.\n /**\n * Stream that emits when all open dialog have finished closing.\n * Will emit on subscribe if there are no open dialogs to begin with.\n */\n readonly afterAllClosed: Observable<void> = defer(() => this.openDialogs.length ?\n this._getAfterAllClosed() :\n this._getAfterAllClosed().pipe(startWith(undefined))) as Observable<any>;\n\n constructor(\n private _overlay: Overlay,\n private _injector: Injector,\n private _defaultOptions: MatDialogConfig|undefined,\n private _parentDialog: _MatDialogBase<C>|undefined,\n private _overlayContainer: OverlayContainer,\n scrollStrategy: any,\n private _dialogRefConstructor: Type<MatDialogRef<any>>,\n private _dialogContainerType: Type<C>,\n private _dialogDataToken: InjectionToken<any>) {\n this._scrollStrategy = scrollStrategy;\n }\n\n /**\n * Opens a modal dialog containing the given component.\n * @param component Type of the component to load into the dialog.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened dialog.\n */\n open<T, D = any, R = any>(component: ComponentType<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n /**\n * Opens a modal dialog containing the given template.\n * @param template TemplateRef to instantiate as the dialog content.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened dialog.\n */\n open<T, D = any, R = any>(template: TemplateRef<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n open<T, D = any, R = any>(template: ComponentType<T> | TemplateRef<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n open<T, D = any, R = any>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: MatDialogConfig<D>): MatDialogRef<T, R> {\n config = _applyConfigDefaults(config, this._defaultOptions || new MatDialogConfig());\n\n if (config.id && this.getDialogById(config.id) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`);\n }\n\n const overlayRef = this._createOverlay(config);\n const dialogContainer = this._attachDialogContainer(overlayRef, config);\n const dialogRef = this._attachDialogContent<T, R>(componentOrTemplateRef,\n dialogContainer,\n overlayRef,\n config);\n\n // If this is the first dialog that we're opening, hide all the non-overlay content.\n if (!this.openDialogs.length) {\n this._hideNonDialogContentFromAssistiveTechnology();\n }\n\n this.openDialogs.push(dialogRef);\n dialogRef.afterClosed().subscribe(() => this._removeOpenDialog(dialogRef));\n this.afterOpened.next(dialogRef);\n\n // Notify the dialog container that the content has been attached.\n dialogContainer._initializeWithAttachedContent();\n\n return dialogRef;\n }\n\n /**\n * Closes all of the currently-open dialogs.\n */\n closeAll(): void {\n this._closeDialogs(this.openDialogs);\n }\n\n /**\n * Finds an open dialog by its id.\n * @param id ID to use when looking up the dialog.\n */\n getDialogById(id: string): MatDialogRef<any> | undefined {\n return this.openDialogs.find(dialog => dialog.id === id);\n }\n\n ngOnDestroy() {\n // Only close the dialogs at this level on destroy\n // since the parent service may still be active.\n this._closeDialogs(this._openDialogsAtThisLevel);\n this._afterAllClosedAtThisLevel.complete();\n this._afterOpenedAtThisLevel.complete();\n }\n\n /**\n * Creates the overlay into which the dialog will be loaded.\n * @param config The dialog configuration.\n * @returns A promise resolving to the OverlayRef for the created overlay.\n */\n private _createOverlay(config: MatDialogConfig): OverlayRef {\n const overlayConfig = this._getOverlayConfig(config);\n return this._overlay.create(overlayConfig);\n }\n\n /**\n * Creates an overlay config from a dialog config.\n * @param dialogConfig The dialog configuration.\n * @returns The overlay configuration.\n */\n private _getOverlayConfig(dialogConfig: MatDialogConfig): OverlayConfig {\n const state = new OverlayConfig({\n positionStrategy: this._overlay.position().global(),\n scrollStrategy: dialogConfig.scrollStrategy || this._scrollStrategy(),\n panelClass: dialogConfig.panelClass,\n hasBackdrop: dialogConfig.hasBackdrop,\n direction: dialogConfig.direction,\n minWidth: dialogConfig.minWidth,\n minHeight: dialogConfig.minHeight,\n maxWidth: dialogConfig.maxWidth,\n maxHeight: dialogConfig.maxHeight,\n disposeOnNavigation: dialogConfig.closeOnNavigation\n });\n\n if (dialogConfig.backdropClass) {\n state.backdropClass = dialogConfig.backdropClass;\n }\n\n return state;\n }\n\n /**\n * Attaches a dialog container to a dialog's already-created overlay.\n * @param overlay Reference to the dialog's underlying overlay.\n * @param config The dialog configuration.\n * @returns A promise resolving to a ComponentRef for the attached container.\n */\n private _attachDialogContainer(overlay: OverlayRef, config: MatDialogConfig): C {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{provide: MatDialogConfig, useValue: config}]\n });\n\n const containerPortal = new ComponentPortal(this._dialogContainerType,\n config.viewContainerRef, injector, config.componentFactoryResolver);\n const containerRef = overlay.attach<C>(containerPortal);\n\n return containerRef.instance;\n }\n\n /**\n * Attaches the user-provided component to the already-created dialog container.\n * @param componentOrTemplateRef The type of component being loaded into the dialog,\n * or a TemplateRef to instantiate as the content.\n * @param dialogContainer Reference to the wrapping dialog container.\n * @param overlayRef Reference to the overlay in which the dialog resides.\n * @param config The dialog configuration.\n * @returns A promise resolving to the MatDialogRef that should be returned to the user.\n */\n private _attachDialogContent<T, R>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n dialogContainer: C,\n overlayRef: OverlayRef,\n config: MatDialogConfig): MatDialogRef<T, R> {\n\n // Create a reference to the dialog we're creating in order to give the user a handle\n // to modify and close it.\n const dialogRef = new this._dialogRefConstructor(overlayRef, dialogContainer, config.id);\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n dialogContainer.attachTemplatePortal(\n new TemplatePortal<T>(componentOrTemplateRef, null!,\n <any>{$implicit: config.data, dialogRef}));\n } else {\n const injector = this._createInjector<T>(config, dialogRef, dialogContainer);\n const contentRef = dialogContainer.attachComponentPortal<T>(\n new ComponentPortal(componentOrTemplateRef, config.viewContainerRef, injector));\n dialogRef.componentInstance = contentRef.instance;\n }\n\n dialogRef\n .updateSize(config.width, config.height)\n .updatePosition(config.position);\n\n return dialogRef;\n }\n\n /**\n * Creates a custom injector to be used inside the dialog. This allows a component loaded inside\n * of a dialog to close itself and, optionally, to return a value.\n * @param config Config object that is used to construct the dialog.\n * @param dialogRef Reference to the dialog.\n * @param dialogContainer Dialog container element that wraps all of the contents.\n * @returns The custom injector that can be used inside the dialog.\n */\n private _createInjector<T>(\n config: MatDialogConfig,\n dialogRef: MatDialogRef<T>,\n dialogContainer: C): Injector {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n // The dialog container should be provided as the dialog container and the dialog's\n // content are created out of the same `ViewContainerRef` and as such, are siblings\n // for injector purposes. To allow the hierarchy that is expected, the dialog\n // container is explicitly provided in the injector.\n const providers: StaticProvider[] = [\n {provide: this._dialogContainerType, useValue: dialogContainer},\n {provide: this._dialogDataToken, useValue: config.data},\n {provide: this._dialogRefConstructor, useValue: dialogRef}\n ];\n\n if (config.direction && (!userInjector ||\n !userInjector.get<Directionality | null>(Directionality, null, InjectFlags.Optional))) {\n providers.push({\n provide: Directionality,\n useValue: {value: config.direction, change: observableOf()}\n });\n }\n\n return Injector.create({parent: userInjector || this._injector, providers});\n }\n\n /**\n * Removes a dialog from the array of open dialogs.\n * @param dialogRef Dialog to be removed.\n */\n private _removeOpenDialog(dialogRef: MatDialogRef<any>) {\n const index = this.openDialogs.indexOf(dialogRef);\n\n if (index > -1) {\n this.openDialogs.splice(index, 1);\n\n // If all the dialogs were closed, remove/restore the `aria-hidden`\n // to a the siblings and emit to the `afterAllClosed` stream.\n if (!this.openDialogs.length) {\n this._ariaHiddenElements.forEach((previousValue, element) => {\n if (previousValue) {\n element.setAttribute('aria-hidden', previousValue);\n } else {\n element.removeAttribute('aria-hidden');\n }\n });\n\n this._ariaHiddenElements.clear();\n this._getAfterAllClosed().next();\n }\n }\n }\n\n /**\n * Hides all of the content that isn't an overlay from assistive technology.\n */\n private _hideNonDialogContentFromAssistiveTechnology() {\n const overlayContainer = this._overlayContainer.getContainerElement();\n\n // Ensure that the overlay container is attached to the DOM.\n if (overlayContainer.parentElement) {\n const siblings = overlayContainer.parentElement.children;\n\n for (let i = siblings.length - 1; i > -1; i--) {\n let sibling = siblings[i];\n\n if (sibling !== overlayContainer &&\n sibling.nodeName !== 'SCRIPT' &&\n sibling.nodeName !== 'STYLE' &&\n !sibling.hasAttribute('aria-live')) {\n\n this._ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));\n sibling.setAttribute('aria-hidden', 'true');\n }\n }\n }\n }\n\n /** Closes all of the dialogs in an array. */\n private _closeDialogs(dialogs: MatDialogRef<any>[]) {\n let i = dialogs.length;\n\n while (i--) {\n // The `_openDialogs` property isn't updated after close until the rxjs subscription\n // runs on the next microtask, in addition to modifying the array as we're going\n // through it. We loop through all of them and call close without assuming that\n // they'll be removed from the list instantaneously.\n dialogs[i].close();\n }\n }\n\n}\n\n/**\n * Service to open Material Design modal dialogs.\n */\n@Injectable()\nexport class MatDialog extends _MatDialogBase<MatDialogContainer> {\n constructor(\n overlay: Overlay,\n injector: Injector,\n /**\n * @deprecated `_location` parameter to be removed.\n * @breaking-change 10.0.0\n */\n @Optional() location: Location,\n @Optional() @Inject(MAT_DIALOG_DEFAULT_OPTIONS) defaultOptions: MatDialogConfig,\n @Inject(MAT_DIALOG_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() @SkipSelf() parentDialog: MatDialog,\n overlayContainer: OverlayContainer) {\n super(overlay, injector, defaultOptions, parentDialog, overlayContainer, scrollStrategy,\n MatDialogRef, MatDialogContainer, MAT_DIALOG_DATA);\n }\n}\n\n/**\n * Applies default options to the dialog config.\n * @param config Config to be modified.\n * @param defaultOptions Default options provided.\n * @returns The new configuration object.\n */\nfunction _applyConfigDefaults(\n config?: MatDialogConfig, defaultOptions?: MatDialogConfig): MatDialogConfig {\n return {...defaultOptions, ...config};\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n Directive,\n Input,\n OnChanges,\n OnInit,\n Optional,\n SimpleChanges,\n ElementRef,\n} from '@angular/core';\nimport {MatDialog} from './dialog';\nimport {_closeDialogVia, MatDialogRef} from './dialog-ref';\n\n/** Counter used to generate unique IDs for dialog elements. */\nlet dialogElementUid = 0;\n\n/**\n * Button that will close the current dialog.\n */\n@Directive({\n selector: '[mat-dialog-close], [matDialogClose]',\n exportAs: 'matDialogClose',\n host: {\n '(click)': '_onButtonClick($event)',\n '[attr.aria-label]': 'ariaLabel || null',\n '[attr.type]': 'type',\n }\n})\nexport class MatDialogClose implements OnInit, OnChanges {\n /** Screenreader label for the button. */\n @Input('aria-label') ariaLabel: string;\n\n /** Default to \"button\" to prevents accidental form submits. */\n @Input() type: 'submit' | 'button' | 'reset' = 'button';\n\n /** Dialog close input. */\n @Input('mat-dialog-close') dialogResult: any;\n\n @Input('matDialogClose') _matDialogClose: any;\n\n constructor(\n\n /**\n * Reference to the containing dialog.\n * @deprecated `dialogRef` property to become private.\n * @breaking-change 13.0.0\n */\n // The dialog title directive is always used in combination with a `MatDialogRef`.\n // tslint:disable-next-line: lightweight-tokens\n @Optional() public dialogRef: MatDialogRef<any>,\n private _elementRef: ElementRef<HTMLElement>,\n private _dialog: MatDialog) {}\n\n ngOnInit() {\n if (!this.dialogRef) {\n // When this directive is included in a dialog via TemplateRef (rather than being\n // in a Component), the DialogRef isn't available via injection because embedded\n // views cannot be given a custom injector. Instead, we look up the DialogRef by\n // ID. This must occur in `onInit`, as the ID binding for the dialog container won't\n // be resolved at constructor time.\n this.dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const proxiedChange = changes['_matDialogClose'] || changes['_matDialogCloseResult'];\n\n if (proxiedChange) {\n this.dialogResult = proxiedChange.currentValue;\n }\n }\n\n _onButtonClick(event: MouseEvent) {\n // Determinate the focus origin using the click event, because using the FocusMonitor will\n // result in incorrect origins. Most of the time, close buttons will be auto focused in the\n // dialog, and therefore clicking the button won't result in a focus change. This means that\n // the FocusMonitor won't detect any origin change, and will always output `program`.\n _closeDialogVia(this.dialogRef,\n event.screenX === 0 && event.screenY === 0 ? 'keyboard' : 'mouse', this.dialogResult);\n }\n}\n\n/**\n * Title of a dialog element. Stays fixed to the top of the dialog when scrolling.\n */\n@Directive({\n selector: '[mat-dialog-title], [matDialogTitle]',\n exportAs: 'matDialogTitle',\n host: {\n 'class': 'mat-dialog-title',\n '[id]': 'id',\n },\n})\nexport class MatDialogTitle implements OnInit {\n /** Unique id for the dialog title. If none is supplied, it will be auto-generated. */\n @Input() id: string = `mat-dialog-title-${dialogElementUid++}`;\n\n constructor(\n // The dialog title directive is always used in combination with a `MatDialogRef`.\n // tslint:disable-next-line: lightweight-tokens\n @Optional() private _dialogRef: MatDialogRef<any>,\n private _elementRef: ElementRef<HTMLElement>,\n private _dialog: MatDialog) {}\n\n ngOnInit() {\n if (!this._dialogRef) {\n this._dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\n }\n\n if (this._dialogRef) {\n Promise.resolve().then(() => {\n const container = this._dialogRef._containerInstance;\n\n if (container && !container._ariaLabelledBy) {\n container._ariaLabelledBy = this.id;\n }\n });\n }\n }\n}\n\n\n/**\n * Scrollable content container of a dialog.\n */\n@Directive({\n selector: `[mat-dialog-content], mat-dialog-content, [matDialogContent]`,\n host: {'class': 'mat-dialog-content'}\n})\nexport class MatDialogContent {}\n\n\n/**\n * Container for the bottom action buttons in a dialog.\n * Stays fixed to the bottom when scrolling.\n */\n@Directive({\n selector: `[mat-dialog-actions], mat-dialog-actions, [matDialogActions]`,\n host: {'class': 'mat-dialog-actions'}\n})\nexport class MatDialogActions {}\n\n\n/**\n * Finds the closest MatDialogRef to an element by looking at the DOM.\n * @param element Element relative to which to look for a dialog.\n * @param openDialogs References to the currently-open dialogs.\n */\nfunction getClosestDialog(element: ElementRef<HTMLElement>, openDialogs: MatDialogRef<any>[]) {\n let parent: HTMLElement | null = element.nativeElement.parentElement;\n\n while (parent && !parent.classList.contains('mat-dialog-container')) {\n parent = parent.parentElement;\n }\n\n return parent ? openDialogs.find(dialog => dialog.id === parent!.id) : null;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MatDialog} from './dialog';\nimport {MatDialogContainer} from './dialog-container';\nimport {\n MatDialogActions,\n MatDialogClose,\n MatDialogContent,\n MatDialogTitle,\n} from './dialog-content-directives';\n\n\n@NgModule({\n imports: [\n OverlayModule,\n PortalModule,\n MatCommonModule,\n ],\n exports: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatCommonModule,\n ],\n declarations: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogActions,\n MatDialogContent,\n ],\n providers: [\n MatDialog,\n MAT_DIALOG_SCROLL_STRATEGY_PROVIDER,\n ],\n entryComponents: [MatDialogContainer],\n})\nexport class MatDialogModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './dialog-module';\nexport * from './dialog';\nexport * from './dialog-container';\nexport * from './dialog-content-directives';\nexport * from './dialog-config';\nexport * from './dialog-ref';\nexport * from './dialog-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["observableOf"],"mappings":"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"}
@@ -432,7 +432,7 @@ MatExpansionPanelHeader.decorators = [
432
432
  '(click)': '_toggle()',
433
433
  '(keydown)': '_keydown($event)',
434
434
  },
435
- styles: [".mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px;border-radius:inherit;transition:height 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header._mat-animation-noopable{transition:none}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:none}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before{flex-direction:row-reverse}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 16px 0 0}[dir=rtl] .mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 0 0 16px}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-expansion-panel-header-title,.mat-expansion-panel-header-description{display:flex;flex-grow:1;margin-right:16px}[dir=rtl] .mat-expansion-panel-header-title,[dir=rtl] .mat-expansion-panel-header-description{margin-right:0;margin-left:16px}.mat-expansion-panel-header-description{flex-grow:2}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:\"\";display:inline-block;padding:3px;transform:rotate(45deg);vertical-align:middle}.cdk-high-contrast-active .mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true])::before,.cdk-high-contrast-active .mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true])::before,.cdk-high-contrast-active .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true])::before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;border:3px solid;border-radius:4px;content:\"\"}\n"]
435
+ styles: [".mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px;border-radius:inherit;transition:height 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header._mat-animation-noopable{transition:none}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:none}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before{flex-direction:row-reverse}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 16px 0 0}[dir=rtl] .mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 0 0 16px}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-expansion-panel-header-title,.mat-expansion-panel-header-description{display:flex;flex-grow:1;margin-right:16px}[dir=rtl] .mat-expansion-panel-header-title,[dir=rtl] .mat-expansion-panel-header-description{margin-right:0;margin-left:16px}.mat-expansion-panel-header-description{flex-grow:2}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:\"\";display:inline-block;padding:3px;transform:rotate(45deg);vertical-align:middle}.cdk-high-contrast-active .mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true])::before,.cdk-high-contrast-active .mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true])::before,.cdk-high-contrast-active .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true])::before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;border:3px solid;border-radius:4px;content:\"\"}.cdk-high-contrast-active .mat-expansion-panel-content{border-top:1px solid;border-top-left-radius:0;border-top-right-radius:0}\n"]
436
436
  },] }
437
437
  ];
438
438
  MatExpansionPanelHeader.ctorParameters = () => [
package/fesm2015/input.js CHANGED
@@ -405,6 +405,11 @@ class MatInput extends _MatInputBase {
405
405
  this.focus();
406
406
  }
407
407
  }
408
+ /** Whether the form control is a native select that is displayed inline. */
409
+ _isInlineSelect() {
410
+ const element = this._elementRef.nativeElement;
411
+ return this._isNativeSelect && (element.multiple || element.size > 1);
412
+ }
408
413
  }
409
414
  MatInput.decorators = [
410
415
  { type: Directive, args: [{
@@ -427,6 +432,7 @@ MatInput.decorators = [
427
432
  '[disabled]': 'disabled',
428
433
  '[required]': 'required',
429
434
  '[attr.readonly]': 'readonly && !_isNativeSelect || null',
435
+ '[class.mat-native-select-inline]': '_isInlineSelect()',
430
436
  // Only mark the input as invalid for assistive technology if it has a value since the
431
437
  // state usually overlaps with `aria-required` when the input is empty and can be redundant.
432
438
  '[attr.aria-invalid]': '(empty && required) ? null : errorState',
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sources":["../../../../../../src/material/input/autosize.ts","../../../../../../src/material/input/input-errors.ts","../../../../../../src/material/input/input-value-accessor.ts","../../../../../../src/material/input/input.ts","../../../../../../src/material/input/input-module.ts","../../../../../../src/material/input/public-api.ts","../../../../../../src/material/input/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CdkTextareaAutosize} from '@angular/cdk/text-field';\nimport {Directive, Input} from '@angular/core';\n\n/**\n * Directive to automatically resize a textarea to fit its content.\n * @deprecated Use `cdkTextareaAutosize` from `@angular/cdk/text-field` instead.\n * @breaking-change 8.0.0\n */\n@Directive({\n selector: 'textarea[mat-autosize], textarea[matTextareaAutosize]',\n exportAs: 'matTextareaAutosize',\n inputs: ['cdkAutosizeMinRows', 'cdkAutosizeMaxRows'],\n host: {\n 'class': 'cdk-textarea-autosize mat-autosize',\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n 'rows': '1',\n },\n})\nexport class MatTextareaAutosize extends CdkTextareaAutosize {\n @Input()\n get matAutosizeMinRows(): number { return this.minRows; }\n set matAutosizeMinRows(value: number) { this.minRows = value; }\n\n @Input()\n get matAutosizeMaxRows(): number { return this.maxRows; }\n set matAutosizeMaxRows(value: number) { this.maxRows = value; }\n\n @Input('mat-autosize')\n get matAutosize(): boolean { return this.enabled; }\n set matAutosize(value: boolean) { this.enabled = value; }\n\n @Input()\n get matTextareaAutosize(): boolean { return this.enabled; }\n set matTextareaAutosize(value: boolean) { this.enabled = value; }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** @docs-private */\nexport function getMatInputUnsupportedTypeError(type: string): Error {\n return Error(`Input type \"${type}\" isn't supported by matInput.`);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {InjectionToken} from '@angular/core';\n\n\n/**\n * This token is used to inject the object whose value should be set into `MatInput`. If none is\n * provided, the native `HTMLInputElement` is used. Directives like `MatDatepickerInput` can provide\n * themselves for this token, in order to make `MatInput` delegate the getting and setting of the\n * value to them.\n */\nexport const MAT_INPUT_VALUE_ACCESSOR =\n new InjectionToken<{value: any}>('MAT_INPUT_VALUE_ACCESSOR');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {getSupportedInputTypes, Platform} from '@angular/cdk/platform';\nimport {AutofillMonitor} from '@angular/cdk/text-field';\nimport {\n AfterViewInit,\n Directive,\n DoCheck,\n ElementRef,\n HostListener,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Optional,\n Self,\n} from '@angular/core';\nimport {FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {\n CanUpdateErrorState,\n ErrorStateMatcher,\n mixinErrorState,\n} from '@angular/material/core';\nimport {MatFormFieldControl, MatFormField, MAT_FORM_FIELD} from '@angular/material/form-field';\nimport {Subject} from 'rxjs';\nimport {getMatInputUnsupportedTypeError} from './input-errors';\nimport {MAT_INPUT_VALUE_ACCESSOR} from './input-value-accessor';\n\n\n// Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.\nconst MAT_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit'\n];\n\nlet nextUniqueId = 0;\n\n// Boilerplate for applying mixins to MatInput.\n/** @docs-private */\nconst _MatInputBase = mixinErrorState(class {\n constructor(public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n /** @docs-private */\n public ngControl: NgControl) {}\n});\n\n/** Directive that allows a native input to work inside a `MatFormField`. */\n@Directive({\n selector: `input[matInput], textarea[matInput], select[matNativeControl],\n input[matNativeControl], textarea[matNativeControl]`,\n exportAs: 'matInput',\n host: {\n /**\n * @breaking-change 8.0.0 remove .mat-form-field-autofill-control in favor of AutofillMonitor.\n */\n 'class': 'mat-input-element mat-form-field-autofill-control',\n '[class.mat-input-server]': '_isServer',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n // At the time of writing, we have a lot of customer tests that look up the input based on its\n // placeholder. Since we sometimes omit the placeholder attribute from the DOM to prevent screen\n // readers from reading it twice, we have to keep it somewhere in the DOM for the lookup.\n '[attr.data-placeholder]': 'placeholder',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '[attr.readonly]': 'readonly && !_isNativeSelect || null',\n // Only mark the input as invalid for assistive technology if it has a value since the\n // state usually overlaps with `aria-required` when the input is empty and can be redundant.\n '[attr.aria-invalid]': '(empty && required) ? null : errorState',\n '[attr.aria-required]': 'required',\n },\n providers: [{provide: MatFormFieldControl, useExisting: MatInput}],\n})\nexport class MatInput extends _MatInputBase implements MatFormFieldControl<any>, OnChanges,\n OnDestroy, AfterViewInit, DoCheck, CanUpdateErrorState {\n protected _uid = `mat-input-${nextUniqueId++}`;\n protected _previousNativeValue: any;\n private _inputValueAccessor: {value: any};\n private _previousPlaceholder: string | null;\n\n /** Whether the component is being rendered on the server. */\n readonly _isServer: boolean;\n\n /** Whether the component is a native html select. */\n readonly _isNativeSelect: boolean;\n\n /** Whether the component is a textarea. */\n readonly _isTextarea: boolean;\n\n /** Whether the input is inside of a form field. */\n readonly _isInFormField: boolean;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n override readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n controlType: string = 'mat-input';\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n autofilled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get disabled(): boolean {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n protected _disabled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get id(): string { return this._id; }\n set id(value: string) { this._id = value || this._uid; }\n protected _id: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input() placeholder: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean { return this._required; }\n set required(value: boolean) { this._required = coerceBooleanProperty(value); }\n protected _required = false;\n\n /** Input type of the element. */\n @Input()\n get type(): string { return this._type; }\n set type(value: string) {\n this._type = value || 'text';\n this._validateType();\n\n // When using Angular inputs, developers are no longer able to set the properties on the native\n // input element. To ensure that bindings for `type` work, we need to sync the setter\n // with the native property. Textarea elements don't support the type property or attribute.\n if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\n }\n }\n protected _type = 'text';\n\n /** An object used to control when error messages are shown. */\n @Input() override errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input('aria-describedby') userAriaDescribedBy: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): string { return this._inputValueAccessor.value; }\n set value(value: string) {\n if (value !== this.value) {\n this._inputValueAccessor.value = value;\n this.stateChanges.next();\n }\n }\n\n /** Whether the element is readonly. */\n @Input()\n get readonly(): boolean { return this._readonly; }\n set readonly(value: boolean) { this._readonly = coerceBooleanProperty(value); }\n private _readonly = false;\n\n protected _neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week'\n ].filter(t => getSupportedInputTypes().has(t));\n\n constructor(\n protected _elementRef: ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>,\n protected _platform: Platform,\n @Optional() @Self() ngControl: NgControl,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Self() @Inject(MAT_INPUT_VALUE_ACCESSOR) inputValueAccessor: any,\n private _autofillMonitor: AutofillMonitor,\n ngZone: NgZone,\n // TODO: Remove this once the legacy appearance has been removed. We only need\n // to inject the form-field for determining whether the placeholder has been promoted.\n @Optional() @Inject(MAT_FORM_FIELD) private _formField?: MatFormField) {\n\n super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n\n const element = this._elementRef.nativeElement;\n const nodeName = element.nodeName.toLowerCase();\n\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this._inputValueAccessor = inputValueAccessor || element;\n\n this._previousNativeValue = this.value;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n\n // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete\n // key. In order to get around this we need to \"jiggle\" the caret loose. Since this bug only\n // exists on iOS, we only bother to install the listener on iOS.\n if (_platform.IOS) {\n ngZone.runOutsideAngular(() => {\n _elementRef.nativeElement.addEventListener('keyup', (event: Event) => {\n const el = event.target as HTMLInputElement;\n\n // Note: We specifically check for 0, rather than `!el.selectionStart`, because the two\n // indicate different things. If the value is 0, it means that the caret is at the start\n // of the input, whereas a value of `null` means that the input doesn't support\n // manipulating the selection range. Inputs that don't support setting the selection range\n // will throw an error so we want to avoid calling `setSelectionRange` on them. See:\n // https://html.spec.whatwg.org/multipage/input.html#do-not-apply\n if (!el.value && el.selectionStart === 0 && el.selectionEnd === 0) {\n // Note: Just setting `0, 0` doesn't fix the issue. Setting\n // `1, 1` fixes it for the first time that you type text and\n // then hold delete. Toggling to `1, 1` and then back to\n // `0, 0` seems to completely fix it.\n el.setSelectionRange(1, 1);\n el.setSelectionRange(0, 0);\n }\n });\n });\n }\n\n this._isServer = !this._platform.isBrowser;\n this._isNativeSelect = nodeName === 'select';\n this._isTextarea = nodeName === 'textarea';\n this._isInFormField = !!_formField;\n\n if (this._isNativeSelect) {\n this.controlType = (element as HTMLSelectElement).multiple ? 'mat-native-select-multiple' :\n 'mat-native-select';\n }\n }\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {\n this.autofilled = event.isAutofilled;\n this.stateChanges.next();\n });\n }\n }\n\n ngOnChanges() {\n this.stateChanges.next();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n\n if (this._platform.isBrowser) {\n this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this._dirtyCheckNativeValue();\n\n // We need to dirty-check and set the placeholder attribute ourselves, because whether it's\n // present or not depends on a query which is prone to \"changed after checked\" errors.\n this._dirtyCheckPlaceholder();\n }\n\n /** Focuses the input. */\n focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n /** Callback for the cases where the focused state of the input changes. */\n // tslint:disable:no-host-decorator-in-concrete\n @HostListener('focus', ['true'])\n @HostListener('blur', ['false'])\n // tslint:enable:no-host-decorator-in-concrete\n _focusChanged(isFocused: boolean) {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n }\n\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n @HostListener('input')\n _onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when floatingLabel\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\n // value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n\n /** Does some manual dirty checking on the native input `placeholder` attribute. */\n private _dirtyCheckPlaceholder() {\n // If we're hiding the native placeholder, it should also be cleared from the DOM, otherwise\n // screen readers will read it out twice: once from the label and once from the attribute.\n // TODO: can be removed once we get rid of the `legacy` style for the form field, because it's\n // the only one that supports promoting the placeholder to a label.\n const placeholder = this._formField?._hideControlPlaceholder?.() ? null : this.placeholder;\n if (placeholder !== this._previousPlaceholder) {\n const element = this._elementRef.nativeElement;\n this._previousPlaceholder = placeholder;\n placeholder ?\n element.setAttribute('placeholder', placeholder) : element.removeAttribute('placeholder');\n }\n }\n\n /** Does some manual dirty checking on the native input `value` property. */\n protected _dirtyCheckNativeValue() {\n const newValue = this._elementRef.nativeElement.value;\n\n if (this._previousNativeValue !== newValue) {\n this._previousNativeValue = newValue;\n this.stateChanges.next();\n }\n }\n\n /** Make sure the input is a supported type. */\n protected _validateType() {\n if (MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatInputUnsupportedTypeError(this._type);\n }\n }\n\n /** Checks whether the input type is one of the types that are never empty. */\n protected _isNeverEmpty() {\n return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected _isBadInput() {\n // The `validity` property won't be present on platform-server.\n let validity = (this._elementRef.nativeElement as HTMLInputElement).validity;\n return validity && validity.badInput;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return !this._isNeverEmpty() && !this._elementRef.nativeElement.value && !this._isBadInput() &&\n !this.autofilled;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n if (this._isNativeSelect) {\n // For a single-selection `<select>`, the label should float when the selected option has\n // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid\n // overlapping the label with the options.\n const selectElement = this._elementRef.nativeElement as HTMLSelectElement;\n const firstOption: HTMLOptionElement | undefined = selectElement.options[0];\n\n // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be\n // -1 if the `value` is set to something, that isn't in the list of options, at a later point.\n return this.focused || selectElement.multiple || !this.empty ||\n !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label);\n } else {\n return this.focused || !this.empty;\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) {\n if (ids.length) {\n this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n } else {\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n // Do not re-focus the input element if the element is already focused. Otherwise it can happen\n // that someone clicks on a time input and the cursor resets to the \"hours\" field while the\n // \"minutes\" field was actually clicked. See: https://github.com/angular/components/issues/12849\n if (!this.focused) {\n this.focus();\n }\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_readonly: BooleanInput;\n static ngAcceptInputType_required: BooleanInput;\n\n // Accept `any` to avoid conflicts with other directives on `<input>` that may\n // accept different types.\n static ngAcceptInputType_value: any;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {TextFieldModule} from '@angular/cdk/text-field';\nimport {NgModule} from '@angular/core';\nimport {ErrorStateMatcher, MatCommonModule} from '@angular/material/core';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatTextareaAutosize} from './autosize';\nimport {MatInput} from './input';\n\n@NgModule({\n declarations: [MatInput, MatTextareaAutosize],\n imports: [\n TextFieldModule,\n MatFormFieldModule,\n MatCommonModule,\n ],\n exports: [\n TextFieldModule,\n // We re-export the `MatFormFieldModule` since `MatInput` will almost always\n // be used together with `MatFormField`.\n MatFormFieldModule,\n MatInput,\n MatTextareaAutosize,\n ],\n providers: [ErrorStateMatcher],\n})\nexport class MatInputModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './autosize';\nexport * from './input';\nexport * from './input-errors';\nexport * from './input-module';\nexport * from './input-value-accessor';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input.js","sources":["../../../../../../src/material/input/autosize.ts","../../../../../../src/material/input/input-errors.ts","../../../../../../src/material/input/input-value-accessor.ts","../../../../../../src/material/input/input.ts","../../../../../../src/material/input/input-module.ts","../../../../../../src/material/input/public-api.ts","../../../../../../src/material/input/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CdkTextareaAutosize} from '@angular/cdk/text-field';\nimport {Directive, Input} from '@angular/core';\n\n/**\n * Directive to automatically resize a textarea to fit its content.\n * @deprecated Use `cdkTextareaAutosize` from `@angular/cdk/text-field` instead.\n * @breaking-change 8.0.0\n */\n@Directive({\n selector: 'textarea[mat-autosize], textarea[matTextareaAutosize]',\n exportAs: 'matTextareaAutosize',\n inputs: ['cdkAutosizeMinRows', 'cdkAutosizeMaxRows'],\n host: {\n 'class': 'cdk-textarea-autosize mat-autosize',\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n 'rows': '1',\n },\n})\nexport class MatTextareaAutosize extends CdkTextareaAutosize {\n @Input()\n get matAutosizeMinRows(): number { return this.minRows; }\n set matAutosizeMinRows(value: number) { this.minRows = value; }\n\n @Input()\n get matAutosizeMaxRows(): number { return this.maxRows; }\n set matAutosizeMaxRows(value: number) { this.maxRows = value; }\n\n @Input('mat-autosize')\n get matAutosize(): boolean { return this.enabled; }\n set matAutosize(value: boolean) { this.enabled = value; }\n\n @Input()\n get matTextareaAutosize(): boolean { return this.enabled; }\n set matTextareaAutosize(value: boolean) { this.enabled = value; }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** @docs-private */\nexport function getMatInputUnsupportedTypeError(type: string): Error {\n return Error(`Input type \"${type}\" isn't supported by matInput.`);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {InjectionToken} from '@angular/core';\n\n\n/**\n * This token is used to inject the object whose value should be set into `MatInput`. If none is\n * provided, the native `HTMLInputElement` is used. Directives like `MatDatepickerInput` can provide\n * themselves for this token, in order to make `MatInput` delegate the getting and setting of the\n * value to them.\n */\nexport const MAT_INPUT_VALUE_ACCESSOR =\n new InjectionToken<{value: any}>('MAT_INPUT_VALUE_ACCESSOR');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {getSupportedInputTypes, Platform} from '@angular/cdk/platform';\nimport {AutofillMonitor} from '@angular/cdk/text-field';\nimport {\n AfterViewInit,\n Directive,\n DoCheck,\n ElementRef,\n HostListener,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Optional,\n Self,\n} from '@angular/core';\nimport {FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {\n CanUpdateErrorState,\n ErrorStateMatcher,\n mixinErrorState,\n} from '@angular/material/core';\nimport {MatFormFieldControl, MatFormField, MAT_FORM_FIELD} from '@angular/material/form-field';\nimport {Subject} from 'rxjs';\nimport {getMatInputUnsupportedTypeError} from './input-errors';\nimport {MAT_INPUT_VALUE_ACCESSOR} from './input-value-accessor';\n\n\n// Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.\nconst MAT_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit'\n];\n\nlet nextUniqueId = 0;\n\n// Boilerplate for applying mixins to MatInput.\n/** @docs-private */\nconst _MatInputBase = mixinErrorState(class {\n constructor(public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n /** @docs-private */\n public ngControl: NgControl) {}\n});\n\n/** Directive that allows a native input to work inside a `MatFormField`. */\n@Directive({\n selector: `input[matInput], textarea[matInput], select[matNativeControl],\n input[matNativeControl], textarea[matNativeControl]`,\n exportAs: 'matInput',\n host: {\n /**\n * @breaking-change 8.0.0 remove .mat-form-field-autofill-control in favor of AutofillMonitor.\n */\n 'class': 'mat-input-element mat-form-field-autofill-control',\n '[class.mat-input-server]': '_isServer',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n // At the time of writing, we have a lot of customer tests that look up the input based on its\n // placeholder. Since we sometimes omit the placeholder attribute from the DOM to prevent screen\n // readers from reading it twice, we have to keep it somewhere in the DOM for the lookup.\n '[attr.data-placeholder]': 'placeholder',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '[attr.readonly]': 'readonly && !_isNativeSelect || null',\n '[class.mat-native-select-inline]': '_isInlineSelect()',\n // Only mark the input as invalid for assistive technology if it has a value since the\n // state usually overlaps with `aria-required` when the input is empty and can be redundant.\n '[attr.aria-invalid]': '(empty && required) ? null : errorState',\n '[attr.aria-required]': 'required',\n },\n providers: [{provide: MatFormFieldControl, useExisting: MatInput}],\n})\nexport class MatInput extends _MatInputBase implements MatFormFieldControl<any>, OnChanges,\n OnDestroy, AfterViewInit, DoCheck, CanUpdateErrorState {\n protected _uid = `mat-input-${nextUniqueId++}`;\n protected _previousNativeValue: any;\n private _inputValueAccessor: {value: any};\n private _previousPlaceholder: string | null;\n\n /** Whether the component is being rendered on the server. */\n readonly _isServer: boolean;\n\n /** Whether the component is a native html select. */\n readonly _isNativeSelect: boolean;\n\n /** Whether the component is a textarea. */\n readonly _isTextarea: boolean;\n\n /** Whether the input is inside of a form field. */\n readonly _isInFormField: boolean;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n override readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n controlType: string = 'mat-input';\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n autofilled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get disabled(): boolean {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n protected _disabled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get id(): string { return this._id; }\n set id(value: string) { this._id = value || this._uid; }\n protected _id: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input() placeholder: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean { return this._required; }\n set required(value: boolean) { this._required = coerceBooleanProperty(value); }\n protected _required = false;\n\n /** Input type of the element. */\n @Input()\n get type(): string { return this._type; }\n set type(value: string) {\n this._type = value || 'text';\n this._validateType();\n\n // When using Angular inputs, developers are no longer able to set the properties on the native\n // input element. To ensure that bindings for `type` work, we need to sync the setter\n // with the native property. Textarea elements don't support the type property or attribute.\n if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\n }\n }\n protected _type = 'text';\n\n /** An object used to control when error messages are shown. */\n @Input() override errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input('aria-describedby') userAriaDescribedBy: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): string { return this._inputValueAccessor.value; }\n set value(value: string) {\n if (value !== this.value) {\n this._inputValueAccessor.value = value;\n this.stateChanges.next();\n }\n }\n\n /** Whether the element is readonly. */\n @Input()\n get readonly(): boolean { return this._readonly; }\n set readonly(value: boolean) { this._readonly = coerceBooleanProperty(value); }\n private _readonly = false;\n\n protected _neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week'\n ].filter(t => getSupportedInputTypes().has(t));\n\n constructor(\n protected _elementRef: ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>,\n protected _platform: Platform,\n @Optional() @Self() ngControl: NgControl,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Self() @Inject(MAT_INPUT_VALUE_ACCESSOR) inputValueAccessor: any,\n private _autofillMonitor: AutofillMonitor,\n ngZone: NgZone,\n // TODO: Remove this once the legacy appearance has been removed. We only need\n // to inject the form-field for determining whether the placeholder has been promoted.\n @Optional() @Inject(MAT_FORM_FIELD) private _formField?: MatFormField) {\n\n super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n\n const element = this._elementRef.nativeElement;\n const nodeName = element.nodeName.toLowerCase();\n\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this._inputValueAccessor = inputValueAccessor || element;\n\n this._previousNativeValue = this.value;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n\n // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete\n // key. In order to get around this we need to \"jiggle\" the caret loose. Since this bug only\n // exists on iOS, we only bother to install the listener on iOS.\n if (_platform.IOS) {\n ngZone.runOutsideAngular(() => {\n _elementRef.nativeElement.addEventListener('keyup', (event: Event) => {\n const el = event.target as HTMLInputElement;\n\n // Note: We specifically check for 0, rather than `!el.selectionStart`, because the two\n // indicate different things. If the value is 0, it means that the caret is at the start\n // of the input, whereas a value of `null` means that the input doesn't support\n // manipulating the selection range. Inputs that don't support setting the selection range\n // will throw an error so we want to avoid calling `setSelectionRange` on them. See:\n // https://html.spec.whatwg.org/multipage/input.html#do-not-apply\n if (!el.value && el.selectionStart === 0 && el.selectionEnd === 0) {\n // Note: Just setting `0, 0` doesn't fix the issue. Setting\n // `1, 1` fixes it for the first time that you type text and\n // then hold delete. Toggling to `1, 1` and then back to\n // `0, 0` seems to completely fix it.\n el.setSelectionRange(1, 1);\n el.setSelectionRange(0, 0);\n }\n });\n });\n }\n\n this._isServer = !this._platform.isBrowser;\n this._isNativeSelect = nodeName === 'select';\n this._isTextarea = nodeName === 'textarea';\n this._isInFormField = !!_formField;\n\n if (this._isNativeSelect) {\n this.controlType = (element as HTMLSelectElement).multiple ? 'mat-native-select-multiple' :\n 'mat-native-select';\n }\n }\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {\n this.autofilled = event.isAutofilled;\n this.stateChanges.next();\n });\n }\n }\n\n ngOnChanges() {\n this.stateChanges.next();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n\n if (this._platform.isBrowser) {\n this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this._dirtyCheckNativeValue();\n\n // We need to dirty-check and set the placeholder attribute ourselves, because whether it's\n // present or not depends on a query which is prone to \"changed after checked\" errors.\n this._dirtyCheckPlaceholder();\n }\n\n /** Focuses the input. */\n focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n /** Callback for the cases where the focused state of the input changes. */\n // tslint:disable:no-host-decorator-in-concrete\n @HostListener('focus', ['true'])\n @HostListener('blur', ['false'])\n // tslint:enable:no-host-decorator-in-concrete\n _focusChanged(isFocused: boolean) {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n }\n\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n @HostListener('input')\n _onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when floatingLabel\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\n // value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n\n /** Does some manual dirty checking on the native input `placeholder` attribute. */\n private _dirtyCheckPlaceholder() {\n // If we're hiding the native placeholder, it should also be cleared from the DOM, otherwise\n // screen readers will read it out twice: once from the label and once from the attribute.\n // TODO: can be removed once we get rid of the `legacy` style for the form field, because it's\n // the only one that supports promoting the placeholder to a label.\n const placeholder = this._formField?._hideControlPlaceholder?.() ? null : this.placeholder;\n if (placeholder !== this._previousPlaceholder) {\n const element = this._elementRef.nativeElement;\n this._previousPlaceholder = placeholder;\n placeholder ?\n element.setAttribute('placeholder', placeholder) : element.removeAttribute('placeholder');\n }\n }\n\n /** Does some manual dirty checking on the native input `value` property. */\n protected _dirtyCheckNativeValue() {\n const newValue = this._elementRef.nativeElement.value;\n\n if (this._previousNativeValue !== newValue) {\n this._previousNativeValue = newValue;\n this.stateChanges.next();\n }\n }\n\n /** Make sure the input is a supported type. */\n protected _validateType() {\n if (MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatInputUnsupportedTypeError(this._type);\n }\n }\n\n /** Checks whether the input type is one of the types that are never empty. */\n protected _isNeverEmpty() {\n return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected _isBadInput() {\n // The `validity` property won't be present on platform-server.\n let validity = (this._elementRef.nativeElement as HTMLInputElement).validity;\n return validity && validity.badInput;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return !this._isNeverEmpty() && !this._elementRef.nativeElement.value && !this._isBadInput() &&\n !this.autofilled;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n if (this._isNativeSelect) {\n // For a single-selection `<select>`, the label should float when the selected option has\n // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid\n // overlapping the label with the options.\n const selectElement = this._elementRef.nativeElement as HTMLSelectElement;\n const firstOption: HTMLOptionElement | undefined = selectElement.options[0];\n\n // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be\n // -1 if the `value` is set to something, that isn't in the list of options, at a later point.\n return this.focused || selectElement.multiple || !this.empty ||\n !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label);\n } else {\n return this.focused || !this.empty;\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) {\n if (ids.length) {\n this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n } else {\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n // Do not re-focus the input element if the element is already focused. Otherwise it can happen\n // that someone clicks on a time input and the cursor resets to the \"hours\" field while the\n // \"minutes\" field was actually clicked. See: https://github.com/angular/components/issues/12849\n if (!this.focused) {\n this.focus();\n }\n }\n\n /** Whether the form control is a native select that is displayed inline. */\n _isInlineSelect(): boolean {\n const element = this._elementRef.nativeElement as HTMLSelectElement;\n return this._isNativeSelect && (element.multiple || element.size > 1);\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_readonly: BooleanInput;\n static ngAcceptInputType_required: BooleanInput;\n\n // Accept `any` to avoid conflicts with other directives on `<input>` that may\n // accept different types.\n static ngAcceptInputType_value: any;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {TextFieldModule} from '@angular/cdk/text-field';\nimport {NgModule} from '@angular/core';\nimport {ErrorStateMatcher, MatCommonModule} from '@angular/material/core';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatTextareaAutosize} from './autosize';\nimport {MatInput} from './input';\n\n@NgModule({\n declarations: [MatInput, MatTextareaAutosize],\n imports: [\n TextFieldModule,\n MatFormFieldModule,\n MatCommonModule,\n ],\n exports: [\n TextFieldModule,\n // We re-export the `MatFormFieldModule` since `MatInput` will almost always\n // be used together with `MatFormField`.\n MatFormFieldModule,\n MatInput,\n MatTextareaAutosize,\n ],\n providers: [ErrorStateMatcher],\n})\nexport class MatInputModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './autosize';\nexport * from './input';\nexport * from './input-errors';\nexport * from './input-module';\nexport * from './input-value-accessor';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}