fix: Icon picker modal reopens after selection

- Use Bootstrap event dispatch instead of manual hide
- Let Bootstrap manage modal state properly
- Clean backdrop only in hidden.bs.modal event
This commit is contained in:
mirivlad 2026-04-17 19:50:32 +08:00
parent 6e54615d54
commit cb74973a90
1 changed files with 13 additions and 17 deletions

View File

@ -417,25 +417,14 @@
}
}
// Используем 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() {
renderIcons();
@ -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 сам управляет модалом, ничего не делаем
});
});
})();