diff --git a/admin-dashboard.html b/admin-dashboard.html index 3d88443..0cebd1e 100644 --- a/admin-dashboard.html +++ b/admin-dashboard.html @@ -206,6 +206,11 @@ z-index: 9999; padding: 2rem; overflow-y: auto; + pointer-events: none; + } + + #iconPickerModal.show { + pointer-events: auto; } #iconPickerContainer { @@ -2427,32 +2432,21 @@ function initIconPicker() { let isModalOpen = false; // Simple show/hide functions - const showModal = () => { - if (isModalOpen) return; - isModalOpen = true; - document.body.style.overflow = 'hidden'; - iconPickerModal.style.display = 'block'; - if (iconSearch) { + const toggleModal = () => { + isModalOpen = !isModalOpen; + document.body.style.overflow = isModalOpen ? 'hidden' : ''; + iconPickerModal.style.display = isModalOpen ? 'block' : 'none'; + + if (isModalOpen && iconSearch) { setTimeout(() => iconSearch.focus(), 50); } }; - const hideModal = () => { - if (!isModalOpen) return; - isModalOpen = false; - document.body.style.overflow = ''; - iconPickerModal.style.display = 'none'; - }; - // Toggle modal on icon input click iconInput.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); - if (isModalOpen) { - hideModal(); - } else { - showModal(); - } + toggleModal(); }); // Close modal handlers @@ -2460,14 +2454,18 @@ function initIconPicker() { closeButton.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); - hideModal(); + isModalOpen = false; + document.body.style.overflow = ''; + iconPickerModal.style.display = 'none'; }); } // Close when clicking outside the modal content iconPickerModal.addEventListener('click', (e) => { if (e.target === iconPickerModal) { - hideModal(); + isModalOpen = false; + document.body.style.overflow = ''; + iconPickerModal.style.display = 'none'; } }); @@ -2491,7 +2489,9 @@ function initIconPicker() { // Close on Escape document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && isModalOpen) { - hideModal(); + isModalOpen = false; + document.body.style.overflow = ''; + iconPickerModal.style.display = 'none'; } }); }