diff --git a/src/components/nav/test/toggle-basic/app/app.component.ts b/src/components/nav/test/toggle-basic/app/app.component.ts new file mode 100644 index 00000000000..e3359c5486f --- /dev/null +++ b/src/components/nav/test/toggle-basic/app/app.component.ts @@ -0,0 +1,38 @@ +import { Component, ViewChild } from '@angular/core'; +import { NavController } from '../../../../..'; +@Component({ + template: ` + + + + Menu + + + + + + + + + + + + ` +}) +export class AppComponent { + root = 'RootPage'; + + @ViewChild('content') nav: NavController; + + goToTabsOne() { + this.nav.setRoot('FirstPage'); + } + + goToTabsTwo() { + this.nav.setRoot('FourthPage'); + } +} diff --git a/src/components/nav/test/toggle-basic/app/app.module.ts b/src/components/nav/test/toggle-basic/app/app.module.ts new file mode 100644 index 00000000000..55310fa2157 --- /dev/null +++ b/src/components/nav/test/toggle-basic/app/app.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { IonicApp, IonicModule } from '../../../../..'; + +import { AppComponent } from './app.component'; + +@NgModule({ + declarations: [ + AppComponent + ], + imports: [ + BrowserModule, + IonicModule.forRoot(AppComponent, { swipeBackEnabled: true, preloadModules: true }), + ], + bootstrap: [IonicApp] +}) +export class AppModule {} diff --git a/src/components/nav/test/toggle-basic/app/main.ts b/src/components/nav/test/toggle-basic/app/main.ts new file mode 100644 index 00000000000..6af7a5b2ae8 --- /dev/null +++ b/src/components/nav/test/toggle-basic/app/main.ts @@ -0,0 +1,5 @@ +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app.module'; + +platformBrowserDynamic().bootstrapModule(AppModule); diff --git a/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.html b/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.html new file mode 100644 index 00000000000..aca548b23e2 --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.html @@ -0,0 +1,18 @@ + + + + Fifth Page + + + + Fifth Page +
+ User ID: {{userId}} +
+
+ Name {{name}} +
+ +
\ No newline at end of file diff --git a/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.module.ts b/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.module.ts new file mode 100644 index 00000000000..4628c136b9c --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../..'; +import { FifthPage } from './fifth-page'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(FifthPage) + ], + declarations: [ + FifthPage + ] +}) +export class FifthPageModule { } diff --git a/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.ts b/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.ts new file mode 100644 index 00000000000..1cb6fa4d52d --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.ts @@ -0,0 +1,22 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from '../../../../../..'; + +@IonicPage({ + segment: 'fifthPage/user/:userId/name/:name' +}) +@Component({ + templateUrl: 'fifth-page.html' +}) +export class FifthPage { + + userId: string; + name: string; + constructor(public nav: NavController, public params: NavParams) { + this.userId = this.params.data.userId; + this.name = this.params.data.name; + } + + goToNextPage() { + this.nav.push('SixthPage', { paramOne: 'Kelly Kapore', paramTwo: 'Creed Bratton'}); + } +} diff --git a/src/components/nav/test/toggle-basic/pages/first-page/first-page.html b/src/components/nav/test/toggle-basic/pages/first-page/first-page.html new file mode 100644 index 00000000000..b9e1e121932 --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/first-page/first-page.html @@ -0,0 +1,14 @@ + + + + First Page + + + + First Page +
+ +
+
\ No newline at end of file diff --git a/src/components/nav/test/toggle-basic/pages/first-page/first-page.module.ts b/src/components/nav/test/toggle-basic/pages/first-page/first-page.module.ts new file mode 100644 index 00000000000..c088e9f2d4c --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/first-page/first-page.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../..'; +import { FirstPage } from './first-page'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(FirstPage) + ], + declarations: [ + FirstPage + ] +}) +export class FirstPageModule { } diff --git a/src/components/nav/test/toggle-basic/pages/first-page/first-page.ts b/src/components/nav/test/toggle-basic/pages/first-page/first-page.ts new file mode 100644 index 00000000000..8a4f43f9484 --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/first-page/first-page.ts @@ -0,0 +1,15 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, } from '../../../../../..'; + +@IonicPage() +@Component({ + templateUrl: 'first-page.html' +}) +export class FirstPage { + constructor(public nav: NavController) { + } + + clickMe() { + this.nav.push('SecondPage', { userId: '123', name: 'Phyllis Vance, Vance Refridgeration'}); + } +} diff --git a/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.html b/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.html new file mode 100644 index 00000000000..db07985cc03 --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.html @@ -0,0 +1,14 @@ + + + + Fourth Page + + + + Fourth Page +
+ +
+
\ No newline at end of file diff --git a/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.module.ts b/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.module.ts new file mode 100644 index 00000000000..bd1e03fcae8 --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../..'; +import { FourthPage } from './fourth-page'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(FourthPage) + ], + declarations: [ + FourthPage + ] +}) +export class FourthPageModule { } diff --git a/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.ts b/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.ts new file mode 100644 index 00000000000..1bcdd5990c2 --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.ts @@ -0,0 +1,15 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, } from '../../../../../..'; + +@IonicPage() +@Component({ + templateUrl: 'fourth-page.html' +}) +export class FourthPage { + constructor(public nav: NavController) { + } + + clickMe() { + this.nav.push('FifthPage', { userId: '456', name: 'Ryan Howard'}); + } +} diff --git a/src/components/nav/test/toggle-basic/pages/root-page/root-page.module.ts b/src/components/nav/test/toggle-basic/pages/root-page/root-page.module.ts new file mode 100644 index 00000000000..3e27b172874 --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/root-page/root-page.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../..'; +import { RootPage } from './root-page'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(RootPage) + ], + declarations: [ + RootPage + ] +}) +export class RootPageModule { } diff --git a/src/components/nav/test/toggle-basic/pages/root-page/root-page.ts b/src/components/nav/test/toggle-basic/pages/root-page/root-page.ts new file mode 100644 index 00000000000..7621e1a693a --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/root-page/root-page.ts @@ -0,0 +1,25 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, } from '../../../../../..'; + +@IonicPage() +@Component({ + template: ` + + + + Root Page + + + + Root Page + + + ` +}) +export class RootPage { + + constructor(public nav: NavController) { + } +} diff --git a/src/components/nav/test/toggle-basic/pages/second-page/second-page.html b/src/components/nav/test/toggle-basic/pages/second-page/second-page.html new file mode 100644 index 00000000000..482598d1ef3 --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/second-page/second-page.html @@ -0,0 +1,17 @@ + + + + Second Page + + + +
+ User ID: {{userId}} +
+
+ Name {{name}} +
+ +
\ No newline at end of file diff --git a/src/components/nav/test/toggle-basic/pages/second-page/second-page.module.ts b/src/components/nav/test/toggle-basic/pages/second-page/second-page.module.ts new file mode 100644 index 00000000000..08053b890ac --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/second-page/second-page.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../..'; +import { SecondPage } from './second-page'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(SecondPage) + ], + declarations: [ + SecondPage + ] +}) +export class SecondPageModule { } diff --git a/src/components/nav/test/toggle-basic/pages/second-page/second-page.ts b/src/components/nav/test/toggle-basic/pages/second-page/second-page.ts new file mode 100644 index 00000000000..a4a62e3effd --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/second-page/second-page.ts @@ -0,0 +1,22 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from '../../../../../..'; + +@IonicPage({ + segment: 'secondPage/user/:userId/name/:name' +}) +@Component({ + templateUrl: 'second-page.html' +}) +export class SecondPage { + + userId: string; + name: string; + constructor(public nav: NavController, public params: NavParams) { + this.userId = this.params.data.userId; + this.name = this.params.data.name; + } + + goToNextPage() { + this.nav.push('ThirdPage', { paramOne: 'Tobey', paramTwo: 'Kevin'}); + } +} diff --git a/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.html b/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.html new file mode 100644 index 00000000000..6c9f9785917 --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.html @@ -0,0 +1,17 @@ + + + + Sixth Page + + + +

