@angular/material 12.2.5 → 12.2.9

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 (105) hide show
  1. package/badge/badge.d.ts +15 -14
  2. package/badge/index.metadata.json +1 -1
  3. package/bundles/material-badge.umd.js +77 -79
  4. package/bundles/material-badge.umd.js.map +1 -1
  5. package/bundles/material-bottom-sheet.umd.js.map +1 -1
  6. package/bundles/material-chips.umd.js +1 -1
  7. package/bundles/material-core.umd.js +7 -17
  8. package/bundles/material-core.umd.js.map +1 -1
  9. package/bundles/material-datepicker.umd.js +1 -1
  10. package/bundles/material-datepicker.umd.js.map +1 -1
  11. package/bundles/material-dialog.umd.js.map +1 -1
  12. package/bundles/material-expansion.umd.js +1 -1
  13. package/bundles/material-form-field.umd.js +1 -1
  14. package/bundles/material-list.umd.js +3 -3
  15. package/bundles/material-menu.umd.js +109 -93
  16. package/bundles/material-menu.umd.js.map +1 -1
  17. package/bundles/material-select.umd.js +3 -1
  18. package/bundles/material-select.umd.js.map +1 -1
  19. package/bundles/material-snack-bar-testing.umd.js +19 -20
  20. package/bundles/material-snack-bar-testing.umd.js.map +1 -1
  21. package/bundles/material-snack-bar.umd.js.map +1 -1
  22. package/bundles/material-stepper.umd.js +7 -3
  23. package/bundles/material-stepper.umd.js.map +1 -1
  24. package/bundles/material-tabs.umd.js +22 -8
  25. package/bundles/material-tabs.umd.js.map +1 -1
  26. package/bundles/material-tooltip.umd.js.map +1 -1
  27. package/chips/index.metadata.json +1 -1
  28. package/core/common-behaviors/common-module.d.ts +0 -4
  29. package/core/index.metadata.json +1 -1
  30. package/core/typography/_typography.scss +7 -2
  31. package/datepicker/_datepicker-theme.scss +1 -4
  32. package/esm2015/badge/badge.js +63 -80
  33. package/esm2015/bottom-sheet/bottom-sheet-ref.js +1 -1
  34. package/esm2015/chips/chip-list.js +1 -1
  35. package/esm2015/core/common-behaviors/common-module.js +4 -13
  36. package/esm2015/core/version.js +1 -1
  37. package/esm2015/datepicker/date-range-input.js +2 -2
  38. package/esm2015/dialog/dialog-ref.js +1 -1
  39. package/esm2015/expansion/expansion-panel-header.js +1 -1
  40. package/esm2015/form-field/form-field.js +1 -1
  41. package/esm2015/list/list.js +2 -2
  42. package/esm2015/list/selection-list.js +1 -1
  43. package/esm2015/menu/menu-content.js +16 -11
  44. package/esm2015/menu/menu-module.js +10 -20
  45. package/esm2015/menu/menu-trigger.js +33 -21
  46. package/esm2015/menu/public-api.js +2 -2
  47. package/esm2015/select/select.js +4 -2
  48. package/esm2015/snack-bar/snack-bar-container.js +1 -1
  49. package/esm2015/snack-bar/snack-bar-ref.js +1 -1
  50. package/esm2015/snack-bar/testing/snack-bar-harness.js +20 -21
  51. package/esm2015/stepper/step-header.js +3 -3
  52. package/esm2015/stepper/stepper-intl.js +5 -1
  53. package/esm2015/stepper/stepper.js +1 -1
  54. package/esm2015/tabs/public-api.js +2 -2
  55. package/esm2015/tabs/tab-label.js +16 -2
  56. package/esm2015/tabs/tab.js +9 -8
  57. package/esm2015/tooltip/tooltip.js +1 -1
  58. package/expansion/index.metadata.json +1 -1
  59. package/fesm2015/badge.js +62 -79
  60. package/fesm2015/badge.js.map +1 -1
  61. package/fesm2015/bottom-sheet.js.map +1 -1
  62. package/fesm2015/chips.js +1 -1
  63. package/fesm2015/core.js +4 -14
  64. package/fesm2015/core.js.map +1 -1
  65. package/fesm2015/datepicker.js +1 -1
  66. package/fesm2015/datepicker.js.map +1 -1
  67. package/fesm2015/dialog.js.map +1 -1
  68. package/fesm2015/expansion.js +1 -1
  69. package/fesm2015/form-field.js +1 -1
  70. package/fesm2015/list.js +3 -3
  71. package/fesm2015/menu.js +57 -50
  72. package/fesm2015/menu.js.map +1 -1
  73. package/fesm2015/select.js +3 -1
  74. package/fesm2015/select.js.map +1 -1
  75. package/fesm2015/snack-bar/testing.js +19 -20
  76. package/fesm2015/snack-bar/testing.js.map +1 -1
  77. package/fesm2015/snack-bar.js.map +1 -1
  78. package/fesm2015/stepper.js +7 -3
  79. package/fesm2015/stepper.js.map +1 -1
  80. package/fesm2015/tabs.js +23 -8
  81. package/fesm2015/tabs.js.map +1 -1
  82. package/fesm2015/tooltip.js.map +1 -1
  83. package/form-field/index.metadata.json +1 -1
  84. package/list/index.metadata.json +1 -1
  85. package/menu/index.metadata.json +1 -1
  86. package/menu/menu-content.d.ts +6 -4
  87. package/menu/menu-module.d.ts +0 -6
  88. package/menu/menu-trigger.d.ts +7 -2
  89. package/menu/public-api.d.ts +1 -1
  90. package/package.json +2 -2
  91. package/prebuilt-themes/deeppurple-amber.css +1 -1
  92. package/prebuilt-themes/indigo-pink.css +1 -1
  93. package/prebuilt-themes/pink-bluegrey.css +1 -1
  94. package/prebuilt-themes/purple-green.css +1 -1
  95. package/schematics/ng-add/index.js +1 -1
  96. package/schematics/ng-add/index.mjs +1 -1
  97. package/select/index.metadata.json +1 -1
  98. package/snack-bar/testing/snack-bar-harness.d.ts +8 -9
  99. package/stepper/index.metadata.json +1 -1
  100. package/stepper/stepper-intl.d.ts +4 -0
  101. package/tabs/index.metadata.json +1 -1
  102. package/tabs/public-api.d.ts +1 -1
  103. package/tabs/tab-label.d.ts +8 -1
  104. package/tabs/tab.d.ts +1 -1
  105. package/tooltip/tooltip.d.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"snack-bar.js","sources":["../../../../../../src/material/snack-bar/snack-bar-config.ts","../../../../../../src/material/snack-bar/snack-bar-ref.ts","../../../../../../src/material/snack-bar/simple-snack-bar.ts","../../../../../../src/material/snack-bar/snack-bar-animations.ts","../../../../../../src/material/snack-bar/snack-bar-container.ts","../../../../../../src/material/snack-bar/snack-bar-module.ts","../../../../../../src/material/snack-bar/snack-bar.ts","../../../../../../src/material/snack-bar/public-api.ts","../../../../../../src/material/snack-bar/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, InjectionToken} from '@angular/core';\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Direction} from '@angular/cdk/bidi';\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nexport const MAT_SNACK_BAR_DATA = new InjectionToken<any>('MatSnackBarData');\n\n/** Possible values for horizontalPosition on MatSnackBarConfig. */\nexport type MatSnackBarHorizontalPosition = 'start' | 'center' | 'end' | 'left' | 'right';\n\n/** Possible values for verticalPosition on MatSnackBarConfig. */\nexport type MatSnackBarVerticalPosition = 'top' | 'bottom';\n\n/**\n * Configuration used when opening a snack-bar.\n */\nexport class MatSnackBarConfig<D = any> {\n /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n politeness?: AriaLivePoliteness = 'assertive';\n\n /**\n * Message to be announced by the LiveAnnouncer. When opening a snackbar without a custom\n * component or template, the announcement message will default to the specified message.\n */\n announcementMessage?: string = '';\n\n /**\n * The view container that serves as the parent for the snackbar for the purposes of dependency\n * injection. Note: this does not affect where the snackbar is inserted in the DOM.\n */\n viewContainerRef?: ViewContainerRef;\n\n /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\n duration?: number = 0;\n\n /** Extra CSS classes to be added to the snack bar container. */\n panelClass?: string | string[];\n\n /** Text layout direction for the snack bar. */\n direction?: Direction;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** The horizontal position to place the snack bar. */\n horizontalPosition?: MatSnackBarHorizontalPosition = 'center';\n\n /** The vertical position to place the snack bar. */\n verticalPosition?: MatSnackBarVerticalPosition = 'bottom';\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 {OverlayRef} from '@angular/cdk/overlay';\nimport {Observable, Subject} from 'rxjs';\nimport {_SnackBarContainer} from './snack-bar-container';\n\n\n/** Event that is emitted when a snack bar is dismissed. */\nexport interface MatSnackBarDismiss {\n /** Whether the snack bar was dismissed using the action button. */\n dismissedByAction: boolean;\n}\n\n/** Maximum amount of milliseconds that can be passed into setTimeout. */\nconst MAX_TIMEOUT = Math.pow(2, 31) - 1;\n\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nexport class MatSnackBarRef<T> {\n /** The instance of the component making up the content of the snack bar. */\n instance: T;\n\n /**\n * The instance of the component making up the content of the snack bar.\n * @docs-private\n */\n containerInstance: _SnackBarContainer;\n\n /** Subject for notifying the user that the snack bar has been dismissed. */\n private readonly _afterDismissed = new Subject<MatSnackBarDismiss>();\n\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Subject for notifying the user that the snack bar action was called. */\n private readonly _onAction = new Subject<void>();\n\n /**\n * Timeout ID for the duration setTimeout call. Used to clear the timeout if the snackbar is\n * dismissed before the duration passes.\n */\n private _durationTimeoutId: number;\n\n /** Whether the snack bar was dismissed using the action button. */\n private _dismissedByAction = false;\n\n constructor(containerInstance: _SnackBarContainer,\n private _overlayRef: OverlayRef) {\n this.containerInstance = containerInstance;\n // Dismiss snackbar on action.\n this.onAction().subscribe(() => this.dismiss());\n containerInstance._onExit.subscribe(() => this._finishDismiss());\n }\n\n /** Dismisses the snack bar. */\n dismiss(): void {\n if (!this._afterDismissed.closed) {\n this.containerInstance.exit();\n }\n clearTimeout(this._durationTimeoutId);\n }\n\n /** Marks the snackbar action clicked. */\n dismissWithAction(): void {\n if (!this._onAction.closed) {\n this._dismissedByAction = true;\n this._onAction.next();\n this._onAction.complete();\n }\n clearTimeout(this._durationTimeoutId);\n }\n\n\n /**\n * Marks the snackbar action clicked.\n * @deprecated Use `dismissWithAction` instead.\n * @breaking-change 8.0.0\n */\n closeWithAction(): void {\n this.dismissWithAction();\n }\n\n /** Dismisses the snack bar after some duration */\n _dismissAfter(duration: number): void {\n // Note that we need to cap the duration to the maximum value for setTimeout, because\n // it'll revert to 1 if somebody passes in something greater (e.g. `Infinity`). See #17234.\n this._durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\n }\n\n /** Marks the snackbar as opened */\n _open(): void {\n if (!this._afterOpened.closed) {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n }\n\n /** Cleans up the DOM after closing. */\n private _finishDismiss(): void {\n this._overlayRef.dispose();\n\n if (!this._onAction.closed) {\n this._onAction.complete();\n }\n\n this._afterDismissed.next({dismissedByAction: this._dismissedByAction});\n this._afterDismissed.complete();\n this._dismissedByAction = false;\n }\n\n /** Gets an observable that is notified when the snack bar is finished closing. */\n afterDismissed(): Observable<MatSnackBarDismiss> {\n return this._afterDismissed;\n }\n\n /** Gets an observable that is notified when the snack bar has opened and appeared. */\n afterOpened(): Observable<void> {\n return this.containerInstance._onEnter;\n }\n\n /** Gets an observable that is notified when the snack bar action is called. */\n onAction(): Observable<void> {\n return this._onAction;\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 {ChangeDetectionStrategy, Component, Inject, ViewEncapsulation} from '@angular/core';\nimport {MAT_SNACK_BAR_DATA} from './snack-bar-config';\nimport {MatSnackBarRef} from './snack-bar-ref';\n\n\n/**\n * Interface for a simple snack bar component that has a message and a single action.\n */\nexport interface TextOnlySnackBar {\n data: {message: string, action: string};\n snackBarRef: MatSnackBarRef<TextOnlySnackBar>;\n action: () => void;\n hasAction: boolean;\n}\n\n/**\n * A component used to open as the default snack bar, matching material spec.\n * This should only be used internally by the snack bar service.\n */\n@Component({\n selector: 'simple-snack-bar',\n templateUrl: 'simple-snack-bar.html',\n styleUrls: ['simple-snack-bar.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-simple-snackbar',\n }\n})\nexport class SimpleSnackBar implements TextOnlySnackBar {\n /** Data that was injected into the snack bar. */\n data: {message: string, action: string};\n\n constructor(\n public snackBarRef: MatSnackBarRef<SimpleSnackBar>,\n @Inject(MAT_SNACK_BAR_DATA) data: any) {\n this.data = data;\n }\n\n /** Performs the action on the snack bar. */\n action(): void {\n this.snackBarRef.dismissWithAction();\n }\n\n /** If the action button should be shown. */\n get hasAction(): boolean {\n return !!this.data.action;\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 */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material snack bar.\n * @docs-private\n */\nexport const matSnackBarAnimations: {\n readonly snackBarState: AnimationTriggerMetadata;\n} = {\n /** Animation that shows and hides a snack bar. */\n snackBarState: trigger('state', [\n state('void, hidden', style({\n transform: 'scale(0.8)',\n opacity: 0,\n })),\n state('visible', style({\n transform: 'scale(1)',\n opacity: 1,\n })),\n transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')),\n transition('* => void, * => hidden', animate('75ms cubic-bezier(0.4, 0.0, 1, 1)', style({\n opacity: 0\n }))),\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 {AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Platform} from '@angular/cdk/platform';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n ComponentPortal,\n TemplatePortal,\n DomPortal,\n} from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n NgZone,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {matSnackBarAnimations} from './snack-bar-animations';\nimport {MatSnackBarConfig} from './snack-bar-config';\n\n/**\n * Internal interface for a snack bar container.\n * @docs-private\n */\nexport interface _SnackBarContainer {\n snackBarConfig: MatSnackBarConfig;\n readonly _onAnnounce: Subject<any>;\n readonly _onExit: Subject<any>;\n readonly _onEnter: Subject<any>;\n enter: () => void;\n exit: () => Observable<void>;\n attachTemplatePortal: <C>(portal: TemplatePortal<C>) => EmbeddedViewRef<C>;\n attachComponentPortal: <T>(portal: ComponentPortal<T>) => ComponentRef<T>;\n}\n\n/**\n * Internal component that wraps user-provided snack bar content.\n * @docs-private\n */\n@Component({\n selector: 'snack-bar-container',\n templateUrl: 'snack-bar-container.html',\n styleUrls: ['snack-bar-container.css'],\n // In Ivy embedded views will be change detected from their declaration place, rather than\n // where they were stamped out. This means that we can't have the snack bar container be OnPush,\n // because it might cause snack bars that were opened from a template not to be out of date.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n animations: [matSnackBarAnimations.snackBarState],\n host: {\n 'class': 'mat-snack-bar-container',\n '[@state]': '_animationState',\n '(@state.done)': 'onAnimationEnd($event)'\n },\n})\nexport class MatSnackBarContainer extends BasePortalOutlet\n implements OnDestroy, _SnackBarContainer {\n /** The number of milliseconds to wait before announcing the snack bar's content. */\n private readonly _announceDelay: number = 150;\n\n /** The timeout for announcing the snack bar's content. */\n private _announceTimeoutId: number;\n\n /** Whether the component has been destroyed. */\n private _destroyed = false;\n\n /** The portal outlet inside of this container into which the snack bar content will be loaded. */\n @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\n\n /** Subject for notifying that the snack bar has announced to screen readers. */\n readonly _onAnnounce: Subject<void> = new Subject();\n\n /** Subject for notifying that the snack bar has exited from view. */\n readonly _onExit: Subject<void> = new Subject();\n\n /** Subject for notifying that the snack bar has finished entering the view. */\n readonly _onEnter: Subject<void> = new Subject();\n\n /** The state of the snack bar animations. */\n _animationState = 'void';\n\n /** aria-live value for the live region. */\n _live: AriaLivePoliteness;\n\n /**\n * Role of the live region. This is only for Firefox as there is a known issue where Firefox +\n * JAWS does not read out aria-live message.\n */\n _role?: 'status' | 'alert';\n\n constructor(\n private _ngZone: NgZone,\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n private _platform: Platform,\n /** The snack bar configuration. */\n public snackBarConfig: MatSnackBarConfig) {\n\n super();\n\n // Use aria-live rather than a live role like 'alert' or 'status'\n // because NVDA and JAWS have show inconsistent behavior with live roles.\n if (snackBarConfig.politeness === 'assertive' && !snackBarConfig.announcementMessage) {\n this._live = 'assertive';\n } else if (snackBarConfig.politeness === 'off') {\n this._live = 'off';\n } else {\n this._live = 'polite';\n }\n\n // Only set role for Firefox. Set role based on aria-live because setting role=\"alert\" implies\n // aria-live=\"assertive\" which may cause issues if aria-live is set to \"polite\" above.\n if (this._platform.FIREFOX) {\n if (this._live === 'polite') {\n this._role = 'status';\n }\n if (this._live === 'assertive') {\n this._role = 'alert';\n }\n }\n }\n\n /** Attach a component portal as content to this snack bar container. */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n this._assertNotAttached();\n this._applySnackBarClasses();\n return this._portalOutlet.attachComponentPortal(portal);\n }\n\n /** Attach a template portal as content to this snack bar container. */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n this._assertNotAttached();\n this._applySnackBarClasses();\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n\n /**\n * Attaches a DOM portal to the snack bar container.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n override attachDomPortal = (portal: DomPortal) => {\n this._assertNotAttached();\n this._applySnackBarClasses();\n return this._portalOutlet.attachDomPortal(portal);\n }\n\n /** Handle end of animations, updating the state of the snackbar. */\n onAnimationEnd(event: AnimationEvent) {\n const {fromState, toState} = event;\n\n if ((toState === 'void' && fromState !== 'void') || toState === 'hidden') {\n this._completeExit();\n }\n\n if (toState === 'visible') {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onEnter = this._onEnter;\n\n this._ngZone.run(() => {\n onEnter.next();\n onEnter.complete();\n });\n }\n }\n\n /** Begin animation of snack bar entrance into view. */\n enter(): void {\n if (!this._destroyed) {\n this._animationState = 'visible';\n this._changeDetectorRef.detectChanges();\n this._screenReaderAnnounce();\n }\n }\n\n /** Begin animation of the snack bar exiting from view. */\n exit(): Observable<void> {\n // Note: this one transitions to `hidden`, rather than `void`, in order to handle the case\n // where multiple snack bars are opened in quick succession (e.g. two consecutive calls to\n // `MatSnackBar.open`).\n this._animationState = 'hidden';\n\n // Mark this element with an 'exit' attribute to indicate that the snackbar has\n // been dismissed and will soon be removed from the DOM. This is used by the snackbar\n // test harness.\n this._elementRef.nativeElement.setAttribute('mat-exit', '');\n\n // If the snack bar hasn't been announced by the time it exits it wouldn't have been open\n // long enough to visually read it either, so clear the timeout for announcing.\n clearTimeout(this._announceTimeoutId);\n\n return this._onExit;\n }\n\n /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\n ngOnDestroy() {\n this._destroyed = true;\n this._completeExit();\n }\n\n /**\n * Waits for the zone to settle before removing the element. Helps prevent\n * errors where we end up removing an element which is in the middle of an animation.\n */\n private _completeExit() {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n this._onExit.next();\n this._onExit.complete();\n });\n }\n\n /** Applies the various positioning and user-configured CSS classes to the snack bar. */\n private _applySnackBarClasses() {\n const element: HTMLElement = this._elementRef.nativeElement;\n const panelClasses = this.snackBarConfig.panelClass;\n\n if (panelClasses) {\n if (Array.isArray(panelClasses)) {\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n panelClasses.forEach(cssClass => element.classList.add(cssClass));\n } else {\n element.classList.add(panelClasses);\n }\n }\n\n if (this.snackBarConfig.horizontalPosition === 'center') {\n element.classList.add('mat-snack-bar-center');\n }\n\n if (this.snackBarConfig.verticalPosition === 'top') {\n element.classList.add('mat-snack-bar-top');\n }\n }\n\n /** Asserts that no content is already attached to the container. */\n private _assertNotAttached() {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Attempting to attach snack bar content after content is already attached');\n }\n }\n\n /**\n * Starts a timeout to move the snack bar content to the live region so screen readers will\n * announce it.\n */\n private _screenReaderAnnounce() {\n if (!this._announceTimeoutId) {\n this._ngZone.runOutsideAngular(() => {\n this._announceTimeoutId = setTimeout(() => {\n const inertElement = this._elementRef.nativeElement.querySelector('[aria-hidden]');\n const liveElement = this._elementRef.nativeElement.querySelector('[aria-live]');\n\n if (inertElement && liveElement) {\n // If an element in the snack bar content is focused before being moved\n // track it and restore focus after moving to the live region.\n let focusedElement: HTMLElement | null = null;\n if (this._platform.isBrowser &&\n document.activeElement instanceof HTMLElement &&\n inertElement.contains(document.activeElement)) {\n focusedElement = document.activeElement;\n }\n\n inertElement.removeAttribute('aria-hidden');\n liveElement.appendChild(inertElement);\n focusedElement?.focus();\n\n this._onAnnounce.next();\n this._onAnnounce.complete();\n }\n }, this._announceDelay);\n });\n }\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 {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatButtonModule} from '@angular/material/button';\nimport {SimpleSnackBar} from './simple-snack-bar';\nimport {MatSnackBarContainer} from './snack-bar-container';\n\n\n@NgModule({\n imports: [\n OverlayModule,\n PortalModule,\n CommonModule,\n MatButtonModule,\n MatCommonModule,\n ],\n exports: [MatSnackBarContainer, MatCommonModule],\n declarations: [MatSnackBarContainer, SimpleSnackBar],\n entryComponents: [MatSnackBarContainer, SimpleSnackBar],\n})\nexport class MatSnackBarModule {}\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 {LiveAnnouncer} from '@angular/cdk/a11y';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {Overlay, OverlayConfig, OverlayRef} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, TemplatePortal} from '@angular/cdk/portal';\nimport {\n ComponentRef,\n EmbeddedViewRef,\n Inject,\n Injectable,\n InjectionToken,\n Injector,\n Optional,\n SkipSelf,\n TemplateRef,\n OnDestroy, Type,\n} from '@angular/core';\nimport {takeUntil} from 'rxjs/operators';\nimport {TextOnlySnackBar, SimpleSnackBar} from './simple-snack-bar';\nimport {MAT_SNACK_BAR_DATA, MatSnackBarConfig} from './snack-bar-config';\nimport {MatSnackBarContainer, _SnackBarContainer} from './snack-bar-container';\nimport {MatSnackBarModule} from './snack-bar-module';\nimport {MatSnackBarRef} from './snack-bar-ref';\n\n\n/** Injection token that can be used to specify default snack bar. */\nexport const MAT_SNACK_BAR_DEFAULT_OPTIONS =\n new InjectionToken<MatSnackBarConfig>('mat-snack-bar-default-options', {\n providedIn: 'root',\n factory: MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY,\n });\n\n/** @docs-private */\nexport function MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY(): MatSnackBarConfig {\n return new MatSnackBarConfig();\n}\n\n/**\n * Service to dispatch Material Design snack bar messages.\n */\n@Injectable({providedIn: MatSnackBarModule})\nexport class MatSnackBar implements OnDestroy {\n /**\n * Reference to the current snack bar in the view *at this level* (in the Angular injector tree).\n * If there is a parent snack-bar service, all operations should delegate to that parent\n * via `_openedSnackBarRef`.\n */\n private _snackBarRefAtThisLevel: MatSnackBarRef<any> | null = null;\n\n /** The component that should be rendered as the snack bar's simple component. */\n protected simpleSnackBarComponent: Type<TextOnlySnackBar> = SimpleSnackBar;\n\n /** The container component that attaches the provided template or component. */\n protected snackBarContainerComponent: Type<_SnackBarContainer> = MatSnackBarContainer;\n\n /** The CSS class to apply for handset mode. */\n protected handsetCssClass = 'mat-snack-bar-handset';\n\n /** Reference to the currently opened snackbar at *any* level. */\n get _openedSnackBarRef(): MatSnackBarRef<any> | null {\n const parent = this._parentSnackBar;\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n }\n\n set _openedSnackBarRef(value: MatSnackBarRef<any> | null) {\n if (this._parentSnackBar) {\n this._parentSnackBar._openedSnackBarRef = value;\n } else {\n this._snackBarRefAtThisLevel = value;\n }\n }\n\n constructor(\n private _overlay: Overlay,\n private _live: LiveAnnouncer,\n private _injector: Injector,\n private _breakpointObserver: BreakpointObserver,\n @Optional() @SkipSelf() private _parentSnackBar: MatSnackBar,\n @Inject(MAT_SNACK_BAR_DEFAULT_OPTIONS) private _defaultConfig: MatSnackBarConfig) {}\n\n /**\n * Creates and dispatches a snack bar with a custom component for the content, removing any\n * currently opened snack bars.\n *\n * @param component Component to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromComponent<T>(component: ComponentType<T>, config?: MatSnackBarConfig):\n MatSnackBarRef<T> {\n return this._attach(component, config) as MatSnackBarRef<T>;\n }\n\n /**\n * Creates and dispatches a snack bar with a custom template for the content, removing any\n * currently opened snack bars.\n *\n * @param template Template to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromTemplate(template: TemplateRef<any>, config?: MatSnackBarConfig):\n MatSnackBarRef<EmbeddedViewRef<any>> {\n return this._attach(template, config);\n }\n\n /**\n * Opens a snackbar with a message and an optional action.\n * @param message The message to show in the snackbar.\n * @param action The label for the snackbar action.\n * @param config Additional configuration options for the snackbar.\n */\n open(message: string, action: string = '', config?: MatSnackBarConfig):\n MatSnackBarRef<TextOnlySnackBar> {\n const _config = {...this._defaultConfig, ...config};\n\n // Since the user doesn't have access to the component, we can\n // override the data to pass in our own message and action.\n _config.data = {message, action};\n\n // Since the snack bar has `role=\"alert\"`, we don't\n // want to announce the same message twice.\n if (_config.announcementMessage === message) {\n _config.announcementMessage = undefined;\n }\n\n return this.openFromComponent(this.simpleSnackBarComponent, _config);\n }\n\n /**\n * Dismisses the currently-visible snack bar.\n */\n dismiss(): void {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n }\n\n ngOnDestroy() {\n // Only dismiss the snack bar at the current level on destroy.\n if (this._snackBarRefAtThisLevel) {\n this._snackBarRefAtThisLevel.dismiss();\n }\n }\n\n /**\n * Attaches the snack bar container component to the overlay.\n */\n private _attachSnackBarContainer(overlayRef: OverlayRef,\n config: MatSnackBarConfig): _SnackBarContainer {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{provide: MatSnackBarConfig, useValue: config}]\n });\n\n const containerPortal =\n new ComponentPortal(this.snackBarContainerComponent, config.viewContainerRef, injector);\n const containerRef: ComponentRef<_SnackBarContainer> =\n overlayRef.attach(containerPortal);\n containerRef.instance.snackBarConfig = config;\n return containerRef.instance;\n }\n\n /**\n * Places a new component or a template as the content of the snack bar container.\n */\n private _attach<T>(content: ComponentType<T> | TemplateRef<T>, userConfig?: MatSnackBarConfig):\n MatSnackBarRef<T | EmbeddedViewRef<any>> {\n\n const config = {...new MatSnackBarConfig(), ...this._defaultConfig, ...userConfig};\n const overlayRef = this._createOverlay(config);\n const container = this._attachSnackBarContainer(overlayRef, config);\n const snackBarRef = new MatSnackBarRef<T | EmbeddedViewRef<any>>(container, overlayRef);\n\n if (content instanceof TemplateRef) {\n const portal = new TemplatePortal(content, null!, {\n $implicit: config.data,\n snackBarRef\n } as any);\n\n snackBarRef.instance = container.attachTemplatePortal(portal);\n } else {\n const injector = this._createInjector(config, snackBarRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = container.attachComponentPortal<T>(portal);\n\n // We can't pass this via the injector, because the injector is created earlier.\n snackBarRef.instance = contentRef.instance;\n }\n\n // Subscribe to the breakpoint observer and attach the mat-snack-bar-handset class as\n // appropriate. This class is applied to the overlay element because the overlay must expand to\n // fill the width of the screen for full width snackbars.\n this._breakpointObserver.observe(Breakpoints.HandsetPortrait).pipe(\n takeUntil(overlayRef.detachments())\n ).subscribe(state => {\n const classList = overlayRef.overlayElement.classList;\n state.matches ? classList.add(this.handsetCssClass) : classList.remove(this.handsetCssClass);\n });\n\n if (config.announcementMessage) {\n // Wait until the snack bar contents have been announced then deliver this message.\n container._onAnnounce.subscribe(() => {\n this._live.announce(config.announcementMessage!, config.politeness);\n });\n }\n\n this._animateSnackBar(snackBarRef, config);\n this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\n }\n\n /** Animates the old snack bar out and the new one in. */\n private _animateSnackBar(snackBarRef: MatSnackBarRef<any>, config: MatSnackBarConfig) {\n // When the snackbar is dismissed, clear the reference to it.\n snackBarRef.afterDismissed().subscribe(() => {\n // Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.\n if (this._openedSnackBarRef == snackBarRef) {\n this._openedSnackBarRef = null;\n }\n\n if (config.announcementMessage) {\n this._live.clear();\n }\n });\n\n if (this._openedSnackBarRef) {\n // If a snack bar is already in view, dismiss it and enter the\n // new snack bar after exit animation is complete.\n this._openedSnackBarRef.afterDismissed().subscribe(() => {\n snackBarRef.containerInstance.enter();\n });\n this._openedSnackBarRef.dismiss();\n } else {\n // If no snack bar is in view, enter the new snack bar.\n snackBarRef.containerInstance.enter();\n }\n\n // If a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.\n if (config.duration && config.duration > 0) {\n snackBarRef.afterOpened().subscribe(() => snackBarRef._dismissAfter(config.duration!));\n }\n }\n\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified snack bar config.\n */\n private _createOverlay(config: MatSnackBarConfig): OverlayRef {\n const overlayConfig = new OverlayConfig();\n overlayConfig.direction = config.direction;\n\n let positionStrategy = this._overlay.position().global();\n // Set horizontal position.\n const isRtl = config.direction === 'rtl';\n const isLeft = (\n config.horizontalPosition === 'left' ||\n (config.horizontalPosition === 'start' && !isRtl) ||\n (config.horizontalPosition === 'end' && isRtl));\n const isRight = !isLeft && config.horizontalPosition !== 'center';\n if (isLeft) {\n positionStrategy.left('0');\n } else if (isRight) {\n positionStrategy.right('0');\n } else {\n positionStrategy.centerHorizontally();\n }\n // Set horizontal position.\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n } else {\n positionStrategy.bottom('0');\n }\n\n overlayConfig.positionStrategy = positionStrategy;\n return this._overlay.create(overlayConfig);\n }\n\n /**\n * Creates an injector to be used inside of a snack bar component.\n * @param config Config that was used to create the snack bar.\n * @param snackBarRef Reference to the snack bar.\n */\n private _createInjector<T>(config: MatSnackBarConfig, snackBarRef: MatSnackBarRef<T>): Injector {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n return Injector.create({\n parent: userInjector || this._injector,\n providers: [\n {provide: MatSnackBarRef, useValue: snackBarRef},\n {provide: MAT_SNACK_BAR_DATA, useValue: config.data}\n ]\n });\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\nexport * from './snack-bar-module';\nexport * from './snack-bar';\nexport * from './snack-bar-container';\nexport * from './snack-bar-config';\nexport * from './snack-bar-ref';\nexport * from './simple-snack-bar';\nexport * from './snack-bar-animations';\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":"snack-bar.js","sources":["../../../../../../src/material/snack-bar/snack-bar-config.ts","../../../../../../src/material/snack-bar/snack-bar-ref.ts","../../../../../../src/material/snack-bar/simple-snack-bar.ts","../../../../../../src/material/snack-bar/snack-bar-animations.ts","../../../../../../src/material/snack-bar/snack-bar-container.ts","../../../../../../src/material/snack-bar/snack-bar-module.ts","../../../../../../src/material/snack-bar/snack-bar.ts","../../../../../../src/material/snack-bar/public-api.ts","../../../../../../src/material/snack-bar/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, InjectionToken} from '@angular/core';\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Direction} from '@angular/cdk/bidi';\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nexport const MAT_SNACK_BAR_DATA = new InjectionToken<any>('MatSnackBarData');\n\n/** Possible values for horizontalPosition on MatSnackBarConfig. */\nexport type MatSnackBarHorizontalPosition = 'start' | 'center' | 'end' | 'left' | 'right';\n\n/** Possible values for verticalPosition on MatSnackBarConfig. */\nexport type MatSnackBarVerticalPosition = 'top' | 'bottom';\n\n/**\n * Configuration used when opening a snack-bar.\n */\nexport class MatSnackBarConfig<D = any> {\n /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n politeness?: AriaLivePoliteness = 'assertive';\n\n /**\n * Message to be announced by the LiveAnnouncer. When opening a snackbar without a custom\n * component or template, the announcement message will default to the specified message.\n */\n announcementMessage?: string = '';\n\n /**\n * The view container that serves as the parent for the snackbar for the purposes of dependency\n * injection. Note: this does not affect where the snackbar is inserted in the DOM.\n */\n viewContainerRef?: ViewContainerRef;\n\n /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\n duration?: number = 0;\n\n /** Extra CSS classes to be added to the snack bar container. */\n panelClass?: string | string[];\n\n /** Text layout direction for the snack bar. */\n direction?: Direction;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** The horizontal position to place the snack bar. */\n horizontalPosition?: MatSnackBarHorizontalPosition = 'center';\n\n /** The vertical position to place the snack bar. */\n verticalPosition?: MatSnackBarVerticalPosition = 'bottom';\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 {OverlayRef} from '@angular/cdk/overlay';\nimport {Observable, Subject} from 'rxjs';\nimport {_SnackBarContainer} from './snack-bar-container';\n\n\n/** Event that is emitted when a snack bar is dismissed. */\nexport interface MatSnackBarDismiss {\n /** Whether the snack bar was dismissed using the action button. */\n dismissedByAction: boolean;\n}\n\n/** Maximum amount of milliseconds that can be passed into setTimeout. */\nconst MAX_TIMEOUT = Math.pow(2, 31) - 1;\n\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nexport class MatSnackBarRef<T> {\n /** The instance of the component making up the content of the snack bar. */\n instance: T;\n\n /**\n * The instance of the component making up the content of the snack bar.\n * @docs-private\n */\n containerInstance: _SnackBarContainer;\n\n /** Subject for notifying the user that the snack bar has been dismissed. */\n private readonly _afterDismissed = new Subject<MatSnackBarDismiss>();\n\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Subject for notifying the user that the snack bar action was called. */\n private readonly _onAction = new Subject<void>();\n\n /**\n * Timeout ID for the duration setTimeout call. Used to clear the timeout if the snackbar is\n * dismissed before the duration passes.\n */\n private _durationTimeoutId: any;\n\n /** Whether the snack bar was dismissed using the action button. */\n private _dismissedByAction = false;\n\n constructor(containerInstance: _SnackBarContainer,\n private _overlayRef: OverlayRef) {\n this.containerInstance = containerInstance;\n // Dismiss snackbar on action.\n this.onAction().subscribe(() => this.dismiss());\n containerInstance._onExit.subscribe(() => this._finishDismiss());\n }\n\n /** Dismisses the snack bar. */\n dismiss(): void {\n if (!this._afterDismissed.closed) {\n this.containerInstance.exit();\n }\n clearTimeout(this._durationTimeoutId);\n }\n\n /** Marks the snackbar action clicked. */\n dismissWithAction(): void {\n if (!this._onAction.closed) {\n this._dismissedByAction = true;\n this._onAction.next();\n this._onAction.complete();\n }\n clearTimeout(this._durationTimeoutId);\n }\n\n\n /**\n * Marks the snackbar action clicked.\n * @deprecated Use `dismissWithAction` instead.\n * @breaking-change 8.0.0\n */\n closeWithAction(): void {\n this.dismissWithAction();\n }\n\n /** Dismisses the snack bar after some duration */\n _dismissAfter(duration: number): void {\n // Note that we need to cap the duration to the maximum value for setTimeout, because\n // it'll revert to 1 if somebody passes in something greater (e.g. `Infinity`). See #17234.\n this._durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\n }\n\n /** Marks the snackbar as opened */\n _open(): void {\n if (!this._afterOpened.closed) {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n }\n\n /** Cleans up the DOM after closing. */\n private _finishDismiss(): void {\n this._overlayRef.dispose();\n\n if (!this._onAction.closed) {\n this._onAction.complete();\n }\n\n this._afterDismissed.next({dismissedByAction: this._dismissedByAction});\n this._afterDismissed.complete();\n this._dismissedByAction = false;\n }\n\n /** Gets an observable that is notified when the snack bar is finished closing. */\n afterDismissed(): Observable<MatSnackBarDismiss> {\n return this._afterDismissed;\n }\n\n /** Gets an observable that is notified when the snack bar has opened and appeared. */\n afterOpened(): Observable<void> {\n return this.containerInstance._onEnter;\n }\n\n /** Gets an observable that is notified when the snack bar action is called. */\n onAction(): Observable<void> {\n return this._onAction;\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 {ChangeDetectionStrategy, Component, Inject, ViewEncapsulation} from '@angular/core';\nimport {MAT_SNACK_BAR_DATA} from './snack-bar-config';\nimport {MatSnackBarRef} from './snack-bar-ref';\n\n\n/**\n * Interface for a simple snack bar component that has a message and a single action.\n */\nexport interface TextOnlySnackBar {\n data: {message: string, action: string};\n snackBarRef: MatSnackBarRef<TextOnlySnackBar>;\n action: () => void;\n hasAction: boolean;\n}\n\n/**\n * A component used to open as the default snack bar, matching material spec.\n * This should only be used internally by the snack bar service.\n */\n@Component({\n selector: 'simple-snack-bar',\n templateUrl: 'simple-snack-bar.html',\n styleUrls: ['simple-snack-bar.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-simple-snackbar',\n }\n})\nexport class SimpleSnackBar implements TextOnlySnackBar {\n /** Data that was injected into the snack bar. */\n data: {message: string, action: string};\n\n constructor(\n public snackBarRef: MatSnackBarRef<SimpleSnackBar>,\n @Inject(MAT_SNACK_BAR_DATA) data: any) {\n this.data = data;\n }\n\n /** Performs the action on the snack bar. */\n action(): void {\n this.snackBarRef.dismissWithAction();\n }\n\n /** If the action button should be shown. */\n get hasAction(): boolean {\n return !!this.data.action;\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 */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material snack bar.\n * @docs-private\n */\nexport const matSnackBarAnimations: {\n readonly snackBarState: AnimationTriggerMetadata;\n} = {\n /** Animation that shows and hides a snack bar. */\n snackBarState: trigger('state', [\n state('void, hidden', style({\n transform: 'scale(0.8)',\n opacity: 0,\n })),\n state('visible', style({\n transform: 'scale(1)',\n opacity: 1,\n })),\n transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')),\n transition('* => void, * => hidden', animate('75ms cubic-bezier(0.4, 0.0, 1, 1)', style({\n opacity: 0\n }))),\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 {AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Platform} from '@angular/cdk/platform';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n ComponentPortal,\n TemplatePortal,\n DomPortal,\n} from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n NgZone,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {matSnackBarAnimations} from './snack-bar-animations';\nimport {MatSnackBarConfig} from './snack-bar-config';\n\n/**\n * Internal interface for a snack bar container.\n * @docs-private\n */\nexport interface _SnackBarContainer {\n snackBarConfig: MatSnackBarConfig;\n readonly _onAnnounce: Subject<any>;\n readonly _onExit: Subject<any>;\n readonly _onEnter: Subject<any>;\n enter: () => void;\n exit: () => Observable<void>;\n attachTemplatePortal: <C>(portal: TemplatePortal<C>) => EmbeddedViewRef<C>;\n attachComponentPortal: <T>(portal: ComponentPortal<T>) => ComponentRef<T>;\n}\n\n/**\n * Internal component that wraps user-provided snack bar content.\n * @docs-private\n */\n@Component({\n selector: 'snack-bar-container',\n templateUrl: 'snack-bar-container.html',\n styleUrls: ['snack-bar-container.css'],\n // In Ivy embedded views will be change detected from their declaration place, rather than\n // where they were stamped out. This means that we can't have the snack bar container be OnPush,\n // because it might cause snack bars that were opened from a template not to be out of date.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n animations: [matSnackBarAnimations.snackBarState],\n host: {\n 'class': 'mat-snack-bar-container',\n '[@state]': '_animationState',\n '(@state.done)': 'onAnimationEnd($event)'\n },\n})\nexport class MatSnackBarContainer extends BasePortalOutlet\n implements OnDestroy, _SnackBarContainer {\n /** The number of milliseconds to wait before announcing the snack bar's content. */\n private readonly _announceDelay: number = 150;\n\n /** The timeout for announcing the snack bar's content. */\n private _announceTimeoutId: any;\n\n /** Whether the component has been destroyed. */\n private _destroyed = false;\n\n /** The portal outlet inside of this container into which the snack bar content will be loaded. */\n @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\n\n /** Subject for notifying that the snack bar has announced to screen readers. */\n readonly _onAnnounce: Subject<void> = new Subject();\n\n /** Subject for notifying that the snack bar has exited from view. */\n readonly _onExit: Subject<void> = new Subject();\n\n /** Subject for notifying that the snack bar has finished entering the view. */\n readonly _onEnter: Subject<void> = new Subject();\n\n /** The state of the snack bar animations. */\n _animationState = 'void';\n\n /** aria-live value for the live region. */\n _live: AriaLivePoliteness;\n\n /**\n * Role of the live region. This is only for Firefox as there is a known issue where Firefox +\n * JAWS does not read out aria-live message.\n */\n _role?: 'status' | 'alert';\n\n constructor(\n private _ngZone: NgZone,\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n private _platform: Platform,\n /** The snack bar configuration. */\n public snackBarConfig: MatSnackBarConfig) {\n\n super();\n\n // Use aria-live rather than a live role like 'alert' or 'status'\n // because NVDA and JAWS have show inconsistent behavior with live roles.\n if (snackBarConfig.politeness === 'assertive' && !snackBarConfig.announcementMessage) {\n this._live = 'assertive';\n } else if (snackBarConfig.politeness === 'off') {\n this._live = 'off';\n } else {\n this._live = 'polite';\n }\n\n // Only set role for Firefox. Set role based on aria-live because setting role=\"alert\" implies\n // aria-live=\"assertive\" which may cause issues if aria-live is set to \"polite\" above.\n if (this._platform.FIREFOX) {\n if (this._live === 'polite') {\n this._role = 'status';\n }\n if (this._live === 'assertive') {\n this._role = 'alert';\n }\n }\n }\n\n /** Attach a component portal as content to this snack bar container. */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n this._assertNotAttached();\n this._applySnackBarClasses();\n return this._portalOutlet.attachComponentPortal(portal);\n }\n\n /** Attach a template portal as content to this snack bar container. */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n this._assertNotAttached();\n this._applySnackBarClasses();\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n\n /**\n * Attaches a DOM portal to the snack bar container.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n override attachDomPortal = (portal: DomPortal) => {\n this._assertNotAttached();\n this._applySnackBarClasses();\n return this._portalOutlet.attachDomPortal(portal);\n }\n\n /** Handle end of animations, updating the state of the snackbar. */\n onAnimationEnd(event: AnimationEvent) {\n const {fromState, toState} = event;\n\n if ((toState === 'void' && fromState !== 'void') || toState === 'hidden') {\n this._completeExit();\n }\n\n if (toState === 'visible') {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onEnter = this._onEnter;\n\n this._ngZone.run(() => {\n onEnter.next();\n onEnter.complete();\n });\n }\n }\n\n /** Begin animation of snack bar entrance into view. */\n enter(): void {\n if (!this._destroyed) {\n this._animationState = 'visible';\n this._changeDetectorRef.detectChanges();\n this._screenReaderAnnounce();\n }\n }\n\n /** Begin animation of the snack bar exiting from view. */\n exit(): Observable<void> {\n // Note: this one transitions to `hidden`, rather than `void`, in order to handle the case\n // where multiple snack bars are opened in quick succession (e.g. two consecutive calls to\n // `MatSnackBar.open`).\n this._animationState = 'hidden';\n\n // Mark this element with an 'exit' attribute to indicate that the snackbar has\n // been dismissed and will soon be removed from the DOM. This is used by the snackbar\n // test harness.\n this._elementRef.nativeElement.setAttribute('mat-exit', '');\n\n // If the snack bar hasn't been announced by the time it exits it wouldn't have been open\n // long enough to visually read it either, so clear the timeout for announcing.\n clearTimeout(this._announceTimeoutId);\n\n return this._onExit;\n }\n\n /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\n ngOnDestroy() {\n this._destroyed = true;\n this._completeExit();\n }\n\n /**\n * Waits for the zone to settle before removing the element. Helps prevent\n * errors where we end up removing an element which is in the middle of an animation.\n */\n private _completeExit() {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n this._onExit.next();\n this._onExit.complete();\n });\n }\n\n /** Applies the various positioning and user-configured CSS classes to the snack bar. */\n private _applySnackBarClasses() {\n const element: HTMLElement = this._elementRef.nativeElement;\n const panelClasses = this.snackBarConfig.panelClass;\n\n if (panelClasses) {\n if (Array.isArray(panelClasses)) {\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n panelClasses.forEach(cssClass => element.classList.add(cssClass));\n } else {\n element.classList.add(panelClasses);\n }\n }\n\n if (this.snackBarConfig.horizontalPosition === 'center') {\n element.classList.add('mat-snack-bar-center');\n }\n\n if (this.snackBarConfig.verticalPosition === 'top') {\n element.classList.add('mat-snack-bar-top');\n }\n }\n\n /** Asserts that no content is already attached to the container. */\n private _assertNotAttached() {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Attempting to attach snack bar content after content is already attached');\n }\n }\n\n /**\n * Starts a timeout to move the snack bar content to the live region so screen readers will\n * announce it.\n */\n private _screenReaderAnnounce() {\n if (!this._announceTimeoutId) {\n this._ngZone.runOutsideAngular(() => {\n this._announceTimeoutId = setTimeout(() => {\n const inertElement = this._elementRef.nativeElement.querySelector('[aria-hidden]');\n const liveElement = this._elementRef.nativeElement.querySelector('[aria-live]');\n\n if (inertElement && liveElement) {\n // If an element in the snack bar content is focused before being moved\n // track it and restore focus after moving to the live region.\n let focusedElement: HTMLElement | null = null;\n if (this._platform.isBrowser &&\n document.activeElement instanceof HTMLElement &&\n inertElement.contains(document.activeElement)) {\n focusedElement = document.activeElement;\n }\n\n inertElement.removeAttribute('aria-hidden');\n liveElement.appendChild(inertElement);\n focusedElement?.focus();\n\n this._onAnnounce.next();\n this._onAnnounce.complete();\n }\n }, this._announceDelay);\n });\n }\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 {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatButtonModule} from '@angular/material/button';\nimport {SimpleSnackBar} from './simple-snack-bar';\nimport {MatSnackBarContainer} from './snack-bar-container';\n\n\n@NgModule({\n imports: [\n OverlayModule,\n PortalModule,\n CommonModule,\n MatButtonModule,\n MatCommonModule,\n ],\n exports: [MatSnackBarContainer, MatCommonModule],\n declarations: [MatSnackBarContainer, SimpleSnackBar],\n entryComponents: [MatSnackBarContainer, SimpleSnackBar],\n})\nexport class MatSnackBarModule {}\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 {LiveAnnouncer} from '@angular/cdk/a11y';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {Overlay, OverlayConfig, OverlayRef} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, TemplatePortal} from '@angular/cdk/portal';\nimport {\n ComponentRef,\n EmbeddedViewRef,\n Inject,\n Injectable,\n InjectionToken,\n Injector,\n Optional,\n SkipSelf,\n TemplateRef,\n OnDestroy, Type,\n} from '@angular/core';\nimport {takeUntil} from 'rxjs/operators';\nimport {TextOnlySnackBar, SimpleSnackBar} from './simple-snack-bar';\nimport {MAT_SNACK_BAR_DATA, MatSnackBarConfig} from './snack-bar-config';\nimport {MatSnackBarContainer, _SnackBarContainer} from './snack-bar-container';\nimport {MatSnackBarModule} from './snack-bar-module';\nimport {MatSnackBarRef} from './snack-bar-ref';\n\n\n/** Injection token that can be used to specify default snack bar. */\nexport const MAT_SNACK_BAR_DEFAULT_OPTIONS =\n new InjectionToken<MatSnackBarConfig>('mat-snack-bar-default-options', {\n providedIn: 'root',\n factory: MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY,\n });\n\n/** @docs-private */\nexport function MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY(): MatSnackBarConfig {\n return new MatSnackBarConfig();\n}\n\n/**\n * Service to dispatch Material Design snack bar messages.\n */\n@Injectable({providedIn: MatSnackBarModule})\nexport class MatSnackBar implements OnDestroy {\n /**\n * Reference to the current snack bar in the view *at this level* (in the Angular injector tree).\n * If there is a parent snack-bar service, all operations should delegate to that parent\n * via `_openedSnackBarRef`.\n */\n private _snackBarRefAtThisLevel: MatSnackBarRef<any> | null = null;\n\n /** The component that should be rendered as the snack bar's simple component. */\n protected simpleSnackBarComponent: Type<TextOnlySnackBar> = SimpleSnackBar;\n\n /** The container component that attaches the provided template or component. */\n protected snackBarContainerComponent: Type<_SnackBarContainer> = MatSnackBarContainer;\n\n /** The CSS class to apply for handset mode. */\n protected handsetCssClass = 'mat-snack-bar-handset';\n\n /** Reference to the currently opened snackbar at *any* level. */\n get _openedSnackBarRef(): MatSnackBarRef<any> | null {\n const parent = this._parentSnackBar;\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n }\n\n set _openedSnackBarRef(value: MatSnackBarRef<any> | null) {\n if (this._parentSnackBar) {\n this._parentSnackBar._openedSnackBarRef = value;\n } else {\n this._snackBarRefAtThisLevel = value;\n }\n }\n\n constructor(\n private _overlay: Overlay,\n private _live: LiveAnnouncer,\n private _injector: Injector,\n private _breakpointObserver: BreakpointObserver,\n @Optional() @SkipSelf() private _parentSnackBar: MatSnackBar,\n @Inject(MAT_SNACK_BAR_DEFAULT_OPTIONS) private _defaultConfig: MatSnackBarConfig) {}\n\n /**\n * Creates and dispatches a snack bar with a custom component for the content, removing any\n * currently opened snack bars.\n *\n * @param component Component to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromComponent<T>(component: ComponentType<T>, config?: MatSnackBarConfig):\n MatSnackBarRef<T> {\n return this._attach(component, config) as MatSnackBarRef<T>;\n }\n\n /**\n * Creates and dispatches a snack bar with a custom template for the content, removing any\n * currently opened snack bars.\n *\n * @param template Template to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromTemplate(template: TemplateRef<any>, config?: MatSnackBarConfig):\n MatSnackBarRef<EmbeddedViewRef<any>> {\n return this._attach(template, config);\n }\n\n /**\n * Opens a snackbar with a message and an optional action.\n * @param message The message to show in the snackbar.\n * @param action The label for the snackbar action.\n * @param config Additional configuration options for the snackbar.\n */\n open(message: string, action: string = '', config?: MatSnackBarConfig):\n MatSnackBarRef<TextOnlySnackBar> {\n const _config = {...this._defaultConfig, ...config};\n\n // Since the user doesn't have access to the component, we can\n // override the data to pass in our own message and action.\n _config.data = {message, action};\n\n // Since the snack bar has `role=\"alert\"`, we don't\n // want to announce the same message twice.\n if (_config.announcementMessage === message) {\n _config.announcementMessage = undefined;\n }\n\n return this.openFromComponent(this.simpleSnackBarComponent, _config);\n }\n\n /**\n * Dismisses the currently-visible snack bar.\n */\n dismiss(): void {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n }\n\n ngOnDestroy() {\n // Only dismiss the snack bar at the current level on destroy.\n if (this._snackBarRefAtThisLevel) {\n this._snackBarRefAtThisLevel.dismiss();\n }\n }\n\n /**\n * Attaches the snack bar container component to the overlay.\n */\n private _attachSnackBarContainer(overlayRef: OverlayRef,\n config: MatSnackBarConfig): _SnackBarContainer {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{provide: MatSnackBarConfig, useValue: config}]\n });\n\n const containerPortal =\n new ComponentPortal(this.snackBarContainerComponent, config.viewContainerRef, injector);\n const containerRef: ComponentRef<_SnackBarContainer> =\n overlayRef.attach(containerPortal);\n containerRef.instance.snackBarConfig = config;\n return containerRef.instance;\n }\n\n /**\n * Places a new component or a template as the content of the snack bar container.\n */\n private _attach<T>(content: ComponentType<T> | TemplateRef<T>, userConfig?: MatSnackBarConfig):\n MatSnackBarRef<T | EmbeddedViewRef<any>> {\n\n const config = {...new MatSnackBarConfig(), ...this._defaultConfig, ...userConfig};\n const overlayRef = this._createOverlay(config);\n const container = this._attachSnackBarContainer(overlayRef, config);\n const snackBarRef = new MatSnackBarRef<T | EmbeddedViewRef<any>>(container, overlayRef);\n\n if (content instanceof TemplateRef) {\n const portal = new TemplatePortal(content, null!, {\n $implicit: config.data,\n snackBarRef\n } as any);\n\n snackBarRef.instance = container.attachTemplatePortal(portal);\n } else {\n const injector = this._createInjector(config, snackBarRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = container.attachComponentPortal<T>(portal);\n\n // We can't pass this via the injector, because the injector is created earlier.\n snackBarRef.instance = contentRef.instance;\n }\n\n // Subscribe to the breakpoint observer and attach the mat-snack-bar-handset class as\n // appropriate. This class is applied to the overlay element because the overlay must expand to\n // fill the width of the screen for full width snackbars.\n this._breakpointObserver.observe(Breakpoints.HandsetPortrait).pipe(\n takeUntil(overlayRef.detachments())\n ).subscribe(state => {\n const classList = overlayRef.overlayElement.classList;\n state.matches ? classList.add(this.handsetCssClass) : classList.remove(this.handsetCssClass);\n });\n\n if (config.announcementMessage) {\n // Wait until the snack bar contents have been announced then deliver this message.\n container._onAnnounce.subscribe(() => {\n this._live.announce(config.announcementMessage!, config.politeness);\n });\n }\n\n this._animateSnackBar(snackBarRef, config);\n this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\n }\n\n /** Animates the old snack bar out and the new one in. */\n private _animateSnackBar(snackBarRef: MatSnackBarRef<any>, config: MatSnackBarConfig) {\n // When the snackbar is dismissed, clear the reference to it.\n snackBarRef.afterDismissed().subscribe(() => {\n // Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.\n if (this._openedSnackBarRef == snackBarRef) {\n this._openedSnackBarRef = null;\n }\n\n if (config.announcementMessage) {\n this._live.clear();\n }\n });\n\n if (this._openedSnackBarRef) {\n // If a snack bar is already in view, dismiss it and enter the\n // new snack bar after exit animation is complete.\n this._openedSnackBarRef.afterDismissed().subscribe(() => {\n snackBarRef.containerInstance.enter();\n });\n this._openedSnackBarRef.dismiss();\n } else {\n // If no snack bar is in view, enter the new snack bar.\n snackBarRef.containerInstance.enter();\n }\n\n // If a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.\n if (config.duration && config.duration > 0) {\n snackBarRef.afterOpened().subscribe(() => snackBarRef._dismissAfter(config.duration!));\n }\n }\n\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified snack bar config.\n */\n private _createOverlay(config: MatSnackBarConfig): OverlayRef {\n const overlayConfig = new OverlayConfig();\n overlayConfig.direction = config.direction;\n\n let positionStrategy = this._overlay.position().global();\n // Set horizontal position.\n const isRtl = config.direction === 'rtl';\n const isLeft = (\n config.horizontalPosition === 'left' ||\n (config.horizontalPosition === 'start' && !isRtl) ||\n (config.horizontalPosition === 'end' && isRtl));\n const isRight = !isLeft && config.horizontalPosition !== 'center';\n if (isLeft) {\n positionStrategy.left('0');\n } else if (isRight) {\n positionStrategy.right('0');\n } else {\n positionStrategy.centerHorizontally();\n }\n // Set horizontal position.\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n } else {\n positionStrategy.bottom('0');\n }\n\n overlayConfig.positionStrategy = positionStrategy;\n return this._overlay.create(overlayConfig);\n }\n\n /**\n * Creates an injector to be used inside of a snack bar component.\n * @param config Config that was used to create the snack bar.\n * @param snackBarRef Reference to the snack bar.\n */\n private _createInjector<T>(config: MatSnackBarConfig, snackBarRef: MatSnackBarRef<T>): Injector {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n return Injector.create({\n parent: userInjector || this._injector,\n providers: [\n {provide: MatSnackBarRef, useValue: snackBarRef},\n {provide: MAT_SNACK_BAR_DATA, useValue: config.data}\n ]\n });\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\nexport * from './snack-bar-module';\nexport * from './snack-bar';\nexport * from './snack-bar-container';\nexport * from './snack-bar-config';\nexport * from './snack-bar-ref';\nexport * from './simple-snack-bar';\nexport * from './snack-bar-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -44,6 +44,10 @@ class MatStepperIntl {
44
44
  this.changes = new Subject();
45
45
  /** Label that is rendered below optional steps. */
46
46
  this.optionalLabel = 'Optional';
47
+ /** Label that is used to indicate step as completed to screen readers. */
48
+ this.completedLabel = 'Completed';
49
+ /** Label that is used to indicate step as editable to screen readers. */
50
+ this.editableLabel = 'Editable';
47
51
  }
48
52
  }
