People component in Microsoft Graph Toolkit

You can use the mgt-people web component to display a group of people or contacts by using their photos or initials. By default, it displays the most frequent contacts for the signed in user.

This component uses multiple mgt-person controls, but it can be bound to a set of people descriptors. If there are more people to display than the show-max value, a number is added to indicate the number of other contacts.

Example

The following example shows a group of people displayed using the mgt-people component. You can use the code editor to see how properties change the behavior of the component.

Properties

By default, the mgt-people component fetches events from the /me/people endpoint with the personType/class eq 'Person' filter to display frequently contacted users. You can use several properties to change this behavior.

Attribute Property Description
show-max showMax Indicates the maximum number of people to show. Default value is 3.
people people An array of Microsoft Graph person objects. Use this property to access the people loaded by the component. Set this value to load your own people onto the component.
group-id groupId The ID of a Microsoft Entra ID group. This property is used to retrieve the direct members of the group. This property is optional.
user-ids userIds An array of user IDs to display. This property is optional.
people-queries peopleQueries Microsoft Graph queries for customizing the people query response.
person-card personCardInteraction Sets the behavior to show the person card on a rendered person. Default value is set to show the person card on hover(PersonCardInteraction.hover).
show-presence showPresence Determines if a person component should render the presence badge. Default value is false.
resource resource The resource URL to get from Microsoft Graph (for example, /me/people).
scopes scopes A comma delimited string with permissions to be granted to the component. This property is optional.
version version The API version to use when making the request. Default value is v1.0.
fallback-details fallbackDetails Array of Microsoft Graph person objects representing a person or multiple people when no user/person/contact is found in the graph.

The following example sets the maximum number of people to show.

<mgt-people show-max="4"> </mgt-people>

CSS custom properties

The mgt-people component defines the following CSS custom properties.

<mgt-people class="people"></mgt-people>
.people {
  --people-list-margin: 12px;
  --people-avatar-gap: 8px;
  --people-overflow-font-color: orange;
  --people-overflow-font-size: 16px;
  --people-overflow-font-weight: 600;
  --people-person-avatar-size: 70px;
}

To learn more, see styling components.

Templates

The mgt-people supports several templates that you can use to replace certain parts of the component. To specify a template, include a <template> element inside a component and set the data-type to one of the following values.

Data type Data context Description
default people: list of person objects The default template replaces the entire component with your own.
person person: person object The template used to render each person.
overflow people: list of person objects
max: number of shown people
extra: number of extra people
The template used to render the number beyond the max to the right of the list of people.
no-data No data context is passed The template used when no data is available.
loading No data context is passed The template used while the component loads state.

The following examples show how to use the person template.

<mgt-people>
  <template>
    <ul>
      <li data-for="person in people">
        <mgt-person person-query="{{ person.userPrincipalName }}"></mgt-person>
        <h3>{{ person.displayName }}</h3>
        <p>{{ person.jobTitle }}</p>
        <p>{{ person.department }}</p>
      </li>
    </ul>
  </template>
</mgt-people>

Microsoft Graph permissions

This component uses the following Microsoft Graph APIs and permissions. For each API called, the user must have at least one of the permissions listed.

Configuration Permission API
default configuration People.Read, People.Read.All /me/people
group-id set GroupMember.Read.All, Group.Read.All, Directory.Read.All, GroupMember.ReadWrite.All, Group.ReadWrite.All /groups/${groupId}/members/microsoft.graph.user
user-ids set User.ReadBasic.All, User.Read.All, Directory.Read.All, User.ReadWrite.All, Directory.ReadWrite.All /users/$({userId}
people-queries set People.Read, People.Read.All /me/people
resource set Permissions specified in scopes Specified in resource
show-presence set Presence.Read.All /communications/getPresencesByUserId

Subcomponents

The mgt-people component consists of one or more subcomponents that might require other permissions than the ones listed previously. For more information, see the documentation for each subcomponent: mgt-person.

Authentication

The control uses the global authentication provider described in the authentication documentation.

Cache

Object store Cached data Remarks
people Information about people matching the query Used when resource specified
users Information about users matching the query Used when groupId, userIds, peopleQueries or no properties specified
presence Presence for the specified set of people Used when showPresence set to true

Note

By default, the mgt-people component uses the mgt-person component to display information about people. The mgt-person component automatically downloads and caches the photo for each person.

For details about how to configure the cache, see Caching.

Extend for more control

For more complex scenarios or a truly custom UX, this component exposes several protected render* methods for override in component extensions.

Method Description
renderLoading Renders the loading state.
renderNoData Renders the empty data state.
renderPeople Renders a list of people, up to the show-max value.
renderPerson Renders an individual person.
renderOverflow Renders a representation of remaining people beyond the show-max value.

Localization

The control doesn't expose any localization variables.