компонент Person-Card в наборе средств Microsoft Graph

Компонент Person-Card — это адаптивный компонент для просмотра дополнительных сведений, относящихся к пользователю. Обычно используется в качестве всплывающего окна для компонента mgt-person.

Дополнительные сведения о компоненте mgt-person см. в разделе mgt-person.

Пример использования mgt-person

В приведенном ниже примере показано использование компонента mgt-person-card с компонентом mgt-person. Наведите указатель мыши на пользователя или щелкните его, чтобы увидеть карточку пользователя.

Пример использования mgt-person-карта в качестве отдельного компонента

В следующем примере показано использование mgt-person-card компонента . Используйте редактор кода, чтобы узнать, как свойства изменяют поведение компонента.

Настройка глобального компонента

Класс MgtPersonCard предоставляет статический объект config, который конфигурирует все компоненты карточки контакта в приложении. В объекте config настраивается, какие разделы и какие API-интерфейсы используются для получения сведений о пользователе в Microsoft Graph.

По умолчанию все разделы и API-интерфейсы включены. В приведенном ниже примере показано, как использовать объект конфигурации для отключения разделов и API-интерфейсов.

import { MgtPersonCard } from `@microsoft/mgt`;

MgtPersonCard.config.useContactApis = false;
MgtPersonCard.config.sections.profile = false;

Ниже указаны свойства, доступные в объекте конфигурации.

Свойство Описание
useContactApis boolean— указывает, может ли пользователь, карта компонент, использовать API контактов Microsoft Graph для поиска контактных данных и фотографий. Значение по умолчанию: true.
sections object — Настройка отображения разделов в карточке контакта.

Разделы карточки контакта

Карточка контакта содержит несколько настраиваемых разделов, в которых отображаются сведения о пользователе:

  • Контакт — контактные данные, такие как электронная почта, номер телефона, должность, расположение и другие сведения.
  • Организация — организационная диаграмма с руководителями, подчиненными или важными пользователями.
  • Сообщения — наиболее актуальные сообщения электронной почты вошедшего в систему пользователя.
  • Файлы — наиболее актуальные общие файлы вошедшего в систему пользователя.
  • Профиль — информация о профиле, например проекты, навыки, языки и другие сведения.

Разделы загружаются по умолчанию, но их можно отключить глобально с помощью свойства объекта MgtPersonCard.config.sections. Для редактирования доступны следующие свойства.

Свойство Описание
organization; boolean — указывает, отображается ли раздел организации карточки контакта. Значение по умолчанию: true.
mailMessages boolean — указывает, отображается ли раздел сообщений карточки контакта. Значение по умолчанию: true.
files boolean — указывает, отображается ли раздела файлов карточки контакта. Значение по умолчанию: true.
profile boolean — указывает, отображается ли раздел профиля карточки контакта. Значение по умолчанию: true.
lock-tab-navigation boolean— Позволяет блокировать навигацию с помощью вкладок, чтобы она не вытекала из раздела карта. Значение по умолчанию — false.

Чтобы отключить раздел, просто присвойте свойству значение false в коде инициализации приложения:

import { MgtPersonCard } from `@microsoft/mgt`;

MgtPersonCard.config.sections.profile = false;

Настройка интеграции с Teams

Компонент Person-Card позволяет связаться с целевым контактом, в том числе с помощью чата в Teams. При использовании компонента во вкладке приложения Teams можно сделать так, чтобы компонент не открывал окно браузера, а сразу переходил к чату, настроив microsoftTeamsLib в TeamsHelper.

Если компоненту Person-Card не удается обнаружить библиотеку Teams, компонент пытается открыть веб-клиент Teams.

import * as microsoftTeams from "@microsoft/teams-js";
import { TeamsHelper } from "@microsoft/mgt-element";

TeamsHelper.microsoftTeamsLib = microsoftTeams;

Свойства

