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
This commit is contained in:
parent
d652e24ad0
commit
4f407c0d46
|
|
@ -403,7 +403,6 @@
|
||||||
if (currentTargetInput) {
|
if (currentTargetInput) {
|
||||||
currentTargetInput.value = iconName;
|
currentTargetInput.value = iconName;
|
||||||
|
|
||||||
// Обновляем preview - ищем span с иконкой рядом с input
|
|
||||||
var preview = currentTargetInput.nextElementSibling;
|
var preview = currentTargetInput.nextElementSibling;
|
||||||
if (preview && preview.querySelector) {
|
if (preview && preview.querySelector) {
|
||||||
var iconEl = preview.querySelector('i');
|
var iconEl = preview.querySelector('i');
|
||||||
|
|
@ -411,7 +410,6 @@
|
||||||
iconEl.className = 'fas ' + iconName;
|
iconEl.className = 'fas ' + iconName;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Fallback: ищем по id
|
|
||||||
var previewFallback = document.getElementById('iconPreview');
|
var previewFallback = document.getElementById('iconPreview');
|
||||||
if (previewFallback) {
|
if (previewFallback) {
|
||||||
previewFallback.className = 'fas ' + iconName;
|
previewFallback.className = 'fas ' + iconName;
|
||||||
|
|
@ -419,10 +417,21 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var modal = bootstrap.Modal.getInstance(document.getElementById('iconPickerModal'));
|
var modalEl = document.getElementById('iconPickerModal');
|
||||||
if (modal) {
|
if (modalEl) {
|
||||||
modal.hide();
|
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() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
|
@ -455,12 +464,17 @@
|
||||||
|
|
||||||
// Открытие модала - запоминаем какой input открыл
|
// Открытие модала - запоминаем какой input открыл
|
||||||
document.getElementById('iconPickerModal').addEventListener('show.bs.modal', function(e) {
|
document.getElementById('iconPickerModal').addEventListener('show.bs.modal', function(e) {
|
||||||
// Находим активный input через кнопку
|
|
||||||
var activeBtn = document.querySelector('[data-bs-target="#iconPickerModal"][data-icon-input]');
|
var activeBtn = document.querySelector('[data-bs-target="#iconPickerModal"][data-icon-input]');
|
||||||
if (activeBtn) {
|
if (activeBtn) {
|
||||||
currentTargetInput = document.getElementById(activeBtn.dataset.iconInput);
|
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();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue