Skip to content

Commit 002baf3

Browse files
authored
Merge pull request #6455 from MicrosoftDocs/main
Components GA live
2 parents 428ccc9 + 9ae77aa commit 002baf3

29 files changed

+275
-124
lines changed

powerapps-docs/developer/data-platform/virtual-entities/create-virtual-tables-using-connectors.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "Create virtual tables using virtual connectors (Microsoft Dataverse) | Microsoft Docs"
33
description: "Learn how to create virtual tables using virtual connectors in Microsoft Dataverse."
4-
ms.date: 04/28/2022
4+
ms.date: 06/01/2022
55
ms.reviewer: "jdaly"
66
ms.topic: article
77
author: "NHelgren" # GitHub ID
@@ -101,15 +101,17 @@ Creating a virtual table with the virtual connector provider includes the follow
101101
# [SQL Server](#tab/sql)
102102
Watch a 4 minute video showing how to create a virtual table with the SQL virtual connector provider.
103103

104-
> [!VIDEO https://www.microsoft.com/videoplayer/embed/RE4WG4l]
104+
> [!VIDEO https://www.microsoft.com/videoplayer/embed/RE4XLkU]
105+
105106
# [Microsoft Excel Online (Business)](#tab/excel)
106107
Watch a 4 minute video showing how to create a virtual table with the Excel virtual connector provider.
107108

108-
> [!VIDEO https://www.microsoft.com/videoplayer/embed/RE4WARf]
109+
> [!VIDEO https://www.microsoft.com/videoplayer/embed/RE4YcGf]
110+
109111
# [Microsoft SharePoint](#tab/sharepoint)
110112
Watch a 4 minute video showing how to create a virtual table with the SharePoint virtual connector provider.
111113

112-
> [!VIDEO https://www.microsoft.com/videoplayer/embed/RE4WG4k]
114+
> [!VIDEO https://www.microsoft.com/videoplayer/embed/RE4YcIk]
113115
114116
---
115117

powerapps-docs/maker/TOC.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1196,14 +1196,18 @@
11961196
href: ./canvas-apps/embed-apps-dev.md
11971197
- name: Develop offline-capable apps
11981198
href: ./canvas-apps/offline-apps.md
1199-
- name: Create a component (preview)
1199+
- name: Create a canvas component
12001200
items:
1201-
- name: Components overview
1201+
- name: Canvas component overview
12021202
href: ./canvas-apps/create-component.md
12031203
- name: Component library
12041204
href: ./canvas-apps/component-library.md
1205+
- name: Component library ALM
1206+
href: ./canvas-apps/component-library-alm.md
12051207
- name: Map input fields
12061208
href: ./canvas-apps/map-component-input-fields.md
1209+
- name: Add multimedia to a component
1210+
href: ./canvas-apps/component-multimedia.md
12071211
- name: Behavior formulas
12081212
href: ./canvas-apps/component-behavior.md
12091213
- name: Performance and optimization
@@ -1460,7 +1464,7 @@
14601464
href: ./model-driven-apps/model-app-page-issues.md
14611465
- name: Use monitor to troubleshoot custom pages
14621466
href: ./model-driven-apps/monitor-page-checker.md
1463-
- name: Customize app commands (preview)
1467+
- name: Customize app commands
14641468
href: ./model-driven-apps/command-designer-overview.md
14651469
items:
14661470
- name: Use command designer

powerapps-docs/maker/canvas-apps/component-behavior.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
---
2-
title: Behavior formulas for components (preview)
2+
title: Behavior formulas for components
33
description: Do one or more tasks in canvas app when a component-based action occurs.
44
author: hemantgaur
55
ms.subservice: canvas-developer
66
ms.topic: article
7-
ms.date: 04/19/2022
7+
ms.date: 06/01/2022
88
ms.author: hemantg
99
ms.reviewer: tapanm
1010
search.audienceType:
@@ -16,9 +16,7 @@ contributors:
1616
- tapanm-msft
1717
---
1818

19-
# Behavior formulas for components (preview)
20-
21-
[This article is pre-release documentation and is subject to change.]
19+
# Behavior formulas for components
2220

2321
Specify one or more [behavior formulas](working-with-formulas-in-depth.md) that run when an event triggers a change in component instances.
2422

@@ -62,8 +60,11 @@ To do so, check **Raise OnReset when value changes** of the default input prope
6260

6361
### See also
6462

65-
- [Canvas app components overview](create-component.md)
66-
- [Canvas app components library](component-library.md)
67-
63+
- [Canvas components](create-component.md)
64+
- [Component library](component-library.md)
65+
- [Component library application lifecycle management (ALM)](component-library.md)
66+
- [Behavior formulas for components](component-behavior.md)
67+
- [Power Apps component framework](../../developer/component-framework/component-framework-for-canvas-apps.md)
68+
- [Add canvas components to a custom page in a model-driven app](../model-driven-apps/page-canvas-components.md)
6869

6970
[!INCLUDE[footer-include](../../includes/footer-banner.md)]
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
---
2+
title: Component library application lifecycle management (ALM)
3+
description: Learn about the application lifecycle management (ALM) with component libraries
4+
author: hemantgaur
5+
ms.subservice: canvas-developer
6+
ms.topic: article
7+
ms.date: 06/01/2022
8+
ms.author: hemantg
9+
ms.reviewer: tapanm
10+
search.audienceType:
11+
- maker
12+
search.app:
13+
- PowerApps
14+
contributors:
15+
- hemantgaur
16+
- tapanm-msft
17+
---
18+
19+
# Component library application lifecycle management (ALM)
20+
21+
A [component library](component-library.md) is a special type of canvas app that can contain one or more canvas components. These library components can then be used by all the other canvas apps in the environment. This capability enables you to create reusable shared components across all apps in an environment, unlike [app-level components](create-component.md#components-in-canvas-apps) that are restricted to one app.
22+
23+
To use a component from a component library, you have to first import the component into the canvas app. Once imported, you can then add the component to the app screen. Any updates in the component definition from the component library will prompt you to review and incorporate the change [on demand](component-library.md#method-2-proactive-check-for-updates) or when the [app is opened for editing](component-library.md#method-1-component-update-notification-on-app-edit). Component libraries and dependent apps can also be moved to another environment using standard [Microsoft Dataverse solutions](/power-platform/alm/solution-concepts-alm).
24+
25+
> [!NOTE]
26+
> In this article, the term "import" refers to importing a component from a component library to an app, and shouldn't be confused with importing a solution into Dataverse.
27+
28+
When a component from a component library is imported into a canvas app, that component's definition is copied into the definition of the canvas app. Once a component definition has been imported, the app is "self-contained" as far as that component definition is concerned. The app maker can choose to [edit the component](component-library.md#library-component-customization), and create local instances of the component within the app. At this point there's no direct link to the component library from where the component originated. This self-containment characteristic also applies if the canvas app is then migrated to a different environment where the component library isn't present.
29+
You can continue to create instances of the imported component definition within the apps in the target environment, and the apps can still be published and played. No new updates will be prompted or received in the consuming app in this case.
30+
31+
In order to maintain the relationship from the app to the component library, ensure that you use the component library to make any changes to the component, instead of editing the component within the consuming app.
32+
33+
## Canvas apps and component libraries solution support
34+
35+
Consistent with the other solution object dependencies, if a canvas app uses a control from a component library, it will have a dependency on that component library. In order to move an app to the new environment, you'll need to either package the component library inside the same solution or install it as a pre-requisite. App to component library dependency is maintained in the target environment. At a later point, when a component library with the updated component is imported using a solution into the target environment, existing apps will get the new component definitions using the regular [component update flow](component-library.md#update-a-component-library).
36+
37+
### Creating and exporting component library in a solution
38+
39+
You can either create a component library directly from within the solution, or add it to an existing solution.
40+
41+
:::image type="content" source="media/component-library-alm/new-add-existing-library-solution.png" alt-text="Add an existing component library to a solution, or a new one.":::
42+
43+
When a component library is saved in an environment that has Dataverse available, component library is automatically added to the default solution. A unique logical name is generated for the component library with the **Default CDS Publisher** prefix. This behavior is to ensure that the solution system is aware of its presence, and can link the dependencies from the apps that use the component library's logical name.
44+
45+
> [!NOTE]
46+
> Component libraries created before the rollout of the component library ALM feature need to be edited, published, and the editor must be closed explicitly before they're enabled for the ALM capabilities. You can check the component library ALM readiness by its presence in the default solution.
47+
48+
:::image type="content" source="media/component-library-alm/check-default-solution.png" alt-text="Check default solution for your component library presence.":::
49+
50+
Component libraries inside a solution also support **Allow customizations** managed properties that govern the behavior of the component library in the target environment.
51+
52+
:::image type="content" source="media/component-library-alm/allow-customizations.png" alt-text="Allow customizations managed property for component library.":::
53+
54+
If you turn off this setting, and export the solution to a target environment, you won't be able to edit the component library.
55+
56+
:::image type="content" source="media/component-library-alm/edit-disabled.png" alt-text="You can't edit the component library that doesn't allow customizations.":::
57+
58+
### Component library dependencies
59+
60+
Apps that use components from the component library will be marked as dependent in the solutions infrastructure. This behavior applies to all apps that are added to any Dataverse solution in a given environment. You can still create apps outside of solutions, but those apps won't have any solution dependencies. You can later add these apps to solutions to make them part of the solution ALM.
61+
62+
:::image type="content" source="media/component-library-alm/dependencies.gif" alt-text="Animation that shows a canvas app in a solution using the component from the component library in the same solution and the dependencies for both.":::
63+
64+
If you import a solution that only has an app that uses a component from a component library, but excludes the component library, you'll see the following message:
65+
66+
"Import failed due to missing dependencies for \<app name\>".
67+
68+
In this case, you can choose to install the component library solution first, or bundle the component library with the solution that contains the canvas app. Either of the steps would ensure the app will have the dependency created in the target environment.
69+
70+
When the library is updated and a newer component version is imported through the solutions, the app will get a notification and receive the updates when the [app is opened for editing](component-library.md#method-1-component-update-notification-on-app-edit).
71+
72+
> [!NOTE]
73+
> If the component library managed property **Allow customizations** is turned off, the component library can't be edited in the target environment.
74+
75+
Dependencies are calculated based on the latest published state of an app. If you restore an older version of the app that doesn't use a library component, the dependency will be removed from the app, and the solution. Importing a component into an app from a component library without actually using it also creates a dependency since the unused library component remains available within the app for a future use.
76+
77+
> [!TIP]
78+
> Editing a component from a component library inside the consuming app creates a local copy. At this point, the library component is still available for use through the **Insert** pane. In order to remove the dependency completely, delete the component from **Insert** > **Library components** > **...** (ellipsis) > **Remove from app**.
79+
80+
## Best practices and troubleshooting
81+
82+
- Limit the number of components in a library to 20 to get optimal performance. Plan and create multiple component libraries in advance as the number of components in them will likely grow over time. This approach will also reduce the solution payload as apps are moved across the environment.
83+
84+
- There's a delay from when the component library is published to when it's available to the application, and can take up to 5 minutes.
85+
86+
- If the app isn't able to receive the update from the library component in the target environment where the solution is installed, check using the below actions:
87+
88+
- Determine the component library logical name from the solution view. Use the default solution if library isn't explicitly added to solution.
89+
- Download app using the library component to local computer using **File** > **Save as** > **This computer**. Rename the downloaded file to have a .zip extension, and unzip the package. Open the **Properties.json** file, and then search for the keyword "LibraryDependencies". You should see a matching library logical name.
90+
- If you're consuming the solution, check that the canvas app has properly identified the component libraries as [solution dependencies](/power-platform/alm/solution-concepts-alm#solution-dependencies). If the solution doesn't properly identify the component libraries as solution dependencies, that means the app dependency to the component library link hasn't been created properly. In that case, check with the solution provider to resolve the issue.
91+
- If you're the solution publisher, check that the component libraries are saved with the library logical name in the solution, and that it's same as the one referenced in the component library .msapp package.
92+
93+
- Solution export always exports the latest version of the component library. Hence, always update the apps with the latest component version before exporting them though solutions. This action ensures that the apps have the same component version as available in the latest version of the component library. Apps and library are considered to be synchronized with each other when they're moved to a target environment for the first time; and hence, you're not prompted for any update being available when editing the app.
94+
95+
### See also
96+
97+
- [Canvas components](create-component.md)
98+
- [Component library](component-library.md)
99+
- [Map input fields of a component](map-component-input-fields.md)
100+
- [Add multimedia to a component](component-multimedia.md)
101+
- [Behavior formulas for components](component-behavior.md)
102+
- [Power Apps component framework](../../developer/component-framework/component-framework-for-canvas-apps.md)
103+
- [Add canvas components to a custom page in a model-driven app](../model-driven-apps/page-canvas-components.md)
104+
105+
[!INCLUDE[footer-include](../../includes/footer-banner.md)]

powerapps-docs/maker/canvas-apps/component-library.md

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
---
2-
title: Component library (preview)
2+
title: Component library
33
description: Learn about working with a library of reusable components for canvas apps.
44
author: hemantgaur
55
ms.subservice: canvas-developer
66
ms.topic: article
7-
ms.date: 04/19/2022
7+
ms.date: 06/01/2022
88
ms.author: hemantg
99
ms.reviewer: tapanm
1010
search.audienceType:
@@ -16,9 +16,7 @@ contributors:
1616
- tapanm-msft
1717
---
1818

19-
# Component library (preview)
20-
21-
[This article is pre-release documentation and is subject to change.]
19+
# Component library
2220

2321
In the [overview](create-component.md) article for creating components, you are introduced to components inside canvas app. As you create components inside an app, you can also create a library of components that can be reused. By creating a component library, app makers easily share and update one or more components with other makers.
2422

@@ -29,7 +27,7 @@ Component libraries are containers of component definitions that make it easy to
2927
- Notify app makers of available component updates.
3028

3129
> [!NOTE]
32-
> Component libraries are the recommended way to reuse components across apps. When using a component library, an app maintains dependencies on the components it uses. The app maker will be alerted when the updates to dependent components become available. Hence, all new reusable components should be created within the component libraries instead. An earlier Power Apps feature that allowed [importing components from one canvas app to another](create-component.md?#import-and-export-components) is retired.
30+
> Component libraries are the recommended way to reuse components across apps. When using a component library, an app maintains dependencies on the components it uses. The app maker will be alerted when the updates to dependent components become available. Hence, all new reusable components should be created within the component libraries instead. An earlier Power Apps feature that allowed [importing components from one canvas app to another](create-component.md#import-and-export-components-retired) is retired.
3331
3432
## Difference between an app and a component library
3533

@@ -152,14 +150,22 @@ The following animation shows the process to get the latest components.
152150

153151
![Steps to get the latest components](./media/component-library/get-latest-components.gif "Steps to get the latest components")
154152

155-
### Update component library in a consuming app
153+
### Updating component from a component library in a consuming app
156154

157155
If you import a component from a component library, you can't edit it inside the consuming app. If you select **Edit component**, you'll see an option to create a copy of the component inside the current app for you to make changes:
158156

159157
![Edit library component.](./media/component-library/edit-library-component.png "Edit library component")
160158

161159
If you select **Create a copy**, the component is copied to the local app. The local copy of the component appears under the **Custom** category in the **Insert** pane. This local copy of the component won't receive updates if a new version of the originating component library is published later.
162160

161+
> [!NOTE]
162+
> The in-use instances of components from the component library won't be affected after you create a local copy of a component, and will remain linked to the component library definition. Only instances of the locally copied components (from **Custom** category) are considered to be the local app components.
163+
164+
## Deleting a component library
165+
166+
If a component library is referenced by a canvas app it cannot be deleted. This is true for both Dataverse and non-Dataverse environments. Please remove the component from the app before deleting the library. You can find information about the apps using the component library in either solution dependencies view or in the message which is shown when you try to delete library.
167+
168+
![Delete library component.](./media/component-library/delete-component-library-dependencies.png "Delete library component")
163169

164170
## Component library permissions
165171

@@ -172,13 +178,17 @@ Sharing a component library works the same way you share a canvas app. When you
172178

173179
![Import component library file.](./media/component-library/import-component-library-file.png "Import component library file")
174180

175-
## Next steps
176-
177-
Learn [behavior formulas](component-behavior.md) for canvas apps.
181+
- If you're importing an app and a component library in an environment for the first time, ensure the app uses the latest version of the component included with the component library. Otherwise, the app won't receive updates after the import. The app will recognize and prompt for the updated version upon subsequent component library imports to the same environment.
182+
- Code components are not supported inside component libraries.
178183

179184
### See also
180185

181-
Canvas app [components overview](create-component.md) and working with components in an app.
182-
186+
- [Canvas components](create-component.md)
187+
- [Component library application lifecycle management (ALM)](component-library-alm.md)
188+
- [Map input fields of a component](map-component-input-fields.md)
189+
- [Add multimedia to a component](component-multimedia.md)
190+
- [Behavior formulas for components](component-behavior.md)
191+
- [Power Apps component framework](../../developer/component-framework/component-framework-for-canvas-apps.md)
192+
- [Add canvas components to a custom page in a model-driven app](../model-driven-apps/page-canvas-components.md)
183193

184194
[!INCLUDE[footer-include](../../includes/footer-banner.md)]

0 commit comments

Comments
 (0)