import {App, Page, Config, Platform} from 'ionic/ionic'; import {Modal, ActionSheet, NavController, NavParams, Animation, ViewController} from 'ionic/ionic'; @Page({ templateUrl: 'main.html' }) class E2EPage { constructor(nav: NavController, config: Config, platform: Platform) { this.nav = nav; 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('windowsphone')); platform.ready().then(() => { console.log('platform.ready'); }); 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); }); } presentModalCustomAnimation() { let modal = Modal.create(ContactUs); this.nav.present(modal, { animation: 'my-fade-in' }); } } @Page({ template: ` Data in/out UserId Name ` }) class ModalPassData { constructor(params: NavParams, viewCtrl: ViewController) { this.data = { userId: params.get('userId'), name: 'Jenny' }; this.viewCtrl = viewCtrl; } submit() { this.viewCtrl.dismiss(this.data); } } @Page({ template: ` Toolbar 1 Toolbar 2 ` }) class ToolbarModal { constructor(viewCtrl: ViewController) { this.viewCtrl = viewCtrl; } dismiss() { this.viewCtrl.emit({ toolbar: 'data' }); this.viewCtrl.dismiss(); } } @Page({ template: '' }) class ContactUs { constructor() { console.log('ContactUs constructor'); this.rootView = ModalFirstPage; } onPageLoaded() { console.log('ContactUs onPageLoaded'); } onPageWillEnter() { console.log('ContactUs onPageWillEnter'); } onPageDidEnter() { console.log('ContactUs onPageDidEnter'); } onPageWillLeave() { console.log('ContactUs onPageWillLeave'); } onPageDidLeave() { console.log('ContactUs onPageDidLeave'); } onPageWillUnload() { console.log('ContactUs onPageWillUnload'); } onPageDidUnload() { console.log('ContactUs onPageDidUnload'); } } @Page({ template: ` First Page Header

` }) class ModalFirstPage { constructor(nav: NavController) { this.nav = nav; } push() { let page = ModalSecondPage; let params = { id: 8675309, myData: [1,2,3,4] }; let opts = { animation: 'ios-transition' }; this.nav.push(page, params, opts); } dismiss() { this.nav.rootNav.pop(); } openActionSheet() { let actionSheet = ActionSheet.create({ buttons: [ { text: 'Destructive', style: 'destructive', handler: () => { console.log('Destructive clicked'); } }, { text: 'Archive', handler: () => { console.log('Archive clicked'); } }, { text: 'Cancel', style: 'cancel', handler: () => { console.log('cancel this clicked'); } } ] }); this.nav.present(actionSheet); } } @Page({ template: ` Second Page Header

` }) class ModalSecondPage { constructor( nav: NavController, params: NavParams ) { this.nav = nav; console.log('Second page params:', params); } } @App({ template: '' }) class E2EApp { constructor() { this.root = E2EPage; } } class FadeIn extends Animation { constructor(enteringView, leavingView) { super(enteringView.pageRef()); this .easing('ease') .duration(1000) .fromTo('translateY', '0%', '0%') .fadeIn() .before.addClass('show-page'); } } Animation.register('my-fade-in', FadeIn); class FadeOut extends Animation { constructor(enteringView, leavingView) { super(leavingView.pageRef()); this .easing('ease') .duration(500) .fadeOut() .before.addClass('show-page'); } } Animation.register('my-fade-out', FadeOut);