Commit b9bd82b4 authored by fat's avatar fat

patch dropdowns for #7118

parent 37d0a305
...@@ -3009,6 +3009,15 @@ table th[class*="span"], ...@@ -3009,6 +3009,15 @@ table th[class*="span"],
display: block; display: block;
} }
.dropdown-backdrop {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 990;
}
.pull-right > .dropdown-menu { .pull-right > .dropdown-menu {
right: 0; right: 0;
left: auto; left: auto;
......
...@@ -52,6 +52,10 @@ ...@@ -52,6 +52,10 @@
clearMenus() clearMenus()
if (!isActive) { if (!isActive) {
if ('ontouchstart' in document.documentElement) {
// if mobile we we use a backdrop because click events don't delegate
$('<div class="dropdown-backdrop"/>').insertBefore($(this)).on('click', clearMenus)
}
$parent.toggleClass('open') $parent.toggleClass('open')
} }
...@@ -104,6 +108,7 @@ ...@@ -104,6 +108,7 @@
} }
function clearMenus() { function clearMenus() {
$('.dropdown-backdrop').remove()
$(toggle).each(function () { $(toggle).each(function () {
getParent($(this)).removeClass('open') getParent($(this)).removeClass('open')
}) })
...@@ -158,7 +163,6 @@ ...@@ -158,7 +163,6 @@
$(document) $(document)
.on('click.dropdown.data-api', clearMenus) .on('click.dropdown.data-api', clearMenus)
.on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.dropdown-menu', function (e) { e.stopPropagation() })
.on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle) .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
.on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
......
...@@ -685,6 +685,10 @@ ...@@ -685,6 +685,10 @@
clearMenus() clearMenus()
if (!isActive) { if (!isActive) {
if ('ontouchstart' in document.documentElement) {
// if mobile we we use a backdrop because click events don't delegate
$('<div class="dropdown-backdrop"/>').insertBefore($(this)).on('click', clearMenus)
}
$parent.toggleClass('open') $parent.toggleClass('open')
} }
...@@ -737,6 +741,7 @@ ...@@ -737,6 +741,7 @@
} }
function clearMenus() { function clearMenus() {
$('.dropdown-backdrop').remove()
$(toggle).each(function () { $(toggle).each(function () {
getParent($(this)).removeClass('open') getParent($(this)).removeClass('open')
}) })
...@@ -791,7 +796,6 @@ ...@@ -791,7 +796,6 @@
$(document) $(document)
.on('click.dropdown.data-api', clearMenus) .on('click.dropdown.data-api', clearMenus)
.on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.dropdown-menu', function (e) { e.stopPropagation() })
.on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle) .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
.on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
......
This diff is collapsed.
...@@ -52,6 +52,10 @@ ...@@ -52,6 +52,10 @@
clearMenus() clearMenus()
if (!isActive) { if (!isActive) {
if ('ontouchstart' in document.documentElement) {
// if mobile we we use a backdrop because click events don't delegate
$('<div class="dropdown-backdrop"/>').insertBefore($(this)).on('click', clearMenus)
}
$parent.toggleClass('open') $parent.toggleClass('open')
} }
...@@ -104,6 +108,7 @@ ...@@ -104,6 +108,7 @@
} }
function clearMenus() { function clearMenus() {
$('.dropdown-backdrop').remove()
$(toggle).each(function () { $(toggle).each(function () {
getParent($(this)).removeClass('open') getParent($(this)).removeClass('open')
}) })
...@@ -158,7 +163,6 @@ ...@@ -158,7 +163,6 @@
$(document) $(document)
.on('click.dropdown.data-api', clearMenus) .on('click.dropdown.data-api', clearMenus)
.on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.dropdown-menu', function (e) { e.stopPropagation() })
.on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle) .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
.on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
......
...@@ -135,6 +135,17 @@ ...@@ -135,6 +135,17 @@
} }
} }
// Backdrop to catch body clicks on mobile, etc.
// ---------------------------
.dropdown-backdrop {
position: fixed;
left: 0;
right: 0;
bottom: 0;
top: 0;
z-index: @zindexDropdown - 10;
}
// Right aligned dropdowns // Right aligned dropdowns
// --------------------------- // ---------------------------
.pull-right > .dropdown-menu { .pull-right > .dropdown-menu {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment