diff options
Diffstat (limited to 'assets/js/src/Dropdown.js')
-rw-r--r-- | assets/js/src/Dropdown.js | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/assets/js/src/Dropdown.js b/assets/js/src/Dropdown.js index 81ce2509..146a3c17 100644 --- a/assets/js/src/Dropdown.js +++ b/assets/js/src/Dropdown.js @@ -14,25 +14,31 @@ Dropdown.prototype.listen = function() { self.close(); var submenu = $(this).next('ul'); - var submenuHeight = 240; var offset = $(this).offset(); - var height = $(this).height(); // Clone the submenu outside of the column to avoid clipping issue with overflow $("body").append(jQuery("<div>", {"id": "dropdown"})); submenu.clone().appendTo("#dropdown"); var clone = $("#dropdown ul"); - clone.css('left', offset.left); + clone.addClass('dropdown-submenu-open'); + + var submenuHeight = clone.outerHeight(); + var submenuWidth = clone.outerWidth(); if (offset.top + submenuHeight - $(window).scrollTop() > $(window).height()) { - clone.css('top', offset.top - submenuHeight - height); + clone.css('top', offset.top - submenuHeight - 5); } else { - clone.css('top', offset.top + height); + clone.css('top', offset.top + $(this).height()); } - clone.addClass('dropdown-submenu-open'); + if (offset.left + submenuWidth > $(window).width()) { + clone.css('left', offset.left - submenuWidth + $(this).outerWidth()); + } + else { + clone.css('left', offset.left); + } }); $(document).on('click', '.dropdown-submenu-open li', function(e) { |