Sixth Page

+
+ Param One: {{paramOne}} +
+
+ Param Two: {{paramTwo}} +
+
\ No newline at end of file diff --git a/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.module.ts b/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.module.ts new file mode 100644 index 00000000000..b80bb576e53 --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../..'; +import { SixthPage } from './sixth-page'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(SixthPage) + ], + declarations: [ + SixthPage + ] +}) +export class SixthPageModule { } diff --git a/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.ts b/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.ts new file mode 100644 index 00000000000..c97d3ee006e --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.ts @@ -0,0 +1,19 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from '../../../../../..'; + +@IonicPage({ + segment: 'sixthPage/paramOne/:paramOne/paramTwo/:paramTwo' +}) +@Component({ + templateUrl: 'sixth-page.html' +}) +export class SixthPage { + + paramOne: string; + paramTwo: string; + + constructor(public nav: NavController, public params: NavParams) { + this.paramOne = this.params.data.paramOne; + this.paramTwo = this.params.data.paramTwo; + } +} diff --git a/src/components/nav/test/toggle-basic/pages/third-page/third-page.html b/src/components/nav/test/toggle-basic/pages/third-page/third-page.html new file mode 100644 index 00000000000..11059bf41fb --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/third-page/third-page.html @@ -0,0 +1,17 @@ + + + + Third Page + + + +

