v3.0.0
We're excited to announce our Release v3.0.0 of the Microsoft Graph Toolkit 🦒🎉! In this release, we have a large number of fixes, new features, accessibility improvements and general new enhancements. The full list is below! But in short, we'd love to highlight key capabilities:
🎉 Highlights
MGT.v3.0.-.Feature.Video.mp4
Infrastructure updates
We updated the Microsoft Graph JavaScript SDK to the version 3 to benefit from all the latest capabilities including support for large files uploads and better error handling. While making this change, we also enabled leveraging the Toolkit in sovereign clouds.
Major styling updates
We enhanced the styling of all our components to meet our accessibility standards and to fully embrace Fluent 2 and its implementation in web components. Your applications will feel a lot more connected to the rest of Microsoft 365 by having the familiar look and feel, simplifying the adoption and usage of your apps for your users! We also updated our dark and light themes to feel closer to Microsoft 365 experiences.
Improved the SharePoint Framework development experience
In the past, if you wanted to build SharePoint Framework (SPFx) apps, you had to deploy a common library component providing a single instance of the Toolkit for all web parts in the tenant. This was cumbersome, easily missed and did not provide great experience for applications acquired through the store. Thanks to our disambiguation features, we now allow developers to define prefixes to their components to avoid any naming collisions in shared environments like SharePoint pages. Disambiguation is intended to provide developers with a mechanism to use a specific version of the Toolkit in their solution without encountering collisions with other solutions that may be using the Toolkit.
New scenarios
Select an item from a collection of entities
As part of v3.0, we are adding a new mgt-picker component, allowing generic selection of Microsoft Graph entities from collections. It’s intended to be used to select an item from a list of items, for example a task list from the user’s task lists, a user from its direct reports, a list from a site, etc.
Easily switch between light and dark mode
To simplify switching from one theme to the next, we are introducing a mgt-theme-toggle component. This component can be used to change the theme experience from light to dark mode (and vice versa). You can also use our internal utilities to invoke the same using your custom code.
Select a term from Microsoft Graph taxonomy
We are adding a new mgt-taxonomy-picker component, allowing selection of Microsoft Graph taxonomy entities. Built on top of our mgt-picker component, it’s intended to be used to select a term from a term set. We want to share our gratitude to the contributor of this new component, Anoop Tatti, for this highly requested component!
Build a search-driven application
As requested by our community, we wanted to provide a new capability that allows developers to build solutions leveraging the Microsoft Graph search APIs. Up until now, it was not possible to use any of our components, including the mgt-get component to achieve this scenario. Starting with this release, we are excited to add 2 new components helping you to build search scenarios: mgt-search-box and mgt-search-results! These components, when used together, can offer a perfect foundation for a search-driven application.
Improved scenarios
Seamlessly switch between accounts
We heard from a lot of our partners and customers that offering a mechanism to allow multiple users connected to be able to switch to a different user account was key to a great experience. We’re bringing multi-account support to our mgt-login component in this version!
Send messages while staying in-context
We had a basic messaging feature in our mgt-person-card and wanted to bring a fully featured message box that allows users to send quick messages to others while staying in the flow of their work. We are introducing this new quick chat message in this preview version.
Updating your application
To update your application to use the newest version of Microsoft Graph Toolkit, navigate to your project directory and run:
npm i @microsoft/mgt
If you’re using the Toolkit via mgt-loader and update your script tag to:
<script src="https://unpkg.com/@microsoft/mgt@3/dist/bundle/mgt-loader.js"></script>
This update includes breaking changes that may impact your application, such as deprecation of properties, use of the embedded Microsoft Graph client and naming updates to CSS custom properties. Please refer to our upgrade guide to see a detailed list of the changes.
🎨What's Changed
- Updated Graph Client to v3 by @nmetulev in #1040
- [person]: Update person component to latest Fluent UI design by @Mnickii in #1773
- chore: update fluent with main by @Mnickii in #1804
- feature: update File component to latest Fluent design by @Mnickii in #1802
- feature: Update Person Card to latest Fluent UI by @Mnickii in #1797
- feat: update mgt-login to new fluent-ui designs by @gavinbarron in #1807
- feature: Update the people component to Fluent UI by @musale in #1786
- feature: Update people-picker component to fluentui design by @musale in #1801
- chore: update to lit 2.0 by @gavinbarron in #1810
- fix: lock responselike resolutions to v2.0.0 by @Mnickii in #1851
- feat: no-framework spfx webpart by @gavinbarron in #1863
- fix: People picker RTL renders, focus and storybook loading errors by @musale in #1864
- Next/node16 support by @gavinbarron in #1911
- fix: restore provided msal public client behavior by @gavinbarron in #1931
- feat: add support for GCC and other sovereign clouds by @musale in #1928
- chore: upgrade sample to angular 14 by @gavinbarron in #1968
- docs: update README to remove 404s by @sebastienlevert in #1990
- feat: add custom element disambiguation by @gavinbarron in #1852
- docs: adds version information to storybook by @gavinbarron in #1999
- Removed the selected-item template by @sebastienlevert in #2004
- feat: add tests and example jest config by @gavinbarron in #1987
- bug: fix html title for mgt.dev by @gavinbarron in #2019
- chore: send notification to teamsfx when new version released by @SLdragon in #1994
- feat: add spfx utils for disambiguation by @gavinbarron in #1914
- fix: fix dynamic group id people picker story by @gavinbarron in #2023
- feat: typed events by @gavinbarron in #1981
- Update TeamsFxProvider.ts for Graph Toolkit 3.0 by @SLdragon in #1983
- feature: update File List component to Fluent UI by @Mnickii in #1833
- bug: people picker state management by @gavinbarron in #2028
- Fix: PeoplePicker add removePerson safety input check by @masashiswingle in #2033
- fix: correct typing problems in sample vue app by @gavinbarron in #2021
- Bug/node proxy sample by @gavinbarron in #2020
- feat: mgt-picker component for generic picking of entities from Microsoft Graph by @Mnickii in #1937
- chore: remove angular sample package-lock from repo by @gavinbarron in #2042
- feat: add theme management tools by @gavinbarron in #2037
- fix: set the search icon to be on the same level with the input field by @musale in #2043
- feat: report custom element name collisions by @gavinbarron in #2053
- feature: Update teams-channel-picker to fluent UI designs by @musale in #1805
- docs: disambiguation simplification for non-react solutions by @gavinbarron in #2054
- feature: Update agenda component to the fluent UI spec by @musale in #1867
- feat: mgt-loader version warning by @gavinbarron in #2059
- bug: fix voice input for people picker by @gavinbarron in #2058
- bug: unselect person focus indicator on webkit by @gavinbarron in #2060
- mgt-person: fix avatar scaling issue by @JoshWhite in #2071
- feat: add quick messaging to fluent person-card by @Mnickii in #1958
- fix: resolving storybook a11y issues by @gavinbarron in #2129
- feat: use fluentui tokens for theming file and file-list by @musale in #2044
- fix: hide storybook canvas button by @gavinbarron in #2145
- docs: add args table to all simple docs pages by @gavinbarron in #2144
- fix: announce suggestion list changes by @gavinbarron in #2148
- feat: Storybook authentication by @sebastienlevert in #2048
- fix: request state update after setting selectedPeople by @musale in #2163
- feat: add custom CSS properties for the people picker flyout text by @musale in #2162
- feat: added spec for mgt-taxonomy-picker by @anoopt in #2156
- feat: migrate to eslint by @gavinbarron in #2125
- chore: remove *-css.ts files during clean by @gavinbarron in #2178
- bug: fix mgt-spfx-utils packing by @gavinbarron in #2195
- bug: remove mgt-spfx dependency from react webpart sample by @gavinbarron in #2196
- feat: allow programmatically theming a component without the theme-toggle component by @musale in #2199
- fix: people picker option labels by @gavinbarron in #2207
- fix: voice over for person in list by @gavinbarron in #2206
- feat: optionally pass the group-id value from tasks to people picker by @musale in #2200
- feat: use fluentui to theme the person component. by @musale in #2072
- fix: prevent undefined in people-picker option labels for line two by @gavinbarron in #2211
- feat: update Todo component to new Fluent designs by @Mnickii in #1967
- fix: people-picker set focus on list navigation by @gavinbarron in #2219
- feat: Support for new component mgt-search-results by @sebastienlevert in #2047
- chore: readme maintenance by @gavinbarron in #2230
- feat: move completed items to bottom of the list in mgt-todo by @Mnickii in #2215
- feat: mark Teams, TeamsMsal2 and Msal providers as deprecated in v2.x.x by @musale in #2232
- fix: react peer dependencies by @gavinbarron in #2254
- chore: branch policy changes by @gavinbarron in #2263
- feat: use fluent UI to theme the tasks component by @musale in #2150
- chore: update codeql actions to v2 by @gavinbarron in #2265
- fix: pin graph client version by @gavinbarron in #2274
- chore: switch off completed-docs JSDoc rule by @musale in #2278
- chore: add Stylelint to enforce SCSS conventions and avoid errors by @musale in #2260
- feat: remove the Teams, TeamsMsal2 and the Msal providers in v3.x.x by @musale in #2231
- chore: use class names for styling components by @musale in #2314
- fix: remove theme-toggle capability from custom CSS property and templating stories by @musale in #2326
- fix: suggested people aria labels by @gavinbarron in #2335
- fix: include mgt-mock-provider as dependency to mgt by @gavinbarron in #2336
- feat: add custom focus ring color by @gavinbarron in #2334
- Added mgt-taxonomy-picker control by @anoopt in #2172
- fix: person component responsive issue by @Mnickii in #2297
- fix: person text visibility in custom properties by @Mnickii in #2298
- fix: add title tag in location icon svg by @musale in #2285
- fix: open file/folder in new window when you press enter/backspace on it by @musale in #2325
- fix: keyboard navigation of login account list by @gavinbarron in #2289
- fix: make tasks header navigable with the keyboard. by @musale in #2313
- feat: preview component support by @gavinbarron in #2356
- feat: mgt-picker selected-value attribute by @gavinbarron in #2363
- fix: Update mgt-file-upload.ts by @stoubian in #2358
- fix: set the teams-channel-picker dropdown to overlay all other elements by @musale in #2337
- fix: storybook footer accessibility by @gavinbarron in #2369
- fix: new task select rendering by @gavinbarron in #2368
- feat: add token overrides to theme switching by @gavinbarron in #2328
- fix: change override design token logic by @gavinbarron in #2384
- fix: remove react peer dependency by @gavinbarron in #2389
- fix: execute beta queries and eliminate re-renders by @sebastienlevert in #2391
- fix: editor tabs keyboard navigation by @gavinbarron in #2371
- fix: set react peer dependency as range by @gavinbarron in #2393
- fix: using mgt-search-results instead of mgt-search-box by @sebastienlevert in #2395
- fix: make spfx version script work for rc version by @gavinbarron in #2396
- fix: add aria-label text announce cancelling adding a new task by @musale in #2359
- fix: navigate mgt-people using left/right arrow keys when it is focused by @musale in #2283
- fix: apply theme color to calendar icon of date input by @gavinbarron in #2312
- fix: add top to the file-list cache key signature by @musale in #2406
- fix: announce the name of the selected user to remove in narrator by @musale in #2360
- fix: enable text spacings on login, channel-picker and teams-channel-picker by @Mnickii in #2413
- fix: add todo custom properties story by @Mnickii in #2412
- fix(a11y): set aria-expanded for mgt-login when open/closed by @gavinbarron in #2405
- fix: enable keyboard navigation in the picker by @musale in #2324
- fix: adding docs page to Storybook for search components by @sebastienlevert in #2416
- fix: revert dot-options to use fluent controls by @gavinbarron in #2424
- fix: max picker list height by @gavinbarron in #2431
- fix: announce the label of the people-picker text field by @Mnickii in #2398
- fix (ac11y): add more functionality to the click button by @musale in #2432
- fix: set default contrast colors to allow highlighting in high contrast mode by @musale in #2281
- fix: support target-id and initial-id attributes in mgt-todo by @musale in #2407
- fix: right align the person details in mgt-login component by @musale in #2434
- chore: upgrade to typescript 5 by @gavinbarron in #2445
- refactor: preview component bundling by @gavinbarron in #2444
- feat: remove legacy mgt-dark and mgt-light theme and stories by @Mnickii in #2284
- fix: set the avatar sizes for different mgt-person types with a single CSS prop by @musale in #2457
- fix: disambiguated tagname and query selectors by @gavinbarron in #2475
- fix: remove mgt-agenda background colour by @Mnickii in #2476
- fix: announce more options button on narrator in mgt-tasks by @Mnickii in #2399
- fix: Inverting logic to run default before specific renderers by @sebastienlevert in #2449
- fix: styling of nested disambiguated components by @gavinbarron in #2479
- fix: select first list available to display on mgt-todo by @Mnickii in #2456
- fix: ensure todo tasks are rendered in mgt-tasks by @gavinbarron in #2480
- fix: proxy sample node by @gavinbarron in #2491
- fix: disable autocomplete by @gavinbarron in #2481
- chore: Removing teams-app sample from the repo by @sebastienlevert in #2497
- fix: asp net core proxy sample by @gavinbarron in #2515
- fix: sample electron app fixes by @gavinbarron in #2482
- fix(ac11y): change initials text and background to fix luminosity contrast ratio by @Mnickii in #2484
- chore: Removing the proxy-provider-asp-net-mvc sample from the repo by @sebastienlevert in #2513
- fix: Adding taxonomy-picker as an exported React component and updated used types by @sebastienlevert in #2496
- fix: mgt-person narration by @gavinbarron in #2493
- fix: templating story for teams messages by @gavinbarron in #2517
- fix: CSS tokens for
mgt-teams-channel-picker
by @sebastienlevert in #2518 - fix: caching story by @gavinbarron in #2516
- fix: markdown table names by @gavinbarron in #2473
- chore: Adding teamsfx-app sample by @sebastienlevert in #2492
- fix: Returning a JSON parsed version of the cache for insights types by @sebastienlevert in #2524
- fix: remove person-card background by @Mnickii in #2487
- fix: Using optional chaining for search results hits by @sebastienlevert in #2447
- sample: Adding the hero app with current version of MGT by @sebastienlevert in #2525
- chore: updates to msal sso sample by @gavinbarron in #2526
- fix: people-picker uses show-max attribute by @gavinbarron in #2527
- fix: scopes used to query team channels by @gavinbarron in #2519
- fix: person-card hover icons alignment by @Mnickii in #2531
- fix: person card color by @gavinbarron in #2533
- fix: task assignment button by @gavinbarron in #2528
- correct the component name in storybook by @gavinbarron in #2536
- fix: use fluentui token to set person/login background by @musale in #2435
- fix(ac11y): Add keyboard navigation to mgt-teams-channel-picker by @musale in #2415
- fix: combobox attributes by @gavinbarron in #2538
- fix: people picker single select mode by @gavinbarron in #2541
- chore: bump indexDB versions by @gavinbarron in #2540
🎉 Celebrating our contributors
- @masashiswingle made their first contribution in #2033
- @JoshWhite made their first contribution in #2071
- @anoopt made their first contribution in #2156
- @MIchaelMainer made their first contribution in #2253
- @stoubian made their first contribution in #2358
- @nmetulev
- @SLdragon
- @gavinbarron
- @Mnickii
- @musale
- @MIchaelMainer
- @sebastienlevert
📃Changelog
Full Changelog: v2.11.2...v3.0.0