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);
 |