Skip to content

Commit 70f8a8e

Browse files
manucorporatadamdbradley
authored andcommittedNov 16, 2016
fix(nav): zIndex in overlays
1 parent 7201999 commit 70f8a8e

File tree

5 files changed

+20
-6
lines changed

5 files changed

+20
-6
lines changed
 

‎src/components/action-sheet/test/basic/app-module.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,10 @@ export class E2EPage {
3333
}
3434
},
3535
{
36-
text: 'Play',
36+
text: 'Play (open modal)',
3737
icon: 'arrow-dropright-circle',
3838
handler: () => {
39+
this.result = 'Play (open modal)';
3940
let modal = this.modalCtrl.create(ModalPage);
4041
modal.present();
4142

‎src/components/app/app-root.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export const AppRootToken = new OpaqueToken('USERROOT');
1919
'<div #modalPortal overlay-portal></div>' +
2020
'<div #overlayPortal overlay-portal></div>' +
2121
'<div #loadingPortal class="loading-portal" overlay-portal></div>' +
22-
'<div #toastPortal class="toast-portal" overlay-portal></div>' +
22+
'<div #toastPortal class="toast-portal" [overlay-portal]="10000"></div>' +
2323
'<div class="click-block"></div>'
2424
})
2525
export class IonicApp extends Ion implements OnInit {

‎src/components/nav/overlay-portal.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ComponentFactoryResolver, Directive, ElementRef, forwardRef, Inject, NgZone, Optional, Renderer, ViewContainerRef } from '@angular/core';
1+
import { ComponentFactoryResolver, Directive, ElementRef, forwardRef, Inject, Input, NgZone, Optional, Renderer, ViewContainerRef } from '@angular/core';
22

33
import { App } from '../app/app';
44
import { Config } from '../../config/config';
@@ -12,7 +12,7 @@ import { TransitionController } from '../../transitions/transition-controller';
1212
* @private
1313
*/
1414
@Directive({
15-
selector: '[overlay-portal]'
15+
selector: '[overlay-portal]',
1616
})
1717
export class OverlayPortal extends NavControllerBase {
1818
constructor(
@@ -38,4 +38,10 @@ export class OverlayPortal extends NavControllerBase {
3838
app.viewDidLeave.subscribe(this.dismissPageChangeViews.bind(this));
3939
}
4040

41+
@Input('overlay-portal')
42+
set _overlayPortal(val: number) {
43+
this._zIndexOffset = (val || 0);
44+
}
45+
4146
}
47+

‎src/navigation/nav-controller-base.ts

+1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ export class NavControllerBase extends Ion implements NavController {
3838
_trnsTm: boolean = false;
3939
_viewport: ViewContainerRef;
4040
_views: ViewController[] = [];
41+
_zIndexOffset: number = 0;
4142

4243
viewDidLoad: EventEmitter<any> = new EventEmitter();
4344
viewWillEnter: EventEmitter<any> = new EventEmitter();

‎src/navigation/nav-util.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,15 @@ export function convertToViews(linker: DeepLinker, pages: any[]): ViewController
5151
return views;
5252
}
5353

54+
let portalZindex = 9999;
55+
5456
export function setZIndex(nav: NavControllerBase, enteringView: ViewController, leavingView: ViewController, direction: string, renderer: Renderer) {
5557
if (enteringView) {
58+
if (nav._isPortal) {
59+
enteringView._setZIndex(nav._zIndexOffset + portalZindex, renderer);
60+
portalZindex++;
61+
return;
62+
}
5663

5764
leavingView = leavingView || nav.getPrevious(enteringView);
5865

@@ -65,7 +72,7 @@ export function setZIndex(nav: NavControllerBase, enteringView: ViewController,
6572
}
6673

6774
} else {
68-
enteringView._setZIndex(nav._isPortal ? PORTAL_ZINDEX : INIT_ZINDEX, renderer);
75+
enteringView._setZIndex(INIT_ZINDEX + nav._zIndexOffset, renderer);
6976
}
7077
}
7178
}
@@ -184,7 +191,6 @@ export enum ViewState {
184191
}
185192

186193
export const INIT_ZINDEX = 100;
187-
export const PORTAL_ZINDEX = 9999;
188194

189195
export const DIRECTION_BACK = 'back';
190196
export const DIRECTION_FORWARD = 'forward';

0 commit comments

Comments
 (0)
Please sign in to comment.