Third Page

+
+ Param One: {{paramOne}} +
+
+ Param Two: {{paramTwo}} +
+
\ No newline at end of file diff --git a/src/components/nav/test/toggle-basic/pages/third-page/third-page.module.ts b/src/components/nav/test/toggle-basic/pages/third-page/third-page.module.ts new file mode 100644 index 00000000000..3ae80405cc0 --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/third-page/third-page.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../..'; +import { ThirdPage } from './third-page'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(ThirdPage) + ], + declarations: [ + ThirdPage + ] +}) +export class ThirdPageModule { } diff --git a/src/components/nav/test/toggle-basic/pages/third-page/third-page.ts b/src/components/nav/test/toggle-basic/pages/third-page/third-page.ts new file mode 100644 index 00000000000..119056c417f --- /dev/null +++ b/src/components/nav/test/toggle-basic/pages/third-page/third-page.ts @@ -0,0 +1,19 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from '../../../../../..'; + +@IonicPage({ + segment: 'thirdPage/paramOne/:paramOne/paramTwo/:paramTwo' +}) +@Component({ + templateUrl: 'third-page.html' +}) +export class ThirdPage { + + paramOne: string; + paramTwo: string; + + constructor(public nav: NavController, public params: NavParams) { + this.paramOne = this.params.data.paramOne; + this.paramTwo = this.params.data.paramTwo; + } +} diff --git a/src/components/nav/test/toggle-tabs/app/app.component.ts b/src/components/nav/test/toggle-tabs/app/app.component.ts new file mode 100644 index 00000000000..32aa70ca599 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/app/app.component.ts @@ -0,0 +1,38 @@ +import { Component, ViewChild } from '@angular/core'; +import { NavController } from '../../../../..'; +@Component({ + template: ` + + + + Menu + + + + + + + + + + + + ` +}) +export class AppComponent { + root = 'RootPage'; + + @ViewChild('content') nav: NavController; + + goToTabsOne() { + this.nav.setRoot('TabsOnePage'); + } + + goToTabsTwo() { + this.nav.setRoot('TabsTwoPage'); + } +} diff --git a/src/components/nav/test/toggle-tabs/app/app.module.ts b/src/components/nav/test/toggle-tabs/app/app.module.ts new file mode 100644 index 00000000000..55310fa2157 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/app/app.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { IonicApp, IonicModule } from '../../../../..'; + +import { AppComponent } from './app.component'; + +@NgModule({ + declarations: [ + AppComponent + ], + imports: [ + BrowserModule, + IonicModule.forRoot(AppComponent, { swipeBackEnabled: true, preloadModules: true }), + ], + bootstrap: [IonicApp] +}) +export class AppModule {} diff --git a/src/components/nav/test/toggle-tabs/app/main.ts b/src/components/nav/test/toggle-tabs/app/main.ts new file mode 100644 index 00000000000..6af7a5b2ae8 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/app/main.ts @@ -0,0 +1,5 @@ +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app.module'; + +platformBrowserDynamic().bootstrapModule(AppModule); diff --git a/src/components/nav/test/toggle-tabs/pages/root-page/root-page.module.ts b/src/components/nav/test/toggle-tabs/pages/root-page/root-page.module.ts new file mode 100644 index 00000000000..3e27b172874 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/root-page/root-page.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../..'; +import { RootPage } from './root-page'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(RootPage) + ], + declarations: [ + RootPage + ] +}) +export class RootPageModule { } diff --git a/src/components/nav/test/toggle-tabs/pages/root-page/root-page.ts b/src/components/nav/test/toggle-tabs/pages/root-page/root-page.ts new file mode 100644 index 00000000000..7621e1a693a --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/root-page/root-page.ts @@ -0,0 +1,25 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, } from '../../../../../..'; + +@IonicPage() +@Component({ + template: ` + + + + Root Page + + + + Root Page + + + ` +}) +export class RootPage { + + constructor(public nav: NavController) { + } +} diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-one/tab-one-page-one.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-one/tab-one-page-one.module.ts new file mode 100644 index 00000000000..4559ff52d8a --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-one/tab-one-page-one.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../../..'; +import { TabsOneTabOnePageOne } from './tab-one-page-one'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(TabsOneTabOnePageOne) + ], + declarations: [ + TabsOneTabOnePageOne + ] +}) +export class TabsOneTabOnePageOneModule { } diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-one/tab-one-page-one.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-one/tab-one-page-one.ts new file mode 100644 index 00000000000..8a898300676 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-one/tab-one-page-one.ts @@ -0,0 +1,30 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, } from '../../../../../../..'; + +@IonicPage({ + segment: 'TabsOneTabOnePageOne' +}) +@Component({ + template: ` + + + + Tabs 1 Tab 1 Page 1 + + + + Tabs 1 Tab 1 Page 1 + + + ` +}) +export class TabsOneTabOnePageOne { + constructor(public nav: NavController) { + } + + nextPage() { + this.nav.push('TabsOneTabOnePageTwo', { userId: '123', name: 'Andy Bernard'}); + } +} diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-three/tab-one-page-three.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-three/tab-one-page-three.module.ts new file mode 100644 index 00000000000..72b667bef42 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-three/tab-one-page-three.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../../..'; +import { TabsOneTabOnePageThree } from './tab-one-page-three'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(TabsOneTabOnePageThree) + ], + declarations: [ + TabsOneTabOnePageThree + ] +}) +export class TabsOneTabOnePageThreeModule { } diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-three/tab-one-page-three.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-three/tab-one-page-three.ts new file mode 100644 index 00000000000..a0c950d3ac2 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-three/tab-one-page-three.ts @@ -0,0 +1,35 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from '../../../../../../..'; + +@IonicPage({ + segment: 'TabsOneTabOnePageThree/paramOne/:paramOne/paramTwo/:paramTwo' +}) +@Component({ + template: ` + + + + Tabs 1 Tab 1 Page 3 + + + + Tabs 1 Tab 1 Page 3 +
+ Param One: {{paramOne}} +
+
+ Name: {{paramTwo}} +
+
+ ` +}) +export class TabsOneTabOnePageThree { + paramOne: string; + paramTwo: string; + constructor(public nav: NavController, navParams: NavParams) { + this.paramOne = navParams.data.paramOne; + this.paramTwo = navParams.data.paramTwo; + } +} diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-two/tab-one-page-two.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-two/tab-one-page-two.module.ts new file mode 100644 index 00000000000..814d2c99e19 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-two/tab-one-page-two.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../../..'; +import { TabsOneTabOnePageTwo } from './tab-one-page-two'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(TabsOneTabOnePageTwo) + ], + declarations: [ + TabsOneTabOnePageTwo + ] +}) +export class TabsOneTabOnePageTwoModule { } diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-two/tab-one-page-two.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-two/tab-one-page-two.ts new file mode 100644 index 00000000000..c3179544c73 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-two/tab-one-page-two.ts @@ -0,0 +1,40 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from '../../../../../../..'; + +@IonicPage({ + segment: 'TabsOneTabOnePageTwo/userId/:userId/name/:name' +}) +@Component({ + template: ` + + + + Tabs 1 Tab 1 Page 2 + + + + Tabs 1 Tab 1 Page 2 +
+ User ID: {{userId}} +
+
+ Name: {{name}} +
+ +
+ ` +}) +export class TabsOneTabOnePageTwo { + userId: string; + name: string; + constructor(public nav: NavController, navParams: NavParams) { + this.userId = navParams.data.userId; + this.name = navParams.data.name; + } + + goToNext() { + this.nav.push('TabsOneTabOnePageThree', { paramOne: 'Scranton', paramTwo: 'PA'}); + } +} diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-one/tab-two-page-one.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-one/tab-two-page-one.module.ts new file mode 100644 index 00000000000..56352b8d939 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-one/tab-two-page-one.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../../..'; +import { TabsOneTabTwoPageOne } from './tab-two-page-one'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(TabsOneTabTwoPageOne) + ], + declarations: [ + TabsOneTabTwoPageOne + ] +}) +export class TabsOneTabTwoPageOneModule { } diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-one/tab-two-page-one.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-one/tab-two-page-one.ts new file mode 100644 index 00000000000..a48a119f7f8 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-one/tab-two-page-one.ts @@ -0,0 +1,30 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, } from '../../../../../../..'; + +@IonicPage({ + segment: 'TabsOneTabTwoPageOne' +}) +@Component({ + template: ` + + + + Tabs 1 Tab 2 Page 1 + + + + Tabs 1 Tab 2 Page 1 + + + ` +}) +export class TabsOneTabTwoPageOne { + constructor(public nav: NavController) { + } + + nextPage() { + this.nav.push('TabsOneTabTwoPageTwo', { userId: '456', name: 'Stanley Hudson'}); + } +} diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-three/tab-two-page-three.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-three/tab-two-page-three.module.ts new file mode 100644 index 00000000000..356be3a980f --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-three/tab-two-page-three.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../../..'; +import { TabsOneTabTwoPageThree } from './tab-two-page-three'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(TabsOneTabTwoPageThree) + ], + declarations: [ + TabsOneTabTwoPageThree + ] +}) +export class TabsOneTabTwoPageThreeModule { } diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-three/tab-two-page-three.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-three/tab-two-page-three.ts new file mode 100644 index 00000000000..dbd6f582aff --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-three/tab-two-page-three.ts @@ -0,0 +1,35 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from '../../../../../../..'; + +@IonicPage({ + segment: 'TabsOneTabTwoPageThree/paramOne/:paramOne/paramTwo/:paramTwo' +}) +@Component({ + template: ` + + + + Tabs 1 Tab 2 Page 3 + + + + Tabs 1 Tab 2 Page 3 +
+ Param One: {{userId}} +
+
+ Param Two: {{name}} +
+
+ ` +}) +export class TabsOneTabTwoPageThree { + paramOne: string; + paramTwo: string; + constructor(public nav: NavController, navParams: NavParams) { + this.paramOne = navParams.data.paramOne; + this.paramTwo = navParams.data.paramTwo; + } +} diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-two/tab-two-page-two.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-two/tab-two-page-two.module.ts new file mode 100644 index 00000000000..493f9e41b5a --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-two/tab-two-page-two.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../../..'; +import { TabsOneTabTwoPageTwo } from './tab-two-page-two'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(TabsOneTabTwoPageTwo) + ], + declarations: [ + TabsOneTabTwoPageTwo + ] +}) +export class TabsOneTabTwoPageTwoModule { } diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-two/tab-two-page-two.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-two/tab-two-page-two.ts new file mode 100644 index 00000000000..d2f2f9a9e15 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-two/tab-two-page-two.ts @@ -0,0 +1,40 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from '../../../../../../..'; + +@IonicPage({ + segment: 'TabsOneTabTwoPageTwo/userId/:userId/name/:name' +}) +@Component({ + template: ` + + + + Tabs 1 Tab 2 Page 2 + + + + Tabs 1 Tab 2 Page 2 +
+ User ID: {{userId}} +
+
+ Name: {{name}} +
+ +
+ ` +}) +export class TabsOneTabTwoPageTwo { + userId: string; + name: string; + constructor(public nav: NavController, navParams: NavParams) { + this.userId = navParams.data.userId; + this.name = navParams.data.name; + } + + goToNext() { + this.nav.push('TabsOneTabTwoPageThree', { paramOne: 'Nashua', paramTwo: 'NH'}); + } +} diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tabs-one-page/tabs-one-page.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tabs-one-page/tabs-one-page.module.ts new file mode 100644 index 00000000000..ae8f5fd3336 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tabs-one-page/tabs-one-page.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../../..'; +import { TabsOnePage } from './tabs-one-page'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(TabsOnePage) + ], + declarations: [ + TabsOnePage + ] +}) +export class TabsOnePageModule { } diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tabs-one-page/tabs-one-page.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tabs-one-page/tabs-one-page.ts new file mode 100644 index 00000000000..b024e938a08 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tabs-one-page/tabs-one-page.ts @@ -0,0 +1,21 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, } from '../../../../../../..'; + +@IonicPage({ + segment: 'TabsOnePage' +}) +@Component({ + template: ` + + + + + ` +}) +export class TabsOnePage { + + tabs1Tab1: string = 'TabsOneTabOnePageOne'; + tabs1Tab2: string = 'TabsOneTabTwoPageOne'; + constructor(public nav: NavController) { + } +} diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-one/tab-one-page-one.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-one/tab-one-page-one.module.ts new file mode 100644 index 00000000000..e6cef890720 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-one/tab-one-page-one.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../../..'; +import { TabsTwoTabOnePageOne } from './tab-one-page-one'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(TabsTwoTabOnePageOne) + ], + declarations: [ + TabsTwoTabOnePageOne + ] +}) +export class TabsTwoTabOnePageOneModule { } diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-one/tab-one-page-one.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-one/tab-one-page-one.ts new file mode 100644 index 00000000000..01267e37c30 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-one/tab-one-page-one.ts @@ -0,0 +1,30 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, } from '../../../../../../..'; + +@IonicPage({ + segment: 'TabsTwoTabOnePageOne' +}) +@Component({ + template: ` + + + + Tabs 2 Tab 1 Page 1 + + + + Tabs 2 Tab 1 Page 1 + + + ` +}) +export class TabsTwoTabOnePageOne { + constructor(public nav: NavController) { + } + + nextPage() { + this.nav.push('TabsTwoTabOnePageTwo', { userId: '234', name: 'Phillis Vance - Vance Refridgeration'}); + } +} diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-three/tab-one-page-three.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-three/tab-one-page-three.module.ts new file mode 100644 index 00000000000..51e8d257f6d --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-three/tab-one-page-three.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../../..'; +import { TabsTwoTabOnePageThree } from './tab-one-page-three'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(TabsTwoTabOnePageThree) + ], + declarations: [ + TabsTwoTabOnePageThree + ] +}) +export class TabsTwoTabOnePageThreeModule { } diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-three/tab-one-page-three.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-three/tab-one-page-three.ts new file mode 100644 index 00000000000..e2cb9e4c660 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-three/tab-one-page-three.ts @@ -0,0 +1,35 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from '../../../../../../..'; + +@IonicPage({ + segment: 'TabsTwoTabOnePageThree/paramOne/:paramOne/paramTwo/:paramTwo' +}) +@Component({ + template: ` + + + + Tabs 2 Tab 1 Page 3 + + + + Tabs 2 Tab 1 Page 3 +
+ Param One: {{paramOne}} +
+
+ Param Two: {{paramTwo}} +
+
+ ` +}) +export class TabsTwoTabOnePageThree { + paramOne: string; + paramTwo: string; + constructor(public nav: NavController, navParams: NavParams) { + this.paramOne = navParams.data.paramOne; + this.paramTwo = navParams.data.paramTwo; + } +} diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-two/tab-one-page-two.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-two/tab-one-page-two.module.ts new file mode 100644 index 00000000000..d9518047a08 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-two/tab-one-page-two.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../../..'; +import { TabsTwoTabOnePageTwo } from './tab-one-page-two'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(TabsTwoTabOnePageTwo) + ], + declarations: [ + TabsTwoTabOnePageTwo + ] +}) +export class TabsTwoTabOnePageTwoModule { } diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-two/tab-one-page-two.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-two/tab-one-page-two.ts new file mode 100644 index 00000000000..eeb474dd933 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-two/tab-one-page-two.ts @@ -0,0 +1,40 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from '../../../../../../..'; + +@IonicPage({ + segment: 'TabsTwoTabOnePageTwo/userId/:userId/name/:name' +}) +@Component({ + template: ` + + + + Tabs 2 Tab 1 Page 2 + + + + Tabs 2 Tab 1 Page 2 +
+ User ID: {{userId}} +
+
+ Name: {{name}} +
+ +
+ ` +}) +export class TabsTwoTabOnePageTwo { + userId: string; + name: string; + constructor(public nav: NavController, navParams: NavParams) { + this.userId = navParams.data.userId; + this.name = navParams.data.name; + } + + goToNext() { + this.nav.push('TabsTwoTabOnePageThree', { paramOne: 'Stamford', paramTwo: 'CT'}); + } +} diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-one/tab-two-page-one.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-one/tab-two-page-one.module.ts new file mode 100644 index 00000000000..0e21ef3d25a --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-one/tab-two-page-one.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../../..'; +import { TabsTwoTabTwoPageOne } from './tab-two-page-one'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(TabsTwoTabTwoPageOne) + ], + declarations: [ + TabsTwoTabTwoPageOne + ] +}) +export class TabsTwoTabTwoPageOneModule { } diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-one/tab-two-page-one.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-one/tab-two-page-one.ts new file mode 100644 index 00000000000..7bf9e2512a0 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-one/tab-two-page-one.ts @@ -0,0 +1,30 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, } from '../../../../../../..'; + +@IonicPage({ + segment: 'TabsTwoTabTwoPageOne' +}) +@Component({ + template: ` + + + + Tabs 2 Tab 2 Page 1 + + + + Tabs 2 Tab 2 Page 1 + + + ` +}) +export class TabsTwoTabTwoPageOne { + constructor(public nav: NavController) { + } + + nextPage() { + this.nav.push('TabsTwoTabTwoPageTwo', { userId: '456', name: 'Michael Scarn'}); + } +} diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-three/tab-two-page-three.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-three/tab-two-page-three.module.ts new file mode 100644 index 00000000000..0f4524411a8 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-three/tab-two-page-three.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../../..'; +import { TabsTwoTabTwoPageThree } from './tab-two-page-three'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(TabsTwoTabTwoPageThree) + ], + declarations: [ + TabsTwoTabTwoPageThree + ] +}) +export class TabsTwoTabTwoPageThreeModule { } diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-three/tab-two-page-three.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-three/tab-two-page-three.ts new file mode 100644 index 00000000000..3b4679c1d06 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-three/tab-two-page-three.ts @@ -0,0 +1,35 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from '../../../../../../..'; + +@IonicPage({ + segment: 'TabsTwoTabTwoPageThree/paramOne/:paramOne/paramTwo/:paramTwo' +}) +@Component({ + template: ` + + + + Tabs 2 Tab 2 Page 3 + + + + Tabs 2 Tab 2 Page 3 +
+ Param One: {{paramOne}} +
+
+ Param Two: {{paramTwo}} +
+
+ ` +}) +export class TabsTwoTabTwoPageThree { + paramOne: string; + paramTwo: string; + constructor(public nav: NavController, navParams: NavParams) { + this.paramOne = navParams.data.paramOne; + this.paramTwo = navParams.data.paramTwo; + } +} diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-two/tab-two-page-two.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-two/tab-two-page-two.module.ts new file mode 100644 index 00000000000..bdbddc50cde --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-two/tab-two-page-two.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../../..'; +import { TabsTwoTabTwoPageTwo } from './tab-two-page-two'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(TabsTwoTabTwoPageTwo) + ], + declarations: [ + TabsTwoTabTwoPageTwo + ] +}) +export class TabsTwoTabTwoPageTwoModule { } diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-two/tab-two-page-two.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-two/tab-two-page-two.ts new file mode 100644 index 00000000000..d5047b15d2e --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-two/tab-two-page-two.ts @@ -0,0 +1,40 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from '../../../../../../..'; + +@IonicPage({ + segment: 'TabsTwoTabTwoPageTwo/userId/:userId/name/:name' +}) +@Component({ + template: ` + + + + Tabs 2 Tab 2 Page 2 + + + + Tabs 2 Tab 2 Page 2 +
+ User ID: {{userId}} +
+
+ Name: {{name}} +
+ +
+ ` +}) +export class TabsTwoTabTwoPageTwo { + userId: string; + name: string; + constructor(public nav: NavController, navParams: NavParams) { + this.userId = navParams.data.userId; + this.name = navParams.data.name; + } + + next() { + this.nav.push('TabsTwoTabTwoPageThree', { paramOne: 'Albany', paramTwo: 'NY'}); + } +} diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tabs-two-page/tabs-two-page.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tabs-two-page/tabs-two-page.module.ts new file mode 100644 index 00000000000..31ada2039c4 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tabs-two-page/tabs-two-page.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from '../../../../../../..'; +import { TabsTwoPage } from './tabs-two-page'; + +@NgModule({ + imports: [ + IonicPageModule.forChild(TabsTwoPage) + ], + declarations: [ + TabsTwoPage + ] +}) +export class TabsTwoPageModule { } diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tabs-two-page/tabs-two-page.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tabs-two-page/tabs-two-page.ts new file mode 100644 index 00000000000..c65240f4be2 --- /dev/null +++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tabs-two-page/tabs-two-page.ts @@ -0,0 +1,21 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, } from '../../../../../../..'; + +@IonicPage({ + segment: 'TabsTwoPage' +}) +@Component({ + template: ` + + + + + ` +}) +export class TabsTwoPage { + + tabs2Tab1: string = 'TabsTwoTabOnePageOne'; + tabs2Tab2: string = 'TabsTwoTabTwoPageOne'; + constructor(public nav: NavController) { + } +} diff --git a/src/navigation/url-serializer.ts b/src/navigation/url-serializer.ts index 411290f3688..d6f1034b067 100644 --- a/src/navigation/url-serializer.ts +++ b/src/navigation/url-serializer.ts @@ -2,7 +2,7 @@ import { OpaqueToken } from '@angular/core'; import { App } from '../components/app/app'; import { NavigationContainer } from './navigation-container'; -import { DeepLinkConfig, DehydratedSegment, DehydratedSegmentPair, NavGroup, NavLink, NavSegment } from './nav-util'; +import { DeepLinkConfig, DehydratedSegment, DehydratedSegmentPair, isNav, isTab, isTabs, NavGroup, NavLink, NavSegment } from './nav-util'; import { isArray, isBlank, isPresent } from '../util/util'; @@ -372,8 +372,42 @@ export function hydrateSegmentsWithNav(app: App, dehydratedSegmentPairs: Dehydra // the simple solution is to just use the last child // because that is probably what the user wants anyway // remember, do not harm, even if it makes our shizzle ugly - segments.push(hydrateSegment(dehydratedSegment, navs[navs.length - 1])); - navs = navs[navs.length - 1].getActiveChildNavs(); + + + // Update 9/30/17 - well, we know now that we can be in all sorts of weird + // states when we hit this + // one being a state with a root Nav, and then toggling between PageOne (with an `ion-tabs` component) + // and PageTwo (with an `ion-tabs` component) + // when you go from a page with tabs to a different page with tabs + // as of 9/30/17 we do not update the URL correctly + // and if we change how that works + // we'll probably break a lot of apps in other, unexpected ways + // so the best answer seems to be to check if an existing nav's active page matches the + // url segment. If it does, then we're in a weird state and don't use the segment. + // if an existing nav's active page does NOT match the segment, then it's + // probably fair game to use + let probableSegment = hydrateSegment(dehydratedSegment, navs[navs.length - 1]); + for (const nav of navs) { + if (nav === navs[navs.length - 1]) { + break; + } + + if (isTabs(nav)) { + if (nav.getActiveChildNavs().length) { + const tab = nav.getActiveChildNavs()[0]; + const activeView = (tab as any).getActive(); + if (activeView.component === probableSegment.component) { + probableSegment = null; + break; + } + } + } + } + + if (probableSegment) { + segments.push(probableSegment); + navs = navs[navs.length - 1].getActiveChildNavs(); + } } else { break; }