diff --git a/samples/react-group-membership-manager/.devcontainer/devcontainer.json b/samples/react-group-membership-manager/.devcontainer/devcontainer.json new file mode 100644 index 000000000..f6340c327 --- /dev/null +++ b/samples/react-group-membership-manager/.devcontainer/devcontainer.json @@ -0,0 +1,39 @@ +// For more information on how to run this SPFx project in a VS Code Remote Container, please visit https://aka.ms/spfx-devcontainer +{ + "name": "SPFx 1.15.0", + "image": "docker.io/m365pnp/spfx:1.15.0", + // Set *default* container specific settings.json values on container create. + "settings": {}, + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "editorconfig.editorconfig", + "dbaeumer.vscode-eslint" + ], + // Use 'forwardPorts' to make a list of ports inside the container available locally. + "forwardPorts": [ + 4321, + 35729 + ], + "portsAttributes": { + "4321": { + "protocol": "https", + "label": "Manifest", + "onAutoForward": "silent", + "requireLocalPort": true + }, + // Not needed for SPFx>= 1.12.1 + // "5432": { + // "protocol": "https", + // "label": "Workbench", + // "onAutoForward": "silent" + // }, + "35729": { + "protocol": "https", + "label": "LiveReload", + "onAutoForward": "silent", + "requireLocalPort": true + } + }, + "postCreateCommand": "bash .devcontainer/spfx-startup.sh", + "remoteUser": "node" +} \ No newline at end of file diff --git a/samples/react-group-membership-manager/.devcontainer/spfx-startup.sh b/samples/react-group-membership-manager/.devcontainer/spfx-startup.sh new file mode 100644 index 000000000..456d6aea8 --- /dev/null +++ b/samples/react-group-membership-manager/.devcontainer/spfx-startup.sh @@ -0,0 +1,33 @@ +echo +echo -e "\e[1;94mInstalling Node dependencies\e[0m" +npm install + +## commands to create dev certificate and copy it to the root folder of the project +echo +echo -e "\e[1;94mGenerating dev certificate\e[0m" +gulp trust-dev-cert + +# Convert the generated PEM certificate to a CER certificate +openssl x509 -inform PEM -in ~/.rushstack/rushstack-serve.pem -outform DER -out ./spfx-dev-cert.cer + +# Copy the PEM ecrtificate for non-Windows hosts +cp ~/.rushstack/rushstack-serve.pem ./spfx-dev-cert.pem + +## add *.cer to .gitignore to prevent certificates from being saved in repo +if ! grep -Fxq '*.cer' ./.gitignore + then + echo "# .CER Certificates" >> .gitignore + echo "*.cer" >> .gitignore +fi + +## add *.pem to .gitignore to prevent certificates from being saved in repo +if ! grep -Fxq '*.pem' ./.gitignore + then + echo "# .PEM Certificates" >> .gitignore + echo "*.pem" >> .gitignore +fi + +echo +echo -e "\e[1;92mReady!\e[0m" + +echo -e "\n\e[1;94m**********\nOptional: if you plan on using gulp serve, don't forget to add the container certificate to your local machine. Please visit https://aka.ms/spfx-devcontainer for more information\n**********" \ No newline at end of file diff --git a/samples/react-group-membership-manager/README.md b/samples/react-group-membership-manager/README.md index 35dbf1d6a..12df80f01 100644 --- a/samples/react-group-membership-manager/README.md +++ b/samples/react-group-membership-manager/README.md @@ -8,7 +8,7 @@ This app is an example of managing the membership of a group you own including t ## Compatibility -![SPFx 1.15](https://img.shields.io/badge/SPFx-1.15-green.svg) +![SPFx 1.15.2](https://img.shields.io/badge/SPFx-1.15.2-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") @@ -28,7 +28,7 @@ This app is an example of managing the membership of a group you own including t | Solution | Author(s) | | ----------- | ------------------------------------------------------- | -| react-group-membership-manager | Nick Brown ([Jisc](https://www.jisc.ac.uk), [@techienickb](https://twitter.com/techienickb)) | +| react-group-membership-manager | [Nick Brown](https://github.com/techienickb) ([Jisc](https://www.jisc.ac.uk), [@techienickb](https://twitter.com/techienickb)) | ## Version history @@ -36,21 +36,15 @@ This app is an example of managing the membership of a group you own including t | ------- | ---------------- | --------------- | | 1.0 | August 25, 2022 | Initial release | -## Disclaimer - -**THIS CODE IS PROVIDED _AS IS_ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.** - ---- ## Minimal Path to Awesome - Clone this repository - Ensure that you are at the solution folder - in the command-line run: - - **npm install** - - **gulp serve** + - `npm install` + - `gulp serve` -> Include any additional steps as needed. ## Features @@ -92,4 +86,4 @@ Finally, if you have an idea for improvement, [make a suggestion](https://github **THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.** - + diff --git a/samples/react-group-membership-manager/assets/sample.json b/samples/react-group-membership-manager/assets/sample.json new file mode 100644 index 000000000..5f0e674ac --- /dev/null +++ b/samples/react-group-membership-manager/assets/sample.json @@ -0,0 +1,56 @@ +[ + { + "name": "pnp-sp-dev-spfx-web-parts-react-group-membership-manager", + "source": "pnp", + "title": "Group Membership Manager", + "shortDescription": "This app is an example of managing the membership of a group you own including the owners of the group as well as using FluentUI v9", + "url": "https://github.com/pnp/sp-dev-fx-webparts/tree/main/samples/react-group-membership-manager", + "downloadUrl": "https://pnp.github.io/download-partial/?url=https://github.com/pnp/sp-dev-fx-webparts/tree/main/samples/react-group-membership-manager", + "longDescription": [ + "This app is an example of managing the membership of a group you own including the owners of the group as well as using FluentUI v9" + ], + "creationDateTime": "2022-08-25", + "updateDateTime": "2022-08-25", + "products": [ + "SharePoint" + ], + "metadata": [ + { + "key": "CLIENT-SIDE-DEV", + "value": "React" + }, + { + "key": "SPFX-VERSION", + "value": "1.14" + } + ], + "thumbnails": [ + { + "type": "image", + "order": 100, + "url": "https://github.com/pnp/sp-dev-fx-webparts/raw/main/samples/react-group-membership-manager/assets/YOUR-IMAGE-NAME-HERE", + "alt": "Web Part Preview" + }, + // { + // "type": "video", + // "order": 101, + // "url": "https://www.youtube.com/embed/FS-_0KENJkI", + // "alt": "Community demo of the web part" + // } + ], + "authors": [ + { + "gitHubAccount": "techienickb", + "pictureUrl": "https://github.com/techienickb.png", + "name": "Nick Brown" + } + ], + "references": [ + { + "name": "Build your first SharePoint client-side web part", + "description": "Client-side web parts are client-side components that run in the context of a SharePoint page. Client-side web parts can be deployed to SharePoint environments that support the SharePoint Framework. You can also use modern JavaScript web frameworks, tools, and libraries to build them.", + "url": "https://docs.microsoft.com/en-us/sharepoint/dev/spfx/web-parts/get-started/build-a-hello-world-web-part" + } + ] + } +] \ No newline at end of file diff --git a/samples/react-group-membership-manager/gulpfile.js b/samples/react-group-membership-manager/gulpfile.js index be2918708..a47212207 100644 --- a/samples/react-group-membership-manager/gulpfile.js +++ b/samples/react-group-membership-manager/gulpfile.js @@ -13,4 +13,7 @@ build.rig.getTasks = function () { return result; }; +// add this line: +// build.lintCmd.enabled = false; + build.initialize(require('gulp'));