SharePoint Online Hub Site - Overview

Here, I am going to address two queries:
  1. What is SharePoint Hub Site?
  2. Why use SharePoint Hub Site?

What is a SharePoint Hub Site?


SharePoint Hub Site is a connective tissue or conceptual view to connect and organize the site collections based on projects, department, regions, etc. 
Before going deep, let's talk about Hub. The word "hub" illustrates that it is a central part of the wheel that rotates with an axle and helps the spoke to radiate.
Hub Sites are a way to tie all the autonomous site collections together under one navigation umbrella.

SharePoint Hub Site Characteristics

  • Discovers related content, such as news and other site activities
  • Applies common navigation, branding, and site structure across associated sites
  • Searches across all associated sites

Why SharePoint Hub Site? 

It moves away from a hierarchical structure to a flat structure.



Hierarchical structure illustration

This structure is widely accepted among the organizations due to the reasons mentioned below:
  • Permission Inheritance
  • Retention Policy inheritance
  • Shared Term Store
  • Shared Theme and Styling
  • Global Navigation and others





Flat Structure Illustrate

SharePoint Hub site can connect with multiple teams and communication sites (Site Collection). It provides a set of common features:
  • Brings together related teams and communication sites
  • Shared experience for the family of related sites
  • Roll up news, event and site Activity
  • Apply Common navigation and branding
  • Search across the hub and associated sites




SharePoint Hub Sites on Office 365 are all about connecting your various workplaces so you can share, manage, and find the content and apps you need regardless of the device you’re using. The shared theme and logo also creates consistency and unifies all of the different teams and sites you may be active on.




Furthermore, content discovery is amplified through the scoped search feature, as the association allows for the search results to include content from any of the associated sites. This means aggregated news and activities from the various associated sites can bring everything together.

In the next article, you will learn more about -
  1. How to create and associate Hub Sites
  2. Hub Site features
  3. Enterprise Governance for Hub Sites
I hope you have enjoyed and learned something new in this article. Thanks for reading and stay tuned for the next article.

Speaking at Microsoft Azure Vidyapeeth

Glad to share, I am speaking at Microsoft Azure Vidyapeeth

Topic: How Azure Bot can interact with Azure SQL using AI Services

Event Time:-  Friday 28-June-2019 at 3 to 4 PM IST.

Registration Link:-https://info.microsoft.com/IN-AZUREPLAT-WBNR-FY19-06Jun-28-AzureBotinteractionwithSQLusingAIservices-SRDEM2949_LP01Registration-ForminBody.html



SPFX webpart with PowerApps Form

PowerApps is an enterprise service that lets you connect, create, and share business apps with your team in minutes, using any device. You can create a PowerApps for an existing list in SharePoint Online.
Let’s get started on how we can integrate PowerApps form with SPFx and leverage the PowerApps out of the box capability.




Overview

The SPFx solution calls the PowerApps form using Modal Dialog with IFrame. PowerApps form then saves the data into SharePoint Online List. 
  1. SPFx (SharePoint Framework) control is designed to render the web part at SharePoint Online Modern Framework Page.
  2. PowerApps is designed to add data into SharePoint Online List without REST API call.
  3. SharePoint Online List is created to store the data.
PowerApps Form Creation

Step 1 - Navigate to the PowerApps application here.
Log in with your O365 credentials, provided your credentials have been assigned the PowerApps license.
Due to network traffic, sometimes the request navigates to here. In the end, it also provides the same interface and functionality.
Step 2 - Create a Canvas App
There are two types of Apps, i.e., Canvas App or Model Apps. In a nutshell, both seem similar, but they have a very basic difference,
  • Canvas AppIt's used to create a simple visual design without complicated coding or programming tools.
  • Model AppIt's used to design complex business logic with the ability to generate data model.
Select “+Create” >> Canvas app from blank.



Step 3 - Canvas App Name
Provide the App name and select the format as Tablet. Click "Create" to proceed.


Step 4 - Add Data Source
Once a blank app is created, select View -> Data Source. Type SharePoint to select the connection.

Create an OOTB generic SharePoint List name "Leave Request" with below schema.
S.NO
Column Name
Data Type
1
Leave Comment
Single Line of Text
2
StartDate
Date
3
EndDate
Date



Step 5 - Connect to SharePoint Online Site Collection
Select the desired site collection from the availble list.


Step 6 - Select the List Name



Step 7 - Add Form to Screen
  1. Select Forms 
  2. Edit Form
  3. Select the Data Source from the left-hand side; i.e., List Name
  4. Edit Form will appear on the screen with a 3-column layout with all fields in the default views. Change the column and layout with 2 and vertical respectively.
  5. Select Mode to New.
  6. All controls appear on the form with a 2-column layout.

This form is going to create a new request.






Step 8 - Change the form setting
Click the File menu.
  1. Select App Settings >> Screen Size and Orientation >>Choose custom width and height.
Click "Apply" to save the changes.


Step 9 - Resize the Form and Control
Increase the width and height of the form.
  1. Select Title Data card >> set the width in the property as 1024.
  2. Select Data Card Value >> set the width of the text box in the property as 1000.
Follow the same steps for "Leave comments". Select an attachment and remove it.

Step 10 - Add Form Submit Button
  1. Add button to form and rename the text  “Submit” and select the form
  2. Choose the form “On Select” from the dropdown
  3. Change the value to “SubmitForm(Form1)
