Lightbox
JointJS+ provides an Lightbox plugin that enables the ability to display images by filling the screen, and dimming out the rest of the application.
Installation
Access Lightbox
via the ui
namespace, create an instance, and call the open()
method on it.
import { ui } from '@joint/plus';
const lightbox = new ui.Lightbox({
title: 'Image caption goes here.',
image: 'images/lightbox.png'
});
lightbox.open();
There is also a UMD version available
Include joint.ui.lightbox.js
and joint.ui.lightbox.css
in your HTML. You should also include joint.ui.dialog.js
and
joint.ui.dialog.css
dependencies. Lightbox
inherits from Dialog
.
<link rel="stylesheet" type="text/css" href="joint.ui.dialog.css">
<link rel="stylesheet" type="text/css" href="joint.ui.lightbox.css">
<script src="joint.js"></script>
<script src="joint.ui.dialog.js"></script>
<script src="joint.ui.lightbox.js"></script>
Access Lightbox
through the joint.ui
namespace:
const lightbox = new joint.ui.Lightbox({
title: 'Image caption goes here.',
image: 'images/lightbox.png'
});
lightbox.open();
How does Lightbox work?
While displaying images that fill the screen, Lightbox
will also dim the rest of the application. One of the great things
about Lightbox
is that it will nicely auto-adjust based on the size of the screen.
Common lightbox usage
The following example creates a lightbox upon user interaction. When the user clicks, a lightbox is created, and
the open()
method is called on it.
Opening images on click
Opening an image upon user interaction is one of the most common UI patterns when working with a Lightbox. Simply create your native event listener, and then create and open your lightbox.
import { ui } from '@joint/plus';
document.querySelector('img').addEventListener('click', (evt) => {
new ui.Lightbox({
title: evt.target.getAttribute('title'),
image: evt.target.getAttribute('src')
}).open();
});
Download an image
If you want users to be able to download an image, a downloadable
option is provided for this use case. A default
download button is added to the lightbox. When clicked, this button triggers the 'download'
action by default.
import { ui } from '@joint/plus';
document.querySelector('img').addEventListener('click', function(evt) => {
new ui.Lightbox({
title: evt.target.getAttribute('title'),
image: evt.target.getAttribute('src'),
downloadable: true
}).open();
});