From f5c0ae0f4192f3550502e558653a7eef37a5d54c Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Thu, 7 May 2015 16:48:37 +1000 Subject: [PATCH] Moving dropdown to its own module folder and renaming --- app/assets/javascripts/admin/admin.js.coffee | 2 +- app/assets/javascripts/admin/all.js | 1 + .../controllers/dropdown_controller.js.coffee | 2 ++ .../directives/close_on_click.js.coffee | 5 +++ .../dropdown/directives/dropdown.js.coffee | 20 ++++++++++++ .../admin/dropdown/dropdown.js.coffee | 32 +------------------ 6 files changed, 30 insertions(+), 32 deletions(-) create mode 100644 app/assets/javascripts/admin/dropdown/controllers/dropdown_controller.js.coffee create mode 100644 app/assets/javascripts/admin/dropdown/directives/close_on_click.js.coffee create mode 100644 app/assets/javascripts/admin/dropdown/directives/dropdown.js.coffee diff --git a/app/assets/javascripts/admin/admin.js.coffee b/app/assets/javascripts/admin/admin.js.coffee index 1c9f65f91a..8a3de223fd 100644 --- a/app/assets/javascripts/admin/admin.js.coffee +++ b/app/assets/javascripts/admin/admin.js.coffee @@ -1,3 +1,3 @@ -angular.module("ofn.admin", ["ngResource", "ngAnimate", "ofn.dropdown", "admin.products", "admin.taxons", "infinite-scroll"]).config ($httpProvider) -> +angular.module("ofn.admin", ["ngResource", "ngAnimate", "admin.dropdown", "admin.products", "admin.taxons", "infinite-scroll"]).config ($httpProvider) -> $httpProvider.defaults.headers.common["X-CSRF-Token"] = $("meta[name=csrf-token]").attr("content") $httpProvider.defaults.headers.common["Accept"] = "application/json, text/javascript, */*" diff --git a/app/assets/javascripts/admin/all.js b/app/assets/javascripts/admin/all.js index 03999b3cf0..f6d016dc9a 100644 --- a/app/assets/javascripts/admin/all.js +++ b/app/assets/javascripts/admin/all.js @@ -19,6 +19,7 @@ //= require ../shared/ng-infinite-scroll.min.js //= require ./admin //= require ./customers/customers +//= require ./dropdown/dropdown //= require ./enterprises/enterprises //= require ./enterprise_groups/enterprise_groups //= require ./index_utils/index_utils diff --git a/app/assets/javascripts/admin/dropdown/controllers/dropdown_controller.js.coffee b/app/assets/javascripts/admin/dropdown/controllers/dropdown_controller.js.coffee new file mode 100644 index 0000000000..02e47ff9f7 --- /dev/null +++ b/app/assets/javascripts/admin/dropdown/controllers/dropdown_controller.js.coffee @@ -0,0 +1,2 @@ +angular.module("admin.dropdown").controller "DropDownCtrl", ($scope) -> + $scope.expanded = false diff --git a/app/assets/javascripts/admin/dropdown/directives/close_on_click.js.coffee b/app/assets/javascripts/admin/dropdown/directives/close_on_click.js.coffee new file mode 100644 index 0000000000..9b506cb8fb --- /dev/null +++ b/app/assets/javascripts/admin/dropdown/directives/close_on_click.js.coffee @@ -0,0 +1,5 @@ + angular.module("admin.dropdown").directive "ofnCloseOnClick", ($document) -> + link: (scope, element, attrs) -> + element.click (event) -> + event.stopPropagation() + scope.$emit "offClick" diff --git a/app/assets/javascripts/admin/dropdown/directives/dropdown.js.coffee b/app/assets/javascripts/admin/dropdown/directives/dropdown.js.coffee new file mode 100644 index 0000000000..560598d23e --- /dev/null +++ b/app/assets/javascripts/admin/dropdown/directives/dropdown.js.coffee @@ -0,0 +1,20 @@ + angular.module("admin.dropdown").directive "ofnDropDown", ($document) -> + link: (scope, element, attrs) -> + outsideClickListener = (event) -> + unless $(event.target).is("div.ofn_drop_down##{attrs.id} div.menu") || + $(event.target).parents("div.ofn_drop_down##{attrs.id} div.menu").length > 0 + scope.$emit "offClick" + + element.click (event) -> + if !scope.expanded + event.stopPropagation() + scope.deregistrationCallback = scope.$on "offClick", -> + $document.off "click", outsideClickListener + scope.$apply -> + scope.expanded = false + element.removeClass "expanded" + scope.deregistrationCallback() + $document.on "click", outsideClickListener + scope.$apply -> + scope.expanded = true + element.addClass "expanded" diff --git a/app/assets/javascripts/admin/dropdown/dropdown.js.coffee b/app/assets/javascripts/admin/dropdown/dropdown.js.coffee index e18407abcc..ae6118390f 100644 --- a/app/assets/javascripts/admin/dropdown/dropdown.js.coffee +++ b/app/assets/javascripts/admin/dropdown/dropdown.js.coffee @@ -1,31 +1 @@ -dropDownModule = angular.module("ofn.dropdown", []) - -dropDownModule.directive "ofnDropDown", ($document) -> - link: (scope, element, attrs) -> - outsideClickListener = (event) -> - unless $(event.target).is("div.ofn_drop_down##{attrs.id} div.menu") || - $(event.target).parents("div.ofn_drop_down##{attrs.id} div.menu").length > 0 - scope.$emit "offClick" - - element.click (event) -> - if !scope.expanded - event.stopPropagation() - scope.deregistrationCallback = scope.$on "offClick", -> - $document.off "click", outsideClickListener - scope.$apply -> - scope.expanded = false - element.removeClass "expanded" - scope.deregistrationCallback() - $document.on "click", outsideClickListener - scope.$apply -> - scope.expanded = true - element.addClass "expanded" - -dropDownModule.directive "ofnCloseOnClick", ($document) -> - link: (scope, element, attrs) -> - element.click (event) -> - event.stopPropagation() - scope.$emit "offClick" - -dropDownModule.controller "DropDownCtrl", ($scope) -> - $scope.expanded = false \ No newline at end of file +angular.module("admin.dropdown", [])