diff --git a/src/components/input/input-base.ts b/src/components/input/input-base.ts index f9c80914527..2eb3f1de7fd 100644 --- a/src/components/input/input-base.ts +++ b/src/components/input/input-base.ts @@ -340,7 +340,7 @@ export class InputBase extends Ion { // do not allow any clicks while it's scrolling var scrollDuration = getScrollAssistDuration(scrollData.scrollAmount); this._app.setEnabled(false, scrollDuration); - this._nav && this._nav.setTransitioning(true, scrollDuration); + this._nav && this._nav.setTransitioning(true); // temporarily move the focus to the focus holder so the browser // doesn't freak out while it's trying to get the input in place diff --git a/src/navigation/nav-controller-base.ts b/src/navigation/nav-controller-base.ts index 801749ba45b..a23bd629935 100644 --- a/src/navigation/nav-controller-base.ts +++ b/src/navigation/nav-controller-base.ts @@ -335,15 +335,6 @@ export class NavControllerBase extends Ion implements NavController { _postViewInit(enteringView: ViewController, leavingView: ViewController, ti: TransitionInstruction, resolve: TransitionResolveFn) { assert(leavingView || enteringView, 'Both leavingView and enteringView are null'); - - if (!enteringView && !this._isPortal) { - console.warn(`You can't remove all the pages in the navigation stack. nav.pop() is probably called too many times.`, - this, this.getNativeElement()); - - ti.reject && ti.reject('navigation stack needs at least one root page'); - return false; - } - const opts = ti.opts || {}; const insertViews = ti.insertViews; const removeStart = ti.removeStart; @@ -366,6 +357,16 @@ export class NavControllerBase extends Ion implements NavController { opts.direction = opts.direction || DIRECTION_BACK; } + const finalBalance = this._views.length + (insertViews ? insertViews.length : 0) - (destroyQueue ? destroyQueue.length : 0); + assert(finalBalance >= 0, 'final balance can not be negative'); + if (finalBalance === 0 && !this._isPortal) { + console.warn(`You can't remove all the pages in the navigation stack. nav.pop() is probably called too many times.`, + this, this.getNativeElement()); + + ti.reject && ti.reject('navigation stack needs at least one root page'); + return false; + } + // there are views to insert if (insertViews) { // manually set the new view's id if an id was passed in the options