}
/* menubar styles */
- .ui-menubar .ui-button { float: left; font-weight: normal; border-top-width: 0 !important; border-bottom-width: 0 !important; margin: 0; }
+ .ui-menubar .ui-button { float: left; font-weight: normal; border-top-width: 0 !important; border-bottom-width: 0 !important; margin: 0; outline: none; }
.ui-menubar .ui-menubar-link { border-right: 1px dashed transparent; border-left: 1px dashed transparent; }
table {
var o = this.options;
this.element.addClass('ui-menubar ui-widget-header ui-helper-clearfix');
-
+ this._focusable(items);
items.next("ul").each(function(i, elm) {
$(elm).menu({
select: function(event, ui) {
self.right(event);
event.preventDefault();
break;
- case $.ui.keyCode.TAB:
- self[ event.shiftKey ? "left" : "right" ]( event );
- event.preventDefault();
- break;
};
+ }).blur(function() {
+ $(this).hide().prev().removeClass("ui-state-active").removeAttr("tabIndex");
+ self.timer = setTimeout(function() {
+ self.open = false;
+ }, 13);
});
});
items.each(function() {
self._close();
return;
}
- if (menu.length && (!/^mouse/.test(event.type) || self.active && self.active.is(":visible") )) {
+ if (menu.length && (self.open || event.type == "click")) {
self._open(event, menu);
}
})
_close: function() {
this.items.next("ul").hide();
- this.items.removeClass("ui-state-active");
+ this.items.removeClass("ui-state-active").removeAttr("tabIndex");
+ this.open = false;
},
_open: function(event, menu) {
if (this.active) {
this.active.menu("closeAll").hide();
- this.active.prev().removeClass("ui-state-active");
+ this.active.prev().removeClass("ui-state-active").removeAttr("tabIndex");
}
- var button = menu.prev().addClass("ui-state-active");
+ clearTimeout(this.timer);
+ this.open = true;
+ // set tabIndex -1 to have the button skipped on shift-tab when menu is open (it gets focus)
+ var button = menu.prev().addClass("ui-state-active").attr("tabIndex", -1);
this.active = menu.show().position({
my: "left top",
at: "left bottom",