@@ -98,7 +98,7 @@ const CourtNameSpan = styled.span`
9898 color: ${ ( { theme } ) => theme . primaryText } ;
9999` ;
100100
101- function flattenCourts ( court , parent = null ) {
101+ function flattenCourts ( court : any , parent : any = null ) {
102102 const current = {
103103 ...court ,
104104 parentName : parent ?. name ?? null ,
@@ -114,7 +114,7 @@ const TopSearch: React.FC = () => {
114114 const items = useMemo ( ( ) => ! isUndefined ( data ?. court ) && [ rootCourtToItems ( data . court ) ] , [ data ] ) ;
115115 const isUniversity = isKlerosUniversity ( ) ;
116116 const [ search , setSearch ] = useState ( "" ) ;
117- const [ selectedIndex , setSelectedIndex ] = useState ( - 1 ) ;
117+ const [ selectedIndex , setSelectedIndex ] = useState ( 0 ) ;
118118
119119 const filteredCourts = useMemo ( ( ) => {
120120 if ( ! data ?. court ) return [ ] ;
@@ -131,31 +131,32 @@ const TopSearch: React.FC = () => {
131131 switch ( e . key ) {
132132 case "ArrowDown" :
133133 e . preventDefault ( ) ;
134- setSelectedIndex ( ( prev ) => Math . min ( prev + 1 , filteredCourts . length - 1 ) ) ;
134+ setSelectedIndex ( ( prev ) => ( prev + 1 ) % filteredCourts . length ) ;
135135 break ;
136136 case "ArrowUp" :
137137 e . preventDefault ( ) ;
138- setSelectedIndex ( ( prev ) => Math . max ( prev - 1 , - 1 ) ) ;
138+ setSelectedIndex ( ( prev ) => {
139+ const newIndex = prev - 1 ;
140+ return newIndex < 0 ? filteredCourts . length - 1 : newIndex ;
141+ } ) ;
139142 break ;
140143 case "Enter" :
141- if ( selectedIndex >= 0 ) {
142- navigate ( `/courts/${ filteredCourts [ selectedIndex ] . id } ` ) ;
143- setSearch ( "" ) ;
144- setSelectedIndex ( - 1 ) ;
145- }
144+ navigate ( `/courts/${ filteredCourts [ selectedIndex ] . id } ` ) ;
145+ setSearch ( "" ) ;
146+ setSelectedIndex ( 0 ) ;
146147 break ;
147148 }
148149 } ;
149150
150151 const handleSearchChange = ( e : React . ChangeEvent < HTMLInputElement > ) => {
151152 setSearch ( e . target . value ) ;
152- setSelectedIndex ( - 1 ) ;
153+ setSelectedIndex ( 0 ) ;
153154 } ;
154155
155156 const handleCourtClick = ( courtId : string ) => {
156157 navigate ( `/courts/${ courtId } ` ) ;
157158 setSearch ( "" ) ;
158- setSelectedIndex ( - 1 ) ;
159+ setSelectedIndex ( 0 ) ;
159160 } ;
160161
161162 return (
@@ -181,7 +182,7 @@ const TopSearch: React.FC = () => {
181182 { filteredCourts . map ( ( court , index ) => (
182183 < StyledCard
183184 key = { court . id }
184- selected = { selectedIndex === - 1 && court . id === currentCourtId }
185+ selected = { selectedIndex === 0 && court . id === currentCourtId }
185186 keyboardSelected = { index === selectedIndex }
186187 onClick = { ( ) => handleCourtClick ( court . id ) }
187188 >
0 commit comments