UNPKG

ngx-mat-slide-panel

Version:
1 lines 36.6 kB
{"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';\n\n// Animation constants (previously from @angular/material/core)\nconst ANIMATION_DURATION_COMPLEX = '375ms';\nconst ANIMATION_DURATION_EXITING = '195ms';\nconst ANIMATION_CURVE_ACCELERATION = 'cubic-bezier(0.4, 0.0, 1, 1)';\nconst ANIMATION_CURVE_DECELERATION = 'cubic-bezier(0.0, 0.0, 0.2, 1)';\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(`${ANIMATION_DURATION_COMPLEX} ${ANIMATION_CURVE_ACCELERATION}`)),\n transition('void => visible',\n animate(`${ANIMATION_DURATION_EXITING} ${ANIMATION_CURVE_DECELERATION}`)),\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(`${ANIMATION_DURATION_COMPLEX} ${ANIMATION_CURVE_ACCELERATION}`)),\n transition('void => visible',\n animate(`${ANIMATION_DURATION_EXITING} ${ANIMATION_CURVE_DECELERATION}`)),\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 DOCUMENT\n} from '@angular/core';\nimport { AnimationEvent } from '@angular/animations';\nimport { CdkPortalOutlet, ComponentPortal, PortalOutlet, TemplatePortal } from '@angular/cdk/portal';\nimport { slideFromLeftAnimations, slideFromRightAnimations } from './mat-slide-panel-animations';\n\nimport { FocusTrap, FocusTrapFactory } 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 standalone: false\n})\nexport class MatSlidePanelContainer implements PortalOutlet, 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: FocusTrapFactory,\n @Optional() @Inject(DOCUMENT) document: any,\n public matSlidePanelConfig: MatSlidePanelConfig) {\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 /** Attach a portal to this outlet. */\n attach<T = any>(portal: any): T {\n this._validatePortalAttached();\n this._setPanelClass();\n this._savePreviouslyFocusedElement();\n return this._portalOutlet.attach(portal);\n }\n\n /** Detach the currently attached portal from this outlet. */\n detach(): void {\n if (this._portalOutlet) {\n this._portalOutlet.detach();\n }\n }\n\n /** Performs cleanup before the outlet is destroyed. */\n dispose(): void {\n if (this._portalOutlet) {\n this._portalOutlet.dispose();\n }\n }\n\n /** Whether this outlet has an attached portal. */\n hasAttached(): boolean {\n return this._portalOutlet.hasAttached();\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 { PortalModule } from '@angular/cdk/portal';\nimport { MatSlidePanelContainer } from './mat-slide-panel-container';\n\n\n@NgModule({\n declarations: [MatSlidePanelContainer],\n imports: [\n OverlayModule,\n PortalModule\n ],\n exports: [MatSlidePanelContainer]\n})\nexport class MatSlidePanelModule { }\n","import {Location} from '@angular/common';\nimport {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.key === '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 {Overlay, OverlayConfig, OverlayRef} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, TemplatePortal} from '@angular/cdk/portal';\nimport {ComponentRef, Inject, Injectable, InjectionToken, Injector, OnDestroy, Optional, SkipSelf, TemplateRef} from '@angular/core';\nimport {Location} from '@angular/common';\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 = Injector.create({\n parent: userInjector || this._injector,\n providers: [\n { provide: MatSlidePanelConfig, useValue: config }\n ]\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>): Injector {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const providers = [\n { provide: MatSlidePanelRef, useValue: bottomSheetRef },\n { provide: MAT_SLIDE_PANEL_DATA, useValue: config.data }\n ];\n\n // If a direction is set in the config, add it to the overlay config\n if (config.direction) {\n // No need to provide Directionality directly, as it's already handled by the overlay\n }\n\n return Injector.create({\n parent: userInjector || this._injector,\n providers\n });\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"],"mappings":"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"}