|
@@ -20,9 +20,7 @@
|
|
|
"use strict";
|
|
|
/*global document, window, jQuery, console */
|
|
|
|
|
|
- var uid = 0, KEY;
|
|
|
-
|
|
|
- KEY = {
|
|
|
+ var KEY = {
|
|
|
TAB: 9,
|
|
|
ENTER: 13,
|
|
|
ESC: 27,
|
|
@@ -144,6 +142,18 @@
|
|
|
return width;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * blurs any Select2 container that has focus when an element outside them was clicked or received focus
|
|
|
+ */
|
|
|
+ $(document).ready(function () {
|
|
|
+ $(document).on("mousedown focusin", function (e) {
|
|
|
+ var target = $(e.target).closest("div.select2-container").get(0);
|
|
|
+ $(document).find("div.select2-container-active").each(function () {
|
|
|
+ if (this !== target) $(this).data("select2").blur();
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
/**
|
|
|
*
|
|
|
* @param opts
|
|
@@ -161,9 +171,6 @@
|
|
|
AbstractSelect2.prototype.init = function (opts) {
|
|
|
var results, search;
|
|
|
|
|
|
- this.uid = uid;
|
|
|
- uid = uid + 1;
|
|
|
-
|
|
|
// prepare options
|
|
|
this.opts = this.prepareOpts(opts);
|
|
|
|
|
@@ -333,13 +340,6 @@
|
|
|
|
|
|
this.alignDropdown();
|
|
|
this.dropdown.show();
|
|
|
-
|
|
|
- // register click-outside-closes-dropdown listener
|
|
|
- $(document).on("click.id" + this.uid, this.bind(function (e) {
|
|
|
- if ($(e.target).closest(this.container).length === 0) {
|
|
|
- this.blur();
|
|
|
- }
|
|
|
- }));
|
|
|
};
|
|
|
|
|
|
AbstractSelect2.prototype.close = function () {
|
|
@@ -347,7 +347,6 @@
|
|
|
|
|
|
this.dropdown.hide();
|
|
|
this.container.removeClass("select2-dropdown-open");
|
|
|
- $(document).off("click.id" + this.uid);
|
|
|
|
|
|
if (this.select) {
|
|
|
// TODO see if we can always clear here and reset on open
|
|
@@ -439,7 +438,7 @@
|
|
|
more = results.find("li.select2-more-results"),
|
|
|
below, // pixels the element is below the scroll fold, below==0 is when the element is starting to be visible
|
|
|
offset = -1, // index of first element without data
|
|
|
- page = this.resultsPage+1;
|
|
|
+ page = this.resultsPage + 1;
|
|
|
|
|
|
if (more.length === 0) return;
|
|
|
|
|
@@ -835,11 +834,6 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (e.which === KEY.TAB) {
|
|
|
- this.blur();
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.BACKSPACE || e.which === KEY.ESC) {
|
|
|
return;
|
|
|
}
|