mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
fix(nav): correctly set zIndex when there's a previous view
This commit is contained in:
@@ -1641,7 +1641,19 @@ export class NavController extends Ion {
|
||||
if (enteringView) {
|
||||
// get the leaving view, which could be in various states
|
||||
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') {
|
||||
// moving back
|
||||
|
||||
@@ -585,7 +585,33 @@ export function run() {
|
||||
});
|
||||
|
||||
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();
|
||||
enteringView.setPageRef({});
|
||||
nav._setZIndex(enteringView, null, 'forward');
|
||||
|
||||
Reference in New Issue
Block a user