11import { $ , Slot , component$ , sync$ , useContext , type PropsOf } from '@builder.io/qwik' ;
22import SelectContextId from './select-context' ;
3- import { useTypeahead } from './use-select' ;
4- import { getNextEnabledOptionIndex , getPrevEnabledOptionIndex } from './utils' ;
3+ import { useSelect , useTypeahead } from './use-select' ;
54
65type SelectTriggerProps = PropsOf < 'button' > ;
76export const SelectTrigger = component$ < SelectTriggerProps > ( ( props ) => {
87 const context = useContext ( SelectContextId ) ;
8+ const { getNextEnabledOptionIndex, getPrevEnabledOptionIndex } = useSelect ( ) ;
99 const openKeys = [ 'ArrowUp' , 'ArrowDown' ] ;
1010 const closedKeys = [ `Escape` ] ;
1111
@@ -32,7 +32,7 @@ export const SelectTrigger = component$<SelectTriggerProps>((props) => {
3232 }
3333 } ) ;
3434
35- const handleKeyDown$ = $ ( ( e : KeyboardEvent ) => {
35+ const handleKeyDown$ = $ ( async ( e : KeyboardEvent ) => {
3636 typeahead$ ( e . key ) ;
3737 const shouldOpen = ! context . isListboxOpenSig . value && openKeys . includes ( e . key ) ;
3838 const shouldClose = context . isListboxOpenSig . value && closedKeys . includes ( e . key ) ;
@@ -47,15 +47,15 @@ export const SelectTrigger = component$<SelectTriggerProps>((props) => {
4747 }
4848
4949 if ( e . key === 'Home' ) {
50- context . highlightedIndexSig . value = getNextEnabledOptionIndex (
50+ context . highlightedIndexSig . value = await getNextEnabledOptionIndex (
5151 - 1 ,
5252 context . optionsSig . value ,
5353 context . loop ,
5454 ) ;
5555 }
5656
5757 if ( e . key === 'End' ) {
58- const lastEnabledOptionIndex = getPrevEnabledOptionIndex (
58+ const lastEnabledOptionIndex = await getPrevEnabledOptionIndex (
5959 context . optionsSig . value . length ,
6060 context . optionsSig . value ,
6161 context . loop ,
@@ -65,7 +65,7 @@ export const SelectTrigger = component$<SelectTriggerProps>((props) => {
6565
6666 if ( ! context . isListboxOpenSig . value ) {
6767 if ( e . key === 'ArrowRight' && context . highlightedIndexSig . value === null ) {
68- context . selectedIndexSig . value = getNextEnabledOptionIndex (
68+ context . selectedIndexSig . value = await getNextEnabledOptionIndex (
6969 - 1 ,
7070 context . optionsSig . value ,
7171 context . loop ,
@@ -76,17 +76,19 @@ export const SelectTrigger = component$<SelectTriggerProps>((props) => {
7676 }
7777
7878 if ( e . key === 'ArrowRight' && context . highlightedIndexSig . value !== null ) {
79- context . selectedIndexSig . value = getNextEnabledOptionIndex (
79+ context . selectedIndexSig . value = await getNextEnabledOptionIndex (
8080 context . selectedIndexSig . value ! ,
8181 context . optionsSig . value ,
8282 context . loop ,
8383 ) ;
8484
85+ console . log ( 'selectedIndex' , context . selectedIndexSig . value ) ;
86+
8587 context . highlightedIndexSig . value = context . selectedIndexSig . value ;
8688 }
8789
8890 if ( e . key === 'ArrowLeft' && context . highlightedIndexSig . value === null ) {
89- context . selectedIndexSig . value = getPrevEnabledOptionIndex (
91+ context . selectedIndexSig . value = await getPrevEnabledOptionIndex (
9092 context . optionsSig . value . length ,
9193 context . optionsSig . value ,
9294 context . loop ,
@@ -97,7 +99,7 @@ export const SelectTrigger = component$<SelectTriggerProps>((props) => {
9799 }
98100
99101 if ( e . key === 'ArrowLeft' && context . highlightedIndexSig . value !== null ) {
100- context . selectedIndexSig . value = getPrevEnabledOptionIndex (
102+ context . selectedIndexSig . value = await getPrevEnabledOptionIndex (
101103 context . highlightedIndexSig . value ,
102104 context . optionsSig . value ,
103105 context . loop ,
@@ -109,7 +111,7 @@ export const SelectTrigger = component$<SelectTriggerProps>((props) => {
109111
110112 /** When initially opening the listbox, we want to grab the first enabled option index */
111113 if ( context . highlightedIndexSig . value === null ) {
112- context . highlightedIndexSig . value = getNextEnabledOptionIndex (
114+ context . highlightedIndexSig . value = await getNextEnabledOptionIndex (
113115 - 1 ,
114116 context . optionsSig . value ,
115117 context . loop ,
@@ -128,15 +130,15 @@ export const SelectTrigger = component$<SelectTriggerProps>((props) => {
128130 }
129131
130132 if ( e . key === 'ArrowDown' ) {
131- context . highlightedIndexSig . value = getNextEnabledOptionIndex (
133+ context . highlightedIndexSig . value = await getNextEnabledOptionIndex (
132134 context . highlightedIndexSig . value ,
133135 context . optionsSig . value ,
134136 context . loop ,
135137 ) ;
136138 }
137139
138140 if ( e . key === 'ArrowUp' ) {
139- context . highlightedIndexSig . value = getPrevEnabledOptionIndex (
141+ context . highlightedIndexSig . value = await getPrevEnabledOptionIndex (
140142 context . highlightedIndexSig . value ,
141143 context . optionsSig . value ,
142144 context . loop ,
0 commit comments