aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorJörn Zaefferer <joern.zaefferer@gmail.com>2011-09-12 23:54:19 +0200
committerJörn Zaefferer <joern.zaefferer@gmail.com>2011-09-12 23:54:19 +0200
commitae0c4e44ff4adee60ad4e9662661ce9564031c16 (patch)
tree5af1662a221a68c276fe77dc9d14638cc78f935a /ui
parentbf26bf1ac4b2be791c2f283a60453fc59ee389bb (diff)
parent94317d7aa4ed439cb825d006fb461145a6d2aa5d (diff)
downloadjquery-ui-ae0c4e44ff4adee60ad4e9662661ce9564031c16.tar.gz
jquery-ui-ae0c4e44ff4adee60ad4e9662661ce9564031c16.zip
Merge remote branch 'kborchers/menu_autoCollapse'
Diffstat (limited to 'ui')
-rw-r--r--ui/jquery.ui.menu.js45
1 files changed, 29 insertions, 16 deletions
diff --git a/ui/jquery.ui.menu.js b/ui/jquery.ui.menu.js
index 050112db5..bfe35efb5 100644
--- a/ui/jquery.ui.menu.js
+++ b/ui/jquery.ui.menu.js
@@ -61,6 +61,8 @@ $.widget( "ui.menu", {
target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" );
this.focus( event, target );
},
+ "mouseleave": "_mouseleave",
+ "mouseleave .ui-menu": "_mouseleave",
"mouseout .ui-menu-item": "blur",
"focus": function( event ) {
this.focus( event, $( event.target ).children( ".ui-menu-item:first" ) );
@@ -341,21 +343,30 @@ $.widget( "ui.menu", {
},
collapseAll: function( event ) {
- this.element
- .find( "ul" )
- .hide()
- .attr( "aria-hidden", "true" )
- .attr( "aria-expanded", "false" )
- .end()
- .find( "a.ui-state-active" )
- .removeClass( "ui-state-active" );
+ var currentMenu = false;
+ if ( event ) {
+ var target = $( event.target );
+ if ( target.is( "ui.menu" ) ) {
+ currentMenu = target;
+ } else if ( target.closest( ".ui-menu" ).length ) {
+ currentMenu = target.closest( ".ui-menu" );
+ }
+ }
- this.blur( event );
- this.activeMenu = this.element;
+ this._close( currentMenu );
+
+ if( !currentMenu ) {
+ this.blur( event );
+ this.activeMenu = this.element;
+ }
},
- _close: function() {
- this.active.parent()
+ _close: function( startMenu ) {
+ if( !startMenu ) {
+ startMenu = this.active ? this.active.parent() : this.element;
+ }
+
+ startMenu
.find( "ul" )
.hide()
.attr( "aria-hidden", "true" )
@@ -368,10 +379,7 @@ $.widget( "ui.menu", {
collapse: function( event ) {
var newItem = this.active && this.active.parents("li:not(.ui-menubar-item)").first();
if ( newItem && newItem.length ) {
- this.active.parent()
- .attr("aria-hidden", "true")
- .attr("aria-expanded", "false")
- .hide();
+ this._close();
this.focus( event, newItem );
return true;
}
@@ -480,6 +488,11 @@ $.widget( "ui.menu", {
return this.element.height() < this.element.prop( "scrollHeight" );
},
+ _mouseleave: function( event ) {
+ this.collapseAll( event );
+ this.blur();
+ },
+
select: function( event ) {
// save active reference before collapseAll triggers blur
var ui = {