From 4f407c0d46222af83e680d5a112a34cd366ee79a Mon Sep 17 00:00:00 2001 From: mirivlad Date: Fri, 17 Apr 2026 19:46:59 +0800 Subject: [PATCH] fix: Modal backdrop not removed after icon selection - Manually remove backdrop and modal classes on selectIcon - Add hidden.bs.modal listener to clean up backdrop --- templates/partials/icon-picker-modal.twig | 26 +++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/templates/partials/icon-picker-modal.twig b/templates/partials/icon-picker-modal.twig index 02fa4de..0bf669b 100644 --- a/templates/partials/icon-picker-modal.twig +++ b/templates/partials/icon-picker-modal.twig @@ -403,7 +403,6 @@ if (currentTargetInput) { currentTargetInput.value = iconName; - // Обновляем preview - ищем span с иконкой рядом с input var preview = currentTargetInput.nextElementSibling; if (preview && preview.querySelector) { var iconEl = preview.querySelector('i'); @@ -411,7 +410,6 @@ iconEl.className = 'fas ' + iconName; } } else { - // Fallback: ищем по id var previewFallback = document.getElementById('iconPreview'); if (previewFallback) { previewFallback.className = 'fas ' + iconName; @@ -419,10 +417,21 @@ } } - var modal = bootstrap.Modal.getInstance(document.getElementById('iconPickerModal')); - if (modal) { - modal.hide(); + var modalEl = document.getElementById('iconPickerModal'); + if (modalEl) { + modalEl.classList.remove('show'); + modalEl.style.display = 'none'; + modalEl.setAttribute('aria-hidden', 'true'); + modalEl.removeAttribute('aria-modal'); } + + var backdrop = document.querySelector('.modal-backdrop'); + if (backdrop) { + backdrop.remove(); + } + document.body.classList.remove('modal-open'); + document.body.style.paddingRight = ''; + document.body.style.overflow = ''; } document.addEventListener('DOMContentLoaded', function() { @@ -455,12 +464,17 @@ // Открытие модала - запоминаем какой input открыл document.getElementById('iconPickerModal').addEventListener('show.bs.modal', function(e) { - // Находим активный input через кнопку var activeBtn = document.querySelector('[data-bs-target="#iconPickerModal"][data-icon-input]'); if (activeBtn) { currentTargetInput = document.getElementById(activeBtn.dataset.iconInput); } }); + + // Удаляем backdrop при закрытии модала + document.getElementById('iconPickerModal').addEventListener('hidden.bs.modal', function(e) { + var backdrop = document.querySelector('.modal-backdrop'); + if (backdrop) backdrop.remove(); + }); }); })();