@@ -25,13 +25,29 @@ export const AccordionRoot = component$(
2525 collapsible = true ,
2626 behavior = 'single' ,
2727 animated = false ,
28+ onSelectedIndexChange$,
29+ onFocusIndexChange$,
2830 ...props
2931 } : AccordionRootProps ) => {
3032 const rootRef = useSignal < HTMLDivElement | undefined > ( ) ;
3133 const triggerStore = useStore < HTMLButtonElement [ ] > ( [ ] ) ;
3234 const currFocusedTriggerIndexSig = useSignal < number > ( - 1 ) ;
3335 const currSelectedTriggerIndexSig = useSignal < number > ( - 1 ) ;
3436
37+ useTask$ ( ( { track } ) => {
38+ track ( ( ) => currSelectedTriggerIndexSig . value ) ;
39+ if ( onSelectedIndexChange$ ) {
40+ onSelectedIndexChange$ ( currSelectedTriggerIndexSig . value ) ;
41+ }
42+ } ) ;
43+
44+ useTask$ ( ( { track } ) => {
45+ track ( ( ) => currFocusedTriggerIndexSig . value ) ;
46+ if ( onFocusIndexChange$ ) {
47+ onFocusIndexChange$ ( currFocusedTriggerIndexSig . value ) ;
48+ }
49+ } ) ;
50+
3551 const selectedTriggerIdSig = useSignal < string > ( '' ) ;
3652
3753 const focusPreviousTrigger$ = $ ( ( ) => {
@@ -64,20 +80,6 @@ export const AccordionRoot = component$(
6480 return triggerStore [ triggerStore . length - 1 ] . focus ( ) ;
6581 } ) ;
6682
67- useTask$ ( ( { track } ) => {
68- track ( ( ) => currSelectedTriggerIndexSig . value ) ;
69- if ( props . onSelectedIndexChange$ ) {
70- props . onSelectedIndexChange$ ( currSelectedTriggerIndexSig . value ) ;
71- }
72- } ) ;
73-
74- useTask$ ( ( { track } ) => {
75- track ( ( ) => currFocusedTriggerIndexSig . value ) ;
76- if ( props . onFocusIndexChange$ ) {
77- props . onFocusIndexChange$ ( currFocusedTriggerIndexSig . value ) ;
78- }
79- } ) ;
80-
8183 const contextService : AccordionRootContext = {
8284 selectedTriggerIdSig,
8385 currFocusedTriggerIndexSig,
0 commit comments