49
53
  MatStepperIntl.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatStepperIntl_Factory() { return new MatStepperIntl(); }, token: MatStepperIntl, providedIn: "root" });
@@ -134,7 +138,7 @@ class MatStepHeader extends _MatStepHeaderBase {
134
138
  MatStepHeader.decorators = [
135
139
  { type: Component, args: [{
136
140
  selector: 'mat-step-header',
137
- template: "<div class=\"mat-step-header-ripple mat-focus-indicator\" matRipple\n [matRippleTrigger]=\"_getHostElement()\"\n [matRippleDisabled]=\"disableRipple\"></div>\n\n<div class=\"mat-step-icon-state-{{state}} mat-step-icon\" [class.mat-step-icon-selected]=\"selected\">\n <div class=\"mat-step-icon-content\" [ngSwitch]=\"!!(iconOverrides && iconOverrides[state])\">\n <ng-container\n *ngSwitchCase=\"true\"\n [ngTemplateOutlet]=\"iconOverrides[state]\"\n [ngTemplateOutletContext]=\"_getIconContext()\"></ng-container>\n <ng-container *ngSwitchDefault [ngSwitch]=\"state\">\n <span *ngSwitchCase=\"'number'\">{{_getDefaultTextForState(state)}}</span>\n <mat-icon *ngSwitchDefault>{{_getDefaultTextForState(state)}}</mat-icon>\n </ng-container>\n </div>\n</div>\n<div class=\"mat-step-label\"\n [class.mat-step-label-active]=\"active\"\n [class.mat-step-label-selected]=\"selected\"\n [class.mat-step-label-error]=\"state == 'error'\">\n <!-- If there is a label template, use it. -->\n <div class=\"mat-step-text-label\" *ngIf=\"_templateLabel()\">\n <ng-container [ngTemplateOutlet]=\"_templateLabel()!.template\"></ng-container>\n </div>\n <!-- If there is no label template, fall back to the text label. -->\n <div class=\"mat-step-text-label\" *ngIf=\"_stringLabel()\">{{label}}</div>\n\n <div class=\"mat-step-optional\" *ngIf=\"optional && state != 'error'\">{{_intl.optionalLabel}}</div>\n <div class=\"mat-step-sub-label-error\" *ngIf=\"state == 'error'\">{{errorMessage}}</div>\n</div>\n\n",
141
+ template: "<div class=\"mat-step-header-ripple mat-focus-indicator\" matRipple\n [matRippleTrigger]=\"_getHostElement()\"\n [matRippleDisabled]=\"disableRipple\"></div>\n\n<div class=\"mat-step-icon-state-{{state}} mat-step-icon\" [class.mat-step-icon-selected]=\"selected\">\n <div class=\"mat-step-icon-content\" [ngSwitch]=\"!!(iconOverrides && iconOverrides[state])\">\n <ng-container\n *ngSwitchCase=\"true\"\n [ngTemplateOutlet]=\"iconOverrides[state]\"\n [ngTemplateOutletContext]=\"_getIconContext()\"></ng-container>\n <ng-container *ngSwitchDefault [ngSwitch]=\"state\">\n <span *ngSwitchCase=\"'number'\">{{_getDefaultTextForState(state)}}</span>\n <span class=\"cdk-visually-hidden\" *ngIf=\"state === 'done'\">{{_intl.completedLabel}}</span>\n <span class=\"cdk-visually-hidden\" *ngIf=\"state === 'edit'\">{{_intl.editableLabel}}</span>\n <mat-icon *ngSwitchDefault>{{_getDefaultTextForState(state)}}</mat-icon>\n </ng-container>\n </div>\n</div>\n<div class=\"mat-step-label\"\n [class.mat-step-label-active]=\"active\"\n [class.mat-step-label-selected]=\"selected\"\n [class.mat-step-label-error]=\"state == 'error'\">\n <!-- If there is a label template, use it. -->\n <div class=\"mat-step-text-label\" *ngIf=\"_templateLabel()\">\n <ng-container [ngTemplateOutlet]=\"_templateLabel()!.template\"></ng-container>\n </div>\n <!-- If there is no label template, fall back to the text label. -->\n <div class=\"mat-step-text-label\" *ngIf=\"_stringLabel()\">{{label}}</div>\n\n <div class=\"mat-step-optional\" *ngIf=\"optional && state != 'error'\">{{_intl.optionalLabel}}</div>\n <div class=\"mat-step-sub-label-error\" *ngIf=\"state == 'error'\">{{errorMessage}}</div>\n</div>\n\n",
138
142
  inputs: ['color'],
139
143
  host: {
140
144
  'class': 'mat-step-header',
@@ -142,7 +146,7 @@ MatStepHeader.decorators = [
142
146
  },
143
147
  encapsulation: ViewEncapsulation.None,
144
148
  changeDetection: ChangeDetectionStrategy.OnPush,
145
- styles: [".mat-step-header{overflow:hidden;outline:none;cursor:pointer;position:relative;box-sizing:content-box;-webkit-tap-highlight-color:transparent}.mat-step-optional,.mat-step-sub-label-error{font-size:12px}.mat-step-icon{border-radius:50%;height:24px;width:24px;flex-shrink:0;position:relative}.mat-step-icon-content,.mat-step-icon .mat-icon{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.mat-step-icon .mat-icon{font-size:16px;height:16px;width:16px}.mat-step-icon-state-error .mat-icon{font-size:24px;height:24px;width:24px}.mat-step-label{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:50px;vertical-align:middle}.mat-step-text-label{text-overflow:ellipsis;overflow:hidden}.mat-step-header .mat-step-header-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n"]
149
+ styles: [".mat-step-header{overflow:hidden;outline:none;cursor:pointer;position:relative;box-sizing:content-box;-webkit-tap-highlight-color:transparent}.cdk-high-contrast-active .mat-step-header{outline:solid 1px}.cdk-high-contrast-active .mat-step-header.cdk-keyboard-focused,.cdk-high-contrast-active .mat-step-header.cdk-program-focused{outline:solid 3px}.cdk-high-contrast-active .mat-step-header[aria-selected=true] .mat-step-label{text-decoration:underline}.mat-step-optional,.mat-step-sub-label-error{font-size:12px}.mat-step-icon{border-radius:50%;height:24px;width:24px;flex-shrink:0;position:relative}.mat-step-icon-content,.mat-step-icon .mat-icon{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.mat-step-icon .mat-icon{font-size:16px;height:16px;width:16px}.mat-step-icon-state-error .mat-icon{font-size:24px;height:24px;width:24px}.mat-step-label{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:50px;vertical-align:middle}.mat-step-text-label{text-overflow:ellipsis;overflow:hidden}.mat-step-header .mat-step-header-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n"]
146
150
  },] }
147
151
  ];
148
152
  MatStepHeader.ctorParameters = () => [
@@ -403,7 +407,7 @@ MatStepper.decorators = [
403
407
  ],
404
408
  encapsulation: ViewEncapsulation.None,
405
409
  changeDetection: ChangeDetectionStrategy.OnPush,
406
- styles: [".mat-stepper-vertical,.mat-stepper-horizontal{display:block}.mat-horizontal-stepper-header-container{white-space:nowrap;display:flex;align-items:center}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header-container{align-items:flex-start}.mat-stepper-horizontal-line{border-top-width:1px;border-top-style:solid;flex:auto;height:0;margin:0 -16px;min-width:32px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{margin:0;min-width:0;position:relative}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::before,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::after,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px)}.mat-horizontal-stepper-header{display:flex;height:72px;overflow:hidden;align-items:center;padding:0 24px}.mat-horizontal-stepper-header .mat-step-icon{margin-right:8px;flex:none}[dir=rtl] .mat-horizontal-stepper-header .mat-step-icon{margin-right:0;margin-left:8px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header{box-sizing:border-box;flex-direction:column;height:auto}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::after,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::after{right:0}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::before{left:0}[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:last-child::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:first-child::after{display:none}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header .mat-step-icon{margin-right:0;margin-left:0}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header .mat-step-label{padding:16px 0 0 0;text-align:center;width:100%}.mat-vertical-stepper-header{display:flex;align-items:center;height:24px}.mat-vertical-stepper-header .mat-step-icon{margin-right:12px}[dir=rtl] .mat-vertical-stepper-header .mat-step-icon{margin-right:0;margin-left:12px}.mat-horizontal-stepper-content{outline:0}.mat-horizontal-stepper-content[aria-expanded=false]{height:0;overflow:hidden}.mat-horizontal-content-container{overflow:hidden;padding:0 24px 24px 24px}.mat-vertical-content-container{margin-left:36px;border:0;position:relative}[dir=rtl] .mat-vertical-content-container{margin-left:0;margin-right:36px}.mat-stepper-vertical-line::before{content:\"\";position:absolute;left:0;border-left-width:1px;border-left-style:solid}[dir=rtl] .mat-stepper-vertical-line::before{left:auto;right:0}.mat-vertical-stepper-content{overflow:hidden;outline:0}.mat-vertical-content{padding:0 24px 24px 24px}.mat-step:last-child .mat-vertical-content-container{border:none}\n"]
410
+ styles: [".mat-stepper-vertical,.mat-stepper-horizontal{display:block}.mat-horizontal-stepper-header-container{white-space:nowrap;display:flex;align-items:center}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header-container{align-items:flex-start}.mat-stepper-horizontal-line{border-top-width:1px;border-top-style:solid;flex:auto;height:0;margin:0 -16px;min-width:32px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{margin:0;min-width:0;position:relative}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::before,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::after,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px)}.mat-horizontal-stepper-header{display:flex;height:72px;overflow:hidden;align-items:center;padding:0 24px}.mat-horizontal-stepper-header .mat-step-icon{margin-right:8px;flex:none}[dir=rtl] .mat-horizontal-stepper-header .mat-step-icon{margin-right:0;margin-left:8px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header{box-sizing:border-box;flex-direction:column;height:auto}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::after,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::after{right:0}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::before{left:0}[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:last-child::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:first-child::after{display:none}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header .mat-step-icon{margin-right:0;margin-left:0}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header .mat-step-label{padding:16px 0 0 0;text-align:center;width:100%}.mat-vertical-stepper-header{display:flex;align-items:center;height:24px}.mat-vertical-stepper-header .mat-step-icon{margin-right:12px}[dir=rtl] .mat-vertical-stepper-header .mat-step-icon{margin-right:0;margin-left:12px}.mat-horizontal-stepper-content{outline:0}.mat-horizontal-stepper-content[aria-expanded=false]{height:0;overflow:hidden}.mat-horizontal-content-container{overflow:hidden;padding:0 24px 24px 24px}.cdk-high-contrast-active .mat-horizontal-content-container{outline:solid 1px}.mat-vertical-content-container{margin-left:36px;border:0;position:relative}.cdk-high-contrast-active .mat-vertical-content-container{outline:solid 1px}[dir=rtl] .mat-vertical-content-container{margin-left:0;margin-right:36px}.mat-stepper-vertical-line::before{content:\"\";position:absolute;left:0;border-left-width:1px;border-left-style:solid}[dir=rtl] .mat-stepper-vertical-line::before{left:auto;right:0}.mat-vertical-stepper-content{overflow:hidden;outline:0}.mat-vertical-content{padding:0 24px 24px 24px}.mat-step:last-child .mat-vertical-content-container{border:none}\n"]
407
411
  },] }
