Skip to content

Commit c1a0927

Browse files
committed
fixes person-image not rendering | fixes template
1 parent 277031c commit c1a0927

File tree

3 files changed

+38
-32
lines changed

3 files changed

+38
-32
lines changed

src/components/mgt-people-picker/mgt-people-picker.scss

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ mgt-people-picker .people-list-separator {
6464
text-align: center;
6565
}
6666

67-
:host .people-chosen-input,
68-
mgt-people-picker .people-chosen-input {
67+
:host .people-selected-input,
68+
mgt-people-picker .people-selected-input {
6969
position: relative;
7070
border: none;
7171
line-height: normal;
@@ -77,8 +77,8 @@ mgt-people-picker .people-chosen-input {
7777
line-height: 19px;
7878
}
7979

80-
:host .people-chosen-list,
81-
mgt-people-picker .people-chosen-list {
80+
:host .people-selected-list,
81+
mgt-people-picker .people-selected-list {
8282
display: flex;
8383
flex-wrap: wrap;
8484
vertical-align: middle;
@@ -208,7 +208,7 @@ mgt-person {
208208
--avatar-size-s: 32px;
209209
margin-left: 12px;
210210
}
211-
.chosen-person {
211+
.selected-person {
212212
--avatar-size-s: 24px;
213213
margin-left: 0px;
214214
}

src/components/mgt-people-picker/mgt-people-picker.ts

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
129129
html`
130130
<div class="people-picker" @blur=${this.lostFocus}>
131131
<div class="people-picker-input" @click=${this.gainedFocus}>
132-
${this.renderChosenPeople()}
132+
${this.renderSelectedPeople()}
133133
</div>
134134
<div class="people-list-separator"></div>
135135
${this.renderPeopleList()}
@@ -145,7 +145,7 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
145145
* @memberof MgtPeoplePicker
146146
*/
147147
public focus(options?: FocusOptions) {
148-
const peopleInput = this.renderRoot.querySelector('.people-chosen-input') as HTMLInputElement;
148+
const peopleInput = this.renderRoot.querySelector('.people-selected-input') as HTMLInputElement;
149149
if (peopleInput) {
150150
peopleInput.focus(options);
151151
}
@@ -378,9 +378,8 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
378378
* @param person - person and details pertaining to user selected
379379
*/
380380
private removePerson(person: MicrosoftGraph.User | MicrosoftGraph.Person | MicrosoftGraph.Contact) {
381-
const chosenPerson: any = person;
382381
const filteredPersonArr = this.selectedPeople.filter(p => {
383-
return p.id !== chosenPerson.id;
382+
return p.id !== person.id;
384383
});
385384
this.selectedPeople = filteredPersonArr;
386385
this.fireCustomEvent('selectionChanged', this.selectedPeople);
@@ -406,7 +405,7 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
406405
`;
407406
}
408407

409-
private renderChosenPeople() {
408+
private renderSelectedPeople() {
410409
let peopleList;
411410
let inputClass = 'input-search-start';
412411
if (this.selectedPeople.length > 0) {
@@ -417,7 +416,8 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
417416
person =>
418417
html`
419418
<li class="people-person">
420-
${this.renderTemplate('person', { person }, person.displayName) || this.renderChosenPerson(person)}
419+
${this.renderTemplate('selected-person', { person }, `selected-${person.id}`) ||
420+
this.renderSelectedPerson(person)}
421421
<div class="CloseIcon" @click="${() => this.removePerson(person)}">\uE711</div>
422422
</li>
423423
`
@@ -428,12 +428,12 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
428428
}
429429
// tslint:disable
430430
return html`
431-
<div class="people-chosen-list">
431+
<div class="people-selected-list">
432432
${peopleList}
433433
<div class="${inputClass}">
434434
<input
435435
id="people-picker-input"
436-
class="people-chosen-input"
436+
class="people-selected-input"
437437
type="text"
438438
placeholder="Start typing a name"
439439
label="people-picker-input"
@@ -451,7 +451,7 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
451451

452452
private gainedFocus() {
453453
const peopleList = this.renderRoot.querySelector('.people-list');
454-
const peopleInput = this.renderRoot.querySelector('.people-chosen-input') as HTMLInputElement;
454+
const peopleInput = this.renderRoot.querySelector('.people-selected-input') as HTMLInputElement;
455455
peopleInput.focus();
456456
peopleInput.select();
457457
if (peopleList) {
@@ -504,13 +504,12 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
504504
}
505505

506506
private renderPeopleList() {
507-
let people: any = this.people;
508507
let content: TemplateResult;
509508

510509
if (this.showLoading) {
511510
content = this.renderTemplate('loading', null, 'loading') || this.renderLoadingMessage();
512-
} else if (people) {
513-
people = people.slice(0, this.showMax);
511+
} else if (this.people) {
512+
const people = this.people.slice(0, this.showMax);
514513

515514
if (!this.isLoading && people.length === 0 && this._userInput.length > 0) {
516515
content = this.renderTemplate('error', null, 'error') || this.renderErrorMessage();
@@ -539,11 +538,7 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
539538
class="list-person ${person.isSelected === 'fill' ? 'people-person-list-fill' : 'people-person-list'}"
540539
@click="${() => this.addPerson(person)}"
541540
>
542-
${this.renderTemplate('person', { person }, person.displayName) || this.renderPerson(person)}
543-
<div class="people-person-text-area" id="${person.displayName}">
544-
${this.renderHighlightText(person)}
545-
<span class="people-person-job-title">${person.jobTitle}</span>
546-
</div>
541+
${this.renderTemplate('person', { person }, person.id) || this.renderPerson(person)}
547542
</li>
548543
`
549544
)}
@@ -553,11 +548,21 @@ export class MgtPeoplePicker extends MgtTemplatedComponent {
553548
private renderPerson(person: MicrosoftGraph.Person) {
554549
return html`
555550
<mgt-person .personDetails=${person} .personImage=${'@'}></mgt-person>
551+
<div class="people-person-text-area" id="${person.displayName}">
552+
${this.renderHighlightText(person)}
553+
<span class="people-person-job-title">${person.jobTitle}</span>
554+
</div>
556555
`;
557556
}
558-
private renderChosenPerson(person: MicrosoftGraph.Person) {
557+
private renderSelectedPerson(person: MicrosoftGraph.Person) {
559558
return html`
560-
<mgt-person class="chosen-person" .personDetails=${person} .personImage=${'@'} show-name></mgt-person>
559+
<mgt-person
560+
class="selected-person"
561+
.personDetails=${person}
562+
.personImage=${'@'}
563+
show-name
564+
person-card="hover"
565+
></mgt-person>
561566
`;
562567
}
563568
}

src/components/mgt-person/mgt-person.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ export class MgtPerson extends MgtTemplatedComponent {
9191
*/
9292
@property({
9393
attribute: 'person-image',
94+
reflect: true,
9495
type: String
9596
})
9697
public personImage: string;
@@ -161,11 +162,12 @@ export class MgtPerson extends MgtTemplatedComponent {
161162
* trigger the element to update.
162163
*/
163164
public render() {
165+
const image = this.getImage();
164166
const person =
165-
this.renderTemplate('default', { person: this.personDetails, personImage: this.getImage() }) ||
167+
this.renderTemplate('default', { person: this.personDetails, personImage: image }) ||
166168
html`
167169
<div class="person-root">
168-
${this.renderImage()} ${this.renderDetails()}
170+
${this.renderImage(image)} ${this.renderDetails()}
169171
</div>
170172
`;
171173

@@ -176,7 +178,7 @@ export class MgtPerson extends MgtTemplatedComponent {
176178
@mouseleave=${this._handleMouseLeave}
177179
@click=${this._handleMouseClick}
178180
>
179-
${person} ${this.renderPersonCard()}
181+
${person} ${this.renderPersonCard(image)}
180182
</div>
181183
`;
182184
}
@@ -238,6 +240,7 @@ export class MgtPerson extends MgtTemplatedComponent {
238240
const response = await batch.execute();
239241

240242
this.personDetails = response.user;
243+
this.personImage = response.photo;
241244
(this.personDetails as any).personImage = response.photo;
242245
} else if (!this.personDetails && this.personQuery) {
243246
const people = await provider.graph.findPerson(this.personQuery);
@@ -278,6 +281,7 @@ export class MgtPerson extends MgtTemplatedComponent {
278281
}
279282
}
280283
if (image) {
284+
this.personImage = image;
281285
(this.personDetails as any).personImage = image;
282286
}
283287

@@ -332,7 +336,7 @@ export class MgtPerson extends MgtTemplatedComponent {
332336
return null;
333337
}
334338

335-
private renderPersonCard() {
339+
private renderPersonCard(image: string) {
336340
// ensure person card is only rendered when needed
337341
if (this.personCardInteraction === PersonCardInteraction.none || !this._personCardShouldRender) {
338342
return;
@@ -361,8 +365,6 @@ export class MgtPerson extends MgtTemplatedComponent {
361365
visible: this._isPersonCardVisible
362366
};
363367
if (this._isPersonCardVisible) {
364-
const image = this.getImage();
365-
366368
return html`
367369
<div style="${customStyle}" class=${classMap(flyoutClasses)}>
368370
${this.renderTemplate('person-card', { person: this.personDetails, personImage: image }) ||
@@ -393,10 +395,9 @@ export class MgtPerson extends MgtTemplatedComponent {
393395
return null;
394396
}
395397

396-
private renderImage() {
398+
private renderImage(image: string) {
397399
if (this.personDetails) {
398400
const title = this.personCardInteraction === PersonCardInteraction.none ? this.personDetails.displayName : '';
399-
const image = this.getImage();
400401
const isLarge = this.showEmail && this.showName;
401402
const imageClasses = {
402403
initials: !image,

0 commit comments

Comments
 (0)