From 3728f012d70d8c47cdf3d25d0a90d06d72e64c37 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 18 Apr 2017 10:19:42 -0400 Subject: [PATCH] make dropdown append more generic --- src/app/global/mainController.js | 53 ++++++++++--------- .../views/organizationPeople.html | 2 +- .../views/organizationSubvaults.html | 2 +- .../views/organizationSubvaultsUsers.html | 2 +- .../organization/views/organizationVault.html | 2 +- src/app/settings/settingsDomainsController.js | 2 +- src/app/settings/views/settings.html | 2 +- src/app/settings/views/settingsDomains.html | 4 +- src/app/vault/views/vault.html | 4 +- src/app/vault/views/vaultSubvaults.html | 2 +- 10 files changed, 39 insertions(+), 36 deletions(-) diff --git a/src/app/global/mainController.js b/src/app/global/mainController.js index 7aca9060..4eb0678b 100644 --- a/src/app/global/mainController.js +++ b/src/app/global/mainController.js @@ -52,10 +52,11 @@ angular $scope.$broadcast('vaultAddFolder'); }; - // Append dropdown menus to body + // Append dropdown menu somewhere else var bodyScrollbarWidth, - bodyDropdownMenu, - bodyDropdownMenuParent; + appendedDropdownMenu, + appendedDropdownMenuParent; + var dropdownHelpers = { scrollbarWidth: function () { if (!bodyScrollbarWidth) { @@ -77,58 +78,60 @@ angular }; $(window).on('show.bs.dropdown', function (e) { - var target = bodyDropdownMenuParent = $(e.target); - if (!target.hasClass('dropdown-to-body')) { + var target = appendedDropdownMenuParent = $(e.target); + + var appendTo = target.data('appendTo'); + if (!appendTo) { return true; } - bodyDropdownMenu = target.find('.dropdown-menu'); - var body = $('body'); - body.append(bodyDropdownMenu.detach()); + appendedDropdownMenu = target.find('.dropdown-menu'); + var appendToEl = $(appendTo); + appendToEl.append(appendedDropdownMenu.detach()); - var eOffset = target.offset(); + var offset = target.offset(); var css = { display: 'block', - top: eOffset.top + target.outerHeight() + top: offset.top + target.outerHeight() }; - if (bodyDropdownMenu.hasClass('dropdown-menu-right')) { + if (appendedDropdownMenu.hasClass('dropdown-menu-right')) { var scrollbarInfo = dropdownHelpers.scrollbarInfo(); var scrollbarWidth = 0; if (scrollbarInfo.visible && scrollbarInfo.width) { scrollbarWidth = scrollbarInfo.width; } - css.right = $window.innerWidth - scrollbarWidth - (eOffset.left + target.prop('offsetWidth')) + 'px'; + css.right = $window.innerWidth - scrollbarWidth - (offset.left + target.prop('offsetWidth')) + 'px'; css.left = 'auto'; } else { - css.left = eOffset.left + 'px'; + css.left = offset.left + 'px'; css.right = 'auto'; } - bodyDropdownMenu.css(css); + appendedDropdownMenu.css(css); }); $(window).on('hide.bs.dropdown', function (e) { - if (!bodyDropdownMenu) { + if (!appendedDropdownMenu) { return true; } - $(e.target).append(bodyDropdownMenu.detach()); - bodyDropdownMenu.hide(); - bodyDropdownMenu = null; - bodyDropdownMenuParent = null; + $(e.target).append(appendedDropdownMenu.detach()); + appendedDropdownMenu.hide(); + appendedDropdownMenu = null; + appendedDropdownMenuParent = null; }); - $scope.$on('removeBodyDropdownMenu', function (event, args) { - if (!bodyDropdownMenu && !bodyDropdownMenuParent) { + $scope.$on('removeAppendedDropdownMenu', function (event, args) { + if (!appendedDropdownMenu && !appendedDropdownMenuParent) { return true; } - bodyDropdownMenuParent.append(bodyDropdownMenu.detach()); - bodyDropdownMenu.hide(); - bodyDropdownMenu = null; - bodyDropdownMenuParent = null; + appendedDropdownMenuParent.append(appendedDropdownMenu.detach()); + appendedDropdownMenu.hide(); + appendedDropdownMenu = null; + appendedDropdownMenuParent = null; }); }); diff --git a/src/app/organization/views/organizationPeople.html b/src/app/organization/views/organizationPeople.html index b97c7e04..d53ad44d 100644 --- a/src/app/organization/views/organizationPeople.html +++ b/src/app/organization/views/organizationPeople.html @@ -34,7 +34,7 @@ -