Enhanced component properties
We are happy to announce our new updates to our experimental enhanced component properties. As part of our effort to finalize this feature and make it ready for public preview, we’d like to solicit your feedback on these updates and the overall properties features.
Improved UX and clearer concepts
One of the main goals of this update is to provide clearer concepts with concise features and limitations for each. Properties are still input or output properties, you can still define arguments. However – they are now distinct types of properties. Data properties are simple properties that provide data that goes in (input) or out (output) of your component. Function properties are properties that can accept arguments, like functions, and return a value. At this time functions do not support data flow and have to be pure, but this is something we look forward to revisiting in the future. And finally events (input) and actions (output) are behavior functions – functions that can change the state of your app, such as updating a variable or manipulating a data source.
You can find a description of the concepts in a new learning article, which we will incorporate into our components documentation for preview.
Behavior properties were previously limited to input – meaning the consuming app defines the behavior. This is mostly use as an event-type function, where the component can raise an event, and the app can define Power Fx code to react. We have renamed behavior properties to Events, and we’ve introduced Actions which are output behavior properties. This means your component can now have a behavior function that can be called from the app.
Although the UX has changed, asking for type of function first and input or output later, the underlying mechanisms have not changed. If you are already using enhanced component properties in your apps, they will now show up under the new concepts without any rework required.
In addition to updating the experimental enhanced properties, we have also made updates to ensure support for SetFocus() and Select() in the existing components feature that is already generally available. This feature was recently finished and will be rolling out to different regions in the coming weeks.
We are not intending to make any more feature changes at this time, and are purely focused on pushing this set of features to a generally available state, with quality. We are looking forward to your feedback and any issues you may find. You can engage with our team on the Experimental Features forum.