A fullscreen modal displayed in on top of the page elements. Usually showcases a title, image/video, and description.
Import using Webpack as an ES module:
import MzpModal from '@mozilla-protocol/core/protocol/js/modal';
Import using Webpack as CommonJS:
const MzpModal = require('@mozilla-protocol/core/protocol/js/modal');
Import as a global variable via a <script>
tag:
const MzpModal = window.MzpModal;
You can then initialize the component using createModal()
. For the modal to work it is required that you pass
references to the DOM element that triggered the modal, and a DOM element containing the content you wish to
display.
MzpModal.createModal(origin, content, options);
You can also pass a range of configuration options:
MzpModal.createModal(origin, content, {
title: 'Example headline with 35 characters',
className: 'mzp-has-media',
closeText: 'Close modal',
onCreate: function() {
console.log('Modal opened');
},
onDestroy: function() {
console.log('Modal closed');
}
});
Modal options are as follows:
origin
[DOM Element] element that triggered the modal (required)content
[DOM Element] content to display in the modal (required)options
[Object] object of optional paramstitle
[String] title to display at the top of the modalclassName
[String] optional CSS class name to apply to the modal window.onCreate
[Function] function to fire after modal has been createdonDestroy
[Function] function to fire after modal has been closedallowScroll
[Boolean] allow/restrict page scrolling when modal is opencloseText
[String] text to use for close button a11y.mzp-u-modal-content
to hide content (when JS
is enabled) that is intended to be shown only once a modal is displayed.className
of mzp-has-media
to the modal to
indicate that if the modal contains an image or video, those elements should
be displayed full width.1200px
wide.
<button class="mzp-c-button" type="button">Open Modal</button>
<div class="mzp-u-modal-content">
<figure>
<!-- media could be an image or video -->
<img class="mzp-c-card-image" src="../../img/image-3-2.jpg" alt="">
<figcaption>
A description with a maximum of 100 characters.
That usually means only one or two sentences. <a href="#">Learn more.</a>
</figcaption>
</figure>
</div>
<script src="../../protocol/js/modal.js"></script>
<script>
(function() {
'use strict';
var content = document.querySelector('.mzp-u-modal-content');
var button = document.querySelector('.mzp-c-button');
button.addEventListener('click', function(e) {
e.preventDefault();
MzpModal.createModal(e.target, content, {
title: 'Example headline with 35 characters',
className: 'mzp-has-media',
closeText: 'Close modal',
onCreate: function() {
console.log('Modal opened');
},
onDestroy: function() {
console.log('Modal closed');
}
});
}, false);
})();
</script>