1
0
mirror of synced 2024-11-26 23:06:02 +03:00

Merge pull request #747 from Kollibri/master

Fix issue with disabled options (Issue #733)
This commit is contained in:
Igor Vaynberg 2013-01-24 08:42:06 -08:00
commit 434827d22c
2 changed files with 23 additions and 25 deletions

View File

@ -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 {

View File

@ -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;
} }