diff --git a/demo/ng-slide-down.js b/demo/ng-slide-down.js index c58710f..c22a878 100644 --- a/demo/ng-slide-down.js +++ b/demo/ng-slide-down.js @@ -42,21 +42,23 @@ if (openPromise) { $timeout.cancel(openPromise); } - element.css({ - overflow: 'hidden', - transitionProperty: 'height', - transitionDuration: '' + duration + 's', - transitionTimingFunction: timingFunction, - height: getHeight() - }); - return openPromise = $timeout(function () { - return element.css({ - overflow: 'visible', - transition: 'none', - height: 'auto' + element.css({ height: getHeight() }); + return $timeout(function () { + element.css({ + overflow: 'hidden', + transitionProperty: 'height', + transitionDuration: '' + duration + 's', + transitionTimingFunction: timingFunction }); - }, duration * 1000); - }); + return openPromise = $timeout(function () { + return element.css({ + overflow: 'visible', + transition: 'none', + height: 'auto' + }); + }, duration * 1000, false); + }, 0, false); + }, 0, false); }; hide = function () { if (openPromise) { @@ -91,7 +93,7 @@ element.css({ height: getHeight() }); element[0].clientHeight; } - return $timeout(hide); + return $timeout(hide, 0, false); } }); }; diff --git a/dist/ng-slide-down.js b/dist/ng-slide-down.js index c58710f..c22a878 100644 --- a/dist/ng-slide-down.js +++ b/dist/ng-slide-down.js @@ -42,21 +42,23 @@ if (openPromise) { $timeout.cancel(openPromise); } - element.css({ - overflow: 'hidden', - transitionProperty: 'height', - transitionDuration: '' + duration + 's', - transitionTimingFunction: timingFunction, - height: getHeight() - }); - return openPromise = $timeout(function () { - return element.css({ - overflow: 'visible', - transition: 'none', - height: 'auto' + element.css({ height: getHeight() }); + return $timeout(function () { + element.css({ + overflow: 'hidden', + transitionProperty: 'height', + transitionDuration: '' + duration + 's', + transitionTimingFunction: timingFunction }); - }, duration * 1000); - }); + return openPromise = $timeout(function () { + return element.css({ + overflow: 'visible', + transition: 'none', + height: 'auto' + }); + }, duration * 1000, false); + }, 0, false); + }, 0, false); }; hide = function () { if (openPromise) { @@ -91,7 +93,7 @@ element.css({ height: getHeight() }); element[0].clientHeight; } - return $timeout(hide); + return $timeout(hide, 0, false); } }); }; diff --git a/dist/ng-slide-down.min.js b/dist/ng-slide-down.min.js index e1c76d3..5582384 100644 --- a/dist/ng-slide-down.min.js +++ b/dist/ng-slide-down.min.js @@ -1,2 +1,2 @@ -/*! ng-slide-down 29-04-2015 */ -(function(){"use strict";angular.module("ng-slide-down",[]).directive("ngSlideDown",["$timeout",function(a){var b,c;return b=function(a,b){return void 0!==b.lazyRender?"
":""},c=function(b,c,d,e,f){var g,h,i,j,k,l,m,n,o,p,q;return h=d.duration||1,q=d.timingFunction||"ease-in-out",i=c.scope(),j=d.emitOnClose,n=d.onClose,m=void 0!==d.lazyRender,g=null,o=null,k=function(a){var b,d,e,f,g;for(e=0,d=c.children(),f=0,g=d.length;g>f;f++)b=d[f],e+=b.clientHeight;return""+e+"px"},p=function(){return g&&a.cancel(g),m&&(b.lazyRender=!0),a(function(){return o&&a.cancel(o),c.css({overflow:"hidden",transitionProperty:"height",transitionDuration:""+h+"s",transitionTimingFunction:q,height:k()}),o=a(function(){return c.css({overflow:"visible",transition:"none",height:"auto"})},1e3*h)})},l=function(){return o&&a.cancel(o),c.css({overflow:"hidden",transitionProperty:"height",transitionDuration:""+h+"s",transitionTimingFunction:q,height:"0px"}),j||n||m?g=a(function(){return j&&b.$emit(j,{}),n&&i.$eval(n),m?b.lazyRender=!1:void 0},1e3*h):void 0},b.$watch("expanded",function(b,d){return b?a(p):(null!=b&&(c.css({height:k()}),c[0].clientHeight),a(l))})},{restrict:"A",scope:{expanded:"=ngSlideDown"},transclude:!0,link:c,template:function(a,c){return b(a,c)}}}])}).call(this); \ No newline at end of file +/*! ng-slide-down 26-11-2015 */ +(function(){"use strict";angular.module("ng-slide-down",[]).directive("ngSlideDown",["$timeout",function(a){var b,c;return b=function(a,b){return void 0!==b.lazyRender?"":""},c=function(b,c,d,e,f){var g,h,i,j,k,l,m,n,o,p,q;return h=d.duration||1,q=d.timingFunction||"ease-in-out",i=c.scope(),j=d.emitOnClose,n=d.onClose,m=void 0!==d.lazyRender,g=null,o=null,k=function(a){var b,d,e,f,g;for(e=0,d=c.children(),f=0,g=d.length;g>f;f++)b=d[f],e+=b.clientHeight;return""+e+"px"},p=function(){return g&&a.cancel(g),m&&(b.lazyRender=!0),a(function(){return o&&a.cancel(o),c.css({height:k()}),a(function(){return c.css({overflow:"hidden",transitionProperty:"height",transitionDuration:""+h+"s",transitionTimingFunction:q}),o=a(function(){return c.css({overflow:"visible",transition:"none",height:"auto"})},1e3*h,!1)},0,!1)},0,!1)},l=function(){return o&&a.cancel(o),c.css({overflow:"hidden",transitionProperty:"height",transitionDuration:""+h+"s",transitionTimingFunction:q,height:"0px"}),j||n||m?g=a(function(){return j&&b.$emit(j,{}),n&&i.$eval(n),m?b.lazyRender=!1:void 0},1e3*h):void 0},b.$watch("expanded",function(b,d){return b?a(p):(null!=b&&(c.css({height:k()}),c[0].clientHeight),a(l,0,!1))})},{restrict:"A",scope:{expanded:"=ngSlideDown"},transclude:!0,link:c,template:function(a,c){return b(a,c)}}}])}).call(this); \ No newline at end of file diff --git a/src/ng-slide-down.coffee b/src/ng-slide-down.coffee index 55f9777..c38657f 100644 --- a/src/ng-slide-down.coffee +++ b/src/ng-slide-down.coffee @@ -29,19 +29,26 @@ angular.module("ng-slide-down", []).directive "ngSlideDown", ($timeout )-> $timeout -> $timeout.cancel(openPromise) if openPromise element.css { - overflow: "hidden" - transitionProperty: "height" - transitionDuration: "#{duration}s" - transitionTimingFunction: timingFunction height: getHeight() } - openPromise = $timeout ()-> + + $timeout -> element.css { - overflow: "visible" - transition: "none", - height: "auto" + overflow: "hidden" + transitionProperty: "height" + transitionDuration: "#{duration}s" + transitionTimingFunction: timingFunction } - , duration*1000 + + openPromise = $timeout ()-> + element.css { + overflow: "visible" + transition: "none", + height: "auto" + } + , duration*1000, false + , 0, false + ,0, false hide = ()-> @@ -69,7 +76,7 @@ angular.module("ng-slide-down", []).directive "ngSlideDown", ($timeout )-> height: getHeight() } element[0].clientHeight # Force reflow so the animation triggers reliably - $timeout hide + $timeout hide, 0, false return { restrict: 'A'