@@ -263,6 +263,8 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
263263
264264 private defaultPeople : IDynamicPerson [ ] ;
265265
266+ private selectionMade = false ;
267+
266268 // tracking of user arrow key input for selection
267269 private _arrowSelectionCount : number = 0 ;
268270 // List of people requested if group property is provided
@@ -289,7 +291,6 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
289291 */
290292 public connectedCallback ( ) {
291293 super . connectedCallback ( ) ;
292- this . addEventListener ( 'click' , e => e . stopPropagation ( ) ) ;
293294 }
294295
295296 /**
@@ -316,10 +317,14 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
316317 }
317318
318319 if ( shouldShow ) {
319- window . requestAnimationFrame ( ( ) => {
320- // Mouse is focused on input
321- this . showFlyout ( ) ;
322- } ) ;
320+ if ( ! this . selectionMade ) {
321+ window . requestAnimationFrame ( ( ) => {
322+ // Mouse is focused on input
323+ this . showFlyout ( ) ;
324+ } ) ;
325+ } else {
326+ this . selectionMade = false ;
327+ }
323328 }
324329 }
325330
@@ -787,6 +792,7 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
787792
788793 this . loadState ( ) ;
789794 this . _foundPeople = [ ] ;
795+ this . selectionMade = true ;
790796 }
791797 }
792798 }
@@ -803,6 +809,7 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
803809
804810 private lostFocus ( ) {
805811 this . _isFocused = false ;
812+ this . requestUpdate ( ) ;
806813 }
807814
808815 private renderHighlightText ( person : IDynamicPerson ) : TemplateResult {
@@ -847,8 +854,8 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
847854 * Adds debounce method for set delay on user input
848855 */
849856 private onUserKeyUp ( event : KeyboardEvent ) : void {
850- if ( event . keyCode === 40 || event . keyCode === 38 ) {
851- // keyCodes capture: down arrow (40) and up arrow (38)
857+ if ( event . keyCode === 40 || event . keyCode === 39 || event . keyCode === 38 || event . keyCode === 37 ) {
858+ // keyCodes capture: down arrow (40), right arrow (39), up arrow (38) and left arrow (37 )
852859 return ;
853860 }
854861
@@ -865,6 +872,7 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
865872 this . userInput = '' ;
866873 // remove last person in selected list
867874 this . selectedPeople = this . selectedPeople . splice ( 0 , this . selectedPeople . length - 1 ) ;
875+ this . loadState ( ) ;
868876 // reset flyout position
869877 this . hideFlyout ( ) ;
870878 this . showFlyout ( ) ;
@@ -873,7 +881,9 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
873881 return ;
874882 }
875883
876- this . handleUserSearch ( input ) ;
884+ if ( input . value ) {
885+ this . handleUserSearch ( input ) ;
886+ }
877887 }
878888
879889 private onPersonClick ( person : IDynamicPerson ) : void {
@@ -882,7 +892,6 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
882892 if ( this . selectionMode === 'single' ) {
883893 return ;
884894 }
885- this . focus ( ) ;
886895 }
887896
888897 /**
@@ -933,7 +942,9 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
933942 event . preventDefault ( ) ;
934943 }
935944 }
936- if ( event . code === 'Tab' || event . code === 'Enter' ) {
945+
946+ if ( event . keyCode === 9 || event . keyCode === 13 ) {
947+ // keyCodes capture: tab (9) and enter (13)
937948 if ( this . _foundPeople . length ) {
938949 event . preventDefault ( ) ;
939950 }
0 commit comments