From a658eac21f9b2131750f9253ca2a608454d355f4 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Tue, 12 Feb 2013 15:24:15 +0100 Subject: also slide down other elements that have the click slide handler and listeners on focus lost when an element wit this directive is clicked --- coffee/directives/clickslidetoggle.coffee | 15 ++++++++++++--- coffee/lib/services/notification.coffee | 0 2 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 coffee/lib/services/notification.coffee (limited to 'coffee') diff --git a/coffee/directives/clickslidetoggle.coffee b/coffee/directives/clickslidetoggle.coffee index f9399e352..51bf76bd2 100644 --- a/coffee/directives/clickslidetoggle.coffee +++ b/coffee/directives/clickslidetoggle.coffee @@ -18,7 +18,8 @@ Used to slide up an area and can be customized by passing an expression. If selector is defined, a different area is slid up on click If hideOnFocusLost is defined, the slid up area will hide when the focus is lost ### -angular.module('News').directive 'clickSlideToggle', -> +angular.module('News').directive 'clickSlideToggle', +['$rootScope', ($rootScope) -> return (scope, elm, attr) -> options = scope.$eval(attr.clickSlideToggle) @@ -36,11 +37,19 @@ angular.module('News').directive 'clickSlideToggle', -> if angular.isDefined(options.hideOnFocusLost) and options.hideOnFocusLost $(document.body).click -> - if slideArea.is(':visible') and not slideArea.is(':animated') - slideArea.slideUp() + $rootScope.$broadcast 'lostFocus' + + $rootScope.$on 'lostFocus', (scope, params) -> + if params != slideArea + if slideArea.is(':visible') and not slideArea.is(':animated') + slideArea.slideUp() slideArea.click (e) -> + $rootScope.$broadcast 'lostFocus', slideArea e.stopPropagation() elm.click (e) -> + $rootScope.$broadcast 'lostFocus', slideArea e.stopPropagation() + +] \ No newline at end of file diff --git a/coffee/lib/services/notification.coffee b/coffee/lib/services/notification.coffee new file mode 100644 index 000000000..e69de29bb -- cgit v1.2.3