mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-23 05:58:26 +08:00
fix(nav): correctly set zIndex when there's a previous view
This commit is contained in:
@ -13,10 +13,6 @@ export class E2EPage {
|
|||||||
title: 'Not logged in',
|
title: 'Not logged in',
|
||||||
message: 'Sign in to continue.',
|
message: 'Sign in to continue.',
|
||||||
buttons: [
|
buttons: [
|
||||||
{
|
|
||||||
text: 'Cancel',
|
|
||||||
role: 'cancel'
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
text: 'Sign in',
|
text: 'Sign in',
|
||||||
handler: () => {
|
handler: () => {
|
||||||
@ -45,7 +41,39 @@ export class E2EPage {
|
|||||||
</ion-content>
|
</ion-content>
|
||||||
`
|
`
|
||||||
})
|
})
|
||||||
class AnotherPage {}
|
class AnotherPage {
|
||||||
|
|
||||||
|
constructor(private nav: NavController) {}
|
||||||
|
|
||||||
|
onPageDidEnter() {
|
||||||
|
this.showConfirm();
|
||||||
|
}
|
||||||
|
|
||||||
|
showConfirm() {
|
||||||
|
const alert = Alert.create({
|
||||||
|
title: `Hi there`,
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: 'Go Back',
|
||||||
|
role: 'cancel',
|
||||||
|
handler: () => {
|
||||||
|
alert.dismiss().then(() => {
|
||||||
|
this.nav.pop();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Stay Here',
|
||||||
|
handler: () => {
|
||||||
|
console.log('Stay Here');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
this.nav.present(alert);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@App({
|
@App({
|
||||||
|
@ -1641,7 +1641,19 @@ export class NavController extends Ion {
|
|||||||
if (enteringView) {
|
if (enteringView) {
|
||||||
// get the leaving view, which could be in various states
|
// get the leaving view, which could be in various states
|
||||||
if (!leavingView || !leavingView.isLoaded()) {
|
if (!leavingView || !leavingView.isLoaded()) {
|
||||||
enteringView.setZIndex(INIT_ZINDEX, this._renderer);
|
// the leavingView is a mocked view, either we're
|
||||||
|
// actively transitioning or it's the initial load
|
||||||
|
|
||||||
|
var previousView = this.getPrevious(enteringView);
|
||||||
|
if (previousView && previousView.isLoaded()) {
|
||||||
|
// we found a better previous view to reference
|
||||||
|
// use this one instead
|
||||||
|
enteringView.setZIndex(previousView.zIndex + 1, this._renderer);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// this is the initial view
|
||||||
|
enteringView.setZIndex(INIT_ZINDEX, this._renderer);
|
||||||
|
}
|
||||||
|
|
||||||
} else if (direction === 'back') {
|
} else if (direction === 'back') {
|
||||||
// moving back
|
// moving back
|
||||||
|
@ -585,7 +585,33 @@ export function run() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('_setZIndex', () => {
|
describe('_setZIndex', () => {
|
||||||
it('should set zIndex 10 on first entering view', () => {
|
|
||||||
|
it('should set zIndex off of the previous view to the entering view is loaded and the leavingView is not loaded', () => {
|
||||||
|
let leavingView = new ViewController();
|
||||||
|
leavingView.zIndex = 100;
|
||||||
|
leavingView._loaded = true;
|
||||||
|
let enteringView = new ViewController();
|
||||||
|
enteringView.setPageRef({});
|
||||||
|
|
||||||
|
nav._views = [leavingView, enteringView];
|
||||||
|
|
||||||
|
nav._setZIndex(enteringView, leavingView, 'forward');
|
||||||
|
expect(enteringView.zIndex).toEqual(101);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should set zIndex 100 when leaving view is not loaded', () => {
|
||||||
|
let leavingView = new ViewController();
|
||||||
|
leavingView._loaded = false;
|
||||||
|
let enteringView = new ViewController();
|
||||||
|
enteringView.setPageRef({});
|
||||||
|
|
||||||
|
nav._views = [leavingView, enteringView];
|
||||||
|
|
||||||
|
nav._setZIndex(enteringView, leavingView, 'forward');
|
||||||
|
expect(enteringView.zIndex).toEqual(100);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should set zIndex 100 on first entering view', () => {
|
||||||
let enteringView = new ViewController();
|
let enteringView = new ViewController();
|
||||||
enteringView.setPageRef({});
|
enteringView.setPageRef({});
|
||||||
nav._setZIndex(enteringView, null, 'forward');
|
nav._setZIndex(enteringView, null, 'forward');
|
||||||
|
Reference in New Issue
Block a user