Skip to content

Commit

Permalink
Merge pull request #5621 from select2/GH-5619
Browse files Browse the repository at this point in the history
Fix bug where dropdowns pointing upwards were incorrectly positioned
  • Loading branch information
kevin-brown committed Aug 28, 2019
2 parents d54560f + d8d2aa5 commit 9e4f842
Showing 1 changed file with 41 additions and 25 deletions.
66 changes: 41 additions & 25 deletions src/js/select2/dropdown/attachBody.js
Expand Up @@ -16,38 +16,16 @@ define([
container.on('open', function () {
self._showDropdown();
self._attachPositioningHandler(container);

// Must bind after the results handlers to ensure correct sizing
self._bindContainerResultHandlers(container);
});

container.on('close', function () {
self._hideDropdown();
self._detachPositioningHandler(container);
});

container.on('results:all', function () {
self._positionDropdown();
self._resizeDropdown();
});

container.on('results:append', function () {
self._positionDropdown();
self._resizeDropdown();
});

container.on('results:message', function () {
self._positionDropdown();
self._resizeDropdown();
});

container.on('select', function () {
self._positionDropdown();
self._resizeDropdown();
});

container.on('unselect', function () {
self._positionDropdown();
self._resizeDropdown();
});

this.$dropdownContainer.on('mousedown', function (evt) {
evt.stopPropagation();
});
Expand Down Expand Up @@ -89,6 +67,44 @@ define([
this.$dropdownContainer.detach();
};

AttachBody.prototype._bindContainerResultHandlers =
function (decorated, container) {

// These should only be bound once
if (this._containerResultsHandlersBound) {
return;
}

var self = this;

container.on('results:all', function () {
self._positionDropdown();
self._resizeDropdown();
});

container.on('results:append', function () {
self._positionDropdown();
self._resizeDropdown();
});

container.on('results:message', function () {
self._positionDropdown();
self._resizeDropdown();
});

container.on('select', function () {
self._positionDropdown();
self._resizeDropdown();
});

container.on('unselect', function () {
self._positionDropdown();
self._resizeDropdown();
});

this._containerResultsHandlersBound = true;
};

AttachBody.prototype._attachPositioningHandler =
function (decorated, container) {
var self = this;
Expand Down

0 comments on commit 9e4f842

Please sign in to comment.