Skip to content

Commit e1747b9

Browse files
committed
fix(overlay): onWillDismiss is called as expected
fixes ionic-team#11702
1 parent 7803998 commit e1747b9

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

src/navigation/nav-controller-base.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -775,7 +775,10 @@ export class NavControllerBase extends Ion implements NavController {
775775
if (enteringView || leavingView) {
776776
this._zone.run(() => {
777777
// Here, the order is important. WillLeave must be called before WillEnter.
778-
leavingView && this._willLeave(leavingView, !enteringView);
778+
if (leavingView) {
779+
const willUnload = enteringView ? leavingView.index > enteringView.index : true;
780+
this._willLeave(leavingView, willUnload);
781+
}
779782
enteringView && this._willEnter(enteringView);
780783
});
781784
}
@@ -828,6 +831,8 @@ export class NavControllerBase extends Ion implements NavController {
828831
// ok, cleanup time!! Destroy all of the views that are
829832
// INACTIVE and come after the active view
830833
const activeViewIndex = this._views.indexOf(activeView);
834+
assert(activeViewIndex >= 0, 'active index is invalid');
835+
831836
const views = this._views;
832837
let reorderZIndexes = false;
833838
let view: ViewController;
@@ -1079,7 +1084,8 @@ export class NavControllerBase extends Ion implements NavController {
10791084
view = this.getActive();
10801085
}
10811086
const views = this._views;
1082-
return views[views.indexOf(view) - 1];
1087+
const index = views.indexOf(view);
1088+
return (index >= 0) ? views[index - 1] : null;
10831089
}
10841090

10851091
first(): ViewController {
@@ -1089,7 +1095,8 @@ export class NavControllerBase extends Ion implements NavController {
10891095

10901096
last(): ViewController {
10911097
// returns the last page in this nav controller's stack.
1092-
return this._views[this._views.length - 1];
1098+
const views = this._views;
1099+
return views[views.length - 1];
10931100
}
10941101

10951102
indexOf(view: ViewController): number {
@@ -1101,9 +1108,6 @@ export class NavControllerBase extends Ion implements NavController {
11011108
return this._views.length;
11021109
}
11031110

1104-
/**
1105-
* Return the stack of views in this NavController.
1106-
*/
11071111
getViews(): Array<ViewController> {
11081112
return this._views;
11091113
}

src/navigation/nav-controller.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,6 @@ export abstract class NavController {
576576
*/
577577
abstract length(): number;
578578

579-
580579
/**
581580
* Returns the current stack of views in this nav controller.
582581
* @returns {Array<ViewController>} the stack of view controllers in this nav controller.

0 commit comments

Comments
 (0)