File tree Expand file tree Collapse file tree 1 file changed +12
-6
lines changed Expand file tree Collapse file tree 1 file changed +12
-6
lines changed Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ export default function useDropdownMenu(itemCount: number) {
77 const [ isOpen , setIsOpen ] = useState < boolean > ( false ) ;
88 const currentFocusIndex = useRef < number | null > ( null ) ;
99 const firstRun = useRef ( true ) ;
10+ const clickedOpen = useRef ( false ) ;
1011
1112 // Create refs
1213 const buttonRef = useRef < HTMLButtonElement > ( null ) ;
@@ -31,8 +32,10 @@ export default function useDropdownMenu(itemCount: number) {
3132 }
3233
3334 // If the menu is currently open focus on the first item in the menu
34- if ( isOpen ) {
35+ if ( isOpen && ! clickedOpen . current ) {
3536 moveFocus ( 0 ) ;
37+ } else if ( ! isOpen ) {
38+ clickedOpen . current = false ;
3639 }
3740 } , [ isOpen ] ) ;
3841
@@ -75,16 +78,19 @@ export default function useDropdownMenu(itemCount: number) {
7578 if ( isKeyboardEvent ( e ) ) {
7679 const { key } = e ;
7780
78- if ( key !== 'Tab' && key !== 'Shift' ) {
79- e . preventDefault ( ) ;
81+ if ( ! [ 'Enter' , ' ' , 'Tab' , 'ArrowDown' ] . includes ( key ) ) {
82+ return ;
8083 }
8184
82- if ( key === 'Enter' || key === ' ' ) {
85+ if ( ( key === 'Tab' || key === 'ArrowDown' ) && clickedOpen . current && isOpen ) {
86+ e . preventDefault ( ) ;
87+ moveFocus ( 0 ) ;
88+ } else if ( key !== 'Tab' ) {
89+ e . preventDefault ( ) ;
8390 setIsOpen ( true ) ;
84- } else if ( key === 'Tab' ) {
85- setIsOpen ( false ) ;
8691 }
8792 } else {
93+ clickedOpen . current = ! isOpen ;
8894 setIsOpen ( ! isOpen ) ;
8995 }
9096 } ;
You can’t perform that action at this time.
0 commit comments