Overriding "Add New" Button in Freedom UI Lookup to Pass Default Values
Hi Community,
I am working in Freedom UI (8.3) and I need to override the behavior of the "Add New" button inside a lookup/dropdown field. Specifically, I want to pass parameters (default values) from the current page to the new record form that opens when a user clicks the "Add" button.
I have tried overriding the handler crt.CreateRecordFromLookupRequest, but the values are not populating on the target page.
- Is
request.defaultValuesthe correct property to use forCreateRecordFromLookupRequest - Note: Please assume all attribute names used in the code block below have been verified as correct; I have updated them to generic names for the purpose of this example.
{
request: "crt.CreateRecordFromLookupRequest",
handler: async (request, next) => {
if (request.attributeName === 'PDS_Facility') {
request.defaultValues = request.defaultValues || [];
const accountLookup = await request.$context.PDS_Account;
if (accountLookup && accountLookup.value) {
request.defaultValues.push({
name: "Account",
value: accountLookup.value
});
}
}
return next?.handle(request);
}
}
Like
Hello Prabhath Surya,
crt.CreateRecordFromLookupRequest does not support page parameters. As a workaround, you can implement this using the browser’s native BroadcastChannel API to pass values.
Please refer to the following post for the example:
https://community.creatio.com/questions/open-custom-freedom-ui-page-custom-button-opportunity-edit-page-and-pass-opportunity
Eduard Dovydovskyi,
While the BroadcastChannel API is a good workaround for CreateRecordFromLookupRequest limitations, wouldn't it be more efficient to use crt.CreateRecordRequest if we are already using a custom button? Since crt.CreateRecordRequest natively supports the defaultValues array, we can pass parameters directly into the new page context without needing to manage browser-level messaging.
Prabhath Surya,
Yes, if you are already using a custom button, crt.CreateRecordRequest is a better option for this scenario, since it supports passing defaultValues directly.
The workaround with BroadcastChannel is mainly relevant when you need to keep the standard lookup "Add New" flow based on crt.CreateRecordFromLookupRequest, which does not support passing page parameters.
So both approaches are valid. You can use the one that better fits your implementation.