Skip to content

Commit 40f4427

Browse files
selecting options
1 parent 713a284 commit 40f4427

File tree

2 files changed

+27
-12
lines changed

2 files changed

+27
-12
lines changed

packages/kit-headless/src/components/select/select-item.tsx

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,10 +180,29 @@ export const HSelectItem = component$<SelectItemProps>((props) => {
180180
}
181181
break;
182182

183-
case 'Tab':
184183
case 'Escape':
184+
context.triggerRef.value?.focus();
185+
context.isListboxOpenSig.value = false;
186+
break;
187+
188+
case 'Tab':
185189
context.isListboxOpenSig.value = false;
186190
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;
187206
}
188207
});
189208

packages/kit-headless/src/components/select/select-trigger.tsx

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,6 @@ export const HSelectTrigger = component$<SelectTriggerProps>((props) => {
4545
typeahead$(e.key);
4646

4747
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-
5948
case 'Tab':
6049
case 'Escape':
6150
context.isListboxOpenSig.value = false;
@@ -87,6 +76,13 @@ export const HSelectTrigger = component$<SelectTriggerProps>((props) => {
8776
}
8877
break;
8978

79+
case 'Enter':
80+
case ' ':
81+
context.isListboxOpenSig.value = context.multiple
82+
? true
83+
: !context.isListboxOpenSig.value;
84+
break;
85+
9086
case 'a':
9187
if (e.ctrlKey && context.multiple) {
9288
for (const [index, item] of context.itemsMapSig.value) {

0 commit comments

Comments
 (0)