top of page

Mastering Modals in LWC: A Detailed Walkthrough

Writer's picture: Neeraj SinghNeeraj Singh

How to use Modals Pop In Salesforce lightning web components

Modals are a vital part of modern web applications, offering a way to display content in an overlay that sits above the main page. In Salesforce Lightning Web Components (LWC), modals can enhance user experience by providing a smooth, interactive way to present information, gather input, or confirm actions without navigating away from the current page.

In this guide, we'll walk you through the process of creating, customizing, and controlling modals in LWC. By the end, you'll be equipped to implement powerful modals that integrate seamlessly with your Salesforce environment.

1. Introduction to Modals in LWC

A modal is a dialog box/popup window that is displayed on top of the current page. It's often used to prompt the user to take an action or to provide additional information. Unlike traditional popups, modals are part of the current page, making them more secure and less intrusive.

Key Features of LWC Modals:

  • Overlay effect to keep focus on the modal content.

  • Customizable content and actions.

  • Easy to implement and manage in your LWC component.

1. Create the Modal Component

You’ll define a new modal component by extending LightningModal and using the helper components for the modal's structure.

a. JavaScript Controller

Create a JavaScript file myModal.js for your modal component. This file imports LightningModal from lightning/modal and defines the modal behavior.


// c/myModal.js

import { api } from 'lwc';

import LightningModal from 'lightning/modal';


export default class MyModal extends LightningModal {

@api content;


handleOkay() {

this.close('okay');

}

}

Here:

  • @api content allows you to pass data into the modal.

  • handleOkay is an event handler that closes the modal and passes a value indicating the user action.

b. HTML Template

Create an HTML template file myModal.html for your modal component. This file uses the helper components to define the structure of the modal.


<!-- c/myModal.html -->

<template>

<lightning-modal-header label="My Modal Heading"></lightning-modal-header>

<lightning-modal-body>

Content: {content}

</lightning-modal-body>

<lightning-modal-footer>

<lightning-button label="OK" onclick={handleOkay}></lightning-button>

</lightning-modal-footer>

</template>

Here:

  • lightning-modal-header defines the header of the modal.

  • lightning-modal-body is required and contains the main content, which is populated by {content}.

  • lightning-modal-footer contains buttons or actions, such as the OK button which triggers the handleOkay method.

2. Implement Modal Invocation

To invoke this modal from another component or JavaScript file, you can use the LightningModal module. For instance, in a parent component or controller, you might add code like this:

a. JavaScript Invocation

In your parent component JavaScript file, import the MyModal component and use it to open the modal.

// c/parentComponent.js

import { LightningElement } from 'lwc';

import MyModal from 'c/myModal';

import { createElement } from 'lwc';


export default class ParentComponent extends LightningElement {

openModal() {

const modal = createElement('c-my-modal', { is: MyModal });

modal.content = 'This is the content passed to the modal';

document.body.appendChild(modal);

}

}


b. HTML Trigger

Add a button or link in your parent component's HTML to trigger the modal.

<!-- c/parentComponent.html -->

<template>

<lightning-button label="Open Modal" onclick={openModal}></lightning-button>

</template>


Conclusion

Modals in LWC are a powerful tool that can significantly improve the user experience in your Salesforce applications. By following this guide, you now have the foundation to create and customize modals to suit any need.


 
 
 

1 Comment

Rated 0 out of 5 stars.
No ratings yet

Add a rating
Guest
Aug 30, 2024
Rated 5 out of 5 stars.

Informative blog.

Like

Contact Us

Thanks for submitting!

Head Office - Flat No 3B, Aruna Abasan 2, Arunachal,Hatiara,Kolkata,West Bengal,India

Branch - 5/3 Ebony Block, Astha Twin City, Telco,

Jamshedpur , Jharkhand

Mob - + 919830839090

queries@forceapozee.com
neeraj@forceapozee.com

© 2026 by Force Apozee.

bottom of page