vendor/assets/javascripts/select2-full.js in select2-rails-4.0.9 vs vendor/assets/javascripts/select2-full.js in select2-rails-4.0.10
- old
+ new
@@ -1,7 +1,7 @@
/*!
- * Select2 4.0.9
+ * Select2 4.0.10
* https://select2.github.io
*
* Released under the MIT license
* https://github.com/select2/select2/blob/master/LICENSE.md
*/
@@ -4304,11 +4304,11 @@
S2.define('select2/dropdown/attachBody',[
'jquery',
'../utils'
], function ($, Utils) {
function AttachBody (decorated, $element, options) {
- this.$dropdownParent = options.get('dropdownParent') || $(document.body);
+ this.$dropdownParent = $(options.get('dropdownParent') || document.body);
decorated.call(this, $element, options);
}
AttachBody.prototype.bind = function (decorated, container, $container) {
@@ -4317,42 +4317,20 @@
decorated.call(this, container, $container);
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();
});
};
@@ -4388,9 +4366,47 @@
return $container;
};
AttachBody.prototype._hideDropdown = function (decorated) {
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;