summaryrefslogtreecommitdiff
path: root/www/js/app.js
diff options
context:
space:
mode:
authorpliablepixels <pliablepixels@gmail.com>2016-02-26 13:02:08 -0500
committerpliablepixels <pliablepixels@gmail.com>2016-02-26 13:02:08 -0500
commit05e699b433ff4b9df9f6927c12a4950f379bb5a8 (patch)
treec0d4cd77751eb7682eb48c36683bbe7b818f94be /www/js/app.js
parent896ef6436276ddeed166909a917801f97c06ead1 (diff)
#174 - multiple popups will stack now, each can exit
Former-commit-id: 1ddeec063ed71650338c725bfa58f8a65bddaa4f
Diffstat (limited to 'www/js/app.js')
-rw-r--r--www/js/app.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/www/js/app.js b/www/js/app.js
index 0d95a502..c76546e2 100644
--- a/www/js/app.js
+++ b/www/js/app.js
@@ -296,6 +296,55 @@ angular.module('zmApp', [
}])
+//credit: https://github.com/driftyco/ionic/issues/3131
+.factory('SecuredPopups', [
+ '$ionicPopup',
+ '$q',
+ function ($ionicPopup, $q) {
+
+ var firstDeferred = $q.defer();
+ firstDeferred.resolve();
+
+ var lastPopupPromise = firstDeferred.promise;
+
+ // Change this var to true if you want that popups will automaticly close before opening another
+ var closeAndOpen = false;
+
+ return {
+ 'show': function (method, object) {
+ var deferred = $q.defer();
+ var closeMethod = null;
+ deferred.promise.isOpen = false;
+ deferred.promise.close = function () {
+ if (deferred.promise.isOpen && angular.isFunction(closeMethod)) {
+ closeMethod();
+ }
+ };
+
+ if (closeAndOpen && lastPopupPromise.isOpen) {
+ lastPopupPromise.close();
+ }
+
+ lastPopupPromise.then(function () {
+ deferred.promise.isOpen = true;
+ var popupInstance = $ionicPopup[method](object);
+
+ closeMethod = popupInstance.close;
+ popupInstance.then(function (res) {
+ deferred.promise.isOpen = false;
+ deferred.resolve(res);
+ });
+ });
+
+ lastPopupPromise = deferred.promise;
+
+ return deferred.promise;
+ }
+ };
+ }
+])
+
+
//------------------------------------------------------------------
// this directive will be called any time an image completes loading
// via img tags where this directive is added (I am using this in