File tree Expand file tree Collapse file tree 2 files changed +27
-12
lines changed
packages/kit-headless/src/components/select Expand file tree Collapse file tree 2 files changed +27
-12
lines changed Original file line number Diff line number Diff line change @@ -180,10 +180,29 @@ export const HSelectItem = component$<SelectItemProps>((props) => {
180
180
}
181
181
break ;
182
182
183
- case 'Tab' :
184
183
case 'Escape' :
184
+ context . triggerRef . value ?. focus ( ) ;
185
+ context . isListboxOpenSig . value = false ;
186
+ break ;
187
+
188
+ case 'Tab' :
185
189
context . isListboxOpenSig . value = false ;
186
190
break ;
191
+
192
+ case 'Enter' :
193
+ case ' ' :
194
+ if ( context . isListboxOpenSig . value ) {
195
+ const action = context . multiple ? 'toggle' : 'add' ;
196
+ await selectionManager$ ( context . highlightedIndexSig . value , action ) ;
197
+
198
+ if ( ! context . multiple ) {
199
+ context . triggerRef . value ?. focus ( ) ;
200
+ }
201
+ }
202
+ context . isListboxOpenSig . value = context . multiple
203
+ ? true
204
+ : ! context . isListboxOpenSig . value ;
205
+ break ;
187
206
}
188
207
} ) ;
189
208
Original file line number Diff line number Diff line change @@ -45,17 +45,6 @@ export const HSelectTrigger = component$<SelectTriggerProps>((props) => {
45
45
typeahead$ ( e . key ) ;
46
46
47
47
switch ( e . key ) {
48
- case 'Enter' :
49
- case ' ' :
50
- if ( context . isListboxOpenSig . value ) {
51
- const action = context . multiple ? 'toggle' : 'add' ;
52
- await selectionManager$ ( context . highlightedIndexSig . value , action ) ;
53
- }
54
- context . isListboxOpenSig . value = context . multiple
55
- ? true
56
- : ! context . isListboxOpenSig . value ;
57
- break ;
58
-
59
48
case 'Tab' :
60
49
case 'Escape' :
61
50
context . isListboxOpenSig . value = false ;
@@ -87,6 +76,13 @@ export const HSelectTrigger = component$<SelectTriggerProps>((props) => {
87
76
}
88
77
break ;
89
78
79
+ case 'Enter' :
80
+ case ' ' :
81
+ context . isListboxOpenSig . value = context . multiple
82
+ ? true
83
+ : ! context . isListboxOpenSig . value ;
84
+ break ;
85
+
90
86
case 'a' :
91
87
if ( e . ctrlKey && context . multiple ) {
92
88
for ( const [ index , item ] of context . itemsMapSig . value ) {
You can’t perform that action at this time.
0 commit comments