File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -53,7 +53,7 @@ class OptionElement extends globalThis.HTMLElement {
5353 }
5454
5555 if ( name === 'disabled' ) {
56- this . #internals. ariaDisabled = newVal != null ? 'true' : 'false' ;
56+ this . #internals. ariaDisabled = this . disabled ? 'true' : 'false' ;
5757 this . #ownerElement( ) ?. reset ( ) ;
5858 }
5959 }
Original file line number Diff line number Diff line change @@ -155,16 +155,22 @@ class SelectMenuElement extends globalThis.HTMLElement {
155155 return this . options . findIndex ( option => option . selected ) ;
156156 }
157157
158- set selectedIndex ( val ) {
159-
158+ set selectedIndex ( index ) {
159+ const option = this . options . find ( option => option . index === index ) ;
160+ if ( option ) {
161+ this . #selectOption( option ) ;
162+ }
160163 }
161164
162165 get value ( ) {
163166 return this . options . find ( option => option . selected ) ?. value ?? '' ;
164167 }
165168
166169 set value ( val ) {
167-
170+ const option = this . options . find ( option => option . value === val ) ;
171+ if ( option ) {
172+ this . #selectOption( option ) ;
173+ }
168174 }
169175
170176 get required ( ) {
Original file line number Diff line number Diff line change @@ -25,6 +25,32 @@ test('selectmenu selects the option w/ selected attribute', async function (t) {
2525 t . equal ( selectmenu . selectedIndex , 1 ) ;
2626} ) ;
2727
28+ test ( 'selectmenu.selectedIndex selects the option w/ index' , async function ( t ) {
29+ const selectmenu = await fixture ( `
30+ <x-selectmenu>
31+ <x-option>Option 1</x-option>
32+ <x-option>Option 2</x-option>
33+ </x-selectmenu>` ) ;
34+
35+ selectmenu . selectedIndex = 1 ;
36+
37+ t . equal ( selectmenu . value , 'Option 2' ) ;
38+ t . equal ( selectmenu . selectedIndex , 1 ) ;
39+ } ) ;
40+
41+ test ( 'selectmenu.value selects the option w/ value' , async function ( t ) {
42+ const selectmenu = await fixture ( `
43+ <x-selectmenu>
44+ <x-option>Option 1</x-option>
45+ <x-option>Option 2</x-option>
46+ </x-selectmenu>` ) ;
47+
48+ selectmenu . value = 'Option 2' ;
49+
50+ t . equal ( selectmenu . value , 'Option 2' ) ;
51+ t . equal ( selectmenu . selectedIndex , 1 ) ;
52+ } ) ;
53+
2854function delay ( ms ) {
2955 return new Promise ( ( resolve ) => setTimeout ( resolve , ms ) ) ;
3056}
You can’t perform that action at this time.
0 commit comments