diff --git a/templates/partials/icon-picker-modal.twig b/templates/partials/icon-picker-modal.twig index 24fe8ba..a6349f1 100644 --- a/templates/partials/icon-picker-modal.twig +++ b/templates/partials/icon-picker-modal.twig @@ -417,23 +417,12 @@ } } - // Используем Bootstrap API для закрытия + // Триггерим событие hide через Bootstrap var modalEl = document.getElementById('iconPickerModal'); - if (modalEl && typeof bootstrap !== 'undefined' && bootstrap.Modal) { - var modal = bootstrap.Modal.getInstance(modalEl); - if (modal) { - modal.hide(); - } + if (modalEl) { + var evt = new Event('hide.bs.modal'); + modalEl.dispatchEvent(evt); } - - // Принудительно удаляем backdrop через небольшую задержку - setTimeout(function() { - var backdrops = document.querySelectorAll('.modal-backdrop'); - backdrops.forEach(function(bp) { bp.remove(); }); - document.body.classList.remove('modal-open'); - document.body.style.paddingRight = ''; - document.body.style.overflow = ''; - }, 100); } document.addEventListener('DOMContentLoaded', function() { @@ -474,8 +463,15 @@ // Удаляем backdrop при закрытии модала document.getElementById('iconPickerModal').addEventListener('hidden.bs.modal', function(e) { - var backdrop = document.querySelector('.modal-backdrop'); - if (backdrop) backdrop.remove(); + var backdrops = document.querySelectorAll('.modal-backdrop'); + backdrops.forEach(function(bp) { bp.remove(); }); + document.body.classList.remove('modal-open'); + document.body.style.paddingRight = ''; + }); + + // Обработка hide - Bootstrap управляет закрытием + document.getElementById('iconPickerModal').addEventListener('hide.bs.modal', function(e) { + // Bootstrap сам управляет модалом, ничего не делаем }); }); })();