71 lines
2.3 KiB
JavaScript
71 lines
2.3 KiB
JavaScript
/**
|
|
* @copyright (C) 2019 Open Source Matters, Inc. <https://www.joomla.org>
|
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
|
*/
|
|
(document => {
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
window.jSelectModuleType = () => {
|
|
const elements = document.querySelectorAll('#moduleDashboardAddModal .modal-footer .btn.hidden');
|
|
if (elements.length) {
|
|
setTimeout(() => {
|
|
elements.forEach(button => {
|
|
button.classList.remove('hidden');
|
|
});
|
|
}, 1000);
|
|
}
|
|
};
|
|
const buttons = document.querySelectorAll('#moduleDashboardAddModal .modal-footer .btn');
|
|
const hideButtons = [];
|
|
let isSaving = false;
|
|
if (buttons.length) {
|
|
buttons.forEach(button => {
|
|
if (button.classList.contains('hidden')) {
|
|
hideButtons.push(button);
|
|
}
|
|
button.addEventListener('click', event => {
|
|
let elem = event.currentTarget;
|
|
|
|
// There is some bug with events in iframe where currentTarget is "null"
|
|
// => prevent this here by bubble up
|
|
if (!elem) {
|
|
elem = event.target;
|
|
}
|
|
if (elem) {
|
|
const clickTarget = elem.dataset.bsTarget;
|
|
|
|
// We remember to be in the saving process
|
|
isSaving = clickTarget === '#saveBtn';
|
|
|
|
// Reset saving process, if e.g. the validation of the form fails
|
|
setTimeout(() => {
|
|
isSaving = false;
|
|
}, 1500);
|
|
const iframe = document.querySelector('#moduleDashboardAddModal iframe');
|
|
const content = iframe.contentDocument || iframe.contentWindow.document;
|
|
const targetBtn = content.querySelector(clickTarget);
|
|
if (targetBtn) {
|
|
targetBtn.click();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
const elementH = document.querySelector('#moduleDashboardAddModal');
|
|
if (elementH) {
|
|
elementH.addEventListener('hide.bs.modal', () => {
|
|
hideButtons.forEach(button => {
|
|
button.classList.add('hidden');
|
|
});
|
|
});
|
|
elementH.addEventListener('hidden.bs.modal', () => {
|
|
if (isSaving) {
|
|
setTimeout(() => {
|
|
window.parent.location.reload();
|
|
}, 1000);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
})(document);
|