Microsoft Graph Toolkit の Person-Card コンポーネント

個人カード コンポーネントは、ユーザーに関するより多くの情報を表示するための応答コンポーネントです。 これは、 mgt-person コンポーネントのポップアップとして使用されます。

mgt-person コンポーネントの詳細については、mgt-person を参照してください。

mgt-person の使用例

次の例では、mgt-person コンポーネントを持つ mgt-person-card コンポーネントの使用を表示しています。 ユーザーをポイントまたはクリックすると、人物カードが表示されます。

mgt-person-card をスタンドアロン コンポーネントとして使用する例

次の例は、 mgt-person-card コンポーネントの使用を示しています。 コード エディターを使用して、 プロパティ によってコンポーネントの動作がどのように変化するかを確認します。

グローバル コンポーネント構成

MgtPersonCardConfig クラスは、アプリケーション内のすべての人物カード コンポーネントを構成する静的構成プロパティを公開します。 クラスは、Microsoft Graph からユーザーに関する詳細を取得するためにユーザー カードによって使用されるセクションと API を構成します。

既定値では、すべてのセクションと API が有効になっています。 次の例は、クラス プロパティを使用してセクションまたは API を無効にする方法を示しています。

import { MgtPersonCardConfig } from '@microsoft/mgt-components';

MgtPersonCardConfig.useContactApis = false;
MgtPersonCardConfig.sections.profile = false;
MgtPersonCardConfig.sections.files = false;

使用できるプロパティを次に示します。

プロパティ 説明
useContactApis boolean - 人物カード コンポーネントが Microsoft Graph Contact API を使用して連絡先の詳細と写真を検索できるかどうかを示します。 既定値は、true です。
セクション object - 個人カードに表示されるセクションを構成します。
isSendMessageVisible boolean - 送信メッセージ ボタンが表示されるかどうかを示します。 既定値は、true です。

個人カード セクション

個人カードには、ユーザーの詳細を表示するためのいくつかの構成可能なセクションが含まれています。

  • 連絡先 - メール、電話、位置、場所などの連絡先情報。
  • 組織 - 管理者、直属の部下、および関連する人々との組織グラフ。
  • メッセージ - 現在サインインしているユーザーに最も関連性の高い電子メール メッセージ。
  • ファイル - 現在サインインしているユーザーに最も関連性の高い共有ファイル。
  • プロフィール - プロフィール、スキル、言語などのプロフィール情報。

セクションは既定で読み込みされますが、MgtPersonCardConfig.sections オブジェクト プロパティでグローバルに無効にすることができます。 使用できるプロパティを次に示します。

プロパティ 説明
組織 boolean - 個人カード組織セクションが表示されているかどうかを示します。 既定値は、true です。
mailMessages boolean - 個人カード組織セクションが表示されているかどうかを示します。 既定値は、true です。
ファイル boolean - 個人カード ファイル セクションが表示されているかどうかを示します。 既定値は、true です。
プロフィール boolean - 個人カード プロフィール セクションが表示されているかどうかを示します。 既定値は、true です。
lock-tab-navigation boolean - タブを使用してナビゲーションをロックし、カード セクションから流出しないようにします。 既定値は、false です。

セクションを無効にするには、アプリの初期化コードで プロパティを false に設定します。

import { MgtPersonCardConfig } from '@microsoft/mgt-components';

MgtPersonCardConfig.sections.profile = false;

Teams の統合のためのセットアップ

個人カード コンポーネントでは、Teams チャットを介することを含めて、対象者に連絡を取ることができます。 Teams タブ アプリ内でコンポーネントを使用する場合、TeamsHelpermicrosoftTeamsLib を設定することでブラウザー ウィンドウを開くのではなく、コンポーネントが直接チャットにディープ リンクするようにすることができます。

Person-Card コンポーネントが Teams ライブラリを検出できない場合、コンポーネントは代わりに Teams Web クライアントを開こうとします。

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 カードに表示されているユーザーに関連する画像の URL。
inherit-details なし 個人カードが mgt-person コンポーネントの親ツリーを移動する場合に、同じ person-detailsperson-image のデータを使用できるようにします。
user-id String 開発者がユーザー ID を指定して、ユーザー カード コンポーネントに表示されるデータを取得できるようにします
person-query String 開発者がユーザー クエリを提供して、人物カード コンポーネントに表示されるデータを取得できるようにします
person-card String mgt-person コンポーネントをポイントまたはクリックしたときに、person-card コンポーネントをポップアップ カードとして表示できるかどうかを指定します。 許可される値は、 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;
}

詳細については、「コンポーネントのスタイリング」を参照してください。

テンプレート

個人カード コンポーネントでは、テンプレート を使用して、コンポーネントの一部を追加したり置き換えたりすることができます。 テンプレートを指定するには、コンポーネント内に <template> 要素を含め、 data-type を次のいずれかの値に設定します。

データ型 データ コンテキスト 説明
no-data null 連絡可能なデータがないときに使用するテンプレートです。
既定 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 のアクセス許可

この個人カード制御は、以下の Microsoft Graph API とアクセス許可を使用します。 呼び出される API ごとに、ユーザーには少なくとも 1 つのアクセス許可が一覧表示されている必要があります。

構成 アクセス許可 API Section
すべての構成で User.Read、User.ReadWrite /me 既定値
personDetails ユーザーの id で設定しますが、電子メールなしで設定するか、 userId 設定します User.ReadBasic.All、User.Read.All、Directory.Read.All、User.ReadWrite.All、Directory.ReadWrite.All /users/{id} 既定値
personDetails ユーザーの id で設定しますが、電子メールなしで設定するか、 userId 設定します 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以外の値に設定し、trueに設定config.useContactApis (既定値) Contacts.Read、Contacts.ReadWrite /me/contacts/* 既定値
personQueryme 以外の値に設定し、 を に設定config.useContactApisfalse User.ReadBasic.All、User.Read.All、User.ReadWrite.All /users/{id}/photo/$value 既定値
showPresence に設定する true Presence.Read.All /users/{id}/presence 既定値
sections.organization enabled (既定値) 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 enabled (既定値) Mail.ReadBasic, Mail.Read, Mail.ReadWrite /me/messages メッセージ
sections.files enabled (既定値) Sites.Read.All、Sites.ReadWrite.All /me/insights/shared and /me/insights/used ファイル
sections.profile enabled (既定値) User.Read.All、User.ReadWrite.All /users/{id}/profile プロファイル

getMgtPersonCardScopes()関数は、グローバルユーザー カードの構成に基づいて人物カードが機能するために必要なスコープの配列を返します。

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

const neededScopes = getMgtPersonCardScopes();

サブコンポーネント

mgt-person-card コンポーネントは、前に示したアクセス許可以外のアクセス許可を必要とする可能性がある 1 つ以上のサブコンポーネントで構成されます。 詳細については、各サブコンポーネントのドキュメントを参照してください。

認証

この個人カード制御は、認証ドキュメントに記述されているグローバル認証プロバイダーを使用します。

キャッシュ

重要

mgt-person-card コンポーネントは、Microsoft Graph を呼び出さずに親mgt-person コンポーネントから基本的な人物データを取得します。 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-card セクションでローカライズすることもできます。

Contact

文字列名 既定値
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