diff options
author | Frederic Guillot <fred@kanboard.net> | 2015-08-07 22:42:29 -0400 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2015-08-07 22:42:29 -0400 |
commit | 679cb94de4d9acb4dac9f236666e83ebfe91ffc1 (patch) | |
tree | e416c605b7779f583ff287e648d63a52f50c4f69 /assets/js/src/Dropdown.js | |
parent | 2d5621af2f3678ce4959a450663f5657098144bc (diff) |
Rewrite dropdown menu
Diffstat (limited to 'assets/js/src/Dropdown.js')
-rw-r--r-- | assets/js/src/Dropdown.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/assets/js/src/Dropdown.js b/assets/js/src/Dropdown.js new file mode 100644 index 00000000..2390fd9f --- /dev/null +++ b/assets/js/src/Dropdown.js @@ -0,0 +1,36 @@ +function Dropdown() { +} + +Dropdown.prototype.listen = function() { + var self = this; + + $(document).on('click', function() { + self.close(); + }); + + $(document).on('click', '.dropdown-menu', function(e) { + e.preventDefault(); + e.stopImmediatePropagation(); + + var submenu = $(this).next('ul'); + var submenuHeight = 240; + + if (! submenu.is(':visible')) { + self.close(); + + if ($(this).offset().top + submenuHeight > $(window).height()) { + submenu.addClass('dropdown-submenu-open dropdown-submenu-top'); + } + else { + submenu.addClass('dropdown-submenu-open'); + } + } + else { + self.close(); + } + }); +}; + +Dropdown.prototype.close = function() { + $('.dropdown-submenu-open').removeClass('dropdown-submenu-open'); +}; |