File tree Expand file tree Collapse file tree 1 file changed +25
-1
lines changed
packages/kit-headless/src/components/select Expand file tree Collapse file tree 1 file changed +25
-1
lines changed Original file line number Diff line number Diff line change 8
8
useTask$ ,
9
9
type PropsOf ,
10
10
useContextProvider ,
11
+ sync$ ,
11
12
} from '@builder.io/qwik' ;
12
13
import { isServer , isBrowser } from '@builder.io/qwik/build' ;
13
14
import SelectContextId , {
@@ -126,6 +127,24 @@ export const HSelectItem = component$<SelectItemProps>((props) => {
126
127
isSelectedSig,
127
128
} ;
128
129
130
+ const handleKeyDownSync$ = sync$ ( ( e : KeyboardEvent ) => {
131
+ const keys = [
132
+ 'ArrowUp' ,
133
+ 'ArrowDown' ,
134
+ 'ArrowRight' ,
135
+ 'ArrowLeft' ,
136
+ 'Home' ,
137
+ 'End' ,
138
+ 'PageDown' ,
139
+ 'PageUp' ,
140
+ 'Enter' ,
141
+ ' ' ,
142
+ ] ;
143
+ if ( keys . includes ( e . key ) ) {
144
+ e . preventDefault ( ) ;
145
+ }
146
+ } ) ;
147
+
129
148
const handleKeyDown$ = $ ( async ( e : KeyboardEvent ) => {
130
149
switch ( e . key ) {
131
150
case 'ArrowDown' :
@@ -164,6 +183,11 @@ export const HSelectItem = component$<SelectItemProps>((props) => {
164
183
context . highlightedIndexSig . value = lastEnabledOptionIndex ;
165
184
}
166
185
break ;
186
+
187
+ case 'Tab' :
188
+ case 'Escape' :
189
+ context . isListboxOpenSig . value = false ;
190
+ break ;
167
191
}
168
192
} ) ;
169
193
@@ -174,7 +198,7 @@ export const HSelectItem = component$<SelectItemProps>((props) => {
174
198
{ ...rest }
175
199
id = { itemId }
176
200
onClick$ = { [ handleClick$ , props . onClick$ ] }
177
- onKeyDown$ = { [ handleKeyDown$ , props . onKeyDown$ ] }
201
+ onKeyDown$ = { [ handleKeyDownSync$ , handleKeyDown$ , props . onKeyDown$ ] }
178
202
onPointerOver$ = { [ handlePointerOver$ , props . onPointerOver$ ] }
179
203
ref = { itemRef }
180
204
tabIndex = { - 1 }
You can’t perform that action at this time.
0 commit comments