По умолчанию mgt-person компонент передает сведения о пользователе компоненту mgt-person-card . Однако эти атрибуты можно использовать для изменения такого поведения при создании шаблонов компонента mgt-person или при использовании компонента mgt-person-card в качестве отдельного компонента.

Атрибут Тип Описание
person-details MicrosoftGraph.User
MicrosoftGraph.Person
MicrosoftGraph.Contact
Объект пользователя, определенный в Microsoft Graph и содержащий подробные сведения о пользователе.
person-image String Универсальный код ресурса (URI) изображения, связанный с человеком, который отображается в карточке.
inherit-details Нет Разрешает проработку дерева родителей для компонента mgt-person для использования одинаковых данных person-details и person-image.
user-id String Позволяет разработчикам предоставлять идентификатор пользователя для получения данных, отображаемых в компоненте person-карта
person-query String Позволяет разработчикам предоставлять запрос пользователя для получения данных, отображаемых в компоненте person-карта
person-card String Указывает wheterperson-card, что компонент может отображаться в виде всплывающего карта при наведении указателя мыши или щелчке mgt-person на компонент. Допустимые значения: hover или click.

Настраиваемые свойства CSS

Компонент mgt-person-card определяет следующие настраиваемые свойства CSS.

<mgt-person-card class="person-card" person-query="me"></mgt-person-card>
.person-card {
  --person-card-nav-back-arrow-hover-color: green;
  --person-card-icon-color: red;
  --person-card-line1-font-size: 30px;
  --person-card-line1-font-weight: 800;
  --person-card-line1-line-height: 38px;
  --person-card-line2-font-size: 24px;
  --person-card-line2-font-weight: 600;
  --person-card-line2-line-height: 30px;
  --person-card-line3-font-size: 24px;
  --person-card-line3-font-weight: 300;
  --person-card-line3-line-height: 29px;
  --person-card-avatar-size: 85px;
  --person-card-details-left-spacing: 25px;
  --person-card-avatar-top-spacing: 25px;
  --person-card-details-bottom-spacing: 20px;
  --person-card-background-color: pink;
  --person-card-expanded-background-color-hover: blue;
  --person-card-icon-hover-color: magenta;
  --person-card-show-more-color: blue;
  --person-card-show-more-hover-color: green;
  --person-card-fluent-background-color: yellow;
  --person-card-line1-text-color: purple;
  --person-card-line2-text-color: blue;
  --person-card-line3-text-color: green;
  --person-card-fluent-background-color-hover: orange;
  --person-card-base-icons-left-spacing: 110px;

  /** person-card sections tokens */

  /** Organization */
  --organization-active-org-member-target-background-color: blue;
  --organization-title-color: green;
  --organization-sub-title-color: yellow;
  --organization-hover-color: grey;
  --organization-coworker-hover-color: grey;
  --organization-coworker-border-color: purple;
  --organization-active-org-member-border-color: red;
  --organization-coworker-person-avatar-size: 50px;
  --organization-member-person-avatar-size: 60px;
  --organization-direct-report-person-avatar-size: 80px;

  /** Style for the avatar-size in the person-card sections */
  --organization-member-person-avatar-size: 60px;
  --coworker-person-avatar-size: 50px;
  --direct-report-person-avatar-size: 40px;

  /** Files: Uses custom css properties for mgt-file-list and mgt-file */

  /** Messages */

  --message-subject-color: purple;
  --message-from-color: blue;
  --message-color: black;
  --message-hover-color: grey;
  --message-subject-font-size: 18px;
  --message-subject-font-weight: 600;
  --message-subject-line-height: 25px;
  --message-from-font-size: 40px;
  --message-from-font-weight: 800;
  --message-date-color: purple;
  --message-from-line-height: 25px;

  /** Contact */

  --contact-title-color: blue;
  --contact-value-color: green;
  --contact-link-color: red;
  --contact-link-hover-color: purple;
  --contact-background-color: grey;
  --contact-copy-icon-color: yellow;

  /** Profile */

  --profile-title-color: blue;
  --profile-background-color: grey;
  --profile-token-item-color: blue;
  --profile-token-overflow-color: purple;
  --profile-section-title-color: black;
  --profile-token-item-background-color: yellow;
}

