Compare commits
3 commits
master
...
search_imp
Author | SHA1 | Date | |
---|---|---|---|
2f196b118c | |||
d3eb80470c | |||
3cae992311 |
|
@ -127,6 +127,7 @@ Copyright (c) 2011 by Harvest
|
|||
this.results_showing = false;
|
||||
this.result_highlighted = null;
|
||||
this.result_single_selected = null;
|
||||
this.enable_group_select = this.options.enable_group_select || false;
|
||||
this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false;
|
||||
this.disable_search_threshold = this.options.disable_search_threshold || 0;
|
||||
this.choices = 0;
|
||||
|
@ -197,6 +198,30 @@ Copyright (c) 2011 by Harvest
|
|||
}
|
||||
};
|
||||
|
||||
AbstractChosen.prototype.winnow_search_match = function(regex, optionText) {
|
||||
var found, part, parts, _i, _len;
|
||||
found = false;
|
||||
if (regex.test(optionText)) {
|
||||
found = true;
|
||||
} else if (optionText.indexOf(" ") >= 0 || optionText.indexOf("[") === 0) {
|
||||
parts = optionText.replace(/\[|\]/g, "").split(" ");
|
||||
if (parts.length) {
|
||||
for (_i = 0, _len = parts.length; _i < _len; _i++) {
|
||||
part = parts[_i];
|
||||
if (regex.test(part)) found = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return found;
|
||||
};
|
||||
|
||||
AbstractChosen.prototype.winnow_search_highlight_match = function(regex, optionText, searchTextLength) {
|
||||
var startpos, text;
|
||||
startpos = optionText.search(regex);
|
||||
text = optionText.substr(0, startpos + searchTextLength) + '</em>' + optionText.substr(startpos + searchTextLength);
|
||||
return text = text.substr(0, startpos) + '<em>' + text.substr(startpos);
|
||||
};
|
||||
|
||||
AbstractChosen.prototype.keyup_checker = function(evt) {
|
||||
var stroke, _ref;
|
||||
stroke = (_ref = evt.which) != null ? _ref : evt.keyCode;
|
||||
|
@ -599,10 +624,23 @@ Copyright (c) 2011 by Harvest
|
|||
};
|
||||
|
||||
Chosen.prototype.search_results_mouseup = function(evt) {
|
||||
var target;
|
||||
target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
|
||||
if (target.length) {
|
||||
this.result_highlight = target;
|
||||
var child, children, group, option, _i, _len;
|
||||
if (this.enable_group_select) {
|
||||
group = $(evt.target).hasClass("group-result") ? $(evt.target) : $(evt.target).parents(".group-result").first();
|
||||
if (group.length) {
|
||||
children = group.nextUntil(".group-result", ".active-result");
|
||||
for (_i = 0, _len = children.length; _i < _len; _i++) {
|
||||
child = children[_i];
|
||||
this.result_highlight = $(child);
|
||||
this.result_select({
|
||||
metaKey: null
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
option = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
|
||||
if (option.length) {
|
||||
this.result_highlight = option;
|
||||
return this.result_select(evt);
|
||||
}
|
||||
};
|
||||
|
@ -725,42 +763,26 @@ Copyright (c) 2011 by Harvest
|
|||
};
|
||||
|
||||
Chosen.prototype.winnow_results = function() {
|
||||
var found, option, part, parts, regex, result, result_id, results, searchText, startpos, text, zregex, _i, _j, _len, _len2, _ref;
|
||||
var found, option, result, result_id, results, text, _i, _len, _ref;
|
||||
this.no_results_clear();
|
||||
results = 0;
|
||||
searchText = this.search_field.val() === this.default_text ? "" : $('<div/>').text($.trim(this.search_field.val())).html();
|
||||
regex = new RegExp('^' + searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i');
|
||||
zregex = new RegExp(searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i');
|
||||
this.searchText = this.search_field.val() === this.default_text ? "" : $('<div/>').text($.trim(this.search_field.val())).html();
|
||||
this.regex = new RegExp('^' + this.searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i');
|
||||
this.zregex = new RegExp(this.searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i');
|
||||
_ref = this.results_data;
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
option = _ref[_i];
|
||||
if (!option.disabled && !option.empty) {
|
||||
if (option.group) {
|
||||
$('#' + option.dom_id).css('display', 'none');
|
||||
this.winnow_option_group(option);
|
||||
} else if (!(this.is_multiple && option.selected)) {
|
||||
found = false;
|
||||
found = this.winnow_search_match(this.regex, option.html);
|
||||
result_id = option.dom_id;
|
||||
result = $("#" + result_id);
|
||||
if (regex.test(option.html)) {
|
||||
found = true;
|
||||
if (found || ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match)) {
|
||||
results += 1;
|
||||
} else if (option.html.indexOf(" ") >= 0 || option.html.indexOf("[") === 0) {
|
||||
parts = option.html.replace(/\[|\]/g, "").split(" ");
|
||||
if (parts.length) {
|
||||
for (_j = 0, _len2 = parts.length; _j < _len2; _j++) {
|
||||
part = parts[_j];
|
||||
if (regex.test(part)) {
|
||||
found = true;
|
||||
results += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (found) {
|
||||
if (searchText.length) {
|
||||
startpos = option.html.search(zregex);
|
||||
text = option.html.substr(0, startpos + searchText.length) + '</em>' + option.html.substr(startpos + searchText.length);
|
||||
text = text.substr(0, startpos) + '<em>' + text.substr(startpos);
|
||||
if (this.searchText.length && found) {
|
||||
text = this.winnow_search_highlight_match(this.zregex, option.html, this.searchText.length);
|
||||
} else {
|
||||
text = option.html;
|
||||
}
|
||||
|
@ -778,13 +800,22 @@ Copyright (c) 2011 by Harvest
|
|||
}
|
||||
}
|
||||
}
|
||||
if (results < 1 && searchText.length) {
|
||||
return this.no_results(searchText);
|
||||
if (results < 1 && this.searchText.length) {
|
||||
return this.no_results(this.searchText);
|
||||
} else {
|
||||
return this.winnow_results_set_highlight();
|
||||
}
|
||||
};
|
||||
|
||||
Chosen.prototype.winnow_option_group = function(group) {
|
||||
var text;
|
||||
$('#' + group.dom_id).css('display', 'none');
|
||||
group.search_match = this.winnow_search_match(this.regex, group.label);
|
||||
text = this.searchText.length && group.search_match ? this.winnow_search_highlight_match(this.zregex, group.label, this.searchText.length) : group.label;
|
||||
$("#" + group.dom_id).html(text);
|
||||
return group.search_match;
|
||||
};
|
||||
|
||||
Chosen.prototype.winnow_results_clear = function() {
|
||||
var li, lis, _i, _len, _results;
|
||||
this.search_field.val("");
|
||||
|
|
2
chosen/chosen.jquery.min.js
vendored
2
chosen/chosen.jquery.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -127,6 +127,7 @@ Copyright (c) 2011 by Harvest
|
|||
this.results_showing = false;
|
||||
this.result_highlighted = null;
|
||||
this.result_single_selected = null;
|
||||
this.enable_group_select = this.options.enable_group_select || false;
|
||||
this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false;
|
||||
this.disable_search_threshold = this.options.disable_search_threshold || 0;
|
||||
this.choices = 0;
|
||||
|
@ -197,6 +198,30 @@ Copyright (c) 2011 by Harvest
|
|||
}
|
||||
};
|
||||
|
||||
AbstractChosen.prototype.winnow_search_match = function(regex, optionText) {
|
||||
var found, part, parts, _i, _len;
|
||||
found = false;
|
||||
if (regex.test(optionText)) {
|
||||
found = true;
|
||||
} else if (optionText.indexOf(" ") >= 0 || optionText.indexOf("[") === 0) {
|
||||
parts = optionText.replace(/\[|\]/g, "").split(" ");
|
||||
if (parts.length) {
|
||||
for (_i = 0, _len = parts.length; _i < _len; _i++) {
|
||||
part = parts[_i];
|
||||
if (regex.test(part)) found = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return found;
|
||||
};
|
||||
|
||||
AbstractChosen.prototype.winnow_search_highlight_match = function(regex, optionText, searchTextLength) {
|
||||
var startpos, text;
|
||||
startpos = optionText.search(regex);
|
||||
text = optionText.substr(0, startpos + searchTextLength) + '</em>' + optionText.substr(startpos + searchTextLength);
|
||||
return text = text.substr(0, startpos) + '<em>' + text.substr(startpos);
|
||||
};
|
||||
|
||||
AbstractChosen.prototype.keyup_checker = function(evt) {
|
||||
var stroke, _ref;
|
||||
stroke = (_ref = evt.which) != null ? _ref : evt.keyCode;
|
||||
|
@ -593,10 +618,27 @@ Copyright (c) 2011 by Harvest
|
|||
};
|
||||
|
||||
Chosen.prototype.search_results_mouseup = function(evt) {
|
||||
var target;
|
||||
target = evt.target.hasClassName("active-result") ? evt.target : evt.target.up(".active-result");
|
||||
if (target) {
|
||||
this.result_highlight = target;
|
||||
var child, group, option, possible_children, _i, _len;
|
||||
if (this.enable_group_select) {
|
||||
group = evt.target.hasClassName("group-result") ? evt.target : evt.target.up(".group-result");
|
||||
if (group) {
|
||||
possible_children = group.nextSiblings();
|
||||
for (_i = 0, _len = possible_children.length; _i < _len; _i++) {
|
||||
child = possible_children[_i];
|
||||
if (child.hasClassName("active-result")) {
|
||||
this.result_highlight = $(child);
|
||||
this.result_select({
|
||||
metaKey: null
|
||||
});
|
||||
} else if (child.hasClassName("group-result")) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
option = evt.target.hasClassName("active-result") ? evt.target : evt.target.up(".active-result");
|
||||
if (option) {
|
||||
this.result_highlight = option;
|
||||
return this.result_select(evt);
|
||||
}
|
||||
};
|
||||
|
@ -726,41 +768,25 @@ Copyright (c) 2011 by Harvest
|
|||
};
|
||||
|
||||
Chosen.prototype.winnow_results = function() {
|
||||
var found, option, part, parts, regex, result_id, results, searchText, startpos, text, zregex, _i, _j, _len, _len2, _ref;
|
||||
var found, option, result_id, results, text, _i, _len, _ref;
|
||||
this.no_results_clear();
|
||||
results = 0;
|
||||
searchText = this.search_field.value === this.default_text ? "" : this.search_field.value.strip().escapeHTML();
|
||||
regex = new RegExp('^' + searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i');
|
||||
zregex = new RegExp(searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i');
|
||||
this.searchText = this.search_field.value === this.default_text ? "" : this.search_field.value.strip().escapeHTML();
|
||||
this.regex = new RegExp('^' + this.searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i');
|
||||
this.zregex = new RegExp(this.searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i');
|
||||
_ref = this.results_data;
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
option = _ref[_i];
|
||||
if (!option.disabled && !option.empty) {
|
||||
if (option.group) {
|
||||
$(option.dom_id).hide();
|
||||
this.winnow_option_group(option);
|
||||
} else if (!(this.is_multiple && option.selected)) {
|
||||
found = false;
|
||||
found = this.winnow_search_match(this.regex, option.html);
|
||||
result_id = option.dom_id;
|
||||
if (regex.test(option.html)) {
|
||||
found = true;
|
||||
if (found || ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match)) {
|
||||
results += 1;
|
||||
} else if (option.html.indexOf(" ") >= 0 || option.html.indexOf("[") === 0) {
|
||||
parts = option.html.replace(/\[|\]/g, "").split(" ");
|
||||
if (parts.length) {
|
||||
for (_j = 0, _len2 = parts.length; _j < _len2; _j++) {
|
||||
part = parts[_j];
|
||||
if (regex.test(part)) {
|
||||
found = true;
|
||||
results += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (found) {
|
||||
if (searchText.length) {
|
||||
startpos = option.html.search(zregex);
|
||||
text = option.html.substr(0, startpos + searchText.length) + '</em>' + option.html.substr(startpos + searchText.length);
|
||||
text = text.substr(0, startpos) + '<em>' + text.substr(startpos);
|
||||
if (this.searchText.length && found) {
|
||||
text = this.winnow_search_highlight_match(this.zregex, option.html, this.searchText.length);
|
||||
} else {
|
||||
text = option.html;
|
||||
}
|
||||
|
@ -780,13 +806,21 @@ Copyright (c) 2011 by Harvest
|
|||
}
|
||||
}
|
||||
}
|
||||
if (results < 1 && searchText.length) {
|
||||
return this.no_results(searchText);
|
||||
if (results < 1 && this.searchText.length) {
|
||||
return this.no_results(this.searchText);
|
||||
} else {
|
||||
return this.winnow_results_set_highlight();
|
||||
}
|
||||
};
|
||||
|
||||
Chosen.prototype.winnow_option_group = function(group) {
|
||||
var text;
|
||||
$("" + group.dom_id).hide();
|
||||
group.search_match = this.winnow_search_match(this.regex, group.label);
|
||||
text = this.searchText.length && group.search_match ? this.winnow_search_highlight_match(this.zregex, group.label, this.searchText.length) : group.label;
|
||||
return $("" + group.dom_id).update(text);
|
||||
};
|
||||
|
||||
Chosen.prototype.winnow_results_clear = function() {
|
||||
var li, lis, _i, _len, _results;
|
||||
this.search_field.clear();
|
||||
|
|
2
chosen/chosen.proto.min.js
vendored
2
chosen/chosen.proto.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -270,9 +270,17 @@ class Chosen extends AbstractChosen
|
|||
@search_field.removeClass "default"
|
||||
|
||||
search_results_mouseup: (evt) ->
|
||||
target = if $(evt.target).hasClass "active-result" then $(evt.target) else $(evt.target).parents(".active-result").first()
|
||||
if target.length
|
||||
@result_highlight = target
|
||||
if @enable_group_select
|
||||
group = if $(evt.target).hasClass "group-result" then $(evt.target) else $(evt.target).parents(".group-result").first()
|
||||
if group.length
|
||||
children = group.nextUntil(".group-result", ".active-result")
|
||||
for child in children
|
||||
@result_highlight = $(child)
|
||||
this.result_select({metaKey: null})
|
||||
|
||||
option = if $(evt.target).hasClass "active-result" then $(evt.target) else $(evt.target).parents(".active-result").first()
|
||||
if option.length
|
||||
@result_highlight = option
|
||||
this.result_select(evt)
|
||||
|
||||
search_results_mouseover: (evt) ->
|
||||
|
@ -382,36 +390,25 @@ class Chosen extends AbstractChosen
|
|||
|
||||
results = 0
|
||||
|
||||
searchText = if @search_field.val() is @default_text then "" else $('<div/>').text($.trim(@search_field.val())).html()
|
||||
regex = new RegExp('^' + searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i')
|
||||
zregex = new RegExp(searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i')
|
||||
@searchText = if @search_field.val() is @default_text then "" else $('<div/>').text($.trim(@search_field.val())).html()
|
||||
@regex = new RegExp('^' + @searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i')
|
||||
@zregex = new RegExp(@searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i')
|
||||
|
||||
for option in @results_data
|
||||
if not option.disabled and not option.empty
|
||||
if option.group
|
||||
$('#' + option.dom_id).css('display', 'none')
|
||||
this.winnow_option_group(option)
|
||||
else if not (@is_multiple and option.selected)
|
||||
found = false
|
||||
found = this.winnow_search_match(@regex, option.html)
|
||||
|
||||
result_id = option.dom_id
|
||||
result = $("#" + result_id)
|
||||
|
||||
if regex.test option.html
|
||||
found = true
|
||||
results += 1
|
||||
else if option.html.indexOf(" ") >= 0 or option.html.indexOf("[") == 0
|
||||
#TODO: replace this substitution of /\[\]/ with a list of characters to skip.
|
||||
parts = option.html.replace(/\[|\]/g, "").split(" ")
|
||||
if parts.length
|
||||
for part in parts
|
||||
if regex.test part
|
||||
found = true
|
||||
results += 1
|
||||
|
||||
if found
|
||||
if searchText.length
|
||||
startpos = option.html.search zregex
|
||||
text = option.html.substr(0, startpos + searchText.length) + '</em>' + option.html.substr(startpos + searchText.length)
|
||||
text = text.substr(0, startpos) + '<em>' + text.substr(startpos)
|
||||
if found or (option.group_array_index? && @results_data[option.group_array_index].search_match)
|
||||
results += 1
|
||||
|
||||
if @searchText.length and found
|
||||
text = this.winnow_search_highlight_match(@zregex, option.html, @searchText.length)
|
||||
else
|
||||
text = option.html
|
||||
|
||||
|
@ -423,10 +420,20 @@ class Chosen extends AbstractChosen
|
|||
this.result_clear_highlight() if @result_highlight and result_id is @result_highlight.attr 'id'
|
||||
this.result_deactivate result
|
||||
|
||||
if results < 1 and searchText.length
|
||||
this.no_results searchText
|
||||
if results < 1 and @searchText.length
|
||||
this.no_results @searchText
|
||||
else
|
||||
this.winnow_results_set_highlight()
|
||||
|
||||
winnow_option_group: (group) ->
|
||||
$('#' + group.dom_id).css('display', 'none')
|
||||
|
||||
group.search_match = this.winnow_search_match(@regex, group.label)
|
||||
|
||||
text = if @searchText.length and group.search_match then this.winnow_search_highlight_match(@zregex, group.label, @searchText.length) else group.label
|
||||
$("##{group.dom_id}").html(text)
|
||||
|
||||
return group.search_match
|
||||
|
||||
winnow_results_clear: ->
|
||||
@search_field.val ""
|
||||
|
|
|
@ -261,9 +261,20 @@ class Chosen extends AbstractChosen
|
|||
@search_field.removeClassName "default"
|
||||
|
||||
search_results_mouseup: (evt) ->
|
||||
target = if evt.target.hasClassName("active-result") then evt.target else evt.target.up(".active-result")
|
||||
if target
|
||||
@result_highlight = target
|
||||
if @enable_group_select
|
||||
group = if evt.target.hasClassName("group-result") then evt.target else evt.target.up(".group-result")
|
||||
if group
|
||||
possible_children = group.nextSiblings()
|
||||
for child in possible_children
|
||||
if child.hasClassName("active-result")
|
||||
@result_highlight = $(child)
|
||||
this.result_select({metaKey: null})
|
||||
else if child.hasClassName("group-result")
|
||||
return false
|
||||
|
||||
option = if evt.target.hasClassName("active-result") then evt.target else evt.target.up(".active-result")
|
||||
if option
|
||||
@result_highlight = option
|
||||
this.result_select(evt)
|
||||
|
||||
search_results_mouseover: (evt) ->
|
||||
|
@ -373,35 +384,24 @@ class Chosen extends AbstractChosen
|
|||
|
||||
results = 0
|
||||
|
||||
searchText = if @search_field.value is @default_text then "" else @search_field.value.strip().escapeHTML()
|
||||
regex = new RegExp('^' + searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i')
|
||||
zregex = new RegExp(searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i')
|
||||
@searchText = if @search_field.value is @default_text then "" else @search_field.value.strip().escapeHTML()
|
||||
@regex = new RegExp('^' + @searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i')
|
||||
@zregex = new RegExp(@searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i')
|
||||
|
||||
for option in @results_data
|
||||
if not option.disabled and not option.empty
|
||||
if option.group
|
||||
$(option.dom_id).hide()
|
||||
this.winnow_option_group(option)
|
||||
else if not (@is_multiple and option.selected)
|
||||
found = false
|
||||
found = this.winnow_search_match(@regex, option.html)
|
||||
|
||||
result_id = option.dom_id
|
||||
|
||||
if regex.test option.html
|
||||
found = true
|
||||
if found or (option.group_array_index? && @results_data[option.group_array_index].search_match)
|
||||
results += 1
|
||||
else if option.html.indexOf(" ") >= 0 or option.html.indexOf("[") == 0
|
||||
#TODO: replace this substitution of /\[\]/ with a list of characters to skip.
|
||||
parts = option.html.replace(/\[|\]/g, "").split(" ")
|
||||
if parts.length
|
||||
for part in parts
|
||||
if regex.test part
|
||||
found = true
|
||||
results += 1
|
||||
|
||||
if found
|
||||
if searchText.length
|
||||
startpos = option.html.search zregex
|
||||
text = option.html.substr(0, startpos + searchText.length) + '</em>' + option.html.substr(startpos + searchText.length)
|
||||
text = text.substr(0, startpos) + '<em>' + text.substr(startpos)
|
||||
|
||||
if @searchText.length and found
|
||||
text = this.winnow_search_highlight_match(@zregex, option.html, @searchText.length)
|
||||
else
|
||||
text = option.html
|
||||
|
||||
|
@ -414,11 +414,19 @@ class Chosen extends AbstractChosen
|
|||
this.result_clear_highlight() if $(result_id) is @result_highlight
|
||||
this.result_deactivate $(result_id)
|
||||
|
||||
if results < 1 and searchText.length
|
||||
this.no_results(searchText)
|
||||
if results < 1 and @searchText.length
|
||||
this.no_results(@searchText)
|
||||
else
|
||||
this.winnow_results_set_highlight()
|
||||
|
||||
winnow_option_group: (group) ->
|
||||
$("#{group.dom_id}").hide()
|
||||
|
||||
group.search_match = this.winnow_search_match(@regex, group.label)
|
||||
|
||||
text = if @searchText.length and group.search_match then this.winnow_search_highlight_match(@zregex, group.label, @searchText.length) else group.label
|
||||
$("#{group.dom_id}").update(text)
|
||||
|
||||
winnow_results_clear: ->
|
||||
@search_field.clear()
|
||||
lis = @search_results.select("li")
|
||||
|
|
|
@ -27,6 +27,7 @@ class AbstractChosen
|
|||
@results_showing = false
|
||||
@result_highlighted = null
|
||||
@result_single_selected = null
|
||||
@enable_group_select = @options.enable_group_select || false
|
||||
@allow_single_deselect = if @options.allow_single_deselect? and @form_field.options[0]? and @form_field.options[0].text is "" then @options.allow_single_deselect else false
|
||||
@disable_search_threshold = @options.disable_search_threshold || 0
|
||||
@choices = 0
|
||||
|
@ -75,6 +76,24 @@ class AbstractChosen
|
|||
else
|
||||
this.results_show()
|
||||
|
||||
winnow_search_match: (regex, optionText) ->
|
||||
found = false
|
||||
if regex.test optionText
|
||||
found = true
|
||||
else if optionText.indexOf(" ") >= 0 or optionText.indexOf("[") == 0
|
||||
#TODO: replace this substitution of /\[\]/ with a list of characters to skip.
|
||||
parts = optionText.replace(/\[|\]/g, "").split(" ")
|
||||
if parts.length
|
||||
for part in parts
|
||||
if regex.test part
|
||||
found = true
|
||||
return found
|
||||
|
||||
winnow_search_highlight_match: (regex, optionText, searchTextLength) ->
|
||||
startpos = optionText.search regex
|
||||
text = optionText.substr(0, startpos + searchTextLength) + '</em>' + optionText.substr(startpos + searchTextLength)
|
||||
text = text.substr(0, startpos) + '<em>' + text.substr(startpos)
|
||||
|
||||
keyup_checker: (evt) ->
|
||||
stroke = evt.which ? evt.keyCode
|
||||
this.search_field_scale()
|
||||
|
|
Loading…
Reference in a new issue