blob: 5e1ecd7f4622cb4cfffd24869d42d8761efad350 [file] [log] [blame]
{"version":3,"file":"menu.es5.js","sources":["../../../src/material/menu/menu-module.ts","../../../src/material/menu/menu-trigger.ts","../../../src/material/menu/menu.ts","../../../src/material/menu/menu-item.ts","../../../src/material/menu/menu-panel.ts","../../../src/material/menu/menu-errors.ts","../../../src/material/menu/menu-content.ts","../../../src/material/menu/menu-animations.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 {OverlayModule} from '@angular/cdk/overlay';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatMenuContent} from './menu-content';\nimport {_MatMenu} from './menu';\nimport {MatMenuItem} from './menu-item';\nimport {\n MatMenuTrigger,\n MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER,\n} from './menu-trigger';\n\n/**\n * Used by both the current `MatMenuModule` and the MDC `MatMenuModule`\n * to declare the menu-related directives.\n */\n@NgModule({\n exports: [MatMenuTrigger, MatMenuContent, MatCommonModule],\n declarations: [MatMenuTrigger, MatMenuContent],\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER]\n})\n// tslint:disable-next-line:class-name\nexport class _MatMenuDirectivesModule {}\n\n@NgModule({\n imports: [\n CommonModule,\n MatCommonModule,\n MatRippleModule,\n OverlayModule,\n _MatMenuDirectivesModule,\n ],\n exports: [_MatMenu, MatMenuItem, _MatMenuDirectivesModule],\n declarations: [_MatMenu, MatMenuItem],\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER]\n})\nexport class MatMenuModule {}\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, isFakeMousedownFromScreenReader} from '@angular/cdk/a11y';\nimport {Direction, Directionality} from '@angular/cdk/bidi';\nimport {LEFT_ARROW, RIGHT_ARROW} from '@angular/cdk/keycodes';\nimport {\n FlexibleConnectedPositionStrategy,\n HorizontalConnectionPos,\n Overlay,\n OverlayConfig,\n OverlayRef,\n VerticalConnectionPos,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Input,\n OnDestroy,\n Optional,\n Output,\n Self,\n ViewContainerRef,\n} from '@angular/core';\nimport {normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {asapScheduler, merge, of as observableOf, Subscription} from 'rxjs';\nimport {delay, filter, take, takeUntil} from 'rxjs/operators';\nimport {MatMenu} from './menu';\nimport {throwMatMenuMissingError} from './menu-errors';\nimport {MatMenuItem} from './menu-item';\nimport {MatMenuPanel} from './menu-panel';\nimport {MenuPositionX, MenuPositionY} from './menu-positions';\n\n/** Injection token that determines the scroll handling while the menu is open. */\nexport const MAT_MENU_SCROLL_STRATEGY =\n new InjectionToken<() => ScrollStrategy>('mat-menu-scroll-strategy');\n\n/** @docs-private */\nexport function MAT_MENU_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_MENU_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_MENU_SCROLL_STRATEGY_FACTORY,\n};\n\n/** Default top padding of the menu panel. */\nexport const MENU_PANEL_TOP_PADDING = 8;\n\n/** Options for binding a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({passive: true});\n\n// TODO(andrewseguin): Remove the kebab versions in favor of camelCased attribute selectors\n\n/**\n * This directive is intended to be used in conjunction with an mat-menu tag. It is\n * responsible for toggling the display of the provided menu instance.\n */\n@Directive({\n selector: `[mat-menu-trigger-for], [matMenuTriggerFor]`,\n host: {\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'menuOpen || null',\n '(mousedown)': '_handleMousedown($event)',\n '(keydown)': '_handleKeydown($event)',\n '(click)': '_handleClick($event)',\n },\n exportAs: 'matMenuTrigger'\n})\nexport class MatMenuTrigger implements AfterContentInit, OnDestroy {\n private _portal: TemplatePortal;\n private _overlayRef: OverlayRef | null = null;\n private _menuOpen: boolean = false;\n private _closingActionsSubscription = Subscription.EMPTY;\n private _hoverSubscription = Subscription.EMPTY;\n private _menuCloseSubscription = Subscription.EMPTY;\n private _scrollStrategy: () => ScrollStrategy;\n\n /**\n * Handles touch start events on the trigger.\n * Needs to be an arrow function so we can easily use addEventListener and removeEventListener.\n */\n private _handleTouchStart = () => this._openedBy = 'touch';\n\n // Tracking input type is necessary so it's possible to only auto-focus\n // the first item of the list when the menu is opened via the keyboard\n _openedBy: 'mouse' | 'touch' | null = null;\n\n /**\n * @deprecated\n * @breaking-change 8.0.0\n */\n @Input('mat-menu-trigger-for')\n get _deprecatedMatMenuTriggerFor(): MatMenuPanel { return this.menu; }\n set _deprecatedMatMenuTriggerFor(v: MatMenuPanel) {\n this.menu = v;\n }\n\n /** References the menu instance that the trigger is associated with. */\n @Input('matMenuTriggerFor')\n get menu() { return this._menu; }\n set menu(menu: MatMenuPanel) {\n if (menu === this._menu) {\n return;\n }\n\n this._menu = menu;\n this._menuCloseSubscription.unsubscribe();\n\n if (menu) {\n this._menuCloseSubscription = menu.close.asObservable().subscribe(reason => {\n this._destroyMenu();\n\n // If a click closed the menu, we should close the entire chain of nested menus.\n if ((reason === 'click' || reason === 'tab') && this._parentMenu) {\n this._parentMenu.closed.emit(reason);\n }\n });\n }\n }\n private _menu: MatMenuPanel;\n\n /** Data to be passed along to any lazily-rendered content. */\n @Input('matMenuTriggerData') menuData: any;\n\n /**\n * Whether focus should be restored when the menu is closed.\n * Note that disabling this option can have accessibility implications\n * and it's up to you to manage focus, if you decide to turn it off.\n */\n @Input('matMenuTriggerRestoreFocus') restoreFocus: boolean = true;\n\n /** Event emitted when the associated menu is opened. */\n @Output() readonly menuOpened: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Event emitted when the associated menu is opened.\n * @deprecated Switch to `menuOpened` instead\n * @breaking-change 8.0.0\n */\n // tslint:disable-next-line:no-output-on-prefix\n @Output() readonly onMenuOpen: EventEmitter<void> = this.menuOpened;\n\n /** Event emitted when the associated menu is closed. */\n @Output() readonly menuClosed: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Event emitted when the associated menu is closed.\n * @deprecated Switch to `menuClosed` instead\n * @breaking-change 8.0.0\n */\n // tslint:disable-next-line:no-output-on-prefix\n @Output() readonly onMenuClose: EventEmitter<void> = this.menuClosed;\n\n constructor(private _overlay: Overlay,\n private _element: ElementRef<HTMLElement>,\n private _viewContainerRef: ViewContainerRef,\n @Inject(MAT_MENU_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private _parentMenu: MatMenu,\n @Optional() @Self() private _menuItemInstance: MatMenuItem,\n @Optional() private _dir: Directionality,\n // TODO(crisbeto): make the _focusMonitor required when doing breaking changes.\n // @breaking-change 8.0.0\n private _focusMonitor?: FocusMonitor) {\n\n _element.nativeElement.addEventListener('touchstart', this._handleTouchStart,\n passiveEventListenerOptions);\n\n if (_menuItemInstance) {\n _menuItemInstance._triggersSubmenu = this.triggersSubmenu();\n }\n\n this._scrollStrategy = scrollStrategy;\n }\n\n ngAfterContentInit() {\n this._checkMenu();\n this._handleHover();\n }\n\n ngOnDestroy() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n\n this._element.nativeElement.removeEventListener('touchstart', this._handleTouchStart,\n passiveEventListenerOptions);\n\n this._menuCloseSubscription.unsubscribe();\n this._closingActionsSubscription.unsubscribe();\n this._hoverSubscription.unsubscribe();\n }\n\n /** Whether the menu is open. */\n get menuOpen(): boolean {\n return this._menuOpen;\n }\n\n /** The text direction of the containing app. */\n get dir(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n\n /** Whether the menu triggers a sub-menu or a top-level one. */\n triggersSubmenu(): boolean {\n return !!(this._menuItemInstance && this._parentMenu);\n }\n\n /** Toggles the menu between the open and closed states. */\n toggleMenu(): void {\n return this._menuOpen ? this.closeMenu() : this.openMenu();\n }\n\n /** Opens the menu. */\n openMenu(): void {\n if (this._menuOpen) {\n return;\n }\n\n this._checkMenu();\n\n const overlayRef = this._createOverlay();\n const overlayConfig = overlayRef.getConfig();\n\n this._setPosition(overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy);\n overlayConfig.hasBackdrop = this.menu.hasBackdrop == null ? !this.triggersSubmenu() :\n this.menu.hasBackdrop;\n overlayRef.attach(this._getPortal());\n\n if (this.menu.lazyContent) {\n this.menu.lazyContent.attach(this.menuData);\n }\n\n this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this.closeMenu());\n this._initMenu();\n\n if (this.menu instanceof MatMenu) {\n this.menu._startAnimation();\n }\n }\n\n /** Closes the menu. */\n closeMenu(): void {\n this.menu.close.emit();\n }\n\n /**\n * Focuses the menu trigger.\n * @param origin Source of the menu trigger's focus.\n */\n focus(origin: FocusOrigin = 'program') {\n if (this._focusMonitor) {\n this._focusMonitor.focusVia(this._element, origin);\n } else {\n this._element.nativeElement.focus();\n }\n }\n\n /** Closes the menu and does the necessary cleanup. */\n private _destroyMenu() {\n if (!this._overlayRef || !this.menuOpen) {\n return;\n }\n\n const menu = this.menu;\n\n this._closingActionsSubscription.unsubscribe();\n this._overlayRef.detach();\n\n if (menu instanceof MatMenu) {\n menu._resetAnimation();\n\n if (menu.lazyContent) {\n // Wait for the exit animation to finish before detaching the content.\n menu._animationDone\n .pipe(\n filter(event => event.toState === 'void'),\n take(1),\n // Interrupt if the content got re-attached.\n takeUntil(menu.lazyContent._attached)\n )\n .subscribe({\n next: () => menu.lazyContent!.detach(),\n // No matter whether the content got re-attached, reset the menu.\n complete: () => this._resetMenu()\n });\n } else {\n this._resetMenu();\n }\n } else {\n this._resetMenu();\n\n if (menu.lazyContent) {\n menu.lazyContent.detach();\n }\n }\n }\n\n /**\n * This method sets the menu state to open and focuses the first item if\n * the menu was opened via the keyboard.\n */\n private _initMenu(): void {\n this.menu.parentMenu = this.triggersSubmenu() ? this._parentMenu : undefined;\n this.menu.direction = this.dir;\n this._setMenuElevation();\n this._setIsMenuOpen(true);\n this.menu.focusFirstItem(this._openedBy || 'program');\n }\n\n /** Updates the menu elevation based on the amount of parent menus that it has. */\n private _setMenuElevation(): void {\n if (this.menu.setElevation) {\n let depth = 0;\n let parentMenu = this.menu.parentMenu;\n\n while (parentMenu) {\n depth++;\n parentMenu = parentMenu.parentMenu;\n }\n\n this.menu.setElevation(depth);\n }\n }\n\n /**\n * This method resets the menu when it's closed, most importantly restoring\n * focus to the menu trigger if the menu was opened via the keyboard.\n */\n private _resetMenu(): void {\n this._setIsMenuOpen(false);\n\n // We should reset focus if the user is navigating using a keyboard or\n // if we have a top-level trigger which might cause focus to be lost\n // when clicking on the backdrop.\n if (this.restoreFocus) {\n if (!this._openedBy) {\n // Note that the focus style will show up both for `program` and\n // `keyboard` so we don't have to specify which one it is.\n this.focus();\n } else if (!this.triggersSubmenu()) {\n this.focus(this._openedBy);\n }\n }\n\n this._openedBy = null;\n }\n\n // set state rather than toggle to support triggers sharing a menu\n private _setIsMenuOpen(isOpen: boolean): void {\n this._menuOpen = isOpen;\n this._menuOpen ? this.menuOpened.emit() : this.menuClosed.emit();\n\n if (this.triggersSubmenu()) {\n this._menuItemInstance._highlighted = isOpen;\n }\n }\n\n /**\n * This method checks that a valid instance of MatMenu has been passed into\n * matMenuTriggerFor. If not, an exception is thrown.\n */\n private _checkMenu() {\n if (!this.menu) {\n throwMatMenuMissingError();\n }\n }\n\n /**\n * This method creates the overlay from the provided menu's template and saves its\n * OverlayRef so that it can be attached to the DOM when openMenu is called.\n */\n private _createOverlay(): OverlayRef {\n if (!this._overlayRef) {\n const config = this._getOverlayConfig();\n this._subscribeToPositions(config.positionStrategy as FlexibleConnectedPositionStrategy);\n this._overlayRef = this._overlay.create(config);\n\n // Consume the `keydownEvents` in order to prevent them from going to another overlay.\n // Ideally we'd also have our keyboard event logic in here, however doing so will\n // break anybody that may have implemented the `MatMenuPanel` themselves.\n this._overlayRef.keydownEvents().subscribe();\n }\n\n return this._overlayRef;\n }\n\n /**\n * This method builds the configuration object needed to create the overlay, the OverlayState.\n * @returns OverlayConfig\n */\n private _getOverlayConfig(): OverlayConfig {\n return new OverlayConfig({\n positionStrategy: this._overlay.position()\n .flexibleConnectedTo(this._element)\n .withLockedPosition()\n .withTransformOriginOn('.mat-menu-panel, .mat-mdc-menu-panel'),\n backdropClass: this.menu.backdropClass || 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this._scrollStrategy(),\n direction: this._dir\n });\n }\n\n /**\n * Listens to changes in the position of the overlay and sets the correct classes\n * on the menu based on the new position. This ensures the animation origin is always\n * correct, even if a fallback position is used for the overlay.\n */\n private _subscribeToPositions(position: FlexibleConnectedPositionStrategy): void {\n if (this.menu.setPositionClasses) {\n position.positionChanges.subscribe(change => {\n const posX: MenuPositionX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n const posY: MenuPositionY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n\n this.menu.setPositionClasses!(posX, posY);\n });\n }\n }\n\n /**\n * Sets the appropriate positions on a position strategy\n * so the overlay connects with the trigger correctly.\n * @param positionStrategy Strategy whose position to update.\n */\n private _setPosition(positionStrategy: FlexibleConnectedPositionStrategy) {\n let [originX, originFallbackX]: HorizontalConnectionPos[] =\n this.menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];\n\n let [overlayY, overlayFallbackY]: VerticalConnectionPos[] =\n this.menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\n\n let [originY, originFallbackY] = [overlayY, overlayFallbackY];\n let [overlayX, overlayFallbackX] = [originX, originFallbackX];\n let offsetY = 0;\n\n if (this.triggersSubmenu()) {\n // When the menu is a sub-menu, it should always align itself\n // to the edges of the trigger, instead of overlapping it.\n overlayFallbackX = originX = this.menu.xPosition === 'before' ? 'start' : 'end';\n originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';\n offsetY = overlayY === 'bottom' ? MENU_PANEL_TOP_PADDING : -MENU_PANEL_TOP_PADDING;\n } else if (!this.menu.overlapTrigger) {\n originY = overlayY === 'top' ? 'bottom' : 'top';\n originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\n }\n\n positionStrategy.withPositions([\n {originX, originY, overlayX, overlayY, offsetY},\n {originX: originFallbackX, originY, overlayX: overlayFallbackX, overlayY, offsetY},\n {\n originX,\n originY: originFallbackY,\n overlayX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY\n },\n {\n originX: originFallbackX,\n originY: originFallbackY,\n overlayX: overlayFallbackX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY\n }\n ]);\n }\n\n /** Returns a stream that emits whenever an action that should close the menu occurs. */\n private _menuClosingActions() {\n const backdrop = this._overlayRef!.backdropClick();\n const detachments = this._overlayRef!.detachments();\n const parentClose = this._parentMenu ? this._parentMenu.closed : observableOf();\n const hover = this._parentMenu ? this._parentMenu._hovered().pipe(\n filter(active => active !== this._menuItemInstance),\n filter(() => this._menuOpen)\n ) : observableOf();\n\n return merge(backdrop, parentClose, hover, detachments);\n }\n\n /** Handles mouse presses on the trigger. */\n _handleMousedown(event: MouseEvent): void {\n if (!isFakeMousedownFromScreenReader(event)) {\n // Since right or middle button clicks won't trigger the `click` event,\n // we shouldn't consider the menu as opened by mouse in those cases.\n this._openedBy = event.button === 0 ? 'mouse' : null;\n\n // Since clicking on the trigger won't close the menu if it opens a sub-menu,\n // we should prevent focus from moving onto it via click to avoid the\n // highlight from lingering on the menu item.\n if (this.triggersSubmenu()) {\n event.preventDefault();\n }\n }\n }\n\n /** Handles key presses on the trigger. */\n _handleKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n\n if (this.triggersSubmenu() && (\n (keyCode === RIGHT_ARROW && this.dir === 'ltr') ||\n (keyCode === LEFT_ARROW && this.dir === 'rtl'))) {\n this.openMenu();\n }\n }\n\n /** Handles click events on the trigger. */\n _handleClick(event: MouseEvent): void {\n if (this.triggersSubmenu()) {\n // Stop event propagation to avoid closing the parent menu.\n event.stopPropagation();\n this.openMenu();\n } else {\n this.toggleMenu();\n }\n }\n\n /** Handles the cases where the user hovers over the trigger. */\n private _handleHover() {\n // Subscribe to changes in the hovered item in order to toggle the panel.\n if (!this.triggersSubmenu()) {\n return;\n }\n\n this._hoverSubscription = this._parentMenu._hovered()\n // Since we might have multiple competing triggers for the same menu (e.g. a sub-menu\n // with different data and triggers), we have to delay it by a tick to ensure that\n // it won't be closed immediately after it is opened.\n .pipe(\n filter(active => active === this._menuItemInstance && !active.disabled),\n delay(0, asapScheduler)\n )\n .subscribe(() => {\n this._openedBy = 'mouse';\n\n // If the same menu is used between multiple triggers, it might still be animating\n // while the new trigger tries to re-open it. Wait for the animation to finish\n // before doing so. Also interrupt if the user moves to another item.\n if (this.menu instanceof MatMenu && this.menu._isAnimating) {\n // We need the `delay(0)` here in order to avoid\n // 'changed after checked' errors in some cases. See #12194.\n this.menu._animationDone\n .pipe(take(1), delay(0, asapScheduler), takeUntil(this._parentMenu._hovered()))\n .subscribe(() => this.openMenu());\n } else {\n this.openMenu();\n }\n });\n }\n\n /** Gets the portal that should be attached to the overlay. */\n private _getPortal(): TemplatePortal {\n // Note that we can avoid this check by keeping the portal on the menu panel.\n // While it would be cleaner, we'd have to introduce another required method on\n // `MatMenuPanel`, making it harder to consume.\n if (!this._portal || this._portal.templateRef !== this.menu.templateRef) {\n this._portal = new TemplatePortal(this.menu.templateRef, this._viewContainerRef);\n }\n\n return this._portal;\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 {FocusKeyManager, FocusOrigin} from '@angular/cdk/a11y';\nimport {Direction} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n ESCAPE,\n LEFT_ARROW,\n RIGHT_ARROW,\n DOWN_ARROW,\n UP_ARROW,\n HOME,\n END,\n hasModifierKey,\n} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Output,\n TemplateRef,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n OnInit,\n} from '@angular/core';\nimport {merge, Observable, Subject, Subscription} from 'rxjs';\nimport {startWith, switchMap, take} from 'rxjs/operators';\nimport {matMenuAnimations} from './menu-animations';\nimport {MatMenuContent} from './menu-content';\nimport {MenuPositionX, MenuPositionY} from './menu-positions';\nimport {throwMatMenuInvalidPositionX, throwMatMenuInvalidPositionY} from './menu-errors';\nimport {MatMenuItem} from './menu-item';\nimport {MAT_MENU_PANEL, MatMenuPanel} from './menu-panel';\nimport {AnimationEvent} from '@angular/animations';\n\n/** Default `mat-menu` options that can be overridden. */\nexport interface MatMenuDefaultOptions {\n /** The x-axis position of the menu. */\n xPosition: MenuPositionX;\n\n /** The y-axis position of the menu. */\n yPosition: MenuPositionY;\n\n /** Whether the menu should overlap the menu trigger. */\n overlapTrigger: boolean;\n\n /** Class to be applied to the menu's backdrop. */\n backdropClass: string;\n\n /** Whether the menu has a backdrop. */\n hasBackdrop?: boolean;\n}\n\n/** Injection token to be used to override the default options for `mat-menu`. */\nexport const MAT_MENU_DEFAULT_OPTIONS =\n new InjectionToken<MatMenuDefaultOptions>('mat-menu-default-options', {\n providedIn: 'root',\n factory: MAT_MENU_DEFAULT_OPTIONS_FACTORY\n });\n\n/** @docs-private */\nexport function MAT_MENU_DEFAULT_OPTIONS_FACTORY(): MatMenuDefaultOptions {\n return {\n overlapTrigger: false,\n xPosition: 'after',\n yPosition: 'below',\n backdropClass: 'cdk-overlay-transparent-backdrop',\n };\n}\n/**\n * Start elevation for the menu panel.\n * @docs-private\n */\nconst MAT_MENU_BASE_ELEVATION = 4;\n\n/** Base class with all of the `MatMenu` functionality. */\n// tslint:disable-next-line:class-name\nexport class _MatMenuBase implements AfterContentInit, MatMenuPanel<MatMenuItem>, OnInit,\n OnDestroy {\n private _keyManager: FocusKeyManager<MatMenuItem>;\n private _xPosition: MenuPositionX = this._defaultOptions.xPosition;\n private _yPosition: MenuPositionY = this._defaultOptions.yPosition;\n private _previousElevation: string;\n\n /** All items inside the menu. Includes items nested inside another menu. */\n @ContentChildren(MatMenuItem, {descendants: true}) _allItems: QueryList<MatMenuItem>;\n\n /** Only the direct descendant menu items. */\n private _directDescendantItems = new QueryList<MatMenuItem>();\n\n /** Subscription to tab events on the menu panel */\n private _tabSubscription = Subscription.EMPTY;\n\n /** Config object to be passed into the menu's ngClass */\n _classList: {[key: string]: boolean} = {};\n\n /** Current state of the panel animation. */\n _panelAnimationState: 'void' | 'enter' = 'void';\n\n /** Emits whenever an animation on the menu completes. */\n _animationDone = new Subject<AnimationEvent>();\n\n /** Whether the menu is animating. */\n _isAnimating: boolean;\n\n /** Parent menu of the current menu panel. */\n parentMenu: MatMenuPanel | undefined;\n\n /** Layout direction of the menu. */\n direction: Direction;\n\n /** Class to be added to the backdrop element. */\n @Input() backdropClass: string = this._defaultOptions.backdropClass;\n\n /** Position of the menu in the X axis. */\n @Input()\n get xPosition(): MenuPositionX { return this._xPosition; }\n set xPosition(value: MenuPositionX) {\n if (value !== 'before' && value !== 'after') {\n throwMatMenuInvalidPositionX();\n }\n this._xPosition = value;\n this.setPositionClasses();\n }\n\n /** Position of the menu in the Y axis. */\n @Input()\n get yPosition(): MenuPositionY { return this._yPosition; }\n set yPosition(value: MenuPositionY) {\n if (value !== 'above' && value !== 'below') {\n throwMatMenuInvalidPositionY();\n }\n this._yPosition = value;\n this.setPositionClasses();\n }\n\n /** @docs-private */\n @ViewChild(TemplateRef, {static: false}) templateRef: TemplateRef<any>;\n\n /**\n * List of the items inside of a menu.\n * @deprecated\n * @breaking-change 8.0.0\n */\n @ContentChildren(MatMenuItem) items: QueryList<MatMenuItem>;\n\n /**\n * Menu content that will be rendered lazily.\n * @docs-private\n */\n @ContentChild(MatMenuContent, {static: false}) lazyContent: MatMenuContent;\n\n /** Whether the menu should overlap its trigger. */\n @Input()\n get overlapTrigger(): boolean { return this._overlapTrigger; }\n set overlapTrigger(value: boolean) {\n this._overlapTrigger = coerceBooleanProperty(value);\n }\n private _overlapTrigger: boolean = this._defaultOptions.overlapTrigger;\n\n /** Whether the menu has a backdrop. */\n @Input()\n get hasBackdrop(): boolean | undefined { return this._hasBackdrop; }\n set hasBackdrop(value: boolean | undefined) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n private _hasBackdrop: boolean | undefined = this._defaultOptions.hasBackdrop;\n\n /**\n * This method takes classes set on the host mat-menu element and applies them on the\n * menu template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing menu from outside the component.\n * @param classes list of class names\n */\n @Input('class')\n set panelClass(classes: string) {\n const previousPanelClass = this._previousPanelClass;\n\n if (previousPanelClass && previousPanelClass.length) {\n previousPanelClass.split(' ').forEach((className: string) => {\n this._classList[className] = false;\n });\n }\n\n this._previousPanelClass = classes;\n\n if (classes && classes.length) {\n classes.split(' ').forEach((className: string) => {\n this._classList[className] = true;\n });\n\n this._elementRef.nativeElement.className = '';\n }\n }\n private _previousPanelClass: string;\n\n /**\n * This method takes classes set on the host mat-menu element and applies them on the\n * menu template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing menu from outside the component.\n * @deprecated Use `panelClass` instead.\n * @breaking-change 8.0.0\n */\n @Input()\n get classList(): string { return this.panelClass; }\n set classList(classes: string) { this.panelClass = classes; }\n\n /** Event emitted when the menu is closed. */\n @Output() readonly closed: EventEmitter<void | 'click' | 'keydown' | 'tab'> =\n new EventEmitter<void | 'click' | 'keydown' | 'tab'>();\n\n /**\n * Event emitted when the menu is closed.\n * @deprecated Switch to `closed` instead\n * @breaking-change 8.0.0\n */\n @Output() close = this.closed;\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\n @Inject(MAT_MENU_DEFAULT_OPTIONS) private _defaultOptions: MatMenuDefaultOptions) { }\n\n ngOnInit() {\n this.setPositionClasses();\n }\n\n ngAfterContentInit() {\n this._updateDirectDescendants();\n this._keyManager = new FocusKeyManager(this._directDescendantItems).withWrap().withTypeAhead();\n this._tabSubscription = this._keyManager.tabOut.subscribe(() => this.closed.emit('tab'));\n }\n\n ngOnDestroy() {\n this._directDescendantItems.destroy();\n this._tabSubscription.unsubscribe();\n this.closed.complete();\n }\n\n /** Stream that emits whenever the hovered menu item changes. */\n _hovered(): Observable<MatMenuItem> {\n return this._directDescendantItems.changes.pipe(\n startWith(this._directDescendantItems),\n switchMap(items => merge<MatMenuItem>(...items.map((item: MatMenuItem) => item._hovered)))\n );\n }\n\n /*\n * Registers a menu item with the menu.\n * @docs-private\n * @deprecated No longer being used. To be removed.\n * @breaking-change 9.0.0\n */\n addItem(_item: MatMenuItem) {}\n\n /**\n * Removes an item from the menu.\n * @docs-private\n * @deprecated No longer being used. To be removed.\n * @breaking-change 9.0.0\n */\n removeItem(_item: MatMenuItem) {}\n\n /** Handle a keyboard event from the menu, delegating to the appropriate action. */\n _handleKeydown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n const manager = this._keyManager;\n\n switch (keyCode) {\n case ESCAPE:\n if (!hasModifierKey(event)) {\n event.preventDefault();\n this.closed.emit('keydown');\n }\n break;\n case LEFT_ARROW:\n if (this.parentMenu && this.direction === 'ltr') {\n this.closed.emit('keydown');\n }\n break;\n case RIGHT_ARROW:\n if (this.parentMenu && this.direction === 'rtl') {\n this.closed.emit('keydown');\n }\n break;\n case HOME:\n case END:\n if (!hasModifierKey(event)) {\n keyCode === HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n event.preventDefault();\n }\n break;\n default:\n if (keyCode === UP_ARROW || keyCode === DOWN_ARROW) {\n manager.setFocusOrigin('keyboard');\n }\n\n manager.onKeydown(event);\n }\n }\n\n /**\n * Focus the first item in the menu.\n * @param origin Action from which the focus originated. Used to set the correct styling.\n */\n focusFirstItem(origin: FocusOrigin = 'program'): void {\n // When the content is rendered lazily, it takes a bit before the items are inside the DOM.\n if (this.lazyContent) {\n this._ngZone.onStable.asObservable()\n .pipe(take(1))\n .subscribe(() => this._keyManager.setFocusOrigin(origin).setFirstItemActive());\n } else {\n this._keyManager.setFocusOrigin(origin).setFirstItemActive();\n }\n }\n\n /**\n * Resets the active item in the menu. This is used when the menu is opened, allowing\n * the user to start from the first option when pressing the down arrow.\n */\n resetActiveItem() {\n this._keyManager.setActiveItem(-1);\n }\n\n /**\n * Sets the menu panel elevation.\n * @param depth Number of parent menus that come before the menu.\n */\n setElevation(depth: number): void {\n // The elevation starts at the base and increases by one for each level.\n const newElevation = `mat-elevation-z${MAT_MENU_BASE_ELEVATION + depth}`;\n const customElevation = Object.keys(this._classList).find(c => c.startsWith('mat-elevation-z'));\n\n if (!customElevation || customElevation === this._previousElevation) {\n if (this._previousElevation) {\n this._classList[this._previousElevation] = false;\n }\n\n this._classList[newElevation] = true;\n this._previousElevation = newElevation;\n }\n }\n\n /**\n * Adds classes to the menu panel based on its position. Can be used by\n * consumers to add specific styling based on the position.\n * @param posX Position of the menu along the x axis.\n * @param posY Position of the menu along the y axis.\n * @docs-private\n */\n setPositionClasses(posX: MenuPositionX = this.xPosition, posY: MenuPositionY = this.yPosition) {\n const classes = this._classList;\n classes['mat-menu-before'] = posX === 'before';\n classes['mat-menu-after'] = posX === 'after';\n classes['mat-menu-above'] = posY === 'above';\n classes['mat-menu-below'] = posY === 'below';\n }\n\n /** Starts the enter animation. */\n _startAnimation() {\n // @breaking-change 8.0.0 Combine with _resetAnimation.\n this._panelAnimationState = 'enter';\n }\n\n /** Resets the panel animation to its initial state. */\n _resetAnimation() {\n // @breaking-change 8.0.0 Combine with _startAnimation.\n this._panelAnimationState = 'void';\n }\n\n /** Callback that is invoked when the panel animation completes. */\n _onAnimationDone(event: AnimationEvent) {\n this._animationDone.next(event);\n this._isAnimating = false;\n }\n\n _onAnimationStart(event: AnimationEvent) {\n this._isAnimating = true;\n\n // Scroll the content element to the top as soon as the animation starts. This is necessary,\n // because we move focus to the first item while it's still being animated, which can throw\n // the browser off when it determines the scroll position. Alternatively we can move focus\n // when the animation is done, however moving focus asynchronously will interrupt screen\n // readers which are in the process of reading out the menu already. We take the `element`\n // from the `event` since we can't use a `ViewChild` to access the pane.\n if (event.toState === 'enter' && this._keyManager.activeItemIndex === 0) {\n event.element.scrollTop = 0;\n }\n }\n\n /**\n * Sets up a stream that will keep track of any newly-added menu items and will update the list\n * of direct descendants. We collect the descendants this way, because `_allItems` can include\n * items that are part of child menus, and using a custom way of registering items is unreliable\n * when it comes to maintaining the item order.\n */\n private _updateDirectDescendants() {\n this._allItems.changes\n .pipe(startWith(this._allItems))\n .subscribe((items: QueryList<MatMenuItem>) => {\n this._directDescendantItems.reset(items.filter(item => item._parentMenu === this));\n this._directDescendantItems.notifyOnChanges();\n });\n }\n}\n\n/** @docs-private We show the \"_MatMenu\" class as \"MatMenu\" in the docs. */\nexport class MatMenu extends _MatMenuBase {}\n\n// Note on the weird inheritance setup: we need three classes, because the MDC-based menu has to\n// extend `MatMenu`, however keeping a reference to it will cause the inlined template and styles\n// to be retained as well. The MDC menu also has to provide itself as a `MatMenu` in order for\n// queries and DI to work correctly, while still not referencing the actual menu class.\n// Class responsibility is split up as follows:\n// * _MatMenuBase - provides all the functionality without any of the Angular metadata.\n// * MatMenu - keeps the same name symbol name as the current menu and\n// is used as a provider for DI and query purposes.\n// * _MatMenu - the actual menu component implementation with the Angular metadata that should\n// be tree shaken away for MDC.\n\n/** @docs-public MatMenu */\n@Component({\n moduleId: module.id,\n selector: 'mat-menu',\n templateUrl: 'menu.html',\n styleUrls: ['menu.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matMenu',\n animations: [\n matMenuAnimations.transformMenu,\n matMenuAnimations.fadeInItems\n ],\n providers: [\n {provide: MAT_MENU_PANEL, useExisting: MatMenu},\n {provide: MatMenu, useExisting: _MatMenu}\n ]\n})\n// tslint:disable-next-line:class-name\nexport class _MatMenu extends MatMenu {\n\n constructor(elementRef: ElementRef<HTMLElement>, ngZone: NgZone,\n @Inject(MAT_MENU_DEFAULT_OPTIONS) defaultOptions: MatMenuDefaultOptions) {\n super(elementRef, ngZone, defaultOptions);\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 {FocusableOption, FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n ViewEncapsulation,\n Inject,\n Optional,\n Input,\n HostListener,\n} from '@angular/core';\nimport {\n CanDisable, CanDisableCtor,\n CanDisableRipple, CanDisableRippleCtor,\n mixinDisabled,\n mixinDisableRipple,\n} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {DOCUMENT} from '@angular/common';\nimport {MAT_MENU_PANEL, MatMenuPanel} from './menu-panel';\n\n// Boilerplate for applying mixins to MatMenuItem.\n/** @docs-private */\nclass MatMenuItemBase {}\nconst _MatMenuItemMixinBase: CanDisableRippleCtor & CanDisableCtor & typeof MatMenuItemBase =\n mixinDisableRipple(mixinDisabled(MatMenuItemBase));\n\n/**\n * This directive is intended to be used inside an mat-menu tag.\n * It exists mostly to set the role attribute.\n */\n@Component({\n moduleId: module.id,\n selector: '[mat-menu-item]',\n exportAs: 'matMenuItem',\n inputs: ['disabled', 'disableRipple'],\n host: {\n '[attr.role]': 'role',\n 'class': 'mat-menu-item',\n '[class.mat-menu-item-highlighted]': '_highlighted',\n '[class.mat-menu-item-submenu-trigger]': '_triggersSubmenu',\n '[attr.tabindex]': '_getTabIndex()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.disabled]': 'disabled || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: 'menu-item.html',\n})\nexport class MatMenuItem extends _MatMenuItemMixinBase\n implements FocusableOption, CanDisable, CanDisableRipple, OnDestroy {\n\n /** ARIA role for the menu item. */\n @Input() role: 'menuitem' | 'menuitemradio' | 'menuitemcheckbox' = 'menuitem';\n\n private _document: Document;\n\n /** Stream that emits when the menu item is hovered. */\n readonly _hovered: Subject<MatMenuItem> = new Subject<MatMenuItem>();\n\n /** Whether the menu item is highlighted. */\n _highlighted: boolean = false;\n\n /** Whether the menu item acts as a trigger for a sub-menu. */\n _triggersSubmenu: boolean = false;\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n @Inject(DOCUMENT) document?: any,\n private _focusMonitor?: FocusMonitor,\n @Inject(MAT_MENU_PANEL) @Optional() public _parentMenu?: MatMenuPanel<MatMenuItem>) {\n\n // @breaking-change 8.0.0 make `_focusMonitor` and `document` required params.\n super();\n\n if (_focusMonitor) {\n // Start monitoring the element so it gets the appropriate focused classes. We want\n // to show the focus style for menu items only when the focus was not caused by a\n // mouse or touch interaction.\n _focusMonitor.monitor(this._elementRef, false);\n }\n\n if (_parentMenu && _parentMenu.addItem) {\n _parentMenu.addItem(this);\n }\n\n this._document = document;\n }\n\n /** Focuses the menu item. */\n focus(origin: FocusOrigin = 'program'): void {\n if (this._focusMonitor) {\n this._focusMonitor.focusVia(this._getHostElement(), origin);\n } else {\n this._getHostElement().focus();\n }\n }\n\n ngOnDestroy() {\n if (this._focusMonitor) {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n if (this._parentMenu && this._parentMenu.removeItem) {\n this._parentMenu.removeItem(this);\n }\n\n this._hovered.complete();\n }\n\n /** Used to set the `tabindex`. */\n _getTabIndex(): string {\n return this.disabled ? '-1' : '0';\n }\n\n /** Returns the host DOM element. */\n _getHostElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /** Prevents the default element actions if it is disabled. */\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritte.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n @HostListener('click', ['$event'])\n _checkDisabled(event: Event): void {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n /** Emits to the hover stream. */\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritte.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n @HostListener('mouseenter')\n _handleMouseEnter() {\n this._hovered.next(this);\n }\n\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel(): string {\n const element: HTMLElement = this._elementRef.nativeElement;\n const textNodeType = this._document ? this._document.TEXT_NODE : 3;\n let output = '';\n\n if (element.childNodes) {\n const length = element.childNodes.length;\n\n // Go through all the top-level text nodes and extract their text.\n // We skip anything that's not a text node to prevent the text from\n // being thrown off by something like an icon.\n for (let i = 0; i < length; i++) {\n if (element.childNodes[i].nodeType === textNodeType) {\n output += element.childNodes[i].textContent;\n }\n }\n }\n\n return output.trim();\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 {EventEmitter, TemplateRef, InjectionToken} from '@angular/core';\nimport {MenuPositionX, MenuPositionY} from './menu-positions';\nimport {Direction} from '@angular/cdk/bidi';\nimport {FocusOrigin} from '@angular/cdk/a11y';\nimport {MatMenuContent} from './menu-content';\n\n/**\n * Injection token used to provide the parent menu to menu-specific components.\n * @docs-private\n */\nexport const MAT_MENU_PANEL = new InjectionToken<MatMenuPanel>('MAT_MENU_PANEL');\n\n/**\n * Interface for a custom menu panel that can be used with `matMenuTriggerFor`.\n * @docs-private\n */\nexport interface MatMenuPanel<T = any> {\n xPosition: MenuPositionX;\n yPosition: MenuPositionY;\n overlapTrigger: boolean;\n templateRef: TemplateRef<any>;\n close: EventEmitter<void | 'click' | 'keydown' | 'tab'>;\n parentMenu?: MatMenuPanel | undefined;\n direction?: Direction;\n focusFirstItem: (origin?: FocusOrigin) => void;\n resetActiveItem: () => void;\n setPositionClasses?: (x: MenuPositionX, y: MenuPositionY) => void;\n setElevation?(depth: number): void;\n lazyContent?: MatMenuContent;\n backdropClass?: string;\n hasBackdrop?: boolean;\n\n /**\n * @deprecated To be removed.\n * @breaking-change 8.0.0\n */\n addItem?: (item: T) => void;\n\n /**\n * @deprecated To be removed.\n * @breaking-change 8.0.0\n */\n removeItem?: (item: T) => void;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Throws an exception for the case when menu trigger doesn't have a valid mat-menu instance\n * @docs-private\n */\nexport function throwMatMenuMissingError() {\n throw Error(`matMenuTriggerFor: must pass in an mat-menu instance.\n\n Example:\n <mat-menu #menu=\"matMenu\"></mat-menu>\n <button [matMenuTriggerFor]=\"menu\"></button>`);\n}\n\n/**\n * Throws an exception for the case when menu's x-position value isn't valid.\n * In other words, it doesn't match 'before' or 'after'.\n * @docs-private\n */\nexport function throwMatMenuInvalidPositionX() {\n throw Error(`xPosition value must be either 'before' or after'.\n Example: <mat-menu xPosition=\"before\" #menu=\"matMenu\"></mat-menu>`);\n}\n\n/**\n * Throws an exception for the case when menu's y-position value isn't valid.\n * In other words, it doesn't match 'above' or 'below'.\n * @docs-private\n */\nexport function throwMatMenuInvalidPositionY() {\n throw Error(`yPosition value must be either 'above' or below'.\n Example: <mat-menu yPosition=\"above\" #menu=\"matMenu\"></mat-menu>`);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n Directive,\n TemplateRef,\n ComponentFactoryResolver,\n ApplicationRef,\n Injector,\n ViewContainerRef,\n Inject,\n OnDestroy,\n} from '@angular/core';\nimport {TemplatePortal, DomPortalOutlet} from '@angular/cdk/portal';\nimport {DOCUMENT} from '@angular/common';\nimport {Subject} from 'rxjs';\n\n/**\n * Menu content that will be rendered lazily once the menu is opened.\n */\n@Directive({\n selector: 'ng-template[matMenuContent]'\n})\nexport class MatMenuContent implements OnDestroy {\n private _portal: TemplatePortal<any>;\n private _outlet: DomPortalOutlet;\n\n /** Emits when the menu content has been attached. */\n _attached = new Subject<void>();\n\n constructor(\n private _template: TemplateRef<any>,\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _appRef: ApplicationRef,\n private _injector: Injector,\n private _viewContainerRef: ViewContainerRef,\n @Inject(DOCUMENT) private _document: any) {}\n\n /**\n * Attaches the content with a particular context.\n * @docs-private\n */\n attach(context: any = {}) {\n if (!this._portal) {\n this._portal = new TemplatePortal(this._template, this._viewContainerRef);\n }\n\n this.detach();\n\n if (!this._outlet) {\n this._outlet = new DomPortalOutlet(this._document.createElement('div'),\n this._componentFactoryResolver, this._appRef, this._injector);\n }\n\n const element: HTMLElement = this._template.elementRef.nativeElement;\n\n // Because we support opening the same menu from different triggers (which in turn have their\n // own `OverlayRef` panel), we have to re-insert the host element every time, otherwise we\n // risk it staying attached to a pane that's no longer in the DOM.\n element.parentNode!.insertBefore(this._outlet.outletElement, element);\n this._portal.attach(this._outlet, context);\n this._attached.next();\n }\n\n /**\n * Detaches the content.\n * @docs-private\n */\n detach() {\n if (this._portal.isAttached) {\n this._portal.detach();\n }\n }\n\n ngOnDestroy() {\n if (this._outlet) {\n this._outlet.dispose();\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{\n trigger,\n state,\n style,\n animate,\n transition,\n query,\n group,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the mat-menu component.\n * Animation duration and timing values are based on:\n * https://material.io/guidelines/components/menus.html#menus-usage\n * @docs-private\n */\nexport const matMenuAnimations: {\n readonly transformMenu: AnimationTriggerMetadata;\n readonly fadeInItems: AnimationTriggerMetadata;\n} = {\n /**\n * This animation controls the menu panel's entry and exit from the page.\n *\n * When the menu panel is added to the DOM, it scales in and fades in its border.\n *\n * When the menu panel is removed from the DOM, it simply fades out after a brief\n * delay to display the ripple.\n */\n transformMenu: trigger('transformMenu', [\n state('void', style({\n opacity: 0,\n transform: 'scale(0.8)'\n })),\n transition('void => enter', group([\n query('.mat-menu-content, .mat-mdc-menu-content', animate('100ms linear', style({\n opacity: 1\n }))),\n animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({transform: 'scale(1)'})),\n ])),\n transition('* => void', animate('100ms 25ms linear', style({opacity: 0})))\n ]),\n\n\n /**\n * This animation fades in the background color and content of the menu panel\n * after its containing element is scaled in.\n */\n fadeInItems: trigger('fadeInItems', [\n // TODO(crisbeto): this is inside the `transformMenu`\n // now. Remove next time we do breaking changes.\n state('showing', style({opacity: 1})),\n transition('void => *', [\n style({opacity: 0}),\n animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')\n ])\n ])\n};\n\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nexport const fadeInItems = matMenuAnimations.fadeInItems;\n\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nexport const transformMenu = matMenuAnimations.transformMenu;\n"],"names":["observableOf","tslib_1.__extends"],"mappings":"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"}