@@ -80,7 +80,6 @@ export default class Combobox {
8080 ; ( this . input as HTMLElement ) . addEventListener ( 'keydown' , this . keyboardEventHandler )
8181 this . list . addEventListener ( 'click' , commitWithElement )
8282 this . indicateDefaultOption ( )
83- this . selectFirstItemIfNeeded ( )
8483 }
8584
8685 stop ( ) : void {
@@ -98,11 +97,7 @@ export default class Combobox {
9897 Array . from ( this . list . querySelectorAll < HTMLElement > ( '[role="option"]:not([aria-disabled="true"])' ) )
9998 . filter ( visible ) [ 0 ]
10099 ?. setAttribute ( 'data-combobox-option-default' , 'true' )
101- }
102- }
103-
104- selectFirstItemIfNeeded ( ) : void {
105- if ( this . firstOptionSelectionMode === 'selected' ) {
100+ } else if ( this . firstOptionSelectionMode === 'selected' ) {
106101 this . navigate ( 1 )
107102 }
108103 }
@@ -113,7 +108,7 @@ export default class Combobox {
113108 const focusIndex = els . indexOf ( focusEl )
114109
115110 if ( ( focusIndex === els . length - 1 && indexDiff === 1 ) || ( focusIndex === 0 && indexDiff === - 1 ) ) {
116- this . clearSelection ( )
111+ this . resetSelection ( )
117112 this . input . focus ( )
118113 return
119114 }
@@ -146,10 +141,11 @@ export default class Combobox {
146141 for ( const el of this . list . querySelectorAll ( '[aria-selected="true"]' ) ) {
147142 el . removeAttribute ( 'aria-selected' )
148143 }
144+ }
149145
150- if ( this . firstOptionSelectionMode === 'active' ) {
151- this . indicateDefaultOption ( )
152- }
146+ resetSelection ( ) : void {
147+ this . clearSelection ( )
148+ this . indicateDefaultOption ( )
153149 }
154150}
155151
@@ -194,8 +190,7 @@ function keyboardBindings(event: KeyboardEvent, combobox: Combobox) {
194190 break
195191 default :
196192 if ( event . ctrlKey ) break
197- combobox . clearSelection ( )
198- combobox . selectFirstItemIfNeeded ( )
193+ combobox . resetSelection ( )
199194 }
200195}
201196
0 commit comments