@@ -27,10 +27,6 @@ export const OPT_HEIGHT = 22;
2727 * @cssprop --dropdown-z-index - workaround for dropdown z-index issues
2828 */
2929export class VscodeSelectBase extends VscElement {
30- /** @internal */
31- @property ( { type : String , reflect : true , attribute : 'aria-expanded' } )
32- override ariaExpanded = 'false' ;
33-
3430 @property ( { type : Boolean , reflect : true } )
3531 creatable = false ;
3632
@@ -40,6 +36,13 @@ export class VscodeSelectBase extends VscElement {
4036 @property ( { type : Boolean , reflect : true } )
4137 combobox = false ;
4238
39+ /**
40+ * Accessible label for screen readers. When a `<vscode-label>` is connected
41+ * to the component, it will be filled automatically.
42+ */
43+ @property ( { reflect : true } )
44+ label = '' ;
45+
4346 /**
4447 * The element cannot be used and is not focusable.
4548 */
@@ -671,6 +674,8 @@ export class VscodeSelectBase extends VscElement {
671674 return html `
672675 < ul
673676 class ="options "
677+ id =${ `${ this . _multiple ? 'ms' : 'ss' } -listbox` }
678+ role ="listbox"
674679 @click=${ this . _onOptionClick }
675680 @mouseover=${ this . _onOptionMouseOver }
676681 @scroll=${ this . _onOptionListScroll }
@@ -680,8 +685,11 @@ export class VscodeSelectBase extends VscElement {
680685 list ,
681686 ( op ) => op . index ,
682687 ( op , index ) => {
688+ const active = op . index === this . _activeIndex && ! op . disabled ;
689+ const selected = this . _selectedIndex === op . index ;
690+
683691 const optionClasses = {
684- active : index === this . _activeIndex && ! op . disabled ,
692+ active,
685693 disabled : op . disabled ,
686694 option : true ,
687695 selected : op . selected ,
@@ -699,9 +707,12 @@ export class VscodeSelectBase extends VscElement {
699707
700708 return html `
701709 < li
710+ aria-selected =${ selected ? 'true' : 'false' }
702711 class =${ classMap ( optionClasses ) }
703712 data-index=${ op . index }
704713 data-filtered-index=${ index }
714+ id=${ `op-${ op . index } ` }
715+ role="option"
705716 >
706717 ${ this . _multiple
707718 ? html `< span class =${ classMap ( checkboxClasses ) } > </ span
@@ -818,7 +829,7 @@ export class VscodeSelectBase extends VscElement {
818829 return html `${ nothing } ` ;
819830 }
820831
821- private _renderDropdown ( ) {
832+ protected _renderDropdown ( ) {
822833 const classes = {
823834 dropdown : true ,
824835 multiple : this . _multiple ,
@@ -833,12 +844,4 @@ export class VscodeSelectBase extends VscElement {
833844 </ div >
834845 ` ;
835846 }
836-
837- override render ( ) : TemplateResult {
838- return html `
839- < slot class ="main-slot " @slotchange =${ this . _onSlotChange } > </ slot >
840- ${ this . combobox ? this . _renderComboboxFace ( ) : this . _renderSelectFace ( ) }
841- ${ this . _renderDropdown ( ) }
842- ` ;
843- }
844847}
0 commit comments