The Power CAT code components are a set of Power Apps component framework (PCF) controls that can be used to enhance power apps.
These code components are available as part of Creator-Kit and can be downloaded from latest release.
There are two types of components:
- User interface components - controls that have a user interface and are styled using properties.
- Utility components - controls that have no user interface, but provide functionality such as keyboard shortcut handling.
The following table provides an index to the code components in this repository:
Code component | Type | Overview | Fluent UI | Canvas apps | Custom pages | Model-driven apps | Power Apps Portal |
---|---|---|---|---|---|---|---|
Auto width label | User interface | This code component acts similar to the standard canvas app label, but will expand dynamically in width to accommodate the text. This functionality is currently not supported in canvas apps today. | ⬜ | ✅ | ✅ | ⬜ | ⬜ |
Breadcrumb | User interface | This code component provides a wrapper around the Fluent UI Breadcrumb control for use in canvas & custom pages. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
Calendar | User interface | This code component provides a wrapper around the Fluent UI Calendar control for use in canvas & custom pages. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
Command Bar | User Interface | This code component provides a wrapper around the Fluent UI Command Bar control for use in canvas & custom pages. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
Context Menu | User Interface | This code component provides a wrapper around the Fluent UI Context Menu control bound to a button for use in canvas & custom pages. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
DetailsList | User Interface | The DetailsList code component allows using of the Fluent UI DetailsList component from inside canvas apps and custom pages. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
Elevation | User Interface | Fluent UI elevation support with mouse hover events. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
Facepile | User interface | This code component provides a wrapper around the Fluent UI Facepile control for use in canvas & custom pages. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
Icon | User Interface | Fluent UI Font Icon/ Icon Button & Action Button with custom styling. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
Keyboard shortcuts | Utility | Registers key press event handlers to allow keyboard short cuts to be used inside canvas apps. | ⬜ | ✅ | ⬜ | ⬜ | ⬜ |
Masked TextField | User Interface | This code component provides a wrapper around the Fluent UI Customizable Masked TextField control for use in canvas & custom pages. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
Nav | User Interface | This code component provides a wrapper around the Fluent UI Nav Menu control bound to a button for use in canvas & custom pages. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
PeoplePicker | User Interface | Fluent UI PeoplePicker control for use in canvas & custom pages. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
Persona | User Interface | Fluent UI Persona control for use in canvas & custom pages. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
Picker | User Interface | Fluent UI Tag Picker support with custom item styling to allow for color/icons tags. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
ProgressIndicator | User Interface | The DetailsList code component allows using of the Fluent UI ProgressIndicator component from inside canvas apps and custom pages. | ✅ | ✅ | ✅ | ⬜ | |
Pivot | User Interface | This code component wraps the Fluent Pivot control for use in canvas & custom pages. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
Resizable text area | User interface | A text area control that can be resized by the user using handle on the bottom right corner. Can be styled to look like either the classic, fluent or model-driven text field controls. | ⬜ | ✅ | ✅ | ✅ | ⬜ |
SearchBox | User Interface | Fluent UI SearchBox control for use in canvas & custom pages. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
Shimmer | User Interface | This code component wraps the Fluent Shimmer control for use in canvas & custom pages. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
Spinner | User Interface | This code component wraps the Fluent Spinner control for use in canvas & custom pages. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
SubwayNav | User Interface | ✅ | ✅ | ✅ | ⬜ | ⬜ | |
TagList | User Interface | This code component provides a Tag List that provides flexible width rendering bound to a collection. | ✅ | ✅ | ✅ | ⬜ | ⬜ |
You may want to build and deploy the components using your own solution publisher. You can follow the steps below to build an deploy each code component to your environment so that it can then be added to your unmanaged solution for deployment, ideally as a managed solution.
First, you will need to decide on which solution publisher prefix you want to use. This is very important since once deployed, a code component cannot be changed to a different solution publisher prefix.
To build and deploy the Resizable Text Area control you will first need to install the pre-requisites:
-
Microsoft Power Platform VS Code extension
- Open Visual Studio Code (VSCode).
- Select Extensions icon from the Activity panel (
Ctrl+Shift+X
). - In the search bar, enter Power Platform Tools.
- Select Install. Once the installation is finished, restart your Visual Studio Code to see the extension within the Terminal window.
-
The .NET 5.x SDK - Select the most appropriate version for your development workstation. Important: If you have any existing VSCode terminal sessions open, you must close them before the dotnet sdk will be available.
Each code component has a set of unit-tests that can be run from inside VS Code:
npm run test
This will run the unit tests and report any failing tests, and the code-coverage metrics. E.g.
The target coverage is the default 80%.
To build and lint the code component locally you can use:
npm run build
This will first fix any auto-fixable linting issues (reporting others as warnings), and then re-build the code component. If there are any build errors, they will be reported.
You can also, build in watch mode to test using the test-harness using:
npm start watch
You can run the linter using:
npm run lint:fix
-
First authenticate against your environment using:
pac auth create -u <YourOrgUrl>
E.g.
pac auth create -u https://org42901917.api.crm4.dynamics.com
-
Deploy the code components using the the correct publisher prefix. This must match the publisher prefix of the solution that you want to add the code component into before exporting into a different environment.
pac pcf push -pp <YourPublishPrefix>
E.g.
pac pcf push -pp cat
In the above example, your solution publisher would need the publisher prefix of
cat
: -
Each time you deploy, you will need to increment the build (3rd component) of the control version in the
ControlManifest.Input.xml
file.
More information : Code component application lifecycle management
You can build and package the code component as a managed solution directly if required using a Solution Project. More information - https://docs.microsoft.com/en-us/powerapps/developer/component-framework/import-custom-controls
This list contains the aspects that should be tested for each component:
- Run-time behavior vs maker studio behavior
- Custom Pages vs Canvas Apps behavior
- Accessibility - tab order & aria labels
- Dynamic sizing behavior using responsive containers
- Upgrade experience when components are updated