Fix modals opening automatically on page load
- Added immediate modal close on script load - Force close all modals on DOMContentLoaded - Remove open attribute from all modals during initialization - Added HTMX afterRequest handler to prevent multiple modals from staying open - Fixed script syntax issue
This commit is contained in:
parent
5b73c31492
commit
927ee4013c
1 changed files with 34 additions and 0 deletions
|
|
@ -1945,10 +1945,26 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Force close all modals immediately on script load
|
||||||
|
(function() {
|
||||||
|
document.querySelectorAll('dialog.modal').forEach(modal => {
|
||||||
|
modal.removeAttribute('open');
|
||||||
|
if (modal.open) {
|
||||||
|
modal.close();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
||||||
// Initialize modal behavior
|
// Initialize modal behavior
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
// Force close all modals on page load
|
||||||
|
closeAllModals();
|
||||||
|
|
||||||
// Close modal when clicking on backdrop (outside modal-content)
|
// Close modal when clicking on backdrop (outside modal-content)
|
||||||
document.querySelectorAll('dialog.modal').forEach(modal => {
|
document.querySelectorAll('dialog.modal').forEach(modal => {
|
||||||
|
// Ensure modal is closed initially
|
||||||
|
modal.removeAttribute('open');
|
||||||
|
|
||||||
modal.addEventListener('click', function(e) {
|
modal.addEventListener('click', function(e) {
|
||||||
// Only close if clicking directly on the dialog backdrop, not on modal-content
|
// Only close if clicking directly on the dialog backdrop, not on modal-content
|
||||||
if (e.target === modal) {
|
if (e.target === modal) {
|
||||||
|
|
@ -1973,6 +1989,24 @@
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Also close modals after HTMX requests complete (in case server returns something weird)
|
||||||
|
document.addEventListener('htmx:afterRequest', function(e) {
|
||||||
|
// Don't auto-close if the request was specifically meant to open a modal
|
||||||
|
if (!e.detail.elt.hasAttribute('data-opens-modal')) {
|
||||||
|
// Small delay to let intentional modal opens happen first
|
||||||
|
setTimeout(function() {
|
||||||
|
// Check if more than one modal is open and close extras
|
||||||
|
const openModals = document.querySelectorAll('dialog.modal[open]');
|
||||||
|
if (openModals.length > 1) {
|
||||||
|
// Keep only the last one open
|
||||||
|
for (let i = 0; i < openModals.length - 1; i++) {
|
||||||
|
openModals[i].close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 100);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
function showSection(sectionId, element) {
|
function showSection(sectionId, element) {
|
||||||
// Hide all sections
|
// Hide all sections
|
||||||
document.querySelectorAll('.settings-section').forEach(section => {
|
document.querySelectorAll('.settings-section').forEach(section => {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue