@@ -392,6 +392,7 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
392392 private _type : PersonType = PersonType . person ;
393393 private _groupType : GroupType = GroupType . any ;
394394 private _userType : UserType = UserType . any ;
395+ private _currentSelectedUser : IDynamicPerson ;
395396
396397 private defaultPeople : IDynamicPerson [ ] ;
397398
@@ -521,7 +522,12 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
521522
522523 return html `
523524 < div dir =${ this . direction } class =${ classMap ( inputClasses ) } @click=${ e => this . focus ( e ) } >
524- < div class ="selected-list ">
525+ < div
526+ aria-expanded ="false "
527+ aria-haspopup ="listbox "
528+ role ="combobox "
529+ class ="selected-list "
530+ id ="selected-list ">
525531 ${ selectedPeopleTemplate } ${ flyoutTemplate }
526532 </ div >
527533 </ div >
@@ -587,16 +593,30 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
587593 return null ;
588594 }
589595
596+ const inputAriaLabelText = `${
597+ this . _currentSelectedUser !== undefined
598+ ? this . strings . selected + ' ' + this . _currentSelectedUser . displayName + ' '
599+ : ''
600+ } ' people-picker-input'`;
601+
590602 return html `
591603 < div class ="${ classMap ( inputClasses ) } ">
592604 < input
593605 id ="people-picker-input "
594606 class ="search-box__input "
595607 type ="text "
608+ role ="combobox "
596609 placeholder =${ placeholder }
610+ aria-placeholder =${ placeholder }
597611 label="people-picker-input"
598- aria-label="people-picker-input"
599- role="input"
612+ autocomplete="off"
613+ aria-label=${ inputAriaLabelText }
614+ aria-autocomplete="list"
615+ aria-controls="suggestions-list"
616+ aria-multiline="false"
617+ aria-owns="suggestions-list"
618+ aria-activedescendant="suggestions-list"
619+ tabindex="0"
600620 @keydown="${ this . onUserKeyDown } "
601621 @keyup="${ this . onUserKeyUp } "
602622 @blur=${ this . lostFocus }
@@ -741,7 +761,7 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
741761 this . renderTemplate ( 'no-data' , null ) ||
742762 html `
743763 < div class ="message-parent ">
744- < div label ="search-error-text " aria-label =" We didn't find any matches. " class ="search-error-text ">
764+ < div label ="search-error-text " aria-label =${ this . strings . noResultsFound } class ="search-error-text">
745765 ${ this . strings . noResultsFound }
746766 </ div >
747767 </ div >
@@ -760,8 +780,25 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
760780 protected renderSearchResults ( people ?: IDynamicPerson [ ] ) {
761781 people = people || this . _foundPeople ;
762782 let filteredPeople = people . filter ( person => person . id ) ;
783+ let firstName = '' ;
784+
785+ const selectedList = this . renderRoot . querySelector ( '.selected-list' ) ;
786+ let names = '' ;
787+ for ( let i = 0 ; i < filteredPeople . length ; i ++ ) {
788+ names += filteredPeople [ i ] . displayName . toString ( ) + ' ' ;
789+ }
790+
763791 return html `
764- < div class ="people-list " @mouseenter =${ this . handleMouseEnter } @mouseleave =${ this . handleMouseLeave } >
792+ < div
793+ id ="suggestions-list "
794+ class ="people-list "
795+ aria-expanded ="true "
796+ role ="list "
797+ aria-label ="people-picker-input input text ${
798+ this . userInput . length === 0 ? this . strings . inputPlaceholderText : this . userInput
799+ } ${ this . strings . suggestedContacts } ${ names } "
800+ @mouseenter =${ this . handleMouseEnter }
801+ @mouseleave =${ this . handleMouseLeave } >
765802 ${ repeat (
766803 filteredPeople ,
767804 person => person . id ,
@@ -772,7 +809,13 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
772809 'list-person' : true
773810 } ;
774811 return html `
775- < li class ="${ classMap ( listPersonClasses ) } " @click ="${ e => this . onPersonClick ( person ) } ">
812+ < li
813+ role ="option "
814+ aria-label =" ${ this . strings . suggestedContact } ${ person . displayName } "
815+ id ="${ person . displayName } "
816+ tabindex ="0 "
817+ class ="${ classMap ( listPersonClasses ) } "
818+ @click ="${ e => this . onPersonClick ( person ) } ">
776819 ${ this . renderPersonResult ( person ) }
777820 </ li >
778821 ` ;
@@ -1206,6 +1249,7 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
12061249 }
12071250
12081251 private onPersonClick ( person : IDynamicPerson ) : void {
1252+ this . _currentSelectedUser = person ;
12091253 this . addPerson ( person ) ;
12101254 this . hideFlyout ( ) ;
12111255
0 commit comments