{"id":30509,"date":"2022-02-15T14:32:16","date_gmt":"2022-02-15T09:02:16","guid":{"rendered":"https:\/\/www.inogic.com\/blog\/?p=30509"},"modified":"2022-10-14T12:04:28","modified_gmt":"2022-10-14T06:34:28","slug":"reusable-components-using-component-library-in-canvas-power-apps","status":"publish","type":"post","link":"https:\/\/www.inogic.com\/blog\/2022\/02\/reusable-components-using-component-library-in-canvas-power-apps\/","title":{"rendered":"Reusable components using Component Library in Canvas Power Apps"},"content":{"rendered":"<p style=\"text-align: justify;\">Reusable components or code blocks have always been the best practice to be followed to avoid re-designing or coding the same components again and again. It also ensures a single centralized location to manage updates or changes. Any change made to this component or code block will auto reflect in all programs that this has been referred from.<\/p>\n<p>It also helps to create complex components that can then be reused by power users without the need to understand the logic\/code behind it.<\/p>\n<p style=\"text-align: justify;\">Component reusability now comes to Canvas Apps in the form of Component Libraries. As of the date of writing this article it is in Preview. In this article we will walk through creating a component and utilizing them across canvas apps (i.e multiple different canvas apps) and shipping them along.<\/p>\n<p style=\"text-align: justify;\">For this article we will make use of the AI builder capabilities and create a component that includes a textbox and it will do a sentiment analysis of the text entered in there and indicate the sentiment by enabling one of the three emote icons. Since it is a component, we have also added an output property where it will return the sentiment, in case the maker wants to store this sentiment in the database.<\/p>\n<p><strong><em>Note: To make use of AIBuilder components\/api you need to ensure you have enabled AI Builder subscription. There is a trial available that you can enable for evaluation purposes.<\/em><\/strong><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30539\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/1Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"796\" height=\"548\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/1Canvas-Power-Apps-ink-1.jpeg 796w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/1Canvas-Power-Apps-ink-1-300x207.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/1Canvas-Power-Apps-ink-1-768x529.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/1Canvas-Power-Apps-ink-1-660x454.jpeg 660w\" sizes=\"(max-width: 796px) 100vw, 796px\" \/><\/p>\n<p>Let\u2019s begin the design<\/p>\n<p>1. Navigate to the maker portal at <a href=\"https:\/\/make.powerapps.com\" target=\"_blank\" rel=\"noopener\">https:\/\/make.powerapps.com<\/a><\/p>\n<p>2. Here you see the option to create Apps as well as Component Libraries,<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30540\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/2Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"1872\" height=\"604\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/2Canvas-Power-Apps-ink-1.jpeg 1872w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/2Canvas-Power-Apps-ink-1-300x97.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/2Canvas-Power-Apps-ink-1-1024x330.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/2Canvas-Power-Apps-ink-1-768x248.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/2Canvas-Power-Apps-ink-1-1536x496.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/2Canvas-Power-Apps-ink-1-660x213.jpeg 660w\" sizes=\"(max-width: 1872px) 100vw, 1872px\" \/><\/p>\n<p>for this exercise first we will choose Component Library<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30541\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/3Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"1914\" height=\"428\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/3Canvas-Power-Apps-ink-1.jpeg 1914w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/3Canvas-Power-Apps-ink-1-300x67.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/3Canvas-Power-Apps-ink-1-1024x229.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/3Canvas-Power-Apps-ink-1-768x172.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/3Canvas-Power-Apps-ink-1-1536x343.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/3Canvas-Power-Apps-ink-1-660x148.jpeg 660w\" sizes=\"(max-width: 1914px) 100vw, 1914px\" \/><\/p>\n<p>3. This will open the same familiar screen that we work on while designing our canvas apps.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30542\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/4Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"1934\" height=\"672\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/4Canvas-Power-Apps-ink-1.jpeg 1934w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/4Canvas-Power-Apps-ink-1-300x104.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/4Canvas-Power-Apps-ink-1-1024x356.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/4Canvas-Power-Apps-ink-1-768x267.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/4Canvas-Power-Apps-ink-1-1536x534.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/4Canvas-Power-Apps-ink-1-660x229.jpeg 660w\" sizes=\"(max-width: 1934px) 100vw, 1934px\" \/><\/p>\n<p>4. We will focus on the Components tab. Rename Component1 to a name that you want the users to refer your control as. I have renamed it as Sentiment<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30543\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/5Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"1696\" height=\"898\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/5Canvas-Power-Apps-ink-1.jpeg 1696w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/5Canvas-Power-Apps-ink-1-300x159.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/5Canvas-Power-Apps-ink-1-1024x542.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/5Canvas-Power-Apps-ink-1-768x407.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/5Canvas-Power-Apps-ink-1-1536x813.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/5Canvas-Power-Apps-ink-1-660x349.jpeg 660w\" sizes=\"(max-width: 1696px) 100vw, 1696px\" \/><\/p>\n<p>5. Designed the canvas to include a multi-line textbox to enable user input.<\/p>\n<p>6. Add icons -&gt; chose the emoticons for Happy Neutral and Sad and added them on the canvas<\/p>\n<p>7. A label that cannot be seen has also been added to the canvas.<\/p>\n<p>8. We will now add a property to our component that the maker can refer to the read the sentiment value of the entered text. Note since we are creating a component library, the maker that incorporates this component in their canvas app cannot directly access any of the controls placed on the canvas in the above steps. The only way for the makers to interact with our control\/component is through input\/output properties. For this example, we will create an output property.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30544\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/6Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"1280\" height=\"1156\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/6Canvas-Power-Apps-ink-1.jpeg 1280w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/6Canvas-Power-Apps-ink-1-300x271.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/6Canvas-Power-Apps-ink-1-1024x925.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/6Canvas-Power-Apps-ink-1-768x694.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/6Canvas-Power-Apps-ink-1-660x596.jpeg 660w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p>9. Now let us make all the controls functional. Depending on the text entered in the textbox, we need to highlight one of the 3 emoticons depending on the sentiment of the entered text. For this we will write the following expression on the color property of the icons<\/p>\n<p>10. For the Happy icon we have<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30546\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/7Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"2314\" height=\"1092\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/7Canvas-Power-Apps-ink-1.jpeg 2314w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/7Canvas-Power-Apps-ink-1-300x142.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/7Canvas-Power-Apps-ink-1-1024x483.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/7Canvas-Power-Apps-ink-1-768x362.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/7Canvas-Power-Apps-ink-1-1536x725.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/7Canvas-Power-Apps-ink-1-2048x966.jpeg 2048w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/7Canvas-Power-Apps-ink-1-660x311.jpeg 660w\" sizes=\"(max-width: 2314px) 100vw, 2314px\" \/><\/p>\n<pre class=\"lang:css gutter:true start:1\">If(!IsBlankOrError(contentText.Text),\r\n\r\nIf( AIBuilder.AnalyzeSentiment(contentText.Text).sentiment = \"positive\",Color.Green,Color.Black),Color.Black)<\/pre>\n<p>The expression first checks to ensure the textbox isn\u2019t empty before it can send the text for sentimentanalysis<\/p>\n<pre class=\"lang:css gutter:true start:1\">If(!IsBlankOrError(contentText.Text),<\/pre>\n<p>If it is not empty then do the sentiment analysis on the text using the AIBuilder feature<\/p>\n<pre class=\"lang:css gutter:true start:1\">If( AIBuilder.AnalyzeSentiment(contentText.Text).sentiment<\/pre>\n<p>Depending on the result, if it is positive, we set the color to Green or else keep it at Black<\/p>\n<pre class=\"lang:css gutter:true start:1\">If( AIBuilder.AnalyzeSentiment(contentText.Text).sentiment = \"positive\",Color.Green,Color.Black)<\/pre>\n<p>11. Similarly, for the neutral and sad icons we have the following expressions set for the color property<\/p>\n<p><strong>Neutral<\/strong><\/p>\n<pre class=\"lang:css gutter:true start:1\">If(!IsBlankOrError(contentText.Text),\r\n\r\nIf( AIBuilder.AnalyzeSentiment(contentText.Text).sentiment = \"neutral\",Color.Blue,Color.Black),Color.Black)<\/pre>\n<p><strong>Sad<\/strong><\/p>\n<pre class=\"lang:css gutter:true start:1\">If(!IsBlankOrError(contentText.Text),\r\n\r\nIf( AIBuilder.AnalyzeSentiment(contentText.Text).sentiment = \"negative\",Color.Red,Color.Black),Color.Black)<\/pre>\n<p>12. We have added a label to the canvas that will store the sentiment result. The expression for that one is<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30547\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/8Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"2314\" height=\"664\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/8Canvas-Power-Apps-ink-1.jpeg 2314w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/8Canvas-Power-Apps-ink-1-300x86.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/8Canvas-Power-Apps-ink-1-1024x294.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/8Canvas-Power-Apps-ink-1-768x220.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/8Canvas-Power-Apps-ink-1-1536x441.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/8Canvas-Power-Apps-ink-1-2048x588.jpeg 2048w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/8Canvas-Power-Apps-ink-1-660x189.jpeg 660w\" sizes=\"(max-width: 2314px) 100vw, 2314px\" \/><\/p>\n<p>13. Now let us set the value of the output property to the value of this textbox<\/p>\n<p>14. Choose the Root control \u2013 SentimentAnalysisTextInput and then in the properties dropdown you will find the Sentiment property we created earlier<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30548\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/9Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"2294\" height=\"608\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/9Canvas-Power-Apps-ink-1.jpeg 2294w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/9Canvas-Power-Apps-ink-1-300x80.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/9Canvas-Power-Apps-ink-1-1024x271.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/9Canvas-Power-Apps-ink-1-768x204.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/9Canvas-Power-Apps-ink-1-1536x407.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/9Canvas-Power-Apps-ink-1-2048x543.jpeg 2048w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/9Canvas-Power-Apps-ink-1-660x175.jpeg 660w\" sizes=\"(max-width: 2294px) 100vw, 2294px\" \/><\/p>\n<p>Result is our label that we set in step 12 above.<\/p>\n<p>15. Our component is ready. We now need to test it. Note while you are on the component, the Run icon in the command bar is disabled<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30549\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/10Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"2294\" height=\"608\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/10Canvas-Power-Apps-ink-1.jpeg 2294w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/10Canvas-Power-Apps-ink-1-300x80.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/10Canvas-Power-Apps-ink-1-1024x271.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/10Canvas-Power-Apps-ink-1-768x204.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/10Canvas-Power-Apps-ink-1-1536x407.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/10Canvas-Power-Apps-ink-1-2048x543.jpeg 2048w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/10Canvas-Power-Apps-ink-1-660x175.jpeg 660w\" sizes=\"(max-width: 2294px) 100vw, 2294px\" \/><\/p>\n<p>16. Save the app before you proceed further.<\/p>\n<p>17. To test the component, you need to switch to the Screens tab and create a test screen and include your component there to test.<\/p>\n<p>18. You will find your component in the Custom command bar button<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30550\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/11Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"1722\" height=\"334\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/11Canvas-Power-Apps-ink-1.jpeg 1722w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/11Canvas-Power-Apps-ink-1-300x58.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/11Canvas-Power-Apps-ink-1-1024x199.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/11Canvas-Power-Apps-ink-1-768x149.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/11Canvas-Power-Apps-ink-1-1536x298.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/11Canvas-Power-Apps-ink-1-660x128.jpeg 660w\" sizes=\"(max-width: 1722px) 100vw, 1722px\" \/><\/p>\n<p>19. Choose that and it will auto add the component to the screen.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30551\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/12Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"1784\" height=\"544\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/12Canvas-Power-Apps-ink-1.jpeg 1784w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/12Canvas-Power-Apps-ink-1-300x91.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/12Canvas-Power-Apps-ink-1-1024x312.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/12Canvas-Power-Apps-ink-1-768x234.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/12Canvas-Power-Apps-ink-1-1536x468.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/12Canvas-Power-Apps-ink-1-660x201.jpeg 660w\" sizes=\"(max-width: 1784px) 100vw, 1784px\" \/><\/p>\n<p>20. Now run the screen and type the text and see the appropriate icons get highlighted based on the sentiment returned<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30552\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/13Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"2398\" height=\"550\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/13Canvas-Power-Apps-ink-1.jpeg 2398w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/13Canvas-Power-Apps-ink-1-300x69.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/13Canvas-Power-Apps-ink-1-1024x235.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/13Canvas-Power-Apps-ink-1-768x176.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/13Canvas-Power-Apps-ink-1-1536x352.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/13Canvas-Power-Apps-ink-1-2048x470.jpeg 2048w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/13Canvas-Power-Apps-ink-1-660x151.jpeg 660w\" sizes=\"(max-width: 2398px) 100vw, 2398px\" \/><\/p>\n<p>21. Publish the app component library<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30553\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/14Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"1622\" height=\"1022\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/14Canvas-Power-Apps-ink-1.jpeg 1622w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/14Canvas-Power-Apps-ink-1-300x189.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/14Canvas-Power-Apps-ink-1-1024x645.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/14Canvas-Power-Apps-ink-1-768x484.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/14Canvas-Power-Apps-ink-1-1536x968.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/14Canvas-Power-Apps-ink-1-660x416.jpeg 660w\" sizes=\"(max-width: 1622px) 100vw, 1622px\" \/><\/p>\n<p>22. Now that our component is working, let\u2019s use this in a new Canvas App that we will go ahead and design.<\/p>\n<p>23. Create a solution and add the component to the solution<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30554\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/15Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"1622\" height=\"1022\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/15Canvas-Power-Apps-ink-1.jpeg 1622w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/15Canvas-Power-Apps-ink-1-300x189.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/15Canvas-Power-Apps-ink-1-1024x645.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/15Canvas-Power-Apps-ink-1-768x484.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/15Canvas-Power-Apps-ink-1-1536x968.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/15Canvas-Power-Apps-ink-1-660x416.jpeg 660w\" sizes=\"(max-width: 1622px) 100vw, 1622px\" \/><\/p>\n<p>24. Since we did not create component within a solution, you will find it in the outside Dataverse tab<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30555\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/16Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"1522\" height=\"696\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/16Canvas-Power-Apps-ink-1.jpeg 1522w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/16Canvas-Power-Apps-ink-1-300x137.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/16Canvas-Power-Apps-ink-1-1024x468.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/16Canvas-Power-Apps-ink-1-768x351.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/16Canvas-Power-Apps-ink-1-660x302.jpeg 660w\" sizes=\"(max-width: 1522px) 100vw, 1522px\" \/><\/p>\n<p>25. Add a new Canvas app to this solution<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30556\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/17Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"1522\" height=\"696\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/17Canvas-Power-Apps-ink-1.jpeg 1522w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/17Canvas-Power-Apps-ink-1-300x137.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/17Canvas-Power-Apps-ink-1-1024x468.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/17Canvas-Power-Apps-ink-1-768x351.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/17Canvas-Power-Apps-ink-1-660x302.jpeg 660w\" sizes=\"(max-width: 1522px) 100vw, 1522px\" \/><\/p>\n<p>26. At present if you choose Custom components \u00e0 Import Components option from the command bar, you will not see the component library listed<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30557\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/18Canvas-Power-Apps-ink-1-scaled.jpeg\" alt=\"Canvas Power Apps\" width=\"2560\" height=\"639\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/18Canvas-Power-Apps-ink-1-scaled.jpeg 2560w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/18Canvas-Power-Apps-ink-1-300x75.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/18Canvas-Power-Apps-ink-1-1024x256.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/18Canvas-Power-Apps-ink-1-768x192.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/18Canvas-Power-Apps-ink-1-1536x383.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/18Canvas-Power-Apps-ink-1-2048x511.jpeg 2048w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/18Canvas-Power-Apps-ink-1-660x165.jpeg 660w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p>27. Instead choose Get More Components from the Insert side bar<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30558\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/19Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"656\" height=\"1118\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/19Canvas-Power-Apps-ink-1.jpeg 656w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/19Canvas-Power-Apps-ink-1-176x300.jpeg 176w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/19Canvas-Power-Apps-ink-1-601x1024.jpeg 601w\" sizes=\"(max-width: 656px) 100vw, 656px\" \/><\/p>\n<p>28. This will bring up the following window with your component library listed<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30559\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/20Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"1286\" height=\"604\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/20Canvas-Power-Apps-ink-1.jpeg 1286w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/20Canvas-Power-Apps-ink-1-300x141.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/20Canvas-Power-Apps-ink-1-1024x481.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/20Canvas-Power-Apps-ink-1-768x361.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/20Canvas-Power-Apps-ink-1-660x310.jpeg 660w\" sizes=\"(max-width: 1286px) 100vw, 1286px\" \/><\/p>\n<p>29. Choose and click ok.<\/p>\n<p>30. Back in your Canvas App Insert side bar, you now find a section for Library Components, you will find your control there. Drag and drop the control from there<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30561\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/21Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"1784\" height=\"892\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/21Canvas-Power-Apps-ink-1.jpeg 1784w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/21Canvas-Power-Apps-ink-1-300x150.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/21Canvas-Power-Apps-ink-1-1024x512.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/21Canvas-Power-Apps-ink-1-768x384.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/21Canvas-Power-Apps-ink-1-1536x768.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/21Canvas-Power-Apps-ink-1-660x330.jpeg 660w\" sizes=\"(max-width: 1784px) 100vw, 1784px\" \/><\/p>\n<p>31. Now let us add another label to display the content of the output property we had created for the component.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30562\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/22Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"1784\" height=\"606\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/22Canvas-Power-Apps-ink-1.jpeg 1784w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/22Canvas-Power-Apps-ink-1-300x102.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/22Canvas-Power-Apps-ink-1-1024x348.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/22Canvas-Power-Apps-ink-1-768x261.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/22Canvas-Power-Apps-ink-1-1536x522.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/22Canvas-Power-Apps-ink-1-660x224.jpeg 660w\" sizes=\"(max-width: 1784px) 100vw, 1784px\" \/><\/p>\n<p>32. Play your app and see the results.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30563\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/23Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"944\" height=\"812\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/23Canvas-Power-Apps-ink-1.jpeg 944w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/23Canvas-Power-Apps-ink-1-300x258.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/23Canvas-Power-Apps-ink-1-768x661.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/23Canvas-Power-Apps-ink-1-660x568.jpeg 660w\" sizes=\"(max-width: 944px) 100vw, 944px\" \/><\/p>\n<p>33. Save and publish this app.<\/p>\n<p>34. As component libraries are solution aware, i.e we can include it in a solution, we can easily ship our canvas app as well as the component library through solutions between environments.<\/p>\n<p>35. Now if you were to make any updates to your components in future, like say I added a label to the component and published it<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30564\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/24Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"1296\" height=\"950\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/24Canvas-Power-Apps-ink-1.jpeg 1296w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/24Canvas-Power-Apps-ink-1-300x220.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/24Canvas-Power-Apps-ink-1-1024x751.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/24Canvas-Power-Apps-ink-1-768x563.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/24Canvas-Power-Apps-ink-1-660x484.jpeg 660w\" sizes=\"(max-width: 1296px) 100vw, 1296px\" \/><\/p>\n<p>36. The app makers that have used this component will be notified of the updates<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30565\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/25Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"1482\" height=\"340\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/25Canvas-Power-Apps-ink-1.jpeg 1482w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/25Canvas-Power-Apps-ink-1-300x69.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/25Canvas-Power-Apps-ink-1-1024x235.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/25Canvas-Power-Apps-ink-1-768x176.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/25Canvas-Power-Apps-ink-1-660x151.jpeg 660w\" sizes=\"(max-width: 1482px) 100vw, 1482px\" \/><\/p>\n<p>37. Click review and update to update the component to the latest version<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30566\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/26CANVAS-APP-ink-1.jpeg\" alt=\"CANVAS APP\" width=\"1048\" height=\"422\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/26CANVAS-APP-ink-1.jpeg 1048w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/26CANVAS-APP-ink-1-300x121.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/26CANVAS-APP-ink-1-1024x412.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/26CANVAS-APP-ink-1-768x309.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/26CANVAS-APP-ink-1-660x266.jpeg 660w\" sizes=\"(max-width: 1048px) 100vw, 1048px\" \/><\/p>\n<p>38. And you see the label added in the design now<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-30567\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/27Canvas-Power-Apps-ink-1.jpeg\" alt=\"Canvas Power Apps\" width=\"1440\" height=\"828\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/27Canvas-Power-Apps-ink-1.jpeg 1440w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/27Canvas-Power-Apps-ink-1-300x173.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/27Canvas-Power-Apps-ink-1-1024x589.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/27Canvas-Power-Apps-ink-1-768x442.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2022\/02\/27Canvas-Power-Apps-ink-1-660x380.jpeg 660w\" sizes=\"(max-width: 1440px) 100vw, 1440px\" \/><\/p>\n<h2><strong>Conclusion<\/strong>:<\/h2>\n<p>Reusability and hiding the complexity is the key to successful adoption of low code tech by power users and citizen developers.<\/p>\n<h2 style=\"text-align: left;\"><div class=\"su-heading su-heading-style-default su-heading-align-center\" id=\"\" style=\"font-size:15px;margin-bottom:5px\"><div class=\"su-heading-inner\">Save 1-2 hours or $800 monthly on scheduling and managing business travel with a geo-mapping App!<\/div><\/div><\/h2>\n<p><em><strong><a href=\"https:\/\/bit.ly\/3ELX45j\" target=\"_blank\" rel=\"noopener noreferrer\">Maplytics<\/a> <\/strong>\u2013 Integrate Map with Dynamics 365 CRM and visualize data on the map, manage sales territories, auto-schedule appointments, get optimized travel routes, track field reps in real-time, and more<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Reusable components or code blocks have always been the best practice to be followed to avoid re-designing or coding the same components again and again. It also ensures a single centralized location to manage updates or changes. Any change made to this component or code block will auto reflect in all programs that this has\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.inogic.com\/blog\/2022\/02\/reusable-components-using-component-library-in-canvas-power-apps\/\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":13,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1954,16,38,2361],"tags":[2556],"class_list":["post-30509","post","type-post","status-publish","format-standard","hentry","category-canvas-apps","category-dynamics-365","category-microsoft-powerapps","category-technical","tag-canvas-power-apps"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/30509","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/comments?post=30509"}],"version-history":[{"count":0,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/30509\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/media?parent=30509"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/categories?post=30509"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/tags?post=30509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}