fix: dropdown service links not working from navbar

The smooth scroll handler was intercepting clicks on the "Servicios"
dropdown toggle link (href="#servicios"), which on the landing page
would find the #servicios section and call closeMenu(), immediately
closing the menu before the user could click any service link.

Fix: skip dropdown toggle links in smooth scroll handler, make
dropdown toggle work via click on all devices (not just CSS :hover).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Gestoría LP
2026-03-02 04:11:59 +00:00
parent 10f0c25f74
commit 7fbdbcb597
2 changed files with 19 additions and 7 deletions

View File

@@ -407,7 +407,8 @@ p:last-child {
transform: translateY(0);
}
.navbar__item--dropdown:hover .navbar__link--dropdown i {
.navbar__item--dropdown:hover .navbar__link--dropdown i,
.navbar__item--dropdown.active .navbar__link--dropdown i {
transform: rotate(180deg);
}

View File

@@ -56,27 +56,38 @@ document.addEventListener('DOMContentLoaded', function () {
});
// ================================================================
// 2. Mobile Dropdown Toggle
// 2. Dropdown Toggle (mobile + touch devices)
// ================================================================
var dropdownItems = document.querySelectorAll('.navbar__item--dropdown');
dropdownItems.forEach(function (item) {
var link = item.querySelector('.navbar__link--dropdown');
if (link) {
link.addEventListener('click', function (e) {
// Only toggle on mobile
if (window.innerWidth <= 768) {
// Always prevent default on the dropdown parent link
e.preventDefault();
e.stopPropagation();
item.classList.toggle('active');
}
});
}
});
// Close dropdown when clicking outside (desktop)
document.addEventListener('click', function (e) {
dropdownItems.forEach(function (item) {
if (!item.contains(e.target)) {
item.classList.remove('active');
}
});
});
// ================================================================
// 3. Smooth Scroll for Anchor Links
// ================================================================
var anchorLinks = document.querySelectorAll('a[href^="#"]');
anchorLinks.forEach(function (link) {
// Skip dropdown toggle links — they have their own handler
if (link.classList.contains('navbar__link--dropdown')) return;
link.addEventListener('click', function (e) {
var targetId = this.getAttribute('href');
if (targetId === '#') return;