Дополнительные сведения см. в статье Компоненты стиля.

Шаблоны

В компоненте Person-Card используются шаблоны, позволяющие добавлять и заменять части компонента. Чтобы указать шаблон, добавьте <template> элемент в компонент и задайте для data-type одного из следующих значений.

Тип данных Контекст данных Описание
no-data null Шаблон, используемый, если данные недоступны.
default person: объект сведений о пользователе
personImage: URL-адрес изображения.
Шаблон по умолчанию заменяет весь компонент вашим собственным компонентом.
person-details person: объект сведений о пользователе Шаблон, используемый для отображения верхней части карточки пользователя.
additional-details person: объект сведений о пользователе
personImage: URL-адрес изображения
Шаблон, который используется для добавления настраиваемого контента в контейнер дополнительных сведений.

Например, шаблон можно использовать для настройки компонента, вложенного в компонент mgt-person, и шаблона, чтобы добавить дополнительные сведения в карточку.

<mgt-person person-query="me" view="twolines" person-card="hover">
  <template data-type="person-card">
    <mgt-person-card inherit-details>
      <template data-type="additional-details">
        <h3>Stuffed Animal Friends:</h3>
        <ul>
          <li>Giraffe</li>
          <li>lion</li>
          <li>Rabbit</li>
        </ul>
      </template>
    </mgt-person-card>
  </template>
</mgt-person>

События

Из компонента инициируются следующие события.

Событие Когда он генерируется Пользовательские данные Отменяемым Пузыри Работает с пользовательским шаблоном
expanded Пользователь открыл расширенный раздел сведений карта Нет Нет Да Да, если вы не переопределяете шаблон по умолчанию

Дополнительные сведения об обработке событий см. в разделе События.

Разрешения Microsoft Graph

Этот элемент управления Person-Card использует следующие API и разрешения Microsoft Graph. Для каждого вызываемого API пользователь должен иметь по крайней мере одно из указанных разрешений.

