fix: fixed submenu fold out

This commit is contained in:
Andreas Gammelgaard Damsbo 2025-08-27 11:11:00 +02:00
parent 731a09e390
commit ca29847450
No known key found for this signature in database
2 changed files with 82 additions and 26 deletions

View file

@ -6,24 +6,52 @@ $(document).on('shown.bs.tab', '#main_panel', function(e) {
$('#main_panel .dropdown-toggle').removeClass('show').attr('aria-expanded', 'false'); $('#main_panel .dropdown-toggle').removeClass('show').attr('aria-expanded', 'false');
}); });
$(document).on('shiny:sessioninitialized', function() { $(document).on('shiny:sessioninitialized', function() {
// Function to collapse navbar on mobile // Function to collapse navbar on mobile
function collapseNavbar() { function collapseNavbar() {
var navbar = $('.navbar-collapse'); var navbar = $('.navbar-collapse');
if (navbar.hasClass('show')) { if (navbar.hasClass('show')) {
navbar.removeClass('show'); navbar.removeClass('show');
$('.navbar-toggler').addClass('collapsed'); $('.navbar-toggler').addClass('collapsed');
$('.navbar-toggler').attr('aria-expanded', 'false'); $('.navbar-toggler').attr('aria-expanded', 'false');
} }
} }
// Add click event to navigation tabs // Main approach: Handle clicks on nav elements
$(document).on('click', '.nav-link[data-bs-toggle=\"tab\"]', function() { $(document).on('click', '.navbar-nav .nav-link, .dropdown-item', function(event) {
var $target = $(event.currentTarget);
// Don't collapse if this is a dropdown toggle
if ($target.hasClass('dropdown-toggle')) {
return;
}
// Don't collapse if this is inside a dropdown and the dropdown should stay open
if ($target.hasClass('nav-link') && $target.closest('.dropdown').length &&
!$target.attr('data-bs-toggle')) {
return;
}
// Collapse the navbar after a short delay
setTimeout(collapseNavbar, 10); setTimeout(collapseNavbar, 10);
}); });
// Also handle direct clicks on nav items // Handle tab toggles specifically
$(document).on('click', '.navbar-nav .nav-link', function() { $(document).on('click', '.nav-link[data-bs-toggle="tab"]', function() {
setTimeout(collapseNavbar, 10); if (!$(this).hasClass('dropdown-toggle')) {
setTimeout(collapseNavbar, 10);
}
});
// Optional: Handle clicks outside the navbar to close it
$(document).on('click', function(event) {
var navbar = $('.navbar-collapse');
// Check if click is outside navbar and navbar is open
if (navbar.hasClass('show') &&
!$(event.target).closest('.navbar').length) {
collapseNavbar();
}
}); });
}); });

View file

@ -6,24 +6,52 @@ $(document).on('shown.bs.tab', '#main_panel', function(e) {
$('#main_panel .dropdown-toggle').removeClass('show').attr('aria-expanded', 'false'); $('#main_panel .dropdown-toggle').removeClass('show').attr('aria-expanded', 'false');
}); });
$(document).on('shiny:sessioninitialized', function() { $(document).on('shiny:sessioninitialized', function() {
// Function to collapse navbar on mobile // Function to collapse navbar on mobile
function collapseNavbar() { function collapseNavbar() {
var navbar = $('.navbar-collapse'); var navbar = $('.navbar-collapse');
if (navbar.hasClass('show')) { if (navbar.hasClass('show')) {
navbar.removeClass('show'); navbar.removeClass('show');
$('.navbar-toggler').addClass('collapsed'); $('.navbar-toggler').addClass('collapsed');
$('.navbar-toggler').attr('aria-expanded', 'false'); $('.navbar-toggler').attr('aria-expanded', 'false');
} }
} }
// Add click event to navigation tabs // Main approach: Handle clicks on nav elements
$(document).on('click', '.nav-link[data-bs-toggle=\"tab\"]', function() { $(document).on('click', '.navbar-nav .nav-link, .dropdown-item', function(event) {
var $target = $(event.currentTarget);
// Don't collapse if this is a dropdown toggle
if ($target.hasClass('dropdown-toggle')) {
return;
}
// Don't collapse if this is inside a dropdown and the dropdown should stay open
if ($target.hasClass('nav-link') && $target.closest('.dropdown').length &&
!$target.attr('data-bs-toggle')) {
return;
}
// Collapse the navbar after a short delay
setTimeout(collapseNavbar, 10); setTimeout(collapseNavbar, 10);
}); });
// Also handle direct clicks on nav items // Handle tab toggles specifically
$(document).on('click', '.navbar-nav .nav-link', function() { $(document).on('click', '.nav-link[data-bs-toggle="tab"]', function() {
setTimeout(collapseNavbar, 10); if (!$(this).hasClass('dropdown-toggle')) {
setTimeout(collapseNavbar, 10);
}
});
// Optional: Handle clicks outside the navbar to close it
$(document).on('click', function(event) {
var navbar = $('.navbar-collapse');
// Check if click is outside navbar and navbar is open
if (navbar.hasClass('show') &&
!$(event.target).closest('.navbar').length) {
collapseNavbar();
}
}); });
}); });