lightning-record-edit-form and lightning-record-view-form example Salesforce LWC

lightning-record-edit-form and lightning-record-view-form example Salesforce LWC

Sample Code:

Aura Component:

<aura:component implements="force:lightningQuickAction,force:hasRecordId">  
    <c:caseEscalation recId="{!v.recordId}"/>  
</aura:component>  

Lightning Web Component(LWC):

LWC HTML:

<template>    
	<div class="slds-m-around_medium"> 
		<template if:true={newBool}>  		  
				<lightning-record-edit-form object-api-name="Case"  
											onsuccess={handleCreate}  
											record-type-id="0123i000000IC1dAAG">  
					<lightning-messages></lightning-messages>  
					<div class="slds-grid slds-wrap">  
						<div class="slds-col slds-size_1-of-2">                              
							<lightning-input-field field-name="Subject">  
							</lightning-input-field>  
						</div>  
						<div class="slds-col slds-size_1-of-2">  
							<lightning-input-field field-name="Status">  
							</lightning-input-field>  
						</div>  
						<div class="slds-col slds-size_1-of-2">                              
							<lightning-input-field field-name="Reason">  
							</lightning-input-field>  
						</div>  
						<div class="slds-col slds-size_1-of-2">  
							<lightning-input-field field-name="Origin">  
							</lightning-input-field>  
						</div>  
						<div class="slds-col slds-size_1-of-2">  
							<lightning-input-field field-name="ParentId" value={recId}>  
							</lightning-input-field>  
						</div>  
					</div>  
					<lightning-button class="slds-m-top_small"  
										type="submit"  
										label="Create new">  
										</lightning-button>  
				</lightning-record-edit-form>  
		</template>  
		<template if:true={parentCaseId}>                      
			<template if:true={viewBool}>  		 
					<lightning-record-view-form record-id={parentCaseId}  
												object-api-name="Case">  
						<div class="slds-grid slds-wrap">  
							<div class="slds-col slds-size_1-of-2">                              
								<lightning-output-field field-name="Subject">  
								</lightning-output-field>  
							</div>  
							<div class="slds-col slds-size_1-of-2">  
								<lightning-output-field field-name="Status">  
								</lightning-output-field>  
							</div>  
							<div class="slds-col slds-size_1-of-2">                              
								<lightning-output-field field-name="Reason">  
								</lightning-output-field>  
							</div>  
							<div class="slds-col slds-size_1-of-2">  
								<lightning-output-field field-name="Origin">  
								</lightning-output-field>  
							</div>  
						</div>  
					</lightning-record-view-form>  
			</template>  		 
			<template if:true={editBool}>  
				<lightning-record-edit-form record-id={parentCaseId}  
											object-api-name="Case"  
											onsuccess={handleSuccess}>  
					<lightning-messages>  
					</lightning-messages>  
					<div class="slds-grid slds-wrap">  
						<div class="slds-col slds-size_1-of-2">                              
							<lightning-input-field field-name="Subject">  
							</lightning-input-field>  
						</div>  
						<div class="slds-col slds-size_1-of-2">  
							<lightning-input-field field-name="Status">  
							</lightning-input-field>  
						</div>  
						<div class="slds-col slds-size_1-of-2">                              
							<lightning-input-field field-name="Reason">  
							</lightning-input-field>  
						</div>  
						<div class="slds-col slds-size_1-of-2">  
							<lightning-input-field field-name="Origin">  
							</lightning-input-field>  
						</div>  
					</div>  
					<lightning-button  
						class="slds-m-top_small"  
						variant="brand"  
						type="submit"  
						name="update"  
						label="Update">  
					</lightning-button>  
				</lightning-record-edit-form> 
			</template>  
		</template >  
	</div>  
</template>  

LWC JS:

import { LightningElement, api, wire, track } from 'lwc';  
import fetchCase from '@salesforce/apex/CaseEscalationController.fetchCase';  
import { ShowToastEvent } from 'lightning/platformShowToastEvent';  
  
export default class CaseEscalation extends LightningElement {  
  
	@api recId;  
	@track parentCaseId;  
	@track viewBool;  
	@track editBool;  
	@track newBool;  
  
	@wire(fetchCase, { strRecordId: '$recId' })  
	caseRecord({ error, data }) {  
  
		if ( data ) {  
  
			this.parentCaseId = data.Id;  
  
		}   
		if ( this.parentCaseId ) {  
  
			this.newBool = false;  
			this.editBool = true;  
  
		} else{  
			  
			this.newBool = true;  
			this.editBool = false;  
  
		}  
		this.viewBool = false;  
		  
	}  
  
	handleSuccess( event ) {  
		  
		const toastEvent = new ShowToastEvent({  
			title: 'Case Updated',  
			message: 'Case Updated Successfully!!!',  
			variant: 'success'  
		});  
		this.dispatchEvent( toastEvent );  
		this.viewBool = true;  
		this.editBool = false;  
		this.newBool = false;  
  
	}  
  
	handleCreate( createEvent ) {  
		  
		const toastEvent = new ShowToastEvent({  
			title: 'Case Created',  
			message: 'Case Created Successfully!!!',  
			variant: 'success'  
		});  
		this.dispatchEvent( toastEvent );  
		this.viewBool = true;  
		this.editBool = false;  
		this.newBool = false;  
		this.parentCaseId = createEvent.detail.id;  
  
	}  
  
}  

LWC JS-META.XML:

<?xml version="1.0" encoding="UTF-8"?>  
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="CaseEscalation">  
	<apiVersion>47.0</apiVersion>  
	<isExposed>false</isExposed>    
	<targets>      
		<target>lightning__RecordPage</target>      
	</targets>      
	<targetConfigs>      
		<targetConfig targets="lightning__RecordPage">      
			<property name="recId" type="String" label="Record Id" description="Record Id"/>      
		</targetConfig>    
	</targetConfigs>     
</LightningComponentBundle>  

Apex Class:

public class CaseEscalationController {  
	  
	@AuraEnabled( cacheable=true )      
	public static Case fetchCase( String strRecordId )  {   
		  
		system.debug( 'Id is ' + strRecordId );  
		List < Case > listCases = [ SELECT Id FROM Case WHERE ParentId =: strRecordId LIMIT 1 ];  
		  
		if( listCases.size() > 0 )  
			return listCases.get( 0 );  
		else  
			return null;  
		  
	}  
  
}  

Output:

Case without already created Escalation Case(Case not tied to the viewing Case through Parent Case)

Case with already created Escalation Case(Case tied to the viewing Case through Parent Case)

Leave a Reply