1
0
mirror of synced 2024-11-22 21:16:10 +03:00

fixed above/below dropdown opening bug

This commit is contained in:
Igor Vaynberg 2012-07-18 00:26:49 +03:00
parent 3a830a2b81
commit 39aa17a790

View File

@ -736,11 +736,14 @@
viewportBottom = $(window).scrollTop() + document.documentElement.clientHeight, viewportBottom = $(window).scrollTop() + document.documentElement.clientHeight,
dropTop = offset.top + height, dropTop = offset.top + height,
enoughRoomBelow = dropTop + dropHeight <= viewportBottom, enoughRoomBelow = dropTop + dropHeight <= viewportBottom,
enoughRoomAbove = (offset.top - dropHeight) >= this.body().scrollTop, enoughRoomAbove = (offset.top - dropHeight) >= this.body().scrollTop(),
aboveNow = this.dropdown.hasClass("select2-drop-above"), aboveNow = this.dropdown.hasClass("select2-drop-above"),
above, above,
css; css;
//console.log("droptop:", dropTop, "dropHeight", dropHeight, "sum", (dropTop+dropHeight)+" viewport bottom", viewportBottom, "enough?", enoughRoomBelow);
//console.log("offset.top", offset.top, "dropHeight", dropHeight, "top", (offset.top-dropHeight), "scrollTop", this.body().scrollTop(), "enough?", enoughRoomAbove);
// always prefer the current above/below alignment, unless there is not enough room // always prefer the current above/below alignment, unless there is not enough room
if (aboveNow) { if (aboveNow) {
@ -814,8 +817,7 @@
if (this.search.val() === " ") { this.search.val(""); } if (this.search.val() === " ") { this.search.val(""); }
this.dropdown.addClass("select2-drop-active"); this.dropdown.addClass("select2-drop-active");
this.container.addClass("select2-dropdown-open").addClass("select2-container-active");
this.positionDropdown();
this.updateResults(true); this.updateResults(true);
@ -826,7 +828,7 @@
this.dropdown.show(); this.dropdown.show();
this.ensureHighlightVisible(); this.ensureHighlightVisible();
this.focusSearch(); this.focusSearch();
this.container.addClass("select2-dropdown-open").addClass("select2-container-active");
}, },
// abstract // abstract
@ -1003,6 +1005,9 @@
return; return;
} }
// position dropdown before making a potentially long request
this.positionDropdown();
this.resultsPage = 1; this.resultsPage = 1;
opts.query({ opts.query({
term: search.val(), term: search.val(),