diff --git a/select2.js b/select2.js index 541c67af..108a2893 100644 --- a/select2.js +++ b/select2.js @@ -886,11 +886,14 @@ the specific language governing permissions and limitations under the Apache Lic height = this.container.outerHeight(false), width = this.container.outerWidth(false), dropHeight = this.dropdown.outerHeight(false), + viewPortRight = $(window).scrollLeft() + document.documentElement.clientWidth, viewportBottom = $(window).scrollTop() + document.documentElement.clientHeight, dropTop = offset.top + height, dropLeft = offset.left, enoughRoomBelow = dropTop + dropHeight <= viewportBottom, enoughRoomAbove = (offset.top - dropHeight) >= this.body().scrollTop(), + dropWidth = this.dropdown.outerWidth(false), + enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight, aboveNow = this.dropdown.hasClass("select2-drop-above"), bodyOffset, above, @@ -917,6 +920,10 @@ the specific language governing permissions and limitations under the Apache Lic if (!enoughRoomBelow && enoughRoomAbove) above = true; } + if (!enoughRoomOnRight) { + dropLeft = offset.left + width - dropWidth; + } + if (above) { dropTop = offset.top - dropHeight; this.container.addClass("select2-drop-above");