File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2,7 +2,10 @@ var findTabbable = require('../helpers/tabbable');
22
33module . exports = function ( node , event ) {
44 var tabbable = findTabbable ( node ) ;
5- if ( ! tabbable . length ) return ;
5+ if ( ! tabbable . length ) {
6+ event . preventDefault ( ) ;
7+ return ;
8+ }
69 var finalTabbable = tabbable [ event . shiftKey ? 0 : tabbable . length - 1 ] ;
710 var leavingFinalTabbable = (
811 finalTabbable === document . activeElement ||
Original file line number Diff line number Diff line change @@ -102,6 +102,19 @@ describe('Modal', function () {
102102 unmountModal ( ) ;
103103 } ) ;
104104
105+ it ( 'keeps focus inside the modal when child has no tabbable elements' , function ( ) {
106+ var tabPrevented = false ;
107+ var modal = renderModal ( { isOpen : true } , 'hello' ) ;
108+ strictEqual ( document . activeElement , modal . portal . refs . content ) ;
109+ Simulate . keyDown ( modal . portal . refs . content , {
110+ key : "Tab" ,
111+ keyCode : 9 ,
112+ which : 9 ,
113+ preventDefault : function ( ) { tabPrevented = true ; }
114+ } ) ;
115+ equal ( tabPrevented , true ) ;
116+ } ) ;
117+
105118 it ( 'supports custom className' , function ( ) {
106119 var modal = renderModal ( { isOpen : true , className : 'myClass' } ) ;
107120 notEqual ( modal . portal . refs . content . className . indexOf ( 'myClass' ) , - 1 ) ;
You can’t perform that action at this time.
0 commit comments