Merge pull request #747 from Kollibri/master
Fix issue with disabled options (Issue #733)
This commit is contained in:
commit
434827d22c
12
select2.css
12
select2.css
@ -344,7 +344,8 @@ Version: @@ver@@ Timestamp: @@timestamp@@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
disabled look for already selected choices in the results dropdown
|
disabled look for disabled choices in the results dropdown
|
||||||
|
*/
|
||||||
.select2-results .select2-disabled.select2-highlighted {
|
.select2-results .select2-disabled.select2-highlighted {
|
||||||
color: #666;
|
color: #666;
|
||||||
background: #f4f4f4;
|
background: #f4f4f4;
|
||||||
@ -356,8 +357,8 @@ disabled look for already selected choices in the results dropdown
|
|||||||
display: list-item;
|
display: list-item;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
.select2-results .select2-disabled {
|
.select2-results .select2-selected {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -548,11 +549,8 @@ disabled look for already selected choices in the results dropdown
|
|||||||
|
|
||||||
|
|
||||||
.select2-result-selectable .select2-match,
|
.select2-result-selectable .select2-match,
|
||||||
.select2-result-unselectable .select2-result-selectable .select2-match {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
.select2-result-unselectable .select2-match {
|
.select2-result-unselectable .select2-match {
|
||||||
text-decoration: none;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
.select2-offscreen {
|
.select2-offscreen {
|
||||||
|
34
select2.js
34
select2.js
@ -612,7 +612,7 @@ the specific language governing permissions and limitations under the Apache Lic
|
|||||||
search.bind("blur", function () { search.removeClass("select2-focused");});
|
search.bind("blur", function () { search.removeClass("select2-focused");});
|
||||||
|
|
||||||
this.dropdown.delegate(resultsSelector, "mouseup", this.bind(function (e) {
|
this.dropdown.delegate(resultsSelector, "mouseup", this.bind(function (e) {
|
||||||
if ($(e.target).closest(".select2-result-selectable:not(.select2-disabled)").length > 0) {
|
if ($(e.target).closest(".select2-result-selectable:visible").length > 0) {
|
||||||
this.highlightUnderEvent(e);
|
this.highlightUnderEvent(e);
|
||||||
this.selectHighlighted(e);
|
this.selectHighlighted(e);
|
||||||
} else {
|
} else {
|
||||||
@ -1058,7 +1058,7 @@ the specific language governing permissions and limitations under the Apache Lic
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
children = results.find(".select2-result-selectable");
|
children = results.find(".select2-result:visible");
|
||||||
|
|
||||||
child = $(children[index]);
|
child = $(children[index]);
|
||||||
|
|
||||||
@ -1086,13 +1086,13 @@ the specific language governing permissions and limitations under the Apache Lic
|
|||||||
|
|
||||||
// abstract
|
// abstract
|
||||||
moveHighlight: function (delta) {
|
moveHighlight: function (delta) {
|
||||||
var choices = this.results.find(".select2-result-selectable"),
|
var choices = this.results.find(".select2-result:visible"),
|
||||||
index = this.highlight();
|
index = this.highlight();
|
||||||
|
|
||||||
while (index > -1 && index < choices.length) {
|
while (index > -1 && index < choices.length) {
|
||||||
index += delta;
|
index += delta;
|
||||||
var choice = $(choices[index]);
|
var choice = $(choices[index]);
|
||||||
if (choice.hasClass("select2-result-selectable") && !choice.hasClass("select2-disabled")) {
|
if (choice.hasClass("select2-result-selectable") && !choice.hasClass("select2-disabled") && !choice.hasClass("select2-selected")) {
|
||||||
this.highlight(index);
|
this.highlight(index);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1101,7 +1101,7 @@ the specific language governing permissions and limitations under the Apache Lic
|
|||||||
|
|
||||||
// abstract
|
// abstract
|
||||||
highlight: function (index) {
|
highlight: function (index) {
|
||||||
var choices = this.results.find(".select2-result-selectable").not(".select2-disabled");
|
var choices = this.results.find(".select2-result:visible");
|
||||||
|
|
||||||
if (arguments.length === 0) {
|
if (arguments.length === 0) {
|
||||||
return indexOf(choices.filter(".select2-highlighted")[0], choices.get());
|
return indexOf(choices.filter(".select2-highlighted")[0], choices.get());
|
||||||
@ -1119,14 +1119,14 @@ the specific language governing permissions and limitations under the Apache Lic
|
|||||||
|
|
||||||
// abstract
|
// abstract
|
||||||
countSelectableResults: function() {
|
countSelectableResults: function() {
|
||||||
return this.results.find(".select2-result-selectable").not(".select2-disabled").length;
|
return this.results.find(".select2-result-selectable").not(".select2-disabled").not(".select2-selected").length;
|
||||||
},
|
},
|
||||||
|
|
||||||
// abstract
|
// abstract
|
||||||
highlightUnderEvent: function (event) {
|
highlightUnderEvent: function (event) {
|
||||||
var el = $(event.target).closest(".select2-result-selectable");
|
var el = $(event.target).closest(".select2-result-selectable");
|
||||||
if (el.length > 0 && !el.is(".select2-highlighted")) {
|
if (el.length > 0 && !el.is(".select2-highlighted")) {
|
||||||
var choices = this.results.find('.select2-result-selectable');
|
var choices = this.results.find('.select2-result');
|
||||||
this.highlight(choices.index(el));
|
this.highlight(choices.index(el));
|
||||||
} else if (el.length == 0) {
|
} else if (el.length == 0) {
|
||||||
// if we are over an unselectable item remove al highlights
|
// if we are over an unselectable item remove al highlights
|
||||||
@ -1329,10 +1329,10 @@ the specific language governing permissions and limitations under the Apache Lic
|
|||||||
// abstract
|
// abstract
|
||||||
selectHighlighted: function (options) {
|
selectHighlighted: function (options) {
|
||||||
var index=this.highlight(),
|
var index=this.highlight(),
|
||||||
highlighted=this.results.find(".select2-highlighted").not(".select2-disabled"),
|
highlighted=this.results.find(".select2-highlighted:visible"),
|
||||||
data = highlighted.closest('.select2-result-selectable').data("select2-data");
|
data = highlighted.closest('.select2-result:visible').data("select2-data");
|
||||||
if (data) {
|
if (data) {
|
||||||
highlighted.addClass("select2-disabled");
|
highlighted.addClass("select2-selected");
|
||||||
this.highlight(index);
|
this.highlight(index);
|
||||||
this.onSelect(data, options);
|
this.onSelect(data, options);
|
||||||
}
|
}
|
||||||
@ -1677,7 +1677,7 @@ the specific language governing permissions and limitations under the Apache Lic
|
|||||||
|
|
||||||
// find the selected element in the result list
|
// find the selected element in the result list
|
||||||
|
|
||||||
this.results.find(".select2-result-selectable").each2(function (i, elm) {
|
this.results.find(".select2-result:visible").each2(function (i, elm) {
|
||||||
if (equal(self.id(elm.data("select2-data")), self.opts.element.val())) {
|
if (equal(self.id(elm.data("select2-data")), self.opts.element.val())) {
|
||||||
selected = i;
|
selected = i;
|
||||||
return false;
|
return false;
|
||||||
@ -2188,30 +2188,30 @@ the specific language governing permissions and limitations under the Apache Lic
|
|||||||
// multi
|
// multi
|
||||||
postprocessResults: function () {
|
postprocessResults: function () {
|
||||||
var val = this.getVal(),
|
var val = this.getVal(),
|
||||||
choices = this.results.find(".select2-result-selectable"),
|
choices = this.results.find(".select2-result:visible"),
|
||||||
compound = this.results.find(".select2-result-with-children"),
|
compound = this.results.find(".select2-result-with-children"),
|
||||||
self = this;
|
self = this;
|
||||||
|
|
||||||
choices.each2(function (i, choice) {
|
choices.each2(function (i, choice) {
|
||||||
var id = self.id(choice.data("select2-data"));
|
var id = self.id(choice.data("select2-data"));
|
||||||
if (indexOf(id, val) >= 0) {
|
if (indexOf(id, val) >= 0) {
|
||||||
choice.addClass("select2-disabled").removeClass("select2-result-selectable");
|
choice.addClass("select2-selected").removeClass("select2-result-selectable");
|
||||||
} else {
|
} else {
|
||||||
choice.removeClass("select2-disabled").addClass("select2-result-selectable");
|
choice.removeClass("select2-selected").addClass("select2-result-selectable");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
compound.each2(function(i, e) {
|
compound.each2(function(i, e) {
|
||||||
if (!e.is('.select2-result-selectable') && e.find(".select2-result-selectable").length==0) { // FIX FOR HIERARCHICAL DATA
|
if (!e.is('.select2-result-selectable') && e.find(".select2-result-selectable").length==0) { // FIX FOR HIERARCHICAL DATA
|
||||||
e.addClass("select2-disabled");
|
e.addClass("select2-selected");
|
||||||
} else {
|
} else {
|
||||||
e.removeClass("select2-disabled");
|
e.removeClass("select2-selected");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (this.highlight() == -1){
|
if (this.highlight() == -1){
|
||||||
choices.each2(function (i, choice) {
|
choices.each2(function (i, choice) {
|
||||||
if (!choice.hasClass("select2-disabled") && choice.hasClass("select2-result-selectable")) {
|
if (!choice.hasClass("select2-selected") &&!choice.hasClass("select2-disabled") && choice.hasClass("select2-result-selectable")) {
|
||||||
self.highlight(0);
|
self.highlight(0);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user