Some other approach is use intermediate Visualfoce page then use lighting-out features.
I'm going to explain how to use LWC component wrapped inside aura.
Challenge - We will not get Lead record Id easily unlike we get if component is being used as global action. {!v.recordId}
Here is the workaround to get parent record id and pass to your LWC. This will be useful when your standard button/action is overridden.
LWC component name - createBAFormLWC
<template>
<template if:true={loading}>
<lightning-spinner></lightning-spinner>
</template>
<div> BA form Id - {leadId} </div>
</template>
Java script
import { LightningElement,api } from 'lwc';
export default class CreateBAFormLWC extends LightningElement {
@api leadId;
}
Aura component - createBAFormAura
<aura:component
implements="lightning:actionOverride,flexipage:availableForRecordHome,
force:hasRecordId" access="global" >
<aura:handler name="init" value="this" action="{!c.doInit}"/>
<aura:attribute name="parentRecordId" type="String" />
<p>Id-{!v.parentRecordId}</p>
<c:createBAFormLWC leadId="{!v.parentRecordId}"/>
</aura:component>
Controller
({
doInit : function(component, event, helper) {
var value = helper.getParameterByName(component , event, 'inContextOfRef');
console.log('value--'+value);
var context = JSON.parse(window.atob(value));
console.log('context.attributes.recordId--'+context.attributes.recordId);
component.set("v.parentRecordId", context.attributes.recordId);
}
})
Helper
({
getParameterByName: function(component, event, name) {
name = name.replace(/[\[\]]/g, "\\$&");
var url = window.location.href;
var regex = new RegExp("[?&]" + name + "(=1\.([^&#]*)|&|#|$)");
var results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
})
No comments:
Post a Comment