Once the "Submit" button is clicked, it will save the created form.
Step 11 - Add new screen 
Select Home -> New Screen -> Blank. It will add a new blank screen into an app.
New screen used for navigation after successful submission of the form.


Step 12 - Add Success message to screen
  1. Select newly added screen2 -> Select insert ribbon -> Select Text
  2. Click HTML Text control.
  3. Select HTML Text control
  4. Add HTML Text to control like “Request Submitted successfully”

Step 13 - Navigate form on Success
Once the form gets submitted, it will navigate the form to screen 2 and show the success message.
  1. Select screen1 Form
  2. Select On Success from dropdown
  3. set value “Navigate (Screen2)  


Step 14 - Execute the Form
Press F5 to run the form and set all the details and click submit.



SPFX Webpart integerate with Powerapps Form

Step 15 - Create and Navigate to SPFx Folder
  1. yo @microsoft/sharepoint  



Step 16 - Describe SPFx solution artifacts 

  1. Provide Solution Name: SPFX_PowerAppsForm
  2. Provide the Target Solution: SharePoint Online
  3. Provide Web Parts Name: SPFX_PowerAppsForm
  4. Provide WebParts Description: SPFX_PowerAppsForm
  5. Select Framework: React

After a few minutes, the "Congratulations!" screen will appear to notify the successful generation of the package.


Step 17 - Import and Add References
Browse the solution and navigate to filename SpfxpowerappsForm.tsx.
  1. import { Modal } from 'office-ui-fabric-react/lib/Modal';  
  2. import Iframe from 'react-iframe';  
  3. import { Icon } from 'office-ui-fabric-react/lib/Icon';  
  4. import { css, classNamesFunction, DefaultButton, IButtonProps, IStyle, Label, PrimaryButton } from 'office-ui-fabric-react';  
Install "react-iframe" package using the following command.
  1. npm install --save react-iframe  


Step 18 - Add State and Initialize the Contractor
Add State with ShowModalNew variable.
  1. export interface ISpfxPowerAppsFormState {  
  2.   showModalNew: boolean;  
  3. }  
Create Constant with Close button icon.
  1. const CloseModal = () => (  
  2.   <Icon iconName="ChromeClose" className="ms-IconExample" style={{fontWeight : "bold"}}    />  
  3. );  
Add Constructor and initalize the State Variable.
  1. constructor(props: any) {  
  2.     super(props);  
  3.     this.state = {  
  4.       showModalNew: false,  
  5.       };  
  6.   }  
Look at the reference screenshot to place the code.



Step 19 - Add Button to invoke Model Dialog
Add Office-UIiFabric default button and Modal Dailog.
Initilize the Iframe tag inside the Modal Dialog to call the power apps form,
  1. public render(): React.ReactElement<ISpfxPowerAppsFormProps> {  
  2.    return (  
  3.      <div>  
  4.       <DefaultButton id="requestButton" onClick={this._showModalNew} text="Raise Leave Request"></DefaultButton>   
  5.       <Modal  
  6.          titleAriaId="titleId"  
  7.          subtitleAriaId="subtitleId"  
  8.          isOpen={this.state.showModalNew}  
  9.          onDismiss={this._closeModalNew}  
  10.          isBlocking={false}  
  11.         containerClassName="ms-modalExample-container">  
  12.          <div >  
  13.            <span ><b>Leave Request Form  </b> </span>   
  14.            <DefaultButton onClick={this._closeModalNew} className={styles.CloseButton} ><CloseModal/></DefaultButton>  
  15.          </div>  
  16.          <div id="subtitleId" className="ms-modal-body">  
  17.            <Iframe url={"https://web.powerapps.com/webplayer/iframeapp?source=iframe&screenColor=rgba(104,101,171,1)&appId=/providers/Microsoft.PowerApps/apps/f33f9511-5001-467f-8238-fddc36665299"}  
  18.                width="1024px" height="550px"  
  19.                position="relative"  
  20.                allowFullScreen>  
  21.            </Iframe>  
  22.          </div>  
  23.        </Modal>  
  24.       </div>  
  25.    );  
  26.  }  
To hide the Powerapps ribbon into modal dialog, we need to use below define format in the Iframe URL.
https://web.powerapps.com/webplayer/iframeapp?source=iframe&screenColor=rgba(104,101,171,1)&appId=/providers/Microsoft.PowerApps/apps/<PowerAppsFormID>

Navigate to https://web.powerapps.com
Navigate to designed apps and click the "Detail" section. 



Step 20 - Add CSS class to float cross icon to right.
Add CSS to SpfxPowerAppsForm.module.scss at the end.
  1. .CloseButton     
  2. {    
  3. floatright;    
  4. background-color#3860b2;    
  5. height40px;    
  6. color: antiquewhite;     
  7.   &:hover{    
  8.     background-color#3860b2;    
  9.   }    
  10. }     
Step 21 - Test Solution locally
Navigate to View -> Integrated Terminal
  1. type gulp serve  


Step 22 - Browse the Workbench 
Browse the workbench with <<SitecollectionUrl>>/_layouts/15/workbench.aspx 
Click the + Icon and add the Web Part since the web part has the only button with Modal Popup.



Step 23 - Raise a leave request
The button will invoke the PowerApps form 



Fill the details and click the submit. On click of Submit, it will navigate to a different screen with a success message and add an item to SharePoint Online List.


Finally, the record gets added to the SharePoint List.


How easy and quick it was to build a custom PowerApps form solution, without a single line of code.
Hope you have enjoyed and learned something new in this article. Thanks for reading and stay tuned for the next article.