Fix mobile nav dropdowns, unique hero images per page, Google Maps, meta tags, reel update
- Fix mobile nav: all 3 dropdowns now get click handlers (was only first) - Remove Our Work from nav - Add Google Maps embed to homepage footer - Update title and meta description/keywords/canonical - Unique hero image per page (14 pages updated) - Remove technician clip from hero reel - Add .cpanel.yml for cPanel Git deployment - Add hero image generation script (ComfyUI SDXL) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+26
-21
@@ -1,32 +1,37 @@
|
||||
const mobileToggle = document.querySelector('.mobile-menu-toggle');
|
||||
const navLinks = document.querySelector('.nav-links');
|
||||
const navContact = document.querySelector('.nav-contact');
|
||||
mobileToggle.addEventListener('click', () => {
|
||||
navLinks.classList.toggle('active');
|
||||
navContact.classList.toggle('active');
|
||||
mobileToggle.classList.toggle('active');
|
||||
});
|
||||
const dropdownLabel = document.querySelector('.dropdown-label');
|
||||
const navDropdown = document.querySelector('.nav-dropdown');
|
||||
if (dropdownLabel && navDropdown) {
|
||||
dropdownLabel.addEventListener('click', function(e) {
|
||||
if (mobileToggle) {
|
||||
mobileToggle.addEventListener('click', () => {
|
||||
navLinks.classList.toggle('active');
|
||||
navContact.classList.toggle('active');
|
||||
mobileToggle.classList.toggle('active');
|
||||
});
|
||||
}
|
||||
|
||||
// Mobile dropdowns — wire ALL dropdown labels, not just the first
|
||||
document.querySelectorAll('.nav-dropdown').forEach(function(dropdown) {
|
||||
var label = dropdown.querySelector('.dropdown-label');
|
||||
if (!label) return;
|
||||
label.addEventListener('click', function(e) {
|
||||
if (window.innerWidth <= 768) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
navDropdown.classList.toggle('open');
|
||||
// Close all other open dropdowns
|
||||
document.querySelectorAll('.nav-dropdown.open').forEach(function(other) {
|
||||
if (other !== dropdown) other.classList.remove('open');
|
||||
});
|
||||
dropdown.classList.toggle('open');
|
||||
}
|
||||
});
|
||||
document.addEventListener('click', function(e) {
|
||||
if (!navDropdown.contains(e.target)) {
|
||||
navDropdown.classList.remove('open');
|
||||
}
|
||||
});
|
||||
}
|
||||
document.querySelectorAll('.dropdown-toggle').forEach(toggle => {
|
||||
toggle.addEventListener('click', function() {
|
||||
this.classList.toggle('active');
|
||||
this.nextElementSibling.classList.toggle('active');
|
||||
});
|
||||
});
|
||||
|
||||
document.addEventListener('click', function(e) {
|
||||
if (!e.target.closest('.nav-dropdown')) {
|
||||
document.querySelectorAll('.nav-dropdown.open').forEach(function(d) {
|
||||
d.classList.remove('open');
|
||||
});
|
||||
}
|
||||
});
|
||||
const form = document.getElementById('quoteForm');
|
||||
if (form) {
|
||||
|
||||
Reference in New Issue
Block a user