mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-22 13:32:54 +08:00
48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
import { ComponentFactoryResolver, Directive, ElementRef, forwardRef, Inject, Input, NgZone, Optional, Renderer, ViewContainerRef } from '@angular/core';
|
|
|
|
import { App } from '../app/app';
|
|
import { Config } from '../../config/config';
|
|
import { DeepLinker } from '../../navigation/deep-linker';
|
|
import { GestureController } from '../../gestures/gesture-controller';
|
|
import { Keyboard } from '../../util/keyboard';
|
|
import { NavControllerBase } from '../../navigation/nav-controller-base';
|
|
import { TransitionController } from '../../transitions/transition-controller';
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
@Directive({
|
|
selector: '[overlay-portal]',
|
|
})
|
|
export class OverlayPortal extends NavControllerBase {
|
|
constructor(
|
|
@Inject(forwardRef(() => App)) app: App,
|
|
config: Config,
|
|
keyboard: Keyboard,
|
|
elementRef: ElementRef,
|
|
zone: NgZone,
|
|
renderer: Renderer,
|
|
cfr: ComponentFactoryResolver,
|
|
gestureCtrl: GestureController,
|
|
transCtrl: TransitionController,
|
|
@Optional() linker: DeepLinker,
|
|
viewPort: ViewContainerRef
|
|
) {
|
|
super(null, app, config, keyboard, elementRef, zone, renderer, cfr, gestureCtrl, transCtrl, linker);
|
|
this._isPortal = true;
|
|
this._init = true;
|
|
this.setViewport(viewPort);
|
|
|
|
// on every page change make sure the portal has
|
|
// dismissed any views that should be auto dismissed on page change
|
|
app.viewDidLeave.subscribe(this.dismissPageChangeViews.bind(this));
|
|
}
|
|
|
|
@Input('overlay-portal')
|
|
set _overlayPortal(val: number) {
|
|
this._zIndexOffset = (val || 0);
|
|
}
|
|
|
|
}
|
|
|