-
Notifications
You must be signed in to change notification settings - Fork 833
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #919 from mmsharepoint/main
- Loading branch information
Showing
53 changed files
with
34,443 additions
and
0 deletions.
There are no files selected for viewing
352 changes: 352 additions & 0 deletions
352
samples/react-application-nav-search-driven/.eslintrc.js
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
# Logs | ||
logs | ||
*.log | ||
npm-debug.log* | ||
|
||
# Dependency directories | ||
node_modules | ||
|
||
# Build generated files | ||
dist | ||
lib | ||
release | ||
solution | ||
temp | ||
*.sppkg | ||
.heft | ||
|
||
# Coverage directory used by tools like istanbul | ||
coverage | ||
|
||
# OSX | ||
.DS_Store | ||
|
||
# Visual Studio files | ||
.ntvs_analysis.dat | ||
.vs | ||
bin | ||
obj | ||
|
||
# Resx Generated Code | ||
*.resx.ts | ||
|
||
# Styles Generated Code | ||
*.scss.ts |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
!dist | ||
config | ||
|
||
gulpfile.js | ||
|
||
release | ||
src | ||
temp | ||
|
||
tsconfig.json | ||
tslint.json | ||
|
||
*.log | ||
|
||
.yo-rc.json | ||
.vscode |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
{ | ||
"@microsoft/generator-sharepoint": { | ||
"plusBeta": false, | ||
"isCreatingSolution": true, | ||
"nodeVersion": "16.19.1", | ||
"sdksVersions": { | ||
"@microsoft/microsoft-graph-client": "3.0.2", | ||
"@microsoft/teams-js": "2.9.1" | ||
}, | ||
"version": "1.17.4", | ||
"libraryName": "react-application-nav-search-driven", | ||
"libraryId": "accd59b3-d0bc-4f66-aca7-4e8434602eea", | ||
"environment": "spo", | ||
"packageManager": "npm", | ||
"solutionName": "react-application-nav-search-driven", | ||
"solutionShortDescription": "react-application-nav-search-driven description", | ||
"skipFeatureDeployment": true, | ||
"isDomainIsolated": false, | ||
"componentType": "extension", | ||
"extensionType": "ApplicationCustomizer" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
# Application Top Placeholder Navigation | ||
|
||
## Summary | ||
|
||
This is an SPFx extension acting as a Top placeholder. It uses a FluentUi CommandBar to display a search-driven navigation and diverse permission settings of artefacts in the current side on the right. It furthermore notifies if current site is enabled for external sharing or not. | ||
|
||
Menu live in action inside a Communication site | ||
|
||
![Menu live in action inside a Communication site](assets/01MenuInAction.gif) | ||
|
||
Site and list permissions in right-side panel live in action | ||
|
||
![Site and list permissions in right-side panel live in action](assets/02PermissionManagementInAction.gif) | ||
|
||
External Sharing and Sharing Links in right-side panel live in action | ||
|
||
![External Sharing and Sharing Links in right-side panel live in action](assets/04ExternalSharingInAction.gif) | ||
|
||
For further details see the author's [blog series](https://mmsharepoint.wordpress.com/2023/07/27/a-search-driven-navigation-with-sharepoint-framework-spfx-extension-and-fluentui/) | ||
|
||
## Compatibility | ||
|
||
![SPFx 1.17.4](https://img.shields.io/badge/SPFx-1.17.4-green.svg) | ||
![Node.js v16](https://img.shields.io/badge/Node.js-v16-green.svg) | ||
![Compatible with SharePoint Online](https://img.shields.io/badge/SharePoint%20Online-Compatible-green.svg) | ||
![Does not work with SharePoint 2019](https://img.shields.io/badge/SharePoint%20Server%202019-Incompatible-red.svg "SharePoint Server 2019 requires SPFx 1.4.1 or lower") | ||
![Does not work with SharePoint 2016 (Feature Pack 2)](https://img.shields.io/badge/SharePoint%20Server%202016%20(Feature%20Pack%202)-Incompatible-red.svg "SharePoint Server 2016 Feature Pack 2 requires SPFx 1.1") | ||
![Local Workbench Unsupported](https://img.shields.io/badge/Local%20Workbench-Unsupported-red.svg "Local workbench is no longer available as of SPFx 1.13 and above") | ||
![Hosted Workbench compatible](https://img.shields.io/badge/Hosted%20Workbench-compatible-green.svg "Does work with hosted workbench") | ||
|
||
Tested with Node version:v16.13.2 | ||
|
||
## Applies to | ||
|
||
- [SharePoint Framework](https://aka.ms/spfx) | ||
- [Microsoft 365 tenant](https://docs.microsoft.com/en-us/sharepoint/dev/spfx/set-up-your-developer-tenant) | ||
|
||
> Get your own free development tenant by subscribing to [Microsoft 365 developer program](http://aka.ms/o365devprogram) | ||
## Version history | ||
|
||
Version|Date|Author|Comments | ||
-------|----|----|-------- | ||
0.1|Jul 27, 2023|[Markus Moeller](https://twitter.com/moeller2_0)|Initial release | ||
|
||
|
||
## Minimal Path to Awesome | ||
|
||
- Clone this repository | ||
- Ensure that you are at the solution folder | ||
- in the command-line run: | ||
- `npm install` | ||
- `gulp serve --nobrowser` | ||
|
||
- To grant necessary MS Graph permissions for some functionality | ||
- Either grant them manually (see package-solution.json which ones) | ||
- Grant them via Admin center | ||
- in the command-line run: | ||
- `gulp bundle --ship` | ||
- `gulp package-solution --ship` | ||
- Upload app to app catalog | ||
- Enable | ||
- Grant requested permissions via API access as suggested | ||
- Open a SharePoint site of your choice | ||
- Attach the following to your site URL: | ||
``` | ||
?loadSPFX=true&debugManifestsFile=https://localhost:4321/temp/manifests.js&customActions={"315298b1-ad03-4730-8423-0a07941a96d9":{"location":"ClientSideExtension.ApplicationCustomizer","properties":{"useTeamsites":true,"useCommsites": true,"useHubsites": true,"useTeams": true,"useGraph": true}}} | ||
``` | ||
- Confirm 'Load Debug Scripts' | ||
- Play around with the properties in above's URL | ||
|
||
## Features | ||
|
||
* [Create a SharePoint framework extension application placeholder](https://learn.microsoft.com/en-us/sharepoint/dev/spfx/extensions/get-started/using-page-placeholder-with-extensions?WT.mc_id=M365-MVP-5004617) | ||
* [Use the MSGraphClientV3 to connect to Microsoft Graph](https://learn.microsoft.com/en-us/sharepoint/dev/spfx/use-msgraph?WT.mc_id=M365-MVP-5004617) | ||
* [Use the Microsoft Search API to query data](https://learn.microsoft.com/en-us/graph/api/resources/search-api-overview?view=graph-rest-1.0&WT.mc_id=M365-MVP-5004617) | ||
* [Use Microsoft Graph API to handle sharing links](https://learn.microsoft.com/en-us/graph/api/shares-get?view=graph-rest-1.0&tabs=http&WT.mc_id=M365-MVP-5004617) | ||
* [Use FluentUI CommandBar, ContextualMenu, Dialog, List, Panel, PersonaInitialsColor, Pivot, TextField (incl 'Clear' icon)](https://developer.microsoft.com/en-us/fluentui#/?WT.mc_id=M365-MVP-5004617) | ||
* [Use SharePoint Rest API to work with permissions](https://learn.microsoft.com/en-us/sharepoint/dev/sp-add-ins/set-custom-permissions-on-a-list-by-using-the-rest-interface?WT.mc_id=M365-MVP-5004617) | ||
|
||
## Debug URL for testing | ||
|
||
Here's a debug URL for testing around this sample. | ||
|
||
``` | ||
?loadSPFX=true&debugManifestsFile=https://localhost:4321/temp/manifests.js&customActions={"315298b1-ad03-4730-8423-0a07941a96d9":{"location":"ClientSideExtension.ApplicationCustomizer","properties":{"useTeamsites":true,"useCommsites": true,"useHubsites": true,"useTeams": true,"useGraph": true}}} | ||
``` | ||
|
||
## References | ||
|
||
- [Getting started with SharePoint Framework](https://docs.microsoft.com/en-us/sharepoint/dev/spfx/set-up-your-developer-tenant) | ||
- [Building for Microsoft teams](https://docs.microsoft.com/en-us/sharepoint/dev/spfx/build-for-teams-overview) | ||
- [Use Microsoft Graph in your solution](https://docs.microsoft.com/en-us/sharepoint/dev/spfx/web-parts/get-started/using-microsoft-graph-apis) | ||
- [Publish SharePoint Framework applications to the Marketplace](https://docs.microsoft.com/en-us/sharepoint/dev/spfx/publish-to-marketplace-overview) | ||
- [Microsoft 365 Patterns and Practices](https://aka.ms/m365pnp) - Guidance, tooling, samples and open-source controls for your Microsoft 365 development | ||
|
||
<img src="https://m365-visitor-stats.azurewebsites.net/sp-dev-fx-extensions/samples/react-application-nav-search-driven" /> |
Binary file added
BIN
+2.23 MB
samples/react-application-nav-search-driven/assets/01MenuInAction.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+167 KB
samples/react-application-nav-search-driven/assets/01SearchDrivenNavigation.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+1000 KB
...s/react-application-nav-search-driven/assets/02PermissionManagementInAction.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+441 KB
samples/react-application-nav-search-driven/assets/04ExternalSharingInAction.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+19.8 KB
samples/react-application-nav-search-driven/assets/05SharingLinks.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
64 changes: 64 additions & 0 deletions
64
samples/react-application-nav-search-driven/assets/sample.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
[ | ||
{ | ||
"name": "pnp-sp-dev-spfx-extensions-react-application-nav-search-driven", | ||
"source": "pnp", | ||
"title": "Search driven navigation", | ||
"shortDescription": "SPFx application search driven navigation and permission side panel.", | ||
"url": "https://github.com/pnp/sp-dev-fx-extensions/tree/main/samples/react-application-qna-chat", | ||
"longDescription": [ | ||
"SPFx application extension acting as top level search driven navigation and permission checker on the right within a panel." | ||
], | ||
"creationDateTime": "2023-07-27", | ||
"updateDateTime": "2023-07-27", | ||
"products": [ | ||
"SharePoint" | ||
], | ||
"metadata": [ | ||
{ | ||
"key": "CLIENT-SIDE-DEV", | ||
"value": "React" | ||
}, | ||
{ | ||
"key": "SPFX-VERSION", | ||
"value": "1.17.4" | ||
} | ||
], | ||
"tags": [], | ||
"categories": [ | ||
"SPFX-APPLICATION-EXTENSION" | ||
], | ||
"thumbnails": [ | ||
{ | ||
"type": "image", | ||
"order": 100, | ||
"url": "https://github.com/pnp/sp-dev-fx-extensions/raw/main/samples/react-application-nav-search-driven/assets/01SearchDrivenNavigation.png", | ||
"alt": "Menu navigation" | ||
}, | ||
{ | ||
"type": "image", | ||
"order": 101, | ||
"url": "https://github.com/pnp/sp-dev-fx-extensions/raw/main/samples/react-application-nav-search-driven/assets/05SharingLinks.png", | ||
"alt": "Side panel with permissions" | ||
} | ||
], | ||
"authors": [ | ||
{ | ||
"gitHubAccount": "mmsharepoint", | ||
"pictureUrl": "https://github.com/mmsharepoint.png", | ||
"name": "Markus Moeller" | ||
} | ||
], | ||
"references": [ | ||
{ | ||
"name": "Overview of SharePoint Framework Extensions", | ||
"description": "You can use SharePoint Framework (SPFx) Extensions to extend the SharePoint user experience. With SPFx Extensions, you can customize more facets of the SharePoint experience, including notification areas, toolbars, and list data views. SPFx Extensions are available in all Microsoft 365 subscriptions for production usage.", | ||
"url": "https://docs.microsoft.com/sharepoint/dev/spfx/extensions/overview-extensions?WT.mc_id=M365-MVP-5004617" | ||
}, | ||
{ | ||
"name": "Use page placeholders from Application Customizer", | ||
"description": "Application Customizers provide access to well-known locations on SharePoint pages that you can modify based on your business and functional requirements. For example, you can create dynamic header and footer experiences that render across all the pages in SharePoint Online.", | ||
"url": "https://docs.microsoft.com/sharepoint/dev/spfx/extensions/get-started/using-page-placeholder-with-extensions?WT.mc_id=M365-MVP-5004617" | ||
} | ||
] | ||
} | ||
] |
18 changes: 18 additions & 0 deletions
18
samples/react-application-nav-search-driven/config/config.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
{ | ||
"$schema": "https://developer.microsoft.com/json-schemas/spfx-build/config.2.0.schema.json", | ||
"version": "2.0", | ||
"bundles": { | ||
"command-bar-navigation-application-customizer": { | ||
"components": [ | ||
{ | ||
"entrypoint": "./lib/extensions/commandBarNavigation/CommandBarNavigationApplicationCustomizer.js", | ||
"manifest": "./src/extensions/commandBarNavigation/CommandBarNavigationApplicationCustomizer.manifest.json" | ||
} | ||
] | ||
} | ||
}, | ||
"externals": {}, | ||
"localizedResources": { | ||
"CommandBarNavigationApplicationCustomizerStrings": "lib/extensions/commandBarNavigation/loc/{locale}.js" | ||
} | ||
} |
7 changes: 7 additions & 0 deletions
7
samples/react-application-nav-search-driven/config/deploy-azure-storage.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ | ||
"$schema": "https://developer.microsoft.com/json-schemas/spfx-build/deploy-azure-storage.schema.json", | ||
"workingDir": "./release/assets/", | ||
"account": "<!-- STORAGE ACCOUNT NAME -->", | ||
"container": "react-application-nav-search-driven", | ||
"accessKey": "<!-- ACCESS KEY -->" | ||
} |
56 changes: 56 additions & 0 deletions
56
samples/react-application-nav-search-driven/config/package-solution.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
{ | ||
"$schema": "https://developer.microsoft.com/json-schemas/spfx-build/package-solution.schema.json", | ||
"solution": { | ||
"name": "react-application-nav-search-driven-client-side-solution", | ||
"id": "accd59b3-d0bc-4f66-aca7-4e8434602eea", | ||
"version": "1.0.0.0", | ||
"includeClientSideAssets": true, | ||
"skipFeatureDeployment": true, | ||
"isDomainIsolated": false, | ||
"developer": { | ||
"name": "Markus Moeller", | ||
"websiteUrl": "", | ||
"privacyUrl": "", | ||
"termsOfUseUrl": "", | ||
"mpnId": "Undefined-1.17.4" | ||
}, | ||
"metadata": { | ||
"shortDescription": { | ||
"default": "react-application-nav-search-driven description" | ||
}, | ||
"longDescription": { | ||
"default": "react-application-nav-search-driven description" | ||
}, | ||
"screenshotPaths": [], | ||
"videoUrl": "", | ||
"categories": [] | ||
}, | ||
"features": [ | ||
{ | ||
"title": "Application Extension - Deployment of custom action", | ||
"description": "Deploys a custom action with ClientSideComponentId association", | ||
"id": "725aa5bb-0b08-4402-a709-d13a4ab3ac49", | ||
"version": "1.0.0.0", | ||
"assets": { | ||
"elementManifests": [ | ||
"elements.xml", | ||
"ClientSideInstance.xml" | ||
] | ||
} | ||
} | ||
], | ||
"webApiPermissionRequests": [ | ||
{ | ||
"resource": "Microsoft Graph", | ||
"scope": "Group.Read.All" | ||
}, | ||
{ | ||
"resource": "Microsoft Graph", | ||
"scope": "Sites.ReadWrite.All" | ||
} | ||
] | ||
}, | ||
"paths": { | ||
"zippedPackage": "solution/react-application-nav-search-driven.sppkg" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"$schema": "https://developer.microsoft.com/json-schemas/core-build/sass.schema.json" | ||
} |
29 changes: 29 additions & 0 deletions
29
samples/react-application-nav-search-driven/config/serve.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
{ | ||
"$schema": "https://developer.microsoft.com/json-schemas/spfx-build/spfx-serve.schema.json", | ||
"port": 4321, | ||
"https": true, | ||
"serveConfigurations": { | ||
"default": { | ||
"pageUrl": "https://{tenantDomain}/SitePages/myPage.aspx", | ||
"customActions": { | ||
"315298b1-ad03-4730-8423-0a07941a96d9": { | ||
"location": "ClientSideExtension.ApplicationCustomizer", | ||
"properties": { | ||
"testMessage": "Test message" | ||
} | ||
} | ||
} | ||
}, | ||
"commandBarNavigation": { | ||
"pageUrl": "https://{tenantDomain}/SitePages/myPage.aspx", | ||
"customActions": { | ||
"315298b1-ad03-4730-8423-0a07941a96d9": { | ||
"location": "ClientSideExtension.ApplicationCustomizer", | ||
"properties": { | ||
"testMessage": "Test message" | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} |
4 changes: 4 additions & 0 deletions
4
samples/react-application-nav-search-driven/config/write-manifests.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"$schema": "https://developer.microsoft.com/json-schemas/spfx-build/write-manifests.schema.json", | ||
"cdnBasePath": "<!-- PATH TO CDN -->" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
'use strict'; | ||
|
||
const build = require('@microsoft/sp-build-web'); | ||
|
||
build.addSuppression(`Warning - [sass] The local CSS class 'ms-Grid' is not camelCase and will not be type-safe.`); | ||
|
||
var getTasks = build.rig.getTasks; | ||
build.rig.getTasks = function () { | ||
var result = getTasks.call(build.rig); | ||
|
||
result.set('serve', result.get('serve-deprecated')); | ||
|
||
return result; | ||
}; | ||
|
||
build.initialize(require('gulp')); |
Oops, something went wrong.