summaryrefslogtreecommitdiff
path: root/lib/rdoc/generator/template/darkfish/js/search.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rdoc/generator/template/darkfish/js/search.js')
-rw-r--r--lib/rdoc/generator/template/darkfish/js/search.js63
1 files changed, 32 insertions, 31 deletions
diff --git a/lib/rdoc/generator/template/darkfish/js/search.js b/lib/rdoc/generator/template/darkfish/js/search.js
index 60ac295e6c..b558ca5b4f 100644
--- a/lib/rdoc/generator/template/darkfish/js/search.js
+++ b/lib/rdoc/generator/template/darkfish/js/search.js
@@ -1,29 +1,29 @@
Search = function(data, input, result) {
this.data = data;
- this.$input = $(input);
- this.$result = $(result);
+ this.input = input;
+ this.result = result;
- this.$current = null;
- this.$view = this.$result.parent();
+ this.current = null;
+ this.view = this.result.parentNode;
this.searcher = new Searcher(data.index);
this.init();
}
-Search.prototype = $.extend({}, Navigation, new function() {
+Search.prototype = Object.assign({}, Navigation, new function() {
var suid = 1;
this.init = function() {
var _this = this;
var observer = function(e) {
- switch(e.originalEvent.keyCode) {
+ switch(e.keyCode) {
case 38: // Event.KEY_UP
case 40: // Event.KEY_DOWN
return;
}
- _this.search(_this.$input[0].value);
+ _this.search(_this.input.value);
};
- this.$input.keyup(observer);
- this.$input.click(observer); // mac's clear field
+ this.input.addEventListener('keyup', observer);
+ this.input.addEventListener('click', observer); // mac's clear field
this.searcher.ready(function(results, isLast) {
_this.addResults(results, isLast);
@@ -34,7 +34,7 @@ Search.prototype = $.extend({}, Navigation, new function() {
}
this.search = function(value, selectFirstMatch) {
- value = jQuery.trim(value).toLowerCase();
+ value = value.trim().toLowerCase();
if (value) {
this.setNavigationActive(true);
} else {
@@ -43,23 +43,23 @@ Search.prototype = $.extend({}, Navigation, new function() {
if (value == '') {
this.lastQuery = value;
- this.$result.empty();
- this.$result.attr('aria-expanded', 'false');
+ this.result.innerHTML = '';
+ this.result.setAttribute('aria-expanded', 'false');
this.setNavigationActive(false);
} else if (value != this.lastQuery) {
this.lastQuery = value;
- this.$result.attr('aria-busy', 'true');
- this.$result.attr('aria-expanded', 'true');
+ this.result.setAttribute('aria-busy', 'true');
+ this.result.setAttribute('aria-expanded', 'true');
this.firstRun = true;
this.searcher.find(value);
}
}
this.addResults = function(results, isLast) {
- var target = this.$result.get(0);
+ var target = this.result;
if (this.firstRun && (results.length > 0 || isLast)) {
- this.$current = null;
- this.$result.empty();
+ this.current = null;
+ this.result.innerHTML = '';
}
for (var i=0, l = results.length; i < l; i++) {
@@ -70,25 +70,26 @@ Search.prototype = $.extend({}, Navigation, new function() {
if (this.firstRun && results.length > 0) {
this.firstRun = false;
- this.$current = $(target.firstChild);
- this.$current.addClass('search-selected');
+ this.current = target.firstChild;
+ this.current.classList.add('search-selected');
}
- if (jQuery.browser.msie) this.$element[0].className += '';
+ //TODO: ECMAScript
+ //if (jQuery.browser.msie) this.$element[0].className += '';
- if (isLast) this.$result.attr('aria-busy', 'false');
+ if (isLast) this.result.setAttribute('aria-busy', 'false');
}
this.move = function(isDown) {
- if (!this.$current) return;
- var $next = this.$current[isDown ? 'next' : 'prev']();
- if ($next.length) {
- this.$current.removeClass('search-selected');
- $next.addClass('search-selected');
- this.$input.attr('aria-activedescendant', $next.attr('id'));
- this.scrollIntoView($next[0], this.$view[0]);
- this.$current = $next;
- this.$input.val($next[0].firstChild.firstChild.text);
- this.$input.select();
+ if (!this.current) return;
+ var next = isDown ? this.current.nextElementSibling : this.current.previousElementSibling;
+ if (next) {
+ this.current.classList.remove('search-selected');
+ next.classList.add('search-selected');
+ this.input.setAttribute('aria-activedescendant', next.getAttribute('id'));
+ this.scrollIntoView(next, this.view);
+ this.current = next;
+ this.input.value = next.firstChild.firstChild.text;
+ this.input.select();
}
return true;
}