Discover Microsoft Graph Toolkit Components
Overview
About us
Co-Presenter Name
☁️ Co-Presenter Title
Co-Presenter Name
☁️ Co-Presenter Title
For questions or help with this series: MSUSDev@Microsoft.com
All demos and source code available online:
Setting the scene
Series roadmap
Session 1:Authenticating users in JavaScript apps with MSAL.js
- Session 2:
- ↪️ Discover Microsoft Graph Toolkit Components
- Session 3:
- Authenticating to Azure with MSAL.js
- Session 4:
- The Microsoft Graph SDK for JavaScript
Today’s agenda
- Microsoft Graph
- Microsoft Graph Toolkit
- Using the toolkit with Vanilla
- Using the toolkit with React
Demo: Getting Started with the Microsoft Graph Toolkit
::: notes
Graph Person Template
<mgt-person id="target" view="twoLines">
</mgt-person>
const person = document.querySelector('#target');
person.personDetails = {
displayName: 'Webinar Presenter',
mail: 'msusdev@microsoft.com'
};
person.personImage = 'https://raw.githubusercontent.com/msusdev/media-assets/main/squirrel.png';
Graph Get Template
<mgt-get resource="me/photo/$value" type="image">
<template>
<img src="" />
</template>
</mgt-get>
img {
border-style: solid;
border-color: black;
border-width: 5px;
border-radius: 35%;
box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.5);
}
Graph Tasks Template
<mgt-tasks read-only>
<template data-type="task">
</template>
</mgt-tasks>
<mgt-tasks read-only>
<template data-type="task">
<h1></h1>
<p>
| <strong></strong>
</p>
</template>
</mgt-tasks>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
<mgt-tasks read-only>
<template data-type="task">
<div class="card my-2">
<div class="card-header">
</div>
<div class="card-body">
<h5 class="card-title"></h5>
<p class="card-text"></p>
</div>
</div>
</template>
</mgt-tasks>
Vanilla Graph Toolkit
<script src="https://unpkg.com/@microsoft/mgt/dist/bundle/mgt-loader.js"></script>
<mgt-msal2-provider client-id="<client-id>"></mgt-msal2-provider>
<mgt-login></mgt-login>
<section class="list-group">
<mgt-todo read-only>
<template data-type="task">
<label class="list-group-item">
<input class="form-check-input me-1" type="checkbox" value="">
</label>
</template>
</mgt-todo>
</section>
React Graph Toolkit
npx create-react-app . --template typescript --use-npm
npm i @microsoft/mgt-react
npm i @microsoft/mgt-element @microsoft/mgt-msal2-provider
npm start
import { Providers } from '@microsoft/mgt-element';
import { Msal2Provider } from '@microsoft/mgt-msal2-provider';
Providers.globalProvider = new Msal2Provider({
clientId: '<client-id>',
scopes: ['calendars.read', 'user.read']
});
import { Login, Agenda, Person, PersonViewType } from '@microsoft/mgt-react';
const view = PersonViewType.threelines;
function App() {
return (
<main className="App">
<Login />
<hr />
<Person personQuery="me" view={view} />
<hr />
<Agenda />
</main>
);
}
import { Login, Agenda, Person, PersonViewType, Todo, MgtTemplateProps } from '@microsoft/mgt-react';
const view = PersonViewType.threelines;
const ItemTemplate = (props: MgtTemplateProps) => {
const { task } = props.dataContext;
return (
<span>{JSON.stringify(task)}</span>
);
};
function App() {
return (
<main className="App">
<Login />
<hr />
<Person personQuery="me" view={view} />
<hr />
<Agenda />
<Todo>
<ItemTemplate template="task" />
</Todo>
</main>
);
}
import { Login, Todo, MgtTemplateProps } from '@microsoft/mgt-react';
const ItemTemplate = (props: MgtTemplateProps) => {
const { task } = props.dataContext;
return (
<label className="list-group-item">
<input className="form-check-input me-1" type="checkbox" value="" />
{task.title}
</label>
);
};
function App() {
return (
<main className="App">
<Login />
<Todo readOnly>
<ItemTemplate template="task" />
</Todo>
</main>
);
}
:::