Fix Lastpass input button handling in login form

* move hidden login form to the left to hide overlayed
    Lastpass context buttons
  * do dropdown toggling for login form manually to
    not only ignore clicks into form but also into overlayed
    Lastpass context buttons for closing the dropdown again;
    do close dropdown for included a and button elements
    though
This commit is contained in:
Gina Häußge 2017-01-12 13:32:10 +01:00
parent 881d3bb212
commit de0ee08e05
4 changed files with 26 additions and 3 deletions

File diff suppressed because one or more lines are too long

View file

@ -119,6 +119,28 @@ $(function() {
self.elementUsernameInput = $("#login_user");
self.elementPasswordInput = $("#login_pass");
self.elementLoginButton = $("#login_button");
var toggle = $("li.dropdown#navbar_login");
var button = $("a", toggle);
button.on("click", function(e) {
$(this).parent().toggleClass("open");
});
$("body").on("click", function(e) {
var anyFormLinkOrButton = $("#login_dropdown_loggedout a, #login_dropdown_loggedin a, #login_dropdown_loggedout button, #login_dropdown_loggedin button");
var dropdown = $("li.dropdown#navbar_login");
var anyLastpassButton = $("#__lpform_login_user, #__lpform_login_pass");
var isLinkOrButton = anyFormLinkOrButton.is(e.target) || anyFormLinkOrButton.has(e.target).length !== 0;
var isDropdown = dropdown.is(e.target) || dropdown.has(e.target).length === 0;
var isLastpass = anyLastpassButton.is(e.target) || anyLastpassButton.has(e.target).length === 0;
if (isLinkOrButton || !(isDropdown || isLastpass)) {
toggle.removeClass("open");
}
});
if (self.elementUsernameInput && self.elementUsernameInput.length
&& self.elementLoginButton && self.elementLoginButton.length) {
self.elementLoginButton.blur(function() {

View file

@ -1150,6 +1150,7 @@ input[type=number] {
overflow: hidden;
border: 0;
box-shadow: none;
left: -9999px;
}
#loginForm {
margin: 0;
@ -1157,4 +1158,4 @@ input[type=number] {
button {
margin-top: 20px;
}
}
}

View file

@ -1,4 +1,4 @@
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<a href="#" class="dropdown-toggle">
<i class="icon-user"></i> <span data-bind="text: loginState.userMenuText">{{ _('Login') }}</span>
<b class="caret"></b>
</a>