diff options
author | Scott González <scott.gonzalez@gmail.com> | 2015-04-07 10:55:52 -0400 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2015-04-09 09:27:00 -0400 |
commit | bde431bb449b1d957d4e0b736111ff342f2a919d (patch) | |
tree | 27fd40037c30dbff8ef3b6113e90817ab96b53bf /tests/unit/menu/menu_events.js | |
parent | dc4b015a8b9acdb5bff2d5dd89737b3d8b64097f (diff) | |
download | jquery-ui-bde431bb449b1d957d4e0b736111ff342f2a919d.tar.gz jquery-ui-bde431bb449b1d957d4e0b736111ff342f2a919d.zip |
Tests: Rename files
Ref gh-1528
Diffstat (limited to 'tests/unit/menu/menu_events.js')
-rw-r--r-- | tests/unit/menu/menu_events.js | 737 |
1 files changed, 0 insertions, 737 deletions
diff --git a/tests/unit/menu/menu_events.js b/tests/unit/menu/menu_events.js deleted file mode 100644 index 9e0e0a2b7..000000000 --- a/tests/unit/menu/menu_events.js +++ /dev/null @@ -1,737 +0,0 @@ -define( [ - "jquery", - "./menu_test_helpers", - "ui/menu" -], function( $, testHelper ) { - -var log = testHelper.log, - logOutput = testHelper.logOutput, - click = testHelper.click; - -module( "menu: events", { - setup: function() { - testHelper.clearLog(); - } -}); - -test( "handle click on menu", function() { - expect( 1 ); - var element = $( "#menu1" ).menu({ - select: function() { - log(); - } - }); - log( "click", true ); - click( element, "1" ); - log( "afterclick" ); - click( element, "2" ); - click( element, "3" ); - click( element, "1" ); - equal( logOutput(), "click,1,afterclick,2,3,1", "Click order not valid." ); -}); - -test( "handle click on custom item menu", function() { - expect( 1 ); - var element = $( "#menu5" ).menu({ - select: function() { - log(); - }, - menus: ".menu" - }); - log( "click", true ); - click( element, "1" ); - log( "afterclick" ); - click( element, "2" ); - click( element, "3" ); - click( element, "1" ); - equal( logOutput(), "click,1,afterclick,2,3,1", "Click order not valid." ); -}); - -asyncTest( "handle blur", function() { - expect( 1 ); - var blurHandled = false, - element = $( "#menu1" ).menu({ - blur: function( event ) { - // Ignore duplicate blur event fired by IE - if ( !blurHandled ) { - blurHandled = true; - equal( event.type, "menublur", "blur event.type is 'menublur'" ); - } - } - }); - - click( element, "1" ); - setTimeout(function() { - element.blur(); - setTimeout(function() { - start(); - }, 350 ); - }); -}); - -asyncTest( "handle blur via click outside", function() { - expect( 1 ); - var blurHandled = false, - element = $( "#menu1" ).menu({ - blur: function( event ) { - // Ignore duplicate blur event fired by IE - if ( !blurHandled ) { - blurHandled = true; - equal( event.type, "menublur", "blur event.type is 'menublur'" ); - } - } - }); - - click( element, "1" ); - setTimeout(function() { - $( "<a>", { id: "remove"} ).appendTo( "body" ).trigger( "click" ); - setTimeout(function() { - start(); - }, 350 ); - }); -}); - -asyncTest( "handle focus of menu with active item", function() { - expect( 1 ); - var element = $( "#menu1" ).menu({ - focus: function( event ) { - log( $( event.target ).find( ".ui-menu-item-wrapper.ui-state-active" ).parent().index() ); - } - }); - - log( "focus", true ); - element[ 0 ].focus(); - setTimeout(function() { - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element[ 0 ].blur(); - setTimeout(function() { - element[ 0 ].focus(); - setTimeout(function() { - equal( logOutput(), "focus,0,1,2,2", "current active item remains active" ); - start(); - }); - }); - }); -}); - -test( "handle mouseenter on nested menu item", function( assert ) { - assert.expect( 8 ); - $.ui.menu.prototype.delay = 1; - var activeItem, - done = assert.async(), - element = $( "#menu2" ).menu(); - - element - .menu( "previous" ) - .menu( "expand" ); - - function checkSubmenus() { - equal( element.find( "ul[aria-expanded='true']" ).length, 2, "both submenus expanded" ); - } - function menumouseenter1() { - element.menu( "expand" ); - setTimeout( menumouseenter2, 25 ); - } - function menumouseenter2() { - checkSubmenus(); - activeItem = $( "#" + element.attr( "aria-activedescendant" ) ); - assert.hasClasses( activeItem, "ui-state-active" ); - activeItem.trigger( "mouseleave" ); - setTimeout( menumouseenter3, 25 ); - } - function menumouseenter3() { - checkSubmenus(); - assert.lacksClasses( activeItem, "ui-state-active" ); - activeItem.trigger( "mouseenter" ); - setTimeout( menumouseenter4, 25 ); - } - function menumouseenter4() { - checkSubmenus(); - activeItem.parents( ".ui-menu-item" ).each( function( index, item ) { - assert.hasClasses( $( item ).children( ".ui-menu-item-wrapper" ), "ui-state-active" ); - } ); - $.ui.menu.prototype.delay = 300; - done(); - } - setTimeout( menumouseenter1, 25 ); -} ); - -asyncTest( "handle submenu auto collapse: mouseleave, default markup", function() { - expect( 4 ); - $.ui.menu.prototype.delay = 1; - var element = $( "#menu2" ).menu(), - event = $.Event( "mouseenter" ); - - function menumouseleave1() { - equal( element.find( "ul[aria-expanded='true']" ).length, 1, "first submenu expanded" ); - element.menu( "focus", event, element.find( "li:nth-child(7) li:first" ) ); - setTimeout( menumouseleave2, 25 ); - } - function menumouseleave2() { - equal( element.find( "ul[aria-expanded='true']" ).length, 2, "second submenu expanded" ); - element.find( "ul[aria-expanded='true']:first" ).trigger( "mouseleave" ); - setTimeout( menumouseleave3, 25 ); - } - function menumouseleave3() { - equal( element.find( "ul[aria-expanded='true']" ).length, 1, "second submenu collapsed" ); - element.trigger( "mouseleave" ); - setTimeout( menumouseleave4, 25 ); - } - function menumouseleave4() { - equal( element.find( "ul[aria-expanded='true']" ).length, 0, "first submenu collapsed" ); - $.ui.menu.prototype.delay = 300; - start(); - } - - element.find( "li:nth-child(7)" ).trigger( "mouseenter" ); - setTimeout( menumouseleave1, 25 ); -}); - -asyncTest( "handle submenu auto collapse: mouseleave, custom markup", function() { - expect( 4 ); - $.ui.menu.prototype.delay = 1; - var element = $( "#menu5" ).menu({ menus: ".menu" }), - event = $.Event( "mouseenter" ); - - function menumouseleave1() { - equal( element.find( "div[aria-expanded='true']" ).length, 1, "first submenu expanded" ); - element.menu( "focus", event, element.find( ":nth-child(7)" ).find( ".menu" ).eq( 0 ).children().eq( 0 ) ); - setTimeout( menumouseleave2, 25 ); - } - function menumouseleave2() { - equal( element.find( "div[aria-expanded='true']" ).length, 2, "second submenu expanded" ); - element.find( "div[aria-expanded='true']:first" ).trigger( "mouseleave" ); - setTimeout( menumouseleave3, 25 ); - } - function menumouseleave3() { - equal( element.find( "div[aria-expanded='true']" ).length, 1, "second submenu collapsed" ); - element.trigger( "mouseleave" ); - setTimeout( menumouseleave4, 25 ); - } - function menumouseleave4() { - equal( element.find( "div[aria-expanded='true']" ).length, 0, "first submenu collapsed" ); - $.ui.menu.prototype.delay = 300; - start(); - } - - element.find( ":nth-child(7)" ).trigger( "mouseenter" ); - setTimeout( menumouseleave1, 25 ); -}); - -asyncTest( "handle keyboard navigation on menu without scroll and without submenus", function() { - expect( 12 ); - var element = $( "#menu1" ).menu({ - select: function( event, ui ) { - log( $( ui.item[ 0 ] ).text() ); - }, - focus: function( event ) { - log( $( event.target ).find( ".ui-menu-item-wrapper.ui-state-active" ).parent().index() ); - } - }); - - log( "keydown", true ); - element[ 0 ].focus(); - setTimeout(function() { - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - equal( logOutput(), "keydown,0,1,2", "Keydown DOWN" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); - equal( logOutput(), "keydown,1", "Keydown UP" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); - equal( logOutput(), "keydown", "Keydown LEFT (no effect)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ); - equal( logOutput(), "keydown", "Keydown RIGHT (no effect)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); - equal( logOutput(), "keydown,4", "Keydown PAGE_DOWN" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); - equal( logOutput(), "keydown", "Keydown PAGE_DOWN (no effect)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); - equal( logOutput(), "keydown,0", "Keydown PAGE_UP" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); - equal( logOutput(), "keydown", "Keydown PAGE_UP (no effect)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.END } ); - equal( logOutput(), "keydown,4", "Keydown END" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.HOME } ); - equal( logOutput(), "keydown,0", "Keydown HOME" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); - equal( logOutput(), "keydown", "Keydown ESCAPE (no effect)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); - equal( logOutput(), "keydown,Aberdeen", "Keydown ENTER" ); - - start(); - }); -}); - -asyncTest( "handle keyboard navigation on menu without scroll and with submenus", function() { - expect( 16 ); - var element = $( "#menu2" ).menu({ - select: function( event, ui ) { - log( $( ui.item[0] ).text() ); - }, - focus: function( event ) { - log( $( event.target ).find( ".ui-menu-item-wrapper.ui-state-active:last" ).parent().index() ); - } - }); - - log( "keydown", true ); - element.one( "menufocus", function() { - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - equal( logOutput(), "keydown,1,2", "Keydown DOWN" ); - setTimeout( menukeyboard1 ); - }); - element.focus(); - - function menukeyboard1() { - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); - equal( logOutput(), "keydown,1,0", "Keydown UP" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); - equal( logOutput(), "keydown", "Keydown LEFT (no effect)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ); - - setTimeout(function() { - equal( logOutput(), "keydown,1,2,3,4,0", "Keydown RIGHT (open submenu)" ); - setTimeout( menukeyboard2 ); - } ); - } - - function menukeyboard2() { - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); - equal( logOutput(), "keydown,4", "Keydown LEFT (close submenu)" ); - - // re-open submenu - element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ); - setTimeout( menukeyboard3 ); - } - - function menukeyboard3() { - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); - equal( logOutput(), "keydown,2", "Keydown PAGE_DOWN" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); - equal( logOutput(), "keydown", "Keydown PAGE_DOWN (no effect)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); - equal( logOutput(), "keydown,0", "Keydown PAGE_UP" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); - equal( logOutput(), "keydown", "Keydown PAGE_UP (no effect)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.END } ); - equal( logOutput(), "keydown,2", "Keydown END" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.HOME } ); - equal( logOutput(), "keydown,0", "Keydown HOME" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); - equal( logOutput(), "keydown,4", "Keydown ESCAPE (close submenu)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.SPACE } ); - setTimeout( menukeyboard4 ); - } - - function menukeyboard4() { - equal( logOutput(), "keydown,0", "Keydown SPACE (open submenu)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); - equal( logOutput(), "keydown,4", "Keydown ESCAPE (close submenu)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ); - setTimeout( function() { - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ); - setTimeout( function() { - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - equal( logOutput(), "keydown,5,6,0,1,0,2,4,0", "Keydown skip dividers" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); - setTimeout( menukeyboard6 ); - } ); - } ); - } - - function menukeyboard6() { - equal( logOutput(), "keydown,Ada", "Keydown ENTER (open submenu)" ); - start(); - } -}); - -asyncTest( "handle keyboard navigation on menu with scroll and without submenus", function() { - expect( 14 ); - var element = $( "#menu3" ).menu({ - select: function( event, ui ) { - log( $( ui.item[ 0 ] ).text() ); - }, - focus: function( event ) { - log( $( event.target ).find( ".ui-menu-item-wrapper.ui-state-active:last" ).parent().index() ); - } - }); - - log( "keydown", true ); - element[ 0 ].focus(); - setTimeout(function() { - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - equal( logOutput(), "keydown,0,1,2", "Keydown DOWN" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); - equal( logOutput(), "keydown,1,0", "Keydown UP" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); - equal( logOutput(), "keydown", "Keydown LEFT (no effect)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ); - equal( logOutput(), "keydown", "Keydown RIGHT (no effect)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); - equal( logOutput(), "keydown,17", "Keydown PAGE_DOWN" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); - equal( logOutput(), "keydown,34", "Keydown PAGE_DOWN" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); - equal( logOutput(), "keydown,17", "Keydown PAGE_UP" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); - equal( logOutput(), "keydown,0", "Keydown PAGE_UP" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); - equal( logOutput(), "keydown", "Keydown PAGE_UP (no effect)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.END } ); - equal( logOutput(), "keydown,37", "Keydown END" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); - equal( logOutput(), "keydown", "Keydown PAGE_DOWN (no effect)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.HOME } ); - equal( logOutput(), "keydown,0", "Keydown HOME" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); - equal( logOutput(), "keydown", "Keydown ESCAPE (no effect)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); - equal( logOutput(), "keydown,Aberdeen", "Keydown ENTER" ); - - start(); - }); -}); - -asyncTest( "handle keyboard navigation on menu with scroll and with submenus", function() { - expect( 14 ); - var element = $( "#menu4" ).menu({ - select: function( event, ui ) { - log( $( ui.item[ 0 ] ).text() ); - }, - focus: function( event ) { - log( $( event.target ).find( ".ui-menu-item-wrapper.ui-state-active:last" ).parent().index()); - } - }); - - log( "keydown", true ); - element.one( "menufocus", function() { - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - equal( logOutput(), "keydown,1,2", "Keydown DOWN" ); - setTimeout( menukeyboard1 ); - }); - element.focus(); - - function menukeyboard1() { - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); - equal( logOutput(), "keydown,1,0", "Keydown UP" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); - equal( logOutput(), "keydown", "Keydown LEFT (no effect)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ); - - setTimeout( function() { - equal( logOutput(), "keydown,1,0", "Keydown RIGHT (open submenu)" ); - }, 50 ); - setTimeout( menukeyboard2, 50 ); - } - - function menukeyboard2() { - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); - equal( logOutput(), "keydown,1", "Keydown LEFT (close submenu)" ); - - // re-open submenu - element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ); - setTimeout( menukeyboard3, 50 ); - } - - function menukeyboard3() { - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); - equal( logOutput(), "keydown,17", "Keydown PAGE_DOWN" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); - equal( logOutput(), "keydown,27", "Keydown PAGE_DOWN" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); - equal( logOutput(), "keydown,10", "Keydown PAGE_UP" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); - equal( logOutput(), "keydown,0", "Keydown PAGE_UP" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.END } ); - equal( logOutput(), "keydown,27", "Keydown END" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.HOME } ); - equal( logOutput(), "keydown,0", "Keydown HOME" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); - equal( logOutput(), "keydown,1", "Keydown ESCAPE (close submenu)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); - setTimeout( menukeyboard4, 50 ); - } - - function menukeyboard4() { - equal( logOutput(), "keydown,0", "Keydown ENTER (open submenu)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); - equal( logOutput(), "keydown,Aberdeen", "Keydown ENTER (select item)" ); - - start(); - } -}); - -asyncTest( "handle keyboard navigation and mouse click on menu with disabled items", function() { - expect( 6 ); - var element = $( "#menu6" ).menu({ - select: function( event, ui ) { - log( $( ui.item[0] ).text() ); - }, - focus: function( event ) { - log( $( event.target ).find( ".ui-menu-item-wrapper.ui-state-active" ).parent().index()); - } - }); - - log( "keydown", true ); - element.one( "menufocus", function() { - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); - equal( logOutput(), "keydown,1", "Keydown focus but not select disabled item" ); - setTimeout( menukeyboard1, 50 ); - }); - element.focus(); - - function menukeyboard1() { - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - equal( logOutput(), "keydown,2,3,4", "Keydown focus disabled item with submenu" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); - equal( logOutput(), "keydown", "Keydown LEFT (no effect)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ); - - setTimeout( function() { - equal( logOutput(), "keydown", "Keydown RIGHT (no effect on disabled sub-menu)" ); - - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); - - setTimeout( function() { - equal( logOutput(), "keydown", "Keydown ENTER (no effect on disabled sub-menu)" ); - log( "click", true ); - click( element, "1" ); - equal( logOutput(), "click", "Click disabled item (no effect)" ); - start(); - }, 50 ); - }, 50 ); - } -}); - -asyncTest( "handle keyboard navigation and mouse click on menu with dividers and group labels", function() { - expect( 2 ); - var element = $( "#menu7" ).menu({ - items: "> :not('.ui-menu-group')", - select: function( event, ui ) { - log( $( ui.item[0] ).text() ); - }, - focus: function( event ) { - log( $( event.target ).find( ".ui-menu-item-wrapper.ui-state-active" ).parent().index() ); - } - }); - - log( "keydown", true ); - element.one( "menufocus", function() { - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); - equal( logOutput(), "keydown,2,Ada", "Keydown skips initial group label" ); - setTimeout( menukeyboard1, 50 ); - }); - element.focus(); - - function menukeyboard1() { - log( "keydown", true ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); - equal( logOutput(), "keydown,3,4,7", "Keydown focus skips divider and group label" ); - start(); - } -}); - -asyncTest( "handle keyboard navigation with spelling of menu items", function() { - expect( 3 ); - var element = $( "#menu2" ).menu({ - focus: function( event ) { - log( $( event.target ).find( ".ui-menu-item-wrapper.ui-state-active" ).parent().index() ); - } - }); - - log( "keydown", true ); - element.one( "menufocus", function() { - element.simulate( "keydown", { keyCode: 65 } ); - element.simulate( "keydown", { keyCode: 68 } ); - element.simulate( "keydown", { keyCode: 68 } ); - equal( logOutput(), "keydown,0,1,3", "Keydown focus Addyston by spelling the first 3 letters" ); - element.simulate( "keydown", { keyCode: 68 } ); - equal( logOutput(), "keydown,0,1,3,4", "Keydown focus Delphi by repeating the 'd' again" ); - element.simulate( "keydown", { keyCode: 83 } ); - equal( logOutput(), "keydown,0,1,3,4,5", "Keydown focus Saarland ignoring leading space" ); - start(); - }); - element[ 0 ].focus(); -}); - -asyncTest( "Keep focus on selected item (see #10644)", function() { - expect( 1 ); - var element = $( "#menu2" ).menu({ - focus: function( event ) { - log( $( event.target ).find( ".ui-menu-item-wrapper.ui-state-active" ).parent().index() ); - } - }); - - log( "keydown", true ); - element.one( "menufocus", function() { - element.simulate( "keydown", { keyCode: 65 } ); - element.simulate( "keydown", { keyCode: 68 } ); - element.simulate( "keydown", { keyCode: 68 } ); - element.simulate( "keydown", { keyCode: 89 } ); - element.simulate( "keydown", { keyCode: 83 } ); - equal( logOutput(), "keydown,0,1,3,3,3", - "Focus stays on 'Addyston', even after other options are eliminated" ); - start(); - }); - element[ 0 ].focus(); -}); - -test( "#9469: Stopping propagation in a select event should not suppress subsequent select events.", function() { - expect( 1 ); - var element = $( "#menu1" ).menu({ - select: function( event ) { - log(); - event.stopPropagation(); - } - }); - - click( element, "1" ); - click( element, "2" ); - - equal( logOutput(), "1,2", "Both select events were not triggered." ); -}); - -asyncTest( "#10571: When typing in a menu, only menu-items should be focused", function( assert ) { - expect( 3 ); - - var element = $( "#menu8" ).menu({ - focus: function( event, ui ) { - equal( ui.item.length, 1, "There should only be one match when filtering" ); - assert.hasClasses( ui.item, "ui-menu-item" ); - equal( ui.item.text(), "-Saarland", "element has correct text" ); - } - }); - - setTimeout(function() { - element.menu( "widget" ).simulate( "keydown", { keyCode: "-".charCodeAt( 0 ) } ); - start(); - }); -}); - -} ); |