Skip to content

Commit

Permalink
Menu: Fix filter matching to work with flyout menu
Browse files Browse the repository at this point in the history
  • Loading branch information
jzaefferer committed Feb 24, 2011
1 parent 5d3f91b commit 6bd95ef
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 41 deletions.
41 changes: 2 additions & 39 deletions tests/visual/menu/flyoutmenu.js
Expand Up @@ -47,53 +47,16 @@ $.widget("ui.flyoutmenu", {
case $.ui.keyCode.RIGHT:
if (self.right(event)) {
event.stopImmediatePropagation();
}
}
event.preventDefault();
break;
case $.ui.keyCode.ESCAPE:
self.hide();
break;
default:
clearTimeout(self.filterTimer);
var prev = self.previousFilter || "";
var character = String.fromCharCode(event.keyCode);
var skip = false;
if (character == prev) {
skip = true;
} else {
character = prev + character;
}
function escape(value) {
return value.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
}
var match = self.activeItem.parent("ul").children("li").filter(function() {
// TODO why filter child anchor here, but not in the filter below?
return new RegExp("^" + escape(character), "i").test($("a", this).text());
});
var match = skip && match.index(self.active.next()) != -1 ? match.next() : match;
if (!match.length) {
character = String.fromCharCode(event.keyCode);
// TODO why use self.widget() here instead of self.activeItem??
match = self.widget().children("li").filter(function() {
return new RegExp("^" + escape(character), "i").test($(this).text());
});
}
if (match.length) {
self.activate(event, match);
if (match.length > 1) {
self.previousFilter = character;
self.filterTimer = setTimeout(function() {
delete self.previousFilter;
}, 1000);
} else {
delete self.previousFilter;
}
} else {
delete self.previousFilter;
}
}
});
},

_open: function(submenu) {
// TODO restrict to widget
//only one menu can have items open at a time.
Expand Down
5 changes: 3 additions & 2 deletions ui/jquery.ui.menu.js
Expand Up @@ -88,6 +88,7 @@ $.widget("ui.menu", {
event.stopImmediatePropagation();
break;
default:
event.stopPropagation();
clearTimeout(self.filterTimer);
var prev = self.previousFilter || "";
var character = String.fromCharCode(event.keyCode);
Expand All @@ -101,13 +102,13 @@ $.widget("ui.menu", {
return value.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
}
var match = self.widget().children(".ui-menu-item").filter(function() {
return new RegExp("^" + escape(character), "i").test($(this).text());
return new RegExp("^" + escape(character), "i").test($(this).children("a").text());
});
var match = skip && match.index(self.active.next()) != -1 ? self.active.nextAll(".ui-menu-item") : match;
if (!match.length) {
character = String.fromCharCode(event.keyCode);
match = self.widget().children(".ui-menu-item").filter(function() {
return new RegExp("^" + escape(character), "i").test($(this).text());
return new RegExp("^" + escape(character), "i").test($(this).children("a").text());
});
}
if (match.length) {
Expand Down

0 comments on commit 6bd95ef

Please sign in to comment.