diff --git a/app/assets/javascripts/darkswarm/controllers/products/product_node_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/products/product_node_controller.js.coffee index fb8ac8d288..2faeaec3bb 100644 --- a/app/assets/javascripts/darkswarm/controllers/products/product_node_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/products/product_node_controller.js.coffee @@ -4,3 +4,9 @@ Darkswarm.controller "ProductNodeCtrl", ($scope, $modal, FilterSelectorsService) $scope.triggerProductModal = -> $scope.productPropertySelectors = FilterSelectorsService.createSelectors() $modal.open(templateUrl: "product_modal.html", scope: $scope) + + $scope.hasVerticalScrollBar = (selector) -> + elem = angular.element(document.querySelector(selector)) + return false unless elem[0] + + elem[0].scrollHeight > elem[0].clientHeight diff --git a/app/assets/javascripts/templates/product_modal.html.haml b/app/assets/javascripts/templates/product_modal.html.haml index 5ce84d622b..8c6ec7a282 100644 --- a/app/assets/javascripts/templates/product_modal.html.haml +++ b/app/assets/javascripts/templates/product_modal.html.haml @@ -19,6 +19,6 @@ %ng-include{src: "'partials/close.html'"} -.buttons +.buttons{ "ng-show": "hasVerticalScrollBar('.reveal-modal')" } .button.bottom-close-button{"ng-click" => "$close()"} = t('js.shop.products.product_modal.close') diff --git a/spec/javascripts/unit/darkswarm/controllers/products/product_node_controller_spec.js.coffee b/spec/javascripts/unit/darkswarm/controllers/products/product_node_controller_spec.js.coffee index fa99b2d1ec..f33e144ae9 100644 --- a/spec/javascripts/unit/darkswarm/controllers/products/product_node_controller_spec.js.coffee +++ b/spec/javascripts/unit/darkswarm/controllers/products/product_node_controller_spec.js.coffee @@ -16,3 +16,24 @@ describe "ProductNodeCtrl", -> it "puts a reference to supplier in the scope", -> expect(scope.enterprise).toBe product.supplier + + describe "#hasVerticalScrollBar", -> + it "returns false if modal element is not found", -> + spyOn(angular, 'element').and.returnValue([]) + + expect(scope.hasVerticalScrollBar()).toBe false + + it "returns false if scrollHeight is equal to clientHeight", -> + spyOn(angular, 'element').and.returnValue([{ scrollHeight: 100, clientHeight: 100 }]) + + expect(scope.hasVerticalScrollBar()).toBe false + + it "returns false if scrollHeight is smaller than clientHeight", -> + spyOn(angular, 'element').and.returnValue([{ scrollHeight: 50, clientHeight: 100 }]) + + expect(scope.hasVerticalScrollBar()).toBe false + + it "returns true if scrollHeight is bigger than clientHeight", -> + spyOn(angular, 'element').and.returnValue([{ scrollHeight: 100, clientHeight: 50 }]) + + expect(scope.hasVerticalScrollBar()).toBe true