From 113af9e53bbfa228bbead1743d886ae2b504f22e Mon Sep 17 00:00:00 2001 From: "Manu Mtz.-Almeida" Date: Tue, 27 Mar 2018 12:05:22 +0200 Subject: [PATCH] fix(router): ion-nav --- core/src/components/nav/nav-util.ts | 2 +- core/src/components/nav/nav.tsx | 7 +- .../components/router-outlet/route-outlet.tsx | 4 +- .../components/router/test/basic/index.html | 110 +++++++++++++----- core/src/utils/transition.ts | 10 +- 5 files changed, 90 insertions(+), 43 deletions(-) diff --git a/core/src/components/nav/nav-util.ts b/core/src/components/nav/nav-util.ts index e600cac186..d37946927c 100644 --- a/core/src/components/nav/nav-util.ts +++ b/core/src/components/nav/nav-util.ts @@ -60,7 +60,7 @@ export interface NavOptions { ev?: any; updateURL?: boolean; delegate?: FrameworkDelegate; - viewIsReady?: () => Promise; + viewIsReady?: (enteringEl: HTMLElement) => Promise; } export interface Page extends Function { diff --git a/core/src/components/nav/nav.tsx b/core/src/components/nav/nav.tsx index 047098dc3d..a6a82c5474 100644 --- a/core/src/components/nav/nav.tsx +++ b/core/src/components/nav/nav.tsx @@ -197,9 +197,8 @@ export class NavControllerBase implements NavOutlet { } @Method() - setRouteId(id: string, params: any = {}, direction: number): Promise { + setRouteId(id: string, params: any, direction: number): Promise { const active = this.getActive(); - if (active && active.matches(id, params)) { return Promise.resolve({changed: false, element: active.element}); } @@ -211,12 +210,12 @@ export class NavControllerBase implements NavOutlet { let finish: Promise; const commonOpts: NavOptions = { updateURL: false, - viewIsReady: () => { + viewIsReady: (enteringEl) => { let mark: Function; const p = new Promise(r => mark = r); resolve({ changed: true, - element: this.getActive().element, + element: enteringEl, markVisible: async () => { mark(); await finish; diff --git a/core/src/components/router-outlet/route-outlet.tsx b/core/src/components/router-outlet/route-outlet.tsx index 881fa54133..dfcc142edf 100644 --- a/core/src/components/router-outlet/route-outlet.tsx +++ b/core/src/components/router-outlet/route-outlet.tsx @@ -79,8 +79,8 @@ export class RouterOutlet implements NavOutlet { } @Method() - async setRouteId(id: string, data: any, direction: number): Promise { - const changed = await this.setRoot(id, data, { + async setRouteId(id: string, params: any, direction: number): Promise { + const changed = await this.setRoot(id, params, { duration: direction === 0 ? 0 : undefined, direction: direction === -1 ? NavDirection.Back : NavDirection.Forward, }); diff --git a/core/src/components/router/test/basic/index.html b/core/src/components/router/test/basic/index.html index caba2d7f37..08a894e74a 100644 --- a/core/src/components/router/test/basic/index.html +++ b/core/src/components/router/test/basic/index.html @@ -99,13 +99,80 @@ } } + class TabsPage extends HTMLElement { + connectedCallback() { + this.innerHTML = ` + + + + + + + + + inline tab 4 + + +`; + } + } + + class LoginPage extends HTMLElement { + connectedCallback() { + this.innerHTML = ` + + + Login Page + + + + page one +

Go to page 2

+

Go to page 3 (hola)

+

Go to page 3 (something)

+
`; + } + } + + class LoginConfirmPage extends HTMLElement { + connectedCallback() { + this.innerHTML = ` + + + Login Confirm Page + + + + page one +

Go to page 2

+

Go to page 3 (hola)

+

Go to page 3 (something)

+
`; + } + } + customElements.define('page-one', PageOne); customElements.define('page-two', PageTwo); customElements.define('page-three', PageThree); + customElements.define('tabs-page', TabsPage); customElements.define('tab-one', TabOne); customElements.define('tab-two', TabTwo); customElements.define('tab-three', TabThree); + + customElements.define('login-page', LoginPage); + customElements.define('login-confirm-page', LoginConfirmPage); + @@ -113,42 +180,23 @@ - + + - - - - + + + + + + + + + - - - - - - - - - - - - - inline tab 4 - - - +