Skip to content

Commit 6bd95ef

Browse files
committed
Menu: Fix filter matching to work with flyout menu
1 parent 5d3f91b commit 6bd95ef

File tree

2 files changed

+5
-41
lines changed

2 files changed

+5
-41
lines changed

tests/visual/menu/flyoutmenu.js

Lines changed: 2 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -47,53 +47,16 @@ $.widget("ui.flyoutmenu", {
4747
case $.ui.keyCode.RIGHT:
4848
if (self.right(event)) {
4949
event.stopImmediatePropagation();
50-
}
50+
}
5151
event.preventDefault();
5252
break;
5353
case $.ui.keyCode.ESCAPE:
5454
self.hide();
5555
break;
56-
default:
57-
clearTimeout(self.filterTimer);
58-
var prev = self.previousFilter || "";
59-
var character = String.fromCharCode(event.keyCode);
60-
var skip = false;
61-
if (character == prev) {
62-
skip = true;
63-
} else {
64-
character = prev + character;
65-
}
66-
function escape(value) {
67-
return value.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
68-
}
69-
var match = self.activeItem.parent("ul").children("li").filter(function() {
70-
// TODO why filter child anchor here, but not in the filter below?
71-
return new RegExp("^" + escape(character), "i").test($("a", this).text());
72-
});
73-
var match = skip && match.index(self.active.next()) != -1 ? match.next() : match;
74-
if (!match.length) {
75-
character = String.fromCharCode(event.keyCode);
76-
// TODO why use self.widget() here instead of self.activeItem??
77-
match = self.widget().children("li").filter(function() {
78-
return new RegExp("^" + escape(character), "i").test($(this).text());
79-
});
80-
}
81-
if (match.length) {
82-
self.activate(event, match);
83-
if (match.length > 1) {
84-
self.previousFilter = character;
85-
self.filterTimer = setTimeout(function() {
86-
delete self.previousFilter;
87-
}, 1000);
88-
} else {
89-
delete self.previousFilter;
90-
}
91-
} else {
92-
delete self.previousFilter;
93-
}
9456
}
9557
});
9658
},
59+
9760
_open: function(submenu) {
9861
// TODO restrict to widget
9962
//only one menu can have items open at a time.

ui/jquery.ui.menu.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ $.widget("ui.menu", {
8888
event.stopImmediatePropagation();
8989
break;
9090
default:
91+
event.stopPropagation();
9192
clearTimeout(self.filterTimer);
9293
var prev = self.previousFilter || "";
9394
var character = String.fromCharCode(event.keyCode);
@@ -101,13 +102,13 @@ $.widget("ui.menu", {
101102
return value.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
102103
}
103104
var match = self.widget().children(".ui-menu-item").filter(function() {
104-
return new RegExp("^" + escape(character), "i").test($(this).text());
105+
return new RegExp("^" + escape(character), "i").test($(this).children("a").text());
105106
});
106107
var match = skip && match.index(self.active.next()) != -1 ? self.active.nextAll(".ui-menu-item") : match;
107108
if (!match.length) {
108109
character = String.fromCharCode(event.keyCode);
109110
match = self.widget().children(".ui-menu-item").filter(function() {
110-
return new RegExp("^" + escape(character), "i").test($(this).text());
111+
return new RegExp("^" + escape(character), "i").test($(this).children("a").text());
111112
});
112113
}
113114
if (match.length) {

0 commit comments

Comments
 (0)