forked from mgcrea/angular-strap
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodal.min.js
More file actions
9 lines (9 loc) · 4.81 KB
/
modal.min.js
File metadata and controls
9 lines (9 loc) · 4.81 KB
1
2
3
4
5
6
7
8
9
/**
* angular-strap
* @version v2.3.8 - 2016-03-31
* @link http://mgcrea.github.io/angular-strap
* @author Olivier Louvignes <olivier@mg-crea.com> (https://github.com/mgcrea)
* @license MIT License, http://www.opensource.org/licenses/MIT
*/
'use strict';angular.module('mgcrea.ngStrap.modal',['mgcrea.ngStrap.core','mgcrea.ngStrap.helpers.dimensions']).provider('$modal',function(){var n=this.defaults={animation:'am-fade',backdropAnimation:'am-fade',customClass:'',prefixClass:'modal',prefixEvent:'modal',placement:'top',templateUrl:'modal/modal.tpl.html',template:'',contentTemplate:!1,container:!1,element:null,backdrop:!0,keyboard:!0,html:!1,show:!0,size:null};this.$get=['$window','$rootScope','$bsCompiler','$animate','$timeout','$sce','dimensions',function(e,o,t,a,i,l,s){function r(e){function i(){A.$emit(S.prefixEvent+'.show',y)}function s(){A.$emit(S.prefixEvent+'.hide',y),f.removeClass(S.prefixClass+'-open'),S.animation&&f.removeClass(S.prefixClass+'-with-'+S.animation)}function r(){S.backdrop&&(D.on('click',k),T.on('click',k),T.on('wheel',C))}function w(){S.backdrop&&(D.off('click',k),T.off('click',k),T.off('wheel',C))}function b(){S.keyboard&&D.on('keyup',y.$onKeyUp)}function v(){S.keyboard&&D.off('keyup',y.$onKeyUp)}function k(n){n.target===n.currentTarget&&('static'===S.backdrop?y.focus():y.hide())}function C(n){n.preventDefault()}function x(){y.$isShown&&null!==D&&(w(),v()),U&&(U.$destroy(),U=null),D&&(D.remove(),D=y.$element=null)}var y={},S=y.$options=angular.extend({},n,e),E=y.$promise=t.compile(S),A=y.$scope=S.scope&&S.scope.$new()||o.$new();S.element||S.container||(S.container='body'),y.$id=S.id||S.element&&S.element.attr('id')||'',d(['title','content'],function(n){S[n]&&(A[n]=l.trustAsHtml(S[n]))}),A.$hide=function(){A.$$postDigest(function(){y.hide()})},A.$show=function(){A.$$postDigest(function(){y.show()})},A.$toggle=function(){A.$$postDigest(function(){y.toggle()})},y.$isShown=A.$isShown=!1;var z,D,U,T=angular.element('<div class="'+S.prefixClass+'-backdrop"/>');return T.css({position:'fixed',top:'0px',left:'0px',bottom:'0px',right:'0px'}),E.then(function(n){z=n,y.init()}),y.init=function(){S.show&&A.$$postDigest(function(){y.show()})},y.destroy=function(){x(),T&&(T.remove(),T=null),A.$destroy()},y.show=function(){if(!y.$isShown){var n,e;if(angular.isElement(S.container)?(n=S.container,e=S.container[0].lastChild?angular.element(S.container[0].lastChild):null):S.container?(n=u(S.container),e=n[0]&&n[0].lastChild?angular.element(n[0].lastChild):null):(n=null,e=S.element),D&&x(),U=y.$scope.$new(),D=y.$element=z.link(U,function(n,e){}),S.backdrop&&(D.css({'z-index':$+20*p}),T.css({'z-index':h+20*p}),p++),!A.$emit(S.prefixEvent+'.show.before',y).defaultPrevented){D.css({display:'block'}).addClass(S.placement),S.customClass&&D.addClass(S.customClass),S.size&&g[S.size]&&angular.element(u('.modal-dialog',D[0])).addClass(g[S.size]),S.animation&&(S.backdrop&&T.addClass(S.backdropAnimation),D.addClass(S.animation)),S.backdrop&&a.enter(T,f,null),angular.version.minor<=2?a.enter(D,n,e,i):a.enter(D,n,e).then(i),y.$isShown=A.$isShown=!0,c(A);var o=D[0];m(function(){o.focus()}),f.addClass(S.prefixClass+'-open'),S.animation&&f.addClass(S.prefixClass+'-with-'+S.animation),r(),b()}}},y.hide=function(){y.$isShown&&(S.backdrop&&p--,A.$emit(S.prefixEvent+'.hide.before',y).defaultPrevented||(angular.version.minor<=2?a.leave(D,s):a.leave(D).then(s),S.backdrop&&a.leave(T),y.$isShown=A.$isShown=!1,c(A),w(),v()))},y.toggle=function(){y.$isShown?y.hide():y.show()},y.focus=function(){D[0].focus()},y.$onKeyUp=function(n){27===n.which&&y.$isShown&&(y.hide(),n.stopPropagation())},y}function c(n){n.$$phase||n.$root&&n.$root.$$phase||n.$digest()}function u(n,e){return angular.element((e||document).querySelectorAll(n))}var d=angular.forEach,m=e.requestAnimationFrame||e.setTimeout,f=angular.element(e.document.body),p=0,$=1050,h=1040,g={lg:'modal-lg',sm:'modal-sm'};return r}]}).directive('bsModal',['$window','$sce','$modal',function(n,e,o){return{restrict:'EAC',scope:!0,link:function(n,t,a,i){var l={scope:n,element:t,show:!1};angular.forEach(['template','templateUrl','controller','controllerAs','contentTemplate','placement','backdrop','keyboard','html','container','animation','backdropAnimation','id','prefixEvent','prefixClass','customClass','modalClass','size'],function(n){angular.isDefined(a[n])&&(l[n]=a[n])}),l.modalClass&&(l.customClass=l.modalClass);var s=/^(false|0|)$/i;angular.forEach(['backdrop','keyboard','html','container'],function(n){angular.isDefined(a[n])&&s.test(a[n])&&(l[n]=!1)}),angular.forEach(['title','content'],function(o){a[o]&&a.$observe(o,function(t,a){n[o]=e.trustAsHtml(t)})}),a.bsModal&&n.$watch(a.bsModal,function(e,o){angular.isObject(e)?angular.extend(n,e):n.content=e},!0);var r=o(l);t.on(a.trigger||'click',r.toggle),n.$on('$destroy',function(){r&&r.destroy(),l=null,r=null})}}}]);
//# sourceMappingURL=modal.min.js.map