408
412
  ];
409
413
  MatStepper.ctorParameters = () => [
@@ -1 +1 @@
1
- {"version":3,"file":"stepper.js","sources":["../../../../../../src/material/stepper/step-label.ts","../../../../../../src/material/stepper/stepper-intl.ts","../../../../../../src/material/stepper/step-header.ts","../../../../../../src/material/stepper/stepper-animations.ts","../../../../../../src/material/stepper/stepper-icon.ts","../../../../../../src/material/stepper/step-content.ts","../../../../../../src/material/stepper/stepper.ts","../../../../../../src/material/stepper/stepper-button.ts","../../../../../../src/material/stepper/stepper-module.ts","../../../../../../src/material/stepper/public-api.ts","../../../../../../src/material/stepper/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 {Directive} from '@angular/core';\nimport {CdkStepLabel} from '@angular/cdk/stepper';\n\n@Directive({\n selector: '[matStepLabel]',\n})\nexport class MatStepLabel extends CdkStepLabel {}\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 {Injectable, Optional, SkipSelf} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n\n/** Stepper data that is required for internationalization. */\n@Injectable({providedIn: 'root'})\nexport class MatStepperIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** Label that is rendered below optional steps. */\n optionalLabel: string = 'Optional';\n}\n\n\n/** @docs-private */\nexport function MAT_STEPPER_INTL_PROVIDER_FACTORY(parentIntl: MatStepperIntl) {\n return parentIntl || new MatStepperIntl();\n}\n\n/** @docs-private */\nexport const MAT_STEPPER_INTL_PROVIDER = {\n provide: MatStepperIntl,\n deps: [[new Optional(), new SkipSelf(), MatStepperIntl]],\n useFactory: MAT_STEPPER_INTL_PROVIDER_FACTORY\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 {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n ViewEncapsulation,\n TemplateRef,\n AfterViewInit,\n} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {MatStepLabel} from './step-label';\nimport {MatStepperIntl} from './stepper-intl';\nimport {MatStepperIconContext} from './stepper-icon';\nimport {CdkStepHeader, StepState} from '@angular/cdk/stepper';\nimport {mixinColor, CanColor} from '@angular/material/core';\n\n\n// Boilerplate for applying mixins to MatStepHeader.\n/** @docs-private */\nconst _MatStepHeaderBase = mixinColor(class MatStepHeaderBase extends CdkStepHeader {\n constructor(elementRef: ElementRef) {\n super(elementRef);\n }\n}, 'primary');\n\n@Component({\n selector: 'mat-step-header',\n templateUrl: 'step-header.html',\n styleUrls: ['step-header.css'],\n inputs: ['color'],\n host: {\n 'class': 'mat-step-header',\n 'role': 'tab',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatStepHeader extends _MatStepHeaderBase implements AfterViewInit, OnDestroy,\n CanColor {\n private _intlSubscription: Subscription;\n\n /** State of the given step. */\n @Input() state: StepState;\n\n /** Label of the given step. */\n @Input() label: MatStepLabel | string;\n\n /** Error message to display when there's an error. */\n @Input() errorMessage: string;\n\n /** Overrides for the header icons, passed in via the stepper. */\n @Input() iconOverrides: {[key: string]: TemplateRef<MatStepperIconContext>};\n\n /** Index of the given step. */\n @Input() index: number;\n\n /** Whether the given step is selected. */\n @Input() selected: boolean;\n\n /** Whether the given step label is active. */\n @Input() active: boolean;\n\n /** Whether the given step is optional. */\n @Input() optional: boolean;\n\n /** Whether the ripple should be disabled. */\n @Input() disableRipple: boolean;\n\n constructor(\n public _intl: MatStepperIntl,\n private _focusMonitor: FocusMonitor,\n _elementRef: ElementRef<HTMLElement>,\n changeDetectorRef: ChangeDetectorRef) {\n super(_elementRef);\n this._intlSubscription = _intl.changes.subscribe(() => changeDetectorRef.markForCheck());\n }\n\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true);\n }\n\n ngOnDestroy() {\n this._intlSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Focuses the step header. */\n override focus(origin?: FocusOrigin, options?: FocusOptions) {\n if (origin) {\n this._focusMonitor.focusVia(this._elementRef, origin, options);\n } else {\n this._elementRef.nativeElement.focus(options);\n }\n }\n\n /** Returns string label of given step if it is a text label. */\n _stringLabel(): string | null {\n return this.label instanceof MatStepLabel ? null : this.label;\n }\n\n /** Returns MatStepLabel if the label of given step is a template label. */\n _templateLabel(): MatStepLabel | null {\n return this.label instanceof MatStepLabel ? this.label : null;\n }\n\n /** Returns the host HTML element. */\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n\n /** Template context variables that are exposed to the `matStepperIcon` instances. */\n _getIconContext(): MatStepperIconContext {\n return {\n index: this.index,\n active: this.active,\n optional: this.optional\n };\n }\n\n _getDefaultTextForState(state: StepState): string {\n if (state == 'number') {\n return `${this.index + 1}`;\n }\n if (state == 'edit') {\n return 'create';\n }\n if (state == 'error') {\n return 'warning';\n }\n return state;\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 */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material steppers.\n * @docs-private\n */\nexport const matStepperAnimations: {\n readonly horizontalStepTransition: AnimationTriggerMetadata;\n readonly verticalStepTransition: AnimationTriggerMetadata;\n} = {\n /** Animation that transitions the step along the X axis in a horizontal stepper. */\n horizontalStepTransition: trigger('horizontalStepTransition', [\n state('previous', style({transform: 'translate3d(-100%, 0, 0)', visibility: 'hidden'})),\n // Transition to `inherit`, rather than `visible`,\n // because visibility on a child element the one from the parent,\n // making this element focusable inside of a `hidden` element.\n state('current', style({transform: 'none', visibility: 'inherit'})),\n state('next', style({transform: 'translate3d(100%, 0, 0)', visibility: 'hidden'})),\n transition('* => *', animate('500ms cubic-bezier(0.35, 0, 0.25, 1)'))\n ]),\n\n /** Animation that transitions the step along the Y axis in a vertical stepper. */\n verticalStepTransition: trigger('verticalStepTransition', [\n state('previous', style({height: '0px', visibility: 'hidden'})),\n state('next', style({height: '0px', visibility: 'hidden'})),\n // Transition to `inherit`, rather than `visible`,\n // because visibility on a child element the one from the parent,\n // making this element focusable inside of a `hidden` element.\n state('current', style({height: '*', visibility: 'inherit'})),\n transition('* <=> current', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)'))\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 {Directive, Input, TemplateRef} from '@angular/core';\nimport {StepState} from '@angular/cdk/stepper';\n\n/** Template context available to an attached `matStepperIcon`. */\nexport interface MatStepperIconContext {\n /** Index of the step. */\n index: number;\n /** Whether the step is currently active. */\n active: boolean;\n /** Whether the step is optional. */\n optional: boolean;\n}\n\n/**\n * Template to be used to override the icons inside the step header.\n */\n@Directive({\n selector: 'ng-template[matStepperIcon]',\n})\nexport class MatStepperIcon {\n /** Name of the icon to be overridden. */\n @Input('matStepperIcon') name: StepState;\n\n constructor(public templateRef: TemplateRef<MatStepperIconContext>) {}\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 {Directive, TemplateRef} from '@angular/core';\n\n/**\n * Content for a `mat-step` that will be rendered lazily.\n */\n@Directive({\n selector: 'ng-template[matStepContent]'\n})\nexport class MatStepContent {\n constructor(public _template: TemplateRef<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 {Directionality} from '@angular/cdk/bidi';\nimport {\n CdkStep,\n CdkStepper,\n StepContentPositionState,\n STEPPER_GLOBAL_OPTIONS,\n StepperOptions,\n} from '@angular/cdk/stepper';\nimport {AnimationEvent} from '@angular/animations';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n SkipSelf,\n TemplateRef,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormControl, FormGroupDirective, NgForm} from '@angular/forms';\nimport {DOCUMENT} from '@angular/common';\nimport {ErrorStateMatcher, ThemePalette} from '@angular/material/core';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {Subject, Subscription} from 'rxjs';\nimport {takeUntil, distinctUntilChanged, map, startWith, switchMap} from 'rxjs/operators';\n\nimport {MatStepHeader} from './step-header';\nimport {MatStepLabel} from './step-label';\nimport {matStepperAnimations} from './stepper-animations';\nimport {MatStepperIcon, MatStepperIconContext} from './stepper-icon';\nimport {MatStepContent} from './step-content';\n\n@Component({\n selector: 'mat-step',\n templateUrl: 'step.html',\n providers: [\n {provide: ErrorStateMatcher, useExisting: MatStep},\n {provide: CdkStep, useExisting: MatStep},\n ],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matStep',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatStep extends CdkStep implements ErrorStateMatcher, AfterContentInit, OnDestroy {\n private _isSelected = Subscription.EMPTY;\n\n /** Content for step label given by `<ng-template matStepLabel>`. */\n @ContentChild(MatStepLabel) override stepLabel: MatStepLabel;\n\n /** Theme color for the particular step. */\n @Input() color: ThemePalette;\n\n /** Content that will be rendered lazily. */\n @ContentChild(MatStepContent, {static: false}) _lazyContent: MatStepContent;\n\n /** Currently-attached portal containing the lazy content. */\n _portal: TemplatePortal;\n\n constructor(@Inject(forwardRef(() => MatStepper)) stepper: MatStepper,\n @SkipSelf() private _errorStateMatcher: ErrorStateMatcher,\n private _viewContainerRef: ViewContainerRef,\n @Optional() @Inject(STEPPER_GLOBAL_OPTIONS) stepperOptions?: StepperOptions) {\n super(stepper, stepperOptions);\n }\n\n ngAfterContentInit() {\n this._isSelected = this._stepper.steps.changes.pipe(switchMap(() => {\n return this._stepper.selectionChange.pipe(\n map(event => event.selectedStep === this),\n startWith(this._stepper.selected === this)\n );\n })).subscribe(isSelected => {\n if (isSelected && this._lazyContent && !this._portal) {\n this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef!);\n }\n });\n }\n\n ngOnDestroy() {\n this._isSelected.unsubscribe();\n }\n\n /** Custom error state matcher that additionally checks for validity of interacted form. */\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n const originalErrorState = this._errorStateMatcher.isErrorState(control, form);\n\n // Custom error state checks for the validity of form that is not submitted or touched\n // since user can trigger a form change by calling for another step without directly\n // interacting with the current form.\n const customErrorState = !!(control && control.invalid && this.interacted);\n\n return originalErrorState || customErrorState;\n }\n}\n\n/**\n * Proxies the public APIs from `MatStepper` to the deprecated `MatHorizontalStepper` and\n * `MatVerticalStepper`.\n * @deprecated Use `MatStepper` instead.\n * @breaking-change 13.0.0\n * @docs-private\n */\n@Directive()\nabstract class _MatProxyStepperBase extends CdkStepper {\n override readonly steps: QueryList<MatStep>;\n readonly animationDone: EventEmitter<void>;\n disableRipple: boolean;\n color: ThemePalette;\n labelPosition: 'bottom' | 'end';\n}\n\n/**\n * @deprecated Use `MatStepper` instead.\n * @breaking-change 13.0.0\n */\n@Directive({selector: 'mat-horizontal-stepper'})\nexport class MatHorizontalStepper extends _MatProxyStepperBase {}\n\n/**\n * @deprecated Use `MatStepper` instead.\n * @breaking-change 13.0.0\n */\n@Directive({selector: 'mat-vertical-stepper'})\nexport class MatVerticalStepper extends _MatProxyStepperBase {}\n\n\n@Component({\n selector: 'mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]',\n exportAs: 'matStepper, matVerticalStepper, matHorizontalStepper',\n templateUrl: 'stepper.html',\n styleUrls: ['stepper.css'],\n inputs: ['selectedIndex'],\n host: {\n '[class.mat-stepper-horizontal]': 'orientation === \"horizontal\"',\n '[class.mat-stepper-vertical]': 'orientation === \"vertical\"',\n '[class.mat-stepper-label-position-end]':\n 'orientation === \"horizontal\" && labelPosition == \"end\"',\n '[class.mat-stepper-label-position-bottom]':\n 'orientation === \"horizontal\" && labelPosition == \"bottom\"',\n '[attr.aria-orientation]': 'orientation',\n 'role': 'tablist',\n },\n animations: [\n matStepperAnimations.horizontalStepTransition,\n matStepperAnimations.verticalStepTransition,\n ],\n providers: [\n {provide: CdkStepper, useExisting: MatStepper},\n {provide: MatHorizontalStepper, useExisting: MatStepper},\n {provide: MatVerticalStepper, useExisting: MatStepper},\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatStepper extends CdkStepper implements AfterContentInit {\n /** The list of step headers of the steps in the stepper. */\n @ViewChildren(MatStepHeader) override _stepHeader: QueryList<MatStepHeader>;\n\n /** Full list of steps inside the stepper, including inside nested steppers. */\n @ContentChildren(MatStep, {descendants: true}) override _steps: QueryList<MatStep>;\n\n /** Steps that belong to the current stepper, excluding ones from nested steppers. */\n override readonly steps: QueryList<MatStep> = new QueryList<MatStep>();\n\n /** Custom icon overrides passed in by the consumer. */\n @ContentChildren(MatStepperIcon, {descendants: true}) _icons: QueryList<MatStepperIcon>;\n\n /** Event emitted when the current step is done transitioning in. */\n @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\n\n /** Whether ripples should be disabled for the step headers. */\n @Input() disableRipple: boolean;\n\n /** Theme color for all of the steps in stepper. */\n @Input() color: ThemePalette;\n\n /**\n * Whether the label should display in bottom or end position.\n * Only applies in the `horizontal` orientation.\n */\n @Input()\n labelPosition: 'bottom' | 'end' = 'end';\n\n /** Consumer-specified template-refs to be used to override the header icons. */\n _iconOverrides: Record<string, TemplateRef<MatStepperIconContext>> = {};\n\n /** Stream of animation `done` events when the body expands/collapses. */\n readonly _animationDone = new Subject<AnimationEvent>();\n\n constructor(\n @Optional() dir: Directionality,\n changeDetectorRef: ChangeDetectorRef,\n elementRef: ElementRef<HTMLElement>,\n @Inject(DOCUMENT) _document: any) {\n super(dir, changeDetectorRef, elementRef, _document);\n const nodeName = elementRef.nativeElement.nodeName.toLowerCase();\n this.orientation = nodeName === 'mat-vertical-stepper' ? 'vertical' : 'horizontal';\n }\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n this._icons.forEach(({name, templateRef}) => this._iconOverrides[name] = templateRef);\n\n // Mark the component for change detection whenever the content children query changes\n this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._stateChanged();\n });\n\n this._animationDone.pipe(\n // This needs a `distinctUntilChanged` in order to avoid emitting the same event twice due\n // to a bug in animations where the `.done` callback gets invoked twice on some browsers.\n // See https://github.com/angular/angular/issues/24084\n distinctUntilChanged((x, y) => x.fromState === y.fromState && x.toState === y.toState),\n takeUntil(this._destroyed)\n ).subscribe(event => {\n if ((event.toState as StepContentPositionState) === 'current') {\n this.animationDone.emit();\n }\n });\n }\n\n _stepIsNavigable(index: number, step: MatStep): boolean {\n return step.completed || this.selectedIndex === index || !this.linear;\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 {CdkStepperNext, CdkStepperPrevious} from '@angular/cdk/stepper';\nimport {Directive} from '@angular/core';\n\n/** Button that moves to the next step in a stepper workflow. */\n@Directive({\n selector: 'button[matStepperNext]',\n host: {\n 'class': 'mat-stepper-next',\n '[type]': 'type',\n },\n inputs: ['type']\n})\nexport class MatStepperNext extends CdkStepperNext {\n}\n\n/** Button that moves to the previous step in a stepper workflow. */\n@Directive({\n selector: 'button[matStepperPrevious]',\n host: {\n 'class': 'mat-stepper-previous',\n '[type]': 'type',\n },\n inputs: ['type']\n})\nexport class MatStepperPrevious extends CdkStepperPrevious {\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 {PortalModule} from '@angular/cdk/portal';\nimport {CdkStepperModule} from '@angular/cdk/stepper';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatButtonModule} from '@angular/material/button';\nimport {ErrorStateMatcher, MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatStepHeader} from './step-header';\nimport {MatStepLabel} from './step-label';\nimport {MatHorizontalStepper, MatStep, MatStepper, MatVerticalStepper} from './stepper';\nimport {MatStepperNext, MatStepperPrevious} from './stepper-button';\nimport {MatStepperIcon} from './stepper-icon';\nimport {MAT_STEPPER_INTL_PROVIDER} from './stepper-intl';\nimport {MatStepContent} from './step-content';\n\n\n@NgModule({\n imports: [\n MatCommonModule,\n CommonModule,\n PortalModule,\n MatButtonModule,\n CdkStepperModule,\n MatIconModule,\n MatRippleModule,\n ],\n exports: [\n MatCommonModule,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n MatStepContent,\n ],\n declarations: [\n MatHorizontalStepper,\n MatVerticalStepper,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n MatStepContent,\n ],\n providers: [MAT_STEPPER_INTL_PROVIDER, ErrorStateMatcher],\n})\nexport class MatStepperModule {}\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 {StepperOrientation, StepState} from '@angular/cdk/stepper';\nexport * from './stepper-module';\nexport * from './step-label';\nexport * from './stepper';\nexport * from './stepper-button';\nexport * from './step-header';\nexport * from './stepper-intl';\nexport * from './stepper-animations';\nexport * from './stepper-icon';\nexport * from './step-content';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA;;;;;;;MAca,YAAa,SAAQ,YAAY;;;YAH7C,SAAS,SAAC;gBACT,QAAQ,EAAE,gBAAgB;aAC3B;;;ACbD;;;;;;;AAYA;MAEa,cAAc;IAD3B;;;;;QAMW,YAAO,GAAkB,IAAI,OAAO,EAAQ,CAAC;;QAGtD,kBAAa,GAAW,UAAU,CAAC;KACpC;;;;YAVA,UAAU,SAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;AAahC;SACgB,iCAAiC,CAAC,UAA0B;IAC1E,OAAO,UAAU,IAAI,IAAI,cAAc,EAAE,CAAC;AAC5C,CAAC;AAED;MACa,yBAAyB,GAAG;IACvC,OAAO,EAAE,cAAc;IACvB,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,cAAc,CAAC,CAAC;IACxD,UAAU,EAAE,iCAAiC;;;ACnC/C;;;;;;;AA4BA;AACA;AACA,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,iBAAkB,SAAQ,aAAa;IACjF,YAAY,UAAsB;QAChC,KAAK,CAAC,UAAU,CAAC,CAAC;KACnB;CACF,EAAE,SAAS,CAAC,CAAC;MAcD,aAAc,SAAQ,kBAAkB;IA+BnD,YACS,KAAqB,EACpB,aAA2B,EACnC,WAAoC,EACpC,iBAAoC;QACpC,KAAK,CAAC,WAAW,CAAC,CAAC;QAJZ,UAAK,GAAL,KAAK,CAAgB;QACpB,kBAAa,GAAb,aAAa,CAAc;QAInC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC;KAC1F;IAED,eAAe;QACb,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;KACpD;IAED,WAAW;QACT,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACrD;;IAGQ,KAAK,CAAC,MAAoB,EAAE,OAAsB;QACzD,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;SAChE;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC/C;KACF;;IAGD,YAAY;QACV,OAAO,IAAI,CAAC,KAAK,YAAY,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;KAC/D;;IAGD,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,YAAY,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KAC/D;;IAGD,eAAe;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;KACvC;;IAGD,eAAe;QACb,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;KACH;IAED,uBAAuB,CAAC,KAAgB;QACtC,IAAI,KAAK,IAAI,QAAQ,EAAE;YACrB,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;SAC5B;QACD,IAAI,KAAK,IAAI,MAAM,EAAE;YACnB,OAAO,QAAQ,CAAC;SACjB;QACD,IAAI,KAAK,IAAI,OAAO,EAAE;YACpB,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,KAAK,CAAC;KACd;;;YAzGF,SAAS,SAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,oiDAA+B;gBAE/B,MAAM,EAAE,CAAC,OAAO,CAAC;gBACjB,IAAI,EAAE;oBACJ,OAAO,EAAE,iBAAiB;oBAC1B,MAAM,EAAE,KAAK;iBACd;gBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;gBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;;aAChD;;;YAzBO,cAAc;YAdd,YAAY;YAKlB,UAAU;YAFV,iBAAiB;;;oBA0ChB,KAAK;oBAGL,KAAK;2BAGL,KAAK;4BAGL,KAAK;oBAGL,KAAK;uBAGL,KAAK;qBAGL,KAAK;uBAGL,KAAK;4BAGL,KAAK;;;AC7ER;;;;;;;AAgBA;;;;MAIa,oBAAoB,GAG7B;;IAEF,wBAAwB,EAAE,OAAO,CAAC,0BAA0B,EAAE;QAC5D,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,0BAA0B,EAAE,UAAU,EAAE,QAAQ,EAAC,CAAC,CAAC;;;;QAIvF,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAC,CAAC,CAAC;QACnE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,yBAAyB,EAAE,UAAU,EAAE,QAAQ,EAAC,CAAC,CAAC;QAClF,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;KACtE,CAAC;;IAGF,sBAAsB,EAAE,OAAO,CAAC,wBAAwB,EAAE;QACxD,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAC,CAAC,CAAC;QAC/D,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAC,CAAC,CAAC;;;;QAI3D,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAC,CAAC,CAAC;QAC7D,UAAU,CAAC,eAAe,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;KAC7E,CAAC;;;AC5CJ;;;;;;;AAqBA;;;MAMa,cAAc;IAIzB,YAAmB,WAA+C;QAA/C,gBAAW,GAAX,WAAW,CAAoC;KAAI;;;YAPvE,SAAS,SAAC;gBACT,QAAQ,EAAE,6BAA6B;aACxC;;;YAlByB,WAAW;;;mBAqBlC,KAAK,SAAC,gBAAgB;;;AC7BzB;;;;;;;AAUA;;;MAMa,cAAc;IACzB,YAAmB,SAA2B;QAA3B,cAAS,GAAT,SAAS,CAAkB;KAAI;;;YAJnD,SAAS,SAAC;gBACT,QAAQ,EAAE,6BAA6B;aACxC;;;YAPkB,WAAW;;;ACR9B;;;;;;;MAgEa,OAAQ,SAAQ,OAAO;IAelC,YAAkD,OAAmB,EACrC,kBAAqC,EACjD,iBAAmC,EACC,cAA+B;QACrF,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAHD,uBAAkB,GAAlB,kBAAkB,CAAmB;QACjD,sBAAiB,GAAjB,iBAAiB,CAAkB;QAhB/C,gBAAW,GAAG,YAAY,CAAC,KAAK,CAAC;KAmBxC;IAED,kBAAkB;QAChB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAC5D,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CACvC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,EACzC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC,CAC3C,CAAC;SACH,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU;YACtB,IAAI,UAAU,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACpD,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAkB,CAAC,CAAC;aACzF;SACF,CAAC,CAAC;KACJ;IAED,WAAW;QACT,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;KAChC;;IAGD,YAAY,CAAC,OAA2B,EAAE,IAAwC;QAChF,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;;;;QAK/E,MAAM,gBAAgB,GAAG,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3E,OAAO,kBAAkB,IAAI,gBAAgB,CAAC;KAC/C;;;YA5DF,SAAS,SAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,qIAAwB;gBACxB,SAAS,EAAE;oBACT,EAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAC;oBAClD,EAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAC;iBACzC;gBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;gBACrC,QAAQ,EAAE,SAAS;gBACnB,eAAe,EAAE,uBAAuB,CAAC,MAAM;aAChD;;;YAgB4D,UAAU,uBAAxD,MAAM,SAAC,UAAU,CAAC,MAAM,UAAU,CAAC;YArC1C,iBAAiB,uBAsCV,QAAQ;YA3CrB,gBAAgB;4CA6CH,QAAQ,YAAI,MAAM,SAAC,sBAAsB;;;wBAdrD,YAAY,SAAC,YAAY;oBAGzB,KAAK;2BAGL,YAAY,SAAC,cAAc,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC;;AA0C/C;;;;;;;AAOA,MACe,oBAAqB,SAAQ,UAAU;;;YADrD,SAAS;;AASV;;;;MAKa,oBAAqB,SAAQ,oBAAoB;;;YAD7D,SAAS,SAAC,EAAC,QAAQ,EAAE,wBAAwB,EAAC;;AAG/C;;;;MAKa,kBAAmB,SAAQ,oBAAoB;;;YAD3D,SAAS,SAAC,EAAC,QAAQ,EAAE,sBAAsB,EAAC;;MAgChC,UAAW,SAAQ,UAAU;IAmCxC,YACc,GAAmB,EAC/B,iBAAoC,EACpC,UAAmC,EACjB,SAAc;QAChC,KAAK,CAAC,GAAG,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;;QAhCrC,UAAK,GAAuB,IAAI,SAAS,EAAW,CAAC;;QAMpD,kBAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;;;;;QAahF,kBAAa,GAAqB,KAAK,CAAC;;QAGxC,mBAAc,GAAuD,EAAE,CAAC;;QAG/D,mBAAc,GAAG,IAAI,OAAO,EAAkB,CAAC;QAQtD,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QACjE,IAAI,CAAC,WAAW,GAAG,QAAQ,KAAK,sBAAsB,GAAG,UAAU,GAAG,YAAY,CAAC;KACpF;IAEQ,kBAAkB;QACzB,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAC,IAAI,EAAE,WAAW,EAAC,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;;QAGtF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5D,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,IAAI;;;;QAItB,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,EACtF,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC,SAAS,CAAC,KAAK;YACf,IAAK,KAAK,CAAC,OAAoC,KAAK,SAAS,EAAE;gBAC7D,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;aAC3B;SACF,CAAC,CAAC;KACJ;IAED,gBAAgB,CAAC,KAAa,EAAE,IAAa;QAC3C,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;KACvE;;;YAjGF,SAAS,SAAC;gBACT,QAAQ,EAAE,yEAAyE;gBACnF,QAAQ,EAAE,sDAAsD;gBAChE,62GAA2B;gBAE3B,MAAM,EAAE,CAAC,eAAe,CAAC;gBACzB,IAAI,EAAE;oBACJ,gCAAgC,EAAE,8BAA8B;oBAChE,8BAA8B,EAAE,4BAA4B;oBAC5D,wCAAwC,EACpC,wDAAwD;oBAC5D,2CAA2C,EACvC,2DAA2D;oBAC/D,yBAAyB,EAAE,aAAa;oBACxC,MAAM,EAAE,SAAS;iBAClB;gBACD,UAAU,EAAE;oBACV,oBAAoB,CAAC,wBAAwB;oBAC7C,oBAAoB,CAAC,sBAAsB;iBAC5C;gBACD,SAAS,EAAE;oBACT,EAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAC;oBAC9C,EAAC,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAC;oBACxD,EAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAC;iBACvD;gBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;gBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;;aAChD;;;YAtKO,cAAc,uBA2MjB,QAAQ;YA/LX,iBAAiB;YAKjB,UAAU;4CA6LP,MAAM,SAAC,QAAQ;;;0BArCjB,YAAY,SAAC,aAAa;qBAG1B,eAAe,SAAC,OAAO,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;qBAM5C,eAAe,SAAC,cAAc,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;4BAGnD,MAAM;4BAGN,KAAK;oBAGL,KAAK;4BAML,KAAK;;;ACzMR;;;;;;;AAWA;MASa,cAAe,SAAQ,cAAc;;;YARjD,SAAS,SAAC;gBACT,QAAQ,EAAE,wBAAwB;gBAClC,IAAI,EAAE;oBACJ,OAAO,EAAE,kBAAkB;oBAC3B,QAAQ,EAAE,MAAM;iBACjB;gBACD,MAAM,EAAE,CAAC,MAAM,CAAC;aACjB;;AAID;MASa,kBAAmB,SAAQ,kBAAkB;;;YARzD,SAAS,SAAC;gBACT,QAAQ,EAAE,4BAA4B;gBACtC,IAAI,EAAE;oBACJ,OAAO,EAAE,sBAAsB;oBAC/B,QAAQ,EAAE,MAAM;iBACjB;gBACD,MAAM,EAAE,CAAC,MAAM,CAAC;aACjB;;;AC/BD;;;;;;;MA2Da,gBAAgB;;;YAnC5B,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,eAAe;oBACf,YAAY;oBACZ,YAAY;oBACZ,eAAe;oBACf,gBAAgB;oBAChB,aAAa;oBACb,eAAe;iBAChB;gBACD,OAAO,EAAE;oBACP,eAAe;oBACf,OAAO;oBACP,YAAY;oBACZ,UAAU;oBACV,cAAc;oBACd,kBAAkB;oBAClB,aAAa;oBACb,cAAc;oBACd,cAAc;iBACf;gBACD,YAAY,EAAE;oBACZ,oBAAoB;oBACpB,kBAAkB;oBAClB,OAAO;oBACP,YAAY;oBACZ,UAAU;oBACV,cAAc;oBACd,kBAAkB;oBAClB,aAAa;oBACb,cAAc;oBACd,cAAc;iBACf;gBACD,SAAS,EAAE,CAAC,yBAAyB,EAAE,iBAAiB,CAAC;aAC1D;;;AC1DD;;;;;;;;ACAA;;;;;;"}
1
+ {"version":3,"file":"stepper.js","sources":["../../../../../../src/material/stepper/step-label.ts","../../../../../../src/material/stepper/stepper-intl.ts","../../../../../../src/material/stepper/step-header.ts","../../../../../../src/material/stepper/stepper-animations.ts","../../../../../../src/material/stepper/stepper-icon.ts","../../../../../../src/material/stepper/step-content.ts","../../../../../../src/material/stepper/stepper.ts","../../../../../../src/material/stepper/stepper-button.ts","../../../../../../src/material/stepper/stepper-module.ts","../../../../../../src/material/stepper/public-api.ts","../../../../../../src/material/stepper/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 {Directive} from '@angular/core';\nimport {CdkStepLabel} from '@angular/cdk/stepper';\n\n@Directive({\n selector: '[matStepLabel]',\n})\nexport class MatStepLabel extends CdkStepLabel {}\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 {Injectable, Optional, SkipSelf} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n\n/** Stepper data that is required for internationalization. */\n@Injectable({providedIn: 'root'})\nexport class MatStepperIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** Label that is rendered below optional steps. */\n optionalLabel: string = 'Optional';\n\n /** Label that is used to indicate step as completed to screen readers. */\n completedLabel: string = 'Completed';\n\n /** Label that is used to indicate step as editable to screen readers. */\n editableLabel: string = 'Editable';\n}\n\n\n/** @docs-private */\nexport function MAT_STEPPER_INTL_PROVIDER_FACTORY(parentIntl: MatStepperIntl) {\n return parentIntl || new MatStepperIntl();\n}\n\n/** @docs-private */\nexport const MAT_STEPPER_INTL_PROVIDER = {\n provide: MatStepperIntl,\n deps: [[new Optional(), new SkipSelf(), MatStepperIntl]],\n useFactory: MAT_STEPPER_INTL_PROVIDER_FACTORY\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 {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n ViewEncapsulation,\n TemplateRef,\n AfterViewInit,\n} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {MatStepLabel} from './step-label';\nimport {MatStepperIntl} from './stepper-intl';\nimport {MatStepperIconContext} from './stepper-icon';\nimport {CdkStepHeader, StepState} from '@angular/cdk/stepper';\nimport {mixinColor, CanColor} from '@angular/material/core';\n\n\n// Boilerplate for applying mixins to MatStepHeader.\n/** @docs-private */\nconst _MatStepHeaderBase = mixinColor(class MatStepHeaderBase extends CdkStepHeader {\n constructor(elementRef: ElementRef) {\n super(elementRef);\n }\n}, 'primary');\n\n@Component({\n selector: 'mat-step-header',\n templateUrl: 'step-header.html',\n styleUrls: ['step-header.css'],\n inputs: ['color'],\n host: {\n 'class': 'mat-step-header',\n 'role': 'tab',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatStepHeader extends _MatStepHeaderBase implements AfterViewInit, OnDestroy,\n CanColor {\n private _intlSubscription: Subscription;\n\n /** State of the given step. */\n @Input() state: StepState;\n\n /** Label of the given step. */\n @Input() label: MatStepLabel | string;\n\n /** Error message to display when there's an error. */\n @Input() errorMessage: string;\n\n /** Overrides for the header icons, passed in via the stepper. */\n @Input() iconOverrides: {[key: string]: TemplateRef<MatStepperIconContext>};\n\n /** Index of the given step. */\n @Input() index: number;\n\n /** Whether the given step is selected. */\n @Input() selected: boolean;\n\n /** Whether the given step label is active. */\n @Input() active: boolean;\n\n /** Whether the given step is optional. */\n @Input() optional: boolean;\n\n /** Whether the ripple should be disabled. */\n @Input() disableRipple: boolean;\n\n constructor(\n public _intl: MatStepperIntl,\n private _focusMonitor: FocusMonitor,\n _elementRef: ElementRef<HTMLElement>,\n changeDetectorRef: ChangeDetectorRef) {\n super(_elementRef);\n this._intlSubscription = _intl.changes.subscribe(() => changeDetectorRef.markForCheck());\n }\n\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true);\n }\n\n ngOnDestroy() {\n this._intlSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Focuses the step header. */\n override focus(origin?: FocusOrigin, options?: FocusOptions) {\n if (origin) {\n this._focusMonitor.focusVia(this._elementRef, origin, options);\n } else {\n this._elementRef.nativeElement.focus(options);\n }\n }\n\n /** Returns string label of given step if it is a text label. */\n _stringLabel(): string | null {\n return this.label instanceof MatStepLabel ? null : this.label;\n }\n\n /** Returns MatStepLabel if the label of given step is a template label. */\n _templateLabel(): MatStepLabel | null {\n return this.label instanceof MatStepLabel ? this.label : null;\n }\n\n /** Returns the host HTML element. */\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n\n /** Template context variables that are exposed to the `matStepperIcon` instances. */\n _getIconContext(): MatStepperIconContext {\n return {\n index: this.index,\n active: this.active,\n optional: this.optional\n };\n }\n\n _getDefaultTextForState(state: StepState): string {\n if (state == 'number') {\n return `${this.index + 1}`;\n }\n if (state == 'edit') {\n return 'create';\n }\n if (state == 'error') {\n return 'warning';\n }\n return state;\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 */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material steppers.\n * @docs-private\n */\nexport const matStepperAnimations: {\n readonly horizontalStepTransition: AnimationTriggerMetadata;\n readonly verticalStepTransition: AnimationTriggerMetadata;\n} = {\n /** Animation that transitions the step along the X axis in a horizontal stepper. */\n horizontalStepTransition: trigger('horizontalStepTransition', [\n state('previous', style({transform: 'translate3d(-100%, 0, 0)', visibility: 'hidden'})),\n // Transition to `inherit`, rather than `visible`,\n // because visibility on a child element the one from the parent,\n // making this element focusable inside of a `hidden` element.\n state('current', style({transform: 'none', visibility: 'inherit'})),\n state('next', style({transform: 'translate3d(100%, 0, 0)', visibility: 'hidden'})),\n transition('* => *', animate('500ms cubic-bezier(0.35, 0, 0.25, 1)'))\n ]),\n\n /** Animation that transitions the step along the Y axis in a vertical stepper. */\n verticalStepTransition: trigger('verticalStepTransition', [\n state('previous', style({height: '0px', visibility: 'hidden'})),\n state('next', style({height: '0px', visibility: 'hidden'})),\n // Transition to `inherit`, rather than `visible`,\n // because visibility on a child element the one from the parent,\n // making this element focusable inside of a `hidden` element.\n state('current', style({height: '*', visibility: 'inherit'})),\n transition('* <=> current', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)'))\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 {Directive, Input, TemplateRef} from '@angular/core';\nimport {StepState} from '@angular/cdk/stepper';\n\n/** Template context available to an attached `matStepperIcon`. */\nexport interface MatStepperIconContext {\n /** Index of the step. */\n index: number;\n /** Whether the step is currently active. */\n active: boolean;\n /** Whether the step is optional. */\n optional: boolean;\n}\n\n/**\n * Template to be used to override the icons inside the step header.\n */\n@Directive({\n selector: 'ng-template[matStepperIcon]',\n})\nexport class MatStepperIcon {\n /** Name of the icon to be overridden. */\n @Input('matStepperIcon') name: StepState;\n\n constructor(public templateRef: TemplateRef<MatStepperIconContext>) {}\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 {Directive, TemplateRef} from '@angular/core';\n\n/**\n * Content for a `mat-step` that will be rendered lazily.\n */\n@Directive({\n selector: 'ng-template[matStepContent]'\n})\nexport class MatStepContent {\n constructor(public _template: TemplateRef<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 {Directionality} from '@angular/cdk/bidi';\nimport {\n CdkStep,\n CdkStepper,\n StepContentPositionState,\n STEPPER_GLOBAL_OPTIONS,\n StepperOptions,\n} from '@angular/cdk/stepper';\nimport {AnimationEvent} from '@angular/animations';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n SkipSelf,\n TemplateRef,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormControl, FormGroupDirective, NgForm} from '@angular/forms';\nimport {DOCUMENT} from '@angular/common';\nimport {ErrorStateMatcher, ThemePalette} from '@angular/material/core';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {Subject, Subscription} from 'rxjs';\nimport {takeUntil, distinctUntilChanged, map, startWith, switchMap} from 'rxjs/operators';\n\nimport {MatStepHeader} from './step-header';\nimport {MatStepLabel} from './step-label';\nimport {matStepperAnimations} from './stepper-animations';\nimport {MatStepperIcon, MatStepperIconContext} from './stepper-icon';\nimport {MatStepContent} from './step-content';\n\n@Component({\n selector: 'mat-step',\n templateUrl: 'step.html',\n providers: [\n {provide: ErrorStateMatcher, useExisting: MatStep},\n {provide: CdkStep, useExisting: MatStep},\n ],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matStep',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatStep extends CdkStep implements ErrorStateMatcher, AfterContentInit, OnDestroy {\n private _isSelected = Subscription.EMPTY;\n\n /** Content for step label given by `<ng-template matStepLabel>`. */\n @ContentChild(MatStepLabel) override stepLabel: MatStepLabel;\n\n /** Theme color for the particular step. */\n @Input() color: ThemePalette;\n\n /** Content that will be rendered lazily. */\n @ContentChild(MatStepContent, {static: false}) _lazyContent: MatStepContent;\n\n /** Currently-attached portal containing the lazy content. */\n _portal: TemplatePortal;\n\n constructor(@Inject(forwardRef(() => MatStepper)) stepper: MatStepper,\n @SkipSelf() private _errorStateMatcher: ErrorStateMatcher,\n private _viewContainerRef: ViewContainerRef,\n @Optional() @Inject(STEPPER_GLOBAL_OPTIONS) stepperOptions?: StepperOptions) {\n super(stepper, stepperOptions);\n }\n\n ngAfterContentInit() {\n this._isSelected = this._stepper.steps.changes.pipe(switchMap(() => {\n return this._stepper.selectionChange.pipe(\n map(event => event.selectedStep === this),\n startWith(this._stepper.selected === this)\n );\n })).subscribe(isSelected => {\n if (isSelected && this._lazyContent && !this._portal) {\n this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef!);\n }\n });\n }\n\n ngOnDestroy() {\n this._isSelected.unsubscribe();\n }\n\n /** Custom error state matcher that additionally checks for validity of interacted form. */\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n const originalErrorState = this._errorStateMatcher.isErrorState(control, form);\n\n // Custom error state checks for the validity of form that is not submitted or touched\n // since user can trigger a form change by calling for another step without directly\n // interacting with the current form.\n const customErrorState = !!(control && control.invalid && this.interacted);\n\n return originalErrorState || customErrorState;\n }\n}\n\n/**\n * Proxies the public APIs from `MatStepper` to the deprecated `MatHorizontalStepper` and\n * `MatVerticalStepper`.\n * @deprecated Use `MatStepper` instead.\n * @breaking-change 13.0.0\n * @docs-private\n */\n@Directive()\nabstract class _MatProxyStepperBase extends CdkStepper {\n override readonly steps: QueryList<MatStep>;\n readonly animationDone: EventEmitter<void>;\n disableRipple: boolean;\n color: ThemePalette;\n labelPosition: 'bottom' | 'end';\n}\n\n/**\n * @deprecated Use `MatStepper` instead.\n * @breaking-change 13.0.0\n */\n@Directive({selector: 'mat-horizontal-stepper'})\nexport class MatHorizontalStepper extends _MatProxyStepperBase {}\n\n/**\n * @deprecated Use `MatStepper` instead.\n * @breaking-change 13.0.0\n */\n@Directive({selector: 'mat-vertical-stepper'})\nexport class MatVerticalStepper extends _MatProxyStepperBase {}\n\n\n@Component({\n selector: 'mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]',\n exportAs: 'matStepper, matVerticalStepper, matHorizontalStepper',\n templateUrl: 'stepper.html',\n styleUrls: ['stepper.css'],\n inputs: ['selectedIndex'],\n host: {\n '[class.mat-stepper-horizontal]': 'orientation === \"horizontal\"',\n '[class.mat-stepper-vertical]': 'orientation === \"vertical\"',\n '[class.mat-stepper-label-position-end]':\n 'orientation === \"horizontal\" && labelPosition == \"end\"',\n '[class.mat-stepper-label-position-bottom]':\n 'orientation === \"horizontal\" && labelPosition == \"bottom\"',\n '[attr.aria-orientation]': 'orientation',\n 'role': 'tablist',\n },\n animations: [\n matStepperAnimations.horizontalStepTransition,\n matStepperAnimations.verticalStepTransition,\n ],\n providers: [\n {provide: CdkStepper, useExisting: MatStepper},\n {provide: MatHorizontalStepper, useExisting: MatStepper},\n {provide: MatVerticalStepper, useExisting: MatStepper},\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatStepper extends CdkStepper implements AfterContentInit {\n /** The list of step headers of the steps in the stepper. */\n @ViewChildren(MatStepHeader) override _stepHeader: QueryList<MatStepHeader>;\n\n /** Full list of steps inside the stepper, including inside nested steppers. */\n @ContentChildren(MatStep, {descendants: true}) override _steps: QueryList<MatStep>;\n\n /** Steps that belong to the current stepper, excluding ones from nested steppers. */\n override readonly steps: QueryList<MatStep> = new QueryList<MatStep>();\n\n /** Custom icon overrides passed in by the consumer. */\n @ContentChildren(MatStepperIcon, {descendants: true}) _icons: QueryList<MatStepperIcon>;\n\n /** Event emitted when the current step is done transitioning in. */\n @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\n\n /** Whether ripples should be disabled for the step headers. */\n @Input() disableRipple: boolean;\n\n /** Theme color for all of the steps in stepper. */\n @Input() color: ThemePalette;\n\n /**\n * Whether the label should display in bottom or end position.\n * Only applies in the `horizontal` orientation.\n */\n @Input()\n labelPosition: 'bottom' | 'end' = 'end';\n\n /** Consumer-specified template-refs to be used to override the header icons. */\n _iconOverrides: Record<string, TemplateRef<MatStepperIconContext>> = {};\n\n /** Stream of animation `done` events when the body expands/collapses. */\n readonly _animationDone = new Subject<AnimationEvent>();\n\n constructor(\n @Optional() dir: Directionality,\n changeDetectorRef: ChangeDetectorRef,\n elementRef: ElementRef<HTMLElement>,\n @Inject(DOCUMENT) _document: any) {\n super(dir, changeDetectorRef, elementRef, _document);\n const nodeName = elementRef.nativeElement.nodeName.toLowerCase();\n this.orientation = nodeName === 'mat-vertical-stepper' ? 'vertical' : 'horizontal';\n }\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n this._icons.forEach(({name, templateRef}) => this._iconOverrides[name] = templateRef);\n\n // Mark the component for change detection whenever the content children query changes\n this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._stateChanged();\n });\n\n this._animationDone.pipe(\n // This needs a `distinctUntilChanged` in order to avoid emitting the same event twice due\n // to a bug in animations where the `.done` callback gets invoked twice on some browsers.\n // See https://github.com/angular/angular/issues/24084\n distinctUntilChanged((x, y) => x.fromState === y.fromState && x.toState === y.toState),\n takeUntil(this._destroyed)\n ).subscribe(event => {\n if ((event.toState as StepContentPositionState) === 'current') {\n this.animationDone.emit();\n }\n });\n }\n\n _stepIsNavigable(index: number, step: MatStep): boolean {\n return step.completed || this.selectedIndex === index || !this.linear;\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 {CdkStepperNext, CdkStepperPrevious} from '@angular/cdk/stepper';\nimport {Directive} from '@angular/core';\n\n/** Button that moves to the next step in a stepper workflow. */\n@Directive({\n selector: 'button[matStepperNext]',\n host: {\n 'class': 'mat-stepper-next',\n '[type]': 'type',\n },\n inputs: ['type']\n})\nexport class MatStepperNext extends CdkStepperNext {\n}\n\n/** Button that moves to the previous step in a stepper workflow. */\n@Directive({\n selector: 'button[matStepperPrevious]',\n host: {\n 'class': 'mat-stepper-previous',\n '[type]': 'type',\n },\n inputs: ['type']\n})\nexport class MatStepperPrevious extends CdkStepperPrevious {\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 {PortalModule} from '@angular/cdk/portal';\nimport {CdkStepperModule} from '@angular/cdk/stepper';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatButtonModule} from '@angular/material/button';\nimport {ErrorStateMatcher, MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatStepHeader} from './step-header';\nimport {MatStepLabel} from './step-label';\nimport {MatHorizontalStepper, MatStep, MatStepper, MatVerticalStepper} from './stepper';\nimport {MatStepperNext, MatStepperPrevious} from './stepper-button';\nimport {MatStepperIcon} from './stepper-icon';\nimport {MAT_STEPPER_INTL_PROVIDER} from './stepper-intl';\nimport {MatStepContent} from './step-content';\n\n\n@NgModule({\n imports: [\n MatCommonModule,\n CommonModule,\n PortalModule,\n MatButtonModule,\n CdkStepperModule,\n MatIconModule,\n MatRippleModule,\n ],\n exports: [\n MatCommonModule,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n MatStepContent,\n ],\n declarations: [\n MatHorizontalStepper,\n MatVerticalStepper,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n MatStepContent,\n ],\n providers: [MAT_STEPPER_INTL_PROVIDER, ErrorStateMatcher],\n})\nexport class MatStepperModule {}\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 {StepperOrientation, StepState} from '@angular/cdk/stepper';\nexport * from './stepper-module';\nexport * from './step-label';\nexport * from './stepper';\nexport * from './stepper-button';\nexport * from './step-header';\nexport * from './stepper-intl';\nexport * from './stepper-animations';\nexport * from './stepper-icon';\nexport * from './step-content';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/fesm2015/tabs.js CHANGED
@@ -2,7 +2,7 @@ import { FocusKeyManager, FocusMonitor, A11yModule } from '@angular/cdk/a11y';
2
2
  import { ObserversModule } from '@angular/cdk/observers';
3
3
  import { CdkPortal, TemplatePortal, CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';
4
4
  import { DOCUMENT, CommonModule } from '@angular/common';
5
- import { InjectionToken, Directive, ElementRef, NgZone, Inject, Optional, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewContainerRef, ContentChild, ViewChild, Input, ComponentFactoryResolver, forwardRef, EventEmitter, ChangeDetectorRef, Output, QueryList, ContentChildren, Attribute, NgModule } from '@angular/core';
5
+ import { InjectionToken, Directive, ElementRef, NgZone, Inject, Optional, TemplateRef, ViewContainerRef, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChild, ViewChild, Input, ComponentFactoryResolver, forwardRef, EventEmitter, ChangeDetectorRef, Output, QueryList, ContentChildren, Attribute, NgModule } from '@angular/core';
6
6
  import { mixinDisabled, mixinColor, mixinDisableRipple, mixinTabIndex, MAT_RIPPLE_GLOBAL_OPTIONS, RippleRenderer, MatCommonModule, MatRippleModule } from '@angular/material/core';
7
7
  import { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';
8
8
  import { Subject, Subscription, merge, fromEvent, of, timer } from 'rxjs';
@@ -142,8 +142,17 @@ MatTabContent.ctorParameters = () => [
142
142
  * retention of the class and its directive metadata.
143
143
  */
144
144
  const MAT_TAB_LABEL = new InjectionToken('MatTabLabel');
145
+ /**
146
+ * Used to provide a tab label to a tab without causing a circular dependency.
147
+ * @docs-private
148
+ */
149
+ const MAT_TAB = new InjectionToken('MAT_TAB');
145
150
  /** Used to flag tab labels for use with the portal directive */
146
151
  class MatTabLabel extends CdkPortal {
152
+ constructor(templateRef, viewContainerRef, _closestTab) {
153
+ super(templateRef, viewContainerRef);
154
+ this._closestTab = _closestTab;
155
+ }
147
156
  }
148
157
  MatTabLabel.decorators = [
149
158
  { type: Directive, args: [{
@@ -151,6 +160,11 @@ MatTabLabel.decorators = [
151
160
  providers: [{ provide: MAT_TAB_LABEL, useExisting: MatTabLabel }],
152
161
  },] }
153
162
  ];
163
+ MatTabLabel.ctorParameters = () => [
164
+ { type: TemplateRef },
165
+ { type: ViewContainerRef },
166
+ { type: undefined, decorators: [{ type: Inject, args: [MAT_TAB,] }, { type: Optional }] }
167
+ ];
154
168
 
155
169
  /**
156
170
  * @license
@@ -219,11 +233,11 @@ class MatTab extends _MatTabBase {
219
233
  * @docs-private
220
234
  */
221
235
  _setTemplateLabelInput(value) {
222
- // Only update the templateLabel via query if there is actually
223
- // a MatTabLabel found. This works around an issue where a user may have
224
- // manually set `templateLabel` during creation mode, which would then get clobbered
225
- // by `undefined` when this query resolves.
226
- if (value) {
236
+ // Only update the label if the query managed to find one. This works around an issue where a
237
+ // user may have manually set `templateLabel` during creation mode, which would then get
238
+ // clobbered by `undefined` when the query resolves. Also note that we check that the closest
239
+ // tab matches the current one so that we don't pick up labels from nested tabs.
240
+ if (value && value._closestTab === this) {
227
241
  this._templateLabel = value;
228
242
  }
229
243
  }
@@ -236,7 +250,8 @@ MatTab.decorators = [
236
250
  // tslint:disable-next-line:validate-decorators
237
251
  changeDetection: ChangeDetectionStrategy.Default,
238
252
  encapsulation: ViewEncapsulation.None,
239
- exportAs: 'matTab'
253
+ exportAs: 'matTab',
254
+ providers: [{ provide: MAT_TAB, useExisting: MatTab }]
240
255
  },] }
241
256
  ];
242
257
  MatTab.ctorParameters = () => [
@@ -1742,5 +1757,5 @@ MatTabsModule.decorators = [
1742
1757
  * Generated bundle index. Do not edit.
1743
1758
  */
1744
1759
 
1745
- export { MAT_TABS_CONFIG, MAT_TAB_GROUP, MatInkBar, MatTab, MatTabBody, MatTabBodyPortal, MatTabChangeEvent, MatTabContent, MatTabGroup, MatTabHeader, MatTabLabel, MatTabLabelWrapper, MatTabLink, MatTabNav, MatTabsModule, _MAT_INK_BAR_POSITIONER, _MatTabBodyBase, _MatTabGroupBase, _MatTabHeaderBase, _MatTabLinkBase, _MatTabNavBase, matTabsAnimations, _MAT_INK_BAR_POSITIONER_FACTORY as ɵangular_material_src_material_tabs_tabs_a, MAT_TAB_LABEL as ɵangular_material_src_material_tabs_tabs_b, MAT_TAB_CONTENT as ɵangular_material_src_material_tabs_tabs_c, MatPaginatedTabHeader as ɵangular_material_src_material_tabs_tabs_d };
1760
+ export { MAT_TAB, MAT_TABS_CONFIG, MAT_TAB_GROUP, MatInkBar, MatTab, MatTabBody, MatTabBodyPortal, MatTabChangeEvent, MatTabContent, MatTabGroup, MatTabHeader, MatTabLabel, MatTabLabelWrapper, MatTabLink, MatTabNav, MatTabsModule, _MAT_INK_BAR_POSITIONER, _MatTabBodyBase, _MatTabGroupBase, _MatTabHeaderBase, _MatTabLinkBase, _MatTabNavBase, matTabsAnimations, _MAT_INK_BAR_POSITIONER_FACTORY as ɵangular_material_src_material_tabs_tabs_a, MAT_TAB_LABEL as ɵangular_material_src_material_tabs_tabs_b, MAT_TAB_CONTENT as ɵangular_material_src_material_tabs_tabs_c, MatPaginatedTabHeader as ɵangular_material_src_material_tabs_tabs_d };
1746
1761
  //# sourceMappingURL=tabs.js.map