@@ -466,4 +466,56 @@ asyncTest("handle keyboard navigation on menu with scroll and with submenus", fu
466
466
}
467
467
} ) ;
468
468
469
+ asyncTest ( "handle keyboard navigation and mouse click on menu with disabled items" , function ( ) {
470
+ expect ( 6 ) ;
471
+ var element = $ ( '#menu6' ) . menu ( {
472
+ select : function ( event , ui ) {
473
+ menu_log ( $ ( ui . item [ 0 ] ) . text ( ) ) ;
474
+ } ,
475
+ focus : function ( event , ui ) {
476
+ menu_log ( $ ( event . target ) . find ( ".ui-state-focus" ) . parent ( ) . index ( ) ) ;
477
+ }
478
+ } ) ;
479
+
480
+ menu_log ( "keydown" , true ) ;
481
+ element . one ( "menufocus" , function ( event , ui ) {
482
+ element . simulate ( "keydown" , { keyCode : $ . ui . keyCode . DOWN } ) ;
483
+ element . simulate ( "keydown" , { keyCode : $ . ui . keyCode . ENTER } ) ;
484
+ equal ( $ ( "#log" ) . html ( ) , "1,keydown," , "Keydown focus but not select disabled item" ) ;
485
+ setTimeout ( menukeyboard1 , 50 ) ;
486
+ } ) ;
487
+ element . focus ( ) ;
488
+
489
+
490
+ function menukeyboard1 ( ) {
491
+ menu_log ( "keydown" , true ) ;
492
+ element . simulate ( "keydown" , { keyCode : $ . ui . keyCode . DOWN } ) ;
493
+ element . simulate ( "keydown" , { keyCode : $ . ui . keyCode . DOWN } ) ;
494
+ element . simulate ( "keydown" , { keyCode : $ . ui . keyCode . DOWN } ) ;
495
+ equal ( $ ( "#log" ) . html ( ) , "4,3,2,keydown," , "Keydown focus disabled item with submenu" ) ;
496
+
497
+ menu_log ( "keydown" , true ) ;
498
+ element . simulate ( "keydown" , { keyCode : $ . ui . keyCode . LEFT } ) ;
499
+ equal ( $ ( "#log" ) . html ( ) , "keydown," , "Keydown LEFT (no effect)" ) ;
500
+
501
+ menu_log ( "keydown" , true ) ;
502
+ element . simulate ( "keydown" , { keyCode : $ . ui . keyCode . RIGHT } ) ;
503
+
504
+ setTimeout ( function ( ) {
505
+ equal ( $ ( "#log" ) . html ( ) , "keydown," , "Keydown RIGHT (no effect on disabled sub-menu)" ) ;
506
+
507
+ menu_log ( "keydown" , true ) ;
508
+ element . simulate ( "keydown" , { keyCode : $ . ui . keyCode . ENTER } ) ;
509
+
510
+ setTimeout ( function ( ) {
511
+ equal ( $ ( "#log" ) . html ( ) , "keydown," , "Keydown ENTER (no effect on disabled sub-menu)" ) ;
512
+ menu_log ( "click" , true ) ;
513
+ menu_click ( element , "1" ) ;
514
+ equal ( $ ( "#log" ) . html ( ) , "click," , "Click disabled item (no effect)" ) ;
515
+ start ( ) ;
516
+ } , 50 ) ;
517
+ } , 50 ) ;
518
+ }
519
+ } ) ;
520
+
469
521
} ) ( jQuery ) ;
0 commit comments