angular-modal-service
Version:
AngularJS Service for showing Modals and Popups
1 lines • 3.63 kB
JavaScript
!function(o){var t={};function l(e){if(t[e])return t[e].exports;var n=t[e]={i:e,l:!1,exports:{}};return o[e].call(n.exports,n,n.exports,l),n.l=!0,n.exports}l.m=o,l.c=t,l.d=function(e,n,o){l.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:o})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(n,e){if(1&e&&(n=l(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var o=Object.create(null);if(l.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var t in n)l.d(o,t,function(e){return n[e]}.bind(null,t));return o},l.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(n,"a",n),n},l.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},l.p="",l(l.s=0)}([function(e,n,o){"use strict";angular.module("angularModalService",[]).provider("ModalService",function(){var n={closeDelay:0};this.configureOptions=function(e){angular.extend(n,e)},this.$get=["$animate","$document","$compile","$controller","$http","$rootScope","$q","$templateRequest","$timeout",function($,M,j,O,e,S,C,u,x){return new function(e){var h=this;h.configOptions=e,h.openModals=[],h.closeModals=function(e,n){for(n=n||h.configOptions.closeDelay;h.openModals.length;)h.openModals[0].close(e,n),h.openModals.splice(0,1)};h.showModal=function(v){var e,n,o,t,l,r,c;v.component&&((e=v).controller=(c=e,["$scope","close",function(e,n){e.close=n,e.bindings=c.bindings}]),e.template=(t=(o=function(e){return e.replace(/([a-z0-9])([A-Z])/g,function(e,n,o){return[n,o].join("-").toLowerCase()})})((n=e).component),l="<"+t+' close="close"',0<(r=Object.keys(n.bindings||{})).length&&(l+=" "+r.map(function(e){return o(e)+'="bindings.'+e+'"'}).join(" ")),l+"></"+t+">"));var s,a,i,b=angular.element(M[0].body),y=C.defer();return v.controller?(s=v.template,a=v.templateUrl,i=C.defer(),s?i.resolve(s):a?u(a,!0).then(function(e){i.resolve(e)},function(e){i.reject(e)}):i.reject("No template or templateUrl has been specified."),i.promise).then(function(e){var o={},t=(v.scope||S).$new(),l=null,n=v.locationChangeSuccess;!1===n?l=angular.noop:angular.isNumber(n)&&0<=n?x(function(){l=S.$on("$locationChangeSuccess",a.close)},n):x(function(){l=S.$on("$locationChangeSuccess",a.close)},h.configOptions.closeDelay);var r=C.defer(),c=C.defer(),s=!1,a={$scope:t,close:function(e,n){s||(s=!0,n=n||h.configOptions.closeDelay,"function"==typeof v.preClose&&v.preClose(o,e,n),null==n&&(n=0),x(function(){var n;n=e,r.resolve(n),v.bodyClass&&b[0].classList.remove(v.bodyClass),$.leave(i).then(function(){if(i){c.resolve(n),t.$destroy();for(var e=0;e<h.openModals.length;e++)if(h.openModals[e].modal===o){h.openModals.splice(e,1);break}a.close=null,t=i=a=o=r=y=null}}),l&&l()},n))}};v.inputs&&angular.extend(a,v.inputs);var i=j(e)(t);a.$element=i;var u=t[v.controllerAs],p=O(v.controller,a,!1,v.controllerAs);v.controllerAs&&u&&angular.extend(p,u);var f,d,m,g=b;angular.isString(v.appendElement)?g=angular.element(M[0].querySelector(v.appendElement)):v.appendElement&&(g=v.appendElement),d=i,0<(m=(f=g).children()).length?$.enter(d,f,m[m.length-1]):$.enter(d,f),v.bodyClass&&b[0].classList.add(v.bodyClass),o.controller=p,o.scope=t,o.element=i,o.close=r.promise,o.closed=c.promise,angular.isFunction(o.controller.$onInit)&&o.controller.$onInit(),y.resolve(o),document.activeElement.blur(),h.openModals.push({modal:o,close:a.close})}).then(null,function(e){y.reject(e)}):y.reject("No controller has been specified."),y.promise}}(n)}]})}]);