backup
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
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 (window.innerWidth <= 768) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
navDropdown.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');
|
||||
});
|
||||
});
|
||||
const form = document.getElementById('quoteForm');
|
||||
if (form) {
|
||||
form.addEventListener('submit', function(e) {
|
||||
e.preventDefault();
|
||||
alert('Thank you for your quote request! We will contact you shortly.');
|
||||
this.reset();
|
||||
});
|
||||
}
|
||||
|
||||
// How It Works — scroll-triggered step reveal
|
||||
(function () {
|
||||
function initProcess() {
|
||||
var track = document.querySelector('.process-track');
|
||||
if (!track) return;
|
||||
var steps = track.querySelectorAll('.process-step');
|
||||
var observer = new IntersectionObserver(function (entries) {
|
||||
entries.forEach(function (entry) {
|
||||
if (entry.isIntersecting) {
|
||||
track.classList.add('animated');
|
||||
steps.forEach(function (step, i) {
|
||||
setTimeout(function () {
|
||||
step.classList.add('visible');
|
||||
}, i * 220);
|
||||
});
|
||||
observer.disconnect();
|
||||
}
|
||||
});
|
||||
}, { threshold: 0.25 });
|
||||
observer.observe(track);
|
||||
}
|
||||
// components.js runs before main.js, but process section is injected synchronously
|
||||
// so it's available immediately
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', initProcess);
|
||||
} else {
|
||||
initProcess();
|
||||
}
|
||||
}());
|
||||
Reference in New Issue
Block a user