summaryrefslogtreecommitdiff
path: root/www/lib/ionic-native-transitions/test
diff options
context:
space:
mode:
Diffstat (limited to 'www/lib/ionic-native-transitions/test')
-rw-r--r--www/lib/ionic-native-transitions/test/angular-ios9-uiwebview.patch.js75
-rw-r--r--www/lib/ionic-native-transitions/test/config.js149
-rw-r--r--www/lib/ionic-native-transitions/test/controller.js124
-rw-r--r--www/lib/ionic-native-transitions/test/index.html168
-rw-r--r--www/lib/ionic-native-transitions/test/index.js21
5 files changed, 537 insertions, 0 deletions
diff --git a/www/lib/ionic-native-transitions/test/angular-ios9-uiwebview.patch.js b/www/lib/ionic-native-transitions/test/angular-ios9-uiwebview.patch.js
new file mode 100644
index 00000000..58d8be10
--- /dev/null
+++ b/www/lib/ionic-native-transitions/test/angular-ios9-uiwebview.patch.js
@@ -0,0 +1,75 @@
+/**
+ * ================== angular-ios9-uiwebview.patch.js v1.1.1 ==================
+ *
+ * This patch works around iOS9 UIWebView regression that causes infinite digest
+ * errors in Angular.
+ *
+ * The patch can be applied to Angular 1.2.0 – 1.4.5. Newer versions of Angular
+ * have the workaround baked in.
+ *
+ * To apply this patch load/bundle this file with your application and add a
+ * dependency on the "ngIOS9UIWebViewPatch" module to your main app module.
+ *
+ * For example:
+ *
+ * ```
+ * angular.module('myApp', ['ngRoute'])`
+ * ```
+ *
+ * becomes
+ *
+ * ```
+ * angular.module('myApp', ['ngRoute', 'ngIOS9UIWebViewPatch'])
+ * ```
+ *
+ *
+ * More info:
+ * - https://openradar.appspot.com/22186109
+ * - https://github.com/angular/angular.js/issues/12241
+ * - https://github.com/driftyco/ionic/issues/4082
+ *
+ *
+ * @license AngularJS
+ * (c) 2010-2015 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+
+angular.module('ngIOS9UIWebViewPatch', ['ng']).config(['$provide', function($provide) {
+ 'use strict';
+
+ $provide.decorator('$browser', ['$delegate', '$window', function($delegate, $window) {
+
+ if (isIOS9UIWebView($window.navigator.userAgent)) {
+ return applyIOS9Shim($delegate);
+ }
+
+ return $delegate;
+
+ function isIOS9UIWebView(userAgent) {
+ return /(iPhone|iPad|iPod).* OS 9_\d/.test(userAgent) && !/Version\/9\./.test(userAgent);
+ }
+
+ function applyIOS9Shim(browser) {
+ var pendingLocationUrl = null;
+ var originalUrlFn= browser.url;
+
+ browser.url = function() {
+ if (arguments.length) {
+ pendingLocationUrl = arguments[0];
+ return originalUrlFn.apply(browser, arguments);
+ }
+
+ return pendingLocationUrl || originalUrlFn.apply(browser, arguments);
+ };
+
+ window.addEventListener('popstate', clearPendingLocationUrl, false);
+ window.addEventListener('hashchange', clearPendingLocationUrl, false);
+
+ function clearPendingLocationUrl() {
+ pendingLocationUrl = null;
+ }
+
+ return browser;
+ }
+ }]);
+}]);
diff --git a/www/lib/ionic-native-transitions/test/config.js b/www/lib/ionic-native-transitions/test/config.js
new file mode 100644
index 00000000..35aa240b
--- /dev/null
+++ b/www/lib/ionic-native-transitions/test/config.js
@@ -0,0 +1,149 @@
+export default function ($ionicNativeTransitionsProvider, $stateProvider, $urlRouterProvider, $ionicConfigProvider) {
+ 'ngInject';
+ $ionicNativeTransitionsProvider.setDefaultOptions({
+ duration: 500,
+ // backInOppositeDirection: true
+ });
+
+ $ionicNativeTransitionsProvider.setDefaultTransition({
+ type: 'flip',
+ direction: 'left'
+ });
+
+ $ionicNativeTransitionsProvider.setDefaultBackTransition({
+ type: 'slide',
+ direction: 'right'
+ });
+
+ $ionicNativeTransitionsProvider.enable(false);
+
+ $ionicConfigProvider.tabs.position('top');
+
+ $stateProvider
+ .state('tabs', {
+ url: "/tab",
+ abstract: true,
+ templateUrl: "templates/tabs.html"
+ })
+ .state('tabs.home', {
+ url: "/home",
+ nativeTransitions: null,
+ views: {
+ 'home-tab': {
+ templateUrl: "templates/home.html"
+ }
+ }
+ })
+ .state('tabs.about', {
+ url: "/about",
+ nativeTransitions: {
+ type: "fade"
+ },
+ views: {
+ 'about-tab': {
+ templateUrl: "templates/about.html"
+ }
+ }
+ })
+ .state('tabs.contact', {
+ url: "/contact",
+ nativeTransitions: {
+ type: "slide",
+ direction: "left",
+ fixedPixelsTop: 93
+ },
+ views: {
+ 'contact-tab': {
+ templateUrl: "templates/contact.html"
+ }
+ }
+ })
+ .state('one', {
+ url: "/one",
+ nativeTransitions: {
+ "type": "flip",
+ "direction": "up"
+ },
+ nativeTransitionsAndroid: {
+ "type": "flip",
+ "direction": "right"
+ },
+ nativeTransitionsBackAndroid: {
+ "type": "slide",
+ "direction": "down"
+ },
+ nativeTransitionsIOS: {
+ "type": "flip",
+ "direction": "left"
+ },
+ nativeTransitionsWindowsPhone: {
+ "type": "flip",
+ "direction": "down"
+ },
+ templateUrl: "templates/one.html"
+ })
+ .state('two', {
+ url: "/two",
+ nativeTransitions: {
+ type: "fade"
+ },
+ nativeTransitionsBack: null,
+ nativeTransitionsIOS: {
+ "type": "flip",
+ "direction": "down" // 'left|right|up|down', default 'right' (Android currently only supports left and right)
+ },
+ templateUrl: "templates/two.html"
+ })
+ .state('three', {
+ url: "/three",
+ nativeTransitions: {
+ type: "fade"
+ },
+ nativeTransitionsAndroid: {
+ "type": "slide",
+ "direction": "up" // 'left|right|up|down', default 'right' (Android currently only supports left and right)
+ },
+ nativeTransitionsBackAndroid: {
+ "type": "slide",
+ "direction": "up" // 'left|right|up|down', default 'right' (Android currently only supports left and right)
+ },
+ templateUrl: "templates/three.html"
+ })
+ .state('four', {
+ url: "/four?testParamUrl",
+ params: {
+ test: null
+ },
+ templateUrl: "templates/four.html",
+ controller: function ($stateParams) {
+ 'ngInject';
+ console.log('$stateParams', $stateParams);
+ }
+ })
+ .state('five', {
+ url: "/five",
+ templateUrl: "templates/five.html",
+ controller: function ($stateParams) {
+ 'ngInject';
+ console.log('$stateParams', $stateParams);
+ },
+ resolve: function ($timeout, $q, $ionicPopup) {
+ 'ngInject';
+ var deferred = $q.defer();
+ $timeout(function () {
+ $ionicPopup.show({
+ template: '',
+ title: 'A popup',
+ buttons: [
+ { text: 'Cancel' }
+ ]
+ });
+ deferred.reject();
+ }, 1000)
+ return deferred.promise;
+ }
+ });
+
+
+ $urlRouterProvider.otherwise("/tab/home");
+}
diff --git a/www/lib/ionic-native-transitions/test/controller.js b/www/lib/ionic-native-transitions/test/controller.js
new file mode 100644
index 00000000..a951d5f9
--- /dev/null
+++ b/www/lib/ionic-native-transitions/test/controller.js
@@ -0,0 +1,124 @@
+export default function (
+ $scope,
+ $rootScope,
+ $log,
+ $ionicNativeTransitions,
+ $ionicModal,
+ $ionicPlatform,
+ $ionicHistory
+) {
+
+ 'ngInject';
+
+ var vm = this;
+ vm.modal = null;
+ vm.isEnable = $ionicNativeTransitions.isEnabled();
+ vm.enable = enable;
+ vm.disable = disable;
+ vm.stateGo = stateGo;
+ vm.sameStateGo = sameStateGo;
+ vm.locationUrl = locationUrl;
+ vm.disableWithoutDisablingIonicTransitions = disableWithoutDisablingIonicTransitions;
+ vm.enableBothTransitions = enableBothTransitions;
+ vm.openModal = openModal;
+ vm.goBack = goBack;
+ vm.stateError = stateError;
+
+ $scope.$on('$ionicView.loaded', function (event, data) {
+ console.log('$ionicView.loaded');
+ });
+
+ $scope.$on('$ionicView.enter', function (event, data) {
+ console.log('$ionicView.enter');
+ });
+
+ $rootScope.$on('ionicNativeTransitions.success', function () {
+ $log.info('yeah!');
+ });
+
+ $rootScope.$on('ionicNativeTransitions.error', function () {
+ $log.info(':(');
+ });
+
+ $rootScope.$on('ionicNativeTransitions.beforeTransition', function () {
+ $log.info('Transition is about to happen');
+ });
+
+ function openModal() {
+ if (vm.modal) {
+ vm.modal.show();
+ return;
+ }
+ vm.modal = $ionicModal.fromTemplate(`
+ <ion-modal-view>
+ <ion-header-bar>
+ <h1 class="title">Modal</h1>
+ <button class="button button-clear button-assertive" ng-click="close()">
+ <i class="icon ion-close"></i>
+ </button>
+ </ion-header-bar>
+ <ion-content class="has-footer has-footer padding">
+ modal
+ </ion-content>
+ </ion-modal-view>
+ `, {
+ scope: $rootScope.$new(),
+ });
+ vm.modal.show();
+ vm.modal.scope.close = () => {
+ console.log('modal close', JSON.stringify($ionicPlatform.$backButtonActions))
+ vm.modal.remove();
+ vm.modal = null;
+ };
+ }
+
+ function enable() {
+ $ionicNativeTransitions.enable();
+ vm.isEnable = $ionicNativeTransitions.isEnabled();
+ }
+
+ function disable() {
+ $ionicNativeTransitions.enable(false);
+ vm.isEnable = $ionicNativeTransitions.isEnabled();
+ }
+
+ function disableWithoutDisablingIonicTransitions() {
+ $ionicNativeTransitions.enable(false, true);
+ vm.isEnable = $ionicNativeTransitions.isEnabled();
+ }
+
+ function enableBothTransitions() {
+ $ionicNativeTransitions.enable(true, false);
+ vm.isEnable = $ionicNativeTransitions.isEnabled();
+ }
+
+ function sameStateGo(reload = false) {
+ $ionicNativeTransitions.stateGo('tabs.home', {}, { reload });
+ }
+
+ function stateGo() {
+ $ionicNativeTransitions.stateGo('four', {
+ test: 'buyakacha!',
+ testParamUrl: 'hihi'
+ }, {
+ "type": "slide",
+ "direction": "up", // 'left|right|up|down', default 'left' (which is like 'next')
+ "duration": 1500, // in milliseconds (ms), default 400
+ }, {
+ reload: true
+ });
+ }
+
+ function locationUrl() {
+ $ionicNativeTransitions.locationUrl('/three');
+ }
+
+ function goBack(count) {
+ console.log('count', count, $ionicHistory.viewHistory())
+ $rootScope.$ionicGoBack(count);
+ }
+
+ function stateError() {
+ $ionicNativeTransitions.stateGo('five');
+ }
+}
diff --git a/www/lib/ionic-native-transitions/test/index.html b/www/lib/ionic-native-transitions/test/index.html
new file mode 100644
index 00000000..9be76370
--- /dev/null
+++ b/www/lib/ionic-native-transitions/test/index.html
@@ -0,0 +1,168 @@
+<!DOCTYPE html>
+<html>
+
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
+ <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
+ <title>{%=o.htmlWebpackPlugin.options.pkg.title %}</title>
+ <!-- cordova script (this will be a 404 during development) -->
+ <script src="cordova.js"></script>
+ </head>
+
+ <body ng-app="test" ng-strict-di ng-controller="MainController as main">
+ <ion-side-menus enable-menu-with-back-views="true">
+ <ion-side-menu-content>
+ <ion-nav-bar class="bar-positive">
+ <ion-nav-back-button class="button-icon ion-arrow-left-c">
+ </ion-nav-back-button>
+ <ion-nav-buttons side="left">
+ <button menu-toggle="left" class="button button-clear">
+ <i class="icon ion-navicon-round"></i>
+ </button>
+ </ion-nav-buttons>
+ <ion-nav-buttons side="right">
+ <button class="button button-clear" ng-click="main.openModal()">
+ <i class="icon ion-open"></i> Modal
+ </button>
+ </ion-nav-buttons>
+ </ion-nav-bar>
+ <ion-nav-view></ion-nav-view>
+ </ion-side-menu-content>
+ <ion-side-menu side="left" ui-view="menu"></ion-side-menu>
+ </ion-side-menus>
+
+ <script id="templates/tabs.html" type="text/ng-template">
+ <ion-tabs class="tabs-icon-top tabs-positive">
+
+ <ion-tab title="Home" icon="ion-home" ui-sref="tabs.home" ui-sref-opts="{inherit:false}">
+ <ion-nav-view name="home-tab"></ion-nav-view>
+ </ion-tab>
+
+ <ion-tab title="About" icon="ion-ios-football" ui-sref="tabs.about">
+ <ion-nav-view name="about-tab"></ion-nav-view>
+ </ion-tab>
+
+ <ion-tab title="Contact" icon="ion-bag" ui-sref="tabs.contact">
+ <ion-nav-view name="contact-tab"></ion-nav-view>
+ </ion-tab>
+
+ </ion-tab>
+
+ </ion-tabs>
+ </script>
+
+ <script id="templates/home.html" type="text/ng-template">
+ <ion-view view-title="Home">
+ <ion-content class="">
+ <p>
+ <a class="button button-full button-large icon icon-right ion-chevron-right" ui-sref="one">Start</a>
+ </p>
+ Is enabled: {{main.isEnable}}
+ <a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.enable()">Enable plugin</a>
+
+ <a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.disable()">Disable plugin</a>
+ <a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.enableBothTransitions()">Enable both transitions</a>
+ <a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.disableWithoutDisablingIonicTransitions()">Disable plugin and ionic transitions</a>
+ <a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.stateGo()">StateGo</a>
+ <button class="button button-full button-large icon icon-right ion-chevron-right" native-ui-sref="four({test: 'buyakacha2!', testParamUrl: 'haha'})" native-ui-sref-opts="{inherit:false}" native-options="{type: 'slide', direction:'down'}">
+ StateGo via directive
+ </button>
+ <button class="button button-full button-large icon icon-right ion-chevron-right" native-ui-sref="four" native-ui-sref-opts="{inherit:false}">
+ StateGo via directive without native-options
+ </button>
+ <a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.locationUrl()">LocationUrl</a>
+ <a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.sameStateGo()">sameStateGo</a>
+ <a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.sameStateGo(true)">sameStateGo with reload</a>
+ <a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.stateError()">State on error</a>
+ </ion-content>
+ </ion-view>
+ </script>
+
+ <script id="templates/one.html" type="text/ng-template">
+ <ion-view view-title="One">
+ <ion-nav-buttons side="left">
+ <button class="button button-clear" native-ui-sref="tabs.home" native-ui-sref-opts="{reload: true}" native-options="{type: 'slide', direction:'down'}">
+ <i class="icon ion-arrow-left-c"></i> Custom back
+ </button>
+ </ion-nav-buttons>
+ <ion-content class="">
+ <p>
+ <a class="button button-full button-large icon icon-right ion-chevron-right" ui-sref="two">Two</a>
+ </p>
+ </ion-content>
+ </ion-view>
+ </script>
+
+ <script id="templates/two.html" type="text/ng-template">
+ <ion-view view-title="Two">
+ <ion-content class="">
+ <p>
+ <a class="button button-full button-large icon icon-right ion-chevron-right" ui-sref="three">Three</a>
+ </p>
+ </ion-content>
+ </ion-view>
+ </script>
+
+ <script id="templates/three.html" type="text/ng-template">
+ <ion-view view-title="Three">
+ <ion-content class="">
+ <p>
+ <a class="button button-full button-large icon icon-right ion-chevron-right" ui-sref="four">Four</a>
+ <a class="button" ng-click="main.goBack()">Go back</a>
+ <a class="button" ng-click="main.goBack(-1)">Go back 1 states</a>
+ <a class="button" ng-click="main.goBack(-2)">Go back 2 states</a>
+ <a class="button" ng-click="main.goBack(-3)">Go back 3 states</a>
+ <a class="button" ng-click="main.goBack(-10)">Go back 10 states</a>
+ </p>
+ </ion-content>
+ </ion-view>
+ </script>
+
+ <script id="templates/four.html" type="text/ng-template">
+ <ion-view view-title="Four">
+ <ion-content class="">
+ </ion-content>
+ </ion-view>
+ </script>
+
+ <script id="templates/five.html" type="text/ng-template">
+ <ion-view view-title="Five">
+ <ion-content class="">
+ </ion-content>
+ </ion-view>
+ </script>
+
+ <script id="templates/about.html" type="text/ng-template">
+ <ion-view view-title="About">
+ <ion-content class="padding">
+ <h3>Create hybrid mobile apps with the web technologies you love.</h3>
+ <p>Free and open source, Ionic offers a library of mobile-optimized HTML, CSS and JS components for building highly interactive apps.</p>
+ <p>Built with Sass and optimized for AngularJS.</p>
+ </ion-content>
+ </ion-view>
+ </script>
+
+ <script id="templates/contact.html" type="text/ng-template">
+ <ion-view title="Contact">
+ <ion-content>
+ <div class="list">
+ <a class="item" href="https://twitter.com/julienrenaux">
+ @julienrenaux
+ </a>
+ <div class="item">
+ @IonicFramework
+ </div>
+ <div class="item">
+ @DriftyTeam
+ </div>
+ </div>
+ </ion-content>
+ </ion-view>
+ </script>
+
+ {% for (var chunk in o.htmlWebpackPlugin.files.chunks) { %}
+ <script src="{%=o.htmlWebpackPlugin.files.chunks[chunk].entry %}"></script>
+ {% } %}
+ </body>
+
+</html>
diff --git a/www/lib/ionic-native-transitions/test/index.js b/www/lib/ionic-native-transitions/test/index.js
new file mode 100644
index 00000000..e7176887
--- /dev/null
+++ b/www/lib/ionic-native-transitions/test/index.js
@@ -0,0 +1,21 @@
+import 'ionic-sdk/release/js/ionic.bundle';
+import 'ionic-sdk/release/css/ionic.css';
+import '../dist/ionic-native-transitions.js';
+import './angular-ios9-uiwebview.patch.js';
+import Config from './config.js';
+import Controller from './controller.js';
+
+let mod = angular.module('test', [
+ 'ionic',
+ 'ui.router',
+ 'ionic-native-transitions',
+ 'ngIOS9UIWebViewPatch'
+]);
+
+mod.config(Config);
+mod.controller('MainController', Controller);
+mod.run(($log) => {
+ $log.info('test running');
+});
+
+export default mod = mod.name;