mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-11-18 07:01:58 +08:00
35 lines
1.3 KiB
JavaScript
35 lines
1.3 KiB
JavaScript
/* global iFrameModal */
|
|
// General-purpose iframe modal. For closing the modal, you need will to take care of triggering
|
|
// the 'hide' event on the modal itself, example from inside the iframe:
|
|
// parent.document.getElementById('iFrameModal').dispatchEvent(new Event('hide'));
|
|
|
|
$(document).on('turbolinks:load', function() {
|
|
window.iFrameModal = document.getElementById('iFrameModal');
|
|
let iFrameModalFrame = document.getElementById('iFrameModalFrame');
|
|
|
|
// Block from running when accessing page without defined iframe modal
|
|
// (sign in, reset password, accept invitation, 2fa)
|
|
if (!iFrameModalFrame || !iFrameModal) return;
|
|
|
|
window.showIFrameModal = (url) => {
|
|
iFrameModalFrame.setAttribute('src', url);
|
|
iFrameModal.classList.remove('hidden');
|
|
iFrameModal.dispatchEvent(new Event('shown'));
|
|
};
|
|
|
|
iFrameModal.addEventListener('hide', () => {
|
|
iFrameModal.classList.add('hidden');
|
|
iFrameModalFrame.removeAttribute('src');
|
|
iFrameModal.dispatchEvent(new Event('hidden'));
|
|
});
|
|
|
|
iFrameModal.addEventListener('shown', () => {
|
|
document.body.classList.add('overflow-hidden');
|
|
document.body.classList.remove('overflow-auto');
|
|
});
|
|
|
|
iFrameModal.addEventListener('hidden', () => {
|
|
document.body.classList.remove('overflow-hidden');
|
|
document.body.classList.add('overflow-auto');
|
|
});
|
|
});
|