Конфигурация Разрешение API Раздел
Во всех конфигурациях User.Read, User.ReadWrite /me По умолчанию
personDetails set с пользователем id , но без электронной почты, или userId set User.ReadBasic.All, User.Read.All, Directory.Read.All, User.ReadWrite.All, Directory.ReadWrite.All /users/{id} По умолчанию
personDetails set с пользователем id , но без электронной почты, или userId set User.ReadBasic.All, User.Read.All, User.ReadWrite.All /users/{id}/photo/$value По умолчанию
personQuery установите значение me User.Read, User.ReadWrite, User.ReadBasic.All, User.Read.All, Directory.Read.All, User.ReadWrite.All, Directory.ReadWrite.All /me, /users/{id}/photo/$value По умолчанию
personQuery установите значение me User.Read, User.ReadWrite, User.ReadBasic.All, User.Read.All, User.ReadWrite.All /me/photo/$value По умолчанию
personQuery значение, отличное от me People.Read, People.Read.All /me/people/?$search= По умолчанию
personQuery задайте значение, отличное от me и config.useContactApis задайте значение true (по умолчанию) Contacts.Read, Contacts.ReadWrite /me/contacts/* По умолчанию
personQuery задайте значение, отличное от me и config.useContactApis задайте значение false User.ReadBasic.All, User.Read.All, User.ReadWrite.All /users/{id}/photo/$value По умолчанию
showPresence установите значение true Presence.Read.All /users/{id}/presence По умолчанию
sections.organization включено (по умолчанию) User.ReadBasic.All, User.Read.All, Directory.Read.All, User.ReadWrite.All, Directory.ReadWrite.All /users/{id}?$expand=manager($levels=max), /users/${id}/directReports Организация
sections.organization.showWorksWith set (по умолчанию) People.Read.All /users/{id}/people Организация
sections.mailMessages включено (по умолчанию) Mail.ReadBasic, Mail.Read, Mail.ReadWrite /me/messages Сообщения
sections.files включено (по умолчанию) Sites.Read.All, Sites.ReadWrite.All /me/insights/shared and /me/insights/used Файлы
sections.profile включено (по умолчанию) User.Read.All, User.ReadWrite.All /users/{id}/profile Профиль

Функция getMgtPersonCardScopes() возвращает массив областей, необходимых для работы карта пользователя на основе глобальной конфигурации пользователя карта.

import { getMgtPersonCardScopes } from `@microsoft/mgt-components`;

const neededScopes = getMgtPersonCardScopes();

Подкомпоненты

Компонент mgt-person-card состоит из одного или нескольких подкомпонентов, для которых могут потребоваться другие разрешения, отличные от перечисленных ранее. Дополнительные сведения см. в документации по каждому подкомпоненту:

Проверка подлинности

В элементе управления Person-Card используется глобальный поставщик проверки подлинности, описанный в документации по проверке подлинности.

Кэш

Важно!

Компонент mgt-person-card получает базовые данные о пользователях из родительского mgt-person компонента без вызова Microsoft Graph. Если mgt-person-card используется отдельно, он сам получает необходимые данные и кэширует их. Данные, отображаемые в разделах карта, извлекаются отдельно и не кэшируются.

Хранилище объектов Кэшированные данные Замечания
people Сведения о человеке Используется, если personQuery задано значение , а его значение отличается от me
photos Фотография человека
presence Присутствие пользователя Используется, если showPresence задано значение true
users Сведения о пользователе пользователя Используется, если userId задано значение или personQuery задано значение me

Дополнительные сведения о настройке кэша см. в разделе Кэширование.

Локализация

Элемент управления предоставляет следующие переменные, которые можно локализовать. Дополнительные сведения о настройке локализации см. в разделе Локализация компонентов.

Имя строки Значение по умолчанию
endOfCard End of the card
quickMessage Send a quick message
expandDetailsLabel Expand details
renderOverviewSectionLabel Render overview section
sendMessageLabel Send message
emailButtonLabel Email
callButtonLabel Call
chatButtonLabel Chat
videoButtonLabel Video
closeCardLabel Close card

Вы также можете локализовать следующие переменные в разделах person-карта.

Контакт

Имя строки Значение по умолчанию
contactSectionTitle Contact
emailTitle Email
chatTitle Teams
businessPhoneTitle Business Phone
cellPhoneTitle Mobile Phone
departmentTitle Department
personTitle Email
officeLocationTitle Office Location
copyToClipboardButton Copy to clipboard

Файлы

Имя строки Значение по умолчанию
showMoreSubtitle Show more items
filesSectionTitle Files
sharedTextSubtitle Shared

Сообщения

Имя строки Значение по умолчанию
emailsSectionTitle Emails

Организация

Имя строки Значение по умолчанию
reportsToSectionTitle Reports to
directReportsSectionTitle Direct reports
organizationSectionTitle Organization
youWorkWithSubSectionTitle You work with
userWorksWithSubSectionTitle works with

Профиль

Имя строки Значение по умолчанию
SkillsAndExperienceSectionTitle Skills & Experience
AboutCompactSectionTitle About
SkillsSubSectionTitle Skills
LanguagesSubSectionTitle Languages
WorkExperienceSubSectionTitle Work Experience
EducationSubSectionTitle Education
professionalInterestsSubSectionTitle Professional Interests
personalInterestsSubSectionTitle Personal Interests
birthdaySubSectionTitle Birthday
currentYearSubtitle Current
socialMediaSubSectionTitle Social Media