Skip to content

Commit c15490b

Browse files
prevented keys
1 parent 874ad85 commit c15490b

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

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

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
useTask$,
99
type PropsOf,
1010
useContextProvider,
11+
sync$,
1112
} from '@builder.io/qwik';
1213
import { isServer, isBrowser } from '@builder.io/qwik/build';
1314
import SelectContextId, {
@@ -126,6 +127,24 @@ export const HSelectItem = component$<SelectItemProps>((props) => {
126127
isSelectedSig,
127128
};
128129

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+
129148
const handleKeyDown$ = $(async (e: KeyboardEvent) => {
130149
switch (e.key) {
131150
case 'ArrowDown':
@@ -164,6 +183,11 @@ export const HSelectItem = component$<SelectItemProps>((props) => {
164183
context.highlightedIndexSig.value = lastEnabledOptionIndex;
165184
}
166185
break;
186+
187+
case 'Tab':
188+
case 'Escape':
189+
context.isListboxOpenSig.value = false;
190+
break;
167191
}
168192
});
169193

@@ -174,7 +198,7 @@ export const HSelectItem = component$<SelectItemProps>((props) => {
174198
{...rest}
175199
id={itemId}
176200
onClick$={[handleClick$, props.onClick$]}
177-
onKeyDown$={[handleKeyDown$, props.onKeyDown$]}
201+
onKeyDown$={[handleKeyDownSync$, handleKeyDown$, props.onKeyDown$]}
178202
onPointerOver$={[handlePointerOver$, props.onPointerOver$]}
179203
ref={itemRef}
180204
tabIndex={-1}

0 commit comments

Comments
 (0)