Let LexyBox handle classic confirm dialogs.
<!-- HTML for link one --> <a href="#secret" data-confirm="Wanna see something cool?" class="lightbox"> Dialog one </a> <!-- HTML for link two --> <a href="#secret" data-confirm="Wanna go to the stackoverflow?" class="lightbox"> Dialog two </a>
// Init new LexyBox
var lexybox = new LexyBox('.lightbox', {
// Set new theme
theme: 'confirm',
// Force single mode
single: true,
// Change close text
close: 'This will cancel modal too',
// After open callback
after_open: function(media) {
// Click on cancel button
document.getElementById('cancel').addEventListener('click', function(event) {
// Prevent default
event.preventDefault();
// Close lexybox
lexybox.close();
});
}
});
// Add new service
lexybox.add_service('confirm_dialog', {
// Set template
html: '<div class="confirm">%message<br> <a href="#" class="button" id="cancel">Cancel</a> <a href="%url" class="button button--color-primary">Confirm</a></div>',
// Set finder
finder: function(url, link) {
return true;
},
// Set parser
parser: function(url, link) {
return {message: link.getAttribute('data-confirm'), url: url};
}
});
/*
lexybox
***
*/
.lexybox--theme-confirm {
background-color: rgba(255, 255, 255, 0.7);
backdrop-filter: blur(3px);
opacity: 0;
transition: opacity 250ms linear;
}
/* - visible */
.lexybox--theme-confirm.lexybox--visible {
opacity: 1;
}
/*
lexybox-control--close
---
*/
.lexybox--theme-confirm .lexybox-control--close {
position: absolute;
right: 24px;
bottom: 24px;
text-align: center;
}
@media (max-width: 500px) {
.lexybox--theme-confirm .lexybox-control--close {
left: 6%;
right: 6%;
}
}
/*
lexybox-content
***
*/
.lexybox-content {
transform: scale(0.7);
opacity: 0;
transition: opacity 250ms linear, 250ms transform ease-in-out;
}
/* - visible */
.lexybox--visible .lexybox-content {
transform: scale(1);
opacity: 1;
}
/*
confirm
***
*/
.confirm {
width: 360px;
position: absolute;
left: 50%;
top: 25%;
bottom: auto;
margin-left: -212px;
padding: 28px 32px;
background-color: #fff;
box-shadow: 0 0 32px rgba(0, 0, 0, 0.07);
border-radius: 6px;
text-align: center;
}
@media (max-width: 500px) {
.confirm {
width: auto;
left: 6%;
top: 6%;
right: 6%;
margin-left: 0;
}
}
/*
adjust button
---
*/
.confirm .button {
margin: 16px 6px 0 6px;
}