import {Component} from '@angular/core'; import {ionicBootstrap, Config, Platform} from '../../../../../src'; import {Modal, ActionSheet, NavController, NavParams, Transition, TransitionOptions, ViewController} from '../../../../../src'; @Component({ templateUrl: 'main.html' }) class E2EPage { platforms; constructor(private nav: NavController, config: Config, platform: Platform) { console.log('platforms', platform.platforms()); console.log('mode', config.get('mode')); console.log('isRTL', platform.isRTL()); console.log('core', platform.is('core')); console.log('cordova', platform.is('cordova')); console.log('mobile', platform.is('mobile')); console.log('mobileweb', platform.is('mobileweb')); console.log('ipad', platform.is('ipad')); console.log('iphone', platform.is('iphone')); console.log('phablet', platform.is('phablet')); console.log('tablet', platform.is('tablet')); console.log('ios', platform.is('ios')); console.log('android', platform.is('android')); console.log('windows phone', platform.is('windows')); platform.ready().then((readySource) => { console.log('platform.ready, readySource:', readySource); }); this.platforms = platform.platforms(); } presentModal() { let modal = Modal.create(ModalPassData, { userId: 8675309 }); this.nav.present(modal); modal.onDismiss(data => { console.log('modal data', data); }); } presentModalChildNav() { let modal = Modal.create(ContactUs); this.nav.present(modal); } presentToolbarModal() { let modal = Modal.create(ToolbarModal); this.nav.present(modal); modal.subscribe(data => { console.log('modal data', data); }); } presentModalWithInputs() { let modal = Modal.create(ModalWithInputs); modal.onDismiss((data) => { console.log('Modal with inputs data:', data); }); this.nav.present(modal); } presentModalCustomAnimation() { let modal = Modal.create(ContactUs); this.nav.present(modal, { animation: 'my-fade-in' }); } presentNavigableModal(){ let modal = Modal.create(NavigableModal); this.nav.present(modal); //this.nav.push(NavigableModal); } } @Component({ template: ` Page One ` }) class NavigableModal{ constructor(private navController:NavController){ } submit(){ this.navController.push(NavigableModal2); } } @Component({ template: ` Page Two ` }) class NavigableModal2{ constructor(private navController:NavController){ } submit(){ this.navController.pop(); } } @Component({ template: ` Data in/out UserId Name ` }) class ModalPassData { data; constructor(params: NavParams, private viewCtrl: ViewController) { this.data = { userId: params.get('userId'), name: 'Jenny' }; } submit() { this.viewCtrl.dismiss(this.data); } ionViewLoaded(){ console.log("ModalPassData ionViewLoaded fired"); } ionViewWillEnter(){ console.log("ModalPassData ionViewWillEnter fired"); } ionViewDidEnter(){ console.log("ModalPassData ionViewDidEnter fired"); } ionViewWillLeave(){ console.log("ModalPassData ionViewWillLeave fired"); } ionViewDidLeave(){ console.log("ModalPassData ionViewDidLeave fired"); } } @Component({ template: ` Toolbar 1 Toolbar 2 ` }) class ToolbarModal { constructor(private viewCtrl: ViewController) {} dismiss() { this.viewCtrl.emit({ toolbar: 'data' }); this.viewCtrl.dismiss(); } } @Component({ template: ` Modal w/ Inputs
Title (Required) Note (Required) Icon
` }) class ModalWithInputs { data; constructor(private viewCtrl: ViewController) { this.data = { title: 'Title', note: 'Note', icon: 'home' }; } public save(ev) { this.viewCtrl.dismiss(this.data); } public dismiss() { this.viewCtrl.dismiss(null); } } @Component({ template: '' }) class ContactUs { root; constructor() { console.log('ContactUs constructor'); this.root = ModalFirstPage; } ionViewLoaded() { console.log('ContactUs ionViewLoaded'); } ionViewWillEnter() { console.log('ContactUs ionViewWillEnter'); } ionViewDidEnter() { console.log('ContactUs ionViewDidEnter'); } ionViewWillLeave() { console.log('ContactUs ionViewWillLeave'); } ionViewDidLeave() { console.log('ContactUs ionViewDidLeave'); } ionViewWillUnload() { console.log('ContactUs ionViewWillUnload'); } ionViewDidUnload() { console.log('ContactUs ionViewDidUnload'); } } @Component({ template: ` First Page Header

Item Number: {{item.value}}
` }) class ModalFirstPage { private items:any[]; constructor(private nav: NavController) { this.items = []; for ( let i = 0; i < 50; i++ ){ this.items.push({ value: (i + 1) }); } } push() { let page = ModalSecondPage; let params = { id: 8675309, myData: [1,2,3,4] }; this.nav.push(page, params); } dismiss() { this.nav.rootNav.pop(); } ionViewLoaded(){ console.log("ModalFirstPage ionViewLoaded fired"); } ionViewWillEnter(){ console.log("ModalFirstPage ionViewWillEnter fired"); } ionViewDidEnter(){ console.log("ModalFirstPage ionViewDidEnter fired"); } openActionSheet() { let actionSheet = ActionSheet.create({ buttons: [ { text: 'Destructive', role: 'destructive', handler: () => { console.log('Destructive clicked'); } }, { text: 'Archive', handler: () => { console.log('Archive clicked'); } }, { text: 'Go To Root', handler: () => { // overlays are added and removed from the root navigation // find the root navigation, and pop this alert // when the alert is done animating out, then pop off the modal this.nav.rootNav.pop().then(() => { this.nav.rootNav.pop(); }); // by default an alert will dismiss itself // however, we don't want to use the default // but rather fire off our own pop navigation // return false so it doesn't pop automatically return false; } }, { text: 'Cancel', role: 'cancel', handler: () => { console.log('cancel this clicked'); } } ] }); this.nav.present(actionSheet); } } @Component({ template: ` Second Page Header

` }) class ModalSecondPage { constructor(private nav: NavController, params: NavParams) { console.log('Second page params:', params); } ionViewLoaded(){ console.log("ModalSecondPage ionViewLoaded"); } ionViewWillEnter(){ console.log("ModalSecondPage ionViewWillEnter"); } ionViewDidEnter(){ console.log("ModalSecondPage ionViewDidEnter"); } } @Component({ template: '' }) class E2EApp { root = E2EPage; } ionicBootstrap(E2EApp); class FadeIn extends Transition { constructor(enteringView: ViewController, leavingView: ViewController, opts: TransitionOptions) { super(opts); this .element(enteringView.pageRef()) .easing('ease') .duration(1000) .fromTo('translateY', '0%', '0%') .fadeIn() .before.addClass('show-page'); } } Transition.register('my-fade-in', FadeIn); class FadeOut extends Transition { constructor(enteringView: ViewController, leavingView: ViewController, opts: TransitionOptions) { super(opts); this .element(leavingView.pageRef()) .easing('ease') .duration(500) .fadeOut() .before.addClass('show-page'); } } Transition.register('my-fade-out', FadeOut);