40090-vm/assets/js/main.js
Flatlogic Bot d6311a3a5e 1.0
2026-05-26 10:05:49 +00:00

69 lines
2.6 KiB
JavaScript

document.addEventListener('DOMContentLoaded', () => {
const navbar = document.querySelector('.site-navbar');
const onScroll = () => {
if (navbar) {
navbar.classList.toggle('scrolled', window.scrollY > 12);
}
};
document.addEventListener('scroll', onScroll, { passive: true });
onScroll();
if (window.bootstrap && typeof bootstrap.Toast === 'function') {
document.querySelectorAll('.toast').forEach((toastElement) => {
const toast = new bootstrap.Toast(toastElement, { delay: 5200 });
toast.show();
});
}
const filterButtons = document.querySelectorAll('[data-service-filter]');
const serviceItems = document.querySelectorAll('[data-service-track]');
if (filterButtons.length && serviceItems.length) {
filterButtons.forEach((button) => {
button.addEventListener('click', () => {
const filter = button.dataset.serviceFilter || 'all';
filterButtons.forEach((candidate) => candidate.classList.toggle('active', candidate === button));
serviceItems.forEach((item) => {
const track = item.dataset.serviceTrack || '';
const visible = filter === 'all' || track === filter;
item.classList.toggle('d-none', !visible);
});
});
});
}
document.querySelectorAll('[data-copy-target]').forEach((button) => {
button.addEventListener('click', async () => {
const target = document.querySelector(button.dataset.copyTarget || '');
if (!target) return;
const originalText = button.textContent;
try {
await navigator.clipboard.writeText(target.textContent.trim());
button.textContent = 'Copied';
window.setTimeout(() => {
button.textContent = originalText;
}, 1600);
} catch (error) {
button.textContent = 'Unavailable';
window.setTimeout(() => {
button.textContent = originalText;
}, 1600);
}
});
});
document.querySelectorAll('[data-char-count]').forEach((textarea) => {
const counter = document.querySelector(textarea.dataset.charCount || '');
if (!counter) return;
const updateCount = () => {
counter.textContent = `${textarea.value.length} / ${textarea.maxLength}`;
};
textarea.addEventListener('input', updateCount);
updateCount();
});
});