Introduction
The Winter 23 release of Salesforce provided something that, in my view, we've
been desperately seeking since the original (Aura) Lightning Components broke
cover in 2014 - modal alerts provided by the platform. I'd imagine there are
hundreds if not thousands of modal implementations out there, mostly based on
the Lightning Design System styling, and all being maintained separately. Some
in Aura, some in LWC, but all duplicating effort.
I feel like we have cross-origin alert blocking in Chrome to thank for this -
if that wasn't breaking things then I can't see Salesforce would suddenly have
prioritised it after all these years - but it doesn't matter how we got them,
we have them!
Show Me The Code!
The alerts are refreshingly simple to use too - simply import LightningAlert:
import LightningAlert from 'lightning/alert';
and then execute the LightningAlert.open() function:
async showAlert() {
await LightningAlert.open({
message: 'Here is the alert that will be shown to the user',
theme: 'warning',
label: 'Alerted',
variant: 'header'
});
}
and the user sees the alert
The LightningAlert.open() function returns a promise that is resolved when the
alert is closed. Note that I've used an
async function and the await keyword - I don't have any further processing to carry out while the alert is
open, so I use await to stop my function until the user closes the alert.
Demo Site
When there's a component like this with a number of themes and variants, I
typically like to create myself a demo page so I can easily try them all out
when I need to. In this case I have a simple form that allows the user to
choose the theme and variant, then displays the alert with the selected
configuration.
In the past I'd have exposed this through one of my Free Force sites, but
those all disappeared a few months ago so I needed to start again. The new
location is
https://demo.bobbuzzard.org, which is a Google Site with a custom domain. This particular demo can be
found at:
https://demo.bobbuzzard.org/lwc/alerts - it's a Lightning Web Component inside a Visualforce Page using
Lightning Out, so with the various layers involved it may take a couple of
seconds to render the first time. It does allow guest access though, so
worth the trade off in my view.
Related Posts
No comments:
Post a Comment