@@ -98,7 +98,7 @@ const CourtNameSpan = styled.span`
98
98
color: ${ ( { theme } ) => theme . primaryText } ;
99
99
` ;
100
100
101
- function flattenCourts ( court , parent = null ) {
101
+ function flattenCourts ( court : any , parent : any = null ) {
102
102
const current = {
103
103
...court ,
104
104
parentName : parent ?. name ?? null ,
@@ -114,7 +114,7 @@ const TopSearch: React.FC = () => {
114
114
const items = useMemo ( ( ) => ! isUndefined ( data ?. court ) && [ rootCourtToItems ( data . court ) ] , [ data ] ) ;
115
115
const isUniversity = isKlerosUniversity ( ) ;
116
116
const [ search , setSearch ] = useState ( "" ) ;
117
- const [ selectedIndex , setSelectedIndex ] = useState ( - 1 ) ;
117
+ const [ selectedIndex , setSelectedIndex ] = useState ( 0 ) ;
118
118
119
119
const filteredCourts = useMemo ( ( ) => {
120
120
if ( ! data ?. court ) return [ ] ;
@@ -131,31 +131,32 @@ const TopSearch: React.FC = () => {
131
131
switch ( e . key ) {
132
132
case "ArrowDown" :
133
133
e . preventDefault ( ) ;
134
- setSelectedIndex ( ( prev ) => Math . min ( prev + 1 , filteredCourts . length - 1 ) ) ;
134
+ setSelectedIndex ( ( prev ) => ( prev + 1 ) % filteredCourts . length ) ;
135
135
break ;
136
136
case "ArrowUp" :
137
137
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
+ } ) ;
139
142
break ;
140
143
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 ) ;
146
147
break ;
147
148
}
148
149
} ;
149
150
150
151
const handleSearchChange = ( e : React . ChangeEvent < HTMLInputElement > ) => {
151
152
setSearch ( e . target . value ) ;
152
- setSelectedIndex ( - 1 ) ;
153
+ setSelectedIndex ( 0 ) ;
153
154
} ;
154
155
155
156
const handleCourtClick = ( courtId : string ) => {
156
157
navigate ( `/courts/${ courtId } ` ) ;
157
158
setSearch ( "" ) ;
158
- setSelectedIndex ( - 1 ) ;
159
+ setSelectedIndex ( 0 ) ;
159
160
} ;
160
161
161
162
return (
@@ -181,7 +182,7 @@ const TopSearch: React.FC = () => {
181
182
{ filteredCourts . map ( ( court , index ) => (
182
183
< StyledCard
183
184
key = { court . id }
184
- selected = { selectedIndex === - 1 && court . id === currentCourtId }
185
+ selected = { selectedIndex === 0 && court . id === currentCourtId }
185
186
keyboardSelected = { index === selectedIndex }
186
187
onClick = { ( ) => handleCourtClick ( court . id ) }
187
188
>
0 commit comments