{"version":3,"file":"ngx-mat-slide-panel.mjs","sources":["../../../projects/mat-slide-panel/src/lib/mat-slide-panel-config.ts","../../../projects/mat-slide-panel/src/lib/mat-slide-panel-animations.ts","../../../projects/mat-slide-panel/src/lib/mat-slide-panel-container.ts","../../../projects/mat-slide-panel/src/lib/mat-slide-panel-container.html","../../../projects/mat-slide-panel/src/lib/mat-slide-panel.module.ts","../../../projects/mat-slide-panel/src/lib/mat-slide-panel-ref.ts","../../../projects/mat-slide-panel/src/lib/mat-slide-panel.ts","../../../projects/mat-slide-panel/src/ngx-mat-slide-panel.ts"],"sourcesContent":["import {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\nimport {InjectionToken, ViewContainerRef} from '@angular/core';\n\nexport const MAT_SLIDE_PANEL_DATA = new InjectionToken<any>('MatSlidePanelData');\n\n\nexport class MatSlidePanelConfig<D = any> {\n  /** The view container to place the overlay for the mat slide panel into. */\n  viewContainerRef?: ViewContainerRef;\n\n  /** Extra CSS classes to be added to the mat slide panel container. */\n  panelClass?: string | string[];\n\n  /** Text layout direction for the mat slide panel. */\n  direction?: Direction;\n\n  /** Data being injected into the child component. */\n  data?: D | null = null;\n\n  /** Whether the mat slide panel has a backdrop. */\n  hasBackdrop?: boolean = true;\n\n  /** Custom class for the backdrop. */\n  backdropClass?: string;\n\n  /** Whether the user can use escape or clicking outside to close the mat slide panel. */\n  disableClose?: boolean = false;\n\n  /** Aria label to assign to the mat slide panel element. */\n  ariaLabel?: string | null = null;\n\n  /**\n   * Whether the mat slide panel should close when the user goes backwards/forwards in history.\n   * Note that this usually doesn't include clicking on links (unless the user is using\n   * the `HashLocationStrategy`).\n   */\n  closeOnNavigation?: boolean = true;\n\n  // Note that this is disabled by default, because while the a11y recommendations are to focus\n  // the first focusable element, doing so prevents screen readers from reading out the\n  // rest of the mat slide panel content.\n  /** Whether the mat slide panel should focus the first focusable element on open. */\n  autoFocus?: boolean = false;\n\n  /**\n   * Whether the mat slide panel should restore focus to the\n   * previously-focused element, after it's closed.\n   */\n  restoreFocus?: boolean = true;\n\n  /** Scroll strategy to be used for the mat slide panel. */\n  scrollStrategy?: ScrollStrategy;\n\n\n  /** Slide from which side of viewport. */\n  slideFrom?: 'left' | 'right' = 'right';\n}\n","import {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n  AnimationTriggerMetadata,\n} from '@angular/animations';\nimport {AnimationCurves, AnimationDurations} from '@angular/material/core';\n\n/** Animations used by the Material bottom sheet. */\nexport const slideFromLeftAnimations: {\n  readonly slideFromLeftAnimationsState: AnimationTriggerMetadata;\n} = {\n  /** Animation that shows and hides a bottom sheet. */\n  slideFromLeftAnimationsState: trigger('left', [\n    state('void, hidden', style({transform: 'translateX(-100%)'})),\n    state('visible', style({transform: 'translateY(0%)'})),\n    transition('visible => void, visible => hidden',\n      animate(`${AnimationDurations.COMPLEX} ${AnimationCurves.ACCELERATION_CURVE}`)),\n    transition('void => visible',\n      animate(`${AnimationDurations.EXITING} ${AnimationCurves.DECELERATION_CURVE}`)),\n  ])\n};\n\n\n/** Animations used by the Material bottom sheet. */\nexport const slideFromRightAnimations: {\n  readonly slideFromLeftAnimationsState: AnimationTriggerMetadata;\n} = {\n  /** Animation that shows and hides a bottom sheet. */\n  slideFromLeftAnimationsState: trigger('right', [\n    state('void, hidden', style({transform: 'translateX(100%)'})),\n    state('visible', style({transform: 'translateY(0%)'})),\n    transition('visible => void, visible => hidden',\n      animate(`${AnimationDurations.COMPLEX} ${AnimationCurves.ACCELERATION_CURVE}`)),\n    transition('void => visible',\n      animate(`${AnimationDurations.EXITING} ${AnimationCurves.DECELERATION_CURVE}`)),\n  ])\n};\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ElementRef,\n  EmbeddedViewRef,\n  EventEmitter,\n  Inject,\n  OnDestroy,\n  Optional,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { AnimationEvent } from '@angular/animations';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal, } from '@angular/cdk/portal';\nimport { slideFromLeftAnimations, slideFromRightAnimations } from './mat-slide-panel-animations';\nimport { DOCUMENT } from '@angular/common';\nimport { ConfigurableFocusTrapFactory, FocusTrap } from '@angular/cdk/a11y';\nimport { MatSlidePanelConfig } from './mat-slide-panel-config';\n\n@Component({\n  selector: 'mat-slide-panel-container',\n  templateUrl: 'mat-slide-panel-container.html',\n  styleUrls: ['mat-slide-panel-container.scss'],\n  changeDetection: ChangeDetectionStrategy.Default,\n  encapsulation: ViewEncapsulation.None,\n  animations: [ slideFromLeftAnimations.slideFromLeftAnimationsState, slideFromRightAnimations.slideFromLeftAnimationsState],\n  host: {\n    'class': 'mat-slide-panel-container',\n    'tabindex': '-1',\n    'role': 'dialog',\n    'aria-modal': 'true',\n    '[attr.aria-label]': 'matSlidePanelConfig?.ariaLabel',\n    '[@right]': '{value: matSlidePanelConfig.slideFrom === \"right\" ? _animationState : null}',\n    '(@right.start)': '_onAnimationStart($event)',\n    '(@right.done)': '_onAnimationDone($event)',\n    '[@left]': '{value: matSlidePanelConfig.slideFrom === \"left\" ? _animationState : null}',\n    '(@left.start)': '_onAnimationStart($event)',\n    '(@left.done)': '_onAnimationDone($event)',\n  },\n})\nexport class MatSlidePanelContainer extends BasePortalOutlet implements OnDestroy {\n  /** The portal outlet inside of this container into which the content will be loaded. */\n  @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\n\n  _animationState: 'void' | 'visible' | 'hidden' = 'void';\n\n  /** Emits whenever the state of the animation changes. */\n  _animationStateChanged = new EventEmitter<AnimationEvent>();\n\n  private _focusTrap: FocusTrap;\n\n  private _elementFocusedBeforeOpened: HTMLElement | null = null;\n\n  /** Server-side rendering-compatible reference to the global document object. */\n  private _document: Document;\n\n  /** Whether the component has been destroyed. */\n  private _destroyed: boolean;\n\n  constructor(\n    private _elementRef: ElementRef<HTMLElement>,\n    private _changeDetectorRef: ChangeDetectorRef,\n    private _focusTrapFactory: ConfigurableFocusTrapFactory,\n    @Optional() @Inject(DOCUMENT) document: any,\n    public matSlidePanelConfig: MatSlidePanelConfig) {\n    super();\n\n    this._document = document;\n    // this._animationState = this.matSlidePanelConfig.slideFrom;\n  }\n\n  /** Attach a component portal as content to this bottom sheet container. */\n  attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n    this._validatePortalAttached();\n    this._setPanelClass();\n    this._savePreviouslyFocusedElement();\n    return this._portalOutlet.attachComponentPortal(portal);\n  }\n\n  /** Attach a template portal as content to this bottom sheet container. */\n  attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n    this._validatePortalAttached();\n    this._setPanelClass();\n    this._savePreviouslyFocusedElement();\n    return this._portalOutlet.attachTemplatePortal(portal);\n  }\n\n  attachPortal = <C, T = any, R = any>(portal: ComponentPortal<C> | TemplatePortal<T> | any) => {\n    this._validatePortalAttached();\n    this._setPanelClass();\n    this._savePreviouslyFocusedElement();\n    return this._portalOutlet.attach(portal);\n  }\n\n  enter(): void {\n    if (!this._destroyed) {\n      this._animationState = 'visible';\n      this._changeDetectorRef.detectChanges();\n    }\n  }\n\n  exit(): void {\n    if (!this._destroyed) {\n      // this._animationState = this.matSlidePanelConfig.slideFrom;\n      this._animationState = 'hidden';\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  ngOnDestroy() {\n    this._destroyed = true;\n  }\n\n  _onAnimationDone(event: AnimationEvent) {\n    // if (event.toState === `hidden-${this.matSlidePanelConfig.slideFrom}`) {\n    if (event.toState === 'hidden') {\n      this._restoreFocus();\n    } else if (event.toState === 'visible') {\n      this._trapFocus();\n    }\n\n    this._animationStateChanged.emit(event);\n  }\n\n  _onAnimationStart(event: AnimationEvent) {\n    this._animationStateChanged.emit(event);\n  }\n\n  private _validatePortalAttached() {\n    if (this._portalOutlet.hasAttached()) {\n      throw Error('Attempting to attach slide panel content after content is already attached');\n    }\n  }\n\n  private _setPanelClass() {\n    const element: HTMLElement = this._elementRef.nativeElement;\n    const panelClass = this.matSlidePanelConfig.panelClass;\n\n    if (Array.isArray(panelClass)) {\n      // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n      panelClass.forEach(cssClass => element.classList.add(cssClass));\n    } else if (panelClass) {\n      element.classList.add(panelClass);\n    }\n  }\n\n  /** Moves the focus inside the focus trap. */\n  private _trapFocus() {\n    const element = this._elementRef.nativeElement;\n\n    if (!this._focusTrap) {\n      this._focusTrap = this._focusTrapFactory.create(element);\n    }\n\n    if (this.matSlidePanelConfig.autoFocus) {\n      this._focusTrap.focusInitialElementWhenReady();\n    } else {\n      const activeElement = this._document.activeElement;\n\n      if (activeElement !== element && !element.contains(activeElement)) {\n        element.focus();\n      }\n    }\n  }\n\n  private _restoreFocus() {\n    const toFocus = this._elementFocusedBeforeOpened;\n\n    // We need the extra check, because IE can set the `activeElement` to null in some cases.\n    if (this.matSlidePanelConfig.restoreFocus && toFocus && typeof toFocus.focus === 'function') {\n      const activeElement = this._document.activeElement;\n      const element = this._elementRef.nativeElement;\n\n      if (!activeElement || activeElement === this._document.body || activeElement === element ||\n        element.contains(activeElement)) {\n        toFocus.focus();\n      }\n    }\n\n    if (this._focusTrap) {\n      this._focusTrap.destroy();\n    }\n  }\n\n  private _savePreviouslyFocusedElement() {\n    this._elementFocusedBeforeOpened = this._document.activeElement as HTMLElement;\n\n    // The `focus` method isn't available during server-side rendering.\n    if (this._elementRef.nativeElement.focus) {\n      Promise.resolve().then(() => this._elementRef.nativeElement.focus());\n    }\n  }\n}\n","<ng-template cdkPortalOutlet></ng-template>\n","import { NgModule } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatCommonModule } from '@angular/material/core';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatSlidePanelContainer } from './mat-slide-panel-container';\n\n\n@NgModule({\n  declarations: [MatSlidePanelContainer],\n  imports: [\n    OverlayModule,\n    MatCommonModule,\n    PortalModule\n  ],\n  exports: [MatSlidePanelContainer,  MatCommonModule]\n})\nexport class MatSlidePanelModule { }\n","import {Location} from '@angular/common';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {MatSlidePanelContainer} from './mat-slide-panel-container';\n\n\nexport class MatSlidePanelRef<T = any, R = any> {\n  instance: T;\n\n  containerInstance: MatSlidePanelContainer;\n\n  disableClose: boolean | undefined;\n\n  private readonly _afterDismissed = new Subject<R | undefined>();\n\n  private readonly _afterOpened = new Subject<void>();\n\n  private _result: R | undefined;\n\n  private _closeFallbackTimeout: number | any;\n\n  constructor(\n    containerInstance: MatSlidePanelContainer,\n    private _overlayRef: OverlayRef,\n    _location?: Location) {\n    this.containerInstance = containerInstance;\n    this.disableClose = containerInstance.matSlidePanelConfig.disableClose;\n\n    containerInstance._animationStateChanged.pipe(\n      filter(event => event.phaseName === 'done' && event.toState === 'visible'),\n      take(1)\n    )\n    .subscribe(() => {\n      this._afterOpened.next();\n      this._afterOpened.complete();\n    });\n\n    containerInstance._animationStateChanged\n        .pipe(filter(event => event.phaseName === 'done' && event.toState === 'hidden'), take(1))\n        .subscribe(() => {\n          clearTimeout(this._closeFallbackTimeout);\n          _overlayRef.dispose();\n        });\n\n    _overlayRef.detachments().pipe(take(1)).subscribe(() => {\n      this._afterDismissed.next(this._result);\n      this._afterDismissed.complete();\n    });\n\n    merge(\n      _overlayRef.backdropClick(),\n      _overlayRef.keydownEvents().pipe(filter(event => event.keyCode === ESCAPE))\n    ).subscribe(event => {\n      if (!this.disableClose &&\n        (event.type !== 'keydown' || !hasModifierKey(event as KeyboardEvent))) {\n        event.preventDefault();\n        this.dismiss();\n      }\n    });\n  }\n\n  dismiss(result?: R): void {\n    if (!this._afterDismissed.closed) {\n      this.containerInstance._animationStateChanged.pipe(\n        filter(event => event.phaseName === 'start'),\n        take(1)\n      ).subscribe(event => {\n        this._closeFallbackTimeout = setTimeout(() => {\n          this._overlayRef.dispose();\n        }, event.totalTime + 100);\n\n        this._overlayRef.detachBackdrop();\n      });\n\n      this._result = result;\n      this.containerInstance.exit();\n    }\n  }\n\n  afterDismissed(): Observable<R | undefined> {\n    return this._afterDismissed.asObservable();\n  }\n\n  afterOpened(): Observable<void> {\n    return this._afterOpened.asObservable();\n  }\n\n  backdropClick(): Observable<MouseEvent> {\n    return this._overlayRef.backdropClick();\n  }\n\n  keydownEvents(): Observable<KeyboardEvent> {\n    return this._overlayRef.keydownEvents();\n  }\n}\n","import { Directionality } from '@angular/cdk/bidi';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType, PortalInjector, TemplatePortal } from '@angular/cdk/portal';\nimport { ComponentRef, Inject, Injectable, InjectionToken, Injector, OnDestroy, Optional, SkipSelf, TemplateRef, } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { of as observableOf } from 'rxjs';\nimport { MAT_SLIDE_PANEL_DATA, MatSlidePanelConfig } from './mat-slide-panel-config';\nimport { MatSlidePanelContainer } from './mat-slide-panel-container';\nimport { MatSlidePanelModule } from './mat-slide-panel.module';\nimport { MatSlidePanelRef } from './mat-slide-panel-ref';\n\n\nexport const MAT_SLIDE_PANEL_DEFAULT_OPTIONS =\n  new InjectionToken<MatSlidePanelConfig>('mat-Slide-panel-default-options');\n\n\n@Injectable({providedIn: MatSlidePanelModule})\nexport class MatSlidePanel implements OnDestroy {\n  private _matSlidePanelAtThisLevel: MatSlidePanelRef<any> | null = null;\n\n  /** Reference to the currently opened mat slide panel. */\n  get _openedMatSlidePanelRef(): MatSlidePanelRef<any> | null {\n    const parent = this._parentMatSlidePanel;\n    return parent ? parent._openedMatSlidePanelRef : this._matSlidePanelAtThisLevel;\n  }\n\n  set _openedMatSlidePanelRef(value: MatSlidePanelRef<any> | null) {\n    if (this._parentMatSlidePanel) {\n      this._parentMatSlidePanel._openedMatSlidePanelRef = value;\n    } else {\n      this._matSlidePanelAtThisLevel = value;\n    }\n  }\n\n  constructor(\n    private _overlay: Overlay,\n    private _injector: Injector,\n    @Optional() @SkipSelf() private _parentMatSlidePanel: MatSlidePanel,\n    @Optional() private _location?: Location,\n    @Optional() @Inject(MAT_SLIDE_PANEL_DEFAULT_OPTIONS)\n    private _defaultOptions?: MatSlidePanelConfig) {}\n\n  open<T, D = any, R = any>(component: ComponentType<T>,\n                            config?: MatSlidePanelConfig<D>): MatSlidePanelRef<T, R>;\n  open<T, D = any, R = any>(template: TemplateRef<T>,\n                            config?: MatSlidePanelConfig<D>): MatSlidePanelRef<T, R>;\n\n  open<T, D = any, R = any>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n                            config?: MatSlidePanelConfig<D>): MatSlidePanelRef<T, R> {\n\n    const _config =\n      _applyConfigDefaults(this._defaultOptions || new MatSlidePanelConfig(), config);\n    const overlayRef = this._createOverlay(_config);\n    const container = this._attachContainer(overlayRef, _config);\n    const ref = new MatSlidePanelRef<T, R>(container, overlayRef, this._location);\n\n    if (componentOrTemplateRef instanceof TemplateRef) {\n      container.attachTemplatePortal(new TemplatePortal<T>(componentOrTemplateRef, null!, {\n        $implicit: _config.data,\n        bottomSheetRef: ref\n      } as any));\n    } else {\n      const portal = new ComponentPortal(componentOrTemplateRef, undefined,\n        this._createInjector(_config, ref));\n      const contentRef = container.attachComponentPortal(portal);\n      ref.instance = contentRef.instance;\n    }\n\n    // When the mat slide panel is dismissed, clear the reference to it.\n    ref.afterDismissed().subscribe(() => {\n      // Clear the mat slide panel ref if it hasn't already been replaced by a newer one.\n      if (this._openedMatSlidePanelRef == ref) {\n        this._openedMatSlidePanelRef = null;\n      }\n    });\n\n    if (this._openedMatSlidePanelRef) {\n      // If a mat slide panel is already in view, dismiss it and enter the\n      // new mat slide panel after exit animation is complete.\n      this._openedMatSlidePanelRef.afterDismissed().subscribe(() => ref.containerInstance.enter());\n      this._openedMatSlidePanelRef.dismiss();\n    } else {\n      // If no mat slide panel is in view, enter the new mat slide panel.\n      ref.containerInstance.enter();\n    }\n\n    this._openedMatSlidePanelRef = ref;\n\n    return ref;\n  }\n\n  /**\n   * Dismisses the currently-visible mat slide panel.\n   */\n  dismiss(): void {\n    if (this._openedMatSlidePanelRef) {\n      this._openedMatSlidePanelRef.dismiss();\n    }\n  }\n\n  ngOnDestroy() {\n    if (this._matSlidePanelAtThisLevel) {\n      this._matSlidePanelAtThisLevel.dismiss();\n    }\n  }\n\n  /**\n   * Attaches the mat slide panel container component to the overlay.\n   */\n  private _attachContainer(overlayRef: OverlayRef,\n                           config: MatSlidePanelConfig): MatSlidePanelContainer {\n\n    const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n    const injector = new PortalInjector(userInjector || this._injector, new WeakMap([\n      [MatSlidePanelConfig, config]\n    ]));\n\n    const containerPortal =\n      new ComponentPortal(MatSlidePanelContainer, config.viewContainerRef, injector);\n    const containerRef: ComponentRef<MatSlidePanelContainer> = overlayRef.attach(containerPortal);\n    return containerRef.instance;\n  }\n\n  /**\n   * Creates a new overlay and places it in the correct location.\n   * @param config The user-specified mat slide panel config.\n   */\n  private _createOverlay(config: MatSlidePanelConfig): OverlayRef {\n    const overlayConfig = new OverlayConfig({\n      direction: config.direction,\n      hasBackdrop: config.hasBackdrop,\n      disposeOnNavigation: config.closeOnNavigation,\n      maxWidth: '100%',\n      scrollStrategy: config.scrollStrategy || this._overlay.scrollStrategies.block(),\n      positionStrategy: config.slideFrom === 'right' ?\n        this._overlay.position().global().centerHorizontally().right('0')\n        : this._overlay.position().global().centerHorizontally().left('0')\n    });\n\n    if (config.backdropClass) {\n      overlayConfig.backdropClass = config.backdropClass;\n    }\n\n    return this._overlay.create(overlayConfig);\n  }\n\n  /**\n   * Creates an injector to be used inside of a mat slide panel component.\n   * @param config Config that was used to create the mat slide panel.\n   * @param bottomSheetRef Reference to the mat slide panel.\n   */\n  private _createInjector<T>(config: MatSlidePanelConfig,\n                             bottomSheetRef: MatSlidePanelRef<T>): PortalInjector {\n\n    const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n    const injectionTokens = new WeakMap<any, any>([\n      [MatSlidePanelRef, bottomSheetRef],\n      [MAT_SLIDE_PANEL_DATA, config.data]\n    ]);\n\n    if (config.direction &&\n      (!userInjector || !userInjector.get<Directionality | null>(Directionality, null))) {\n      injectionTokens.set(Directionality, {\n        value: config.direction,\n        change: observableOf()\n      });\n    }\n\n    return new PortalInjector(userInjector || this._injector, injectionTokens);\n  }\n}\n\n/**\n * Applies default options to the mat slide panel config.\n * @param defaults Object containing the default values to which to fall back.\n * @param config The configuration to which the defaults will be applied.\n * @returns The new configuration object with defaults applied.\n */\nfunction _applyConfigDefaults(defaults: MatSlidePanelConfig,\n                              config?: MatSlidePanelConfig): MatSlidePanelConfig {\n  return {...defaults, ...config};\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.MatSlidePanelConfig","observableOf","i1"],"mappings":"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"}